| From 47d7ed6da8d2f8afa89a2c418d24865c4c972e3e Mon Sep 17 00:00:00 2001 |
| From: Geert Uytterhoeven <geert+renesas@glider.be> |
| Date: Mon, 11 Feb 2019 13:58:43 +0100 |
| Subject: sh: sh7786: Add explicit I/O cast to sh7786_mm_sel() |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| [ Upstream commit 8440bb9b944c02222c7a840d406141ed42e945cd ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 8f9bfbf3cdb10..d6cce65b48713 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.20.1 |
| |