diff options
author | Jon Medhurst <tixy@linaro.org> | 2016-10-03 10:32:52 +0100 |
---|---|---|
committer | Jon Medhurst <tixy@linaro.org> | 2016-10-03 10:32:52 +0100 |
commit | 69e7a3cdb274b50f9612260cb3816dceddb6c109 (patch) | |
tree | 3984c914b2541c2bd59c8c572ad121da90fc1fb5 | |
parent | 3c685fecc04305ca83fd26e9a3a2083ef213cdc4 (diff) | |
parent | 746e02665551840e9b1b590d0312519748aebade (diff) |
Merge branch 'lsk-3.18-armlt-juno-cpuidle' into lsk-3.18-armlt
Conflicts:
linaro/configs/vexpress64.conf
-rw-r--r-- | Documentation/devicetree/bindings/arm/arch_timer.txt | 3 | ||||
-rw-r--r-- | arch/arm64/boot/dts/arm/juno-base.dtsi | 2 | ||||
-rw-r--r-- | drivers/clocksource/arm_arch_timer.c | 16 | ||||
-rw-r--r-- | linaro/configs/vexpress64.conf | 1 |
4 files changed, 14 insertions, 8 deletions
diff --git a/Documentation/devicetree/bindings/arm/arch_timer.txt b/Documentation/devicetree/bindings/arm/arch_timer.txt index 37b2cafa4e52..271483595a19 100644 --- a/Documentation/devicetree/bindings/arm/arch_timer.txt +++ b/Documentation/devicetree/bindings/arm/arch_timer.txt @@ -42,6 +42,9 @@ Example: - reg : The control frame base address. +- arm,cnttidr : The value of the CNTTIDR register if not accessible from + the level the kernel is running at. To be used only in extreme cases. + Note that #address-cells, #size-cells, and ranges shall be present to ensure the CPU can address a frame's registers. diff --git a/arch/arm64/boot/dts/arm/juno-base.dtsi b/arch/arm64/boot/dts/arm/juno-base.dtsi index df60a8a1dc6d..50707888483e 100644 --- a/arch/arm64/boot/dts/arm/juno-base.dtsi +++ b/arch/arm64/boot/dts/arm/juno-base.dtsi @@ -5,11 +5,11 @@ memtimer: timer@2a810000 { compatible = "arm,armv7-timer-mem"; reg = <0x0 0x2a810000 0x0 0x10000>; + arm,cnttidr = <0x1>; clock-frequency = <50000000>; #address-cells = <2>; #size-cells = <2>; ranges; - status = "disabled"; frame@2a830000 { frame-number = <1>; interrupts = <0 60 4>; diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 84b4c8b7fbd1..b593b98d7005 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -738,14 +738,16 @@ static void __init arch_timer_mem_init(struct device_node *np) u32 cnttidr; arch_timers_present |= ARCH_MEM_TIMER; - cntctlbase = of_iomap(np, 0); - if (!cntctlbase) { - pr_err("arch_timer: Can't find CNTCTLBase\n"); - return; - } + if (of_property_read_u32(np, "arm,cnttidr", &cnttidr)) { + cntctlbase = of_iomap(np, 0); + if (!cntctlbase) { + pr_err("arch_timer: Can't find CNTCTLBase\n"); + return; + } - cnttidr = readl_relaxed(cntctlbase + CNTTIDR); - iounmap(cntctlbase); + cnttidr = readl_relaxed(cntctlbase + CNTTIDR); + iounmap(cntctlbase); + } /* * Try to find a virtual capable frame. Otherwise fall back to a diff --git a/linaro/configs/vexpress64.conf b/linaro/configs/vexpress64.conf index 33bd87cbf8c1..c9383b4ab3c8 100644 --- a/linaro/configs/vexpress64.conf +++ b/linaro/configs/vexpress64.conf @@ -66,3 +66,4 @@ CONFIG_SKY2=y CONFIG_TEE=y CONFIG_OPTEE=y CONFIG_DEVMEM=y +CONFIG_ARM64_CPUIDLE=y |