Blame view

arch/arm/mach-omap2/prcm-common.h 17.6 KB
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
1
2
3
4
5
6
  #ifndef __ARCH_ASM_MACH_OMAP2_PRCM_COMMON_H
  #define __ARCH_ASM_MACH_OMAP2_PRCM_COMMON_H
  
  /*
   * OMAP2/3 PRCM base and module definitions
   *
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
7
   * Copyright (C) 2007-2009, 2011 Texas Instruments, Inc.
77772d5f7   Rajendra Nayak   ARM: OMAP4: PM: P...
8
   * Copyright (C) 2007-2009 Nokia Corporation
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
9
10
11
12
13
14
15
   *
   * Written by Paul Walmsley
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License version 2 as
   * published by the Free Software Foundation.
   */
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  /* Module offsets from both CM_BASE & PRM_BASE */
  
  /*
   * Offsets that are the same on 24xx and 34xx
   *
   * Technically, in terms of the TRM, OCP_MOD is 34xx only; PLL_MOD is
   * CCR_MOD on 3430; and GFX_MOD only exists < 3430ES2.
   */
  #define OCP_MOD						0x000
  #define MPU_MOD						0x100
  #define CORE_MOD					0x200
  #define GFX_MOD						0x300
  #define WKUP_MOD					0x400
  #define PLL_MOD						0x500
  
  
  /* Chip-specific module offsets */
c2d43e39c   Tony Lindgren   ARM: OMAP: SRAM: ...
33
  #define OMAP24XX_GR_MOD					OCP_MOD
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  #define OMAP24XX_DSP_MOD				0x800
  
  #define OMAP2430_MDM_MOD				0xc00
  
  /* IVA2 module is < base on 3430 */
  #define OMAP3430_IVA2_MOD				-0x800
  #define OMAP3430ES2_SGX_MOD				GFX_MOD
  #define OMAP3430_CCR_MOD				PLL_MOD
  #define OMAP3430_DSS_MOD				0x600
  #define OMAP3430_CAM_MOD				0x700
  #define OMAP3430_PER_MOD				0x800
  #define OMAP3430_EMU_MOD				0x900
  #define OMAP3430_GR_MOD					0xa00
  #define OMAP3430_NEON_MOD				0xb00
  #define OMAP3430ES2_USBHOST_MOD				0xc00
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
49
50
51
52
  /* 24XX register bits shared between CM & PRM registers */
  
  /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
  #define OMAP2420_EN_MMC_SHIFT				26
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
53
  #define OMAP2420_EN_MMC_MASK				(1 << 26)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
54
  #define OMAP24XX_EN_UART2_SHIFT				22
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
55
  #define OMAP24XX_EN_UART2_MASK				(1 << 22)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
56
  #define OMAP24XX_EN_UART1_SHIFT				21
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
57
  #define OMAP24XX_EN_UART1_MASK				(1 << 21)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
58
  #define OMAP24XX_EN_MCSPI2_SHIFT			18
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
59
  #define OMAP24XX_EN_MCSPI2_MASK				(1 << 18)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
60
  #define OMAP24XX_EN_MCSPI1_SHIFT			17
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
61
  #define OMAP24XX_EN_MCSPI1_MASK				(1 << 17)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
62
  #define OMAP24XX_EN_MCBSP2_SHIFT			16
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
63
  #define OMAP24XX_EN_MCBSP2_MASK				(1 << 16)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
64
  #define OMAP24XX_EN_MCBSP1_SHIFT			15
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
65
  #define OMAP24XX_EN_MCBSP1_MASK				(1 << 15)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
66
  #define OMAP24XX_EN_GPT12_SHIFT				14
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
67
  #define OMAP24XX_EN_GPT12_MASK				(1 << 14)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
68
  #define OMAP24XX_EN_GPT11_SHIFT				13
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
69
  #define OMAP24XX_EN_GPT11_MASK				(1 << 13)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
70
  #define OMAP24XX_EN_GPT10_SHIFT				12
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
71
  #define OMAP24XX_EN_GPT10_MASK				(1 << 12)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
72
  #define OMAP24XX_EN_GPT9_SHIFT				11
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
73
  #define OMAP24XX_EN_GPT9_MASK				(1 << 11)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
