dm: core: Add a function to read into a unsigned int
The current dev_read...() functions use s32 and u32 which are convenient for device tree but not so useful for normal code, which often wants to use normal integers for values. Add a helper which supports returning an unsigned int. Also add signed versions of the unsigned readers. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -64,6 +64,38 @@ int dev_read_u32(struct udevice *dev, const char *propname, u32 *outp);
|
||||
*/
|
||||
int dev_read_u32_default(struct udevice *dev, const char *propname, int def);
|
||||
|
||||
/**
|
||||
* dev_read_s32() - read a signed 32-bit integer from a device's DT property
|
||||
*
|
||||
* @dev: device to read DT property from
|
||||
* @propname: name of the property to read from
|
||||
* @outp: place to put value (if found)
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int dev_read_s32(struct udevice *dev, const char *propname, s32 *outp);
|
||||
|
||||
/**
|
||||
* dev_read_s32_default() - read a signed 32-bit int from a device's DT property
|
||||
*
|
||||
* @dev: device to read DT property from
|
||||
* @propname: name of the property to read from
|
||||
* @def: default value to return if the property has no value
|
||||
* @return property value, or @def if not found
|
||||
*/
|
||||
int dev_read_s32_default(struct udevice *dev, const char *propname, int def);
|
||||
|
||||
/**
|
||||
* dev_read_u32u() - read a 32-bit integer from a device's DT property
|
||||
*
|
||||
* This version uses a standard uint type.
|
||||
*
|
||||
* @dev: device to read DT property from
|
||||
* @propname: name of the property to read from
|
||||
* @outp: place to put value (if found)
|
||||
* @return 0 if OK, -ve on error
|
||||
*/
|
||||
int dev_read_u32u(struct udevice *dev, const char *propname, uint *outp);
|
||||
|
||||
/**
|
||||
* dev_read_string() - Read a string from a device's DT property
|
||||
*
|
||||
@@ -492,6 +524,32 @@ static inline int dev_read_u32_default(struct udevice *dev,
|
||||
return ofnode_read_u32_default(dev_ofnode(dev), propname, def);
|
||||
}
|
||||
|
||||
static inline int dev_read_s32(struct udevice *dev,
|
||||
const char *propname, s32 *outp)
|
||||
{
|
||||
return ofnode_read_s32(dev_ofnode(dev), propname, outp);
|
||||
}
|
||||
|
||||
static inline int dev_read_s32_default(struct udevice *dev,
|
||||
const char *propname, int def)
|
||||
{
|
||||
return ofnode_read_s32_default(dev_ofnode(dev), propname, def);
|
||||
}
|
||||
|
||||
static inline int dev_read_u32u(struct udevice *dev,
|
||||
const char *propname, uint *outp)
|
||||
{
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
ret = ofnode_read_u32(dev_ofnode(dev), propname, &val);
|
||||
if (ret)
|
||||
return ret;
|
||||
*outp = val;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline const char *dev_read_string(struct udevice *dev,
|
||||
const char *propname)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user