[U-Boot] [PATCH] dm: core: Add dev_get_addr_ptr() to return a pointer to the reg address

Simon Glass sjg at chromium.org
Wed Apr 20 18:10:58 CEST 2016


Hi Stefan,

On 20 April 2016 at 10:08, Stefan Roese <sr at denx.de> wrote:
> 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: Stefan Roese <sr at denx.de>
> Cc: Simon Glass <sjg at chromium.org>
> ---
>  drivers/core/device.c |  5 +++++
>  include/dm/device.h   | 10 ++++++++++
>  2 files changed, 15 insertions(+)

Reviewed-by: Simon Glass <sjg at chromium.org>

Request below...

>
> diff --git a/drivers/core/device.c b/drivers/core/device.c
> index 269087a..1322991 100644
> --- a/drivers/core/device.c
> +++ b/drivers/core/device.c
> @@ -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);
> diff --git a/include/dm/device.h b/include/dm/device.h
> index dad7591..0bcbead 100644
> --- a/include/dm/device.h
> +++ b/include/dm/device.h
> @@ -454,6 +454,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

Please mention the error condition, e.g. ", 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
>   *
>   * @dev: Pointer to a device
> --
> 2.8.1
>

Regards,
Simon


More information about the U-Boot mailing list