| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2008-08-05 16:14:15 +01:00
										 |  |  |  * arch/arm/mach-at91/include/mach/hardware.h | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  |  * | 
					
						
							|  |  |  |  *  Copyright (C) 2003 SAN People | 
					
						
							|  |  |  |  *  Copyright (C) 2003 ATMEL | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software; you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation; either version 2 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef __ASM_ARCH_HARDWARE_H
 | 
					
						
							|  |  |  | #define __ASM_ARCH_HARDWARE_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm/sizes.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-02 01:43:31 +08:00
										 |  |  | /* DBGU base */ | 
					
						
							|  |  |  | /* rm9200, 9260/9g20, 9261/9g10, 9rl */ | 
					
						
							|  |  |  | #define AT91_BASE_DBGU0	0xfffff200
 | 
					
						
							| 
									
										
										
										
											2012-01-26 14:07:09 +01:00
										 |  |  | /* 9263, 9g45 */ | 
					
						
							| 
									
										
										
										
											2011-11-02 01:43:31 +08:00
										 |  |  | #define AT91_BASE_DBGU1	0xffffee00
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-15 18:44:40 +08:00
										 |  |  | #if defined(CONFIG_ARCH_AT91X40)
 | 
					
						
							|  |  |  | #include <mach/at91x40.h>
 | 
					
						
							|  |  |  | #else
 | 
					
						
							| 
									
										
										
										
											2008-08-05 16:14:15 +01:00
										 |  |  | #include <mach/at91rm9200.h>
 | 
					
						
							|  |  |  | #include <mach/at91sam9260.h>
 | 
					
						
							|  |  |  | #include <mach/at91sam9261.h>
 | 
					
						
							|  |  |  | #include <mach/at91sam9263.h>
 | 
					
						
							|  |  |  | #include <mach/at91sam9rl.h>
 | 
					
						
							| 
									
										
										
										
											2009-06-26 15:36:56 +01:00
										 |  |  | #include <mach/at91sam9g45.h>
 | 
					
						
							| 
									
										
										
										
											2011-03-10 19:08:55 +01:00
										 |  |  | #include <mach/at91sam9x5.h>
 | 
					
						
							| 
									
										
										
										
											2012-04-17 14:26:30 +08:00
										 |  |  | #include <mach/at91sam9n12.h>
 | 
					
						
							| 
									
										
										
										
											2006-11-30 17:16:43 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-04-23 15:28:34 +08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * On all at91 except rm9200 and x40 have the System Controller starts | 
					
						
							|  |  |  |  * at address 0xffffc000 and has a size of 16KiB. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * On rm9200 it's start at 0xfffe4000 of 111KiB with non reserved data starting | 
					
						
							|  |  |  |  * at 0xfffff000 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Removes the individual definitions of AT91_BASE_SYS and | 
					
						
							|  |  |  |  * replaces them with a common version at base 0xfffffc000 and size 16KiB | 
					
						
							|  |  |  |  * and map the same memory space | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define AT91_BASE_SYS	0xffffc000
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-03 01:12:50 +08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * On all at91 have the Advanced Interrupt Controller starts at address | 
					
						
							| 
									
										
										
										
											2011-11-25 09:59:46 +08:00
										 |  |  |  * 0xfffff000 and the Power Management Controller starts at 0xfffffc00 | 
					
						
							| 
									
										
										
										
											2011-11-03 01:12:50 +08:00
										 |  |  |  */ | 
					
						
							|  |  |  | #define AT91_AIC	0xfffff000
 | 
					
						
							| 
									
										
										
										
											2011-11-25 09:59:46 +08:00
										 |  |  | #define AT91_PMC	0xfffffc00
 | 
					
						
							| 
									
										
										
										
											2011-11-03 01:12:50 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-02 01:05:54 +08:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Peripheral identifiers/interrupts. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define AT91_ID_FIQ		0	/* Advanced Interrupt Controller (FIQ) */
 | 
					
						
							|  |  |  | #define AT91_ID_SYS		1	/* System Peripherals */
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-06-04 06:46:26 +01:00
										 |  |  | #ifdef CONFIG_MMU
 | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | /*
 | 
					
						
							| 
									
										
										
										
											2007-02-08 09:00:39 +01:00
										 |  |  |  * Remap the peripherals from address 0xFFF78000 .. 0xFFFFFFFF | 
					
						
							| 
									
										
										
										
											2007-02-22 07:34:56 +01:00
										 |  |  |  * to 0xFEF78000 .. 0xFF000000.  (544Kb) | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2007-02-08 09:00:39 +01:00
										 |  |  | #define AT91_IO_PHYS_BASE	0xFFF78000
 | 
					
						
							| 
									
										
										
										
											2012-09-14 20:10:19 +00:00
										 |  |  | #define AT91_IO_VIRT_BASE	IOMEM(0xFF000000 - AT91_IO_SIZE)
 | 
					
						
							| 
									
										
										
										
											2007-06-04 06:46:26 +01:00
										 |  |  | #else
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Identity mapping for the non MMU case. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define AT91_IO_PHYS_BASE	AT91_BASE_SYS
 | 
					
						
							| 
									
										
										
										
											2012-09-14 20:10:19 +00:00
										 |  |  | #define AT91_IO_VIRT_BASE	IOMEM(AT91_IO_PHYS_BASE)
 | 
					
						
							| 
									
										
										
										
											2007-06-04 06:46:26 +01:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define AT91_IO_SIZE		(0xFFFFFFFF - AT91_IO_PHYS_BASE + 1)
 | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |  /* Convert a physical IO address to virtual IO address */ | 
					
						
							| 
									
										
										
										
											2007-02-08 09:00:39 +01:00
										 |  |  | #define AT91_IO_P2V(x)		((x) - AT91_IO_PHYS_BASE + AT91_IO_VIRT_BASE)
 | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * Virtual to Physical Address mapping for IO devices. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define AT91_VA_BASE_SYS	AT91_IO_P2V(AT91_BASE_SYS)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-19 15:26:51 +01:00
										 |  |  |  /* Internal SRAM is mapped below the IO devices */ | 
					
						
							| 
									
										
										
										
											2006-12-01 11:51:19 +01:00
										 |  |  | #define AT91_SRAM_MAX		SZ_1M
 | 
					
						
							|  |  |  | #define AT91_VIRT_BASE		(AT91_IO_VIRT_BASE - AT91_SRAM_MAX)
 | 
					
						
							| 
									
										
										
										
											2006-06-19 15:26:51 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-12-01 11:51:19 +01:00
										 |  |  | /* External Memory Map */ | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_0	0x10000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_1	0x20000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_2	0x30000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_3	0x40000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_4	0x50000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_5	0x60000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_6	0x70000000
 | 
					
						
							|  |  |  | #define AT91_CHIPSELECT_7	0x80000000
 | 
					
						
							| 
									
										
										
										
											2006-01-09 17:05:41 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Clocks */ | 
					
						
							|  |  |  | #define AT91_SLOW_CLOCK		32768		/* slow clock */
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif
 |