summaryrefslogtreecommitdiffstats
path: root/include/param.h
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-04-06 08:43:00 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-04-11 10:20:56 +0200
commit2df33a69bdb7268f0192ad35142948dd633b3f0a (patch)
tree94c4f81e20326122f376af32af36327cd534520c /include/param.h
parentc4b7f8ad38efdcc7426339cf413d52094dd677ac (diff)
downloadbarebox-2df33a69bdb7268f0192ad35142948dd633b3f0a.tar.gz
barebox-2df33a69bdb7268f0192ad35142948dd633b3f0a.tar.xz
param: Add integer and boolean parameter helpers
This adds convenience functions for directly registering integers and bools as device parameter. This way driver no longer have to fiddle with string handling. The format used to print the parameter is passed to the functions to be able to print parameters in a flexible way. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'include/param.h')
-rw-r--r--include/param.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/param.h b/include/param.h
index 2a1b4fac7b..311c6e5ca3 100644
--- a/include/param.h
+++ b/include/param.h
@@ -16,6 +16,7 @@ struct param_d {
char *name;
char *value;
struct device_d *dev;
+ void *driver_priv;
struct list_head list;
};
@@ -29,6 +30,19 @@ int dev_add_param(struct device_d *dev, const char *name,
const char *(*get)(struct device_d *, struct param_d *p),
unsigned long flags);
+struct param_d *dev_add_param_int(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, const char *format, void *priv);
+
+struct param_d *dev_add_param_bool(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_int_ro(struct device_d *dev, const char *name,
+ int value, const char *format);
+
int dev_add_param_fixed(struct device_d *dev, char *name, char *value);
void dev_remove_param(struct device_d *dev, char *name);
@@ -41,6 +55,7 @@ int dev_param_set_generic(struct device_d *dev, struct param_d *p,
/* Convenience functions to handle a parameter as an ip address */
int dev_set_param_ip(struct device_d *dev, char *name, IPaddr_t ip);
IPaddr_t dev_get_param_ip(struct device_d *dev, char *name);
+
#else
static inline const char *dev_get_param(struct device_d *dev, const char *name)
{
@@ -65,6 +80,28 @@ static inline int dev_add_param(struct device_d *dev, char *name,
return 0;
}
+static inline struct param_d *dev_add_param_int(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, const char *format, void *priv)
+{
+ return NULL;
+}
+
+static inline struct param_d *dev_add_param_bool(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 NULL;
+}
+
+static inline struct param_d *dev_add_param_int_ro(struct device_d *dev, const char *name,
+ int value, const char *format)
+{
+ return NULL;
+}
+
static inline int dev_add_param_fixed(struct device_d *dev, char *name, char *value)
{
return 0;