|  | // 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); |