diff options
author | Simon Glass <sjg@chromium.org> | 2017-05-17 17:18:10 -0600 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2017-06-01 07:03:04 -0600 |
commit | 4984de2baaaf82bfc9416e9cdbd3040b97856950 (patch) | |
tree | a3922476dddd7da5aae226a8eb5c16fc405bcca1 /include/dm/device.h | |
parent | da409ccc4ae62a0bf7111e2f4419fdbfd1ba3d89 (diff) |
dm: core: Add ofnode to represent device tree nodes
With live tree we need a struct device_node * to reference a node. With
the existing flat tree, we need an int offset. We need to unify these into
a single value which can represent both.
Add an ofnode union for this and adjust existing code to move to this.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/dm/device.h')
-rw-r--r-- | include/dm/device.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/include/dm/device.h b/include/dm/device.h index 361cdaee483..489cf33987f 100644 --- a/include/dm/device.h +++ b/include/dm/device.h @@ -11,6 +11,7 @@ #ifndef _DM_DEVICE_H #define _DM_DEVICE_H +#include <dm/ofnode.h> #include <dm/uclass-id.h> #include <fdtdec.h> #include <linker_lists.h> @@ -103,7 +104,7 @@ enum { * @platdata: Configuration data for this device * @parent_platdata: The parent bus's configuration data for this device * @uclass_platdata: The uclass's configuration data for this device - * @of_offset: Device tree node offset for this device (- for none) + * @node: Reference to device tree node for this device * @driver_data: Driver data word for the entry that matched this device with * its driver * @parent: Parent of this device, or NULL for the top level device @@ -129,7 +130,7 @@ struct udevice { void *platdata; void *parent_platdata; void *uclass_platdata; - int of_offset; + ofnode node; ulong driver_data; struct udevice *parent; void *priv; @@ -158,12 +159,17 @@ struct udevice { static inline int dev_of_offset(const struct udevice *dev) { - return dev->of_offset; + return ofnode_to_offset(dev->node); } static inline void dev_set_of_offset(struct udevice *dev, int of_offset) { - dev->of_offset = of_offset; + dev->node = offset_to_ofnode(of_offset); +} + +static inline bool dev_has_of_node(struct udevice *dev) +{ + return ofnode_valid(dev->node); } /** |