diff mbox

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

Message ID 1452477993-5905-1-git-send-email-Qianyu.Gong@nxp.com
State Superseded
Delegated to: York Sun
Headers show

Commit Message

Gong Qianyu Jan. 11, 2016, 2:06 a.m. UTC
From: Gong Qianyu <Qianyu.Gong@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@freescale.com>
---
V4:
 - Revise the commit message.
V2-V3:
 - No change.

 drivers/spi/fsl_qspi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

York Sun Jan. 19, 2016, 6:41 p.m. UTC | #1
On 01/10/2016 06:14 PM, Gong Qianyu wrote:
> From: Gong Qianyu <Qianyu.Gong@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@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?

> +	priv->regs = (struct fsl_qspi_regs *)(unsigned long)plat->reg_base;

How about (struct fsl_qspi_regs *)(uintptr_t)plat->reg_base?

York
Gong Qianyu Jan. 20, 2016, 4:03 a.m. UTC | #2
> -----Original Message-----
> From: york sun
> Sent: Wednesday, January 20, 2016 2:42 AM
> To: Qianyu Gong <qianyu.gong@nxp.com>; u-boot@lists.denx.de
> Cc: Mingkai Hu <mingkai.hu@nxp.com>; jteki@openedev.com; Yao Yuan
> <yao.yuan@nxp.com>; R58495@freescale.com; Gong Qianyu
> <Qianyu.Gong@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@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@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


Regards,
Qianyu
York Sun Jan. 20, 2016, 8:22 p.m. UTC | #3
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@nxp.com>; u-boot@lists.denx.de
>> Cc: Mingkai Hu <mingkai.hu@nxp.com>; jteki@openedev.com; Yao Yuan
>> <yao.yuan@nxp.com>; R58495@freescale.com; Gong Qianyu
>> <Qianyu.Gong@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@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@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
Gong Qianyu Jan. 21, 2016, 3:45 a.m. UTC | #4
Hi York,

> -----Original Message-----
> From: york sun
> Sent: Thursday, January 21, 2016 4:23 AM
> To: Qianyu Gong <qianyu.gong@nxp.com>; u-boot@lists.denx.de
> Cc: Mingkai Hu <mingkai.hu@nxp.com>; jteki@openedev.com; Yao Yuan
> <yao.yuan@nxp.com>; R58495@freescale.com; Gong Qianyu
> <Qianyu.Gong@freescale.com>
> Subject: Re: [Patch V4 1/4] spi: fsl_qspi: fix compile warning for 64-bit platform
> 
> 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@nxp.com>; u-boot@lists.denx.de
> >> Cc: Mingkai Hu <mingkai.hu@nxp.com>; jteki@openedev.com; Yao Yuan
> >> <yao.yuan@nxp.com>; R58495@freescale.com; Gong Qianyu
> >> <Qianyu.Gong@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@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@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
> 

Thanks! I've sent out a new version of the patch set.

Regards,
Qianyu
diff mbox

Patch

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;
+	priv->regs = (struct fsl_qspi_regs *)(unsigned long)plat->reg_base;
 	priv->flags = plat->flags;
 
 	priv->speed_hz = plat->speed_hz;