diff --git a/include/param.h b/include/param.h index 5283a6ef3..0d891a2ef 100644 --- a/include/param.h +++ b/include/param.h @@ -1,39 +1,22 @@ #ifndef PARAM_H #define PARAM_H -#include - -#define PARAM_TYPE_STRING 1 -#define PARAM_TYPE_ULONG 2 -#define PARAM_TYPE_IPADDR 3 - #define PARAM_FLAG_RO (1 << 0) struct device_d; -typedef union { - char *val_str; - ulong val_ulong; - IPaddr_t val_ip; -} value_t; - struct param_d { - struct param_d* (*get)(struct device_d *, struct param_d *param); - int (*set)(struct device_d *, struct param_d *param, value_t val); - ulong type; + char* (*get)(struct device_d *, struct param_d *param); + int (*set)(struct device_d *, struct param_d *param, const char *val); ulong flags; - char *name; - ulong cookie; - struct param_d *next; - value_t value; + char *name; + struct param_d *next; + char *value; }; -struct param_d* dev_get_param(struct device_d *dev, char *name); -int dev_set_param(struct device_d *dev, char *name, value_t val); -struct param_d *get_param_by_name(struct device_d *dev, char *name); -void print_param(struct param_d *param); -IPaddr_t dev_get_param_ip(struct device_d *dev, char *name); -int dev_set_param_ip(struct device_d *dev, char *name, IPaddr_t ip); +char *dev_get_param(struct device_d *dev, const char *name); +int dev_set_param(struct device_d *dev, const char *name, const char *val); +struct param_d *get_param_by_name(struct device_d *dev, const char *name); int dev_add_parameter(struct device_d *dev, struct param_d *par); diff --git a/lib_generic/global.c b/lib_generic/global.c index d4cdcc933..79eb6f90d 100644 --- a/lib_generic/global.c +++ b/lib_generic/global.c @@ -50,7 +50,7 @@ static int do_get( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) } param = dev_get_param(dev, argv[2]); - print_param(param); + printf("%s\n", param->value); printf("\n"); return 0; @@ -68,7 +68,6 @@ static int do_set( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) char *endp; int ret; struct param_d *param; - value_t val; if (argc < 4) { printf ("Usage:\n%s\n", cmdtp->usage); @@ -87,19 +86,7 @@ static int do_set( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) return 1; } - switch (param->type) { - case PARAM_TYPE_STRING: - val.val_str = argv[3]; - break; - case PARAM_TYPE_ULONG: - val.val_ulong = simple_strtoul(argv[3], NULL, 0); - break; - case PARAM_TYPE_IPADDR: - val.val_ip = string_to_ip(argv[3]); - break; - } - - ret = dev_set_param(dev, argv[2], val); + ret = dev_set_param(dev, argv[2], argv[3]); if (ret) perror("set parameter");