24 lines
		
	
	
		
			567 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			567 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // 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);
 |