| 
									
										
										
										
											2007-06-04 12:58:30 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Register definitions for the Power Manager (PM) | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #ifndef __ARCH_AVR32_MACH_AT32AP_PM_H__
 | 
					
						
							|  |  |  | #define __ARCH_AVR32_MACH_AT32AP_PM_H__
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* PM register offsets */ | 
					
						
							|  |  |  | #define PM_MCCTRL				0x0000
 | 
					
						
							|  |  |  | #define PM_CKSEL				0x0004
 | 
					
						
							|  |  |  | #define PM_CPU_MASK				0x0008
 | 
					
						
							|  |  |  | #define PM_HSB_MASK				0x000c
 | 
					
						
							|  |  |  | #define PM_PBA_MASK				0x0010
 | 
					
						
							|  |  |  | #define PM_PBB_MASK				0x0014
 | 
					
						
							|  |  |  | #define PM_PLL0					0x0020
 | 
					
						
							|  |  |  | #define PM_PLL1					0x0024
 | 
					
						
							|  |  |  | #define PM_IER					0x0040
 | 
					
						
							|  |  |  | #define PM_IDR					0x0044
 | 
					
						
							|  |  |  | #define PM_IMR					0x0048
 | 
					
						
							|  |  |  | #define PM_ISR					0x004c
 | 
					
						
							|  |  |  | #define PM_ICR					0x0050
 | 
					
						
							|  |  |  | #define PM_GCCTRL(x)				(0x0060 + 4 * (x))
 | 
					
						
							|  |  |  | #define PM_RCAUSE				0x00c0
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bitfields in CKSEL */ | 
					
						
							|  |  |  | #define PM_CPUSEL_OFFSET			0
 | 
					
						
							|  |  |  | #define PM_CPUSEL_SIZE				3
 | 
					
						
							|  |  |  | #define PM_CPUDIV_OFFSET			7
 | 
					
						
							|  |  |  | #define PM_CPUDIV_SIZE				1
 | 
					
						
							|  |  |  | #define PM_HSBSEL_OFFSET			8
 | 
					
						
							|  |  |  | #define PM_HSBSEL_SIZE				3
 | 
					
						
							|  |  |  | #define PM_HSBDIV_OFFSET			15
 | 
					
						
							|  |  |  | #define PM_HSBDIV_SIZE				1
 | 
					
						
							|  |  |  | #define PM_PBASEL_OFFSET			16
 | 
					
						
							|  |  |  | #define PM_PBASEL_SIZE				3
 | 
					
						
							|  |  |  | #define PM_PBADIV_OFFSET			23
 | 
					
						
							|  |  |  | #define PM_PBADIV_SIZE				1
 | 
					
						
							|  |  |  | #define PM_PBBSEL_OFFSET			24
 | 
					
						
							|  |  |  | #define PM_PBBSEL_SIZE				3
 | 
					
						
							|  |  |  | #define PM_PBBDIV_OFFSET			31
 | 
					
						
							|  |  |  | #define PM_PBBDIV_SIZE				1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bitfields in PLL0 */ | 
					
						
							|  |  |  | #define PM_PLLEN_OFFSET				0
 | 
					
						
							|  |  |  | #define PM_PLLEN_SIZE				1
 | 
					
						
							|  |  |  | #define PM_PLLOSC_OFFSET			1
 | 
					
						
							|  |  |  | #define PM_PLLOSC_SIZE				1
 | 
					
						
							|  |  |  | #define PM_PLLOPT_OFFSET			2
 | 
					
						
							|  |  |  | #define PM_PLLOPT_SIZE				3
 | 
					
						
							|  |  |  | #define PM_PLLDIV_OFFSET			8
 | 
					
						
							|  |  |  | #define PM_PLLDIV_SIZE				8
 | 
					
						
							|  |  |  | #define PM_PLLMUL_OFFSET			16
 | 
					
						
							|  |  |  | #define PM_PLLMUL_SIZE				8
 | 
					
						
							|  |  |  | #define PM_PLLCOUNT_OFFSET			24
 | 
					
						
							|  |  |  | #define PM_PLLCOUNT_SIZE			6
 | 
					
						
							|  |  |  | #define PM_PLLTEST_OFFSET			31
 | 
					
						
							|  |  |  | #define PM_PLLTEST_SIZE				1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bitfields in ICR */ | 
					
						
							|  |  |  | #define PM_LOCK0_OFFSET				0
 | 
					
						
							|  |  |  | #define PM_LOCK0_SIZE				1
 | 
					
						
							|  |  |  | #define PM_LOCK1_OFFSET				1
 | 
					
						
							|  |  |  | #define PM_LOCK1_SIZE				1
 | 
					
						
							|  |  |  | #define PM_WAKE_OFFSET				2
 | 
					
						
							|  |  |  | #define PM_WAKE_SIZE				1
 | 
					
						
							|  |  |  | #define PM_CKRDY_OFFSET				5
 | 
					
						
							|  |  |  | #define PM_CKRDY_SIZE				1
 | 
					
						
							|  |  |  | #define PM_MSKRDY_OFFSET			6
 | 
					
						
							|  |  |  | #define PM_MSKRDY_SIZE				1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bitfields in GCCTRL0 */ | 
					
						
							|  |  |  | #define PM_OSCSEL_OFFSET			0
 | 
					
						
							|  |  |  | #define PM_OSCSEL_SIZE				1
 | 
					
						
							|  |  |  | #define PM_PLLSEL_OFFSET			1
 | 
					
						
							|  |  |  | #define PM_PLLSEL_SIZE				1
 | 
					
						
							|  |  |  | #define PM_CEN_OFFSET				2
 | 
					
						
							|  |  |  | #define PM_CEN_SIZE				1
 | 
					
						
							|  |  |  | #define PM_DIVEN_OFFSET				4
 | 
					
						
							|  |  |  | #define PM_DIVEN_SIZE				1
 | 
					
						
							|  |  |  | #define PM_DIV_OFFSET				8
 | 
					
						
							|  |  |  | #define PM_DIV_SIZE				8
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bitfields in RCAUSE */ | 
					
						
							|  |  |  | #define PM_POR_OFFSET				0
 | 
					
						
							|  |  |  | #define PM_POR_SIZE				1
 | 
					
						
							|  |  |  | #define PM_EXT_OFFSET				2
 | 
					
						
							|  |  |  | #define PM_EXT_SIZE				1
 | 
					
						
							|  |  |  | #define PM_WDT_OFFSET				3
 | 
					
						
							|  |  |  | #define PM_WDT_SIZE				1
 | 
					
						
							|  |  |  | #define PM_NTAE_OFFSET				4
 | 
					
						
							|  |  |  | #define PM_NTAE_SIZE				1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Bit manipulation macros */ | 
					
						
							|  |  |  | #define PM_BIT(name)					\
 | 
					
						
							|  |  |  | 	(1 << PM_##name##_OFFSET) | 
					
						
							|  |  |  | #define PM_BF(name,value)				\
 | 
					
						
							|  |  |  | 	(((value) & ((1 << PM_##name##_SIZE) - 1))	\ | 
					
						
							|  |  |  | 	 << PM_##name##_OFFSET) | 
					
						
							|  |  |  | #define PM_BFEXT(name,value)				\
 | 
					
						
							|  |  |  | 	(((value) >> PM_##name##_OFFSET)		\ | 
					
						
							|  |  |  | 	 & ((1 << PM_##name##_SIZE) - 1)) | 
					
						
							|  |  |  | #define PM_BFINS(name,value,old)\
 | 
					
						
							|  |  |  | 	(((old) & ~(((1 << PM_##name##_SIZE) - 1)	\ | 
					
						
							|  |  |  | 		    << PM_##name##_OFFSET))		\ | 
					
						
							|  |  |  | 	 | PM_BF(name,value)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Register access macros */ | 
					
						
							|  |  |  | #define pm_readl(reg)							\
 | 
					
						
							| 
									
										
										
										
											2008-07-31 16:06:58 +02:00
										 |  |  | 	__raw_readl((void __iomem __force *)PM_BASE + PM_##reg) | 
					
						
							| 
									
										
										
										
											2007-06-04 12:58:30 +02:00
										 |  |  | #define pm_writel(reg,value)						\
 | 
					
						
							| 
									
										
										
										
											2008-07-31 16:06:58 +02:00
										 |  |  | 	__raw_writel((value), (void __iomem __force *)PM_BASE + PM_##reg) | 
					
						
							| 
									
										
										
										
											2007-06-04 12:58:30 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */
 |