74
  #define OMAP24XX_EN_GPT8_SHIFT				10
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
75
  #define OMAP24XX_EN_GPT8_MASK				(1 << 10)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
76
  #define OMAP24XX_EN_GPT7_SHIFT				9
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
77
  #define OMAP24XX_EN_GPT7_MASK				(1 << 9)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
78
  #define OMAP24XX_EN_GPT6_SHIFT				8
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
79
  #define OMAP24XX_EN_GPT6_MASK				(1 << 8)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
80
  #define OMAP24XX_EN_GPT5_SHIFT				7
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
81
  #define OMAP24XX_EN_GPT5_MASK				(1 << 7)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
82
  #define OMAP24XX_EN_GPT4_SHIFT				6
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
83
  #define OMAP24XX_EN_GPT4_MASK				(1 << 6)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
84
  #define OMAP24XX_EN_GPT3_SHIFT				5
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
85
  #define OMAP24XX_EN_GPT3_MASK				(1 << 5)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
86
  #define OMAP24XX_EN_GPT2_SHIFT				4
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
87
  #define OMAP24XX_EN_GPT2_MASK				(1 << 4)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
88
  #define OMAP2420_EN_VLYNQ_SHIFT				3
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
89
  #define OMAP2420_EN_VLYNQ_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
90
91
92
  
  /* CM_FCLKEN2_CORE, CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
  #define OMAP2430_EN_GPIO5_SHIFT				10
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
93
  #define OMAP2430_EN_GPIO5_MASK				(1 << 10)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
94
  #define OMAP2430_EN_MCSPI3_SHIFT			9
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
95
  #define OMAP2430_EN_MCSPI3_MASK				(1 << 9)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
96
  #define OMAP2430_EN_MMCHS2_SHIFT			8
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
97
  #define OMAP2430_EN_MMCHS2_MASK				(1 << 8)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
98
  #define OMAP2430_EN_MMCHS1_SHIFT			7
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
99
  #define OMAP2430_EN_MMCHS1_MASK				(1 << 7)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
100
  #define OMAP24XX_EN_UART3_SHIFT				2
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
101
  #define OMAP24XX_EN_UART3_MASK				(1 << 2)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
102
  #define OMAP24XX_EN_USB_SHIFT				0
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
103
  #define OMAP24XX_EN_USB_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
104
105
106
  
  /* CM_ICLKEN2_CORE, PM_WKEN2_CORE shared bits */
  #define OMAP2430_EN_MDM_INTC_SHIFT			11
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
107
  #define OMAP2430_EN_MDM_INTC_MASK			(1 << 11)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
108
  #define OMAP2430_EN_USBHS_SHIFT				6
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
109
  #define OMAP2430_EN_USBHS_MASK				(1 << 6)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
110
111
  
  /* CM_IDLEST1_CORE, PM_WKST1_CORE shared bits */
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
112
113
114
115
116
117
118
119
120
121
  #define OMAP2420_ST_MMC_SHIFT				26
  #define OMAP2420_ST_MMC_MASK				(1 << 26)
  #define OMAP24XX_ST_UART2_SHIFT				22
  #define OMAP24XX_ST_UART2_MASK				(1 << 22)
  #define OMAP24XX_ST_UART1_SHIFT				21
  #define OMAP24XX_ST_UART1_MASK				(1 << 21)
  #define OMAP24XX_ST_MCSPI2_SHIFT			18
  #define OMAP24XX_ST_MCSPI2_MASK				(1 << 18)
  #define OMAP24XX_ST_MCSPI1_SHIFT			17
  #define OMAP24XX_ST_MCSPI1_MASK				(1 << 17)
