1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __ASM_MACH_BMIPS_IOREMAP_H 3 #define __ASM_MACH_BMIPS_IOREMAP_H 4 5 #include <linux/types.h> 6 7 /* 8 * Allow physical addresses to be fixed up to help peripherals located 9 * outside the low 32-bit range -- generic pass-through version. 10 */ 11 static inline phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, 12 phys_addr_t size) 13 { 14 return phys_addr; 15 } 16 17 static inline int is_bmips_internal_registers(phys_addr_t offset) 18 { 19 #if defined(CONFIG_SOC_BMIPS_BCM6338) || \ 20 defined(CONFIG_SOC_BMIPS_BCM6348) || \ 21 defined(CONFIG_SOC_BMIPS_BCM6358) 22 if (offset >= 0xfffe0000) 23 return 1; 24 #endif 25 26 return 0; 27 } 28 29 static inline void __iomem *plat_ioremap(phys_addr_t offset, unsigned long size, 30 unsigned long flags) 31 { 32 if (is_bmips_internal_registers(offset)) 33 return (void __iomem *)offset; 34 35 return NULL; 36 } 37 38 static inline int plat_iounmap(const volatile void __iomem *addr) 39 { 40 return is_bmips_internal_registers((unsigned long)addr); 41 } 42 43 #define _page_cachable_default _CACHE_CACHABLE_NONCOHERENT 44 45 #endif /* __ASM_MACH_BMIPS_IOREMAP_H */ 46