dm: add dev_read_u32()

dev_read_u32_default() always returns something even when the property
is missing.  So, it is impossible to do nothing in the case.  One
solution is to use ofnode_read_u32() instead, but adding dev_read_u32()
will be helpful.

BTW, Linux has an equvalent function, device_property_read_u32();
it is clearer that it reads a property.  I cannot understand the
behavior of dev_read_u32() from its name.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
Masahiro Yamada 2017-12-30 02:00:05 +09:00 committed by Jaehoon Chung
parent 557767ed29
commit 3ab48f6223
2 changed files with 21 additions and 0 deletions

View File

@ -10,6 +10,11 @@
#include <mapmem.h>
#include <dm/of_access.h>
int dev_read_u32(struct udevice *dev, const char *propname, u32 *outp)
{
return ofnode_read_u32(dev_ofnode(dev), propname, outp);
}
int dev_read_u32_default(struct udevice *dev, const char *propname, int def)
{
return ofnode_read_u32_default(dev_ofnode(dev), propname, def);

View File

@ -45,6 +45,16 @@ static inline bool dev_of_valid(struct udevice *dev)
}
#ifndef CONFIG_DM_DEV_READ_INLINE
/**
* dev_read_u32() - read a 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_u32(struct udevice *dev, const char *propname, u32 *outp);
/**
* dev_read_u32_default() - read a 32-bit integer from a device's DT property
*
@ -412,6 +422,12 @@ int dev_read_resource_byname(struct udevice *dev, const char *name,
#else /* CONFIG_DM_DEV_READ_INLINE is enabled */
static inline int dev_read_u32(struct udevice *dev,
const char *propname, u32 *outp)
{
return ofnode_read_u32(dev_ofnode(dev), propname, outp);
}
static inline int dev_read_u32_default(struct udevice *dev,
const char *propname, int def)
{