3cb72fa4f   Charulatha V   OMAP2420: hwmod d...
122
123
124
125
  #define OMAP24XX_ST_MCBSP2_SHIFT			16
  #define OMAP24XX_ST_MCBSP2_MASK				(1 << 16)
  #define OMAP24XX_ST_MCBSP1_SHIFT			15
  #define OMAP24XX_ST_MCBSP1_MASK				(1 << 15)
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
  #define OMAP24XX_ST_GPT12_SHIFT				14
  #define OMAP24XX_ST_GPT12_MASK				(1 << 14)
  #define OMAP24XX_ST_GPT11_SHIFT				13
  #define OMAP24XX_ST_GPT11_MASK				(1 << 13)
  #define OMAP24XX_ST_GPT10_SHIFT				12
  #define OMAP24XX_ST_GPT10_MASK				(1 << 12)
  #define OMAP24XX_ST_GPT9_SHIFT				11
  #define OMAP24XX_ST_GPT9_MASK				(1 << 11)
  #define OMAP24XX_ST_GPT8_SHIFT				10
  #define OMAP24XX_ST_GPT8_MASK				(1 << 10)
  #define OMAP24XX_ST_GPT7_SHIFT				9
  #define OMAP24XX_ST_GPT7_MASK				(1 << 9)
  #define OMAP24XX_ST_GPT6_SHIFT				8
  #define OMAP24XX_ST_GPT6_MASK				(1 << 8)
  #define OMAP24XX_ST_GPT5_SHIFT				7
  #define OMAP24XX_ST_GPT5_MASK				(1 << 7)
  #define OMAP24XX_ST_GPT4_SHIFT				6
  #define OMAP24XX_ST_GPT4_MASK				(1 << 6)
  #define OMAP24XX_ST_GPT3_SHIFT				5
  #define OMAP24XX_ST_GPT3_MASK				(1 << 5)
  #define OMAP24XX_ST_GPT2_SHIFT				4
  #define OMAP24XX_ST_GPT2_MASK				(1 << 4)
  #define OMAP2420_ST_VLYNQ_SHIFT				3
  #define OMAP2420_ST_VLYNQ_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
150
151
  
  /* CM_IDLEST2_CORE, PM_WKST2_CORE shared bits */
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
  #define OMAP2430_ST_MDM_INTC_SHIFT			11
  #define OMAP2430_ST_MDM_INTC_MASK			(1 << 11)
  #define OMAP2430_ST_GPIO5_SHIFT				10
  #define OMAP2430_ST_GPIO5_MASK				(1 << 10)
  #define OMAP2430_ST_MCSPI3_SHIFT			9
  #define OMAP2430_ST_MCSPI3_MASK				(1 << 9)
  #define OMAP2430_ST_MMCHS2_SHIFT			8
  #define OMAP2430_ST_MMCHS2_MASK				(1 << 8)
  #define OMAP2430_ST_MMCHS1_SHIFT			7
  #define OMAP2430_ST_MMCHS1_MASK				(1 << 7)
  #define OMAP2430_ST_USBHS_SHIFT				6
  #define OMAP2430_ST_USBHS_MASK				(1 << 6)
  #define OMAP24XX_ST_UART3_SHIFT				2
  #define OMAP24XX_ST_UART3_MASK				(1 << 2)
  #define OMAP24XX_ST_USB_SHIFT				0
  #define OMAP24XX_ST_USB_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
168
169
170
  
  /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
  #define OMAP24XX_EN_GPIOS_SHIFT				2
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
171
  #define OMAP24XX_EN_GPIOS_MASK				(1 << 2)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
172
  #define OMAP24XX_EN_GPT1_SHIFT				0
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
173
  #define OMAP24XX_EN_GPT1_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
174
175
  
  /* PM_WKST_WKUP, CM_IDLEST_WKUP shared bits */
c2015dc88   Paul Walmsley   OMAP2: PRCM: fix ...
176
177
178
179
  #define OMAP24XX_ST_GPIOS_SHIFT				2
  #define OMAP24XX_ST_GPIOS_MASK				(1 << 2)
  #define OMAP24XX_ST_GPT1_SHIFT				0
  #define OMAP24XX_ST_GPT1_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
180
181
  
  /* CM_IDLEST_MDM and PM_WKST_MDM shared bits */
c2015dc88   Paul Walmsley   OMAP2: PRCM: fix ...
182
183
  #define OMAP2430_ST_MDM_SHIFT				0
  #define OMAP2430_ST_MDM_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
