Commit 28027521 authored by Stefan Roese's avatar Stefan Roese Committed by Heiko Schocher

dm: core: Add dev_get_addr_ptr() to return a pointer to the reg address

On some platforms (e.g. x86), the return value of dev_get_addr() can't
be assigned to a pointer type variable directly. As there might be a
difference between the size of fdt_addr_t and the pointer type. On
x86 for example, "fdt_addr_t" is 64bit but "void *" only 32bit. So
assigning the register base directly in dev_get_addr() results in this
compilation warning:
  warning: cast to pointer from integer of different size

This patch introduces the new function dev_get_addr_ptr() that
returns a pointer to the 'reg' address that can be used by drivers
in this case.
Signed-off-by: 's avatarStefan Roese <sr@denx.de>
Reviewed-by: 's avatarSimon Glass <sjg@chromium.org>
Reviewed-by: 's avatarBin Meng <bmeng.cn@gmail.com>
parent 65341967
......@@ -673,6 +673,11 @@ fdt_addr_t dev_get_addr(struct udevice *dev)
return dev_get_addr_index(dev, 0);
}
void *dev_get_addr_ptr(struct udevice *dev)
{
return (void *)(uintptr_t)dev_get_addr_index(dev, 0);
}
bool device_has_children(struct udevice *dev)
{
return !list_empty(&dev->child_head);
......
......@@ -453,6 +453,16 @@ int device_find_next_child(struct udevice **devp);
*/
fdt_addr_t dev_get_addr(struct udevice *dev);
/**
* dev_get_addr_ptr() - Return pointer to the address of the reg property
* of a device
*
* @dev: Pointer to a device
*
* @return Pointer to addr, or NULL if there is no such property
*/
void *dev_get_addr_ptr(struct udevice *dev);
/**
* dev_get_addr_index() - Get the indexed reg property of a device
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment