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

Simon Glass sjg at chromium.org
Sat May 7 17:19:10 CEST 2016


Hi Stefan,

On 20 April 2016 at 10:10, Simon Glass <sjg at chromium.org> wrote:
> 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"

I'd like to get this applied. If you like I can fix this when applying?

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