1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _KMAP_H 3 #define _KMAP_H 4 5 #ifdef CONFIG_MMU 6 7 #define ARCH_HAS_IOREMAP_WT 8 9 /* Values for nocacheflag and cmode */ 10 #define IOMAP_FULL_CACHING 0 11 #define IOMAP_NOCACHE_SER 1 12 #define IOMAP_NOCACHE_NONSER 2 13 #define IOMAP_WRITETHROUGH 3 14 15 /* 16 * These functions exported by arch/m68k/mm/kmap.c. 17 * Only needed on MMU enabled systems. 18 */ 19 extern void __iomem *__ioremap(unsigned long physaddr, unsigned long size, 20 int cacheflag); 21 #define iounmap iounmap 22 extern void iounmap(void __iomem *addr); 23 24 #define ioremap ioremap 25 static inline void __iomem *ioremap(unsigned long physaddr, unsigned long size) 26 { 27 return __ioremap(physaddr, size, IOMAP_NOCACHE_SER); 28 } 29 30 #define ioremap_nocache ioremap 31 #define ioremap_uc ioremap 32 #define ioremap_wt ioremap_wt 33 static inline void __iomem *ioremap_wt(unsigned long physaddr, 34 unsigned long size) 35 { 36 return __ioremap(physaddr, size, IOMAP_WRITETHROUGH); 37 } 38 39 #define memset_io memset_io 40 static inline void memset_io(volatile void __iomem *addr, unsigned char val, 41 int count) 42 { 43 __builtin_memset((void __force *) addr, val, count); 44 } 45 46 #define memcpy_fromio memcpy_fromio 47 static inline void memcpy_fromio(void *dst, const volatile void __iomem *src, 48 int count) 49 { 50 __builtin_memcpy(dst, (void __force *) src, count); 51 } 52 53 #define memcpy_toio memcpy_toio 54 static inline void memcpy_toio(volatile void __iomem *dst, const void *src, 55 int count) 56 { 57 __builtin_memcpy((void __force *) dst, src, count); 58 } 59 60 #endif /* CONFIG_MMU */ 61 62 #define ioport_map ioport_map 63 static inline void __iomem *ioport_map(unsigned long port, unsigned int nr) 64 { 65 return (void __iomem *) port; 66 } 67 68 #define ioport_unmap ioport_unmap 69 static inline void ioport_unmap(void __iomem *p) 70 { 71 } 72 73 #endif /* _KMAP_H */ 74