diff options
author | Mario Six <mario.six@gdsys.cc> | 2018-01-15 11:07:19 +0100 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2018-01-21 10:01:02 -0700 |
commit | 147c6074482ed57fe43348ce15fc3dbc3e2c9db7 (patch) | |
tree | ab32fdb8846cab9098f4ff5f0d7118980bac83c4 /include/dm | |
parent | 83a462a5e3560800b3cdfd7253d2de7791968331 (diff) | |
download | u-boot-147c6074482ed57fe43348ce15fc3dbc3e2c9db7.tar.gz u-boot-147c6074482ed57fe43348ce15fc3dbc3e2c9db7.tar.xz u-boot-147c6074482ed57fe43348ce15fc3dbc3e2c9db7.zip |
core: Add {ofnode, dev}_translate_address functions
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Mario Six <mario.six@gdsys.cc>
Diffstat (limited to 'include/dm')
-rw-r--r-- | include/dm/ofnode.h | 13 | ||||
-rw-r--r-- | include/dm/read.h | 17 |
2 files changed, 30 insertions, 0 deletions
diff --git a/include/dm/ofnode.h b/include/dm/ofnode.h index 8b9932a569..c359a60f95 100644 --- a/include/dm/ofnode.h +++ b/include/dm/ofnode.h @@ -652,4 +652,17 @@ int ofnode_read_resource_byname(ofnode node, const char *name, ofnode_valid(node); \ node = ofnode_next_subnode(node)) +/** + * ofnode_translate_address() - Tranlate a device-tree address + * + * Translate an address from the device-tree into a CPU physical address. This + * function walks up the tree and applies the various bus mappings along the + * way. + * + * @ofnode: Device tree node giving the context in which to translate the + * address + * @in_addr: pointer to the address to translate + * @return the translated address; OF_BAD_ADDR on error + */ +u64 ofnode_translate_address(ofnode node, const fdt32_t *in_addr); #endif diff --git a/include/dm/read.h b/include/dm/read.h index 8114037e97..2551e5f0dc 100644 --- a/include/dm/read.h +++ b/include/dm/read.h @@ -410,6 +410,18 @@ int dev_read_resource(struct udevice *dev, uint index, struct resource *res); int dev_read_resource_byname(struct udevice *dev, const char *name, struct resource *res); +/** + * dev_translate_address() - Tranlate a device-tree address + * + * Translate an address from the device-tree into a CPU physical address. This + * function walks up the tree and applies the various bus mappings along the + * way. + * + * @dev: device giving the context in which to translate the address + * @in_addr: pointer to the address to translate + * @return the translated address; OF_BAD_ADDR on error + */ +u64 dev_translate_address(struct udevice *dev, const fdt32_t *in_addr); #else /* CONFIG_DM_DEV_READ_INLINE is enabled */ static inline int dev_read_u32_default(struct udevice *dev, @@ -582,6 +594,11 @@ static inline int dev_read_resource_byname(struct udevice *dev, return ofnode_read_resource_byname(dev_ofnode(dev), name, res); } +static inline u64 dev_translate_address(struct udevice *dev, const fdt32_t *in_addr) +{ + return ofnode_translate_address(dev_ofnode(dev), in_addr); +} + #endif /* CONFIG_DM_DEV_READ_INLINE */ /** |