184
185
186
187
188
189
190
191
192
  
  
  /* 3430 register bits shared between CM & PRM registers */
  
  /* CM_REVISION, PRM_REVISION shared bits */
  #define OMAP3430_REV_SHIFT				0
  #define OMAP3430_REV_MASK				(0xff << 0)
  
  /* CM_SYSCONFIG, PRM_SYSCONFIG shared bits */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
193
  #define OMAP3430_AUTOIDLE_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
194
195
  
  /* CM_FCLKEN1_CORE, CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
b163605e3   Paul Walmsley   OMAP3: hwmod data...
196
197
  #define OMAP3430_EN_MMC3_MASK				(1 << 30)
  #define OMAP3430_EN_MMC3_SHIFT				30
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
198
  #define OMAP3430_EN_MMC2_MASK				(1 << 25)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
199
  #define OMAP3430_EN_MMC2_SHIFT				25
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
200
  #define OMAP3430_EN_MMC1_MASK				(1 << 24)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
201
  #define OMAP3430_EN_MMC1_SHIFT				24
4bf90f657   Kyle Manna   ARM: OMAP: hwmod ...
202
203
  #define OMAP3430_EN_UART4_MASK				(1 << 23)
  #define OMAP3430_EN_UART4_SHIFT				23
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
204
  #define OMAP3430_EN_MCSPI4_MASK				(1 << 21)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
205
  #define OMAP3430_EN_MCSPI4_SHIFT			21
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
206
  #define OMAP3430_EN_MCSPI3_MASK				(1 << 20)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
207
  #define OMAP3430_EN_MCSPI3_SHIFT			20
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
208
  #define OMAP3430_EN_MCSPI2_MASK				(1 << 19)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
209
  #define OMAP3430_EN_MCSPI2_SHIFT			19
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
210
  #define OMAP3430_EN_MCSPI1_MASK				(1 << 18)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
211
  #define OMAP3430_EN_MCSPI1_SHIFT			18
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
212
  #define OMAP3430_EN_I2C3_MASK				(1 << 17)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
213
  #define OMAP3430_EN_I2C3_SHIFT				17
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
214
  #define OMAP3430_EN_I2C2_MASK				(1 << 16)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
215
  #define OMAP3430_EN_I2C2_SHIFT				16
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
216
  #define OMAP3430_EN_I2C1_MASK				(1 << 15)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
217
  #define OMAP3430_EN_I2C1_SHIFT				15
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
218
  #define OMAP3430_EN_UART2_MASK				(1 << 14)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
219
  #define OMAP3430_EN_UART2_SHIFT				14
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
220
  #define OMAP3430_EN_UART1_MASK				(1 << 13)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
221
  #define OMAP3430_EN_UART1_SHIFT				13
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
222
  #define OMAP3430_EN_GPT11_MASK				(1 << 12)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
223
  #define OMAP3430_EN_GPT11_SHIFT				12
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
224
  #define OMAP3430_EN_GPT10_MASK				(1 << 11)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
225
  #define OMAP3430_EN_GPT10_SHIFT				11
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
226
  #define OMAP3430_EN_MCBSP5_MASK				(1 << 10)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
227
  #define OMAP3430_EN_MCBSP5_SHIFT			10
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
228
  #define OMAP3430_EN_MCBSP1_MASK				(1 << 9)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
229
  #define OMAP3430_EN_MCBSP1_SHIFT			9
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
230
  #define OMAP3430_EN_FSHOSTUSB_MASK			(1 << 5)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
231
  #define OMAP3430_EN_FSHOSTUSB_SHIFT			5
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
232
  #define OMAP3430_EN_D2D_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
233
234
235
  #define OMAP3430_EN_D2D_SHIFT				3
  
  /* CM_ICLKEN1_CORE, PM_WKEN1_CORE shared bits */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
236
237
  #define OMAP3430_EN_HSOTGUSB_MASK			(1 << 4)
  #define OMAP3430_EN_HSOTGUSB_SHIFT			4
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
238
239
  
  /* PM_WKST1_CORE, CM_IDLEST1_CORE shared bits */
