]> git.baikalelectronics.ru Git - kernel.git/commit
ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST
authorGrygorii Strashko <grygorii.strashko@ti.com>
Mon, 14 Dec 2015 20:34:05 +0000 (22:34 +0200)
committerTony Lindgren <tony@atomide.com>
Thu, 17 Dec 2015 18:53:28 +0000 (10:53 -0800)
commit2b0f3c90b84c4627a0f4b83603e84d26c83b1d6f
tree4595639d6351eb09d49c578b0baf6dfe84b8f0ef
parent27ac9cd4b573b5723a8298fb36e09dbf699519a2
ARM: OMAP2+: am43xx: enable GENERIC_CLOCKEVENTS_BROADCAST

System will misbehave in the following case:
- AM43XX only build (UP);
- CONFIG_CPU_IDLE=y
- ARM TWD timer enabled and selected as clockevent device.

In the above case, It's expected that broadcast timer will be used as
backup timer when CPUIdle will put MPU in low power states where ARM
TWD will stop and lose its context. But, the CONFIG_SMP might not be
selected when kernel is built for AM43XX SoC only and, as result,
GENERIC_CLOCKEVENTS_BROADCAST option will not be selected also. This
will break CPUIdle and System will stuck in low power states.

Hence, fix it by selecting GENERIC_CLOCKEVENTS_BROADCAST option for
AM43XX SoCs always and add empty tick_broadcast() function
implementation - no need to send any IPI on UP. After this change
timer1 will be selected as broadcast timer the same way as for SMP,
and CPUIdle will work properly.

Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/timer.c