| // SPDX-License-Identifier: GPL-2.0-only |
| #include <linux/io.h> |
| #include <ioremap.h> |
| |
| void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size, |
| unsigned long prot_val) |
| { |
| unsigned long flags = prot_val & _CACHE_MASK; |
| u64 base = (flags == _CACHE_UNCACHED ? IO_BASE : UNCAC_BASE); |
| void __iomem *addr; |
| |
| addr = plat_ioremap(offset, size, flags); |
| if (!addr) |
| addr = (void __iomem *)(unsigned long)(base + offset); |
| return addr; |
| } |
| EXPORT_SYMBOL(ioremap_prot); |
| |
| void iounmap(const volatile void __iomem *addr) |
| { |
| plat_iounmap(addr); |
| } |
| EXPORT_SYMBOL(iounmap); |