diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2019-12-10 05:41:45 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2019-12-10 05:41:45 +0100 |
commit | 28e374e062aede65b6bb6f341376f196e5ac4fc7 (patch) | |
tree | 603f97f7495cc6c234482424fcb4b39dc77369da /include | |
parent | 4b05f14d96afde2fb8e7e9a92893ca3c684870d0 (diff) | |
parent | aade8d53cf6cccf7958d2c11e5791dfcd85a584f (diff) | |
download | barebox-28e374e062aede65b6bb6f341376f196e5ac4fc7.tar.gz barebox-28e374e062aede65b6bb6f341376f196e5ac4fc7.tar.xz |
Merge branch 'for-next/watchdog'
Diffstat (limited to 'include')
-rw-r--r-- | include/param.h | 24 | ||||
-rw-r--r-- | include/watchdog.h | 27 |
2 files changed, 44 insertions, 7 deletions
diff --git a/include/param.h b/include/param.h index 4ac502e726..d75f50ea3e 100644 --- a/include/param.h +++ b/include/param.h @@ -63,6 +63,16 @@ struct param_d *dev_add_param_enum(struct device_d *dev, const char *name, int (*get)(struct param_d *p, void *priv), int *value, const char * const *names, int max, void *priv); +enum param_tristate { PARAM_TRISTATE_UNKNOWN, PARAM_TRISTATE_TRUE, PARAM_TRISTATE_FALSE }; + +struct param_d *dev_add_param_tristate(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + int *value, void *priv); + +struct param_d *dev_add_param_tristate_ro(struct device_d *dev, const char *name, + int *value); + struct param_d *dev_add_param_bitmask(struct device_d *dev, const char *name, int (*set)(struct param_d *p, void *priv), int (*get)(struct param_d *p, void *priv), @@ -144,6 +154,20 @@ static inline struct param_d *dev_add_param_bitmask(struct device_d *dev, const return ERR_PTR(-ENOSYS); } +static inline struct param_d *dev_add_param_tristate(struct device_d *dev, const char *name, + int (*set)(struct param_d *p, void *priv), + int (*get)(struct param_d *p, void *priv), + int *value, void *priv) +{ + return ERR_PTR(-ENOSYS); +} + +static inline struct param_d *dev_add_param_tristate_ro(struct device_d *dev, const char *name, + int *value) +{ + return ERR_PTR(-ENOSYS); +} + static inline struct param_d *dev_add_param_ip(struct device_d *dev, const char *name, int (*set)(struct param_d *p, void *priv), int (*get)(struct param_d *p, void *priv), diff --git a/include/watchdog.h b/include/watchdog.h index 184a218916..9741570ce2 100644 --- a/include/watchdog.h +++ b/include/watchdog.h @@ -15,6 +15,13 @@ #include <poller.h> #include <driver.h> +#include <param.h> + +enum wdog_hw_runnning { + WDOG_HW_RUNNING_UNSUPPORTED = PARAM_TRISTATE_UNKNOWN, + WDOG_HW_RUNNING = PARAM_TRISTATE_TRUE, + WDOG_HW_NOT_RUNNING = PARAM_TRISTATE_FALSE +}; struct watchdog { int (*set_timeout)(struct watchdog *, unsigned); @@ -27,15 +34,27 @@ struct watchdog { unsigned int poller_enable; struct poller_async poller; struct list_head list; + int running; /* enum wdog_hw_running */ }; +/* + * Use the following function to check whether or not the hardware watchdog + * is running + */ +static inline int watchdog_hw_running(struct watchdog *w) +{ + if (w->running == WDOG_HW_RUNNING_UNSUPPORTED) + return -ENOSYS; + + return w->running == WDOG_HW_RUNNING; +} + #ifdef CONFIG_WATCHDOG int watchdog_register(struct watchdog *); int watchdog_deregister(struct watchdog *); struct watchdog *watchdog_get_default(void); struct watchdog *watchdog_get_by_name(const char *name); int watchdog_set_timeout(struct watchdog*, unsigned); -unsigned int of_get_watchdog_priority(struct device_node *node); #else static inline int watchdog_register(struct watchdog *w) { @@ -61,12 +80,6 @@ static inline int watchdog_set_timeout(struct watchdog*w, unsigned t) { return 0; } - - -static inline unsigned int of_get_watchdog_priority(struct device_node *node) -{ - return 0; -} #endif #define WATCHDOG_DEFAULT_PRIORITY 100 |