53 lines
2.4 KiB
Plaintext
53 lines
2.4 KiB
Plaintext
---------- Device parameters --------------
|
|
|
|
Devices have several parameters. In case of a network device this may be the
|
|
ip address, networking mask or similar and users need access to these
|
|
parameters. in U-Boot this is solved with device paramters. Device parameters
|
|
are always strings, although there are functions to interpret them as
|
|
something else. hush users can access parameters as a local variable which
|
|
have a dot (.) in them. So setting the ip address of the first ethernet
|
|
device is a matter of typing 'eth0.ip=192.168.0.7' on the console and can
|
|
then be read back with 'echo $eth0.ip'. The devinfo command shows a summary
|
|
about all devices currently present. If called with a device id as parameter
|
|
it shows the parameters available for a device.
|
|
|
|
Device parameters programming API
|
|
---------------------------------
|
|
|
|
struct param_d {
|
|
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;
|
|
struct param_d *next;
|
|
char *value;
|
|
};
|
|
|
|
int dev_add_param(struct device_d *dev, struct param_d *par);
|
|
|
|
This function adds a new parameter to a device. At least the name field in
|
|
the new parameter struct has to be initialized. The 'get' and 'set' fields
|
|
can be set to NULL in which case the framework handles them. It is also
|
|
allowed to implement only one of the get/set functions. Care must be taken
|
|
with the initial value of the parameter. If the framework handles the set
|
|
function it will try to free the value of the parameter. If this is a
|
|
static array bad things will happen. A parameter can have the flag
|
|
PARAM_FLAG_RO which means that the parameter is readonly. It is perfectly ok
|
|
then to point the value to a static array.
|
|
|
|
const char *dev_get_param(struct device_d *dev, const char *name);
|
|
|
|
This function returns a pointer to the value of the parameter specified
|
|
with dev and name.
|
|
If the framework handles the get/set functions the parameter value strings
|
|
are alloceted with malloc and freed with free when another value is set for
|
|
this parameter. Drivers implementing set/get themselves are allowed to
|
|
return values in static arrays. This means that the pointers returned from
|
|
dev_get_param() are only valid until the next call to dev_get_param. If this
|
|
is not long enough strdup() or similar must be used.
|
|
|
|
int dev_set_param(struct device_d *dev, const char *name, const char *val);
|
|
|
|
Set the value of a parameter.
|
|
|