b163605e3   Paul Walmsley   OMAP3: hwmod data...
240
241
  #define OMAP3430_ST_MMC3_SHIFT				30
  #define OMAP3430_ST_MMC3_MASK				(1 << 30)
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
  #define OMAP3430_ST_MMC2_SHIFT				25
  #define OMAP3430_ST_MMC2_MASK				(1 << 25)
  #define OMAP3430_ST_MMC1_SHIFT				24
  #define OMAP3430_ST_MMC1_MASK				(1 << 24)
  #define OMAP3430_ST_MCSPI4_SHIFT			21
  #define OMAP3430_ST_MCSPI4_MASK				(1 << 21)
  #define OMAP3430_ST_MCSPI3_SHIFT			20
  #define OMAP3430_ST_MCSPI3_MASK				(1 << 20)
  #define OMAP3430_ST_MCSPI2_SHIFT			19
  #define OMAP3430_ST_MCSPI2_MASK				(1 << 19)
  #define OMAP3430_ST_MCSPI1_SHIFT			18
  #define OMAP3430_ST_MCSPI1_MASK				(1 << 18)
  #define OMAP3430_ST_I2C3_SHIFT				17
  #define OMAP3430_ST_I2C3_MASK				(1 << 17)
  #define OMAP3430_ST_I2C2_SHIFT				16
  #define OMAP3430_ST_I2C2_MASK				(1 << 16)
  #define OMAP3430_ST_I2C1_SHIFT				15
  #define OMAP3430_ST_I2C1_MASK				(1 << 15)
  #define OMAP3430_ST_UART2_SHIFT				14
  #define OMAP3430_ST_UART2_MASK				(1 << 14)
  #define OMAP3430_ST_UART1_SHIFT				13
  #define OMAP3430_ST_UART1_MASK				(1 << 13)
  #define OMAP3430_ST_GPT11_SHIFT				12
  #define OMAP3430_ST_GPT11_MASK				(1 << 12)
  #define OMAP3430_ST_GPT10_SHIFT				11
  #define OMAP3430_ST_GPT10_MASK				(1 << 11)
  #define OMAP3430_ST_MCBSP5_SHIFT			10
  #define OMAP3430_ST_MCBSP5_MASK				(1 << 10)
  #define OMAP3430_ST_MCBSP1_SHIFT			9
  #define OMAP3430_ST_MCBSP1_MASK				(1 << 9)
  #define OMAP3430ES1_ST_FSHOSTUSB_SHIFT			5
  #define OMAP3430ES1_ST_FSHOSTUSB_MASK			(1 << 5)
  #define OMAP3430ES1_ST_HSOTGUSB_SHIFT			4
  #define OMAP3430ES1_ST_HSOTGUSB_MASK			(1 << 4)
  #define OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT		5
  #define OMAP3430ES2_ST_HSOTGUSB_IDLE_MASK		(1 << 5)
  #define OMAP3430ES2_ST_HSOTGUSB_STDBY_SHIFT		4
  #define OMAP3430ES2_ST_HSOTGUSB_STDBY_MASK		(1 << 4)
  #define OMAP3430_ST_D2D_SHIFT				3
  #define OMAP3430_ST_D2D_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
282
283
  
  /* CM_FCLKEN_WKUP, CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
284
  #define OMAP3430_EN_GPIO1_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
285
  #define OMAP3430_EN_GPIO1_SHIFT				3
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
286
  #define OMAP3430_EN_GPT12_MASK				(1 << 1)
8bd229492   Kevin Hilman   OMAP2/3: PM: push...
287
  #define OMAP3430_EN_GPT12_SHIFT				1
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
288
  #define OMAP3430_EN_GPT1_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
289
290
291
  #define OMAP3430_EN_GPT1_SHIFT				0
  
  /* CM_FCLKEN_WKUP, PM_WKEN_WKUP shared bits */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
292
  #define OMAP3430_EN_SR2_MASK				(1 << 7)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
293
  #define OMAP3430_EN_SR2_SHIFT				7
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
294
  #define OMAP3430_EN_SR1_MASK				(1 << 6)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
295
296
297
  #define OMAP3430_EN_SR1_SHIFT				6
  
  /* CM_ICLKEN_WKUP, PM_WKEN_WKUP shared bits */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
