at91: add arch specific ioremap support
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Cc: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Patrice Vilchez <patrice.vilchez@atmel.com>
This commit is contained in:
		
					parent
					
						
							
								f0051d82a6
							
						
					
				
			
			
				commit
				
					
						fb149f9e28
					
				
			
		
					 2 changed files with 29 additions and 1 deletions
				
			
		|  | @ -21,14 +21,23 @@ | ||||||
| #ifndef __ASM_ARCH_IO_H | #ifndef __ASM_ARCH_IO_H | ||||||
| #define __ASM_ARCH_IO_H | #define __ASM_ARCH_IO_H | ||||||
| 
 | 
 | ||||||
|  | #include <mach/hardware.h> | ||||||
|  | 
 | ||||||
| #define IO_SPACE_LIMIT		0xFFFFFFFF | #define IO_SPACE_LIMIT		0xFFFFFFFF | ||||||
| 
 | 
 | ||||||
| #define __io(a)		__typesafe_io(a) | #define __io(a)		__typesafe_io(a) | ||||||
| #define __mem_pci(a)	(a) | #define __mem_pci(a)	(a) | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| #ifndef __ASSEMBLY__ | #ifndef __ASSEMBLY__ | ||||||
| 
 | 
 | ||||||
|  | #ifndef CONFIG_ARCH_AT91X40 | ||||||
|  | #define __arch_ioremap	at91_ioremap | ||||||
|  | #define __arch_iounmap	at91_iounmap | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | void __iomem *at91_ioremap(unsigned long phys, size_t size, unsigned int type); | ||||||
|  | void at91_iounmap(volatile void __iomem *addr); | ||||||
|  | 
 | ||||||
| static inline unsigned int at91_sys_read(unsigned int reg_offset) | static inline unsigned int at91_sys_read(unsigned int reg_offset) | ||||||
| { | { | ||||||
| 	void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | 	void __iomem *addr = (void __iomem *)AT91_VA_BASE_SYS; | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <linux/module.h> | #include <linux/module.h> | ||||||
| #include <linux/io.h> | #include <linux/io.h> | ||||||
|  | #include <linux/mm.h> | ||||||
| 
 | 
 | ||||||
| #include <asm/mach/map.h> | #include <asm/mach/map.h> | ||||||
| 
 | 
 | ||||||
|  | @ -72,6 +73,24 @@ static struct map_desc at91_io_desc __initdata = { | ||||||
| 	.type		= MT_DEVICE, | 	.type		= MT_DEVICE, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | void __iomem *at91_ioremap(unsigned long p, size_t size, unsigned int type) | ||||||
|  | { | ||||||
|  | 	if (p >= AT91_BASE_SYS && p <= (AT91_BASE_SYS + SZ_16K - 1)) | ||||||
|  | 		return (void __iomem *)AT91_IO_P2V(p); | ||||||
|  | 
 | ||||||
|  | 	return __arm_ioremap_caller(p, size, type, __builtin_return_address(0)); | ||||||
|  | } | ||||||
|  | EXPORT_SYMBOL(at91_ioremap); | ||||||
|  | 
 | ||||||
|  | void at91_iounmap(volatile void __iomem *addr) | ||||||
|  | { | ||||||
|  | 	unsigned long virt = (unsigned long)addr; | ||||||
|  | 
 | ||||||
|  | 	if (virt >= VMALLOC_START && virt < VMALLOC_END) | ||||||
|  | 		__iounmap(addr); | ||||||
|  | } | ||||||
|  | EXPORT_SYMBOL(at91_iounmap); | ||||||
|  | 
 | ||||||
| #define AT91_DBGU0	0xfffff200 | #define AT91_DBGU0	0xfffff200 | ||||||
| #define AT91_DBGU1	0xffffee00 | #define AT91_DBGU1	0xffffee00 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Jean-Christophe PLAGNIOL-VILLARD
				Jean-Christophe PLAGNIOL-VILLARD