]> git.sur5r.net Git - u-boot/commitdiff
dm: add dev_read_u32()
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Fri, 29 Dec 2017 17:00:05 +0000 (02:00 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Mon, 22 Jan 2018 05:11:58 +0000 (14:11 +0900)
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>
drivers/core/read.c
include/dm/read.h

index f346cc1eb696822dab1d138e46f597bb6ccb4d47..758d4003e5e016df18037973123d82c6b095024b 100644 (file)
 #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);
index 8114037e9771d1110b45a648f82cdf8358666bfb..5cacec800074497a7ece65d63a5b637e0e368be4 100644 (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)
 {