2 * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
4 * The code contained herein is licensed under the GNU General Public
5 * License. You may obtain a copy of the GNU General Public License
6 * Version 2 or later at the following locations:
8 * http://www.opensource.org/licenses/gpl-license.html
9 * http://www.gnu.org/copyleft/gpl.html
11 #ifndef __ARCH_ARM_MACH_MX51_CRM_REGS_H__
12 #define __ARCH_ARM_MACH_MX51_CRM_REGS_H__
14 #define MX51_CCM_BASE MX51_IO_ADDRESS(MX51_CCM_BASE_ADDR)
15 #define MX51_DPLL1_BASE MX51_IO_ADDRESS(MX51_PLL1_BASE_ADDR)
16 #define MX51_DPLL2_BASE MX51_IO_ADDRESS(MX51_PLL2_BASE_ADDR)
17 #define MX51_DPLL3_BASE MX51_IO_ADDRESS(MX51_PLL3_BASE_ADDR)
18 #define MX51_CORTEXA8_BASE MX51_IO_ADDRESS(MX51_ARM_BASE_ADDR)
19 #define MX51_GPC_BASE MX51_IO_ADDRESS(MX51_GPC_BASE_ADDR)
22 #define MX53_DPLL4_BASE MX53_IO_ADDRESS(MX53_PLL3_BASE_ADDR)
24 /* PLL Register Offsets */
25 #define MXC_PLL_DP_CTL 0x00
26 #define MXC_PLL_DP_CONFIG 0x04
27 #define MXC_PLL_DP_OP 0x08
28 #define MXC_PLL_DP_MFD 0x0C
29 #define MXC_PLL_DP_MFN 0x10
30 #define MXC_PLL_DP_MFNMINUS 0x14
31 #define MXC_PLL_DP_MFNPLUS 0x18
32 #define MXC_PLL_DP_HFS_OP 0x1C
33 #define MXC_PLL_DP_HFS_MFD 0x20
34 #define MXC_PLL_DP_HFS_MFN 0x24
35 #define MXC_PLL_DP_MFN_TOGC 0x28
36 #define MXC_PLL_DP_DESTAT 0x2c
38 /* PLL Register Bit definitions */
39 #define MXC_PLL_DP_CTL_MUL_CTRL 0x2000
40 #define MXC_PLL_DP_CTL_DPDCK0_2_EN 0x1000
41 #define MXC_PLL_DP_CTL_DPDCK0_2_OFFSET 12
42 #define MXC_PLL_DP_CTL_ADE 0x800
43 #define MXC_PLL_DP_CTL_REF_CLK_DIV 0x400
44 #define MXC_PLL_DP_CTL_REF_CLK_SEL_MASK (3 << 8)
45 #define MXC_PLL_DP_CTL_REF_CLK_SEL_OFFSET 8
46 #define MXC_PLL_DP_CTL_HFSM 0x80
47 #define MXC_PLL_DP_CTL_PRE 0x40
48 #define MXC_PLL_DP_CTL_UPEN 0x20
49 #define MXC_PLL_DP_CTL_RST 0x10
50 #define MXC_PLL_DP_CTL_RCP 0x8
51 #define MXC_PLL_DP_CTL_PLM 0x4
52 #define MXC_PLL_DP_CTL_BRM0 0x2
53 #define MXC_PLL_DP_CTL_LRF 0x1
55 #define MXC_PLL_DP_CONFIG_BIST 0x8
56 #define MXC_PLL_DP_CONFIG_SJC_CE 0x4
57 #define MXC_PLL_DP_CONFIG_AREN 0x2
58 #define MXC_PLL_DP_CONFIG_LDREQ 0x1
60 #define MXC_PLL_DP_OP_MFI_OFFSET 4
61 #define MXC_PLL_DP_OP_MFI_MASK (0xF << 4)
62 #define MXC_PLL_DP_OP_PDF_OFFSET 0
63 #define MXC_PLL_DP_OP_PDF_MASK 0xF
65 #define MXC_PLL_DP_MFD_OFFSET 0
66 #define MXC_PLL_DP_MFD_MASK 0x07FFFFFF
68 #define MXC_PLL_DP_MFN_OFFSET 0x0
69 #define MXC_PLL_DP_MFN_MASK 0x07FFFFFF
71 #define MXC_PLL_DP_MFN_TOGC_TOG_DIS (1 << 17)
72 #define MXC_PLL_DP_MFN_TOGC_TOG_EN (1 << 16)
73 #define MXC_PLL_DP_MFN_TOGC_CNT_OFFSET 0x0
74 #define MXC_PLL_DP_MFN_TOGC_CNT_MASK 0xFFFF
76 #define MXC_PLL_DP_DESTAT_TOG_SEL (1 << 31)
77 #define MXC_PLL_DP_DESTAT_MFN 0x07FFFFFF
79 /* Register addresses of CCM*/
80 #define MXC_CCM_CCR (MX51_CCM_BASE + 0x00)
81 #define MXC_CCM_CCDR (MX51_CCM_BASE + 0x04)
82 #define MXC_CCM_CSR (MX51_CCM_BASE + 0x08)
83 #define MXC_CCM_CCSR (MX51_CCM_BASE + 0x0C)
84 #define MXC_CCM_CACRR (MX51_CCM_BASE + 0x10)
85 #define MXC_CCM_CBCDR (MX51_CCM_BASE + 0x14)
86 #define MXC_CCM_CBCMR (MX51_CCM_BASE + 0x18)
87 #define MXC_CCM_CSCMR1 (MX51_CCM_BASE + 0x1C)
88 #define MXC_CCM_CSCMR2 (MX51_CCM_BASE + 0x20)
89 #define MXC_CCM_CSCDR1 (MX51_CCM_BASE + 0x24)
90 #define MXC_CCM_CS1CDR (MX51_CCM_BASE + 0x28)
91 #define MXC_CCM_CS2CDR (MX51_CCM_BASE + 0x2C)
92 #define MXC_CCM_CDCDR (MX51_CCM_BASE + 0x30)
93 #define MXC_CCM_CHSCDR (MX51_CCM_BASE + 0x34)
94 #define MXC_CCM_CSCDR2 (MX51_CCM_BASE + 0x38)
95 #define MXC_CCM_CSCDR3 (MX51_CCM_BASE + 0x3C)
96 #define MXC_CCM_CSCDR4 (MX51_CCM_BASE + 0x40)
97 #define MXC_CCM_CWDR (MX51_CCM_BASE + 0x44)
98 #define MXC_CCM_CDHIPR (MX51_CCM_BASE + 0x48)
99 #define MXC_CCM_CDCR (MX51_CCM_BASE + 0x4C)
100 #define MXC_CCM_CTOR (MX51_CCM_BASE + 0x50)
101 #define MXC_CCM_CLPCR (MX51_CCM_BASE + 0x54)
102 #define MXC_CCM_CISR (MX51_CCM_BASE + 0x58)
103 #define MXC_CCM_CIMR (MX51_CCM_BASE + 0x5C)
104 #define MXC_CCM_CCOSR (MX51_CCM_BASE + 0x60)
105 #define MXC_CCM_CGPR (MX51_CCM_BASE + 0x64)
106 #define MXC_CCM_CCGR0 (MX51_CCM_BASE + 0x68)
107 #define MXC_CCM_CCGR1 (MX51_CCM_BASE + 0x6C)
108 #define MXC_CCM_CCGR2 (MX51_CCM_BASE + 0x70)
109 #define MXC_CCM_CCGR3 (MX51_CCM_BASE + 0x74)
110 #define MXC_CCM_CCGR4 (MX51_CCM_BASE + 0x78)
111 #define MXC_CCM_CCGR5 (MX51_CCM_BASE + 0x7C)
112 #define MXC_CCM_CCGR6 (MX51_CCM_BASE + 0x80)
113 #define MXC_CCM_CMEOR (MX51_CCM_BASE + 0x84)
115 /* Define the bits in register CCR */
116 #define MXC_CCM_CCR_COSC_EN (1 << 12)
117 #define MXC_CCM_CCR_FPM_MULT_MASK (1 << 11)
118 #define MXC_CCM_CCR_CAMP2_EN (1 << 10)
119 #define MXC_CCM_CCR_CAMP1_EN (1 << 9)
120 #define MXC_CCM_CCR_FPM_EN (1 << 8)
121 #define MXC_CCM_CCR_OSCNT_OFFSET (0)
122 #define MXC_CCM_CCR_OSCNT_MASK (0xFF)
124 /* Define the bits in register CCDR */
125 #define MXC_CCM_CCDR_HSC_HS_MASK (0x1 << 18)
126 #define MXC_CCM_CCDR_IPU_HS_MASK (0x1 << 17)
127 #define MXC_CCM_CCDR_EMI_HS_MASK (0x1 << 16)
129 /* Define the bits in register CSR */
130 #define MXC_CCM_CSR_COSR_READY (1 << 5)
131 #define MXC_CCM_CSR_LVS_VALUE (1 << 4)
132 #define MXC_CCM_CSR_CAMP2_READY (1 << 3)
133 #define MXC_CCM_CSR_CAMP1_READY (1 << 2)
134 #define MXC_CCM_CSR_FPM_READY (1 << 1)
135 #define MXC_CCM_CSR_REF_EN_B (1 << 0)
137 /* Define the bits in register CCSR */
138 #define MXC_CCM_CCSR_LP_APM_SEL (0x1 << 9)
139 #define MXC_CCM_CCSR_STEP_SEL_OFFSET (7)
140 #define MXC_CCM_CCSR_STEP_SEL_MASK (0x3 << 7)
141 #define MXC_CCM_CCSR_STEP_SEL_LP_APM 0
142 #define MXC_CCM_CCSR_STEP_SEL_PLL1_BYPASS 1 /* Only when JTAG connected? */
143 #define MXC_CCM_CCSR_STEP_SEL_PLL2_DIVIDED 2
144 #define MXC_CCM_CCSR_STEP_SEL_PLL3_DIVIDED 3
145 #define MXC_CCM_CCSR_PLL2_PODF_OFFSET (5)
146 #define MXC_CCM_CCSR_PLL2_PODF_MASK (0x3 << 5)
147 #define MXC_CCM_CCSR_PLL3_PODF_OFFSET (3)
148 #define MXC_CCM_CCSR_PLL3_PODF_MASK (0x3 << 3)
149 #define MXC_CCM_CCSR_PLL1_SW_CLK_SEL (1 << 2) /* 0: pll1_main_clk,
151 #define MXC_CCM_CCSR_PLL2_SW_CLK_SEL (1 << 1)
152 #define MXC_CCM_CCSR_PLL3_SW_CLK_SEL (1 << 0)
154 /* Define the bits in register CACRR */
155 #define MXC_CCM_CACRR_ARM_PODF_OFFSET (0)
156 #define MXC_CCM_CACRR_ARM_PODF_MASK (0x7)
158 /* Define the bits in register CBCDR */
159 #define MXC_CCM_CBCDR_EMI_CLK_SEL (0x1 << 26)
160 #define MXC_CCM_CBCDR_PERIPH_CLK_SEL (0x1 << 25)
161 #define MXC_CCM_CBCDR_DDR_HF_SEL_OFFSET (30)
162 #define MXC_CCM_CBCDR_DDR_HF_SEL (0x1 << 30)
163 #define MXC_CCM_CBCDR_DDR_PODF_OFFSET (27)
164 #define MXC_CCM_CBCDR_DDR_PODF_MASK (0x7 << 27)
165 #define MXC_CCM_CBCDR_EMI_PODF_OFFSET (22)
166 #define MXC_CCM_CBCDR_EMI_PODF_MASK (0x7 << 22)
167 #define MXC_CCM_CBCDR_AXI_B_PODF_OFFSET (19)
168 #define MXC_CCM_CBCDR_AXI_B_PODF_MASK (0x7 << 19)
169 #define MXC_CCM_CBCDR_AXI_A_PODF_OFFSET (16)
170 #define MXC_CCM_CBCDR_AXI_A_PODF_MASK (0x7 << 16)
171 #define MXC_CCM_CBCDR_NFC_PODF_OFFSET (13)
172 #define MXC_CCM_CBCDR_NFC_PODF_MASK (0x7 << 13)
173 #define MXC_CCM_CBCDR_AHB_PODF_OFFSET (10)
174 #define MXC_CCM_CBCDR_AHB_PODF_MASK (0x7 << 10)
175 #define MXC_CCM_CBCDR_IPG_PODF_OFFSET (8)
176 #define MXC_CCM_CBCDR_IPG_PODF_MASK (0x3 << 8)
177 #define MXC_CCM_CBCDR_PERCLK_PRED1_OFFSET (6)
178 #define MXC_CCM_CBCDR_PERCLK_PRED1_MASK (0x3 << 6)
179 #define MXC_CCM_CBCDR_PERCLK_PRED2_OFFSET (3)
180 #define MXC_CCM_CBCDR_PERCLK_PRED2_MASK (0x7 << 3)
181 #define MXC_CCM_CBCDR_PERCLK_PODF_OFFSET (0)
182 #define MXC_CCM_CBCDR_PERCLK_PODF_MASK (0x7)
184 /* Define the bits in register CBCMR */
185 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_OFFSET (14)
186 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_MASK (0x3 << 14)
187 #define MXC_CCM_CBCMR_PERIPH_CLK_SEL_OFFSET (12)
188 #define MXC_CCM_CBCMR_PERIPH_CLK_SEL_MASK (0x3 << 12)
189 #define MXC_CCM_CBCMR_DDR_CLK_SEL_OFFSET (10)
190 #define MXC_CCM_CBCMR_DDR_CLK_SEL_MASK (0x3 << 10)
191 #define MXC_CCM_CBCMR_ARM_AXI_CLK_SEL_OFFSET (8)
192 #define MXC_CCM_CBCMR_ARM_AXI_CLK_SEL_MASK (0x3 << 8)
193 #define MXC_CCM_CBCMR_IPU_HSP_CLK_SEL_OFFSET (6)
194 #define MXC_CCM_CBCMR_IPU_HSP_CLK_SEL_MASK (0x3 << 6)
195 #define MXC_CCM_CBCMR_GPU_CLK_SEL_OFFSET (4)
196 #define MXC_CCM_CBCMR_GPU_CLK_SEL_MASK (0x3 << 4)
197 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_OFFSET (14)
198 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_MASK (0x3 << 14)
199 #define MXC_CCM_CBCMR_PERCLK_LP_APM_CLK_SEL (0x1 << 1)
200 #define MXC_CCM_CBCMR_PERCLK_IPG_CLK_SEL (0x1 << 0)
202 /* Define the bits in register CSCMR1 */
203 #define MXC_CCM_CSCMR1_SSI_EXT2_CLK_SEL_OFFSET (30)
204 #define MXC_CCM_CSCMR1_SSI_EXT2_CLK_SEL_MASK (0x3 << 30)
205 #define MXC_CCM_CSCMR1_SSI_EXT1_CLK_SEL_OFFSET (28)
206 #define MXC_CCM_CSCMR1_SSI_EXT1_CLK_SEL_MASK (0x3 << 28)
207 #define MXC_CCM_CSCMR1_USB_PHY_CLK_SEL_OFFSET (26)
208 #define MXC_CCM_CSCMR1_USB_PHY_CLK_SEL (0x1 << 26)
209 #define MXC_CCM_CSCMR1_UART_CLK_SEL_OFFSET (24)
210 #define MXC_CCM_CSCMR1_UART_CLK_SEL_MASK (0x3 << 24)
211 #define MXC_CCM_CSCMR1_USBOH3_CLK_SEL_OFFSET (22)
212 #define MXC_CCM_CSCMR1_USBOH3_CLK_SEL_MASK (0x3 << 22)
213 #define MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_OFFSET (20)
214 #define MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_MASK (0x3 << 20)
215 #define MXC_CCM_CSCMR1_ESDHC3_CLK_SEL (0x1 << 19)
216 #define MXC_CCM_CSCMR1_ESDHC4_CLK_SEL (0x1 << 18)
217 #define MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_OFFSET (16)
218 #define MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_MASK (0x3 << 16)
219 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET (14)
220 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK (0x3 << 14)
221 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET (12)
222 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_MASK (0x3 << 12)
223 #define MXC_CCM_CSCMR1_SSI3_CLK_SEL (0x1 << 11)
224 #define MXC_CCM_CSCMR1_VPU_RCLK_SEL (0x1 << 10)
225 #define MXC_CCM_CSCMR1_SSI_APM_CLK_SEL_OFFSET (8)
226 #define MXC_CCM_CSCMR1_SSI_APM_CLK_SEL_MASK (0x3 << 8)
227 #define MXC_CCM_CSCMR1_TVE_CLK_SEL (0x1 << 7)
228 #define MXC_CCM_CSCMR1_TVE_EXT_CLK_SEL (0x1 << 6)
229 #define MXC_CCM_CSCMR1_CSPI_CLK_SEL_OFFSET (4)
230 #define MXC_CCM_CSCMR1_CSPI_CLK_SEL_MASK (0x3 << 4)
231 #define MXC_CCM_CSCMR1_SPDIF_CLK_SEL_OFFSET (2)
232 #define MXC_CCM_CSCMR1_SPDIF_CLK_SEL_MASK (0x3 << 2)
233 #define MXC_CCM_CSCMR1_SSI_EXT2_COM_CLK_SEL (0x1 << 1)
234 #define MXC_CCM_CSCMR1_SSI_EXT1_COM_CLK_SEL (0x1)
236 /* Define the bits in register CSCMR2 */
237 #define MXC_CCM_CSCMR2_DI_CLK_SEL_OFFSET(n) (26+n*3)
238 #define MXC_CCM_CSCMR2_DI_CLK_SEL_MASK(n) (0x7 << (26+n*3))
239 #define MXC_CCM_CSCMR2_CSI_MCLK2_CLK_SEL_OFFSET (24)
240 #define MXC_CCM_CSCMR2_CSI_MCLK2_CLK_SEL_MASK (0x3 << 24)
241 #define MXC_CCM_CSCMR2_CSI_MCLK1_CLK_SEL_OFFSET (22)
242 #define MXC_CCM_CSCMR2_CSI_MCLK1_CLK_SEL_MASK (0x3 << 22)
243 #define MXC_CCM_CSCMR2_ESC_CLK_SEL_OFFSET (20)
244 #define MXC_CCM_CSCMR2_ESC_CLK_SEL_MASK (0x3 << 20)
245 #define MXC_CCM_CSCMR2_HSC2_CLK_SEL_OFFSET (18)
246 #define MXC_CCM_CSCMR2_HSC2_CLK_SEL_MASK (0x3 << 18)
247 #define MXC_CCM_CSCMR2_HSC1_CLK_SEL_OFFSET (16)
248 #define MXC_CCM_CSCMR2_HSC1_CLK_SEL_MASK (0x3 << 16)
249 #define MXC_CCM_CSCMR2_HSI2C_CLK_SEL_OFFSET (14)
250 #define MXC_CCM_CSCMR2_HSI2C_CLK_SEL_MASK (0x3 << 14)
251 #define MXC_CCM_CSCMR2_FIRI_CLK_SEL_OFFSET (12)
252 #define MXC_CCM_CSCMR2_FIRI_CLK_SEL_MASK (0x3 << 12)
253 #define MXC_CCM_CSCMR2_SIM_CLK_SEL_OFFSET (10)
254 #define MXC_CCM_CSCMR2_SIM_CLK_SEL_MASK (0x3 << 10)
255 #define MXC_CCM_CSCMR2_SLIMBUS_COM (0x1 << 9)
256 #define MXC_CCM_CSCMR2_SLIMBUS_CLK_SEL_OFFSET (6)
257 #define MXC_CCM_CSCMR2_SLIMBUS_CLK_SEL_MASK (0x7 << 6)
258 #define MXC_CCM_CSCMR2_SPDIF1_COM (1 << 5)
259 #define MXC_CCM_CSCMR2_SPDIF0_COM (1 << 4)
260 #define MXC_CCM_CSCMR2_SPDIF1_CLK_SEL_OFFSET (2)
261 #define MXC_CCM_CSCMR2_SPDIF1_CLK_SEL_MASK (0x3 << 2)
262 #define MXC_CCM_CSCMR2_SPDIF0_CLK_SEL_OFFSET (0)
263 #define MXC_CCM_CSCMR2_SPDIF0_CLK_SEL_MASK (0x3)
265 /* Define the bits in register CSCDR1 */
266 #define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_OFFSET (22)
267 #define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_MASK (0x7 << 22)
268 #define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_OFFSET (19)
269 #define MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_MASK (0x7 << 19)
270 #define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_OFFSET (16)
271 #define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_MASK (0x7 << 16)
272 #define MXC_CCM_CSCDR1_PGC_CLK_PODF_OFFSET (14)
273 #define MXC_CCM_CSCDR1_PGC_CLK_PODF_MASK (0x3 << 14)
274 #define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_OFFSET (11)
275 #define MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_MASK (0x7 << 11)
276 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_OFFSET (8)
277 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK (0x7 << 8)
278 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET (6)
279 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK (0x3 << 6)
280 #define MXC_CCM_CSCDR1_UART_CLK_PRED_OFFSET (3)
281 #define MXC_CCM_CSCDR1_UART_CLK_PRED_MASK (0x7 << 3)
282 #define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET (0)
283 #define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK (0x7)
285 /* Define the bits in register CS1CDR and CS2CDR */
286 #define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PRED_OFFSET (22)
287 #define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PRED_MASK (0x7 << 22)
288 #define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PODF_OFFSET (16)
289 #define MXC_CCM_CS1CDR_SSI_EXT1_CLK_PODF_MASK (0x3F << 16)
290 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_OFFSET (6)
291 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_MASK (0x7 << 6)
292 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET (0)
293 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_MASK (0x3F)
295 #define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PRED_OFFSET (22)
296 #define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PRED_MASK (0x7 << 22)
297 #define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PODF_OFFSET (16)
298 #define MXC_CCM_CS2CDR_SSI_EXT2_CLK_PODF_MASK (0x3F << 16)
299 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_OFFSET (6)
300 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_MASK (0x7 << 6)
301 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_OFFSET (0)
302 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_MASK (0x3F)
304 /* Define the bits in register CDCDR */
305 #define MXC_CCM_CDCDR_TVE_CLK_PRED_OFFSET (28)
306 #define MXC_CCM_CDCDR_TVE_CLK_PRED_MASK (0x7 << 28)
307 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_OFFSET (25)
308 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_MASK (0x7 << 25)
309 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_OFFSET (19)
310 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_MASK (0x3F << 19)
311 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_OFFSET (16)
312 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_MASK (0x7 << 16)
313 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_OFFSET (9)
314 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_MASK (0x3F << 9)
315 #define MXC_CCM_CDCDR_DI_CLK_PRED_OFFSET (6)
316 #define MXC_CCM_CDCDR_DI_CLK_PRED_MASK (0x7 << 6)
317 #define MXC_CCM_CDCDR_USB_PHY_PRED_OFFSET (3)
318 #define MXC_CCM_CDCDR_USB_PHY_PRED_MASK (0x7 << 3)
319 #define MXC_CCM_CDCDR_USB_PHY_PODF_OFFSET (0)
320 #define MXC_CCM_CDCDR_USB_PHY_PODF_MASK (0x7)
322 /* Define the bits in register CHSCCDR */
323 #define MXC_CCM_CHSCCDR_ESC_CLK_PRED_OFFSET (12)
324 #define MXC_CCM_CHSCCDR_ESC_CLK_PRED_MASK (0x7 << 12)
325 #define MXC_CCM_CHSCCDR_ESC_CLK_PODF_OFFSET (6)
326 #define MXC_CCM_CHSCCDR_ESC_CLK_PODF_MASK (0x3F << 6)
327 #define MXC_CCM_CHSCCDR_HSC2_CLK_PODF_OFFSET (3)
328 #define MXC_CCM_CHSCCDR_HSC2_CLK_PODF_MASK (0x7 << 3)
329 #define MXC_CCM_CHSCCDR_HSC1_CLK_PODF_OFFSET (0)
330 #define MXC_CCM_CHSCCDR_HSC1_CLK_PODF_MASK (0x7)
332 /* Define the bits in register CSCDR2 */
333 #define MXC_CCM_CSCDR2_CSPI_CLK_PRED_OFFSET (25)
334 #define MXC_CCM_CSCDR2_CSPI_CLK_PRED_MASK (0x7 << 25)
335 #define MXC_CCM_CSCDR2_CSPI_CLK_PODF_OFFSET (19)
336 #define MXC_CCM_CSCDR2_CSPI_CLK_PODF_MASK (0x3F << 19)
337 #define MXC_CCM_CSCDR2_SIM_CLK_PRED_OFFSET (16)
338 #define MXC_CCM_CSCDR2_SIM_CLK_PRED_MASK (0x7 << 16)
339 #define MXC_CCM_CSCDR2_SIM_CLK_PODF_OFFSET (9)
340 #define MXC_CCM_CSCDR2_SIM_CLK_PODF_MASK (0x3F << 9)
341 #define MXC_CCM_CSCDR2_SLIMBUS_CLK_PRED_OFFSET (6)
342 #define MXC_CCM_CSCDR2_SLIMBUS_PRED_MASK (0x7 << 6)
343 #define MXC_CCM_CSCDR2_SLIMBUS_PODF_OFFSET (0)
344 #define MXC_CCM_CSCDR2_SLIMBUS_PODF_MASK (0x3F)
346 /* Define the bits in register CSCDR3 */
347 #define MXC_CCM_CSCDR3_HSI2C_CLK_PRED_OFFSET (16)
348 #define MXC_CCM_CSCDR3_HSI2C_CLK_PRED_MASK (0x7 << 16)
349 #define MXC_CCM_CSCDR3_HSI2C_CLK_PODF_OFFSET (9)
350 #define MXC_CCM_CSCDR3_HSI2C_CLK_PODF_MASK (0x3F << 9)
351 #define MXC_CCM_CSCDR3_FIRI_CLK_PRED_OFFSET (6)
352 #define MXC_CCM_CSCDR3_FIRI_CLK_PRED_MASK (0x7 << 6)
353 #define MXC_CCM_CSCDR3_FIRI_CLK_PODF_OFFSET (0)
354 #define MXC_CCM_CSCDR3_FIRI_CLK_PODF_MASK (0x3F)
356 /* Define the bits in register CSCDR4 */
357 #define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PRED_OFFSET (16)
358 #define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PRED_MASK (0x7 << 16)
359 #define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PODF_OFFSET (9)
360 #define MXC_CCM_CSCDR4_CSI_MCLK2_CLK_PODF_MASK (0x3F << 9)
361 #define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PRED_OFFSET (6)
362 #define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PRED_MASK (0x7 << 6)
363 #define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PODF_OFFSET (0)
364 #define MXC_CCM_CSCDR4_CSI_MCLK1_CLK_PODF_MASK (0x3F)
366 /* Define the bits in register CDHIPR */
367 #define MXC_CCM_CDHIPR_ARM_PODF_BUSY (1 << 16)
368 #define MXC_CCM_CDHIPR_DDR_HF_CLK_SEL_BUSY (1 << 8)
369 #define MXC_CCM_CDHIPR_DDR_PODF_BUSY (1 << 7)
370 #define MXC_CCM_CDHIPR_EMI_CLK_SEL_BUSY (1 << 6)
371 #define MXC_CCM_CDHIPR_PERIPH_CLK_SEL_BUSY (1 << 5)
372 #define MXC_CCM_CDHIPR_NFC_IPG_INT_MEM_PODF_BUSY (1 << 4)
373 #define MXC_CCM_CDHIPR_AHB_PODF_BUSY (1 << 3)
374 #define MXC_CCM_CDHIPR_EMI_PODF_BUSY (1 << 2)
375 #define MXC_CCM_CDHIPR_AXI_B_PODF_BUSY (1 << 1)
376 #define MXC_CCM_CDHIPR_AXI_A_PODF_BUSY (1 << 0)
378 /* Define the bits in register CDCR */
379 #define MXC_CCM_CDCR_ARM_FREQ_SHIFT_DIVIDER (0x1 << 2)
380 #define MXC_CCM_CDCR_PERIPH_CLK_DVFS_PODF_OFFSET (0)
381 #define MXC_CCM_CDCR_PERIPH_CLK_DVFS_PODF_MASK (0x3)
383 /* Define the bits in register CLPCR */
384 #define MXC_CCM_CLPCR_BYPASS_HSC_LPM_HS (0x1 << 23)
385 #define MXC_CCM_CLPCR_BYPASS_SCC_LPM_HS (0x1 << 22)
386 #define MX51_CCM_CLPCR_BYPASS_MAX_LPM_HS (0x1 << 21)
387 #define MX53_CCM_CLPCR_BYPASS_MAX_LPM_HS (0x1 << 25)
388 #define MXC_CCM_CLPCR_BYPASS_SDMA_LPM_HS (0x1 << 20)
389 #define MXC_CCM_CLPCR_BYPASS_EMI_LPM_HS (0x1 << 19)
390 #define MXC_CCM_CLPCR_BYPASS_IPU_LPM_HS (0x1 << 18)
391 #define MXC_CCM_CLPCR_BYPASS_RTIC_LPM_HS (0x1 << 17)
392 #define MXC_CCM_CLPCR_BYPASS_RNGC_LPM_HS (0x1 << 16)
393 #define MXC_CCM_CLPCR_COSC_PWRDOWN (0x1 << 11)
394 #define MXC_CCM_CLPCR_STBY_COUNT_OFFSET (9)
395 #define MXC_CCM_CLPCR_STBY_COUNT_MASK (0x3 << 9)
396 #define MXC_CCM_CLPCR_VSTBY (0x1 << 8)
397 #define MXC_CCM_CLPCR_DIS_REF_OSC (0x1 << 7)
398 #define MXC_CCM_CLPCR_SBYOS (0x1 << 6)
399 #define MXC_CCM_CLPCR_ARM_CLK_DIS_ON_LPM (0x1 << 5)
400 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_OFFSET (3)
401 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_MASK (0x3 << 3)
402 #define MXC_CCM_CLPCR_LPM_OFFSET (0)
403 #define MXC_CCM_CLPCR_LPM_MASK (0x3)
405 /* Define the bits in register CISR */
406 #define MXC_CCM_CISR_ARM_PODF_LOADED (0x1 << 25)
407 #define MXC_CCM_CISR_NFC_IPG_INT_MEM_PODF_LOADED (0x1 << 21)
408 #define MXC_CCM_CISR_AHB_PODF_LOADED (0x1 << 20)
409 #define MXC_CCM_CISR_EMI_PODF_LOADED (0x1 << 19)
410 #define MXC_CCM_CISR_AXI_B_PODF_LOADED (0x1 << 18)
411 #define MXC_CCM_CISR_AXI_A_PODF_LOADED (0x1 << 17)
412 #define MXC_CCM_CISR_DIVIDER_LOADED (0x1 << 16)
413 #define MXC_CCM_CISR_COSC_READY (0x1 << 6)
414 #define MXC_CCM_CISR_CKIH2_READY (0x1 << 5)
415 #define MXC_CCM_CISR_CKIH_READY (0x1 << 4)
416 #define MXC_CCM_CISR_FPM_READY (0x1 << 3)
417 #define MXC_CCM_CISR_LRF_PLL3 (0x1 << 2)
418 #define MXC_CCM_CISR_LRF_PLL2 (0x1 << 1)
419 #define MXC_CCM_CISR_LRF_PLL1 (0x1)
421 /* Define the bits in register CIMR */
422 #define MXC_CCM_CIMR_MASK_ARM_PODF_LOADED (0x1 << 25)
423 #define MXC_CCM_CIMR_MASK_NFC_IPG_INT_MEM_PODF_LOADED (0x1 << 21)
424 #define MXC_CCM_CIMR_MASK_EMI_PODF_LOADED (0x1 << 20)
425 #define MXC_CCM_CIMR_MASK_AXI_C_PODF_LOADED (0x1 << 19)
426 #define MXC_CCM_CIMR_MASK_AXI_B_PODF_LOADED (0x1 << 18)
427 #define MXC_CCM_CIMR_MASK_AXI_A_PODF_LOADED (0x1 << 17)
428 #define MXC_CCM_CIMR_MASK_DIVIDER_LOADED (0x1 << 16)
429 #define MXC_CCM_CIMR_MASK_COSC_READY (0x1 << 5)
430 #define MXC_CCM_CIMR_MASK_CKIH_READY (0x1 << 4)
431 #define MXC_CCM_CIMR_MASK_FPM_READY (0x1 << 3)
432 #define MXC_CCM_CIMR_MASK_LRF_PLL3 (0x1 << 2)
433 #define MXC_CCM_CIMR_MASK_LRF_PLL2 (0x1 << 1)
434 #define MXC_CCM_CIMR_MASK_LRF_PLL1 (0x1)
436 /* Define the bits in register CCOSR */
437 #define MXC_CCM_CCOSR_CKO2_EN_OFFSET (0x1 << 24)
438 #define MXC_CCM_CCOSR_CKO2_DIV_OFFSET (21)
439 #define MXC_CCM_CCOSR_CKO2_DIV_MASK (0x7 << 21)
440 #define MXC_CCM_CCOSR_CKO2_SEL_OFFSET (16)
441 #define MXC_CCM_CCOSR_CKO2_SEL_MASK (0x1F << 16)
442 #define MXC_CCM_CCOSR_CKOL_EN (0x1 << 7)
443 #define MXC_CCM_CCOSR_CKOL_DIV_OFFSET (4)
444 #define MXC_CCM_CCOSR_CKOL_DIV_MASK (0x7 << 4)
445 #define MXC_CCM_CCOSR_CKOL_SEL_OFFSET (0)
446 #define MXC_CCM_CCOSR_CKOL_SEL_MASK (0xF)
448 /* Define the bits in registers CGPR */
449 #define MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE (0x1 << 4)
450 #define MXC_CCM_CGPR_FPM_SEL (0x1 << 3)
451 #define MXC_CCM_CGPR_VL_L2BIST_CLKDIV_OFFSET (0)
452 #define MXC_CCM_CGPR_VL_L2BIST_CLKDIV_MASK (0x7)
454 /* Define the bits in registers CCGRx */
455 #define MXC_CCM_CCGRx_CG_MASK 0x3
456 #define MXC_CCM_CCGRx_MOD_OFF 0x0
457 #define MXC_CCM_CCGRx_MOD_ON 0x3
458 #define MXC_CCM_CCGRx_MOD_IDLE 0x1
460 #define MXC_CCM_CCGRx_CG15_MASK (0x3 << 30)
461 #define MXC_CCM_CCGRx_CG14_MASK (0x3 << 28)
462 #define MXC_CCM_CCGRx_CG13_MASK (0x3 << 26)
463 #define MXC_CCM_CCGRx_CG12_MASK (0x3 << 24)
464 #define MXC_CCM_CCGRx_CG11_MASK (0x3 << 22)
465 #define MXC_CCM_CCGRx_CG10_MASK (0x3 << 20)
466 #define MXC_CCM_CCGRx_CG9_MASK (0x3 << 18)
467 #define MXC_CCM_CCGRx_CG8_MASK (0x3 << 16)
468 #define MXC_CCM_CCGRx_CG5_MASK (0x3 << 10)
469 #define MXC_CCM_CCGRx_CG4_MASK (0x3 << 8)
470 #define MXC_CCM_CCGRx_CG3_MASK (0x3 << 6)
471 #define MXC_CCM_CCGRx_CG2_MASK (0x3 << 4)
472 #define MXC_CCM_CCGRx_CG1_MASK (0x3 << 2)
473 #define MXC_CCM_CCGRx_CG0_MASK (0x3 << 0)
475 #define MXC_CCM_CCGRx_CG15_OFFSET 30
476 #define MXC_CCM_CCGRx_CG14_OFFSET 28
477 #define MXC_CCM_CCGRx_CG13_OFFSET 26
478 #define MXC_CCM_CCGRx_CG12_OFFSET 24
479 #define MXC_CCM_CCGRx_CG11_OFFSET 22
480 #define MXC_CCM_CCGRx_CG10_OFFSET 20
481 #define MXC_CCM_CCGRx_CG9_OFFSET 18
482 #define MXC_CCM_CCGRx_CG8_OFFSET 16
483 #define MXC_CCM_CCGRx_CG7_OFFSET 14
484 #define MXC_CCM_CCGRx_CG6_OFFSET 12
485 #define MXC_CCM_CCGRx_CG5_OFFSET 10
486 #define MXC_CCM_CCGRx_CG4_OFFSET 8
487 #define MXC_CCM_CCGRx_CG3_OFFSET 6
488 #define MXC_CCM_CCGRx_CG2_OFFSET 4
489 #define MXC_CCM_CCGRx_CG1_OFFSET 2
490 #define MXC_CCM_CCGRx_CG0_OFFSET 0
492 #define MXC_DPTC_LP_BASE (MX51_GPC_BASE + 0x80)
493 #define MXC_DPTC_GP_BASE (MX51_GPC_BASE + 0x100)
494 #define MXC_DVFS_CORE_BASE (MX51_GPC_BASE + 0x180)
495 #define MXC_DPTC_PER_BASE (MX51_GPC_BASE + 0x1C0)
496 #define MXC_PGC_IPU_BASE (MX51_GPC_BASE + 0x220)
497 #define MXC_PGC_VPU_BASE (MX51_GPC_BASE + 0x240)
498 #define MXC_PGC_GPU_BASE (MX51_GPC_BASE + 0x260)
499 #define MXC_SRPG_NEON_BASE (MX51_GPC_BASE + 0x280)
500 #define MXC_SRPG_ARM_BASE (MX51_GPC_BASE + 0x2A0)
501 #define MXC_SRPG_EMPGC0_BASE (MX51_GPC_BASE + 0x2C0)
502 #define MXC_SRPG_EMPGC1_BASE (MX51_GPC_BASE + 0x2D0)
503 #define MXC_SRPG_MEGAMIX_BASE (MX51_GPC_BASE + 0x2E0)
504 #define MXC_SRPG_EMI_BASE (MX51_GPC_BASE + 0x300)
506 /* CORTEXA8 platform */
507 #define MXC_CORTEXA8_PLAT_PVID (MX51_CORTEXA8_BASE + 0x0)
508 #define MXC_CORTEXA8_PLAT_GPC (MX51_CORTEXA8_BASE + 0x4)
509 #define MXC_CORTEXA8_PLAT_PIC (MX51_CORTEXA8_BASE + 0x8)
510 #define MXC_CORTEXA8_PLAT_LPC (MX51_CORTEXA8_BASE + 0xC)
511 #define MXC_CORTEXA8_PLAT_NEON_LPC (MX51_CORTEXA8_BASE + 0x10)
512 #define MXC_CORTEXA8_PLAT_ICGC (MX51_CORTEXA8_BASE + 0x14)
513 #define MXC_CORTEXA8_PLAT_AMC (MX51_CORTEXA8_BASE + 0x18)
514 #define MXC_CORTEXA8_PLAT_NMC (MX51_CORTEXA8_BASE + 0x20)
515 #define MXC_CORTEXA8_PLAT_NMS (MX51_CORTEXA8_BASE + 0x24)
518 #define MXC_DVFSTHRS (MXC_DVFS_CORE_BASE + 0x00)
519 #define MXC_DVFSCOUN (MXC_DVFS_CORE_BASE + 0x04)
520 #define MXC_DVFSSIG1 (MXC_DVFS_CORE_BASE + 0x08)
521 #define MXC_DVFSSIG0 (MXC_DVFS_CORE_BASE + 0x0C)
522 #define MXC_DVFSGPC0 (MXC_DVFS_CORE_BASE + 0x10)
523 #define MXC_DVFSGPC1 (MXC_DVFS_CORE_BASE + 0x14)
524 #define MXC_DVFSGPBT (MXC_DVFS_CORE_BASE + 0x18)
525 #define MXC_DVFSEMAC (MXC_DVFS_CORE_BASE + 0x1C)
526 #define MXC_DVFSCNTR (MXC_DVFS_CORE_BASE + 0x20)
527 #define MXC_DVFSLTR0_0 (MXC_DVFS_CORE_BASE + 0x24)
528 #define MXC_DVFSLTR0_1 (MXC_DVFS_CORE_BASE + 0x28)
529 #define MXC_DVFSLTR1_0 (MXC_DVFS_CORE_BASE + 0x2C)
530 #define MXC_DVFSLTR1_1 (MXC_DVFS_CORE_BASE + 0x30)
531 #define MXC_DVFSPT0 (MXC_DVFS_CORE_BASE + 0x34)
532 #define MXC_DVFSPT1 (MXC_DVFS_CORE_BASE + 0x38)
533 #define MXC_DVFSPT2 (MXC_DVFS_CORE_BASE + 0x3C)
534 #define MXC_DVFSPT3 (MXC_DVFS_CORE_BASE + 0x40)
537 #define MXC_GPC_CNTR (MX51_GPC_BASE + 0x0)
538 #define MXC_GPC_PGR (MX51_GPC_BASE + 0x4)
539 #define MXC_GPC_VCR (MX51_GPC_BASE + 0x8)
540 #define MXC_GPC_ALL_PU (MX51_GPC_BASE + 0xC)
541 #define MXC_GPC_NEON (MX51_GPC_BASE + 0x10)
542 #define MXC_GPC_PGR_ARMPG_OFFSET 8
543 #define MXC_GPC_PGR_ARMPG_MASK (3 << 8)
546 #define MXC_PGC_IPU_PGCR (MXC_PGC_IPU_BASE + 0x0)
547 #define MXC_PGC_IPU_PGSR (MXC_PGC_IPU_BASE + 0xC)
548 #define MXC_PGC_VPU_PGCR (MXC_PGC_VPU_BASE + 0x0)
549 #define MXC_PGC_VPU_PGSR (MXC_PGC_VPU_BASE + 0xC)
550 #define MXC_PGC_GPU_PGCR (MXC_PGC_GPU_BASE + 0x0)
551 #define MXC_PGC_GPU_PGSR (MXC_PGC_GPU_BASE + 0xC)
553 #define MXC_PGCR_PCR 1
554 #define MXC_SRPGCR_PCR 1
555 #define MXC_EMPGCR_PCR 1
556 #define MXC_PGSR_PSR 1
559 #define MXC_CORTEXA8_PLAT_LPC_DSM (1 << 0)
560 #define MXC_CORTEXA8_PLAT_LPC_DBG_DSM (1 << 1)
563 #define MXC_SRPG_NEON_SRPGCR (MXC_SRPG_NEON_BASE + 0x0)
564 #define MXC_SRPG_NEON_PUPSCR (MXC_SRPG_NEON_BASE + 0x4)
565 #define MXC_SRPG_NEON_PDNSCR (MXC_SRPG_NEON_BASE + 0x8)
567 #define MXC_SRPG_ARM_SRPGCR (MXC_SRPG_ARM_BASE + 0x0)
568 #define MXC_SRPG_ARM_PUPSCR (MXC_SRPG_ARM_BASE + 0x4)
569 #define MXC_SRPG_ARM_PDNSCR (MXC_SRPG_ARM_BASE + 0x8)
571 #define MXC_SRPG_EMPGC0_SRPGCR (MXC_SRPG_EMPGC0_BASE + 0x0)
572 #define MXC_SRPG_EMPGC0_PUPSCR (MXC_SRPG_EMPGC0_BASE + 0x4)
573 #define MXC_SRPG_EMPGC0_PDNSCR (MXC_SRPG_EMPGC0_BASE + 0x8)
575 #define MXC_SRPG_EMPGC1_SRPGCR (MXC_SRPG_EMPGC1_BASE + 0x0)
576 #define MXC_SRPG_EMPGC1_PUPSCR (MXC_SRPG_EMPGC1_BASE + 0x4)
577 #define MXC_SRPG_EMPGC1_PDNSCR (MXC_SRPG_EMPGC1_BASE + 0x8)
579 #define MXC_SRPG_MEGAMIX_SRPGCR (MXC_SRPG_MEGAMIX_BASE + 0x0)
580 #define MXC_SRPG_MEGAMIX_PUPSCR (MXC_SRPG_MEGAMIX_BASE + 0x4)
581 #define MXC_SRPG_MEGAMIX_PDNSCR (MXC_SRPG_MEGAMIX_BASE + 0x8)
583 #define MXC_SRPGC_EMI_SRPGCR (MXC_SRPGC_EMI_BASE + 0x0)
584 #define MXC_SRPGC_EMI_PUPSCR (MXC_SRPGC_EMI_BASE + 0x4)
585 #define MXC_SRPGC_EMI_PDNSCR (MXC_SRPGC_EMI_BASE + 0x8)
587 #endif /* __ARCH_ARM_MACH_MX51_CRM_REGS_H__ */