clocksource/drivers/timer-ti-dm: Fix suspend and resume for am3 and am4
authorTony Lindgren <tony@atomide.com>
Mon, 13 Jul 2020 16:26:01 +0000 (09:26 -0700)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Tue, 21 Jul 2020 13:48:33 +0000 (15:48 +0200)
commit6cfcd5563b4fadbf49ba8fa481978e5e86d30322
tree34dc5c92355488be18c62f1bd7e1f23f83722937
parent30c66fc30ee7a98c4f3adf5fb7e213b61884474f
clocksource/drivers/timer-ti-dm: Fix suspend and resume for am3 and am4

Carlos Hernandez <ceh@ti.com> reported that we now have a suspend and
resume regresssion on am3 and am4 compared to the earlier kernels. While
suspend and resume works with v5.8-rc3, we now get errors with rtcwake:

pm33xx pm33xx: PM: Could not transition all powerdomains to target state
...
rtcwake: write error

This is because we now fail to idle the system timer clocks that the
idle code checks and the error gets propagated to the rtcwake.

Turns out there are several issues that need to be fixed:

1. Ignore no-idle and no-reset configured timers for the ti-sysc
   interconnect target driver as otherwise it will keep the system timer
   clocks enabled

2. Toggle the system timer functional clock for suspend for am3 and am4
   (but not for clocksource on am3)

3. Only reconfigure type1 timers in dmtimer_systimer_disable()

4. Use of_machine_is_compatible() instead of of_device_is_compatible()
   for checking the SoC type

Fixes: 52762fbd1c47 ("clocksource/drivers/timer-ti-dm: Add clockevent and clocksource support")
Reported-by: Carlos Hernandez <ceh@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Tested-by: Carlos Hernandez <ceh@ti.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20200713162601.6829-1-tony@atomide.com
drivers/bus/ti-sysc.c
drivers/clocksource/timer-ti-dm-systimer.c