Blame view

kernel/linux-imx6_3.14.28/arch/avr32/mach-at32ap/pm.h 2.98 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  /*
   * 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)							\
  	__raw_readl((void __iomem __force *)PM_BASE + PM_##reg)
  #define pm_writel(reg,value)						\
  	__raw_writel((value), (void __iomem __force *)PM_BASE + PM_##reg)
  
  #endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */