]> git.karo-electronics.de Git - karo-tx-linux.git/commit
Watchdog: OMAP: Fix the runtime pm code to avoid module getting stuck intransition...
authorLokesh Vutla <lokeshvutla@ti.com>
Mon, 18 Jun 2012 05:23:16 +0000 (10:53 +0530)
committerWim Van Sebroeck <wim@iguana.be>
Sat, 7 Jul 2012 12:25:32 +0000 (14:25 +0200)
commitd08ae9a56a3930e901b2c38a6c45e1df77698bc6
tree7714b0a731893c086e1ca383ec2cb390fb19b311
parent7afa16e12123d0e7aae4b026e77afb42ef8f4955
Watchdog: OMAP: Fix the runtime pm code to avoid module getting stuck intransition state.

OMAP watchdog driver is adapted to runtime PM like a general device
driver but it is not appropriate. It is causing couple of functional
issues.

1. On OMAP4 SYSCLK can't be gated, because of issue with WDTIMER2 module,
which constantly stays in "in transition" state. Value of register
CM_WKUP_WDTIMER2_CLKCTRL is always 0x00010000 in this case.
Issue occurs immediately after first idle, when hwmod framework tries
to disable WDTIMER2 functional clock - "wd_timer2_fck". After this
module falls to "in transition" state, and SYSCLK gating is blocked.

2. Due to runtime PM, watchdog timer may be completely disabled.
In current code base watchdog timer is not disabled only because of
issue 1. Otherwise state of WDTIMER2 module will be "Disabled", and there
will be no interrupts from omap_wdt. In other words watchdog will not
work at all.

Watchdong is a special IP and it should not be disabled otherwise
purpose of it itself is defeated. Watchdog functional clock should
never be disabled. This patch updates the runtime PM handling in
driver so that runtime PM is limited only during probe/shutdown
and suspend/resume.

The patch fixes issue 1 and 2

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
drivers/watchdog/omap_wdt.c