dm: Support address translation for simple-bus

The 'ranges' property can be used to specify a translation from the system
address to the bus address. Add support for this using the dev_get_addr()
function, which devices should use to find their address.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2015-07-07 20:53:44 -06:00
parent 0990fcb772
commit f33017716e
3 changed files with 54 additions and 7 deletions

View File

@@ -139,6 +139,18 @@ void device_free(struct udevice *dev);
static inline void device_free(struct udevice *dev) {}
#endif
/**
* simple_bus_translate() - translate a bus address to a system address
*
* This handles the 'ranges' property in a simple bus. It translates the
* device address @addr to a system address using this property.
*
* @dev: Simple bus device (parent of target device)
* @addr: Address to translate
* @return new address
*/
fdt_addr_t simple_bus_translate(struct udevice *dev, fdt_addr_t addr);
/* Cast away any volatile pointer */
#define DM_ROOT_NON_CONST (((gd_t *)gd)->dm_root)
#define DM_UCLASS_ROOT_NON_CONST (((gd_t *)gd)->uclass_root)