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