298
  #define OMAP3430_EN_GPT12_MASK				(1 << 1)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
299
300
301
  #define OMAP3430_EN_GPT12_SHIFT				1
  
  /* CM_IDLEST_WKUP, PM_WKST_WKUP shared bits */
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
302
303
304
305
306
307
308
309
310
311
  #define OMAP3430_ST_SR2_SHIFT				7
  #define OMAP3430_ST_SR2_MASK				(1 << 7)
  #define OMAP3430_ST_SR1_SHIFT				6
  #define OMAP3430_ST_SR1_MASK				(1 << 6)
  #define OMAP3430_ST_GPIO1_SHIFT				3
  #define OMAP3430_ST_GPIO1_MASK				(1 << 3)
  #define OMAP3430_ST_GPT12_SHIFT				1
  #define OMAP3430_ST_GPT12_MASK				(1 << 1)
  #define OMAP3430_ST_GPT1_SHIFT				0
  #define OMAP3430_ST_GPT1_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
312
313
314
315
316
317
  
  /*
   * CM_SLEEPDEP_GFX, CM_SLEEPDEP_DSS, CM_SLEEPDEP_CAM,
   * CM_SLEEPDEP_PER, PM_WKDEP_IVA2, PM_WKDEP_GFX,
   * PM_WKDEP_DSS, PM_WKDEP_CAM, PM_WKDEP_PER, PM_WKDEP_NEON shared bits
   */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
318
  #define OMAP3430_EN_MPU_MASK				(1 << 1)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
319
320
321
  #define OMAP3430_EN_MPU_SHIFT				1
  
  /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER shared bits */
046465b76   Kevin Hilman   OMAP2/3: UART: ad...
322
323
324
  
  #define OMAP3630_EN_UART4_MASK				(1 << 18)
  #define OMAP3630_EN_UART4_SHIFT				18
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
325
  #define OMAP3430_EN_GPIO6_MASK				(1 << 17)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
326
  #define OMAP3430_EN_GPIO6_SHIFT				17
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
327
  #define OMAP3430_EN_GPIO5_MASK				(1 << 16)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
328
  #define OMAP3430_EN_GPIO5_SHIFT				16
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
329
  #define OMAP3430_EN_GPIO4_MASK				(1 << 15)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
330
  #define OMAP3430_EN_GPIO4_SHIFT				15
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
331
  #define OMAP3430_EN_GPIO3_MASK				(1 << 14)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
332
  #define OMAP3430_EN_GPIO3_SHIFT				14
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
333
  #define OMAP3430_EN_GPIO2_MASK				(1 << 13)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
334
  #define OMAP3430_EN_GPIO2_SHIFT				13
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
335
  #define OMAP3430_EN_UART3_MASK				(1 << 11)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
336
  #define OMAP3430_EN_UART3_SHIFT				11
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
337
  #define OMAP3430_EN_GPT9_MASK				(1 << 10)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
338
  #define OMAP3430_EN_GPT9_SHIFT				10
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
339
  #define OMAP3430_EN_GPT8_MASK				(1 << 9)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
340
  #define OMAP3430_EN_GPT8_SHIFT				9
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
341
  #define OMAP3430_EN_GPT7_MASK				(1 << 8)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
342
  #define OMAP3430_EN_GPT7_SHIFT				8
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
343
  #define OMAP3430_EN_GPT6_MASK				(1 << 7)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
344
  #define OMAP3430_EN_GPT6_SHIFT				7
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
345
  #define OMAP3430_EN_GPT5_MASK				(1 << 6)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
346
  #define OMAP3430_EN_GPT5_SHIFT				6
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
347
  #define OMAP3430_EN_GPT4_MASK				(1 << 5)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
348
  #define OMAP3430_EN_GPT4_SHIFT				5
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
349
  #define OMAP3430_EN_GPT3_MASK				(1 << 4)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
350
  #define OMAP3430_EN_GPT3_SHIFT				4
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
351
  #define OMAP3430_EN_GPT2_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
