| From 75452d2bc7114b388af9855be12eb86c347a7cea Mon Sep 17 00:00:00 2001 |
| From: Douglas Anderson <dianders@chromium.org> |
| Date: Tue, 21 May 2019 16:49:33 -0700 |
| Subject: ARM: dts: rockchip: Mark that the rk3288 timer might stop in suspend |
| |
| [ Upstream commit 8ef1ba39a9fa53d2205e633bc9b21840a275908e ] |
| |
| This is similar to commit e6186820a745 ("arm64: dts: rockchip: Arch |
| counter doesn't tick in system suspend"). Specifically on the rk3288 |
| it can be seen that the timer stops ticking in suspend if we end up |
| running through the "osc_disable" path in rk3288_slp_mode_set(). In |
| that path the 24 MHz clock will turn off and the timer stops. |
| |
| To test this, I ran this on a Chrome OS filesystem: |
| before=$(date); \ |
| suspend_stress_test -c1 --suspend_min=30 --suspend_max=31; \ |
| echo ${before}; date |
| |
| ...and I found that unless I plug in a device that requests USB wakeup |
| to be active that the two calls to "date" would show that fewer than |
| 30 seconds passed. |
| |
| NOTE: deep suspend (where the 24 MHz clock gets disabled) isn't |
| supported yet on upstream Linux so this was tested on a downstream |
| kernel. |
| |
| Signed-off-by: Douglas Anderson <dianders@chromium.org> |
| Signed-off-by: Heiko Stuebner <heiko@sntech.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/arm/boot/dts/rk3288.dtsi | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi |
| index 17ec2e2d7a60b..30f1384f619b3 100644 |
| --- a/arch/arm/boot/dts/rk3288.dtsi |
| +++ b/arch/arm/boot/dts/rk3288.dtsi |
| @@ -210,6 +210,7 @@ |
| <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>, |
| <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; |
| clock-frequency = <24000000>; |
| + arm,no-tick-in-suspend; |
| }; |
| |
| timer: timer@ff810000 { |
| -- |
| 2.20.1 |
| |