1*4882a593Smuzhiyun // SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyun #include <linux/io.h> 3*4882a593Smuzhiyun #include <ioremap.h> 4*4882a593Smuzhiyun ioremap_prot(phys_addr_t offset,unsigned long size,unsigned long prot_val)5*4882a593Smuzhiyunvoid __iomem *ioremap_prot(phys_addr_t offset, unsigned long size, 6*4882a593Smuzhiyun unsigned long prot_val) 7*4882a593Smuzhiyun { 8*4882a593Smuzhiyun unsigned long flags = prot_val & _CACHE_MASK; 9*4882a593Smuzhiyun u64 base = (flags == _CACHE_UNCACHED ? IO_BASE : UNCAC_BASE); 10*4882a593Smuzhiyun void __iomem *addr; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun addr = plat_ioremap(offset, size, flags); 13*4882a593Smuzhiyun if (!addr) 14*4882a593Smuzhiyun addr = (void __iomem *)(unsigned long)(base + offset); 15*4882a593Smuzhiyun return addr; 16*4882a593Smuzhiyun } 17*4882a593Smuzhiyun EXPORT_SYMBOL(ioremap_prot); 18*4882a593Smuzhiyun iounmap(const volatile void __iomem * addr)19*4882a593Smuzhiyunvoid iounmap(const volatile void __iomem *addr) 20*4882a593Smuzhiyun { 21*4882a593Smuzhiyun plat_iounmap(addr); 22*4882a593Smuzhiyun } 23*4882a593Smuzhiyun EXPORT_SYMBOL(iounmap); 24