352
353
354
355
356
  #define OMAP3430_EN_GPT2_SHIFT				3
  
  /* CM_FCLKEN_PER, CM_ICLKEN_PER, PM_WKEN_PER, PM_WKST_PER shared bits */
  /* XXX Possible TI documentation bug: should the PM_WKST_PER EN_* bits
   * be ST_* bits instead? */
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
357
  #define OMAP3430_EN_MCBSP4_MASK				(1 << 2)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
358
  #define OMAP3430_EN_MCBSP4_SHIFT			2
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
359
  #define OMAP3430_EN_MCBSP3_MASK				(1 << 1)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
360
  #define OMAP3430_EN_MCBSP3_SHIFT			1
2fd0f75cb   Paul Walmsley   OMAP2+ PRCM: conv...
361
  #define OMAP3430_EN_MCBSP2_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
362
363
364
  #define OMAP3430_EN_MCBSP2_SHIFT			0
  
  /* CM_IDLEST_PER, PM_WKST_PER shared bits */
e58636890   Govindraj.R   OMAP3: PRCM: Cons...
365
366
  #define OMAP3630_ST_UART4_SHIFT				18
  #define OMAP3630_ST_UART4_MASK				(1 << 18)
da0747d4f   Paul Walmsley   [ARM] OMAP2 PRCM:...
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
  #define OMAP3430_ST_GPIO6_SHIFT				17
  #define OMAP3430_ST_GPIO6_MASK				(1 << 17)
  #define OMAP3430_ST_GPIO5_SHIFT				16
  #define OMAP3430_ST_GPIO5_MASK				(1 << 16)
  #define OMAP3430_ST_GPIO4_SHIFT				15
  #define OMAP3430_ST_GPIO4_MASK				(1 << 15)
  #define OMAP3430_ST_GPIO3_SHIFT				14
  #define OMAP3430_ST_GPIO3_MASK				(1 << 14)
  #define OMAP3430_ST_GPIO2_SHIFT				13
  #define OMAP3430_ST_GPIO2_MASK				(1 << 13)
  #define OMAP3430_ST_UART3_SHIFT				11
  #define OMAP3430_ST_UART3_MASK				(1 << 11)
  #define OMAP3430_ST_GPT9_SHIFT				10
  #define OMAP3430_ST_GPT9_MASK				(1 << 10)
  #define OMAP3430_ST_GPT8_SHIFT				9
  #define OMAP3430_ST_GPT8_MASK				(1 << 9)
  #define OMAP3430_ST_GPT7_SHIFT				8
  #define OMAP3430_ST_GPT7_MASK				(1 << 8)
  #define OMAP3430_ST_GPT6_SHIFT				7
  #define OMAP3430_ST_GPT6_MASK				(1 << 7)
  #define OMAP3430_ST_GPT5_SHIFT				6
  #define OMAP3430_ST_GPT5_MASK				(1 << 6)
  #define OMAP3430_ST_GPT4_SHIFT				5
  #define OMAP3430_ST_GPT4_MASK				(1 << 5)
  #define OMAP3430_ST_GPT3_SHIFT				4
  #define OMAP3430_ST_GPT3_MASK				(1 << 4)
  #define OMAP3430_ST_GPT2_SHIFT				3
  #define OMAP3430_ST_GPT2_MASK				(1 << 3)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
395
396
  
  /* CM_SLEEPDEP_PER, PM_WKDEP_IVA2, PM_WKDEP_MPU, PM_WKDEP_PER shared bits */
ecb24aa12   Paul Walmsley   ARM: OMAP: Powerd...
397
398
  #define OMAP3430_EN_CORE_SHIFT				0
  #define OMAP3430_EN_CORE_MASK				(1 << 0)
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
399

d198b514b   Paul Walmsley   OMAP4: PRCM: reor...
400
401
402
403
404
405
  
  /*
   * MAX_MODULE_HARDRESET_WAIT: Maximum microseconds to wait for an OMAP
   * submodule to exit hardreset
   */
  #define MAX_MODULE_HARDRESET_WAIT		10000
