[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