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