59fb659b0   Paul Walmsley   OMAP2/3: PRCM: sp...
406
407
408
409
  # ifndef __ASSEMBLER__
  extern void __iomem *prm_base;
  extern void __iomem *cm_base;
  extern void __iomem *cm2_base;
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
  
  /**
   * struct omap_prcm_irq - describes a PRCM interrupt bit
   * @name: a short name describing the interrupt type, e.g. "wkup" or "io"
   * @offset: the bit shift of the interrupt inside the IRQ{ENABLE,STATUS} regs
   * @priority: should this interrupt be handled before @priority=false IRQs?
   *
   * Describes interrupt bits inside the PRM_IRQ{ENABLE,STATUS}_MPU* registers.
   * On systems with multiple PRM MPU IRQ registers, the bitfields read from
   * the registers are concatenated, so @offset could be > 31 on these systems -
   * see omap_prm_irq_handler() for more details.  I/O ring interrupts should
   * have @priority set to true.
   */
  struct omap_prcm_irq {
  	const char *name;
  	unsigned int offset;
  	bool priority;
  };
  
  /**
   * struct omap_prcm_irq_setup - PRCM interrupt controller details
   * @ack: PRM register offset for the first PRM_IRQSTATUS_MPU register
   * @mask: PRM register offset for the first PRM_IRQENABLE_MPU register
   * @nr_regs: number of PRM_IRQ{STATUS,ENABLE}_MPU* registers
   * @nr_irqs: number of entries in the @irqs array
   * @irqs: ptr to an array of PRCM interrupt bits (see @nr_irqs)
   * @irq: MPU IRQ asserted when a PRCM interrupt arrives
   * @read_pending_irqs: fn ptr to determine if any PRCM IRQs are pending
   * @ocp_barrier: fn ptr to force buffered PRM writes to complete
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
439
440
441
   * @save_and_clear_irqen: fn ptr to save and clear IRQENABLE regs
   * @restore_irqen: fn ptr to save and clear IRQENABLE regs
   * @saved_mask: IRQENABLE regs are saved here during suspend
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
442
443
   * @priority_mask: 1 bit per IRQ, set to 1 if omap_prcm_irq.priority = true
   * @base_irq: base dynamic IRQ number, returned from irq_alloc_descs() in init
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
444
445
   * @suspended: set to true after Linux suspend code has called our ->prepare()
   * @suspend_save_flag: set to true after IRQ masks have been saved and disabled
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
446
   *
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
447
448
   * @saved_mask, @priority_mask, @base_irq, @suspended, and
   * @suspend_save_flag are populated dynamically, and are not to be
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
449
450
451
452
453
454
455
456
457
458
459
   * specified in static initializers.
   */
  struct omap_prcm_irq_setup {
  	u16 ack;
  	u16 mask;
  	u8 nr_regs;
  	u8 nr_irqs;
  	const struct omap_prcm_irq *irqs;
  	int irq;
  	void (*read_pending_irqs)(unsigned long *events);
  	void (*ocp_barrier)(void);
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
460
461
462
  	void (*save_and_clear_irqen)(u32 *saved_mask);
  	void (*restore_irqen)(u32 *saved_mask);
  	u32 *saved_mask;
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
463
464
  	u32 *priority_mask;
  	int base_irq;
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
465
466
  	bool suspended;
  	bool suspend_save_flag;
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
467
468
469
470
471
472
473
474
475
476
477
478
479
  };
  
  /* OMAP_PRCM_IRQ: convenience macro for creating struct omap_prcm_irq records */
  #define OMAP_PRCM_IRQ(_name, _offset, _priority) {	\
  	.name = _name,					\
  	.offset = _offset,				\
  	.priority = _priority				\
  	}
  
  extern void omap_prcm_irq_cleanup(void);
  extern int omap_prcm_register_chain_handler(
  	struct omap_prcm_irq_setup *irq_setup);
  extern int omap_prcm_event_to_irq(const char *event);
91285b6fa   Tero Kristo   ARM: OMAP: PRCM: ...
480
481
  extern void omap_prcm_irq_prepare(void);
  extern void omap_prcm_irq_complete(void);
0a84a91c3   Tero Kristo   ARM: OMAP: PRCM: ...
482

59fb659b0   Paul Walmsley   OMAP2/3: PRCM: sp...
483
  # endif
69d88a00a   Paul Walmsley   ARM: OMAP2: Add c...
484
  #endif