#include <linux/delay.h>
#include <linux/suspend.h>
#include <linux/workqueue.h>
#include <linux/greybus.h>
#define SVC_WATCHDOG_PERIOD …
struct gb_svc_watchdog { … };
static struct delayed_work reset_work;
static int svc_watchdog_pm_notifier(struct notifier_block *notifier,
unsigned long pm_event, void *unused)
{ … }
static void greybus_reset(struct work_struct *work)
{ … }
static void do_work(struct work_struct *work)
{ … }
int gb_svc_watchdog_create(struct gb_svc *svc)
{ … }
void gb_svc_watchdog_destroy(struct gb_svc *svc)
{ … }
bool gb_svc_watchdog_enabled(struct gb_svc *svc)
{ … }
int gb_svc_watchdog_enable(struct gb_svc *svc)
{ … }
int gb_svc_watchdog_disable(struct gb_svc *svc)
{ … }