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