0001
0002 #include <linux/io.h>
0003 #include <ioremap.h>
0004
0005 void __iomem *ioremap_prot(phys_addr_t offset, unsigned long size,
0006 unsigned long prot_val)
0007 {
0008 unsigned long flags = prot_val & _CACHE_MASK;
0009 u64 base = (flags == _CACHE_UNCACHED ? IO_BASE : UNCAC_BASE);
0010 void __iomem *addr;
0011
0012 addr = plat_ioremap(offset, size, flags);
0013 if (!addr)
0014 addr = (void __iomem *)(unsigned long)(base + offset);
0015 return addr;
0016 }
0017 EXPORT_SYMBOL(ioremap_prot);
0018
0019 void iounmap(const volatile void __iomem *addr)
0020 {
0021 plat_iounmap(addr);
0022 }
0023 EXPORT_SYMBOL(iounmap);