[U-Boot] [Patch V4 1/4] spi: fsl_qspi: fix compile warning for 64-bit platform

york sun york.sun at nxp.com
Wed Jan 20 21:22:51 CET 2016


On 01/19/2016 08:03 PM, Qianyu Gong wrote:
> 
>> -----Original Message-----
>> From: york sun
>> Sent: Wednesday, January 20, 2016 2:42 AM
>> To: Qianyu Gong <qianyu.gong at nxp.com>; u-boot at lists.denx.de
>> Cc: Mingkai Hu <mingkai.hu at nxp.com>; jteki at openedev.com; Yao Yuan
>> <yao.yuan at nxp.com>; R58495 at freescale.com; Gong Qianyu
>> <Qianyu.Gong at freescale.com>
>> Subject: Re: [Patch V4 1/4] spi: fsl_qspi: fix compile warning for 64-bit platform
>>
>> On 01/10/2016 06:14 PM, Gong Qianyu wrote:
>>> From: Gong Qianyu <Qianyu.Gong at freescale.com>
>>>
>>> This patch fixes the following compile warning:
>>> drivers/spi/fsl_qspi.c: In function 'fsl_qspi_probe':
>>> drivers/spi/fsl_qspi.c:937:15:
>>>   warning: cast to pointer from integer of different size
>>> 					 [-Wint-to-pointer-cast]
>>>   priv->regs = (struct fsl_qspi_regs *)plat->reg_base;
>>>                ^
>>> Just make the cast explict.
>>>
>>> Signed-off-by: Gong Qianyu <Qianyu.Gong at freescale.com>
>>> ---
>>> V4:
>>>  - Revise the commit message.
>>> V2-V3:
>>>  - No change.
>>>
>>>  drivers/spi/fsl_qspi.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c index
>>> feec3e8..9f23c10 100644
>>> --- a/drivers/spi/fsl_qspi.c
>>> +++ b/drivers/spi/fsl_qspi.c
>>> @@ -936,7 +936,7 @@ static int fsl_qspi_probe(struct udevice *bus)
>>>
>>>  	dm_spi_bus->max_hz = plat->speed_hz;
>>>
>>> -	priv->regs = (struct fsl_qspi_regs *)plat->reg_base;
>>
>> The reg_base is u32. Is it always correct on 64-bit SoC?
>>
> 
> So far it's always a u32 type of CCSR address.
> 
>>> +	priv->regs = (struct fsl_qspi_regs *)(unsigned long)plat->reg_base;
>>
>> How about (struct fsl_qspi_regs *)(uintptr_t)plat->reg_base?
>>
>> York
>>
> 
> The size of ''unsigned long'' depends on compilers. It works well with GCC.
> 
> Looks the same. But not sure what is defining CONFIG_USE_STDIN for.
> 
> #ifdef CONFIG_USE_STDIN
> /* Provided by gcc. */
> #include <stdint.h>
> #else
> /* Type for `void *' pointers. */
> typedef unsigned long int uintptr_t;
> #endif
>

uintptr_t is specifically defined for this type of use. You can grep it in
u-boot to see examples.

York




More information about the U-Boot mailing list