Lines Matching +full:pm +full:- +full:alive
1 // SPDX-License-Identifier: GPL-2.0
32 gb_svc_watchdog_disable(watchdog->svc); in svc_watchdog_pm_notifier()
35 gb_svc_watchdog_enable(watchdog->svc); in svc_watchdog_pm_notifier()
70 svc = watchdog->svc; in do_work()
72 dev_dbg(&svc->dev, "%s: ping.\n", __func__); in do_work()
80 * yet-another-callback to do that. in do_work()
82 dev_err(&svc->dev, in do_work()
86 if (svc->action == GB_SVC_WATCHDOG_BITE_PANIC_KERNEL) { in do_work()
88 } else if (svc->action == GB_SVC_WATCHDOG_BITE_RESET_UNIPRO) { in do_work()
89 dev_err(&svc->dev, "Resetting the greybus network, watch out!!!\n"); in do_work()
98 watchdog->enabled = false; in do_work()
102 /* resubmit our work to happen again, if we are still "alive" */ in do_work()
103 if (watchdog->enabled) in do_work()
104 schedule_delayed_work(&watchdog->work, SVC_WATCHDOG_PERIOD); in do_work()
112 if (svc->watchdog) in gb_svc_watchdog_create()
117 return -ENOMEM; in gb_svc_watchdog_create()
119 watchdog->enabled = false; in gb_svc_watchdog_create()
120 watchdog->svc = svc; in gb_svc_watchdog_create()
121 INIT_DELAYED_WORK(&watchdog->work, do_work); in gb_svc_watchdog_create()
122 svc->watchdog = watchdog; in gb_svc_watchdog_create()
124 watchdog->pm_notifier.notifier_call = svc_watchdog_pm_notifier; in gb_svc_watchdog_create()
125 retval = register_pm_notifier(&watchdog->pm_notifier); in gb_svc_watchdog_create()
127 dev_err(&svc->dev, "error registering pm notifier(%d)\n", in gb_svc_watchdog_create()
134 dev_err(&svc->dev, "error enabling watchdog (%d)\n", retval); in gb_svc_watchdog_create()
135 unregister_pm_notifier(&watchdog->pm_notifier); in gb_svc_watchdog_create()
141 svc->watchdog = NULL; in gb_svc_watchdog_create()
149 struct gb_svc_watchdog *watchdog = svc->watchdog; in gb_svc_watchdog_destroy()
154 unregister_pm_notifier(&watchdog->pm_notifier); in gb_svc_watchdog_destroy()
156 svc->watchdog = NULL; in gb_svc_watchdog_destroy()
162 if (!svc || !svc->watchdog) in gb_svc_watchdog_enabled()
164 return svc->watchdog->enabled; in gb_svc_watchdog_enabled()
171 if (!svc->watchdog) in gb_svc_watchdog_enable()
172 return -ENODEV; in gb_svc_watchdog_enable()
174 watchdog = svc->watchdog; in gb_svc_watchdog_enable()
175 if (watchdog->enabled) in gb_svc_watchdog_enable()
178 watchdog->enabled = true; in gb_svc_watchdog_enable()
179 schedule_delayed_work(&watchdog->work, SVC_WATCHDOG_PERIOD); in gb_svc_watchdog_enable()
187 if (!svc->watchdog) in gb_svc_watchdog_disable()
188 return -ENODEV; in gb_svc_watchdog_disable()
190 watchdog = svc->watchdog; in gb_svc_watchdog_disable()
191 if (!watchdog->enabled) in gb_svc_watchdog_disable()
194 watchdog->enabled = false; in gb_svc_watchdog_disable()
195 cancel_delayed_work_sync(&watchdog->work); in gb_svc_watchdog_disable()