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