162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci#include <linux/io.h> 362306a36Sopenharmony_ci#include <ioremap.h> 462306a36Sopenharmony_ci 562306a36Sopenharmony_civoid __iomem *ioremap_prot(phys_addr_t offset, unsigned long size, 662306a36Sopenharmony_ci unsigned long prot_val) 762306a36Sopenharmony_ci{ 862306a36Sopenharmony_ci unsigned long flags = prot_val & _CACHE_MASK; 962306a36Sopenharmony_ci u64 base = (flags == _CACHE_UNCACHED ? IO_BASE : UNCAC_BASE); 1062306a36Sopenharmony_ci void __iomem *addr; 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci addr = plat_ioremap(offset, size, flags); 1362306a36Sopenharmony_ci if (!addr) 1462306a36Sopenharmony_ci addr = (void __iomem *)(unsigned long)(base + offset); 1562306a36Sopenharmony_ci return addr; 1662306a36Sopenharmony_ci} 1762306a36Sopenharmony_ciEXPORT_SYMBOL(ioremap_prot); 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_civoid iounmap(const volatile void __iomem *addr) 2062306a36Sopenharmony_ci{ 2162306a36Sopenharmony_ci plat_iounmap(addr); 2262306a36Sopenharmony_ci} 2362306a36Sopenharmony_ciEXPORT_SYMBOL(iounmap); 24