|
@@ -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 */
|
|
|
|
|
|
/**
|