Skip to contentSkip to conversation

arch/score/include/asm/io.h: Add generic io map functions when MMU enabled

PATCH In review Chen Gang 2 participants 3 messages Jun 18, 2014 – Jun 19, 2014

lore
Share & tools
lore

Chen Gang

author
#0 lore raw

PATCH 1/1 arch/score/include/asm/io.h: Add generic io map functions when MMU enabled

score did not implement some io map functions when MMU enabled, so need add generic io map functions, just like some other architectures have done (e.g. sparc64, s390, and mn10300), or will cause compiling issue.

The related error (allmodconfig under score):

CC drivers/clocksource/sh_cmt.o
drivers/clocksource/sh_cmt.c: In function 'sh_cmt_map_memory':
drivers/clocksource/sh_cmt.c:932:2: error: implicit declaration of function 'ioremap_nocache' [-Werror=implicit-function-declaration]

    cmt->mapbase = ioremap_nocache(mem->start, resource_size(mem));
    ^
  drivers/clocksource/sh_cmt.c:932:15: warning: assignment makes pointer from integer without a cast
    cmt->mapbase = ioremap_nocache(mem->start, resource_size(mem));
                 ^
  drivers/clocksource/sh_cmt.c: In function 'sh_cmt_map_memory_legacy':
  drivers/clocksource/sh_cmt.c:953:18: warning: assignment makes pointer from integer without a cast
    cmt->mapbase_ch = ioremap_nocache(res->start, resource_size(res));
                    ^
  drivers/clocksource/sh_cmt.c:963:15: warning: assignment makes pointer from integer without a cast
    cmt->mapbase = ioremap_nocache(res2 ? res2->start :
                 ^
  drivers/clocksource/sh_cmt.c:968:3: error: implicit declaration of function 'iounmap' [-Werror=implicit-function-declaration]
     iounmap(cmt->mapbase_ch);
     ^

cc1: some warnings being treated as errors make[2]: *** [drivers/clocksource/sh_cmt.o] Error 1 make[1]: *** [drivers/clocksource] Error 2
make: *** [drivers] Error 2

---
 arch/score/include/asm/io.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/score/include/asm/io.h +16 -0
index 574c8827..d67aeea 100644
@@ -3,6 +3,22 @@
 
 #include <asm-generic/io.h>
 
+#ifdef CONFIG_MMU
+static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
+{
+	return (void __iomem *) (unsigned long)offset;
+}
+
+#define __ioremap(offset, size, flags)	ioremap(offset, size)
+
+#define ioremap_nocache ioremap
+#define ioremap_wc ioremap_nocache
+
+static inline void iounmap(void __iomem *addr)
+{
+}
+#endif
+
 #define virt_to_bus	virt_to_phys
 #define bus_to_virt	phys_to_virt
 #endif /* _ASM_SCORE_IO_H */
Signature · 1 line
1.9.2.459.g68773ac
#1 lore raw

Hi Chen,
Although "SuperH Timer Support" are never used in our platforms, we can still consider if these functions are necessary. Could you send the config to us?

Best,
Lennox

2014-06-18 13:06 GMT+08:00 Chen Gang <[email protected]>:

Quoted 63 lines

score did not implement some io map functions when MMU enabled, so need add generic io map functions, just like some other architectures have done (e.g. sparc64, s390, and mn10300), or will cause compiling issue.

The related error (allmodconfig under score):

CC drivers/clocksource/sh_cmt.o
drivers/clocksource/sh_cmt.c: In function 'sh_cmt_map_memory':
drivers/clocksource/sh_cmt.c:932:2: error: implicit declaration of function 'ioremap_nocache' [-Werror=implicit-function-declaration]

    cmt->mapbase = ioremap_nocache(mem->start, resource_size(mem));
    ^
  drivers/clocksource/sh_cmt.c:932:15: warning: assignment makes pointer from integer without a cast
    cmt->mapbase = ioremap_nocache(mem->start, resource_size(mem));
                 ^
  drivers/clocksource/sh_cmt.c: In function 'sh_cmt_map_memory_legacy':
  drivers/clocksource/sh_cmt.c:953:18: warning: assignment makes pointer from integer without a cast
    cmt->mapbase_ch = ioremap_nocache(res->start, resource_size(res));
                    ^
  drivers/clocksource/sh_cmt.c:963:15: warning: assignment makes pointer from integer without a cast
    cmt->mapbase = ioremap_nocache(res2 ? res2->start :
                 ^
  drivers/clocksource/sh_cmt.c:968:3: error: implicit declaration of function 'iounmap' [-Werror=implicit-function-declaration]
     iounmap(cmt->mapbase_ch);
     ^

cc1: some warnings being treated as errors make[2]: *** [drivers/clocksource/sh_cmt.o] Error 1 make[1]: *** [drivers/clocksource] Error 2
make: *** [drivers] Error 2

---
 arch/score/include/asm/io.h | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)
arch/score/include/asm/io.h +16 -1
index 574c8827..d67aeea 100644
@@ -3,6 +3,22 @@
 
 #include <asm-generic/io.h>
 
+#ifdef CONFIG_MMU
+static inline void __iomem *ioremap(phys_addr_t offset, unsigned long size)
+{
+       return (void __iomem *) (unsigned long)offset;
+}
+
+#define __ioremap(offset, size, flags) ioremap(offset, size)
+
+#define ioremap_nocache ioremap
+#define ioremap_wc ioremap_nocache
+
+static inline void iounmap(void __iomem *addr)
+{
+}
+#endif
+
 #define virt_to_bus    virt_to_phys
 #define bus_to_virt    phys_to_virt
 #endif /* _ASM_SCORE_IO_H */
--

1.9.2.459.g68773ac

author
#2 lore raw
Quoted 4 lines · Lennox Wu

Hi Chen,
Although "SuperH Timer Support" are never used in our platforms, we can still consider if these functions are necessary. Could you send the config to us?

It is allmodconfig under score for next-20140616, please check the attachment for details.

Thanks.

Signature · 3 lines
Chen Gang

Open, share, and attitude like air, water, and life which God blessed