summaryrefslogtreecommitdiff
path: root/include/dm
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2017-06-12 06:21:30 -0600
committerSimon Glass <sjg@chromium.org>2017-07-11 10:08:20 -0600
commitf7d6fcf7aead384ea39bc7aba581e912c3759eaa (patch)
treeaae54342a8ce91b9c5ad4ba9418e42d2d891586b /include/dm
parenta44810123f9ef069587beacdce7d6f488cf42973 (diff)
dm: core: Add dev_read_enabled() to check if a device is enabled
This function allows a device's status to be read. This indicates whether the device should be enabled or disabled. Note: In normal operation disabled devices will not be present in the driver-model tree. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com> Tested-on: Beaver, Jetson-TK1
Diffstat (limited to 'include/dm')
-rw-r--r--include/dm/read.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/dm/read.h b/include/dm/read.h
index 65d5d1f357..cea1c16a00 100644
--- a/include/dm/read.h
+++ b/include/dm/read.h
@@ -315,6 +315,19 @@ ofnode dev_read_next_subnode(ofnode node);
const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, const char *propname,
size_t sz);
+/**
+ * dev_read_enabled() - check whether a node is enabled
+ *
+ * This looks for a 'status' property. If this exists, then returns 1 if
+ * the status is 'ok' and 0 otherwise. If there is no status property,
+ * it returns 1 on the assumption that anything mentioned should be enabled
+ * by default.
+ *
+ * @dev: device to examine
+ * @return integer value 0 (not enabled) or 1 (enabled)
+ */
+int dev_read_enabled(struct udevice *dev);
+
#else /* CONFIG_DM_DEV_READ_INLINE is enabled */
static inline int dev_read_u32_default(struct udevice *dev,
@@ -432,6 +445,11 @@ static inline const uint8_t *dev_read_u8_array_ptr(struct udevice *dev,
return ofnode_read_u8_array_ptr(dev_ofnode(dev), propname, sz);
}
+static inline int dev_read_enabled(struct udevice *dev)
+{
+ return fdtdec_get_is_enabled(gd->fdt_blob, dev_of_offset(dev));
+}
+
#endif /* CONFIG_DM_DEV_READ_INLINE */
/**