watchdog: Add watchdog_active() routine
Some watchdog may need to check if watchdog is ACTIVE or not, for example in their suspend/resume hooks. This patch adds this routine and changes the core drivers to use it. Signed-off-by: Viresh Kumar <viresh.kumar@st.com> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
This commit is contained in:
parent
09a46e7397
commit
257f8c4aae
3 changed files with 10 additions and 4 deletions
|
@ -91,7 +91,7 @@ static inline void wdt_reset(void)
|
|||
static void wdt_timer_tick(unsigned long data)
|
||||
{
|
||||
if (time_before(jiffies, next_heartbeat) ||
|
||||
(!test_bit(WDOG_ACTIVE, &wdt_dev.status))) {
|
||||
(!watchdog_active(&wdt_dev))) {
|
||||
wdt_reset();
|
||||
mod_timer(&timer, jiffies + WDT_HEARTBEAT);
|
||||
} else
|
||||
|
|
|
@ -61,7 +61,7 @@ static struct watchdog_device *wdd;
|
|||
|
||||
static int watchdog_ping(struct watchdog_device *wddev)
|
||||
{
|
||||
if (test_bit(WDOG_ACTIVE, &wddev->status)) {
|
||||
if (watchdog_active(wddev)) {
|
||||
if (wddev->ops->ping)
|
||||
return wddev->ops->ping(wddev); /* ping the watchdog */
|
||||
else
|
||||
|
@ -83,7 +83,7 @@ static int watchdog_start(struct watchdog_device *wddev)
|
|||
{
|
||||
int err;
|
||||
|
||||
if (!test_bit(WDOG_ACTIVE, &wddev->status)) {
|
||||
if (!watchdog_active(wddev)) {
|
||||
err = wddev->ops->start(wddev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
@ -113,7 +113,7 @@ static int watchdog_stop(struct watchdog_device *wddev)
|
|||
return err;
|
||||
}
|
||||
|
||||
if (test_bit(WDOG_ACTIVE, &wddev->status)) {
|
||||
if (watchdog_active(wddev)) {
|
||||
err = wddev->ops->stop(wddev);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
|
|
@ -128,6 +128,12 @@ struct watchdog_device {
|
|||
#define WATCHDOG_NOWAYOUT_INIT_STATUS 0
|
||||
#endif
|
||||
|
||||
/* Use the following function to check wether or not the watchdog is active */
|
||||
static inline bool watchdog_active(struct watchdog_device *wdd)
|
||||
{
|
||||
return test_bit(WDOG_ACTIVE, &wdd->status);
|
||||
}
|
||||
|
||||
/* Use the following function to set the nowayout feature */
|
||||
static inline void watchdog_set_nowayout(struct watchdog_device *wdd, bool nowayout)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue