diff mbox series

[v3,04/10] sh: sh7786: Add explicit I/O cast to sh7786_mm_sel()

Message ID 20190320102141.19316-5-geert+renesas@glider.be (mailing list archive)
State New, archived
Headers show
Series pinctrl: sh-pfc: Validation and compile-testing | expand

Commit Message

Geert Uytterhoeven March 20, 2019, 10:21 a.m. UTC
When compile-testing on arm:

    arch/sh/include/cpu-sh4/cpu/sh7786.h: In function ‘sh7786_mm_sel’:
    arch/sh/include/cpu-sh4/cpu/sh7786.h:135:21: warning: passing argument 1 of ‘__raw_readl’ makes pointer from integer without a cast [-Wint-conversion]
      return __raw_readl(0xFC400020) & 0x7;
			 ^~~~~~~~~~
    In file included from include/linux/io.h:25:0,
		     from arch/sh/include/cpu-sh4/cpu/sh7786.h:14,
		     from drivers/pinctrl/sh-pfc/pfc-sh7786.c:15:
    arch/arm/include/asm/io.h:113:21: note: expected ‘const volatile void *’ but argument is of type ‘unsigned int’
     #define __raw_readl __raw_readl
			 ^
    arch/arm/include/asm/io.h:114:19: note: in expansion of macro ‘__raw_readl’
     static inline u32 __raw_readl(const volatile void __iomem *addr)
		       ^~~~~~~~~~~

__raw_readl() on SuperH is a macro that casts the passed I/O address to
the correct type, while the implementations on most other architectures
expect to be passed the correct pointer type.

Add an explicit cast to fix this.

Note that this also gets rid of a sparse warning on SuperH:

    arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16: warning: incorrect type in argument 1 (different base types)
    arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    expected void const volatile [noderef] <asn:2>*<noident>
    arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    got unsigned int

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
As this is a dependency for sh-pfc compile-testing, I intend to queue
this up in sh-pfc-for-v5.2.

v3:
  - New.
---
 arch/sh/include/cpu-sh4/cpu/sh7786.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Simon Horman March 27, 2019, 11:48 a.m. UTC | #1
On Wed, Mar 20, 2019 at 11:21:35AM +0100, Geert Uytterhoeven wrote:
> When compile-testing on arm:
> 
>     arch/sh/include/cpu-sh4/cpu/sh7786.h: In function ‘sh7786_mm_sel’:
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:21: warning: passing argument 1 of ‘__raw_readl’ makes pointer from integer without a cast [-Wint-conversion]
>       return __raw_readl(0xFC400020) & 0x7;
> 			 ^~~~~~~~~~
>     In file included from include/linux/io.h:25:0,
> 		     from arch/sh/include/cpu-sh4/cpu/sh7786.h:14,
> 		     from drivers/pinctrl/sh-pfc/pfc-sh7786.c:15:
>     arch/arm/include/asm/io.h:113:21: note: expected ‘const volatile void *’ but argument is of type ‘unsigned int’
>      #define __raw_readl __raw_readl
> 			 ^
>     arch/arm/include/asm/io.h:114:19: note: in expansion of macro ‘__raw_readl’
>      static inline u32 __raw_readl(const volatile void __iomem *addr)
> 		       ^~~~~~~~~~~
> 
> __raw_readl() on SuperH is a macro that casts the passed I/O address to
> the correct type, while the implementations on most other architectures
> expect to be passed the correct pointer type.
> 
> Add an explicit cast to fix this.
> 
> Note that this also gets rid of a sparse warning on SuperH:
> 
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16: warning: incorrect type in argument 1 (different base types)
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    expected void const volatile [noderef] <asn:2>*<noident>
>     arch/sh/include/cpu-sh4/cpu/sh7786.h:135:16:    got unsigned int
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>

Reviewed-by: Simon Horman <horms+renesas@verge.net.au>

> ---
> As this is a dependency for sh-pfc compile-testing, I intend to queue
> this up in sh-pfc-for-v5.2.
> 
> v3:
>   - New.
> ---
>  arch/sh/include/cpu-sh4/cpu/sh7786.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/sh/include/cpu-sh4/cpu/sh7786.h b/arch/sh/include/cpu-sh4/cpu/sh7786.h
> index 8f9bfbf3cdb1097f..d6cce65b48713f60 100644
> --- a/arch/sh/include/cpu-sh4/cpu/sh7786.h
> +++ b/arch/sh/include/cpu-sh4/cpu/sh7786.h
> @@ -132,7 +132,7 @@ enum {
>  
>  static inline u32 sh7786_mm_sel(void)
>  {
> -	return __raw_readl(0xFC400020) & 0x7;
> +	return __raw_readl((const volatile void __iomem *)0xFC400020) & 0x7;
>  }
>  
>  #endif /* __CPU_SH7786_H__ */
> -- 
> 2.17.1
>
diff mbox series

Patch

diff --git a/arch/sh/include/cpu-sh4/cpu/sh7786.h b/arch/sh/include/cpu-sh4/cpu/sh7786.h
index 8f9bfbf3cdb1097f..d6cce65b48713f60 100644
--- a/arch/sh/include/cpu-sh4/cpu/sh7786.h
+++ b/arch/sh/include/cpu-sh4/cpu/sh7786.h
@@ -132,7 +132,7 @@  enum {
 
 static inline u32 sh7786_mm_sel(void)
 {
-	return __raw_readl(0xFC400020) & 0x7;
+	return __raw_readl((const volatile void __iomem *)0xFC400020) & 0x7;
 }
 
 #endif /* __CPU_SH7786_H__ */