Commit 05922b0abf848949df778c19312cb1cf7fdfbe6a

Authored by Peng Fan
1 parent 5fb09cab9b

MLK-12767 imx6ull: fix runtime checking for i.MX6ULL

Fix runtime checking for i.MX6ULL. Add is_cpu_type(MXC_CPU_MX6ULL)
to avoid using wrong code path.

Signed-off-by: Peng Fan <peng.fan@nxp.com>

Showing 5 changed files with 34 additions and 24 deletions Inline Diff

arch/arm/cpu/armv7/mx6/clock.c
1 /* 1 /*
2 * Copyright (C) 2010-2016 Freescale Semiconductor, Inc. 2 * Copyright (C) 2010-2016 Freescale Semiconductor, Inc.
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 #include <common.h> 7 #include <common.h>
8 #include <div64.h> 8 #include <div64.h>
9 #include <asm/io.h> 9 #include <asm/io.h>
10 #include <asm/errno.h> 10 #include <asm/errno.h>
11 #include <asm/arch/imx-regs.h> 11 #include <asm/arch/imx-regs.h>
12 #include <asm/arch/crm_regs.h> 12 #include <asm/arch/crm_regs.h>
13 #include <asm/arch/clock.h> 13 #include <asm/arch/clock.h>
14 #include <asm/arch/sys_proto.h> 14 #include <asm/arch/sys_proto.h>
15 15
16 enum pll_clocks { 16 enum pll_clocks {
17 PLL_SYS, /* System PLL */ 17 PLL_SYS, /* System PLL */
18 PLL_BUS, /* System Bus PLL*/ 18 PLL_BUS, /* System Bus PLL*/
19 PLL_USBOTG, /* OTG USB PLL */ 19 PLL_USBOTG, /* OTG USB PLL */
20 PLL_ENET, /* ENET PLL */ 20 PLL_ENET, /* ENET PLL */
21 PLL_AUDIO, /* AUDIO PLL */ 21 PLL_AUDIO, /* AUDIO PLL */
22 PLL_VIDEO, /* AUDIO PLL */ 22 PLL_VIDEO, /* AUDIO PLL */
23 }; 23 };
24 24
25 struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 25 struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
26 26
27 #ifdef CONFIG_MXC_OCOTP 27 #ifdef CONFIG_MXC_OCOTP
28 void enable_ocotp_clk(unsigned char enable) 28 void enable_ocotp_clk(unsigned char enable)
29 { 29 {
30 u32 reg; 30 u32 reg;
31 31
32 reg = __raw_readl(&imx_ccm->CCGR2); 32 reg = __raw_readl(&imx_ccm->CCGR2);
33 if (enable) 33 if (enable)
34 reg |= MXC_CCM_CCGR2_OCOTP_CTRL_MASK; 34 reg |= MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
35 else 35 else
36 reg &= ~MXC_CCM_CCGR2_OCOTP_CTRL_MASK; 36 reg &= ~MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
37 __raw_writel(reg, &imx_ccm->CCGR2); 37 __raw_writel(reg, &imx_ccm->CCGR2);
38 } 38 }
39 #endif 39 #endif
40 40
41 #ifdef CONFIG_NAND_MXS 41 #ifdef CONFIG_NAND_MXS
42 void setup_gpmi_io_clk(u32 cfg) 42 void setup_gpmi_io_clk(u32 cfg)
43 { 43 {
44 /* Disable clocks per ERR007177 from MX6 errata */ 44 /* Disable clocks per ERR007177 from MX6 errata */
45 clrbits_le32(&imx_ccm->CCGR4, 45 clrbits_le32(&imx_ccm->CCGR4,
46 MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK | 46 MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
47 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK | 47 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
48 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK | 48 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
49 MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK | 49 MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
50 MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK); 50 MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
51 51
52 #if defined(CONFIG_MX6SX) 52 #if defined(CONFIG_MX6SX)
53 clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK); 53 clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
54 54
55 clrsetbits_le32(&imx_ccm->cs2cdr, 55 clrsetbits_le32(&imx_ccm->cs2cdr,
56 MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK | 56 MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
57 MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK | 57 MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
58 MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK, 58 MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK,
59 cfg); 59 cfg);
60 60
61 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK); 61 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
62 #elif defined(CONFIG_MX6UL) 62 #elif defined(CONFIG_MX6UL)
63 /* 63 /*
64 * config gpmi and bch clock to 100 MHz 64 * config gpmi and bch clock to 100 MHz
65 * bch/gpmi select PLL2 PFD2 400M 65 * bch/gpmi select PLL2 PFD2 400M
66 * 100M = 400M / 4 66 * 100M = 400M / 4
67 */ 67 */
68 clrbits_le32(&imx_ccm->cscmr1, 68 clrbits_le32(&imx_ccm->cscmr1,
69 MXC_CCM_CSCMR1_BCH_CLK_SEL | 69 MXC_CCM_CSCMR1_BCH_CLK_SEL |
70 MXC_CCM_CSCMR1_GPMI_CLK_SEL); 70 MXC_CCM_CSCMR1_GPMI_CLK_SEL);
71 clrsetbits_le32(&imx_ccm->cscdr1, 71 clrsetbits_le32(&imx_ccm->cscdr1,
72 MXC_CCM_CSCDR1_BCH_PODF_MASK | 72 MXC_CCM_CSCDR1_BCH_PODF_MASK |
73 MXC_CCM_CSCDR1_GPMI_PODF_MASK, 73 MXC_CCM_CSCDR1_GPMI_PODF_MASK,
74 cfg); 74 cfg);
75 #else 75 #else
76 clrbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK); 76 clrbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
77 77
78 clrsetbits_le32(&imx_ccm->cs2cdr, 78 clrsetbits_le32(&imx_ccm->cs2cdr,
79 MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK | 79 MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK |
80 MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK | 80 MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK |
81 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK, 81 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK,
82 cfg); 82 cfg);
83 83
84 setbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK); 84 setbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
85 #endif 85 #endif
86 setbits_le32(&imx_ccm->CCGR4, 86 setbits_le32(&imx_ccm->CCGR4,
87 MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK | 87 MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
88 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK | 88 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
89 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK | 89 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
90 MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK | 90 MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
91 MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK); 91 MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
92 } 92 }
93 #endif 93 #endif
94 94
95 void enable_usboh3_clk(unsigned char enable) 95 void enable_usboh3_clk(unsigned char enable)
96 { 96 {
97 u32 reg; 97 u32 reg;
98 98
99 reg = __raw_readl(&imx_ccm->CCGR6); 99 reg = __raw_readl(&imx_ccm->CCGR6);
100 if (enable) 100 if (enable)
101 reg |= MXC_CCM_CCGR6_USBOH3_MASK; 101 reg |= MXC_CCM_CCGR6_USBOH3_MASK;
102 else 102 else
103 reg &= ~(MXC_CCM_CCGR6_USBOH3_MASK); 103 reg &= ~(MXC_CCM_CCGR6_USBOH3_MASK);
104 __raw_writel(reg, &imx_ccm->CCGR6); 104 __raw_writel(reg, &imx_ccm->CCGR6);
105 105
106 } 106 }
107 107
108 #if defined(CONFIG_FEC_MXC) && !defined(CONFIG_MX6SX) 108 #if defined(CONFIG_FEC_MXC) && !defined(CONFIG_MX6SX)
109 void enable_enet_clk(unsigned char enable) 109 void enable_enet_clk(unsigned char enable)
110 { 110 {
111 u32 mask, *addr; 111 u32 mask, *addr;
112 112
113 if (is_cpu_type(MXC_CPU_MX6ULL)) { 113 if (is_cpu_type(MXC_CPU_MX6ULL)) {
114 mask = MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK; 114 mask = MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK;
115 addr = &imx_ccm->CCGR0; 115 addr = &imx_ccm->CCGR0;
116 } else if (is_cpu_type(MXC_CPU_MX6UL)) { 116 } else if (is_cpu_type(MXC_CPU_MX6UL)) {
117 mask = MXC_CCM_CCGR3_ENET_MASK; 117 mask = MXC_CCM_CCGR3_ENET_MASK;
118 addr = &imx_ccm->CCGR3; 118 addr = &imx_ccm->CCGR3;
119 } else { 119 } else {
120 mask = MXC_CCM_CCGR1_ENET_MASK; 120 mask = MXC_CCM_CCGR1_ENET_MASK;
121 addr = &imx_ccm->CCGR1; 121 addr = &imx_ccm->CCGR1;
122 } 122 }
123 123
124 if (enable) 124 if (enable)
125 setbits_le32(addr, mask); 125 setbits_le32(addr, mask);
126 else 126 else
127 clrbits_le32(addr, mask); 127 clrbits_le32(addr, mask);
128 } 128 }
129 #endif 129 #endif
130 130
131 #ifdef CONFIG_MXC_UART 131 #ifdef CONFIG_MXC_UART
132 void enable_uart_clk(unsigned char enable) 132 void enable_uart_clk(unsigned char enable)
133 { 133 {
134 u32 mask; 134 u32 mask;
135 135
136 if (is_cpu_type(MXC_CPU_MX6UL)) 136 if (is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL))
137 mask = MXC_CCM_CCGR5_UART_MASK; 137 mask = MXC_CCM_CCGR5_UART_MASK;
138 else 138 else
139 mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK; 139 mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK;
140 140
141 if (enable) 141 if (enable)
142 setbits_le32(&imx_ccm->CCGR5, mask); 142 setbits_le32(&imx_ccm->CCGR5, mask);
143 else 143 else
144 clrbits_le32(&imx_ccm->CCGR5, mask); 144 clrbits_le32(&imx_ccm->CCGR5, mask);
145 } 145 }
146 #endif 146 #endif
147 147
148 #ifdef CONFIG_MMC 148 #ifdef CONFIG_MMC
149 int enable_usdhc_clk(unsigned char enable, unsigned bus_num) 149 int enable_usdhc_clk(unsigned char enable, unsigned bus_num)
150 { 150 {
151 u32 mask; 151 u32 mask;
152 152
153 if (bus_num > 3) 153 if (bus_num > 3)
154 return -EINVAL; 154 return -EINVAL;
155 155
156 mask = MXC_CCM_CCGR_CG_MASK << (bus_num * 2 + 2); 156 mask = MXC_CCM_CCGR_CG_MASK << (bus_num * 2 + 2);
157 if (enable) 157 if (enable)
158 setbits_le32(&imx_ccm->CCGR6, mask); 158 setbits_le32(&imx_ccm->CCGR6, mask);
159 else 159 else
160 clrbits_le32(&imx_ccm->CCGR6, mask); 160 clrbits_le32(&imx_ccm->CCGR6, mask);
161 161
162 return 0; 162 return 0;
163 } 163 }
164 #endif 164 #endif
165 165
166 #ifdef CONFIG_SYS_I2C_MXC 166 #ifdef CONFIG_SYS_I2C_MXC
167 /* i2c_num can be from 0 - 3 */ 167 /* i2c_num can be from 0 - 3 */
168 int enable_i2c_clk(unsigned char enable, unsigned i2c_num) 168 int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
169 { 169 {
170 u32 reg; 170 u32 reg;
171 u32 mask; 171 u32 mask;
172 u32 *addr; 172 u32 *addr;
173 173
174 if (i2c_num > 3) 174 if (i2c_num > 3)
175 return -EINVAL; 175 return -EINVAL;
176 if (i2c_num < 3) { 176 if (i2c_num < 3) {
177 mask = MXC_CCM_CCGR_CG_MASK 177 mask = MXC_CCM_CCGR_CG_MASK
178 << (MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET 178 << (MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET
179 + (i2c_num << 1)); 179 + (i2c_num << 1));
180 reg = __raw_readl(&imx_ccm->CCGR2); 180 reg = __raw_readl(&imx_ccm->CCGR2);
181 if (enable) 181 if (enable)
182 reg |= mask; 182 reg |= mask;
183 else 183 else
184 reg &= ~mask; 184 reg &= ~mask;
185 __raw_writel(reg, &imx_ccm->CCGR2); 185 __raw_writel(reg, &imx_ccm->CCGR2);
186 } else { 186 } else {
187 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL)) { 187 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
188 is_cpu_type(MXC_CPU_MX6ULL)) {
188 mask = MXC_CCM_CCGR6_I2C4_MASK; 189 mask = MXC_CCM_CCGR6_I2C4_MASK;
189 addr = &imx_ccm->CCGR6; 190 addr = &imx_ccm->CCGR6;
190 } else { 191 } else {
191 mask = MXC_CCM_CCGR1_I2C4_SERIAL_MASK; 192 mask = MXC_CCM_CCGR1_I2C4_SERIAL_MASK;
192 addr = &imx_ccm->CCGR1; 193 addr = &imx_ccm->CCGR1;
193 } 194 }
194 reg = __raw_readl(addr); 195 reg = __raw_readl(addr);
195 if (enable) 196 if (enable)
196 reg |= mask; 197 reg |= mask;
197 else 198 else
198 reg &= ~mask; 199 reg &= ~mask;
199 __raw_writel(reg, addr); 200 __raw_writel(reg, addr);
200 } 201 }
201 return 0; 202 return 0;
202 } 203 }
203 #endif 204 #endif
204 205
205 /* spi_num can be from 0 - SPI_MAX_NUM */ 206 /* spi_num can be from 0 - SPI_MAX_NUM */
206 int enable_spi_clk(unsigned char enable, unsigned spi_num) 207 int enable_spi_clk(unsigned char enable, unsigned spi_num)
207 { 208 {
208 u32 reg; 209 u32 reg;
209 u32 mask; 210 u32 mask;
210 211
211 if (spi_num > SPI_MAX_NUM) 212 if (spi_num > SPI_MAX_NUM)
212 return -EINVAL; 213 return -EINVAL;
213 214
214 mask = MXC_CCM_CCGR_CG_MASK << (spi_num << 1); 215 mask = MXC_CCM_CCGR_CG_MASK << (spi_num << 1);
215 reg = __raw_readl(&imx_ccm->CCGR1); 216 reg = __raw_readl(&imx_ccm->CCGR1);
216 if (enable) 217 if (enable)
217 reg |= mask; 218 reg |= mask;
218 else 219 else
219 reg &= ~mask; 220 reg &= ~mask;
220 __raw_writel(reg, &imx_ccm->CCGR1); 221 __raw_writel(reg, &imx_ccm->CCGR1);
221 return 0; 222 return 0;
222 } 223 }
223 static u32 decode_pll(enum pll_clocks pll, u32 infreq) 224 static u32 decode_pll(enum pll_clocks pll, u32 infreq)
224 { 225 {
225 u32 div, test_div, pll_num, pll_denom; 226 u32 div, test_div, pll_num, pll_denom;
226 227
227 switch (pll) { 228 switch (pll) {
228 case PLL_SYS: 229 case PLL_SYS:
229 div = __raw_readl(&imx_ccm->analog_pll_sys); 230 div = __raw_readl(&imx_ccm->analog_pll_sys);
230 div &= BM_ANADIG_PLL_SYS_DIV_SELECT; 231 div &= BM_ANADIG_PLL_SYS_DIV_SELECT;
231 232
232 return (infreq * div) >> 1; 233 return (infreq * div) >> 1;
233 case PLL_BUS: 234 case PLL_BUS:
234 div = __raw_readl(&imx_ccm->analog_pll_528); 235 div = __raw_readl(&imx_ccm->analog_pll_528);
235 div &= BM_ANADIG_PLL_528_DIV_SELECT; 236 div &= BM_ANADIG_PLL_528_DIV_SELECT;
236 237
237 return infreq * (20 + (div << 1)); 238 return infreq * (20 + (div << 1));
238 case PLL_USBOTG: 239 case PLL_USBOTG:
239 div = __raw_readl(&imx_ccm->analog_usb1_pll_480_ctrl); 240 div = __raw_readl(&imx_ccm->analog_usb1_pll_480_ctrl);
240 div &= BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT; 241 div &= BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT;
241 242
242 return infreq * (20 + (div << 1)); 243 return infreq * (20 + (div << 1));
243 case PLL_ENET: 244 case PLL_ENET:
244 div = __raw_readl(&imx_ccm->analog_pll_enet); 245 div = __raw_readl(&imx_ccm->analog_pll_enet);
245 div &= BM_ANADIG_PLL_ENET_DIV_SELECT; 246 div &= BM_ANADIG_PLL_ENET_DIV_SELECT;
246 247
247 return 25000000 * (div + (div >> 1) + 1); 248 return 25000000 * (div + (div >> 1) + 1);
248 case PLL_AUDIO: 249 case PLL_AUDIO:
249 div = __raw_readl(&imx_ccm->analog_pll_audio); 250 div = __raw_readl(&imx_ccm->analog_pll_audio);
250 if (!(div & BM_ANADIG_PLL_AUDIO_ENABLE)) 251 if (!(div & BM_ANADIG_PLL_AUDIO_ENABLE))
251 return 0; 252 return 0;
252 /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */ 253 /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
253 if (div & BM_ANADIG_PLL_AUDIO_BYPASS) 254 if (div & BM_ANADIG_PLL_AUDIO_BYPASS)
254 return MXC_HCLK; 255 return MXC_HCLK;
255 pll_num = __raw_readl(&imx_ccm->analog_pll_audio_num); 256 pll_num = __raw_readl(&imx_ccm->analog_pll_audio_num);
256 pll_denom = __raw_readl(&imx_ccm->analog_pll_audio_denom); 257 pll_denom = __raw_readl(&imx_ccm->analog_pll_audio_denom);
257 test_div = (div & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT) >> 258 test_div = (div & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT) >>
258 BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT; 259 BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT;
259 div &= BM_ANADIG_PLL_AUDIO_DIV_SELECT; 260 div &= BM_ANADIG_PLL_AUDIO_DIV_SELECT;
260 if (test_div == 3) { 261 if (test_div == 3) {
261 debug("Error test_div\n"); 262 debug("Error test_div\n");
262 return 0; 263 return 0;
263 } 264 }
264 test_div = 1 << (2 - test_div); 265 test_div = 1 << (2 - test_div);
265 266
266 return infreq * (div + pll_num / pll_denom) / test_div; 267 return infreq * (div + pll_num / pll_denom) / test_div;
267 case PLL_VIDEO: 268 case PLL_VIDEO:
268 div = __raw_readl(&imx_ccm->analog_pll_video); 269 div = __raw_readl(&imx_ccm->analog_pll_video);
269 if (!(div & BM_ANADIG_PLL_VIDEO_ENABLE)) 270 if (!(div & BM_ANADIG_PLL_VIDEO_ENABLE))
270 return 0; 271 return 0;
271 /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */ 272 /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
272 if (div & BM_ANADIG_PLL_VIDEO_BYPASS) 273 if (div & BM_ANADIG_PLL_VIDEO_BYPASS)
273 return MXC_HCLK; 274 return MXC_HCLK;
274 pll_num = __raw_readl(&imx_ccm->analog_pll_video_num); 275 pll_num = __raw_readl(&imx_ccm->analog_pll_video_num);
275 pll_denom = __raw_readl(&imx_ccm->analog_pll_video_denom); 276 pll_denom = __raw_readl(&imx_ccm->analog_pll_video_denom);
276 test_div = (div & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT) >> 277 test_div = (div & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT) >>
277 BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT; 278 BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
278 div &= BM_ANADIG_PLL_VIDEO_DIV_SELECT; 279 div &= BM_ANADIG_PLL_VIDEO_DIV_SELECT;
279 if (test_div == 3) { 280 if (test_div == 3) {
280 debug("Error test_div\n"); 281 debug("Error test_div\n");
281 return 0; 282 return 0;
282 } 283 }
283 test_div = 1 << (2 - test_div); 284 test_div = 1 << (2 - test_div);
284 285
285 return infreq * (div + pll_num / pll_denom) / test_div; 286 return infreq * (div + pll_num / pll_denom) / test_div;
286 default: 287 default:
287 return 0; 288 return 0;
288 } 289 }
289 /* NOTREACHED */ 290 /* NOTREACHED */
290 } 291 }
291 static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num) 292 static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
292 { 293 {
293 u32 div; 294 u32 div;
294 u64 freq; 295 u64 freq;
295 296
296 switch (pll) { 297 switch (pll) {
297 case PLL_BUS: 298 case PLL_BUS:
298 if (!is_cpu_type(MXC_CPU_MX6UL)) { 299 if (!is_cpu_type(MXC_CPU_MX6UL) &&
300 !is_cpu_type(MXC_CPU_MX6ULL)) {
299 if (pfd_num == 3) { 301 if (pfd_num == 3) {
300 /* No PFD3 on PPL2 */ 302 /* No PFD3 on PPL2 */
301 return 0; 303 return 0;
302 } 304 }
303 } 305 }
304 div = __raw_readl(&imx_ccm->analog_pfd_528); 306 div = __raw_readl(&imx_ccm->analog_pfd_528);
305 freq = (u64)decode_pll(PLL_BUS, MXC_HCLK); 307 freq = (u64)decode_pll(PLL_BUS, MXC_HCLK);
306 break; 308 break;
307 case PLL_USBOTG: 309 case PLL_USBOTG:
308 div = __raw_readl(&imx_ccm->analog_pfd_480); 310 div = __raw_readl(&imx_ccm->analog_pfd_480);
309 freq = (u64)decode_pll(PLL_USBOTG, MXC_HCLK); 311 freq = (u64)decode_pll(PLL_USBOTG, MXC_HCLK);
310 break; 312 break;
311 default: 313 default:
312 /* No PFD on other PLL */ 314 /* No PFD on other PLL */
313 return 0; 315 return 0;
314 } 316 }
315 317
316 return lldiv(freq * 18, (div & ANATOP_PFD_FRAC_MASK(pfd_num)) >> 318 return lldiv(freq * 18, (div & ANATOP_PFD_FRAC_MASK(pfd_num)) >>
317 ANATOP_PFD_FRAC_SHIFT(pfd_num)); 319 ANATOP_PFD_FRAC_SHIFT(pfd_num));
318 } 320 }
319 321
320 static u32 get_mcu_main_clk(void) 322 static u32 get_mcu_main_clk(void)
321 { 323 {
322 u32 reg, freq; 324 u32 reg, freq;
323 325
324 reg = __raw_readl(&imx_ccm->cacrr); 326 reg = __raw_readl(&imx_ccm->cacrr);
325 reg &= MXC_CCM_CACRR_ARM_PODF_MASK; 327 reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
326 reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET; 328 reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
327 freq = decode_pll(PLL_SYS, MXC_HCLK); 329 freq = decode_pll(PLL_SYS, MXC_HCLK);
328 330
329 return freq / (reg + 1); 331 return freq / (reg + 1);
330 } 332 }
331 333
332 u32 get_periph_clk(void) 334 u32 get_periph_clk(void)
333 { 335 {
334 u32 reg, div = 0, freq = 0; 336 u32 reg, div = 0, freq = 0;
335 337
336 reg = __raw_readl(&imx_ccm->cbcdr); 338 reg = __raw_readl(&imx_ccm->cbcdr);
337 if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) { 339 if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
338 div = (reg & MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK) >> 340 div = (reg & MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK) >>
339 MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET; 341 MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET;
340 reg = __raw_readl(&imx_ccm->cbcmr); 342 reg = __raw_readl(&imx_ccm->cbcmr);
341 reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK; 343 reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK;
342 reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET; 344 reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET;
343 345
344 switch (reg) { 346 switch (reg) {
345 case 0: 347 case 0:
346 freq = decode_pll(PLL_USBOTG, MXC_HCLK); 348 freq = decode_pll(PLL_USBOTG, MXC_HCLK);
347 break; 349 break;
348 case 1: 350 case 1:
349 case 2: 351 case 2:
350 freq = MXC_HCLK; 352 freq = MXC_HCLK;
351 break; 353 break;
352 default: 354 default:
353 break; 355 break;
354 } 356 }
355 } else { 357 } else {
356 reg = __raw_readl(&imx_ccm->cbcmr); 358 reg = __raw_readl(&imx_ccm->cbcmr);
357 reg &= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK; 359 reg &= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK;
358 reg >>= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET; 360 reg >>= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET;
359 361
360 switch (reg) { 362 switch (reg) {
361 case 0: 363 case 0:
362 freq = decode_pll(PLL_BUS, MXC_HCLK); 364 freq = decode_pll(PLL_BUS, MXC_HCLK);
363 break; 365 break;
364 case 1: 366 case 1:
365 freq = mxc_get_pll_pfd(PLL_BUS, 2); 367 freq = mxc_get_pll_pfd(PLL_BUS, 2);
366 break; 368 break;
367 case 2: 369 case 2:
368 freq = mxc_get_pll_pfd(PLL_BUS, 0); 370 freq = mxc_get_pll_pfd(PLL_BUS, 0);
369 break; 371 break;
370 case 3: 372 case 3:
371 /* static / 2 divider */ 373 /* static / 2 divider */
372 freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2; 374 freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2;
373 break; 375 break;
374 default: 376 default:
375 break; 377 break;
376 } 378 }
377 } 379 }
378 380
379 return freq / (div + 1); 381 return freq / (div + 1);
380 } 382 }
381 383
382 static u32 get_ipg_clk(void) 384 static u32 get_ipg_clk(void)
383 { 385 {
384 u32 reg, ipg_podf; 386 u32 reg, ipg_podf;
385 387
386 reg = __raw_readl(&imx_ccm->cbcdr); 388 reg = __raw_readl(&imx_ccm->cbcdr);
387 reg &= MXC_CCM_CBCDR_IPG_PODF_MASK; 389 reg &= MXC_CCM_CBCDR_IPG_PODF_MASK;
388 ipg_podf = reg >> MXC_CCM_CBCDR_IPG_PODF_OFFSET; 390 ipg_podf = reg >> MXC_CCM_CBCDR_IPG_PODF_OFFSET;
389 391
390 return get_ahb_clk() / (ipg_podf + 1); 392 return get_ahb_clk() / (ipg_podf + 1);
391 } 393 }
392 394
393 static u32 get_ipg_per_clk(void) 395 static u32 get_ipg_per_clk(void)
394 { 396 {
395 u32 reg, perclk_podf; 397 u32 reg, perclk_podf;
396 398
397 reg = __raw_readl(&imx_ccm->cscmr1); 399 reg = __raw_readl(&imx_ccm->cscmr1);
398 if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || 400 if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) ||
399 is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) { 401 is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL) ||
402 is_cpu_type(MXC_CPU_MX6ULL)) {
400 if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK) 403 if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK)
401 return MXC_HCLK; /* OSC 24Mhz */ 404 return MXC_HCLK; /* OSC 24Mhz */
402 } 405 }
403 406
404 perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK; 407 perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK;
405 408
406 return get_ipg_clk() / (perclk_podf + 1); 409 return get_ipg_clk() / (perclk_podf + 1);
407 } 410 }
408 411
409 static u32 get_uart_clk(void) 412 static u32 get_uart_clk(void)
410 { 413 {
411 u32 reg, uart_podf; 414 u32 reg, uart_podf;
412 u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */ 415 u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */
413 reg = __raw_readl(&imx_ccm->cscdr1); 416 reg = __raw_readl(&imx_ccm->cscdr1);
414 417
415 if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) || 418 if (is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6SX) ||
416 is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) { 419 is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL) ||
420 is_cpu_type(MXC_CPU_MX6ULL)) {
417 if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL) 421 if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL)
418 freq = MXC_HCLK; 422 freq = MXC_HCLK;
419 } 423 }
420 424
421 reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK; 425 reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK;
422 uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET; 426 uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET;
423 427
424 return freq / (uart_podf + 1); 428 return freq / (uart_podf + 1);
425 } 429 }
426 430
427 static u32 get_cspi_clk(void) 431 static u32 get_cspi_clk(void)
428 { 432 {
429 u32 reg, cspi_podf; 433 u32 reg, cspi_podf;
430 434
431 reg = __raw_readl(&imx_ccm->cscdr2); 435 reg = __raw_readl(&imx_ccm->cscdr2);
432 cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >> 436 cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >>
433 MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET; 437 MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET;
434 438
435 if (is_mx6dqp() || is_cpu_type(MXC_CPU_MX6SL) || 439 if (is_mx6dqp() || is_cpu_type(MXC_CPU_MX6SL) ||
436 is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL)) { 440 is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
441 is_cpu_type(MXC_CPU_MX6ULL)) {
437 if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK) 442 if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK)
438 return MXC_HCLK / (cspi_podf + 1); 443 return MXC_HCLK / (cspi_podf + 1);
439 } 444 }
440 445
441 return decode_pll(PLL_USBOTG, MXC_HCLK) / (8 * (cspi_podf + 1)); 446 return decode_pll(PLL_USBOTG, MXC_HCLK) / (8 * (cspi_podf + 1));
442 } 447 }
443 448
444 static u32 get_axi_clk(void) 449 static u32 get_axi_clk(void)
445 { 450 {
446 u32 root_freq, axi_podf; 451 u32 root_freq, axi_podf;
447 u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); 452 u32 cbcdr = __raw_readl(&imx_ccm->cbcdr);
448 453
449 axi_podf = cbcdr & MXC_CCM_CBCDR_AXI_PODF_MASK; 454 axi_podf = cbcdr & MXC_CCM_CBCDR_AXI_PODF_MASK;
450 axi_podf >>= MXC_CCM_CBCDR_AXI_PODF_OFFSET; 455 axi_podf >>= MXC_CCM_CBCDR_AXI_PODF_OFFSET;
451 456
452 if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) { 457 if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) {
453 if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL) 458 if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL)
454 root_freq = mxc_get_pll_pfd(PLL_BUS, 2); 459 root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
455 else 460 else
456 root_freq = mxc_get_pll_pfd(PLL_USBOTG, 1); 461 root_freq = mxc_get_pll_pfd(PLL_USBOTG, 1);
457 } else 462 } else
458 root_freq = get_periph_clk(); 463 root_freq = get_periph_clk();
459 464
460 return root_freq / (axi_podf + 1); 465 return root_freq / (axi_podf + 1);
461 } 466 }
462 467
463 static u32 get_emi_slow_clk(void) 468 static u32 get_emi_slow_clk(void)
464 { 469 {
465 u32 emi_clk_sel, emi_slow_podf, cscmr1, root_freq = 0; 470 u32 emi_clk_sel, emi_slow_podf, cscmr1, root_freq = 0;
466 471
467 cscmr1 = __raw_readl(&imx_ccm->cscmr1); 472 cscmr1 = __raw_readl(&imx_ccm->cscmr1);
468 emi_clk_sel = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK; 473 emi_clk_sel = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK;
469 emi_clk_sel >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET; 474 emi_clk_sel >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET;
470 emi_slow_podf = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK; 475 emi_slow_podf = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK;
471 emi_slow_podf >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET; 476 emi_slow_podf >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET;
472 477
473 switch (emi_clk_sel) { 478 switch (emi_clk_sel) {
474 case 0: 479 case 0:
475 root_freq = get_axi_clk(); 480 root_freq = get_axi_clk();
476 break; 481 break;
477 case 1: 482 case 1:
478 root_freq = decode_pll(PLL_USBOTG, MXC_HCLK); 483 root_freq = decode_pll(PLL_USBOTG, MXC_HCLK);
479 break; 484 break;
480 case 2: 485 case 2:
481 root_freq = mxc_get_pll_pfd(PLL_BUS, 2); 486 root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
482 break; 487 break;
483 case 3: 488 case 3:
484 root_freq = mxc_get_pll_pfd(PLL_BUS, 0); 489 root_freq = mxc_get_pll_pfd(PLL_BUS, 0);
485 break; 490 break;
486 } 491 }
487 492
488 return root_freq / (emi_slow_podf + 1); 493 return root_freq / (emi_slow_podf + 1);
489 } 494 }
490 495
491 static u32 get_mmdc_ch0_clk(void) 496 static u32 get_mmdc_ch0_clk(void)
492 { 497 {
493 u32 cbcmr = __raw_readl(&imx_ccm->cbcmr); 498 u32 cbcmr = __raw_readl(&imx_ccm->cbcmr);
494 u32 cbcdr = __raw_readl(&imx_ccm->cbcdr); 499 u32 cbcdr = __raw_readl(&imx_ccm->cbcdr);
495 500
496 u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div; 501 u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div;
497 502
498 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) || 503 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
499 is_cpu_type(MXC_CPU_MX6SL)) { 504 is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6ULL)) {
500 podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >> 505 podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >>
501 MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET; 506 MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET;
502 if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) { 507 if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) {
503 per2_clk2_podf = (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK) >> 508 per2_clk2_podf = (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK) >>
504 MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET; 509 MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET;
505 if (is_cpu_type(MXC_CPU_MX6SL)) { 510 if (is_cpu_type(MXC_CPU_MX6SL)) {
506 if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL) 511 if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
507 freq = MXC_HCLK; 512 freq = MXC_HCLK;
508 else 513 else
509 freq = decode_pll(PLL_USBOTG, MXC_HCLK); 514 freq = decode_pll(PLL_USBOTG, MXC_HCLK);
510 } else { 515 } else {
511 if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL) 516 if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
512 freq = decode_pll(PLL_BUS, MXC_HCLK); 517 freq = decode_pll(PLL_BUS, MXC_HCLK);
513 else 518 else
514 freq = decode_pll(PLL_USBOTG, MXC_HCLK); 519 freq = decode_pll(PLL_USBOTG, MXC_HCLK);
515 } 520 }
516 } else { 521 } else {
517 per2_clk2_podf = 0; 522 per2_clk2_podf = 0;
518 switch ((cbcmr & 523 switch ((cbcmr &
519 MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >> 524 MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >>
520 MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) { 525 MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) {
521 case 0: 526 case 0:
522 freq = decode_pll(PLL_BUS, MXC_HCLK); 527 freq = decode_pll(PLL_BUS, MXC_HCLK);
523 break; 528 break;
524 case 1: 529 case 1:
525 freq = mxc_get_pll_pfd(PLL_BUS, 2); 530 freq = mxc_get_pll_pfd(PLL_BUS, 2);
526 break; 531 break;
527 case 2: 532 case 2:
528 freq = mxc_get_pll_pfd(PLL_BUS, 0); 533 freq = mxc_get_pll_pfd(PLL_BUS, 0);
529 break; 534 break;
530 case 3: 535 case 3:
531 pmu_misc2_audio_div = PMU_MISC2_AUDIO_DIV(__raw_readl(&imx_ccm->pmu_misc2)); 536 pmu_misc2_audio_div = PMU_MISC2_AUDIO_DIV(__raw_readl(&imx_ccm->pmu_misc2));
532 switch (pmu_misc2_audio_div) { 537 switch (pmu_misc2_audio_div) {
533 case 0: 538 case 0:
534 case 2: 539 case 2:
535 pmu_misc2_audio_div = 1; 540 pmu_misc2_audio_div = 1;
536 break; 541 break;
537 case 1: 542 case 1:
538 pmu_misc2_audio_div = 2; 543 pmu_misc2_audio_div = 2;
539 break; 544 break;
540 case 3: 545 case 3:
541 pmu_misc2_audio_div = 4; 546 pmu_misc2_audio_div = 4;
542 break; 547 break;
543 } 548 }
544 freq = decode_pll(PLL_AUDIO, MXC_HCLK) / 549 freq = decode_pll(PLL_AUDIO, MXC_HCLK) /
545 pmu_misc2_audio_div; 550 pmu_misc2_audio_div;
546 break; 551 break;
547 } 552 }
548 } 553 }
549 return freq / (podf + 1) / (per2_clk2_podf + 1); 554 return freq / (podf + 1) / (per2_clk2_podf + 1);
550 } else { 555 } else {
551 podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >> 556 podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >>
552 MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET; 557 MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET;
553 return get_periph_clk() / (podf + 1); 558 return get_periph_clk() / (podf + 1);
554 } 559 }
555 } 560 }
556 561
557 #if defined(CONFIG_VIDEO_MXS) 562 #if defined(CONFIG_VIDEO_MXS)
558 static int enable_pll_video(u32 pll_div, u32 pll_num, u32 pll_denom, 563 static int enable_pll_video(u32 pll_div, u32 pll_num, u32 pll_denom,
559 u32 post_div) 564 u32 post_div)
560 { 565 {
561 u32 reg = 0; 566 u32 reg = 0;
562 ulong start; 567 ulong start;
563 568
564 debug("pll5 div = %d, num = %d, denom = %d\n", 569 debug("pll5 div = %d, num = %d, denom = %d\n",
565 pll_div, pll_num, pll_denom); 570 pll_div, pll_num, pll_denom);
566 571
567 /* Power up PLL5 video */ 572 /* Power up PLL5 video */
568 writel(BM_ANADIG_PLL_VIDEO_POWERDOWN | 573 writel(BM_ANADIG_PLL_VIDEO_POWERDOWN |
569 BM_ANADIG_PLL_VIDEO_BYPASS | 574 BM_ANADIG_PLL_VIDEO_BYPASS |
570 BM_ANADIG_PLL_VIDEO_DIV_SELECT | 575 BM_ANADIG_PLL_VIDEO_DIV_SELECT |
571 BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT, 576 BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT,
572 &imx_ccm->analog_pll_video_clr); 577 &imx_ccm->analog_pll_video_clr);
573 578
574 /* Set div, num and denom */ 579 /* Set div, num and denom */
575 switch (post_div) { 580 switch (post_div) {
576 case 1: 581 case 1:
577 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) | 582 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
578 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x2), 583 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x2),
579 &imx_ccm->analog_pll_video_set); 584 &imx_ccm->analog_pll_video_set);
580 break; 585 break;
581 case 2: 586 case 2:
582 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) | 587 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
583 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x1), 588 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x1),
584 &imx_ccm->analog_pll_video_set); 589 &imx_ccm->analog_pll_video_set);
585 break; 590 break;
586 case 4: 591 case 4:
587 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) | 592 writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
588 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x0), 593 BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x0),
589 &imx_ccm->analog_pll_video_set); 594 &imx_ccm->analog_pll_video_set);
590 break; 595 break;
591 default: 596 default:
592 puts("Wrong test_div!\n"); 597 puts("Wrong test_div!\n");
593 return -EINVAL; 598 return -EINVAL;
594 } 599 }
595 600
596 writel(BF_ANADIG_PLL_VIDEO_NUM_A(pll_num), 601 writel(BF_ANADIG_PLL_VIDEO_NUM_A(pll_num),
597 &imx_ccm->analog_pll_video_num); 602 &imx_ccm->analog_pll_video_num);
598 writel(BF_ANADIG_PLL_VIDEO_DENOM_B(pll_denom), 603 writel(BF_ANADIG_PLL_VIDEO_DENOM_B(pll_denom),
599 &imx_ccm->analog_pll_video_denom); 604 &imx_ccm->analog_pll_video_denom);
600 605
601 /* Wait PLL5 lock */ 606 /* Wait PLL5 lock */
602 start = get_timer(0); /* Get current timestamp */ 607 start = get_timer(0); /* Get current timestamp */
603 608
604 do { 609 do {
605 reg = readl(&imx_ccm->analog_pll_video); 610 reg = readl(&imx_ccm->analog_pll_video);
606 if (reg & BM_ANADIG_PLL_VIDEO_LOCK) { 611 if (reg & BM_ANADIG_PLL_VIDEO_LOCK) {
607 /* Enable PLL out */ 612 /* Enable PLL out */
608 writel(BM_ANADIG_PLL_VIDEO_ENABLE, 613 writel(BM_ANADIG_PLL_VIDEO_ENABLE,
609 &imx_ccm->analog_pll_video_set); 614 &imx_ccm->analog_pll_video_set);
610 return 0; 615 return 0;
611 } 616 }
612 } while (get_timer(0) < (start + 10)); /* Wait 10ms */ 617 } while (get_timer(0) < (start + 10)); /* Wait 10ms */
613 618
614 puts("Lock PLL5 timeout\n"); 619 puts("Lock PLL5 timeout\n");
615 620
616 return -ETIME; 621 return -ETIME;
617 } 622 }
618 623
619 /* 624 /*
620 * 24M--> PLL_VIDEO -> LCDIFx_PRED -> LCDIFx_PODF -> LCD 625 * 24M--> PLL_VIDEO -> LCDIFx_PRED -> LCDIFx_PODF -> LCD
621 * 626 *
622 * 'freq' using KHz as unit, see driver/video/mxsfb.c. 627 * 'freq' using KHz as unit, see driver/video/mxsfb.c.
623 */ 628 */
624 void mxs_set_lcdclk(u32 base_addr, u32 freq) 629 void mxs_set_lcdclk(u32 base_addr, u32 freq)
625 { 630 {
626 u32 reg = 0; 631 u32 reg = 0;
627 u32 hck = MXC_HCLK / 1000; 632 u32 hck = MXC_HCLK / 1000;
628 /* DIV_SELECT ranges from 27 to 54 */ 633 /* DIV_SELECT ranges from 27 to 54 */
629 u32 min = hck * 27; 634 u32 min = hck * 27;
630 u32 max = hck * 54; 635 u32 max = hck * 54;
631 u32 temp, best = 0; 636 u32 temp, best = 0;
632 u32 i, j, max_pred = 8, max_postd = 8, pred = 1, postd = 1; 637 u32 i, j, max_pred = 8, max_postd = 8, pred = 1, postd = 1;
633 u32 pll_div, pll_num, pll_denom, post_div = 1; 638 u32 pll_div, pll_num, pll_denom, post_div = 1;
634 639
635 debug("mxs_set_lcdclk, freq = %dKHz\n", freq); 640 debug("mxs_set_lcdclk, freq = %dKHz\n", freq);
636 641
637 if ((!is_cpu_type(MXC_CPU_MX6SX)) && !is_cpu_type(MXC_CPU_MX6UL)) { 642 if ((!is_cpu_type(MXC_CPU_MX6SX)) && !is_cpu_type(MXC_CPU_MX6UL) &&
643 !is_cpu_type(MXC_CPU_MX6ULL)) {
638 debug("This chip not support lcd!\n"); 644 debug("This chip not support lcd!\n");
639 return; 645 return;
640 } 646 }
641 647
642 if (base_addr == LCDIF1_BASE_ADDR) { 648 if (base_addr == LCDIF1_BASE_ADDR) {
643 reg = readl(&imx_ccm->cscdr2); 649 reg = readl(&imx_ccm->cscdr2);
644 /* Can't change clocks when clock not from pre-mux */ 650 /* Can't change clocks when clock not from pre-mux */
645 if ((reg & MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK) != 0) 651 if ((reg & MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK) != 0)
646 return; 652 return;
647 } 653 }
648 654
649 if (is_cpu_type(MXC_CPU_MX6SX)) { 655 if (is_cpu_type(MXC_CPU_MX6SX)) {
650 reg = readl(&imx_ccm->cscdr2); 656 reg = readl(&imx_ccm->cscdr2);
651 /* Can't change clocks when clock not from pre-mux */ 657 /* Can't change clocks when clock not from pre-mux */
652 if ((reg & MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK) != 0) 658 if ((reg & MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK) != 0)
653 return; 659 return;
654 } 660 }
655 661
656 temp = freq * max_pred * max_postd; 662 temp = freq * max_pred * max_postd;
657 if (temp < min) { 663 if (temp < min) {
658 /* 664 /*
659 * Register: PLL_VIDEO 665 * Register: PLL_VIDEO
660 * Bit Field: POST_DIV_SELECT 666 * Bit Field: POST_DIV_SELECT
661 * 00 โ€” Divide by 4. 667 * 00 โ€” Divide by 4.
662 * 01 โ€” Divide by 2. 668 * 01 โ€” Divide by 2.
663 * 10 โ€” Divide by 1. 669 * 10 โ€” Divide by 1.
664 * 11 โ€” Reserved 670 * 11 โ€” Reserved
665 * No need to check post_div(1) 671 * No need to check post_div(1)
666 */ 672 */
667 for (post_div = 2; post_div <= 4; post_div <<= 1) { 673 for (post_div = 2; post_div <= 4; post_div <<= 1) {
668 if ((temp * post_div) > min) { 674 if ((temp * post_div) > min) {
669 freq *= post_div; 675 freq *= post_div;
670 break; 676 break;
671 } 677 }
672 } 678 }
673 679
674 if (post_div > 4) { 680 if (post_div > 4) {
675 printf("Fail to set rate to %dkhz", freq); 681 printf("Fail to set rate to %dkhz", freq);
676 return; 682 return;
677 } 683 }
678 } 684 }
679 685
680 /* Choose the best pred and postd to match freq for lcd */ 686 /* Choose the best pred and postd to match freq for lcd */
681 for (i = 1; i <= max_pred; i++) { 687 for (i = 1; i <= max_pred; i++) {
682 for (j = 1; j <= max_postd; j++) { 688 for (j = 1; j <= max_postd; j++) {
683 temp = freq * i * j; 689 temp = freq * i * j;
684 if (temp > max || temp < min) 690 if (temp > max || temp < min)
685 continue; 691 continue;
686 if (best == 0 || temp < best) { 692 if (best == 0 || temp < best) {
687 best = temp; 693 best = temp;
688 pred = i; 694 pred = i;
689 postd = j; 695 postd = j;
690 } 696 }
691 } 697 }
692 } 698 }
693 699
694 if (best == 0) { 700 if (best == 0) {
695 printf("Fail to set rate to %dKHz", freq); 701 printf("Fail to set rate to %dKHz", freq);
696 return; 702 return;
697 } 703 }
698 704
699 debug("best %d, pred = %d, postd = %d\n", best, pred, postd); 705 debug("best %d, pred = %d, postd = %d\n", best, pred, postd);
700 706
701 pll_div = best / hck; 707 pll_div = best / hck;
702 pll_denom = 1000000; 708 pll_denom = 1000000;
703 pll_num = (best - hck * pll_div) * pll_denom / hck; 709 pll_num = (best - hck * pll_div) * pll_denom / hck;
704 710
705 /* 711 /*
706 * pll_num 712 * pll_num
707 * (24MHz * (pll_div + --------- )) 713 * (24MHz * (pll_div + --------- ))
708 * pll_denom 714 * pll_denom
709 *freq KHz = -------------------------------- 715 *freq KHz = --------------------------------
710 * post_div * pred * postd * 1000 716 * post_div * pred * postd * 1000
711 */ 717 */
712 718
713 if (base_addr == LCDIF1_BASE_ADDR) { 719 if (base_addr == LCDIF1_BASE_ADDR) {
714 if (enable_pll_video(pll_div, pll_num, pll_denom, post_div)) 720 if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
715 return; 721 return;
716 722
717 /* Select pre-lcd clock to PLL5 and set pre divider */ 723 /* Select pre-lcd clock to PLL5 and set pre divider */
718 clrsetbits_le32(&imx_ccm->cscdr2, 724 clrsetbits_le32(&imx_ccm->cscdr2,
719 MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK | 725 MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK |
720 MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK, 726 MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK,
721 (0x2 << MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET) | 727 (0x2 << MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET) |
722 ((pred - 1) << 728 ((pred - 1) <<
723 MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET)); 729 MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET));
724 730
725 /* Set the post divider */ 731 /* Set the post divider */
726 clrsetbits_le32(&imx_ccm->cbcmr, 732 clrsetbits_le32(&imx_ccm->cbcmr,
727 MXC_CCM_CBCMR_LCDIF1_PODF_MASK, 733 MXC_CCM_CBCMR_LCDIF1_PODF_MASK,
728 ((postd - 1) << 734 ((postd - 1) <<
729 MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET)); 735 MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET));
730 } else if (is_cpu_type(MXC_CPU_MX6SX)) { 736 } else if (is_cpu_type(MXC_CPU_MX6SX)) {
731 /* Setting LCDIF2 for i.MX6SX */ 737 /* Setting LCDIF2 for i.MX6SX */
732 if (enable_pll_video(pll_div, pll_num, pll_denom, post_div)) 738 if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
733 return; 739 return;
734 740
735 /* Select pre-lcd clock to PLL5 and set pre divider */ 741 /* Select pre-lcd clock to PLL5 and set pre divider */
736 clrsetbits_le32(&imx_ccm->cscdr2, 742 clrsetbits_le32(&imx_ccm->cscdr2,
737 MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK | 743 MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK |
738 MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK, 744 MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK,
739 (0x2 << MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET) | 745 (0x2 << MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET) |
740 ((pred - 1) << 746 ((pred - 1) <<
741 MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET)); 747 MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET));
742 748
743 /* Set the post divider */ 749 /* Set the post divider */
744 clrsetbits_le32(&imx_ccm->cscmr1, 750 clrsetbits_le32(&imx_ccm->cscmr1,
745 MXC_CCM_CSCMR1_LCDIF2_PODF_MASK, 751 MXC_CCM_CSCMR1_LCDIF2_PODF_MASK,
746 ((postd - 1) << 752 ((postd - 1) <<
747 MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET)); 753 MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET));
748 } 754 }
749 } 755 }
750 756
751 int enable_lcdif_clock(u32 base_addr) 757 int enable_lcdif_clock(u32 base_addr)
752 { 758 {
753 u32 reg = 0; 759 u32 reg = 0;
754 u32 lcdif_clk_sel_mask, lcdif_ccgr3_mask; 760 u32 lcdif_clk_sel_mask, lcdif_ccgr3_mask;
755 761
756 if (is_cpu_type(MXC_CPU_MX6SX)) { 762 if (is_cpu_type(MXC_CPU_MX6SX)) {
757 if ((base_addr != LCDIF1_BASE_ADDR) && 763 if ((base_addr != LCDIF1_BASE_ADDR) &&
758 (base_addr != LCDIF2_BASE_ADDR)) { 764 (base_addr != LCDIF2_BASE_ADDR)) {
759 puts("Wrong LCD interface!\n"); 765 puts("Wrong LCD interface!\n");
760 return -EINVAL; 766 return -EINVAL;
761 } 767 }
762 /* Set to pre-mux clock at default */ 768 /* Set to pre-mux clock at default */
763 lcdif_clk_sel_mask = (base_addr == LCDIF2_BASE_ADDR) ? 769 lcdif_clk_sel_mask = (base_addr == LCDIF2_BASE_ADDR) ?
764 MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK : 770 MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK :
765 MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK; 771 MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
766 lcdif_ccgr3_mask = (base_addr == LCDIF2_BASE_ADDR) ? 772 lcdif_ccgr3_mask = (base_addr == LCDIF2_BASE_ADDR) ?
767 (MXC_CCM_CCGR3_LCDIF2_PIX_MASK | 773 (MXC_CCM_CCGR3_LCDIF2_PIX_MASK |
768 MXC_CCM_CCGR3_DISP_AXI_MASK) : 774 MXC_CCM_CCGR3_DISP_AXI_MASK) :
769 (MXC_CCM_CCGR3_LCDIF1_PIX_MASK | 775 (MXC_CCM_CCGR3_LCDIF1_PIX_MASK |
770 MXC_CCM_CCGR3_DISP_AXI_MASK); 776 MXC_CCM_CCGR3_DISP_AXI_MASK);
771 } else if (is_cpu_type(MXC_CPU_MX6UL)) { 777 } else if (is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) {
772 if (base_addr != LCDIF1_BASE_ADDR) { 778 if (base_addr != LCDIF1_BASE_ADDR) {
773 puts("Wrong LCD interface!\n"); 779 puts("Wrong LCD interface!\n");
774 return -EINVAL; 780 return -EINVAL;
775 } 781 }
776 /* Set to pre-mux clock at default */ 782 /* Set to pre-mux clock at default */
777 lcdif_clk_sel_mask = MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK; 783 lcdif_clk_sel_mask = MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
778 lcdif_ccgr3_mask = MXC_CCM_CCGR3_LCDIF1_PIX_MASK; 784 lcdif_ccgr3_mask = MXC_CCM_CCGR3_LCDIF1_PIX_MASK;
779 } else { 785 } else {
780 return 0; 786 return 0;
781 } 787 }
782 788
783 reg = readl(&imx_ccm->cscdr2); 789 reg = readl(&imx_ccm->cscdr2);
784 reg &= ~lcdif_clk_sel_mask; 790 reg &= ~lcdif_clk_sel_mask;
785 writel(reg, &imx_ccm->cscdr2); 791 writel(reg, &imx_ccm->cscdr2);
786 792
787 /* Enable the LCDIF pix clock */ 793 /* Enable the LCDIF pix clock */
788 reg = readl(&imx_ccm->CCGR3); 794 reg = readl(&imx_ccm->CCGR3);
789 reg |= lcdif_ccgr3_mask; 795 reg |= lcdif_ccgr3_mask;
790 writel(reg, &imx_ccm->CCGR3); 796 writel(reg, &imx_ccm->CCGR3);
791 797
792 reg = readl(&imx_ccm->CCGR2); 798 reg = readl(&imx_ccm->CCGR2);
793 reg |= MXC_CCM_CCGR2_LCD_MASK; 799 reg |= MXC_CCM_CCGR2_LCD_MASK;
794 writel(reg, &imx_ccm->CCGR2); 800 writel(reg, &imx_ccm->CCGR2);
795 801
796 return 0; 802 return 0;
797 } 803 }
798 804
799 int enable_lvds_bridge(u32 lcd_base_addr) 805 int enable_lvds_bridge(u32 lcd_base_addr)
800 { 806 {
801 u32 reg = 0; 807 u32 reg = 0;
802 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR; 808 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
803 809
804 if (is_cpu_type(MXC_CPU_MX6SX)) { 810 if (is_cpu_type(MXC_CPU_MX6SX)) {
805 if ((lcd_base_addr != LCDIF1_BASE_ADDR) && 811 if ((lcd_base_addr != LCDIF1_BASE_ADDR) &&
806 (lcd_base_addr != LCDIF2_BASE_ADDR)) { 812 (lcd_base_addr != LCDIF2_BASE_ADDR)) {
807 puts("Wrong LCD interface!\n"); 813 puts("Wrong LCD interface!\n");
808 return -EINVAL; 814 return -EINVAL;
809 } 815 }
810 } else { 816 } else {
811 debug("This chip not support lvds bridge!\n"); 817 debug("This chip not support lvds bridge!\n");
812 return 0; 818 return 0;
813 } 819 }
814 820
815 /* Turn on LDB DI0 clocks */ 821 /* Turn on LDB DI0 clocks */
816 reg = readl(&imx_ccm->CCGR3); 822 reg = readl(&imx_ccm->CCGR3);
817 reg |= MXC_CCM_CCGR3_LDB_DI0_MASK; 823 reg |= MXC_CCM_CCGR3_LDB_DI0_MASK;
818 writel(reg, &imx_ccm->CCGR3); 824 writel(reg, &imx_ccm->CCGR3);
819 825
820 /* set LDB DI0 clk select to 011 PLL2 PFD3 200M*/ 826 /* set LDB DI0 clk select to 011 PLL2 PFD3 200M*/
821 reg = readl(&imx_ccm->cs2cdr); 827 reg = readl(&imx_ccm->cs2cdr);
822 reg &= ~MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK; 828 reg &= ~MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK;
823 reg |= (3 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET); 829 reg |= (3 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET);
824 writel(reg, &imx_ccm->cs2cdr); 830 writel(reg, &imx_ccm->cs2cdr);
825 831
826 reg = readl(&imx_ccm->cscmr2); 832 reg = readl(&imx_ccm->cscmr2);
827 reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV; 833 reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV;
828 writel(reg, &imx_ccm->cscmr2); 834 writel(reg, &imx_ccm->cscmr2);
829 835
830 /* set LDB DI0 clock for LCDIF PIX clock */ 836 /* set LDB DI0 clock for LCDIF PIX clock */
831 reg = readl(&imx_ccm->cscdr2); 837 reg = readl(&imx_ccm->cscdr2);
832 if (lcd_base_addr == LCDIF1_BASE_ADDR) { 838 if (lcd_base_addr == LCDIF1_BASE_ADDR) {
833 reg &= ~MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK; 839 reg &= ~MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
834 reg |= (0x3 << MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_OFFSET); 840 reg |= (0x3 << MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_OFFSET);
835 } else { 841 } else {
836 reg &= ~MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK; 842 reg &= ~MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK;
837 reg |= (0x3 << MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_OFFSET); 843 reg |= (0x3 << MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_OFFSET);
838 } 844 }
839 writel(reg, &imx_ccm->cscdr2); 845 writel(reg, &imx_ccm->cscdr2);
840 846
841 reg = IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW 847 reg = IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW
842 | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG 848 | IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG
843 | IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT 849 | IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT
844 | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0; 850 | IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0;
845 writel(reg, &iomux->gpr[6]); 851 writel(reg, &iomux->gpr[6]);
846 852
847 reg = readl(&iomux->gpr[5]); 853 reg = readl(&iomux->gpr[5]);
848 if (lcd_base_addr == LCDIF1_BASE_ADDR) 854 if (lcd_base_addr == LCDIF1_BASE_ADDR)
849 reg &= ~0x8; /* MUX LVDS to LCDIF1 */ 855 reg &= ~0x8; /* MUX LVDS to LCDIF1 */
850 else 856 else
851 reg |= 0x8; /* MUX LVDS to LCDIF2 */ 857 reg |= 0x8; /* MUX LVDS to LCDIF2 */
852 writel(reg, &iomux->gpr[5]); 858 writel(reg, &iomux->gpr[5]);
853 859
854 return 0; 860 return 0;
855 } 861 }
856 862
857 #endif 863 #endif
858 864
859 #ifdef CONFIG_FSL_QSPI 865 #ifdef CONFIG_FSL_QSPI
860 /* qspi_num can be from 0 - 1 */ 866 /* qspi_num can be from 0 - 1 */
861 void enable_qspi_clk(int qspi_num) 867 void enable_qspi_clk(int qspi_num)
862 { 868 {
863 u32 reg = 0; 869 u32 reg = 0;
864 /* Enable QuadSPI clock */ 870 /* Enable QuadSPI clock */
865 switch (qspi_num) { 871 switch (qspi_num) {
866 case 0: 872 case 0:
867 /* disable the clock gate */ 873 /* disable the clock gate */
868 clrbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK); 874 clrbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
869 875
870 /* set 50M : (50 = 396 / 2 / 4) */ 876 /* set 50M : (50 = 396 / 2 / 4) */
871 reg = readl(&imx_ccm->cscmr1); 877 reg = readl(&imx_ccm->cscmr1);
872 reg &= ~(MXC_CCM_CSCMR1_QSPI1_PODF_MASK | 878 reg &= ~(MXC_CCM_CSCMR1_QSPI1_PODF_MASK |
873 MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK); 879 MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK);
874 reg |= ((1 << MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET) | 880 reg |= ((1 << MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET) |
875 (2 << MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET)); 881 (2 << MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET));
876 writel(reg, &imx_ccm->cscmr1); 882 writel(reg, &imx_ccm->cscmr1);
877 883
878 /* enable the clock gate */ 884 /* enable the clock gate */
879 setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK); 885 setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
880 break; 886 break;
881 case 1: 887 case 1:
882 /* 888 /*
883 * disable the clock gate 889 * disable the clock gate
884 * QSPI2 and GPMI_BCH_INPUT_GPMI_IO share the same clock gate, 890 * QSPI2 and GPMI_BCH_INPUT_GPMI_IO share the same clock gate,
885 * disable both of them. 891 * disable both of them.
886 */ 892 */
887 clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK | 893 clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
888 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK); 894 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
889 895
890 /* set 50M : (50 = 396 / 2 / 4) */ 896 /* set 50M : (50 = 396 / 2 / 4) */
891 reg = readl(&imx_ccm->cs2cdr); 897 reg = readl(&imx_ccm->cs2cdr);
892 reg &= ~(MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK | 898 reg &= ~(MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
893 MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK | 899 MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
894 MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK); 900 MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK);
895 reg |= (MXC_CCM_CS2CDR_QSPI2_CLK_PRED(0x1) | 901 reg |= (MXC_CCM_CS2CDR_QSPI2_CLK_PRED(0x1) |
896 MXC_CCM_CS2CDR_QSPI2_CLK_SEL(0x3)); 902 MXC_CCM_CS2CDR_QSPI2_CLK_SEL(0x3));
897 writel(reg, &imx_ccm->cs2cdr); 903 writel(reg, &imx_ccm->cs2cdr);
898 904
899 /*enable the clock gate*/ 905 /*enable the clock gate*/
900 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK | 906 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
901 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK); 907 MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
902 break; 908 break;
903 default: 909 default:
904 break; 910 break;
905 } 911 }
906 } 912 }
907 #endif 913 #endif
908 914
909 #if defined(CONFIG_VIDEO_GIS) 915 #if defined(CONFIG_VIDEO_GIS)
910 void mxs_set_vadcclk() 916 void mxs_set_vadcclk()
911 { 917 {
912 u32 reg = 0; 918 u32 reg = 0;
913 919
914 reg = readl(&imx_ccm->cscmr2); 920 reg = readl(&imx_ccm->cscmr2);
915 reg &= ~MXC_CCM_CSCMR2_VID_CLK_SEL_MASK; 921 reg &= ~MXC_CCM_CSCMR2_VID_CLK_SEL_MASK;
916 reg |= 0x19 << MXC_CCM_CSCMR2_VID_CLK_SEL_OFFSET; 922 reg |= 0x19 << MXC_CCM_CSCMR2_VID_CLK_SEL_OFFSET;
917 writel(reg, &imx_ccm->cscmr2); 923 writel(reg, &imx_ccm->cscmr2);
918 } 924 }
919 #endif 925 #endif
920 926
921 #ifdef CONFIG_FEC_MXC 927 #ifdef CONFIG_FEC_MXC
922 int enable_fec_anatop_clock(int fec_id, enum enet_freq freq) 928 int enable_fec_anatop_clock(int fec_id, enum enet_freq freq)
923 { 929 {
924 u32 reg = 0; 930 u32 reg = 0;
925 s32 timeout = 100000; 931 s32 timeout = 100000;
926 932
927 struct anatop_regs __iomem *anatop = 933 struct anatop_regs __iomem *anatop =
928 (struct anatop_regs __iomem *)ANATOP_BASE_ADDR; 934 (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
929 935
930 if (freq < ENET_25MHZ || freq > ENET_125MHZ) 936 if (freq < ENET_25MHZ || freq > ENET_125MHZ)
931 return -EINVAL; 937 return -EINVAL;
932 938
933 reg = readl(&anatop->pll_enet); 939 reg = readl(&anatop->pll_enet);
934 940
935 if (fec_id == 0) { 941 if (fec_id == 0) {
936 reg &= ~BM_ANADIG_PLL_ENET_DIV_SELECT; 942 reg &= ~BM_ANADIG_PLL_ENET_DIV_SELECT;
937 reg |= BF_ANADIG_PLL_ENET_DIV_SELECT(freq); 943 reg |= BF_ANADIG_PLL_ENET_DIV_SELECT(freq);
938 } else if (fec_id == 1) { 944 } else if (fec_id == 1) {
939 /* Only i.MX6SX/UL support ENET2 */ 945 /* Only i.MX6SX/UL support ENET2 */
940 if (!(is_cpu_type(MXC_CPU_MX6SX) || 946 if (!(is_cpu_type(MXC_CPU_MX6SX) ||
941 is_cpu_type(MXC_CPU_MX6UL))) 947 is_cpu_type(MXC_CPU_MX6UL) ||
948 is_cpu_type(MXC_CPU_MX6ULL)))
942 return -EINVAL; 949 return -EINVAL;
943 reg &= ~BM_ANADIG_PLL_ENET2_DIV_SELECT; 950 reg &= ~BM_ANADIG_PLL_ENET2_DIV_SELECT;
944 reg |= BF_ANADIG_PLL_ENET2_DIV_SELECT(freq); 951 reg |= BF_ANADIG_PLL_ENET2_DIV_SELECT(freq);
945 } else { 952 } else {
946 return -EINVAL; 953 return -EINVAL;
947 } 954 }
948 955
949 if ((reg & BM_ANADIG_PLL_ENET_POWERDOWN) || 956 if ((reg & BM_ANADIG_PLL_ENET_POWERDOWN) ||
950 (!(reg & BM_ANADIG_PLL_ENET_LOCK))) { 957 (!(reg & BM_ANADIG_PLL_ENET_LOCK))) {
951 reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN; 958 reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN;
952 writel(reg, &anatop->pll_enet); 959 writel(reg, &anatop->pll_enet);
953 while (timeout--) { 960 while (timeout--) {
954 if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK) 961 if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
955 break; 962 break;
956 } 963 }
957 if (timeout < 0) 964 if (timeout < 0)
958 return -ETIMEDOUT; 965 return -ETIMEDOUT;
959 } 966 }
960 967
961 /* Enable FEC clock */ 968 /* Enable FEC clock */
962 if (fec_id == 0) 969 if (fec_id == 0)
963 reg |= BM_ANADIG_PLL_ENET_ENABLE; 970 reg |= BM_ANADIG_PLL_ENET_ENABLE;
964 else 971 else
965 reg |= BM_ANADIG_PLL_ENET2_ENABLE; 972 reg |= BM_ANADIG_PLL_ENET2_ENABLE;
966 reg &= ~BM_ANADIG_PLL_ENET_BYPASS; 973 reg &= ~BM_ANADIG_PLL_ENET_BYPASS;
967 writel(reg, &anatop->pll_enet); 974 writel(reg, &anatop->pll_enet);
968 975
969 #ifdef CONFIG_MX6SX 976 #ifdef CONFIG_MX6SX
970 /* 977 /*
971 * Set enet ahb clock to 200MHz 978 * Set enet ahb clock to 200MHz
972 * pll2_pfd2_396m-> ENET_PODF-> ENET_AHB 979 * pll2_pfd2_396m-> ENET_PODF-> ENET_AHB
973 */ 980 */
974 reg = readl(&imx_ccm->chsccdr); 981 reg = readl(&imx_ccm->chsccdr);
975 reg &= ~(MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK 982 reg &= ~(MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK
976 | MXC_CCM_CHSCCDR_ENET_PODF_MASK 983 | MXC_CCM_CHSCCDR_ENET_PODF_MASK
977 | MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK); 984 | MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK);
978 /* PLL2 PFD2 */ 985 /* PLL2 PFD2 */
979 reg |= (4 << MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET); 986 reg |= (4 << MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET);
980 /* Div = 2*/ 987 /* Div = 2*/
981 reg |= (1 << MXC_CCM_CHSCCDR_ENET_PODF_OFFSET); 988 reg |= (1 << MXC_CCM_CHSCCDR_ENET_PODF_OFFSET);
982 reg |= (0 << MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET); 989 reg |= (0 << MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET);
983 writel(reg, &imx_ccm->chsccdr); 990 writel(reg, &imx_ccm->chsccdr);
984 991
985 /* Enable enet system clock */ 992 /* Enable enet system clock */
986 reg = readl(&imx_ccm->CCGR3); 993 reg = readl(&imx_ccm->CCGR3);
987 reg |= MXC_CCM_CCGR3_ENET_MASK; 994 reg |= MXC_CCM_CCGR3_ENET_MASK;
988 writel(reg, &imx_ccm->CCGR3); 995 writel(reg, &imx_ccm->CCGR3);
989 #endif 996 #endif
990 return 0; 997 return 0;
991 } 998 }
992 #endif 999 #endif
993 1000
994 static u32 get_usdhc_clk(u32 port) 1001 static u32 get_usdhc_clk(u32 port)
995 { 1002 {
996 u32 root_freq = 0, usdhc_podf = 0, clk_sel = 0; 1003 u32 root_freq = 0, usdhc_podf = 0, clk_sel = 0;
997 u32 cscmr1 = __raw_readl(&imx_ccm->cscmr1); 1004 u32 cscmr1 = __raw_readl(&imx_ccm->cscmr1);
998 u32 cscdr1 = __raw_readl(&imx_ccm->cscdr1); 1005 u32 cscdr1 = __raw_readl(&imx_ccm->cscdr1);
999 1006
1000 switch (port) { 1007 switch (port) {
1001 case 0: 1008 case 0:
1002 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC1_PODF_MASK) >> 1009 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC1_PODF_MASK) >>
1003 MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET; 1010 MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET;
1004 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC1_CLK_SEL; 1011 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC1_CLK_SEL;
1005 1012
1006 break; 1013 break;
1007 case 1: 1014 case 1:
1008 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC2_PODF_MASK) >> 1015 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC2_PODF_MASK) >>
1009 MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET; 1016 MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET;
1010 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC2_CLK_SEL; 1017 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC2_CLK_SEL;
1011 1018
1012 break; 1019 break;
1013 case 2: 1020 case 2:
1014 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC3_PODF_MASK) >> 1021 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC3_PODF_MASK) >>
1015 MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET; 1022 MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET;
1016 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC3_CLK_SEL; 1023 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC3_CLK_SEL;
1017 1024
1018 break; 1025 break;
1019 case 3: 1026 case 3:
1020 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC4_PODF_MASK) >> 1027 usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC4_PODF_MASK) >>
1021 MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET; 1028 MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET;
1022 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC4_CLK_SEL; 1029 clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC4_CLK_SEL;
1023 1030
1024 break; 1031 break;
1025 default: 1032 default:
1026 break; 1033 break;
1027 } 1034 }
1028 1035
1029 if (clk_sel) 1036 if (clk_sel)
1030 root_freq = mxc_get_pll_pfd(PLL_BUS, 0); 1037 root_freq = mxc_get_pll_pfd(PLL_BUS, 0);
1031 else 1038 else
1032 root_freq = mxc_get_pll_pfd(PLL_BUS, 2); 1039 root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
1033 1040
1034 return root_freq / (usdhc_podf + 1); 1041 return root_freq / (usdhc_podf + 1);
1035 } 1042 }
1036 1043
1037 u32 imx_get_uartclk(void) 1044 u32 imx_get_uartclk(void)
1038 { 1045 {
1039 return get_uart_clk(); 1046 return get_uart_clk();
1040 } 1047 }
1041 1048
1042 u32 imx_get_fecclk(void) 1049 u32 imx_get_fecclk(void)
1043 { 1050 {
1044 return mxc_get_clock(MXC_IPG_CLK); 1051 return mxc_get_clock(MXC_IPG_CLK);
1045 } 1052 }
1046 1053
1047 #if defined(CONFIG_CMD_SATA) || defined(CONFIG_PCIE_IMX) 1054 #if defined(CONFIG_CMD_SATA) || defined(CONFIG_PCIE_IMX)
1048 static int enable_enet_pll(uint32_t en) 1055 static int enable_enet_pll(uint32_t en)
1049 { 1056 {
1050 struct mxc_ccm_reg *const imx_ccm 1057 struct mxc_ccm_reg *const imx_ccm
1051 = (struct mxc_ccm_reg *) CCM_BASE_ADDR; 1058 = (struct mxc_ccm_reg *) CCM_BASE_ADDR;
1052 s32 timeout = 100000; 1059 s32 timeout = 100000;
1053 u32 reg = 0; 1060 u32 reg = 0;
1054 1061
1055 /* Enable PLLs */ 1062 /* Enable PLLs */
1056 reg = readl(&imx_ccm->analog_pll_enet); 1063 reg = readl(&imx_ccm->analog_pll_enet);
1057 reg &= ~BM_ANADIG_PLL_SYS_POWERDOWN; 1064 reg &= ~BM_ANADIG_PLL_SYS_POWERDOWN;
1058 writel(reg, &imx_ccm->analog_pll_enet); 1065 writel(reg, &imx_ccm->analog_pll_enet);
1059 reg |= BM_ANADIG_PLL_SYS_ENABLE; 1066 reg |= BM_ANADIG_PLL_SYS_ENABLE;
1060 while (timeout--) { 1067 while (timeout--) {
1061 if (readl(&imx_ccm->analog_pll_enet) & BM_ANADIG_PLL_SYS_LOCK) 1068 if (readl(&imx_ccm->analog_pll_enet) & BM_ANADIG_PLL_SYS_LOCK)
1062 break; 1069 break;
1063 } 1070 }
1064 if (timeout <= 0) 1071 if (timeout <= 0)
1065 return -EIO; 1072 return -EIO;
1066 reg &= ~BM_ANADIG_PLL_SYS_BYPASS; 1073 reg &= ~BM_ANADIG_PLL_SYS_BYPASS;
1067 writel(reg, &imx_ccm->analog_pll_enet); 1074 writel(reg, &imx_ccm->analog_pll_enet);
1068 reg |= en; 1075 reg |= en;
1069 writel(reg, &imx_ccm->analog_pll_enet); 1076 writel(reg, &imx_ccm->analog_pll_enet);
1070 return 0; 1077 return 0;
1071 } 1078 }
1072 #endif 1079 #endif
1073 1080
1074 #ifdef CONFIG_CMD_SATA 1081 #ifdef CONFIG_CMD_SATA
1075 static void ungate_sata_clock(void) 1082 static void ungate_sata_clock(void)
1076 { 1083 {
1077 struct mxc_ccm_reg *const imx_ccm = 1084 struct mxc_ccm_reg *const imx_ccm =
1078 (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1085 (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1079 1086
1080 /* Enable SATA clock. */ 1087 /* Enable SATA clock. */
1081 setbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK); 1088 setbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
1082 } 1089 }
1083 1090
1084 int enable_sata_clock(void) 1091 int enable_sata_clock(void)
1085 { 1092 {
1086 ungate_sata_clock(); 1093 ungate_sata_clock();
1087 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA); 1094 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA);
1088 } 1095 }
1089 1096
1090 void disable_sata_clock(void) 1097 void disable_sata_clock(void)
1091 { 1098 {
1092 struct mxc_ccm_reg *const imx_ccm = 1099 struct mxc_ccm_reg *const imx_ccm =
1093 (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1100 (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1094 1101
1095 clrbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK); 1102 clrbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
1096 } 1103 }
1097 #endif 1104 #endif
1098 1105
1099 #ifdef CONFIG_PCIE_IMX 1106 #ifdef CONFIG_PCIE_IMX
1100 static void ungate_disp_axi_clock(void) 1107 static void ungate_disp_axi_clock(void)
1101 { 1108 {
1102 struct mxc_ccm_reg *const imx_ccm = 1109 struct mxc_ccm_reg *const imx_ccm =
1103 (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1110 (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1104 1111
1105 /* Enable display axi clock. */ 1112 /* Enable display axi clock. */
1106 setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_DISP_AXI_MASK); 1113 setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_DISP_AXI_MASK);
1107 } 1114 }
1108 1115
1109 static void ungate_pcie_clock(void) 1116 static void ungate_pcie_clock(void)
1110 { 1117 {
1111 struct mxc_ccm_reg *const imx_ccm = 1118 struct mxc_ccm_reg *const imx_ccm =
1112 (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1119 (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1113 1120
1114 /* Enable PCIe clock. */ 1121 /* Enable PCIe clock. */
1115 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK); 1122 setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK);
1116 } 1123 }
1117 1124
1118 int enable_pcie_clock(void) 1125 int enable_pcie_clock(void)
1119 { 1126 {
1120 struct anatop_regs *anatop_regs = 1127 struct anatop_regs *anatop_regs =
1121 (struct anatop_regs *)ANATOP_BASE_ADDR; 1128 (struct anatop_regs *)ANATOP_BASE_ADDR;
1122 struct mxc_ccm_reg *ccm_regs = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1129 struct mxc_ccm_reg *ccm_regs = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1123 u32 lvds1_clk_sel; 1130 u32 lvds1_clk_sel;
1124 1131
1125 /* 1132 /*
1126 * Here be dragons! 1133 * Here be dragons!
1127 * 1134 *
1128 * The register ANATOP_MISC1 is not documented in the Freescale 1135 * The register ANATOP_MISC1 is not documented in the Freescale
1129 * MX6RM. The register that is mapped in the ANATOP space and 1136 * MX6RM. The register that is mapped in the ANATOP space and
1130 * marked as ANATOP_MISC1 is actually documented in the PMU section 1137 * marked as ANATOP_MISC1 is actually documented in the PMU section
1131 * of the datasheet as PMU_MISC1. 1138 * of the datasheet as PMU_MISC1.
1132 * 1139 *
1133 * Switch LVDS clock source to SATA (0xb) on mx6q/dl or PCI (0xa) on 1140 * Switch LVDS clock source to SATA (0xb) on mx6q/dl or PCI (0xa) on
1134 * mx6sx, disable clock INPUT and enable clock OUTPUT. This is important 1141 * mx6sx, disable clock INPUT and enable clock OUTPUT. This is important
1135 * for PCI express link that is clocked from the i.MX6. 1142 * for PCI express link that is clocked from the i.MX6.
1136 */ 1143 */
1137 #define ANADIG_ANA_MISC1_LVDSCLK1_IBEN (1 << 12) 1144 #define ANADIG_ANA_MISC1_LVDSCLK1_IBEN (1 << 12)
1138 #define ANADIG_ANA_MISC1_LVDSCLK1_OBEN (1 << 10) 1145 #define ANADIG_ANA_MISC1_LVDSCLK1_OBEN (1 << 10)
1139 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK 0x0000001F 1146 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK 0x0000001F
1140 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF 0xa 1147 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF 0xa
1141 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF 0xb 1148 #define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF 0xb
1142 1149
1143 if (is_cpu_type(MXC_CPU_MX6SX)) 1150 if (is_cpu_type(MXC_CPU_MX6SX))
1144 lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF; 1151 lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF;
1145 else 1152 else
1146 lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF; 1153 lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF;
1147 1154
1148 clrsetbits_le32(&anatop_regs->ana_misc1, 1155 clrsetbits_le32(&anatop_regs->ana_misc1,
1149 ANADIG_ANA_MISC1_LVDSCLK1_IBEN | 1156 ANADIG_ANA_MISC1_LVDSCLK1_IBEN |
1150 ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK, 1157 ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK,
1151 ANADIG_ANA_MISC1_LVDSCLK1_OBEN | lvds1_clk_sel); 1158 ANADIG_ANA_MISC1_LVDSCLK1_OBEN | lvds1_clk_sel);
1152 1159
1153 /* PCIe reference clock sourced from AXI. */ 1160 /* PCIe reference clock sourced from AXI. */
1154 clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL); 1161 clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL);
1155 1162
1156 if (!is_cpu_type(MXC_CPU_MX6SX)) { 1163 if (!is_cpu_type(MXC_CPU_MX6SX)) {
1157 /* Party time! Ungate the clock to the PCIe. */ 1164 /* Party time! Ungate the clock to the PCIe. */
1158 #ifdef CONFIG_CMD_SATA 1165 #ifdef CONFIG_CMD_SATA
1159 ungate_sata_clock(); 1166 ungate_sata_clock();
1160 #endif 1167 #endif
1161 ungate_pcie_clock(); 1168 ungate_pcie_clock();
1162 1169
1163 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA | 1170 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA |
1164 BM_ANADIG_PLL_ENET_ENABLE_PCIE); 1171 BM_ANADIG_PLL_ENET_ENABLE_PCIE);
1165 } else { 1172 } else {
1166 /* Party time! Ungate the clock to the PCIe. */ 1173 /* Party time! Ungate the clock to the PCIe. */
1167 ungate_disp_axi_clock(); 1174 ungate_disp_axi_clock();
1168 ungate_pcie_clock(); 1175 ungate_pcie_clock();
1169 1176
1170 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_PCIE); 1177 return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_PCIE);
1171 } 1178 }
1172 } 1179 }
1173 #endif 1180 #endif
1174 1181
1175 #ifdef CONFIG_SECURE_BOOT 1182 #ifdef CONFIG_SECURE_BOOT
1176 void hab_caam_clock_enable(unsigned char enable) 1183 void hab_caam_clock_enable(unsigned char enable)
1177 { 1184 {
1178 u32 reg; 1185 u32 reg;
1179 1186
1180 if (is_cpu_type(MXC_CPU_MX6ULL)) { 1187 if (is_cpu_type(MXC_CPU_MX6ULL)) {
1181 /* CG5, DCP clock */ 1188 /* CG5, DCP clock */
1182 reg = __raw_readl(&imx_ccm->CCGR0); 1189 reg = __raw_readl(&imx_ccm->CCGR0);
1183 if (enable) 1190 if (enable)
1184 reg |= MXC_CCM_CCGR0_DCP_CLK_MASK; 1191 reg |= MXC_CCM_CCGR0_DCP_CLK_MASK;
1185 else 1192 else
1186 reg &= ~MXC_CCM_CCGR0_DCP_CLK_MASK; 1193 reg &= ~MXC_CCM_CCGR0_DCP_CLK_MASK;
1187 __raw_writel(reg, &imx_ccm->CCGR0); 1194 __raw_writel(reg, &imx_ccm->CCGR0);
1188 } else { 1195 } else {
1189 /* CG4 ~ CG6, CAAM clocks */ 1196 /* CG4 ~ CG6, CAAM clocks */
1190 reg = __raw_readl(&imx_ccm->CCGR0); 1197 reg = __raw_readl(&imx_ccm->CCGR0);
1191 if (enable) 1198 if (enable)
1192 reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK | 1199 reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
1193 MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK | 1200 MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
1194 MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK); 1201 MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
1195 else 1202 else
1196 reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK | 1203 reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
1197 MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK | 1204 MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
1198 MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK); 1205 MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
1199 __raw_writel(reg, &imx_ccm->CCGR0); 1206 __raw_writel(reg, &imx_ccm->CCGR0);
1200 } 1207 }
1201 1208
1202 /* EMI slow clk */ 1209 /* EMI slow clk */
1203 reg = __raw_readl(&imx_ccm->CCGR6); 1210 reg = __raw_readl(&imx_ccm->CCGR6);
1204 if (enable) 1211 if (enable)
1205 reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK; 1212 reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
1206 else 1213 else
1207 reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK; 1214 reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
1208 __raw_writel(reg, &imx_ccm->CCGR6); 1215 __raw_writel(reg, &imx_ccm->CCGR6);
1209 } 1216 }
1210 #endif 1217 #endif
1211 1218
1212 static void enable_pll3(void) 1219 static void enable_pll3(void)
1213 { 1220 {
1214 struct anatop_regs __iomem *anatop = 1221 struct anatop_regs __iomem *anatop =
1215 (struct anatop_regs __iomem *)ANATOP_BASE_ADDR; 1222 (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
1216 1223
1217 /* make sure pll3 is enabled */ 1224 /* make sure pll3 is enabled */
1218 if ((readl(&anatop->usb1_pll_480_ctrl) & 1225 if ((readl(&anatop->usb1_pll_480_ctrl) &
1219 BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) { 1226 BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) {
1220 /* enable pll's power */ 1227 /* enable pll's power */
1221 writel(BM_ANADIG_USB1_PLL_480_CTRL_POWER, 1228 writel(BM_ANADIG_USB1_PLL_480_CTRL_POWER,
1222 &anatop->usb1_pll_480_ctrl_set); 1229 &anatop->usb1_pll_480_ctrl_set);
1223 writel(0x80, &anatop->ana_misc2_clr); 1230 writel(0x80, &anatop->ana_misc2_clr);
1224 /* wait for pll lock */ 1231 /* wait for pll lock */
1225 while ((readl(&anatop->usb1_pll_480_ctrl) & 1232 while ((readl(&anatop->usb1_pll_480_ctrl) &
1226 BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) 1233 BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0)
1227 ; 1234 ;
1228 /* disable bypass */ 1235 /* disable bypass */
1229 writel(BM_ANADIG_USB1_PLL_480_CTRL_BYPASS, 1236 writel(BM_ANADIG_USB1_PLL_480_CTRL_BYPASS,
1230 &anatop->usb1_pll_480_ctrl_clr); 1237 &anatop->usb1_pll_480_ctrl_clr);
1231 /* enable pll output */ 1238 /* enable pll output */
1232 writel(BM_ANADIG_USB1_PLL_480_CTRL_ENABLE, 1239 writel(BM_ANADIG_USB1_PLL_480_CTRL_ENABLE,
1233 &anatop->usb1_pll_480_ctrl_set); 1240 &anatop->usb1_pll_480_ctrl_set);
1234 } 1241 }
1235 } 1242 }
1236 1243
1237 void enable_thermal_clk(void) 1244 void enable_thermal_clk(void)
1238 { 1245 {
1239 enable_pll3(); 1246 enable_pll3();
1240 } 1247 }
1241 1248
1242 unsigned int mxc_get_clock(enum mxc_clock clk) 1249 unsigned int mxc_get_clock(enum mxc_clock clk)
1243 { 1250 {
1244 switch (clk) { 1251 switch (clk) {
1245 case MXC_ARM_CLK: 1252 case MXC_ARM_CLK:
1246 return get_mcu_main_clk(); 1253 return get_mcu_main_clk();
1247 case MXC_PER_CLK: 1254 case MXC_PER_CLK:
1248 return get_periph_clk(); 1255 return get_periph_clk();
1249 case MXC_AHB_CLK: 1256 case MXC_AHB_CLK:
1250 return get_ahb_clk(); 1257 return get_ahb_clk();
1251 case MXC_IPG_CLK: 1258 case MXC_IPG_CLK:
1252 return get_ipg_clk(); 1259 return get_ipg_clk();
1253 case MXC_IPG_PERCLK: 1260 case MXC_IPG_PERCLK:
1254 case MXC_I2C_CLK: 1261 case MXC_I2C_CLK:
1255 return get_ipg_per_clk(); 1262 return get_ipg_per_clk();
1256 case MXC_UART_CLK: 1263 case MXC_UART_CLK:
1257 return get_uart_clk(); 1264 return get_uart_clk();
1258 case MXC_CSPI_CLK: 1265 case MXC_CSPI_CLK:
1259 return get_cspi_clk(); 1266 return get_cspi_clk();
1260 case MXC_AXI_CLK: 1267 case MXC_AXI_CLK:
1261 return get_axi_clk(); 1268 return get_axi_clk();
1262 case MXC_EMI_SLOW_CLK: 1269 case MXC_EMI_SLOW_CLK:
1263 return get_emi_slow_clk(); 1270 return get_emi_slow_clk();
1264 case MXC_DDR_CLK: 1271 case MXC_DDR_CLK:
1265 return get_mmdc_ch0_clk(); 1272 return get_mmdc_ch0_clk();
1266 case MXC_ESDHC_CLK: 1273 case MXC_ESDHC_CLK:
1267 return get_usdhc_clk(0); 1274 return get_usdhc_clk(0);
1268 case MXC_ESDHC2_CLK: 1275 case MXC_ESDHC2_CLK:
1269 return get_usdhc_clk(1); 1276 return get_usdhc_clk(1);
1270 case MXC_ESDHC3_CLK: 1277 case MXC_ESDHC3_CLK:
1271 return get_usdhc_clk(2); 1278 return get_usdhc_clk(2);
1272 case MXC_ESDHC4_CLK: 1279 case MXC_ESDHC4_CLK:
1273 return get_usdhc_clk(3); 1280 return get_usdhc_clk(3);
1274 case MXC_SATA_CLK: 1281 case MXC_SATA_CLK:
1275 return get_ahb_clk(); 1282 return get_ahb_clk();
1276 default: 1283 default:
1277 printf("Unsupported MXC CLK: %d\n", clk); 1284 printf("Unsupported MXC CLK: %d\n", clk);
1278 break; 1285 break;
1279 } 1286 }
1280 1287
1281 return 0; 1288 return 0;
1282 } 1289 }
1283 1290
1284 /* 1291 /*
1285 * Dump some core clockes. 1292 * Dump some core clockes.
1286 */ 1293 */
1287 int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 1294 int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
1288 { 1295 {
1289 u32 freq; 1296 u32 freq;
1290 freq = decode_pll(PLL_SYS, MXC_HCLK); 1297 freq = decode_pll(PLL_SYS, MXC_HCLK);
1291 printf("PLL_SYS %8d MHz\n", freq / 1000000); 1298 printf("PLL_SYS %8d MHz\n", freq / 1000000);
1292 freq = decode_pll(PLL_BUS, MXC_HCLK); 1299 freq = decode_pll(PLL_BUS, MXC_HCLK);
1293 printf("PLL_BUS %8d MHz\n", freq / 1000000); 1300 printf("PLL_BUS %8d MHz\n", freq / 1000000);
1294 freq = decode_pll(PLL_USBOTG, MXC_HCLK); 1301 freq = decode_pll(PLL_USBOTG, MXC_HCLK);
1295 printf("PLL_OTG %8d MHz\n", freq / 1000000); 1302 printf("PLL_OTG %8d MHz\n", freq / 1000000);
1296 freq = decode_pll(PLL_ENET, MXC_HCLK); 1303 freq = decode_pll(PLL_ENET, MXC_HCLK);
1297 printf("PLL_NET %8d MHz\n", freq / 1000000); 1304 printf("PLL_NET %8d MHz\n", freq / 1000000);
1298 1305
1299 printf("\n"); 1306 printf("\n");
1300 printf("IPG %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000); 1307 printf("IPG %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
1301 printf("UART %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000); 1308 printf("UART %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
1302 #ifdef CONFIG_MXC_SPI 1309 #ifdef CONFIG_MXC_SPI
1303 printf("CSPI %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000); 1310 printf("CSPI %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
1304 #endif 1311 #endif
1305 printf("AHB %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000); 1312 printf("AHB %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
1306 printf("AXI %8d kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000); 1313 printf("AXI %8d kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000);
1307 printf("DDR %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000); 1314 printf("DDR %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
1308 printf("USDHC1 %8d kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000); 1315 printf("USDHC1 %8d kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000);
1309 printf("USDHC2 %8d kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000); 1316 printf("USDHC2 %8d kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000);
1310 printf("USDHC3 %8d kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000); 1317 printf("USDHC3 %8d kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000);
1311 printf("USDHC4 %8d kHz\n", mxc_get_clock(MXC_ESDHC4_CLK) / 1000); 1318 printf("USDHC4 %8d kHz\n", mxc_get_clock(MXC_ESDHC4_CLK) / 1000);
1312 printf("EMI SLOW %8d kHz\n", mxc_get_clock(MXC_EMI_SLOW_CLK) / 1000); 1319 printf("EMI SLOW %8d kHz\n", mxc_get_clock(MXC_EMI_SLOW_CLK) / 1000);
1313 printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000); 1320 printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
1314 1321
1315 return 0; 1322 return 0;
1316 } 1323 }
1317 1324
1318 static void pre_misc_setting(void) 1325 static void pre_misc_setting(void)
1319 { 1326 {
1320 /* Bypass IPU1 QoS generator */ 1327 /* Bypass IPU1 QoS generator */
1321 writel(0x00000002, 0x00bb048c); 1328 writel(0x00000002, 0x00bb048c);
1322 /* Bypass IPU2 QoS generator */ 1329 /* Bypass IPU2 QoS generator */
1323 writel(0x00000002, 0x00bb050c); 1330 writel(0x00000002, 0x00bb050c);
1324 /* Bandwidth THR for of PRE0 */ 1331 /* Bandwidth THR for of PRE0 */
1325 writel(0x00000200, 0x00bb0690); 1332 writel(0x00000200, 0x00bb0690);
1326 /* Bandwidth THR for of PRE1 */ 1333 /* Bandwidth THR for of PRE1 */
1327 writel(0x00000200, 0x00bb0710); 1334 writel(0x00000200, 0x00bb0710);
1328 /* Bandwidth THR for of PRE2 */ 1335 /* Bandwidth THR for of PRE2 */
1329 writel(0x00000200, 0x00bb0790); 1336 writel(0x00000200, 0x00bb0790);
1330 /* Bandwidth THR for of PRE3 */ 1337 /* Bandwidth THR for of PRE3 */
1331 writel(0x00000200, 0x00bb0810); 1338 writel(0x00000200, 0x00bb0810);
1332 /* Saturation THR for of PRE0 */ 1339 /* Saturation THR for of PRE0 */
1333 writel(0x00000010, 0x00bb0694); 1340 writel(0x00000010, 0x00bb0694);
1334 /* Saturation THR for of PRE1 */ 1341 /* Saturation THR for of PRE1 */
1335 writel(0x00000010, 0x00bb0714); 1342 writel(0x00000010, 0x00bb0714);
1336 /* Saturation THR for of PRE2 */ 1343 /* Saturation THR for of PRE2 */
1337 writel(0x00000010, 0x00bb0794); 1344 writel(0x00000010, 0x00bb0794);
1338 /* Saturation THR for of PRE */ 1345 /* Saturation THR for of PRE */
1339 writel(0x00000010, 0x00bb0814); 1346 writel(0x00000010, 0x00bb0814);
1340 } 1347 }
1341 1348
1342 void enable_ipu_clock(void) 1349 void enable_ipu_clock(void)
1343 { 1350 {
1344 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 1351 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
1345 int reg; 1352 int reg;
1346 reg = readl(&mxc_ccm->CCGR3); 1353 reg = readl(&mxc_ccm->CCGR3);
1347 reg |= MXC_CCM_CCGR3_IPU1_IPU_MASK; 1354 reg |= MXC_CCM_CCGR3_IPU1_IPU_MASK;
1348 writel(reg, &mxc_ccm->CCGR3); 1355 writel(reg, &mxc_ccm->CCGR3);
1349 1356
1350 if (is_mx6dqp()) { 1357 if (is_mx6dqp()) {
1351 setbits_le32(&mxc_ccm->CCGR6, MXC_CCM_CCGR6_PRG_CLK0_MASK); 1358 setbits_le32(&mxc_ccm->CCGR6, MXC_CCM_CCGR6_PRG_CLK0_MASK);
1352 setbits_le32(&mxc_ccm->CCGR3, MXC_CCM_CCGR3_IPU2_IPU_MASK); 1359 setbits_le32(&mxc_ccm->CCGR3, MXC_CCM_CCGR3_IPU2_IPU_MASK);
1353 1360
1354 /* 1361 /*
1355 * Since CONFIG_VIDEO_IPUV3 is always set in mx6sabre_common.h and 1362 * Since CONFIG_VIDEO_IPUV3 is always set in mx6sabre_common.h and
1356 * this misc setting is a must for mx6qp, this position is ok 1363 * this misc setting is a must for mx6qp, this position is ok
1357 * to do such settings. 1364 * to do such settings.
1358 */ 1365 */
1359 pre_misc_setting(); 1366 pre_misc_setting();
1360 } 1367 }
1361 } 1368 }
1362 1369
1363 /***************************************************/ 1370 /***************************************************/
1364 1371
1365 U_BOOT_CMD( 1372 U_BOOT_CMD(
1366 clocks, CONFIG_SYS_MAXARGS, 1, do_mx6_showclocks, 1373 clocks, CONFIG_SYS_MAXARGS, 1, do_mx6_showclocks,
1367 "display clocks", 1374 "display clocks",
1368 "" 1375 ""
1369 ); 1376 );
1370 1377
arch/arm/cpu/armv7/mx6/soc.c
1 /* 1 /*
2 * (C) Copyright 2007 2 * (C) Copyright 2007
3 * Sascha Hauer, Pengutronix 3 * Sascha Hauer, Pengutronix
4 * 4 *
5 * (C) Copyright 2009-2016 Freescale Semiconductor, Inc. 5 * (C) Copyright 2009-2016 Freescale Semiconductor, Inc.
6 * 6 *
7 * SPDX-License-Identifier: GPL-2.0+ 7 * SPDX-License-Identifier: GPL-2.0+
8 */ 8 */
9 9
10 #include <common.h> 10 #include <common.h>
11 #include <asm/errno.h> 11 #include <asm/errno.h>
12 #include <asm/io.h> 12 #include <asm/io.h>
13 #include <asm/arch/imx-regs.h> 13 #include <asm/arch/imx-regs.h>
14 #include <asm/arch/clock.h> 14 #include <asm/arch/clock.h>
15 #include <asm/arch/sys_proto.h> 15 #include <asm/arch/sys_proto.h>
16 #include <asm/imx-common/boot_mode.h> 16 #include <asm/imx-common/boot_mode.h>
17 #include <asm/imx-common/dma.h> 17 #include <asm/imx-common/dma.h>
18 #include <asm/imx-common/hab.h> 18 #include <asm/imx-common/hab.h>
19 #include <stdbool.h> 19 #include <stdbool.h>
20 #include <asm/arch/mxc_hdmi.h> 20 #include <asm/arch/mxc_hdmi.h>
21 #include <asm/arch/crm_regs.h> 21 #include <asm/arch/crm_regs.h>
22 #include <dm.h> 22 #include <dm.h>
23 #include <imx_thermal.h> 23 #include <imx_thermal.h>
24 #include <mmc.h> 24 #include <mmc.h>
25 #if defined(CONFIG_FSL_FASTBOOT) && defined(CONFIG_ANDROID_RECOVERY) 25 #if defined(CONFIG_FSL_FASTBOOT) && defined(CONFIG_ANDROID_RECOVERY)
26 #include <recovery.h> 26 #include <recovery.h>
27 #endif 27 #endif
28 28
29 29
30 enum ldo_reg { 30 enum ldo_reg {
31 LDO_ARM, 31 LDO_ARM,
32 LDO_SOC, 32 LDO_SOC,
33 LDO_PU, 33 LDO_PU,
34 }; 34 };
35 35
36 struct scu_regs { 36 struct scu_regs {
37 u32 ctrl; 37 u32 ctrl;
38 u32 config; 38 u32 config;
39 u32 status; 39 u32 status;
40 u32 invalidate; 40 u32 invalidate;
41 u32 fpga_rev; 41 u32 fpga_rev;
42 }; 42 };
43 43
44 #if defined(CONFIG_IMX_THERMAL) 44 #if defined(CONFIG_IMX_THERMAL)
45 static const struct imx_thermal_plat imx6_thermal_plat = { 45 static const struct imx_thermal_plat imx6_thermal_plat = {
46 .regs = (void *)ANATOP_BASE_ADDR, 46 .regs = (void *)ANATOP_BASE_ADDR,
47 .fuse_bank = 1, 47 .fuse_bank = 1,
48 .fuse_word = 6, 48 .fuse_word = 6,
49 }; 49 };
50 50
51 U_BOOT_DEVICE(imx6_thermal) = { 51 U_BOOT_DEVICE(imx6_thermal) = {
52 .name = "imx_thermal", 52 .name = "imx_thermal",
53 .platdata = &imx6_thermal_plat, 53 .platdata = &imx6_thermal_plat,
54 }; 54 };
55 #endif 55 #endif
56 56
57 #if defined(CONFIG_SECURE_BOOT) 57 #if defined(CONFIG_SECURE_BOOT)
58 struct imx_sec_config_fuse_t const imx_sec_config_fuse = { 58 struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
59 .bank = 0, 59 .bank = 0,
60 .word = 6, 60 .word = 6,
61 }; 61 };
62 #endif 62 #endif
63 63
64 u32 get_nr_cpus(void) 64 u32 get_nr_cpus(void)
65 { 65 {
66 struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR; 66 struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
67 return readl(&scu->config) & 3; 67 return readl(&scu->config) & 3;
68 } 68 }
69 69
70 u32 get_cpu_rev(void) 70 u32 get_cpu_rev(void)
71 { 71 {
72 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 72 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
73 u32 reg = readl(&anatop->digprog_sololite); 73 u32 reg = readl(&anatop->digprog_sololite);
74 u32 type = ((reg >> 16) & 0xff); 74 u32 type = ((reg >> 16) & 0xff);
75 u32 major, cfg = 0; 75 u32 major, cfg = 0;
76 76
77 if (type != MXC_CPU_MX6SL) { 77 if (type != MXC_CPU_MX6SL) {
78 reg = readl(&anatop->digprog); 78 reg = readl(&anatop->digprog);
79 struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR; 79 struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
80 cfg = readl(&scu->config) & 3; 80 cfg = readl(&scu->config) & 3;
81 type = ((reg >> 16) & 0xff); 81 type = ((reg >> 16) & 0xff);
82 if (type == MXC_CPU_MX6DL) { 82 if (type == MXC_CPU_MX6DL) {
83 if (!cfg) 83 if (!cfg)
84 type = MXC_CPU_MX6SOLO; 84 type = MXC_CPU_MX6SOLO;
85 } 85 }
86 86
87 if (type == MXC_CPU_MX6Q) { 87 if (type == MXC_CPU_MX6Q) {
88 if (cfg == 1) 88 if (cfg == 1)
89 type = MXC_CPU_MX6D; 89 type = MXC_CPU_MX6D;
90 } 90 }
91 91
92 } 92 }
93 major = ((reg >> 8) & 0xff); 93 major = ((reg >> 8) & 0xff);
94 if ((major >= 1) && 94 if ((major >= 1) &&
95 ((type == MXC_CPU_MX6Q) || (type == MXC_CPU_MX6D))) { 95 ((type == MXC_CPU_MX6Q) || (type == MXC_CPU_MX6D))) {
96 major--; 96 major--;
97 type = MXC_CPU_MX6QP; 97 type = MXC_CPU_MX6QP;
98 if (cfg == 1) 98 if (cfg == 1)
99 type = MXC_CPU_MX6DP; 99 type = MXC_CPU_MX6DP;
100 } 100 }
101 reg &= 0xff; /* mx6 silicon revision */ 101 reg &= 0xff; /* mx6 silicon revision */
102 return (type << 12) | (reg + (0x10 * (major + 1))); 102 return (type << 12) | (reg + (0x10 * (major + 1)));
103 } 103 }
104 104
105 /* 105 /*
106 * OCOTP_CFG3[17:16] (see Fusemap Description Table offset 0x440) 106 * OCOTP_CFG3[17:16] (see Fusemap Description Table offset 0x440)
107 * defines a 2-bit SPEED_GRADING 107 * defines a 2-bit SPEED_GRADING
108 */ 108 */
109 #define OCOTP_CFG3_SPEED_SHIFT 16 109 #define OCOTP_CFG3_SPEED_SHIFT 16
110 #define OCOTP_CFG3_SPEED_800MHZ 0 110 #define OCOTP_CFG3_SPEED_800MHZ 0
111 #define OCOTP_CFG3_SPEED_850MHZ 1 111 #define OCOTP_CFG3_SPEED_850MHZ 1
112 #define OCOTP_CFG3_SPEED_1GHZ 2 112 #define OCOTP_CFG3_SPEED_1GHZ 2
113 #define OCOTP_CFG3_SPEED_1P2GHZ 3 113 #define OCOTP_CFG3_SPEED_1P2GHZ 3
114 114
115 /* 115 /*
116 * For i.MX6UL 116 * For i.MX6UL
117 */ 117 */
118 #define OCOTP_CFG3_SPEED_528MHZ 1 118 #define OCOTP_CFG3_SPEED_528MHZ 1
119 #define OCOTP_CFG3_SPEED_696MHZ 2 119 #define OCOTP_CFG3_SPEED_696MHZ 2
120 120
121 u32 get_cpu_speed_grade_hz(void) 121 u32 get_cpu_speed_grade_hz(void)
122 { 122 {
123 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; 123 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
124 struct fuse_bank *bank = &ocotp->bank[0]; 124 struct fuse_bank *bank = &ocotp->bank[0];
125 struct fuse_bank0_regs *fuse = 125 struct fuse_bank0_regs *fuse =
126 (struct fuse_bank0_regs *)bank->fuse_regs; 126 (struct fuse_bank0_regs *)bank->fuse_regs;
127 uint32_t val; 127 uint32_t val;
128 128
129 val = readl(&fuse->cfg3); 129 val = readl(&fuse->cfg3);
130 val >>= OCOTP_CFG3_SPEED_SHIFT; 130 val >>= OCOTP_CFG3_SPEED_SHIFT;
131 val &= 0x3; 131 val &= 0x3;
132 132
133 if (is_cpu_type(MXC_CPU_MX6UL)) { 133 if (is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) {
134 if (val == OCOTP_CFG3_SPEED_528MHZ) 134 if (val == OCOTP_CFG3_SPEED_528MHZ)
135 return 528000000; 135 return 528000000;
136 else if (val == OCOTP_CFG3_SPEED_696MHZ) 136 else if (val == OCOTP_CFG3_SPEED_696MHZ)
137 return 69600000; 137 return 69600000;
138 else 138 else
139 return 0; 139 return 0;
140 } 140 }
141 141
142 switch (val) { 142 switch (val) {
143 /* Valid for IMX6DQ */ 143 /* Valid for IMX6DQ */
144 case OCOTP_CFG3_SPEED_1P2GHZ: 144 case OCOTP_CFG3_SPEED_1P2GHZ:
145 if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D) || 145 if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D) ||
146 is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP)) 146 is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
147 return 1200000000; 147 return 1200000000;
148 /* Valid for IMX6SX/IMX6SDL/IMX6DQ */ 148 /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
149 case OCOTP_CFG3_SPEED_1GHZ: 149 case OCOTP_CFG3_SPEED_1GHZ:
150 return 996000000; 150 return 996000000;
151 /* Valid for IMX6DQ */ 151 /* Valid for IMX6DQ */
152 case OCOTP_CFG3_SPEED_850MHZ: 152 case OCOTP_CFG3_SPEED_850MHZ:
153 if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D) || 153 if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D) ||
154 is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP)) 154 is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
155 return 852000000; 155 return 852000000;
156 /* Valid for IMX6SX/IMX6SDL/IMX6DQ */ 156 /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
157 case OCOTP_CFG3_SPEED_800MHZ: 157 case OCOTP_CFG3_SPEED_800MHZ:
158 return 792000000; 158 return 792000000;
159 } 159 }
160 return 0; 160 return 0;
161 } 161 }
162 162
163 /* 163 /*
164 * OCOTP_MEM0[7:6] (see Fusemap Description Table offset 0x480) 164 * OCOTP_MEM0[7:6] (see Fusemap Description Table offset 0x480)
165 * defines a 2-bit Temperature Grade 165 * defines a 2-bit Temperature Grade
166 * 166 *
167 * return temperature grade and min/max temperature in celcius 167 * return temperature grade and min/max temperature in celcius
168 */ 168 */
169 #define OCOTP_MEM0_TEMP_SHIFT 6 169 #define OCOTP_MEM0_TEMP_SHIFT 6
170 170
171 u32 get_cpu_temp_grade(int *minc, int *maxc) 171 u32 get_cpu_temp_grade(int *minc, int *maxc)
172 { 172 {
173 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; 173 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
174 struct fuse_bank *bank = &ocotp->bank[1]; 174 struct fuse_bank *bank = &ocotp->bank[1];
175 struct fuse_bank1_regs *fuse = 175 struct fuse_bank1_regs *fuse =
176 (struct fuse_bank1_regs *)bank->fuse_regs; 176 (struct fuse_bank1_regs *)bank->fuse_regs;
177 uint32_t val; 177 uint32_t val;
178 178
179 val = readl(&fuse->mem0); 179 val = readl(&fuse->mem0);
180 val >>= OCOTP_MEM0_TEMP_SHIFT; 180 val >>= OCOTP_MEM0_TEMP_SHIFT;
181 val &= 0x3; 181 val &= 0x3;
182 182
183 if (minc && maxc) { 183 if (minc && maxc) {
184 if (val == TEMP_AUTOMOTIVE) { 184 if (val == TEMP_AUTOMOTIVE) {
185 *minc = -40; 185 *minc = -40;
186 *maxc = 125; 186 *maxc = 125;
187 } else if (val == TEMP_INDUSTRIAL) { 187 } else if (val == TEMP_INDUSTRIAL) {
188 *minc = -40; 188 *minc = -40;
189 *maxc = 105; 189 *maxc = 105;
190 } else if (val == TEMP_EXTCOMMERCIAL) { 190 } else if (val == TEMP_EXTCOMMERCIAL) {
191 *minc = -20; 191 *minc = -20;
192 *maxc = 105; 192 *maxc = 105;
193 } else { 193 } else {
194 *minc = 0; 194 *minc = 0;
195 *maxc = 95; 195 *maxc = 95;
196 } 196 }
197 } 197 }
198 return val; 198 return val;
199 } 199 }
200 200
201 #ifdef CONFIG_REVISION_TAG 201 #ifdef CONFIG_REVISION_TAG
202 u32 __weak get_board_rev(void) 202 u32 __weak get_board_rev(void)
203 { 203 {
204 u32 cpurev = get_cpu_rev(); 204 u32 cpurev = get_cpu_rev();
205 u32 type = ((cpurev >> 12) & 0xff); 205 u32 type = ((cpurev >> 12) & 0xff);
206 if (type == MXC_CPU_MX6SOLO) 206 if (type == MXC_CPU_MX6SOLO)
207 cpurev = (MXC_CPU_MX6DL) << 12 | (cpurev & 0xFFF); 207 cpurev = (MXC_CPU_MX6DL) << 12 | (cpurev & 0xFFF);
208 208
209 if (type == MXC_CPU_MX6D) 209 if (type == MXC_CPU_MX6D)
210 cpurev = (MXC_CPU_MX6Q) << 12 | (cpurev & 0xFFF); 210 cpurev = (MXC_CPU_MX6Q) << 12 | (cpurev & 0xFFF);
211 211
212 if (type == MXC_CPU_MX6QP || type == MXC_CPU_MX6DP) 212 if (type == MXC_CPU_MX6QP || type == MXC_CPU_MX6DP)
213 cpurev = (MXC_CPU_MX6Q) << 12 | ((cpurev + 0x10) & 0xFFF); 213 cpurev = (MXC_CPU_MX6Q) << 12 | ((cpurev + 0x10) & 0xFFF);
214 214
215 return cpurev; 215 return cpurev;
216 } 216 }
217 #endif 217 #endif
218 218
219 static void clear_ldo_ramp(void) 219 static void clear_ldo_ramp(void)
220 { 220 {
221 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 221 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
222 int reg; 222 int reg;
223 223
224 /* ROM may modify LDO ramp up time according to fuse setting, so in 224 /* ROM may modify LDO ramp up time according to fuse setting, so in
225 * order to be in the safe side we neeed to reset these settings to 225 * order to be in the safe side we neeed to reset these settings to
226 * match the reset value: 0'b00 226 * match the reset value: 0'b00
227 */ 227 */
228 reg = readl(&anatop->ana_misc2); 228 reg = readl(&anatop->ana_misc2);
229 reg &= ~(0x3f << 24); 229 reg &= ~(0x3f << 24);
230 writel(reg, &anatop->ana_misc2); 230 writel(reg, &anatop->ana_misc2);
231 } 231 }
232 232
233 /* 233 /*
234 * Set the PMU_REG_CORE register 234 * Set the PMU_REG_CORE register
235 * 235 *
236 * Set LDO_SOC/PU/ARM regulators to the specified millivolt level. 236 * Set LDO_SOC/PU/ARM regulators to the specified millivolt level.
237 * Possible values are from 0.725V to 1.450V in steps of 237 * Possible values are from 0.725V to 1.450V in steps of
238 * 0.025V (25mV). 238 * 0.025V (25mV).
239 */ 239 */
240 static int set_ldo_voltage(enum ldo_reg ldo, u32 mv) 240 static int set_ldo_voltage(enum ldo_reg ldo, u32 mv)
241 { 241 {
242 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 242 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
243 u32 val, step, old, reg = readl(&anatop->reg_core); 243 u32 val, step, old, reg = readl(&anatop->reg_core);
244 u8 shift; 244 u8 shift;
245 245
246 if (mv < 725) 246 if (mv < 725)
247 val = 0x00; /* Power gated off */ 247 val = 0x00; /* Power gated off */
248 else if (mv > 1450) 248 else if (mv > 1450)
249 val = 0x1F; /* Power FET switched full on. No regulation */ 249 val = 0x1F; /* Power FET switched full on. No regulation */
250 else 250 else
251 val = (mv - 700) / 25; 251 val = (mv - 700) / 25;
252 252
253 clear_ldo_ramp(); 253 clear_ldo_ramp();
254 254
255 switch (ldo) { 255 switch (ldo) {
256 case LDO_SOC: 256 case LDO_SOC:
257 shift = 18; 257 shift = 18;
258 break; 258 break;
259 case LDO_PU: 259 case LDO_PU:
260 shift = 9; 260 shift = 9;
261 break; 261 break;
262 case LDO_ARM: 262 case LDO_ARM:
263 shift = 0; 263 shift = 0;
264 break; 264 break;
265 default: 265 default:
266 return -EINVAL; 266 return -EINVAL;
267 } 267 }
268 268
269 old = (reg & (0x1F << shift)) >> shift; 269 old = (reg & (0x1F << shift)) >> shift;
270 step = abs(val - old); 270 step = abs(val - old);
271 if (step == 0) 271 if (step == 0)
272 return 0; 272 return 0;
273 273
274 reg = (reg & ~(0x1F << shift)) | (val << shift); 274 reg = (reg & ~(0x1F << shift)) | (val << shift);
275 writel(reg, &anatop->reg_core); 275 writel(reg, &anatop->reg_core);
276 276
277 /* 277 /*
278 * The LDO ramp-up is based on 64 clock cycles of 24 MHz = 2.6 us per 278 * The LDO ramp-up is based on 64 clock cycles of 24 MHz = 2.6 us per
279 * step 279 * step
280 */ 280 */
281 udelay(3 * step); 281 udelay(3 * step);
282 282
283 return 0; 283 return 0;
284 } 284 }
285 285
286 static void set_ahb_rate(u32 val) 286 static void set_ahb_rate(u32 val)
287 { 287 {
288 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 288 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
289 u32 reg, div; 289 u32 reg, div;
290 290
291 div = get_periph_clk() / val - 1; 291 div = get_periph_clk() / val - 1;
292 reg = readl(&mxc_ccm->cbcdr); 292 reg = readl(&mxc_ccm->cbcdr);
293 293
294 writel((reg & (~MXC_CCM_CBCDR_AHB_PODF_MASK)) | 294 writel((reg & (~MXC_CCM_CBCDR_AHB_PODF_MASK)) |
295 (div << MXC_CCM_CBCDR_AHB_PODF_OFFSET), &mxc_ccm->cbcdr); 295 (div << MXC_CCM_CBCDR_AHB_PODF_OFFSET), &mxc_ccm->cbcdr);
296 } 296 }
297 297
298 static void clear_mmdc_ch_mask(void) 298 static void clear_mmdc_ch_mask(void)
299 { 299 {
300 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 300 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
301 u32 reg; 301 u32 reg;
302 reg = readl(&mxc_ccm->ccdr); 302 reg = readl(&mxc_ccm->ccdr);
303 303
304 /* Clear MMDC channel mask */ 304 /* Clear MMDC channel mask */
305 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6SL)) 305 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
306 is_cpu_type(MXC_CPU_MX6SL) || is_cpu_type(MXC_CPU_MX6ULL))
306 reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK); 307 reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK);
307 else 308 else
308 reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK); 309 reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK);
309 writel(reg, &mxc_ccm->ccdr); 310 writel(reg, &mxc_ccm->ccdr);
310 } 311 }
311 312
312 static void init_bandgap(void) 313 static void init_bandgap(void)
313 { 314 {
314 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 315 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
315 /* 316 /*
316 * Ensure the bandgap has stabilized. 317 * Ensure the bandgap has stabilized.
317 */ 318 */
318 while (!(readl(&anatop->ana_misc0) & 0x80)) 319 while (!(readl(&anatop->ana_misc0) & 0x80))
319 ; 320 ;
320 /* 321 /*
321 * For best noise performance of the analog blocks using the 322 * For best noise performance of the analog blocks using the
322 * outputs of the bandgap, the reftop_selfbiasoff bit should 323 * outputs of the bandgap, the reftop_selfbiasoff bit should
323 * be set. 324 * be set.
324 */ 325 */
325 writel(BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set); 326 writel(BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set);
326 } 327 }
327 328
328 329
329 #ifdef CONFIG_MX6SL 330 #ifdef CONFIG_MX6SL
330 static void set_preclk_from_osc(void) 331 static void set_preclk_from_osc(void)
331 { 332 {
332 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 333 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
333 u32 reg; 334 u32 reg;
334 335
335 reg = readl(&mxc_ccm->cscmr1); 336 reg = readl(&mxc_ccm->cscmr1);
336 reg |= MXC_CCM_CSCMR1_PER_CLK_SEL_MASK; 337 reg |= MXC_CCM_CSCMR1_PER_CLK_SEL_MASK;
337 writel(reg, &mxc_ccm->cscmr1); 338 writel(reg, &mxc_ccm->cscmr1);
338 } 339 }
339 #endif 340 #endif
340 341
341 #ifdef CONFIG_MX6SX 342 #ifdef CONFIG_MX6SX
342 void vadc_power_up(void) 343 void vadc_power_up(void)
343 { 344 {
344 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR; 345 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
345 u32 val; 346 u32 val;
346 347
347 /* csi0 */ 348 /* csi0 */
348 val = readl(&iomux->gpr[5]); 349 val = readl(&iomux->gpr[5]);
349 val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK, 350 val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK,
350 val |= IMX6SX_GPR5_CSI1_MUX_CTRL_CVD; 351 val |= IMX6SX_GPR5_CSI1_MUX_CTRL_CVD;
351 writel(val, &iomux->gpr[5]); 352 writel(val, &iomux->gpr[5]);
352 353
353 /* Power on vadc analog 354 /* Power on vadc analog
354 * Power down vadc ext power */ 355 * Power down vadc ext power */
355 val = readl(GPC_BASE_ADDR + 0); 356 val = readl(GPC_BASE_ADDR + 0);
356 val &= ~0x60000; 357 val &= ~0x60000;
357 writel(val, GPC_BASE_ADDR + 0); 358 writel(val, GPC_BASE_ADDR + 0);
358 359
359 /* software reset afe */ 360 /* software reset afe */
360 val = readl(&iomux->gpr[1]); 361 val = readl(&iomux->gpr[1]);
361 writel(val | 0x80000, &iomux->gpr[1]); 362 writel(val | 0x80000, &iomux->gpr[1]);
362 363
363 udelay(10*1000); 364 udelay(10*1000);
364 365
365 /* Release reset bit */ 366 /* Release reset bit */
366 writel(val & ~0x80000, &iomux->gpr[1]); 367 writel(val & ~0x80000, &iomux->gpr[1]);
367 368
368 /* Power on vadc ext power */ 369 /* Power on vadc ext power */
369 val = readl(GPC_BASE_ADDR + 0); 370 val = readl(GPC_BASE_ADDR + 0);
370 val |= 0x40000; 371 val |= 0x40000;
371 writel(val, GPC_BASE_ADDR + 0); 372 writel(val, GPC_BASE_ADDR + 0);
372 } 373 }
373 374
374 void vadc_power_down(void) 375 void vadc_power_down(void)
375 { 376 {
376 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR; 377 struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
377 u32 val; 378 u32 val;
378 379
379 /* Power down vadc ext power 380 /* Power down vadc ext power
380 * Power off vadc analog */ 381 * Power off vadc analog */
381 val = readl(GPC_BASE_ADDR + 0); 382 val = readl(GPC_BASE_ADDR + 0);
382 val &= ~0x40000; 383 val &= ~0x40000;
383 val |= 0x20000; 384 val |= 0x20000;
384 writel(val, GPC_BASE_ADDR + 0); 385 writel(val, GPC_BASE_ADDR + 0);
385 386
386 /* clean csi0 connect to vadc */ 387 /* clean csi0 connect to vadc */
387 val = readl(&iomux->gpr[5]); 388 val = readl(&iomux->gpr[5]);
388 val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK, 389 val &= ~IMX6SX_GPR5_CSI1_MUX_CTRL_MASK,
389 writel(val, &iomux->gpr[5]); 390 writel(val, &iomux->gpr[5]);
390 } 391 }
391 392
392 void pcie_power_up(void) 393 void pcie_power_up(void)
393 { 394 {
394 set_ldo_voltage(LDO_PU, 1100); /* Set VDDPU to 1.1V */ 395 set_ldo_voltage(LDO_PU, 1100); /* Set VDDPU to 1.1V */
395 } 396 }
396 397
397 void pcie_power_off(void) 398 void pcie_power_off(void)
398 { 399 {
399 set_ldo_voltage(LDO_PU, 0); /* Set VDDPU to 1.1V */ 400 set_ldo_voltage(LDO_PU, 0); /* Set VDDPU to 1.1V */
400 } 401 }
401 #endif 402 #endif
402 403
403 static void set_uart_from_osc(void) 404 static void set_uart_from_osc(void)
404 { 405 {
405 u32 reg; 406 u32 reg;
406 407
407 /* set uart clk to OSC */ 408 /* set uart clk to OSC */
408 reg = readl(CCM_BASE_ADDR + 0x24); 409 reg = readl(CCM_BASE_ADDR + 0x24);
409 reg |= MXC_CCM_CSCDR1_UART_CLK_SEL; 410 reg |= MXC_CCM_CSCDR1_UART_CLK_SEL;
410 writel(reg, CCM_BASE_ADDR + 0x24); 411 writel(reg, CCM_BASE_ADDR + 0x24);
411 } 412 }
412 413
413 static void imx_set_vddpu_power_down(void) 414 static void imx_set_vddpu_power_down(void)
414 { 415 {
415 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 416 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
416 u32 val; 417 u32 val;
417 418
418 /* need to power down xPU in GPC before turn off PU LDO */ 419 /* need to power down xPU in GPC before turn off PU LDO */
419 val = readl(GPC_BASE_ADDR + 0x260); 420 val = readl(GPC_BASE_ADDR + 0x260);
420 writel(val | 0x1, GPC_BASE_ADDR + 0x260); 421 writel(val | 0x1, GPC_BASE_ADDR + 0x260);
421 422
422 val = readl(GPC_BASE_ADDR + 0x0); 423 val = readl(GPC_BASE_ADDR + 0x0);
423 writel(val | 0x1, GPC_BASE_ADDR + 0x0); 424 writel(val | 0x1, GPC_BASE_ADDR + 0x0);
424 while (readl(GPC_BASE_ADDR + 0x0) & 0x1) 425 while (readl(GPC_BASE_ADDR + 0x0) & 0x1)
425 ; 426 ;
426 427
427 /* disable VDDPU */ 428 /* disable VDDPU */
428 val = 0x3e00; 429 val = 0x3e00;
429 writel(val, &anatop->reg_core_clr); 430 writel(val, &anatop->reg_core_clr);
430 } 431 }
431 432
432 static void imx_set_pcie_phy_power_down(void) 433 static void imx_set_pcie_phy_power_down(void)
433 { 434 {
434 u32 val; 435 u32 val;
435 436
436 if (!is_cpu_type(MXC_CPU_MX6SX)) { 437 if (!is_cpu_type(MXC_CPU_MX6SX)) {
437 val = readl(IOMUXC_BASE_ADDR + 0x4); 438 val = readl(IOMUXC_BASE_ADDR + 0x4);
438 val |= 0x1 << 18; 439 val |= 0x1 << 18;
439 writel(val, IOMUXC_BASE_ADDR + 0x4); 440 writel(val, IOMUXC_BASE_ADDR + 0x4);
440 } else { 441 } else {
441 val = readl(IOMUXC_GPR_BASE_ADDR + 0x30); 442 val = readl(IOMUXC_GPR_BASE_ADDR + 0x30);
442 val |= 0x1 << 30; 443 val |= 0x1 << 30;
443 writel(val, IOMUXC_GPR_BASE_ADDR + 0x30); 444 writel(val, IOMUXC_GPR_BASE_ADDR + 0x30);
444 } 445 }
445 } 446 }
446 447
447 int arch_cpu_init(void) 448 int arch_cpu_init(void)
448 { 449 {
449 if (!is_cpu_type(MXC_CPU_MX6SL) && !!is_cpu_type(MXC_CPU_MX6SX) 450 if (!is_cpu_type(MXC_CPU_MX6SL) && !is_cpu_type(MXC_CPU_MX6SX)
450 && !is_cpu_type(MXC_CPU_MX6UL)) { 451 && !is_cpu_type(MXC_CPU_MX6UL) && !is_cpu_type(MXC_CPU_MX6ULL)) {
451 /* 452 /*
452 * imx6sl doesn't have pcie at all. 453 * imx6sl doesn't have pcie at all.
453 * this bit is not used by imx6sx anymore 454 * this bit is not used by imx6sx anymore
454 */ 455 */
455 u32 val; 456 u32 val;
456 457
457 /* 458 /*
458 * There are about 0.02% percentage, random pcie link down 459 * There are about 0.02% percentage, random pcie link down
459 * when warm-reset is used. 460 * when warm-reset is used.
460 * clear the ref_ssp_en bit16 of gpr1 to workaround it. 461 * clear the ref_ssp_en bit16 of gpr1 to workaround it.
461 * then warm-reset imx6q/dl/solo again. 462 * then warm-reset imx6q/dl/solo again.
462 */ 463 */
463 val = readl(IOMUXC_BASE_ADDR + 0x4); 464 val = readl(IOMUXC_BASE_ADDR + 0x4);
464 if (val & (0x1 << 16)) { 465 if (val & (0x1 << 16)) {
465 val &= ~(0x1 << 16); 466 val &= ~(0x1 << 16);
466 writel(val, IOMUXC_BASE_ADDR + 0x4); 467 writel(val, IOMUXC_BASE_ADDR + 0x4);
467 reset_cpu(0); 468 reset_cpu(0);
468 } 469 }
469 } 470 }
470 471
471 init_aips(); 472 init_aips();
472 473
473 /* Need to clear MMDC_CHx_MASK to make warm reset work. */ 474 /* Need to clear MMDC_CHx_MASK to make warm reset work. */
474 clear_mmdc_ch_mask(); 475 clear_mmdc_ch_mask();
475 476
476 /* 477 /*
477 * Disable self-bias circuit in the analog bandap. 478 * Disable self-bias circuit in the analog bandap.
478 * The self-bias circuit is used by the bandgap during startup. 479 * The self-bias circuit is used by the bandgap during startup.
479 * This bit should be set after the bandgap has initialized. 480 * This bit should be set after the bandgap has initialized.
480 */ 481 */
481 init_bandgap(); 482 init_bandgap();
482 483
483 if (!is_cpu_type(MXC_CPU_MX6UL) && !is_cpu_type(MXC_CPU_MX6ULL)) { 484 if (!is_cpu_type(MXC_CPU_MX6UL) && !is_cpu_type(MXC_CPU_MX6ULL)) {
484 /* 485 /*
485 * When low freq boot is enabled, ROM will not set AHB 486 * When low freq boot is enabled, ROM will not set AHB
486 * freq, so we need to ensure AHB freq is 132MHz in such 487 * freq, so we need to ensure AHB freq is 132MHz in such
487 * scenario. 488 * scenario.
488 */ 489 */
489 if (mxc_get_clock(MXC_ARM_CLK) == 396000000) 490 if (mxc_get_clock(MXC_ARM_CLK) == 396000000)
490 set_ahb_rate(132000000); 491 set_ahb_rate(132000000);
491 } 492 }
492 493
493 if (is_cpu_type(MXC_CPU_MX6UL)) { 494 if (is_cpu_type(MXC_CPU_MX6UL)) {
494 if (is_soc_rev(CHIP_REV_1_0)) { 495 if (is_soc_rev(CHIP_REV_1_0)) {
495 /* 496 /*
496 * According to the design team's requirement on i.MX6UL, 497 * According to the design team's requirement on i.MX6UL,
497 * the PMIC_STBY_REQ PAD should be configured as open 498 * the PMIC_STBY_REQ PAD should be configured as open
498 * drain 100K (0x0000b8a0). 499 * drain 100K (0x0000b8a0).
499 */ 500 */
500 writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c); 501 writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c);
501 } else { 502 } else {
502 /* 503 /*
503 * From TO1.1, SNVS adds internal pull up control for POR_B, 504 * From TO1.1, SNVS adds internal pull up control for POR_B,
504 * the register filed is GPBIT[1:0], after system boot up, 505 * the register filed is GPBIT[1:0], after system boot up,
505 * it can be set to 2b'01 to disable internal pull up. 506 * it can be set to 2b'01 to disable internal pull up.
506 * It can save about 30uA power in SNVS mode. 507 * It can save about 30uA power in SNVS mode.
507 */ 508 */
508 writel((readl(MX6UL_SNVS_LP_BASE_ADDR + 0x10) & (~0x1400)) | 0x400, 509 writel((readl(MX6UL_SNVS_LP_BASE_ADDR + 0x10) & (~0x1400)) | 0x400,
509 MX6UL_SNVS_LP_BASE_ADDR + 0x10); 510 MX6UL_SNVS_LP_BASE_ADDR + 0x10);
510 } 511 }
511 } 512 }
512 513
513 if (is_cpu_type(MXC_CPU_MX6ULL)) { 514 if (is_cpu_type(MXC_CPU_MX6ULL)) {
514 /* 515 /*
515 * GPBIT[1:0] is suggested to set to 2'b11: 516 * GPBIT[1:0] is suggested to set to 2'b11:
516 * 2'b00 : always PUP100K 517 * 2'b00 : always PUP100K
517 * 2'b01 : PUP100K when PMIC_ON_REQ or SOC_NOT_FAIL 518 * 2'b01 : PUP100K when PMIC_ON_REQ or SOC_NOT_FAIL
518 * 2'b10 : always disable PUP100K 519 * 2'b10 : always disable PUP100K
519 * 2'b11 : PDN100K when SOC_FAIL, PUP100K when SOC_NOT_FAIL 520 * 2'b11 : PDN100K when SOC_FAIL, PUP100K when SOC_NOT_FAIL
520 * register offset is different from i.MX6UL, since 521 * register offset is different from i.MX6UL, since
521 * i.MX6UL is fixed by ECO. 522 * i.MX6UL is fixed by ECO.
522 */ 523 */
523 writel(readl(MX6UL_SNVS_LP_BASE_ADDR) | 524 writel(readl(MX6UL_SNVS_LP_BASE_ADDR) |
524 0x3, MX6UL_SNVS_LP_BASE_ADDR); 525 0x3, MX6UL_SNVS_LP_BASE_ADDR);
525 } 526 }
526 527
527 /* Set perclk to source from OSC 24MHz */ 528 /* Set perclk to source from OSC 24MHz */
528 #if defined(CONFIG_MX6SL) 529 #if defined(CONFIG_MX6SL)
529 set_preclk_from_osc(); 530 set_preclk_from_osc();
530 #endif 531 #endif
531 532
532 if (is_cpu_type(MXC_CPU_MX6SX)) 533 if (is_cpu_type(MXC_CPU_MX6SX))
533 set_uart_from_osc(); 534 set_uart_from_osc();
534 535
535 imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */ 536 imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
536 537
537 if (!is_cpu_type(MXC_CPU_MX6SL) && !is_cpu_type(MXC_CPU_MX6UL)) 538 if (!is_cpu_type(MXC_CPU_MX6SL) && !is_cpu_type(MXC_CPU_MX6UL) &&
539 !is_cpu_type(MXC_CPU_MX6ULL))
538 imx_set_pcie_phy_power_down(); 540 imx_set_pcie_phy_power_down();
539 541
540 if (!is_mx6dqp() && !is_cpu_type(MXC_CPU_MX6UL)) 542 if (!is_mx6dqp() && !is_cpu_type(MXC_CPU_MX6UL) &&
543 !is_cpu_type(MXC_CPU_MX6ULL))
541 imx_set_vddpu_power_down(); 544 imx_set_vddpu_power_down();
542 545
543 #ifdef CONFIG_APBH_DMA 546 #ifdef CONFIG_APBH_DMA
544 /* Start APBH DMA */ 547 /* Start APBH DMA */
545 mxs_dma_init(); 548 mxs_dma_init();
546 #endif 549 #endif
547 550
548 init_src(); 551 init_src();
549 552
550 if (is_mx6dqp()) 553 if (is_mx6dqp())
551 writel(0x80000201, 0xbb0608); 554 writel(0x80000201, 0xbb0608);
552 555
553 return 0; 556 return 0;
554 } 557 }
555 558
556 #ifdef CONFIG_ENV_IS_IN_MMC 559 #ifdef CONFIG_ENV_IS_IN_MMC
557 __weak int board_mmc_get_env_dev(int devno) 560 __weak int board_mmc_get_env_dev(int devno)
558 { 561 {
559 return CONFIG_SYS_MMC_ENV_DEV; 562 return CONFIG_SYS_MMC_ENV_DEV;
560 } 563 }
561 564
562 static int mmc_get_boot_dev(void) 565 static int mmc_get_boot_dev(void)
563 { 566 {
564 struct src *src_regs = (struct src *)SRC_BASE_ADDR; 567 struct src *src_regs = (struct src *)SRC_BASE_ADDR;
565 u32 soc_sbmr = readl(&src_regs->sbmr1); 568 u32 soc_sbmr = readl(&src_regs->sbmr1);
566 u32 bootsel; 569 u32 bootsel;
567 int devno; 570 int devno;
568 571
569 /* 572 /*
570 * Refer to 573 * Refer to
571 * "i.MX 6Dual/6Quad Applications Processor Reference Manual" 574 * "i.MX 6Dual/6Quad Applications Processor Reference Manual"
572 * Chapter "8.5.3.1 Expansion Device eFUSE Configuration" 575 * Chapter "8.5.3.1 Expansion Device eFUSE Configuration"
573 * i.MX6SL/SX/UL has same layout. 576 * i.MX6SL/SX/UL has same layout.
574 */ 577 */
575 bootsel = (soc_sbmr & 0x000000FF) >> 6; 578 bootsel = (soc_sbmr & 0x000000FF) >> 6;
576 579
577 /* No boot from sd/mmc */ 580 /* No boot from sd/mmc */
578 if (bootsel != 1) 581 if (bootsel != 1)
579 return -1; 582 return -1;
580 583
581 /* BOOT_CFG2[3] and BOOT_CFG2[4] */ 584 /* BOOT_CFG2[3] and BOOT_CFG2[4] */
582 devno = (soc_sbmr & 0x00001800) >> 11; 585 devno = (soc_sbmr & 0x00001800) >> 11;
583 586
584 return devno; 587 return devno;
585 } 588 }
586 589
587 int mmc_get_env_dev(void) 590 int mmc_get_env_dev(void)
588 { 591 {
589 int devno = mmc_get_boot_dev(); 592 int devno = mmc_get_boot_dev();
590 593
591 /* If not boot from sd/mmc, use default value */ 594 /* If not boot from sd/mmc, use default value */
592 if (devno < 0) 595 if (devno < 0)
593 return CONFIG_SYS_MMC_ENV_DEV; 596 return CONFIG_SYS_MMC_ENV_DEV;
594 597
595 return board_mmc_get_env_dev(devno); 598 return board_mmc_get_env_dev(devno);
596 } 599 }
597 600
598 #ifdef CONFIG_SYS_MMC_ENV_PART 601 #ifdef CONFIG_SYS_MMC_ENV_PART
599 __weak int board_mmc_get_env_part(int devno) 602 __weak int board_mmc_get_env_part(int devno)
600 { 603 {
601 return CONFIG_SYS_MMC_ENV_PART; 604 return CONFIG_SYS_MMC_ENV_PART;
602 } 605 }
603 606
604 uint mmc_get_env_part(struct mmc *mmc) 607 uint mmc_get_env_part(struct mmc *mmc)
605 { 608 {
606 int devno = mmc_get_boot_dev(); 609 int devno = mmc_get_boot_dev();
607 610
608 /* If not boot from sd/mmc, use default value */ 611 /* If not boot from sd/mmc, use default value */
609 if (devno < 0) 612 if (devno < 0)
610 return CONFIG_SYS_MMC_ENV_PART; 613 return CONFIG_SYS_MMC_ENV_PART;
611 614
612 return board_mmc_get_env_part(devno); 615 return board_mmc_get_env_part(devno);
613 } 616 }
614 #endif 617 #endif
615 #endif 618 #endif
616 619
617 int board_postclk_init(void) 620 int board_postclk_init(void)
618 { 621 {
619 set_ldo_voltage(LDO_SOC, 1175); /* Set VDDSOC to 1.175V */ 622 set_ldo_voltage(LDO_SOC, 1175); /* Set VDDSOC to 1.175V */
620 623
621 return 0; 624 return 0;
622 } 625 }
623 626
624 #ifdef CONFIG_SERIAL_TAG 627 #ifdef CONFIG_SERIAL_TAG
625 void get_board_serial(struct tag_serialnr *serialnr) 628 void get_board_serial(struct tag_serialnr *serialnr)
626 { 629 {
627 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; 630 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
628 struct fuse_bank *bank = &ocotp->bank[0]; 631 struct fuse_bank *bank = &ocotp->bank[0];
629 struct fuse_bank0_regs *fuse = 632 struct fuse_bank0_regs *fuse =
630 (struct fuse_bank0_regs *)bank->fuse_regs; 633 (struct fuse_bank0_regs *)bank->fuse_regs;
631 634
632 serialnr->low = fuse->uid_low; 635 serialnr->low = fuse->uid_low;
633 serialnr->high = fuse->uid_high; 636 serialnr->high = fuse->uid_high;
634 } 637 }
635 #endif 638 #endif
636 639
637 #if defined(CONFIG_FEC_MXC) 640 #if defined(CONFIG_FEC_MXC)
638 void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) 641 void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
639 { 642 {
640 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; 643 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
641 struct fuse_bank *bank = &ocotp->bank[4]; 644 struct fuse_bank *bank = &ocotp->bank[4];
642 struct fuse_bank4_regs *fuse = 645 struct fuse_bank4_regs *fuse =
643 (struct fuse_bank4_regs *)bank->fuse_regs; 646 (struct fuse_bank4_regs *)bank->fuse_regs;
644 647
645 if ((is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL)) && 648 if ((is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
646 dev_id == 1) { 649 is_cpu_type(MXC_CPU_MX6ULL)) && dev_id == 1) {
647 u32 value = readl(&fuse->mac_addr2); 650 u32 value = readl(&fuse->mac_addr2);
648 mac[0] = value >> 24 ; 651 mac[0] = value >> 24 ;
649 mac[1] = value >> 16 ; 652 mac[1] = value >> 16 ;
650 mac[2] = value >> 8 ; 653 mac[2] = value >> 8 ;
651 mac[3] = value ; 654 mac[3] = value ;
652 655
653 value = readl(&fuse->mac_addr1); 656 value = readl(&fuse->mac_addr1);
654 mac[4] = value >> 24 ; 657 mac[4] = value >> 24 ;
655 mac[5] = value >> 16 ; 658 mac[5] = value >> 16 ;
656 659
657 } else { 660 } else {
658 u32 value = readl(&fuse->mac_addr1); 661 u32 value = readl(&fuse->mac_addr1);
659 mac[0] = (value >> 8); 662 mac[0] = (value >> 8);
660 mac[1] = value ; 663 mac[1] = value ;
661 664
662 value = readl(&fuse->mac_addr0); 665 value = readl(&fuse->mac_addr0);
663 mac[2] = value >> 24 ; 666 mac[2] = value >> 24 ;
664 mac[3] = value >> 16 ; 667 mac[3] = value >> 16 ;
665 mac[4] = value >> 8 ; 668 mac[4] = value >> 8 ;
666 mac[5] = value ; 669 mac[5] = value ;
667 } 670 }
668 671
669 } 672 }
670 #endif 673 #endif
671 674
672 /* 675 /*
673 * cfg_val will be used for 676 * cfg_val will be used for
674 * Boot_cfg4[7:0]:Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0] 677 * Boot_cfg4[7:0]:Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
675 * After reset, if GPR10[28] is 1, ROM will use GPR9[25:0] 678 * After reset, if GPR10[28] is 1, ROM will use GPR9[25:0]
676 * instead of SBMR1 to determine the boot device. 679 * instead of SBMR1 to determine the boot device.
677 */ 680 */
678 const struct boot_mode soc_boot_modes[] = { 681 const struct boot_mode soc_boot_modes[] = {
679 {"normal", MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)}, 682 {"normal", MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
680 /* reserved value should start rom usb */ 683 /* reserved value should start rom usb */
681 {"usb", MAKE_CFGVAL(0x01, 0x00, 0x00, 0x00)}, 684 {"usb", MAKE_CFGVAL(0x01, 0x00, 0x00, 0x00)},
682 {"sata", MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)}, 685 {"sata", MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)},
683 {"ecspi1:0", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x08)}, 686 {"ecspi1:0", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x08)},
684 {"ecspi1:1", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x18)}, 687 {"ecspi1:1", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x18)},
685 {"ecspi1:2", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x28)}, 688 {"ecspi1:2", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x28)},
686 {"ecspi1:3", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x38)}, 689 {"ecspi1:3", MAKE_CFGVAL(0x30, 0x00, 0x00, 0x38)},
687 /* 4 bit bus width */ 690 /* 4 bit bus width */
688 {"esdhc1", MAKE_CFGVAL(0x40, 0x20, 0x00, 0x00)}, 691 {"esdhc1", MAKE_CFGVAL(0x40, 0x20, 0x00, 0x00)},
689 {"esdhc2", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)}, 692 {"esdhc2", MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
690 {"esdhc3", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)}, 693 {"esdhc3", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
691 {"esdhc4", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)}, 694 {"esdhc4", MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)},
692 {NULL, 0}, 695 {NULL, 0},
693 }; 696 };
694 697
695 enum boot_device get_boot_device(void) 698 enum boot_device get_boot_device(void)
696 { 699 {
697 enum boot_device boot_dev = UNKNOWN_BOOT; 700 enum boot_device boot_dev = UNKNOWN_BOOT;
698 uint soc_sbmr = readl(SRC_BASE_ADDR + 0x4); 701 uint soc_sbmr = readl(SRC_BASE_ADDR + 0x4);
699 uint bt_mem_ctl = (soc_sbmr & 0x000000FF) >> 4 ; 702 uint bt_mem_ctl = (soc_sbmr & 0x000000FF) >> 4 ;
700 uint bt_mem_type = (soc_sbmr & 0x00000008) >> 3; 703 uint bt_mem_type = (soc_sbmr & 0x00000008) >> 3;
701 uint bt_dev_port = (soc_sbmr & 0x00001800) >> 11; 704 uint bt_dev_port = (soc_sbmr & 0x00001800) >> 11;
702 705
703 switch (bt_mem_ctl) { 706 switch (bt_mem_ctl) {
704 case 0x0: 707 case 0x0:
705 if (bt_mem_type) 708 if (bt_mem_type)
706 boot_dev = ONE_NAND_BOOT; 709 boot_dev = ONE_NAND_BOOT;
707 else 710 else
708 boot_dev = WEIM_NOR_BOOT; 711 boot_dev = WEIM_NOR_BOOT;
709 break; 712 break;
710 case 0x2: 713 case 0x2:
711 boot_dev = SATA_BOOT; 714 boot_dev = SATA_BOOT;
712 break; 715 break;
713 case 0x3: 716 case 0x3:
714 if (bt_mem_type) 717 if (bt_mem_type)
715 boot_dev = I2C_BOOT; 718 boot_dev = I2C_BOOT;
716 else 719 else
717 boot_dev = SPI_NOR_BOOT; 720 boot_dev = SPI_NOR_BOOT;
718 break; 721 break;
719 case 0x4: 722 case 0x4:
720 case 0x5: 723 case 0x5:
721 boot_dev = bt_dev_port + SD1_BOOT; 724 boot_dev = bt_dev_port + SD1_BOOT;
722 break; 725 break;
723 case 0x6: 726 case 0x6:
724 case 0x7: 727 case 0x7:
725 boot_dev = bt_dev_port + MMC1_BOOT; 728 boot_dev = bt_dev_port + MMC1_BOOT;
726 break; 729 break;
727 case 0x8 ... 0xf: 730 case 0x8 ... 0xf:
728 boot_dev = NAND_BOOT; 731 boot_dev = NAND_BOOT;
729 break; 732 break;
730 default: 733 default:
731 boot_dev = UNKNOWN_BOOT; 734 boot_dev = UNKNOWN_BOOT;
732 break; 735 break;
733 } 736 }
734 737
735 return boot_dev; 738 return boot_dev;
736 } 739 }
737 740
738 void set_wdog_reset(struct wdog_regs *wdog) 741 void set_wdog_reset(struct wdog_regs *wdog)
739 { 742 {
740 u32 reg = readw(&wdog->wcr); 743 u32 reg = readw(&wdog->wcr);
741 /* 744 /*
742 * use WDOG_B mode to reset external pmic because it's risky for the 745 * use WDOG_B mode to reset external pmic because it's risky for the
743 * following watchdog reboot in case of cpu freq at lowest 400Mhz with 746 * following watchdog reboot in case of cpu freq at lowest 400Mhz with
744 * ldo-bypass mode. Because boot frequency maybe higher 800Mhz i.e. So 747 * ldo-bypass mode. Because boot frequency maybe higher 800Mhz i.e. So
745 * in ldo-bypass mode watchdog reset will only triger POR reset, not 748 * in ldo-bypass mode watchdog reset will only triger POR reset, not
746 * WDOG reset. But below code depends on hardware design, if HW didn't 749 * WDOG reset. But below code depends on hardware design, if HW didn't
747 * connect WDOG_B pin to external pmic such as i.mx6slevk, we can skip 750 * connect WDOG_B pin to external pmic such as i.mx6slevk, we can skip
748 * these code since it assumed boot from 400Mhz always. 751 * these code since it assumed boot from 400Mhz always.
749 */ 752 */
750 reg = readw(&wdog->wcr); 753 reg = readw(&wdog->wcr);
751 reg |= 1 << 3; 754 reg |= 1 << 3;
752 /* 755 /*
753 * WDZST bit is write-once only bit. Align this bit in kernel, 756 * WDZST bit is write-once only bit. Align this bit in kernel,
754 * otherwise kernel code will have no chance to set this bit. 757 * otherwise kernel code will have no chance to set this bit.
755 */ 758 */
756 reg |= 1 << 0; 759 reg |= 1 << 0;
757 writew(reg, &wdog->wcr); 760 writew(reg, &wdog->wcr);
758 } 761 }
759 762
760 void reset_misc(void) 763 void reset_misc(void)
761 { 764 {
762 #ifdef CONFIG_VIDEO_MXS 765 #ifdef CONFIG_VIDEO_MXS
763 lcdif_power_down(); 766 lcdif_power_down();
764 #endif 767 #endif
765 } 768 }
766 769
767 void s_init(void) 770 void s_init(void)
768 { 771 {
769 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 772 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
770 struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 773 struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
771 u32 mask480; 774 u32 mask480;
772 u32 mask528; 775 u32 mask528;
773 u32 reg, periph1, periph2; 776 u32 reg, periph1, periph2;
774 777
775 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) || 778 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
776 is_cpu_type(MXC_CPU_MX6ULL)) 779 is_cpu_type(MXC_CPU_MX6ULL))
777 return; 780 return;
778 781
779 /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs 782 /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs
780 * to make sure PFD is working right, otherwise, PFDs may 783 * to make sure PFD is working right, otherwise, PFDs may
781 * not output clock after reset, MX6DL and MX6SL have added 396M pfd 784 * not output clock after reset, MX6DL and MX6SL have added 396M pfd
782 * workaround in ROM code, as bus clock need it 785 * workaround in ROM code, as bus clock need it
783 */ 786 */
784 787
785 mask480 = ANATOP_PFD_CLKGATE_MASK(0) | 788 mask480 = ANATOP_PFD_CLKGATE_MASK(0) |
786 ANATOP_PFD_CLKGATE_MASK(1) | 789 ANATOP_PFD_CLKGATE_MASK(1) |
787 ANATOP_PFD_CLKGATE_MASK(2) | 790 ANATOP_PFD_CLKGATE_MASK(2) |
788 ANATOP_PFD_CLKGATE_MASK(3); 791 ANATOP_PFD_CLKGATE_MASK(3);
789 mask528 = ANATOP_PFD_CLKGATE_MASK(1) | 792 mask528 = ANATOP_PFD_CLKGATE_MASK(1) |
790 ANATOP_PFD_CLKGATE_MASK(3); 793 ANATOP_PFD_CLKGATE_MASK(3);
791 794
792 reg = readl(&ccm->cbcmr); 795 reg = readl(&ccm->cbcmr);
793 periph2 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) 796 periph2 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK)
794 >> MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET); 797 >> MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET);
795 periph1 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK) 798 periph1 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK)
796 >> MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET); 799 >> MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);
797 800
798 /* Checking if PLL2 PFD0 or PLL2 PFD2 is using for periph clock */ 801 /* Checking if PLL2 PFD0 or PLL2 PFD2 is using for periph clock */
799 if ((periph2 != 0x2) && (periph1 != 0x2)) 802 if ((periph2 != 0x2) && (periph1 != 0x2))
800 mask528 |= ANATOP_PFD_CLKGATE_MASK(0); 803 mask528 |= ANATOP_PFD_CLKGATE_MASK(0);
801 804
802 if ((periph2 != 0x1) && (periph1 != 0x1) && 805 if ((periph2 != 0x1) && (periph1 != 0x1) &&
803 (periph2 != 0x3) && (periph1 != 0x3)) 806 (periph2 != 0x3) && (periph1 != 0x3))
804 mask528 |= ANATOP_PFD_CLKGATE_MASK(2); 807 mask528 |= ANATOP_PFD_CLKGATE_MASK(2);
805 808
806 writel(mask480, &anatop->pfd_480_set); 809 writel(mask480, &anatop->pfd_480_set);
807 writel(mask528, &anatop->pfd_528_set); 810 writel(mask528, &anatop->pfd_528_set);
808 writel(mask480, &anatop->pfd_480_clr); 811 writel(mask480, &anatop->pfd_480_clr);
809 writel(mask528, &anatop->pfd_528_clr); 812 writel(mask528, &anatop->pfd_528_clr);
810 } 813 }
811 814
812 #ifdef CONFIG_IMX_HDMI 815 #ifdef CONFIG_IMX_HDMI
813 void imx_enable_hdmi_phy(void) 816 void imx_enable_hdmi_phy(void)
814 { 817 {
815 struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR; 818 struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
816 u8 reg; 819 u8 reg;
817 reg = readb(&hdmi->phy_conf0); 820 reg = readb(&hdmi->phy_conf0);
818 reg |= HDMI_PHY_CONF0_PDZ_MASK; 821 reg |= HDMI_PHY_CONF0_PDZ_MASK;
819 writeb(reg, &hdmi->phy_conf0); 822 writeb(reg, &hdmi->phy_conf0);
820 udelay(3000); 823 udelay(3000);
821 reg |= HDMI_PHY_CONF0_ENTMDS_MASK; 824 reg |= HDMI_PHY_CONF0_ENTMDS_MASK;
822 writeb(reg, &hdmi->phy_conf0); 825 writeb(reg, &hdmi->phy_conf0);
823 udelay(3000); 826 udelay(3000);
824 reg |= HDMI_PHY_CONF0_GEN2_TXPWRON_MASK; 827 reg |= HDMI_PHY_CONF0_GEN2_TXPWRON_MASK;
825 writeb(reg, &hdmi->phy_conf0); 828 writeb(reg, &hdmi->phy_conf0);
826 writeb(HDMI_MC_PHYRSTZ_ASSERT, &hdmi->mc_phyrstz); 829 writeb(HDMI_MC_PHYRSTZ_ASSERT, &hdmi->mc_phyrstz);
827 } 830 }
828 831
829 void imx_setup_hdmi(void) 832 void imx_setup_hdmi(void)
830 { 833 {
831 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 834 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
832 struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR; 835 struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
833 int reg, count; 836 int reg, count;
834 u8 val; 837 u8 val;
835 838
836 /* Turn on HDMI PHY clock */ 839 /* Turn on HDMI PHY clock */
837 reg = readl(&mxc_ccm->CCGR2); 840 reg = readl(&mxc_ccm->CCGR2);
838 reg |= MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK| 841 reg |= MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK|
839 MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK; 842 MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK;
840 writel(reg, &mxc_ccm->CCGR2); 843 writel(reg, &mxc_ccm->CCGR2);
841 writeb(HDMI_MC_PHYRSTZ_DEASSERT, &hdmi->mc_phyrstz); 844 writeb(HDMI_MC_PHYRSTZ_DEASSERT, &hdmi->mc_phyrstz);
842 reg = readl(&mxc_ccm->chsccdr); 845 reg = readl(&mxc_ccm->chsccdr);
843 reg &= ~(MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK| 846 reg &= ~(MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK|
844 MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK| 847 MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK|
845 MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK); 848 MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK);
846 reg |= (CHSCCDR_PODF_DIVIDE_BY_3 849 reg |= (CHSCCDR_PODF_DIVIDE_BY_3
847 << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET) 850 << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET)
848 |(CHSCCDR_IPU_PRE_CLK_540M_PFD 851 |(CHSCCDR_IPU_PRE_CLK_540M_PFD
849 << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET); 852 << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET);
850 writel(reg, &mxc_ccm->chsccdr); 853 writel(reg, &mxc_ccm->chsccdr);
851 854
852 /* Workaround to clear the overflow condition */ 855 /* Workaround to clear the overflow condition */
853 if (readb(&hdmi->ih_fc_stat2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) { 856 if (readb(&hdmi->ih_fc_stat2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) {
854 /* TMDS software reset */ 857 /* TMDS software reset */
855 writeb((u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ, &hdmi->mc_swrstz); 858 writeb((u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ, &hdmi->mc_swrstz);
856 val = readb(&hdmi->fc_invidconf); 859 val = readb(&hdmi->fc_invidconf);
857 for (count = 0 ; count < 5 ; count++) 860 for (count = 0 ; count < 5 ; count++)
858 writeb(val, &hdmi->fc_invidconf); 861 writeb(val, &hdmi->fc_invidconf);
859 } 862 }
860 } 863 }
861 #endif 864 #endif
862 865
863 #ifdef CONFIG_IMX_BOOTAUX 866 #ifdef CONFIG_IMX_BOOTAUX
864 int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) 867 int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
865 { 868 {
866 struct src *src_reg; 869 struct src *src_reg;
867 u32 stack, pc; 870 u32 stack, pc;
868 871
869 if (!boot_private_data) 872 if (!boot_private_data)
870 return -EINVAL; 873 return -EINVAL;
871 874
872 stack = *(u32 *)boot_private_data; 875 stack = *(u32 *)boot_private_data;
873 pc = *(u32 *)(boot_private_data + 4); 876 pc = *(u32 *)(boot_private_data + 4);
874 877
875 /* Set the stack and pc to M4 bootROM */ 878 /* Set the stack and pc to M4 bootROM */
876 writel(stack, M4_BOOTROM_BASE_ADDR); 879 writel(stack, M4_BOOTROM_BASE_ADDR);
877 writel(pc, M4_BOOTROM_BASE_ADDR + 4); 880 writel(pc, M4_BOOTROM_BASE_ADDR + 4);
878 881
879 /* Enable M4 */ 882 /* Enable M4 */
880 src_reg = (struct src *)SRC_BASE_ADDR; 883 src_reg = (struct src *)SRC_BASE_ADDR;
881 clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK, 884 clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK,
882 SRC_SCR_M4_ENABLE_MASK); 885 SRC_SCR_M4_ENABLE_MASK);
883 886
884 return 0; 887 return 0;
885 } 888 }
886 889
887 int arch_auxiliary_core_check_up(u32 core_id) 890 int arch_auxiliary_core_check_up(u32 core_id)
888 { 891 {
889 struct src *src_reg = (struct src *)SRC_BASE_ADDR; 892 struct src *src_reg = (struct src *)SRC_BASE_ADDR;
890 unsigned val; 893 unsigned val;
891 894
892 val = readl(&src_reg->scr); 895 val = readl(&src_reg->scr);
893 896
894 if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK) 897 if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK)
895 return 0; /* assert in reset */ 898 return 0; /* assert in reset */
896 899
897 return 1; 900 return 1;
898 } 901 }
899 #endif 902 #endif
900 903
901 #ifdef CONFIG_LDO_BYPASS_CHECK 904 #ifdef CONFIG_LDO_BYPASS_CHECK
902 DECLARE_GLOBAL_DATA_PTR; 905 DECLARE_GLOBAL_DATA_PTR;
903 static int ldo_bypass; 906 static int ldo_bypass;
904 907
905 int check_ldo_bypass(void) 908 int check_ldo_bypass(void)
906 { 909 {
907 const int *ldo_mode; 910 const int *ldo_mode;
908 int node; 911 int node;
909 912
910 /* get the right fdt_blob from the global working_fdt */ 913 /* get the right fdt_blob from the global working_fdt */
911 gd->fdt_blob = working_fdt; 914 gd->fdt_blob = working_fdt;
912 /* Get the node from FDT for anatop ldo-bypass */ 915 /* Get the node from FDT for anatop ldo-bypass */
913 node = fdt_node_offset_by_compatible(gd->fdt_blob, -1, 916 node = fdt_node_offset_by_compatible(gd->fdt_blob, -1,
914 "fsl,imx6q-gpc"); 917 "fsl,imx6q-gpc");
915 if (node < 0) { 918 if (node < 0) {
916 printf("No gpc device node %d, force to ldo-enable.\n", node); 919 printf("No gpc device node %d, force to ldo-enable.\n", node);
917 return 0; 920 return 0;
918 } 921 }
919 ldo_mode = fdt_getprop(gd->fdt_blob, node, "fsl,ldo-bypass", NULL); 922 ldo_mode = fdt_getprop(gd->fdt_blob, node, "fsl,ldo-bypass", NULL);
920 /* 923 /*
921 * return 1 if "fsl,ldo-bypass = <1>", else return 0 if 924 * return 1 if "fsl,ldo-bypass = <1>", else return 0 if
922 * "fsl,ldo-bypass = <0>" or no "fsl,ldo-bypass" property 925 * "fsl,ldo-bypass = <0>" or no "fsl,ldo-bypass" property
923 */ 926 */
924 ldo_bypass = fdt32_to_cpu(*ldo_mode) == 1 ? 1 : 0; 927 ldo_bypass = fdt32_to_cpu(*ldo_mode) == 1 ? 1 : 0;
925 928
926 return ldo_bypass; 929 return ldo_bypass;
927 } 930 }
928 931
929 int check_1_2G(void) 932 int check_1_2G(void)
930 { 933 {
931 u32 reg; 934 u32 reg;
932 int result = 0; 935 int result = 0;
933 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; 936 struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
934 struct fuse_bank *bank = &ocotp->bank[0]; 937 struct fuse_bank *bank = &ocotp->bank[0];
935 struct fuse_bank0_regs *fuse_bank0 = 938 struct fuse_bank0_regs *fuse_bank0 =
936 (struct fuse_bank0_regs *)bank->fuse_regs; 939 (struct fuse_bank0_regs *)bank->fuse_regs;
937 940
938 reg = readl(&fuse_bank0->cfg3); 941 reg = readl(&fuse_bank0->cfg3);
939 if (((reg >> 16) & 0x3) == 0x3) { 942 if (((reg >> 16) & 0x3) == 0x3) {
940 if (ldo_bypass) { 943 if (ldo_bypass) {
941 printf("Wrong dtb file used! i.MX6Q@1.2Ghz only " 944 printf("Wrong dtb file used! i.MX6Q@1.2Ghz only "
942 "works with ldo-enable mode!\n"); 945 "works with ldo-enable mode!\n");
943 /* 946 /*
944 * Currently, only imx6q-sabresd board might be here, 947 * Currently, only imx6q-sabresd board might be here,
945 * since only i.MX6Q support 1.2G and only Sabresd board 948 * since only i.MX6Q support 1.2G and only Sabresd board
946 * support ldo-bypass mode. So hardcode here. 949 * support ldo-bypass mode. So hardcode here.
947 * You can also modify your board(i.MX6Q) dtb name if it 950 * You can also modify your board(i.MX6Q) dtb name if it
948 * supports both ldo-bypass and ldo-enable mode. 951 * supports both ldo-bypass and ldo-enable mode.
949 */ 952 */
950 printf("Please use imx6q-sabresd-ldo.dtb!\n"); 953 printf("Please use imx6q-sabresd-ldo.dtb!\n");
951 hang(); 954 hang();
952 } 955 }
953 result = 1; 956 result = 1;
954 } 957 }
955 958
956 return result; 959 return result;
957 } 960 }
958 961
959 static int arm_orig_podf; 962 static int arm_orig_podf;
960 void set_arm_freq_400M(bool is_400M) 963 void set_arm_freq_400M(bool is_400M)
961 { 964 {
962 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 965 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
963 966
964 if (is_400M) 967 if (is_400M)
965 writel(0x1, &mxc_ccm->cacrr); 968 writel(0x1, &mxc_ccm->cacrr);
966 else 969 else
967 writel(arm_orig_podf, &mxc_ccm->cacrr); 970 writel(arm_orig_podf, &mxc_ccm->cacrr);
968 } 971 }
969 972
970 void prep_anatop_bypass(void) 973 void prep_anatop_bypass(void)
971 { 974 {
972 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR; 975 struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
973 976
974 arm_orig_podf = readl(&mxc_ccm->cacrr); 977 arm_orig_podf = readl(&mxc_ccm->cacrr);
975 /* 978 /*
976 * Downgrade ARM speed to 400Mhz as half of boot 800Mhz before ldo 979 * Downgrade ARM speed to 400Mhz as half of boot 800Mhz before ldo
977 * bypassed, also downgrade internal vddarm ldo to 0.975V. 980 * bypassed, also downgrade internal vddarm ldo to 0.975V.
978 * VDDARM_IN 0.975V + 125mV = 1.1V < Max(1.3V) 981 * VDDARM_IN 0.975V + 125mV = 1.1V < Max(1.3V)
979 * otherwise at 800Mhz(i.mx6dl): 982 * otherwise at 800Mhz(i.mx6dl):
980 * VDDARM_IN 1.175V + 125mV = 1.3V = Max(1.3V) 983 * VDDARM_IN 1.175V + 125mV = 1.3V = Max(1.3V)
981 * We need provide enough gap in this case. 984 * We need provide enough gap in this case.
982 * skip if boot from 400M. 985 * skip if boot from 400M.
983 */ 986 */
984 if (!arm_orig_podf) 987 if (!arm_orig_podf)
985 set_arm_freq_400M(true); 988 set_arm_freq_400M(true);
986 989
987 if (!is_cpu_type(MXC_CPU_MX6DL) && !is_cpu_type(MXC_CPU_MX6SX)) 990 if (!is_cpu_type(MXC_CPU_MX6DL) && !is_cpu_type(MXC_CPU_MX6SX))
988 set_ldo_voltage(LDO_ARM, 975); 991 set_ldo_voltage(LDO_ARM, 975);
989 else 992 else
990 set_ldo_voltage(LDO_ARM, 1150); 993 set_ldo_voltage(LDO_ARM, 1150);
991 } 994 }
992 995
993 int set_anatop_bypass(int wdog_reset_pin) 996 int set_anatop_bypass(int wdog_reset_pin)
994 { 997 {
995 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR; 998 struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
996 struct wdog_regs *wdog; 999 struct wdog_regs *wdog;
997 u32 reg = readl(&anatop->reg_core); 1000 u32 reg = readl(&anatop->reg_core);
998 1001
999 /* bypass VDDARM/VDDSOC */ 1002 /* bypass VDDARM/VDDSOC */
1000 reg = reg | (0x1F << 18) | 0x1F; 1003 reg = reg | (0x1F << 18) | 0x1F;
1001 writel(reg, &anatop->reg_core); 1004 writel(reg, &anatop->reg_core);
1002 1005
1003 if (wdog_reset_pin == 2) 1006 if (wdog_reset_pin == 2)
1004 wdog = (struct wdog_regs *) WDOG2_BASE_ADDR; 1007 wdog = (struct wdog_regs *) WDOG2_BASE_ADDR;
1005 else if (wdog_reset_pin == 1) 1008 else if (wdog_reset_pin == 1)
1006 wdog = (struct wdog_regs *) WDOG1_BASE_ADDR; 1009 wdog = (struct wdog_regs *) WDOG1_BASE_ADDR;
1007 else 1010 else
1008 return arm_orig_podf; 1011 return arm_orig_podf;
1009 set_wdog_reset(wdog); 1012 set_wdog_reset(wdog);
1010 return arm_orig_podf; 1013 return arm_orig_podf;
1011 } 1014 }
1012 1015
1013 void finish_anatop_bypass(void) 1016 void finish_anatop_bypass(void)
1014 { 1017 {
1015 if (!arm_orig_podf) 1018 if (!arm_orig_podf)
1016 set_arm_freq_400M(false); 1019 set_arm_freq_400M(false);
1017 } 1020 }
1018 #endif 1021 #endif
1019 1022
1020 #ifdef CONFIG_FSL_FASTBOOT 1023 #ifdef CONFIG_FSL_FASTBOOT
1021 1024
1022 #ifdef CONFIG_ANDROID_RECOVERY 1025 #ifdef CONFIG_ANDROID_RECOVERY
1023 #define ANDROID_RECOVERY_BOOT (1 << 7) 1026 #define ANDROID_RECOVERY_BOOT (1 << 7)
1024 /* check if the recovery bit is set by kernel, it can be set by kernel 1027 /* check if the recovery bit is set by kernel, it can be set by kernel
1025 * issue a command '# reboot recovery' */ 1028 * issue a command '# reboot recovery' */
1026 int recovery_check_and_clean_flag(void) 1029 int recovery_check_and_clean_flag(void)
1027 { 1030 {
1028 int flag_set = 0; 1031 int flag_set = 0;
1029 u32 reg; 1032 u32 reg;
1030 reg = readl(SNVS_BASE_ADDR + SNVS_LPGPR); 1033 reg = readl(SNVS_BASE_ADDR + SNVS_LPGPR);
1031 1034
1032 flag_set = !!(reg & ANDROID_RECOVERY_BOOT); 1035 flag_set = !!(reg & ANDROID_RECOVERY_BOOT);
1033 printf("check_and_clean: reg %x, flag_set %d\n", reg, flag_set); 1036 printf("check_and_clean: reg %x, flag_set %d\n", reg, flag_set);
1034 /* clean it in case looping infinite here.... */ 1037 /* clean it in case looping infinite here.... */
1035 if (flag_set) { 1038 if (flag_set) {
1036 reg &= ~ANDROID_RECOVERY_BOOT; 1039 reg &= ~ANDROID_RECOVERY_BOOT;
1037 writel(reg, SNVS_BASE_ADDR + SNVS_LPGPR); 1040 writel(reg, SNVS_BASE_ADDR + SNVS_LPGPR);
1038 } 1041 }
1039 1042
1040 return flag_set; 1043 return flag_set;
1041 } 1044 }
1042 #endif /*CONFIG_ANDROID_RECOVERY*/ 1045 #endif /*CONFIG_ANDROID_RECOVERY*/
1043 1046
1044 #define ANDROID_FASTBOOT_BOOT (1 << 8) 1047 #define ANDROID_FASTBOOT_BOOT (1 << 8)
1045 /* check if the recovery bit is set by kernel, it can be set by kernel 1048 /* check if the recovery bit is set by kernel, it can be set by kernel
1046 * issue a command '# reboot fastboot' */ 1049 * issue a command '# reboot fastboot' */
1047 int fastboot_check_and_clean_flag(void) 1050 int fastboot_check_and_clean_flag(void)
1048 { 1051 {
1049 int flag_set = 0; 1052 int flag_set = 0;
1050 u32 reg; 1053 u32 reg;
1051 1054
1052 reg = readl(SNVS_BASE_ADDR + SNVS_LPGPR); 1055 reg = readl(SNVS_BASE_ADDR + SNVS_LPGPR);
1053 1056
1054 flag_set = !!(reg & ANDROID_FASTBOOT_BOOT); 1057 flag_set = !!(reg & ANDROID_FASTBOOT_BOOT);
1055 1058
1056 /* clean it in case looping infinite here.... */ 1059 /* clean it in case looping infinite here.... */
1057 if (flag_set) { 1060 if (flag_set) {
1058 reg &= ~ANDROID_FASTBOOT_BOOT; 1061 reg &= ~ANDROID_FASTBOOT_BOOT;
1059 writel(reg, SNVS_BASE_ADDR + SNVS_LPGPR); 1062 writel(reg, SNVS_BASE_ADDR + SNVS_LPGPR);
1060 } 1063 }
1061 1064
1062 return flag_set; 1065 return flag_set;
1063 } 1066 }
1064 1067
1065 void fastboot_enable_flag(void) 1068 void fastboot_enable_flag(void)
1066 { 1069 {
1067 setbits_le32(SNVS_BASE_ADDR + SNVS_LPGPR, 1070 setbits_le32(SNVS_BASE_ADDR + SNVS_LPGPR,
1068 ANDROID_FASTBOOT_BOOT); 1071 ANDROID_FASTBOOT_BOOT);
1069 } 1072 }
1070 #endif /*CONFIG_FSL_FASTBOOT*/ 1073 #endif /*CONFIG_FSL_FASTBOOT*/
1071 1074
1072 1075
arch/arm/imx-common/init.c
1 /* 1 /*
2 * Copyright 2015-2016 Freescale Semiconductor, Inc. 2 * Copyright 2015-2016 Freescale Semiconductor, Inc.
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 #include <asm/io.h> 7 #include <asm/io.h>
8 #include <asm/arch/imx-regs.h> 8 #include <asm/arch/imx-regs.h>
9 #include <asm/arch/clock.h> 9 #include <asm/arch/clock.h>
10 #include <asm/arch/sys_proto.h> 10 #include <asm/arch/sys_proto.h>
11 #include <asm/imx-common/boot_mode.h> 11 #include <asm/imx-common/boot_mode.h>
12 #include <asm/arch/crm_regs.h> 12 #include <asm/arch/crm_regs.h>
13 13
14 void init_aips(void) 14 void init_aips(void)
15 { 15 {
16 struct aipstz_regs *aips1, *aips2, *aips3; 16 struct aipstz_regs *aips1, *aips2, *aips3;
17 17
18 aips1 = (struct aipstz_regs *)AIPS1_BASE_ADDR; 18 aips1 = (struct aipstz_regs *)AIPS1_BASE_ADDR;
19 aips2 = (struct aipstz_regs *)AIPS2_BASE_ADDR; 19 aips2 = (struct aipstz_regs *)AIPS2_BASE_ADDR;
20 aips3 = (struct aipstz_regs *)AIPS3_BASE_ADDR; 20 aips3 = (struct aipstz_regs *)AIPS3_BASE_ADDR;
21 21
22 /* 22 /*
23 * Set all MPROTx to be non-bufferable, trusted for R/W, 23 * Set all MPROTx to be non-bufferable, trusted for R/W,
24 * not forced to user-mode. 24 * not forced to user-mode.
25 */ 25 */
26 writel(0x77777777, &aips1->mprot0); 26 writel(0x77777777, &aips1->mprot0);
27 writel(0x77777777, &aips1->mprot1); 27 writel(0x77777777, &aips1->mprot1);
28 writel(0x77777777, &aips2->mprot0); 28 writel(0x77777777, &aips2->mprot0);
29 writel(0x77777777, &aips2->mprot1); 29 writel(0x77777777, &aips2->mprot1);
30 30
31 /* 31 /*
32 * Set all OPACRx to be non-bufferable, not require 32 * Set all OPACRx to be non-bufferable, not require
33 * supervisor privilege level for access,allow for 33 * supervisor privilege level for access,allow for
34 * write access and untrusted master access. 34 * write access and untrusted master access.
35 */ 35 */
36 writel(0x00000000, &aips1->opacr0); 36 writel(0x00000000, &aips1->opacr0);
37 writel(0x00000000, &aips1->opacr1); 37 writel(0x00000000, &aips1->opacr1);
38 writel(0x00000000, &aips1->opacr2); 38 writel(0x00000000, &aips1->opacr2);
39 writel(0x00000000, &aips1->opacr3); 39 writel(0x00000000, &aips1->opacr3);
40 writel(0x00000000, &aips1->opacr4); 40 writel(0x00000000, &aips1->opacr4);
41 writel(0x00000000, &aips2->opacr0); 41 writel(0x00000000, &aips2->opacr0);
42 writel(0x00000000, &aips2->opacr1); 42 writel(0x00000000, &aips2->opacr1);
43 writel(0x00000000, &aips2->opacr2); 43 writel(0x00000000, &aips2->opacr2);
44 writel(0x00000000, &aips2->opacr3); 44 writel(0x00000000, &aips2->opacr3);
45 writel(0x00000000, &aips2->opacr4); 45 writel(0x00000000, &aips2->opacr4);
46 46
47 if (is_cpu_type(MXC_CPU_MX6ULL) || is_cpu_type(MXC_CPU_MX6SX) || 47 if (is_cpu_type(MXC_CPU_MX6ULL) || is_cpu_type(MXC_CPU_MX6SX) ||
48 is_soc_type(MXC_SOC_MX7)) { 48 is_soc_type(MXC_SOC_MX7)) {
49 /* 49 /*
50 * Set all MPROTx to be non-bufferable, trusted for R/W, 50 * Set all MPROTx to be non-bufferable, trusted for R/W,
51 * not forced to user-mode. 51 * not forced to user-mode.
52 */ 52 */
53 writel(0x77777777, &aips3->mprot0); 53 writel(0x77777777, &aips3->mprot0);
54 writel(0x77777777, &aips3->mprot1); 54 writel(0x77777777, &aips3->mprot1);
55 55
56 /* 56 /*
57 * Set all OPACRx to be non-bufferable, not require 57 * Set all OPACRx to be non-bufferable, not require
58 * supervisor privilege level for access,allow for 58 * supervisor privilege level for access,allow for
59 * write access and untrusted master access. 59 * write access and untrusted master access.
60 */ 60 */
61 writel(0x00000000, &aips3->opacr0); 61 writel(0x00000000, &aips3->opacr0);
62 writel(0x00000000, &aips3->opacr1); 62 writel(0x00000000, &aips3->opacr1);
63 writel(0x00000000, &aips3->opacr2); 63 writel(0x00000000, &aips3->opacr2);
64 writel(0x00000000, &aips3->opacr3); 64 writel(0x00000000, &aips3->opacr3);
65 writel(0x00000000, &aips3->opacr4); 65 writel(0x00000000, &aips3->opacr4);
66 } 66 }
67 } 67 }
68 68
69 void imx_set_wdog_powerdown(bool enable) 69 void imx_set_wdog_powerdown(bool enable)
70 { 70 {
71 struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR; 71 struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR;
72 struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR; 72 struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR;
73 struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR; 73 struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR;
74 #ifdef CONFIG_MX7D 74 #ifdef CONFIG_MX7D
75 struct wdog_regs *wdog4 = (struct wdog_regs *)WDOG4_BASE_ADDR; 75 struct wdog_regs *wdog4 = (struct wdog_regs *)WDOG4_BASE_ADDR;
76 #endif 76 #endif
77 77
78 /* Write to the PDE (Power Down Enable) bit */ 78 /* Write to the PDE (Power Down Enable) bit */
79 writew(enable, &wdog1->wmcr); 79 writew(enable, &wdog1->wmcr);
80 writew(enable, &wdog2->wmcr); 80 writew(enable, &wdog2->wmcr);
81 81
82 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) || 82 if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
83 is_soc_type(MXC_SOC_MX7)) 83 is_cpu_type(MXC_CPU_MX6ULL) || is_soc_type(MXC_SOC_MX7))
84 writew(enable, &wdog3->wmcr); 84 writew(enable, &wdog3->wmcr);
85 #ifdef CONFIG_MX7D 85 #ifdef CONFIG_MX7D
86 writew(enable, &wdog4->wmcr); 86 writew(enable, &wdog4->wmcr);
87 #endif 87 #endif
88 } 88 }
89 89
90 #define SRC_SCR_WARM_RESET_ENABLE 0 90 #define SRC_SCR_WARM_RESET_ENABLE 0
91 91
92 void init_src(void) 92 void init_src(void)
93 { 93 {
94 struct src *src_regs = (struct src *)SRC_BASE_ADDR; 94 struct src *src_regs = (struct src *)SRC_BASE_ADDR;
95 u32 val; 95 u32 val;
96 96
97 /* 97 /*
98 * force warm reset sources to generate cold reset 98 * force warm reset sources to generate cold reset
99 * for a more reliable restart 99 * for a more reliable restart
100 */ 100 */
101 val = readl(&src_regs->scr); 101 val = readl(&src_regs->scr);
102 val &= ~(1 << SRC_SCR_WARM_RESET_ENABLE); 102 val &= ~(1 << SRC_SCR_WARM_RESET_ENABLE);
103 writel(val, &src_regs->scr); 103 writel(val, &src_regs->scr);
104 } 104 }
105 105
106 #ifdef CONFIG_CMD_BMODE 106 #ifdef CONFIG_CMD_BMODE
107 void boot_mode_apply(unsigned cfg_val) 107 void boot_mode_apply(unsigned cfg_val)
108 { 108 {
109 unsigned reg; 109 unsigned reg;
110 struct src *psrc = (struct src *)SRC_BASE_ADDR; 110 struct src *psrc = (struct src *)SRC_BASE_ADDR;
111 writel(cfg_val, &psrc->gpr9); 111 writel(cfg_val, &psrc->gpr9);
112 reg = readl(&psrc->gpr10); 112 reg = readl(&psrc->gpr10);
113 if (cfg_val) 113 if (cfg_val)
114 reg |= 1 << 28; 114 reg |= 1 << 28;
115 else 115 else
116 reg &= ~(1 << 28); 116 reg &= ~(1 << 28);
117 writel(reg, &psrc->gpr10); 117 writel(reg, &psrc->gpr10);
118 } 118 }
119 #endif 119 #endif
120 120
arch/arm/include/asm/arch-mx6/crm_regs.h
1 /* 1 /*
2 * Copyright 2011-2016 Freescale Semiconductor, Inc. All Rights Reserved. 2 * Copyright 2011-2016 Freescale Semiconductor, Inc. All Rights Reserved.
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 #ifndef __ARCH_ARM_MACH_MX6_CCM_REGS_H__ 7 #ifndef __ARCH_ARM_MACH_MX6_CCM_REGS_H__
8 #define __ARCH_ARM_MACH_MX6_CCM_REGS_H__ 8 #define __ARCH_ARM_MACH_MX6_CCM_REGS_H__
9 9
10 #define CCM_CCOSR 0x020c4060 10 #define CCM_CCOSR 0x020c4060
11 #define CCM_CCGR0 0x020C4068 11 #define CCM_CCGR0 0x020C4068
12 #define CCM_CCGR1 0x020C406c 12 #define CCM_CCGR1 0x020C406c
13 #define CCM_CCGR2 0x020C4070 13 #define CCM_CCGR2 0x020C4070
14 #define CCM_CCGR3 0x020C4074 14 #define CCM_CCGR3 0x020C4074
15 #define CCM_CCGR4 0x020C4078 15 #define CCM_CCGR4 0x020C4078
16 #define CCM_CCGR5 0x020C407c 16 #define CCM_CCGR5 0x020C407c
17 #define CCM_CCGR6 0x020C4080 17 #define CCM_CCGR6 0x020C4080
18 18
19 #define PMU_MISC2 0x020C8170 19 #define PMU_MISC2 0x020C8170
20 20
21 #ifndef __ASSEMBLY__ 21 #ifndef __ASSEMBLY__
22 struct mxc_ccm_reg { 22 struct mxc_ccm_reg {
23 u32 ccr; /* 0x0000 */ 23 u32 ccr; /* 0x0000 */
24 u32 ccdr; 24 u32 ccdr;
25 u32 csr; 25 u32 csr;
26 u32 ccsr; 26 u32 ccsr;
27 u32 cacrr; /* 0x0010*/ 27 u32 cacrr; /* 0x0010*/
28 u32 cbcdr; 28 u32 cbcdr;
29 u32 cbcmr; 29 u32 cbcmr;
30 u32 cscmr1; 30 u32 cscmr1;
31 u32 cscmr2; /* 0x0020 */ 31 u32 cscmr2; /* 0x0020 */
32 u32 cscdr1; 32 u32 cscdr1;
33 u32 cs1cdr; 33 u32 cs1cdr;
34 u32 cs2cdr; 34 u32 cs2cdr;
35 u32 cdcdr; /* 0x0030 */ 35 u32 cdcdr; /* 0x0030 */
36 u32 chsccdr; 36 u32 chsccdr;
37 u32 cscdr2; 37 u32 cscdr2;
38 u32 cscdr3; 38 u32 cscdr3;
39 u32 cscdr4; /* 0x0040 */ 39 u32 cscdr4; /* 0x0040 */
40 u32 resv0; 40 u32 resv0;
41 u32 cdhipr; 41 u32 cdhipr;
42 u32 cdcr; 42 u32 cdcr;
43 u32 ctor; /* 0x0050 */ 43 u32 ctor; /* 0x0050 */
44 u32 clpcr; 44 u32 clpcr;
45 u32 cisr; 45 u32 cisr;
46 u32 cimr; 46 u32 cimr;
47 u32 ccosr; /* 0x0060 */ 47 u32 ccosr; /* 0x0060 */
48 u32 cgpr; 48 u32 cgpr;
49 u32 CCGR0; 49 u32 CCGR0;
50 u32 CCGR1; 50 u32 CCGR1;
51 u32 CCGR2; /* 0x0070 */ 51 u32 CCGR2; /* 0x0070 */
52 u32 CCGR3; 52 u32 CCGR3;
53 u32 CCGR4; 53 u32 CCGR4;
54 u32 CCGR5; 54 u32 CCGR5;
55 u32 CCGR6; /* 0x0080 */ 55 u32 CCGR6; /* 0x0080 */
56 u32 CCGR7; 56 u32 CCGR7;
57 u32 cmeor; 57 u32 cmeor;
58 u32 resv[0xfdd]; 58 u32 resv[0xfdd];
59 u32 analog_pll_sys; /* 0x4000 */ 59 u32 analog_pll_sys; /* 0x4000 */
60 u32 analog_pll_sys_set; 60 u32 analog_pll_sys_set;
61 u32 analog_pll_sys_clr; 61 u32 analog_pll_sys_clr;
62 u32 analog_pll_sys_tog; 62 u32 analog_pll_sys_tog;
63 u32 analog_usb1_pll_480_ctrl; /* 0x4010 */ 63 u32 analog_usb1_pll_480_ctrl; /* 0x4010 */
64 u32 analog_usb1_pll_480_ctrl_set; 64 u32 analog_usb1_pll_480_ctrl_set;
65 u32 analog_usb1_pll_480_ctrl_clr; 65 u32 analog_usb1_pll_480_ctrl_clr;
66 u32 analog_usb1_pll_480_ctrl_tog; 66 u32 analog_usb1_pll_480_ctrl_tog;
67 u32 analog_reserved0[4]; 67 u32 analog_reserved0[4];
68 u32 analog_pll_528; /* 0x4030 */ 68 u32 analog_pll_528; /* 0x4030 */
69 u32 analog_pll_528_set; 69 u32 analog_pll_528_set;
70 u32 analog_pll_528_clr; 70 u32 analog_pll_528_clr;
71 u32 analog_pll_528_tog; 71 u32 analog_pll_528_tog;
72 u32 analog_pll_528_ss; /* 0x4040 */ 72 u32 analog_pll_528_ss; /* 0x4040 */
73 u32 analog_reserved1[3]; 73 u32 analog_reserved1[3];
74 u32 analog_pll_528_num; /* 0x4050 */ 74 u32 analog_pll_528_num; /* 0x4050 */
75 u32 analog_reserved2[3]; 75 u32 analog_reserved2[3];
76 u32 analog_pll_528_denom; /* 0x4060 */ 76 u32 analog_pll_528_denom; /* 0x4060 */
77 u32 analog_reserved3[3]; 77 u32 analog_reserved3[3];
78 u32 analog_pll_audio; /* 0x4070 */ 78 u32 analog_pll_audio; /* 0x4070 */
79 u32 analog_pll_audio_set; 79 u32 analog_pll_audio_set;
80 u32 analog_pll_audio_clr; 80 u32 analog_pll_audio_clr;
81 u32 analog_pll_audio_tog; 81 u32 analog_pll_audio_tog;
82 u32 analog_pll_audio_num; /* 0x4080*/ 82 u32 analog_pll_audio_num; /* 0x4080*/
83 u32 analog_reserved4[3]; 83 u32 analog_reserved4[3];
84 u32 analog_pll_audio_denom; /* 0x4090 */ 84 u32 analog_pll_audio_denom; /* 0x4090 */
85 u32 analog_reserved5[3]; 85 u32 analog_reserved5[3];
86 u32 analog_pll_video; /* 0x40a0 */ 86 u32 analog_pll_video; /* 0x40a0 */
87 u32 analog_pll_video_set; 87 u32 analog_pll_video_set;
88 u32 analog_pll_video_clr; 88 u32 analog_pll_video_clr;
89 u32 analog_pll_video_tog; 89 u32 analog_pll_video_tog;
90 u32 analog_pll_video_num; /* 0x40b0 */ 90 u32 analog_pll_video_num; /* 0x40b0 */
91 u32 analog_reserved6[3]; 91 u32 analog_reserved6[3];
92 u32 analog_pll_video_denom; /* 0x40c0 */ 92 u32 analog_pll_video_denom; /* 0x40c0 */
93 u32 analog_reserved7[7]; 93 u32 analog_reserved7[7];
94 u32 analog_pll_enet; /* 0x40e0 */ 94 u32 analog_pll_enet; /* 0x40e0 */
95 u32 analog_pll_enet_set; 95 u32 analog_pll_enet_set;
96 u32 analog_pll_enet_clr; 96 u32 analog_pll_enet_clr;
97 u32 analog_pll_enet_tog; 97 u32 analog_pll_enet_tog;
98 u32 analog_pfd_480; /* 0x40f0 */ 98 u32 analog_pfd_480; /* 0x40f0 */
99 u32 analog_pfd_480_set; 99 u32 analog_pfd_480_set;
100 u32 analog_pfd_480_clr; 100 u32 analog_pfd_480_clr;
101 u32 analog_pfd_480_tog; 101 u32 analog_pfd_480_tog;
102 u32 analog_pfd_528; /* 0x4100 */ 102 u32 analog_pfd_528; /* 0x4100 */
103 u32 analog_pfd_528_set; 103 u32 analog_pfd_528_set;
104 u32 analog_pfd_528_clr; 104 u32 analog_pfd_528_clr;
105 u32 analog_pfd_528_tog; 105 u32 analog_pfd_528_tog;
106 /* PMU Memory Map/Register Definition */ 106 /* PMU Memory Map/Register Definition */
107 u32 pmu_reg_1p1; 107 u32 pmu_reg_1p1;
108 u32 pmu_reg_1p1_set; 108 u32 pmu_reg_1p1_set;
109 u32 pmu_reg_1p1_clr; 109 u32 pmu_reg_1p1_clr;
110 u32 pmu_reg_1p1_tog; 110 u32 pmu_reg_1p1_tog;
111 u32 pmu_reg_3p0; 111 u32 pmu_reg_3p0;
112 u32 pmu_reg_3p0_set; 112 u32 pmu_reg_3p0_set;
113 u32 pmu_reg_3p0_clr; 113 u32 pmu_reg_3p0_clr;
114 u32 pmu_reg_3p0_tog; 114 u32 pmu_reg_3p0_tog;
115 u32 pmu_reg_2p5; 115 u32 pmu_reg_2p5;
116 u32 pmu_reg_2p5_set; 116 u32 pmu_reg_2p5_set;
117 u32 pmu_reg_2p5_clr; 117 u32 pmu_reg_2p5_clr;
118 u32 pmu_reg_2p5_tog; 118 u32 pmu_reg_2p5_tog;
119 u32 pmu_reg_core; 119 u32 pmu_reg_core;
120 u32 pmu_reg_core_set; 120 u32 pmu_reg_core_set;
121 u32 pmu_reg_core_clr; 121 u32 pmu_reg_core_clr;
122 u32 pmu_reg_core_tog; 122 u32 pmu_reg_core_tog;
123 u32 pmu_misc0; 123 u32 pmu_misc0;
124 u32 pmu_misc0_set; 124 u32 pmu_misc0_set;
125 u32 pmu_misc0_clr; 125 u32 pmu_misc0_clr;
126 u32 pmu_misc0_tog; 126 u32 pmu_misc0_tog;
127 u32 pmu_misc1; 127 u32 pmu_misc1;
128 u32 pmu_misc1_set; 128 u32 pmu_misc1_set;
129 u32 pmu_misc1_clr; 129 u32 pmu_misc1_clr;
130 u32 pmu_misc1_tog; 130 u32 pmu_misc1_tog;
131 u32 pmu_misc2; 131 u32 pmu_misc2;
132 u32 pmu_misc2_set; 132 u32 pmu_misc2_set;
133 u32 pmu_misc2_clr; 133 u32 pmu_misc2_clr;
134 u32 pmu_misc2_tog; 134 u32 pmu_misc2_tog;
135 /* TEMPMON Memory Map/Register Definition */ 135 /* TEMPMON Memory Map/Register Definition */
136 u32 tempsense0; 136 u32 tempsense0;
137 u32 tempsense0_set; 137 u32 tempsense0_set;
138 u32 tempsense0_clr; 138 u32 tempsense0_clr;
139 u32 tempsense0_tog; 139 u32 tempsense0_tog;
140 u32 tempsense1; 140 u32 tempsense1;
141 u32 tempsense1_set; 141 u32 tempsense1_set;
142 u32 tempsense1_clr; 142 u32 tempsense1_clr;
143 u32 tempsense1_tog; 143 u32 tempsense1_tog;
144 /* USB Analog Memory Map/Register Definition */ 144 /* USB Analog Memory Map/Register Definition */
145 u32 usb1_vbus_detect; 145 u32 usb1_vbus_detect;
146 u32 usb1_vbus_detect_set; 146 u32 usb1_vbus_detect_set;
147 u32 usb1_vbus_detect_clr; 147 u32 usb1_vbus_detect_clr;
148 u32 usb1_vbus_detect_tog; 148 u32 usb1_vbus_detect_tog;
149 u32 usb1_chrg_detect; 149 u32 usb1_chrg_detect;
150 u32 usb1_chrg_detect_set; 150 u32 usb1_chrg_detect_set;
151 u32 usb1_chrg_detect_clr; 151 u32 usb1_chrg_detect_clr;
152 u32 usb1_chrg_detect_tog; 152 u32 usb1_chrg_detect_tog;
153 u32 usb1_vbus_det_stat; 153 u32 usb1_vbus_det_stat;
154 u32 usb1_vbus_det_stat_set; 154 u32 usb1_vbus_det_stat_set;
155 u32 usb1_vbus_det_stat_clr; 155 u32 usb1_vbus_det_stat_clr;
156 u32 usb1_vbus_det_stat_tog; 156 u32 usb1_vbus_det_stat_tog;
157 u32 usb1_chrg_det_stat; 157 u32 usb1_chrg_det_stat;
158 u32 usb1_chrg_det_stat_set; 158 u32 usb1_chrg_det_stat_set;
159 u32 usb1_chrg_det_stat_clr; 159 u32 usb1_chrg_det_stat_clr;
160 u32 usb1_chrg_det_stat_tog; 160 u32 usb1_chrg_det_stat_tog;
161 u32 usb1_loopback; 161 u32 usb1_loopback;
162 u32 usb1_loopback_set; 162 u32 usb1_loopback_set;
163 u32 usb1_loopback_clr; 163 u32 usb1_loopback_clr;
164 u32 usb1_loopback_tog; 164 u32 usb1_loopback_tog;
165 u32 usb1_misc; 165 u32 usb1_misc;
166 u32 usb1_misc_set; 166 u32 usb1_misc_set;
167 u32 usb1_misc_clr; 167 u32 usb1_misc_clr;
168 u32 usb1_misc_tog; 168 u32 usb1_misc_tog;
169 u32 usb2_vbus_detect; 169 u32 usb2_vbus_detect;
170 u32 usb2_vbus_detect_set; 170 u32 usb2_vbus_detect_set;
171 u32 usb2_vbus_detect_clr; 171 u32 usb2_vbus_detect_clr;
172 u32 usb2_vbus_detect_tog; 172 u32 usb2_vbus_detect_tog;
173 u32 usb2_chrg_detect; 173 u32 usb2_chrg_detect;
174 u32 usb2_chrg_detect_set; 174 u32 usb2_chrg_detect_set;
175 u32 usb2_chrg_detect_clr; 175 u32 usb2_chrg_detect_clr;
176 u32 usb2_chrg_detect_tog; 176 u32 usb2_chrg_detect_tog;
177 u32 usb2_vbus_det_stat; 177 u32 usb2_vbus_det_stat;
178 u32 usb2_vbus_det_stat_set; 178 u32 usb2_vbus_det_stat_set;
179 u32 usb2_vbus_det_stat_clr; 179 u32 usb2_vbus_det_stat_clr;
180 u32 usb2_vbus_det_stat_tog; 180 u32 usb2_vbus_det_stat_tog;
181 u32 usb2_chrg_det_stat; 181 u32 usb2_chrg_det_stat;
182 u32 usb2_chrg_det_stat_set; 182 u32 usb2_chrg_det_stat_set;
183 u32 usb2_chrg_det_stat_clr; 183 u32 usb2_chrg_det_stat_clr;
184 u32 usb2_chrg_det_stat_tog; 184 u32 usb2_chrg_det_stat_tog;
185 u32 usb2_loopback; 185 u32 usb2_loopback;
186 u32 usb2_loopback_set; 186 u32 usb2_loopback_set;
187 u32 usb2_loopback_clr; 187 u32 usb2_loopback_clr;
188 u32 usb2_loopback_tog; 188 u32 usb2_loopback_tog;
189 u32 usb2_misc; 189 u32 usb2_misc;
190 u32 usb2_misc_set; 190 u32 usb2_misc_set;
191 u32 usb2_misc_clr; 191 u32 usb2_misc_clr;
192 u32 usb2_misc_tog; 192 u32 usb2_misc_tog;
193 u32 digprog; 193 u32 digprog;
194 u32 reserved1[7]; 194 u32 reserved1[7];
195 /* For i.MX 6SoloLite */ 195 /* For i.MX 6SoloLite */
196 u32 digprog_sololite; 196 u32 digprog_sololite;
197 }; 197 };
198 #endif 198 #endif
199 199
200 /* Define the bits in register CCR */ 200 /* Define the bits in register CCR */
201 #define MXC_CCM_CCR_RBC_EN (1 << 27) 201 #define MXC_CCM_CCR_RBC_EN (1 << 27)
202 #define MXC_CCM_CCR_REG_BYPASS_CNT_MASK (0x3F << 21) 202 #define MXC_CCM_CCR_REG_BYPASS_CNT_MASK (0x3F << 21)
203 #define MXC_CCM_CCR_REG_BYPASS_CNT_OFFSET 21 203 #define MXC_CCM_CCR_REG_BYPASS_CNT_OFFSET 21
204 /* CCR_WB does not exist on i.MX6SX/UL */ 204 /* CCR_WB does not exist on i.MX6SX/UL */
205 #define MXC_CCM_CCR_WB_COUNT_MASK 0x7 205 #define MXC_CCM_CCR_WB_COUNT_MASK 0x7
206 #define MXC_CCM_CCR_WB_COUNT_OFFSET (1 << 16) 206 #define MXC_CCM_CCR_WB_COUNT_OFFSET (1 << 16)
207 #define MXC_CCM_CCR_COSC_EN (1 << 12) 207 #define MXC_CCM_CCR_COSC_EN (1 << 12)
208 #ifdef CONFIG_MX6SX 208 #ifdef CONFIG_MX6SX
209 #define MXC_CCM_CCR_OSCNT_MASK 0x7F 209 #define MXC_CCM_CCR_OSCNT_MASK 0x7F
210 #else 210 #else
211 #define MXC_CCM_CCR_OSCNT_MASK 0xFF 211 #define MXC_CCM_CCR_OSCNT_MASK 0xFF
212 #endif 212 #endif
213 #define MXC_CCM_CCR_OSCNT_OFFSET 0 213 #define MXC_CCM_CCR_OSCNT_OFFSET 0
214 214
215 /* Define the bits in register CCDR */ 215 /* Define the bits in register CCDR */
216 #define MXC_CCM_CCDR_MMDC_CH1_HS_MASK (1 << 16) 216 #define MXC_CCM_CCDR_MMDC_CH1_HS_MASK (1 << 16)
217 #define MXC_CCM_CCDR_MMDC_CH0_HS_MASK (1 << 17) 217 #define MXC_CCM_CCDR_MMDC_CH0_HS_MASK (1 << 17)
218 /* Exists on i.MX6QP */ 218 /* Exists on i.MX6QP */
219 #define MXC_CCM_CCDR_MMDC_CH1_AXI_ROOT_CG (1 << 18) 219 #define MXC_CCM_CCDR_MMDC_CH1_AXI_ROOT_CG (1 << 18)
220 220
221 /* Define the bits in register CSR */ 221 /* Define the bits in register CSR */
222 #define MXC_CCM_CSR_COSC_READY (1 << 5) 222 #define MXC_CCM_CSR_COSC_READY (1 << 5)
223 #define MXC_CCM_CSR_REF_EN_B (1 << 0) 223 #define MXC_CCM_CSR_REF_EN_B (1 << 0)
224 224
225 /* Define the bits in register CCSR */ 225 /* Define the bits in register CCSR */
226 #define MXC_CCM_CCSR_PDF_540M_AUTO_DIS (1 << 15) 226 #define MXC_CCM_CCSR_PDF_540M_AUTO_DIS (1 << 15)
227 #define MXC_CCM_CCSR_PDF_720M_AUTO_DIS (1 << 14) 227 #define MXC_CCM_CCSR_PDF_720M_AUTO_DIS (1 << 14)
228 #define MXC_CCM_CCSR_PDF_454M_AUTO_DIS (1 << 13) 228 #define MXC_CCM_CCSR_PDF_454M_AUTO_DIS (1 << 13)
229 #define MXC_CCM_CCSR_PDF_508M_AUTO_DIS (1 << 12) 229 #define MXC_CCM_CCSR_PDF_508M_AUTO_DIS (1 << 12)
230 #define MXC_CCM_CCSR_PDF_594M_AUTO_DIS (1 << 11) 230 #define MXC_CCM_CCSR_PDF_594M_AUTO_DIS (1 << 11)
231 #define MXC_CCM_CCSR_PDF_352M_AUTO_DIS (1 << 10) 231 #define MXC_CCM_CCSR_PDF_352M_AUTO_DIS (1 << 10)
232 #define MXC_CCM_CCSR_PDF_400M_AUTO_DIS (1 << 9) 232 #define MXC_CCM_CCSR_PDF_400M_AUTO_DIS (1 << 9)
233 #define MXC_CCM_CCSR_STEP_SEL (1 << 8) 233 #define MXC_CCM_CCSR_STEP_SEL (1 << 8)
234 #define MXC_CCM_CCSR_PLL1_SW_CLK_SEL (1 << 2) 234 #define MXC_CCM_CCSR_PLL1_SW_CLK_SEL (1 << 2)
235 #define MXC_CCM_CCSR_PLL2_SW_CLK_SEL (1 << 1) 235 #define MXC_CCM_CCSR_PLL2_SW_CLK_SEL (1 << 1)
236 #define MXC_CCM_CCSR_PLL3_SW_CLK_SEL (1 << 0) 236 #define MXC_CCM_CCSR_PLL3_SW_CLK_SEL (1 << 0)
237 237
238 /* Define the bits in register CACRR */ 238 /* Define the bits in register CACRR */
239 #define MXC_CCM_CACRR_ARM_PODF_OFFSET 0 239 #define MXC_CCM_CACRR_ARM_PODF_OFFSET 0
240 #define MXC_CCM_CACRR_ARM_PODF_MASK 0x7 240 #define MXC_CCM_CACRR_ARM_PODF_MASK 0x7
241 241
242 /* Define the bits in register CBCDR */ 242 /* Define the bits in register CBCDR */
243 #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK (0x7 << 27) 243 #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK (0x7 << 27)
244 #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET 27 244 #define MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET 27
245 #define MXC_CCM_CBCDR_PERIPH2_CLK_SEL (1 << 26) 245 #define MXC_CCM_CBCDR_PERIPH2_CLK_SEL (1 << 26)
246 #define MXC_CCM_CBCDR_PERIPH_CLK_SEL (1 << 25) 246 #define MXC_CCM_CBCDR_PERIPH_CLK_SEL (1 << 25)
247 /* MMDC_CH0 not exists on i.MX6SX */ 247 /* MMDC_CH0 not exists on i.MX6SX */
248 #define MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK (0x7 << 19) 248 #define MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK (0x7 << 19)
249 #define MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET 19 249 #define MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET 19
250 #define MXC_CCM_CBCDR_AXI_PODF_MASK (0x7 << 16) 250 #define MXC_CCM_CBCDR_AXI_PODF_MASK (0x7 << 16)
251 #define MXC_CCM_CBCDR_AXI_PODF_OFFSET 16 251 #define MXC_CCM_CBCDR_AXI_PODF_OFFSET 16
252 #define MXC_CCM_CBCDR_AHB_PODF_MASK (0x7 << 10) 252 #define MXC_CCM_CBCDR_AHB_PODF_MASK (0x7 << 10)
253 #define MXC_CCM_CBCDR_AHB_PODF_OFFSET 10 253 #define MXC_CCM_CBCDR_AHB_PODF_OFFSET 10
254 #define MXC_CCM_CBCDR_IPG_PODF_MASK (0x3 << 8) 254 #define MXC_CCM_CBCDR_IPG_PODF_MASK (0x3 << 8)
255 #define MXC_CCM_CBCDR_IPG_PODF_OFFSET 8 255 #define MXC_CCM_CBCDR_IPG_PODF_OFFSET 8
256 #define MXC_CCM_CBCDR_AXI_ALT_SEL (1 << 7) 256 #define MXC_CCM_CBCDR_AXI_ALT_SEL (1 << 7)
257 #define MXC_CCM_CBCDR_AXI_SEL (1 << 6) 257 #define MXC_CCM_CBCDR_AXI_SEL (1 << 6)
258 #define MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK (0x7 << 3) 258 #define MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK (0x7 << 3)
259 #define MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET 3 259 #define MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET 3
260 #define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK (0x7 << 0) 260 #define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK (0x7 << 0)
261 #define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET 0 261 #define MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET 0
262 262
263 /* Define the bits in register CBCMR */ 263 /* Define the bits in register CBCMR */
264 #define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_MASK (0x7 << 29) 264 #define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_MASK (0x7 << 29)
265 #define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_OFFSET 29 265 #define MXC_CCM_CBCMR_GPU3D_SHADER_PODF_OFFSET 29
266 #define MXC_CCM_CBCMR_GPU3D_CORE_PODF_MASK (0x7 << 26) 266 #define MXC_CCM_CBCMR_GPU3D_CORE_PODF_MASK (0x7 << 26)
267 #define MXC_CCM_CBCMR_GPU3D_CORE_PODF_OFFSET 26 267 #define MXC_CCM_CBCMR_GPU3D_CORE_PODF_OFFSET 26
268 /* LCDIF on i.MX6SX/UL */ 268 /* LCDIF on i.MX6SX/UL */
269 #define MXC_CCM_CBCMR_LCDIF1_PODF_MASK (0x7 << 23) 269 #define MXC_CCM_CBCMR_LCDIF1_PODF_MASK (0x7 << 23)
270 #define MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET 23 270 #define MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET 23
271 #define MXC_CCM_CBCMR_GPU2D_CORE_PODF_MASK (0x7 << 23) 271 #define MXC_CCM_CBCMR_GPU2D_CORE_PODF_MASK (0x7 << 23)
272 #define MXC_CCM_CBCMR_GPU2D_CORE_PODF_OFFSET 23 272 #define MXC_CCM_CBCMR_GPU2D_CORE_PODF_OFFSET 23
273 #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK (0x3 << 21) 273 #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK (0x3 << 21)
274 #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET 21 274 #define MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET 21
275 #define MXC_CCM_CBCMR_PERIPH2_CLK2_SEL (1 << 20) 275 #define MXC_CCM_CBCMR_PERIPH2_CLK2_SEL (1 << 20)
276 #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK (0x3 << 18) 276 #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK (0x3 << 18)
277 #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET 18 277 #define MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET 18
278 #ifndef CONFIG_MX6SX 278 #ifndef CONFIG_MX6SX
279 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_MASK (0x3 << 16) 279 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_MASK (0x3 << 16)
280 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_OFFSET 16 280 #define MXC_CCM_CBCMR_GPU2D_CLK_SEL_OFFSET 16
281 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_MASK (0x3 << 14) 281 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_MASK (0x3 << 14)
282 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_OFFSET 14 282 #define MXC_CCM_CBCMR_VPU_AXI_CLK_SEL_OFFSET 14
283 #endif 283 #endif
284 #define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK (0x3 << 12) 284 #define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK (0x3 << 12)
285 #define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET 12 285 #define MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET 12
286 #ifndef CONFIG_MX6SX 286 #ifndef CONFIG_MX6SX
287 #define MXC_CCM_CBCMR_VDOAXI_CLK_SEL (1 << 11) 287 #define MXC_CCM_CBCMR_VDOAXI_CLK_SEL (1 << 11)
288 #endif 288 #endif
289 #define MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL (1 << 10) 289 #define MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL (1 << 10)
290 #define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_MASK (0x3 << 8) 290 #define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_MASK (0x3 << 8)
291 #define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_OFFSET 8 291 #define MXC_CCM_CBCMR_GPU3D_SHADER_CLK_SEL_OFFSET 8
292 #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_MASK (0x3 << 4) 292 #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_MASK (0x3 << 4)
293 #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_OFFSET 4 293 #define MXC_CCM_CBCMR_GPU3D_CORE_CLK_SEL_OFFSET 4
294 /* Exists on i.MX6QP */ 294 /* Exists on i.MX6QP */
295 #define MXC_CCM_CBCMR_PRE_CLK_SEL (1 << 1) 295 #define MXC_CCM_CBCMR_PRE_CLK_SEL (1 << 1)
296 296
297 /* Define the bits in register CSCMR1 */ 297 /* Define the bits in register CSCMR1 */
298 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK (0x3 << 29) 298 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK (0x3 << 29)
299 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET 29 299 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET 29
300 /* QSPI1 exist on i.MX6SX/UL */ 300 /* QSPI1 exist on i.MX6SX/UL */
301 #define MXC_CCM_CSCMR1_QSPI1_PODF_MASK (0x7 << 26) 301 #define MXC_CCM_CSCMR1_QSPI1_PODF_MASK (0x7 << 26)
302 #define MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET 26 302 #define MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET 26
303 #define MXC_CCM_CSCMR1_ACLK_EMI_MASK (0x3 << 27) 303 #define MXC_CCM_CSCMR1_ACLK_EMI_MASK (0x3 << 27)
304 #define MXC_CCM_CSCMR1_ACLK_EMI_OFFSET 27 304 #define MXC_CCM_CSCMR1_ACLK_EMI_OFFSET 27
305 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK (0x7 << 23) 305 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK (0x7 << 23)
306 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET 23 306 #define MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET 23
307 /* LCFIF2_PODF on i.MX6SX */ 307 /* LCFIF2_PODF on i.MX6SX */
308 #define MXC_CCM_CSCMR1_LCDIF2_PODF_MASK (0x7 << 20) 308 #define MXC_CCM_CSCMR1_LCDIF2_PODF_MASK (0x7 << 20)
309 #define MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET 20 309 #define MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET 20
310 /* ACLK_EMI on i.MX6DQ/SDL/DQP */ 310 /* ACLK_EMI on i.MX6DQ/SDL/DQP */
311 #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_MASK (0x7 << 20) 311 #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_MASK (0x7 << 20)
312 #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_OFFSET 20 312 #define MXC_CCM_CSCMR1_ACLK_EMI_PODF_OFFSET 20
313 /* CSCMR1_GPMI/BCH exist on i.MX6UL */ 313 /* CSCMR1_GPMI/BCH exist on i.MX6UL */
314 #define MXC_CCM_CSCMR1_GPMI_CLK_SEL (1 << 19) 314 #define MXC_CCM_CSCMR1_GPMI_CLK_SEL (1 << 19)
315 #define MXC_CCM_CSCMR1_BCH_CLK_SEL (1 << 18) 315 #define MXC_CCM_CSCMR1_BCH_CLK_SEL (1 << 18)
316 #define MXC_CCM_CSCMR1_USDHC4_CLK_SEL (1 << 19) 316 #define MXC_CCM_CSCMR1_USDHC4_CLK_SEL (1 << 19)
317 #define MXC_CCM_CSCMR1_USDHC3_CLK_SEL (1 << 18) 317 #define MXC_CCM_CSCMR1_USDHC3_CLK_SEL (1 << 18)
318 #define MXC_CCM_CSCMR1_USDHC2_CLK_SEL (1 << 17) 318 #define MXC_CCM_CSCMR1_USDHC2_CLK_SEL (1 << 17)
319 #define MXC_CCM_CSCMR1_USDHC1_CLK_SEL (1 << 16) 319 #define MXC_CCM_CSCMR1_USDHC1_CLK_SEL (1 << 16)
320 #define MXC_CCM_CSCMR1_SSI3_CLK_SEL_MASK (0x3 << 14) 320 #define MXC_CCM_CSCMR1_SSI3_CLK_SEL_MASK (0x3 << 14)
321 #define MXC_CCM_CSCMR1_SSI3_CLK_SEL_OFFSET 14 321 #define MXC_CCM_CSCMR1_SSI3_CLK_SEL_OFFSET 14
322 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_MASK (0x3 << 12) 322 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_MASK (0x3 << 12)
323 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET 12 323 #define MXC_CCM_CSCMR1_SSI2_CLK_SEL_OFFSET 12
324 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK (0x3 << 10) 324 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_MASK (0x3 << 10)
325 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET 10 325 #define MXC_CCM_CSCMR1_SSI1_CLK_SEL_OFFSET 10
326 /* QSPI1 exist on i.MX6SX/UL */ 326 /* QSPI1 exist on i.MX6SX/UL */
327 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK (0x7 << 7) 327 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK (0x7 << 7)
328 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET 7 328 #define MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET 7
329 /* CSCMR1_PER_CLK exists on i.MX6SX/SL/QP */ 329 /* CSCMR1_PER_CLK exists on i.MX6SX/SL/QP */
330 #define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK (1 << 6) 330 #define MXC_CCM_CSCMR1_PER_CLK_SEL_MASK (1 << 6)
331 #define MXC_CCM_CSCMR1_PER_CLK_SEL_OFFSET 6 331 #define MXC_CCM_CSCMR1_PER_CLK_SEL_OFFSET 6
332 332
333 #define MXC_CCM_CSCMR1_PERCLK_PODF_MASK 0x3F 333 #define MXC_CCM_CSCMR1_PERCLK_PODF_MASK 0x3F
334 334
335 /* Define the bits in register CSCMR2 */ 335 /* Define the bits in register CSCMR2 */
336 #ifdef CONFIG_MX6SX 336 #ifdef CONFIG_MX6SX
337 #define MXC_CCM_CSCMR2_VID_CLK_SEL_MASK (0x7 << 21) 337 #define MXC_CCM_CSCMR2_VID_CLK_SEL_MASK (0x7 << 21)
338 #define MXC_CCM_CSCMR2_VID_CLK_SEL_OFFSET 21 338 #define MXC_CCM_CSCMR2_VID_CLK_SEL_OFFSET 21
339 #endif 339 #endif
340 #define MXC_CCM_CSCMR2_ESAI_PRE_SEL_MASK (0x3 << 19) 340 #define MXC_CCM_CSCMR2_ESAI_PRE_SEL_MASK (0x3 << 19)
341 #define MXC_CCM_CSCMR2_ESAI_PRE_SEL_OFFSET 19 341 #define MXC_CCM_CSCMR2_ESAI_PRE_SEL_OFFSET 19
342 #define MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV (1 << 11) 342 #define MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV (1 << 11)
343 #define MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV (1 << 10) 343 #define MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV (1 << 10)
344 /* CSCMR1_CAN_CLK exists on i.MX6SX/QP */ 344 /* CSCMR1_CAN_CLK exists on i.MX6SX/QP */
345 #define MXC_CCM_CSCMR2_CAN_CLK_SEL_MASK (0x3 << 8) 345 #define MXC_CCM_CSCMR2_CAN_CLK_SEL_MASK (0x3 << 8)
346 #define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET 8 346 #define MXC_CCM_CSCMR2_CAN_CLK_SEL_OFFSET 8
347 347
348 #define MXC_CCM_CSCMR2_CAN_CLK_PODF_MASK (0x3F << 2) 348 #define MXC_CCM_CSCMR2_CAN_CLK_PODF_MASK (0x3F << 2)
349 #define MXC_CCM_CSCMR2_CAN_CLK_PODF_OFFSET 2 349 #define MXC_CCM_CSCMR2_CAN_CLK_PODF_OFFSET 2
350 350
351 /* Define the bits in register CSCDR1 */ 351 /* Define the bits in register CSCDR1 */
352 #ifndef CONFIG_MX6SX 352 #ifndef CONFIG_MX6SX
353 #define MXC_CCM_CSCDR1_VPU_AXI_PODF_MASK (0x7 << 25) 353 #define MXC_CCM_CSCDR1_VPU_AXI_PODF_MASK (0x7 << 25)
354 #define MXC_CCM_CSCDR1_VPU_AXI_PODF_OFFSET 25 354 #define MXC_CCM_CSCDR1_VPU_AXI_PODF_OFFSET 25
355 #endif 355 #endif
356 /* CSCDR1_GPMI/BCH exist on i.MX6UL */ 356 /* CSCDR1_GPMI/BCH exist on i.MX6UL */
357 #define MXC_CCM_CSCDR1_GPMI_PODF_MASK (0x7 << 22) 357 #define MXC_CCM_CSCDR1_GPMI_PODF_MASK (0x7 << 22)
358 #define MXC_CCM_CSCDR1_GPMI_PODF_OFFSET 22 358 #define MXC_CCM_CSCDR1_GPMI_PODF_OFFSET 22
359 #define MXC_CCM_CSCDR1_BCH_PODF_MASK (0x7 << 19) 359 #define MXC_CCM_CSCDR1_BCH_PODF_MASK (0x7 << 19)
360 #define MXC_CCM_CSCDR1_BCH_PODF_OFFSET 19 360 #define MXC_CCM_CSCDR1_BCH_PODF_OFFSET 19
361 361
362 #define MXC_CCM_CSCDR1_USDHC4_PODF_MASK (0x7 << 22) 362 #define MXC_CCM_CSCDR1_USDHC4_PODF_MASK (0x7 << 22)
363 #define MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET 22 363 #define MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET 22
364 #define MXC_CCM_CSCDR1_USDHC3_PODF_MASK (0x7 << 19) 364 #define MXC_CCM_CSCDR1_USDHC3_PODF_MASK (0x7 << 19)
365 #define MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET 19 365 #define MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET 19
366 #define MXC_CCM_CSCDR1_USDHC2_PODF_MASK (0x7 << 16) 366 #define MXC_CCM_CSCDR1_USDHC2_PODF_MASK (0x7 << 16)
367 #define MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET 16 367 #define MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET 16
368 #define MXC_CCM_CSCDR1_USDHC1_PODF_MASK (0x7 << 11) 368 #define MXC_CCM_CSCDR1_USDHC1_PODF_MASK (0x7 << 11)
369 #define MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET 11 369 #define MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET 11
370 #ifndef CONFIG_MX6SX 370 #ifndef CONFIG_MX6SX
371 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_OFFSET 8 371 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_OFFSET 8
372 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK (0x7 << 8) 372 #define MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK (0x7 << 8)
373 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET 6 373 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_OFFSET 6
374 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK (0x3 << 6) 374 #define MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK (0x3 << 6)
375 #endif 375 #endif
376 #define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK 0x3F 376 #define MXC_CCM_CSCDR1_UART_CLK_PODF_MASK 0x3F
377 #define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET 0 377 #define MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET 0
378 /* UART_CLK_SEL exists on i.MX6SL/SX/QP */ 378 /* UART_CLK_SEL exists on i.MX6SL/SX/QP */
379 #define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6) 379 #define MXC_CCM_CSCDR1_UART_CLK_SEL (1 << 6)
380 380
381 /* Define the bits in register CS1CDR */ 381 /* Define the bits in register CS1CDR */
382 /* MX6UL, !MX6ULL */ 382 /* MX6UL, !MX6ULL */
383 #define MXC_CCM_CS1CDR_SAI3_CLK_PRED_MASK (0x7 << 22) 383 #define MXC_CCM_CS1CDR_SAI3_CLK_PRED_MASK (0x7 << 22)
384 #define MXC_CCM_CS1CDR_SAI3_CLK_PRED_OFFSET 22 384 #define MXC_CCM_CS1CDR_SAI3_CLK_PRED_OFFSET 22
385 #define MXC_CCM_CS1CDR_SAI3_CLK_PODF_MASK (0x3F << 16) 385 #define MXC_CCM_CS1CDR_SAI3_CLK_PODF_MASK (0x3F << 16)
386 #define MXC_CCM_CS1CDR_SAI3_CLK_PODF_OFFSET 16 386 #define MXC_CCM_CS1CDR_SAI3_CLK_PODF_OFFSET 16
387 #define MXC_CCM_CS1CDR_SAI1_CLK_PRED_MASK (0x7 << 6) 387 #define MXC_CCM_CS1CDR_SAI1_CLK_PRED_MASK (0x7 << 6)
388 #define MXC_CCM_CS1CDR_SAI1_CLK_PRED_OFFSET 6 388 #define MXC_CCM_CS1CDR_SAI1_CLK_PRED_OFFSET 6
389 #define MXC_CCM_CS1CDR_SAI1_CLK_PODF_MASK 0x3F 389 #define MXC_CCM_CS1CDR_SAI1_CLK_PODF_MASK 0x3F
390 #define MXC_CCM_CS1CDR_SAI1_CLK_PODF_OFFSET 0 390 #define MXC_CCM_CS1CDR_SAI1_CLK_PODF_OFFSET 0
391 391
392 #define MXC_CCM_CS1CDR_ESAI_CLK_PODF_MASK (0x3F << 25) 392 #define MXC_CCM_CS1CDR_ESAI_CLK_PODF_MASK (0x3F << 25)
393 #define MXC_CCM_CS1CDR_ESAI_CLK_PODF_OFFSET 25 393 #define MXC_CCM_CS1CDR_ESAI_CLK_PODF_OFFSET 25
394 #define MXC_CCM_CS1CDR_SSI3_CLK_PRED_MASK (0x7 << 22) 394 #define MXC_CCM_CS1CDR_SSI3_CLK_PRED_MASK (0x7 << 22)
395 #define MXC_CCM_CS1CDR_SSI3_CLK_PRED_OFFSET 22 395 #define MXC_CCM_CS1CDR_SSI3_CLK_PRED_OFFSET 22
396 #define MXC_CCM_CS1CDR_SSI3_CLK_PODF_MASK (0x3F << 16) 396 #define MXC_CCM_CS1CDR_SSI3_CLK_PODF_MASK (0x3F << 16)
397 #define MXC_CCM_CS1CDR_SSI3_CLK_PODF_OFFSET 16 397 #define MXC_CCM_CS1CDR_SSI3_CLK_PODF_OFFSET 16
398 #define MXC_CCM_CS1CDR_ESAI_CLK_PRED_MASK (0x3 << 9) 398 #define MXC_CCM_CS1CDR_ESAI_CLK_PRED_MASK (0x3 << 9)
399 #define MXC_CCM_CS1CDR_ESAI_CLK_PRED_OFFSET 9 399 #define MXC_CCM_CS1CDR_ESAI_CLK_PRED_OFFSET 9
400 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_MASK (0x7 << 6) 400 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_MASK (0x7 << 6)
401 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_OFFSET 6 401 #define MXC_CCM_CS1CDR_SSI1_CLK_PRED_OFFSET 6
402 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_MASK 0x3F 402 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_MASK 0x3F
403 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET 0 403 #define MXC_CCM_CS1CDR_SSI1_CLK_PODF_OFFSET 0
404 404
405 /* Define the bits in register CS2CDR */ 405 /* Define the bits in register CS2CDR */
406 /* QSPI2 on i.MX6SX */ 406 /* QSPI2 on i.MX6SX */
407 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK (0x3F << 21) 407 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK (0x3F << 21)
408 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_OFFSET 21 408 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF_OFFSET 21
409 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF(v) (((v) & 0x3f) << 21) 409 #define MXC_CCM_CS2CDR_QSPI2_CLK_PODF(v) (((v) & 0x3f) << 21)
410 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK (0x7 << 18) 410 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK (0x7 << 18)
411 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED_OFFSET 18 411 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED_OFFSET 18
412 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED(v) (((v) & 0x7) << 18) 412 #define MXC_CCM_CS2CDR_QSPI2_CLK_PRED(v) (((v) & 0x7) << 18)
413 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK (0x7 << 15) 413 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK (0x7 << 15)
414 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_OFFSET 15 414 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL_OFFSET 15
415 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL(v) (((v) & 0x7) << 15) 415 #define MXC_CCM_CS2CDR_QSPI2_CLK_SEL(v) (((v) & 0x7) << 15)
416 416
417 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK (0x3F << 21) 417 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK (0x3F << 21)
418 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_OFFSET 21 418 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF_OFFSET 21
419 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF(v) (((v) & 0x3f) << 21) 419 #define MXC_CCM_CS2CDR_ENFC_CLK_PODF(v) (((v) & 0x3f) << 21)
420 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK (0x7 << 18) 420 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK (0x7 << 18)
421 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_OFFSET 18 421 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED_OFFSET 18
422 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED(v) (((v) & 0x7) << 18) 422 #define MXC_CCM_CS2CDR_ENFC_CLK_PRED(v) (((v) & 0x7) << 18)
423 423
424 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP (0x7 << 15) 424 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP (0x7 << 15)
425 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP 15 425 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP 15
426 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) (((v) & 0x7) << 15) 426 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) (((v) & 0x7) << 15)
427 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ (0x3 << 16) 427 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ (0x3 << 16)
428 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ 16 428 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ 16
429 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v) (((v) & 0x3) << 16) 429 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v) (((v) & 0x3) << 16)
430 430
431 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK \ 431 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK \
432 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ 432 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) ? \
433 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP : \ 433 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQP : \
434 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ) 434 MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK_DQ)
435 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET \ 435 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET \
436 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ 436 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) ? \
437 MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP : \ 437 MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQP : \
438 MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ) 438 MXC_CCM_CS2CDR_ENFC_CLK_SEL_OFFSET_DQ)
439 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) \ 439 #define MXC_CCM_CS2CDR_ENFC_CLK_SEL(v) \
440 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL)) ? \ 440 ((is_mx6dqp() || is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) ? \
441 MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) : \ 441 MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQP(v) : \
442 MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v)) 442 MXC_CCM_CS2CDR_ENFC_CLK_SEL_DQ(v))
443 443
444 #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK (0x7 << 12) 444 #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK (0x7 << 12)
445 #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET 12 445 #define MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET 12
446 #define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK (0x7 << 9) 446 #define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK (0x7 << 9)
447 #define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET 9 447 #define MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET 9
448 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_MASK (0x7 << 6) 448 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_MASK (0x7 << 6)
449 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_OFFSET 6 449 #define MXC_CCM_CS2CDR_SSI2_CLK_PRED_OFFSET 6
450 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_MASK 0x3F 450 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_MASK 0x3F
451 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_OFFSET 0 451 #define MXC_CCM_CS2CDR_SSI2_CLK_PODF_OFFSET 0
452 452
453 /* Define the bits in register CDCDR */ 453 /* Define the bits in register CDCDR */
454 #ifndef CONFIG_MX6SX 454 #ifndef CONFIG_MX6SX
455 #define MXC_CCM_CDCDR_HSI_TX_PODF_MASK (0x7 << 29) 455 #define MXC_CCM_CDCDR_HSI_TX_PODF_MASK (0x7 << 29)
456 #define MXC_CCM_CDCDR_HSI_TX_PODF_OFFSET 29 456 #define MXC_CCM_CDCDR_HSI_TX_PODF_OFFSET 29
457 #define MXC_CCM_CDCDR_HSI_TX_CLK_SEL (1 << 28) 457 #define MXC_CCM_CDCDR_HSI_TX_CLK_SEL (1 << 28)
458 #endif 458 #endif
459 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_MASK (0x7 << 25) 459 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_MASK (0x7 << 25)
460 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_OFFSET 25 460 #define MXC_CCM_CDCDR_SPDIF0_CLK_PRED_OFFSET 25
461 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_MASK (0x7 << 22) 461 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_MASK (0x7 << 22)
462 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_OFFSET 22 462 #define MXC_CCM_CDCDR_SPDIF0_CLK_PODF_OFFSET 22
463 #define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_MASK (0x3 << 20) 463 #define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_MASK (0x3 << 20)
464 #define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_OFFSET 20 464 #define MXC_CCM_CDCDR_SPDIF0_CLK_SEL_OFFSET 20
465 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_MASK (0x7 << 12) 465 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_MASK (0x7 << 12)
466 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_OFFSET 12 466 #define MXC_CCM_CDCDR_SPDIF1_CLK_PRED_OFFSET 12
467 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_MASK (0x7 << 9) 467 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_MASK (0x7 << 9)
468 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_OFFSET 9 468 #define MXC_CCM_CDCDR_SPDIF1_CLK_PODF_OFFSET 9
469 #define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_MASK (0x3 << 7) 469 #define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_MASK (0x3 << 7)
470 #define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_OFFSET 7 470 #define MXC_CCM_CDCDR_SPDIF1_CLK_SEL_OFFSET 7
471 471
472 /* Define the bits in register CHSCCDR */ 472 /* Define the bits in register CHSCCDR */
473 /* i.MX 6SX */ 473 /* i.MX 6SX */
474 #define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK (0x7 << 15) 474 #define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK (0x7 << 15)
475 #define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET 15 475 #define MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET 15
476 #define MXC_CCM_CHSCCDR_ENET_PODF_MASK (0x7 << 12) 476 #define MXC_CCM_CHSCCDR_ENET_PODF_MASK (0x7 << 12)
477 #define MXC_CCM_CHSCCDR_ENET_PODF_OFFSET 12 477 #define MXC_CCM_CHSCCDR_ENET_PODF_OFFSET 12
478 #define MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK (0x7 << 9) 478 #define MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK (0x7 << 9)
479 #define MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET 9 479 #define MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET 9
480 #define MXC_CCM_CHSCCDR_M4_PRE_CLK_SEL_MASK (0x7 << 6) 480 #define MXC_CCM_CHSCCDR_M4_PRE_CLK_SEL_MASK (0x7 << 6)
481 #define MXC_CCM_CHSCCDR_M4_PRE_CLK_SEL_OFFSET 6 481 #define MXC_CCM_CHSCCDR_M4_PRE_CLK_SEL_OFFSET 6
482 #define MXC_CCM_CHSCCDR_M4_PODF_MASK (0x7 << 3) 482 #define MXC_CCM_CHSCCDR_M4_PODF_MASK (0x7 << 3)
483 #define MXC_CCM_CHSCCDR_M4_PODF_OFFSET 3 483 #define MXC_CCM_CHSCCDR_M4_PODF_OFFSET 3
484 #define MXC_CCM_CHSCCDR_M4_CLK_SEL_MASK (0x7) 484 #define MXC_CCM_CHSCCDR_M4_CLK_SEL_MASK (0x7)
485 #define MXC_CCM_CHSCCDR_M4_CLK_SEL_OFFSET 0 485 #define MXC_CCM_CHSCCDR_M4_CLK_SEL_OFFSET 0
486 486
487 #define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_MASK (0x7 << 15) 487 #define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_MASK (0x7 << 15)
488 #define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_OFFSET 15 488 #define MXC_CCM_CHSCCDR_IPU1_DI1_PRE_CLK_SEL_OFFSET 15
489 #define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_MASK (0x7 << 12) 489 #define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_MASK (0x7 << 12)
490 #define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_OFFSET 12 490 #define MXC_CCM_CHSCCDR_IPU1_DI1_PODF_OFFSET 12
491 #define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_MASK (0x7 << 9) 491 #define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_MASK (0x7 << 9)
492 #define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_OFFSET 9 492 #define MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_OFFSET 9
493 #define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK (0x7 << 6) 493 #define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK (0x7 << 6)
494 #define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET 6 494 #define MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET 6
495 #define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK (0x7 << 3) 495 #define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK (0x7 << 3)
496 #define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET 3 496 #define MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET 3
497 #define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK (0x7) 497 #define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK (0x7)
498 #define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET 0 498 #define MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET 0
499 499
500 /* i.MX6ULL */ 500 /* i.MX6ULL */
501 #define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_MASK (0x7 << 15) 501 #define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_MASK (0x7 << 15)
502 #define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_OFFSET 15 502 #define MXC_CCM_CHSCCDR_EPDC_PRE_CLK_SEL_OFFSET 15
503 #define MXC_CCM_CHSCCDR_EPDC_PODF_MASK (0x7 << 12) 503 #define MXC_CCM_CHSCCDR_EPDC_PODF_MASK (0x7 << 12)
504 #define MXC_CCM_CHSCCDR_EPDC_PODF_OFFSET 12 504 #define MXC_CCM_CHSCCDR_EPDC_PODF_OFFSET 12
505 #define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_MASK (0x7 << 9) 505 #define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_MASK (0x7 << 9)
506 #define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_OFFSET 9 506 #define MXC_CCM_CHSCCDR_EPDC_CLK_SEL_OFFSET 9
507 507
508 #define CHSCCDR_CLK_SEL_LDB_DI0 3 508 #define CHSCCDR_CLK_SEL_LDB_DI0 3
509 #define CHSCCDR_PODF_DIVIDE_BY_3 2 509 #define CHSCCDR_PODF_DIVIDE_BY_3 2
510 #define CHSCCDR_IPU_PRE_CLK_540M_PFD 5 510 #define CHSCCDR_IPU_PRE_CLK_540M_PFD 5
511 511
512 /* Define the bits in register CSCDR2 */ 512 /* Define the bits in register CSCDR2 */
513 #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK (0x3F << 19) 513 #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK (0x3F << 19)
514 #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET 19 514 #define MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET 19
515 /* ECSPI_CLK_SEL exists on i.MX6SX/SL/QP */ 515 /* ECSPI_CLK_SEL exists on i.MX6SX/SL/QP */
516 #define MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK (0x1 << 18) 516 #define MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK (0x1 << 18)
517 /* LCDIF1 on i.MX6SX/UL */ 517 /* LCDIF1 on i.MX6SX/UL */
518 #define MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK (0x7 << 15) 518 #define MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK (0x7 << 15)
519 #define MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET 15 519 #define MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET 15
520 #define MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK (0x7 << 12) 520 #define MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK (0x7 << 12)
521 #define MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET 12 521 #define MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET 12
522 #define MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK (0x7 << 9) 522 #define MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK (0x7 << 9)
523 #define MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_OFFSET 9 523 #define MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_OFFSET 9
524 /* LCDIF2 on i.MX6SX */ 524 /* LCDIF2 on i.MX6SX */
525 #define MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK (0x7 << 6) 525 #define MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK (0x7 << 6)
526 #define MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET 6 526 #define MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET 6
527 #define MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK (0x7 << 3) 527 #define MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK (0x7 << 3)
528 #define MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET 3 528 #define MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET 3
529 #define MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK (0x7 << 0) 529 #define MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK (0x7 << 0)
530 #define MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_OFFSET 0 530 #define MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_OFFSET 0
531 531
532 /* All IPU2_DI1 are LCDIF1 on MX6SX */ 532 /* All IPU2_DI1 are LCDIF1 on MX6SX */
533 #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_MASK (0x7 << 15) 533 #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_MASK (0x7 << 15)
534 #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_OFFSET 15 534 #define MXC_CCM_CHSCCDR_IPU2_DI1_PRE_CLK_SEL_OFFSET 15
535 #define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_MASK (0x7 << 12) 535 #define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_MASK (0x7 << 12)
536 #define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_OFFSET 12 536 #define MXC_CCM_CHSCCDR_IPU2_DI1_PODF_OFFSET 12
537 #define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_MASK (0x7 << 9) 537 #define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_MASK (0x7 << 9)
538 #define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_OFFSET 9 538 #define MXC_CCM_CHSCCDR_IPU2_DI1_CLK_SEL_OFFSET 9
539 /* All IPU2_DI0 are LCDIF2 on MX6SX */ 539 /* All IPU2_DI0 are LCDIF2 on MX6SX */
540 #define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_MASK (0x7 << 6) 540 #define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_MASK (0x7 << 6)
541 #define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_OFFSET 6 541 #define MXC_CCM_CHSCCDR_IPU2_DI0_PRE_CLK_SEL_OFFSET 6
542 #define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_MASK (0x7 << 3) 542 #define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_MASK (0x7 << 3)
543 #define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_OFFSET 3 543 #define MXC_CCM_CHSCCDR_IPU2_DI0_PODF_OFFSET 3
544 #define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_MASK 0x7 544 #define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_MASK 0x7
545 #define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_OFFSET 0 545 #define MXC_CCM_CHSCCDR_IPU2_DI0_CLK_SEL_OFFSET 0
546 546
547 /* Define the bits in register CSCDR3 */ 547 /* Define the bits in register CSCDR3 */
548 #define MXC_CCM_CSCDR3_IPU2_HSP_PODF_MASK (0x7 << 16) 548 #define MXC_CCM_CSCDR3_IPU2_HSP_PODF_MASK (0x7 << 16)
549 #define MXC_CCM_CSCDR3_IPU2_HSP_PODF_OFFSET 16 549 #define MXC_CCM_CSCDR3_IPU2_HSP_PODF_OFFSET 16
550 #define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_MASK (0x3 << 14) 550 #define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_MASK (0x3 << 14)
551 #define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_OFFSET 14 551 #define MXC_CCM_CSCDR3_IPU2_HSP_CLK_SEL_OFFSET 14
552 #define MXC_CCM_CSCDR3_IPU1_HSP_PODF_MASK (0x7 << 11) 552 #define MXC_CCM_CSCDR3_IPU1_HSP_PODF_MASK (0x7 << 11)
553 #define MXC_CCM_CSCDR3_IPU1_HSP_PODF_OFFSET 11 553 #define MXC_CCM_CSCDR3_IPU1_HSP_PODF_OFFSET 11
554 #define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_MASK (0x3 << 9) 554 #define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_MASK (0x3 << 9)
555 #define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_OFFSET 9 555 #define MXC_CCM_CSCDR3_IPU1_HSP_CLK_SEL_OFFSET 9
556 556
557 /* Define the bits in register CDHIPR */ 557 /* Define the bits in register CDHIPR */
558 #define MXC_CCM_CDHIPR_ARM_PODF_BUSY (1 << 16) 558 #define MXC_CCM_CDHIPR_ARM_PODF_BUSY (1 << 16)
559 #define MXC_CCM_CDHIPR_PERIPH_CLK_SEL_BUSY (1 << 5) 559 #define MXC_CCM_CDHIPR_PERIPH_CLK_SEL_BUSY (1 << 5)
560 #ifndef CONFIG_MX6SX 560 #ifndef CONFIG_MX6SX
561 #define MXC_CCM_CDHIPR_MMDC_CH0_PODF_BUSY (1 << 4) 561 #define MXC_CCM_CDHIPR_MMDC_CH0_PODF_BUSY (1 << 4)
562 #endif 562 #endif
563 #define MXC_CCM_CDHIPR_PERIPH2_CLK_SEL_BUSY (1 << 3) 563 #define MXC_CCM_CDHIPR_PERIPH2_CLK_SEL_BUSY (1 << 3)
564 #define MXC_CCM_CDHIPR_MMDC_CH1_PODF_BUSY (1 << 2) 564 #define MXC_CCM_CDHIPR_MMDC_CH1_PODF_BUSY (1 << 2)
565 #define MXC_CCM_CDHIPR_AHB_PODF_BUSY (1 << 1) 565 #define MXC_CCM_CDHIPR_AHB_PODF_BUSY (1 << 1)
566 #define MXC_CCM_CDHIPR_AXI_PODF_BUSY 1 566 #define MXC_CCM_CDHIPR_AXI_PODF_BUSY 1
567 567
568 /* Define the bits in register CLPCR */ 568 /* Define the bits in register CLPCR */
569 #define MXC_CCM_CLPCR_MASK_L2CC_IDLE (1 << 27) 569 #define MXC_CCM_CLPCR_MASK_L2CC_IDLE (1 << 27)
570 #define MXC_CCM_CLPCR_MASK_SCU_IDLE (1 << 26) 570 #define MXC_CCM_CLPCR_MASK_SCU_IDLE (1 << 26)
571 #ifndef CONFIG_MX6SX 571 #ifndef CONFIG_MX6SX
572 #define MXC_CCM_CLPCR_MASK_CORE3_WFI (1 << 25) 572 #define MXC_CCM_CLPCR_MASK_CORE3_WFI (1 << 25)
573 #define MXC_CCM_CLPCR_MASK_CORE2_WFI (1 << 24) 573 #define MXC_CCM_CLPCR_MASK_CORE2_WFI (1 << 24)
574 #define MXC_CCM_CLPCR_MASK_CORE1_WFI (1 << 23) 574 #define MXC_CCM_CLPCR_MASK_CORE1_WFI (1 << 23)
575 #endif 575 #endif
576 #define MXC_CCM_CLPCR_MASK_CORE0_WFI (1 << 22) 576 #define MXC_CCM_CLPCR_MASK_CORE0_WFI (1 << 22)
577 #define MXC_CCM_CLPCR_BYP_MMDC_CH1_LPM_HS (1 << 21) 577 #define MXC_CCM_CLPCR_BYP_MMDC_CH1_LPM_HS (1 << 21)
578 #ifndef CONFIG_MX6SX 578 #ifndef CONFIG_MX6SX
579 #define MXC_CCM_CLPCR_BYP_MMDC_CH0_LPM_HS (1 << 19) 579 #define MXC_CCM_CLPCR_BYP_MMDC_CH0_LPM_HS (1 << 19)
580 #define MXC_CCM_CLPCR_WB_CORE_AT_LPM (1 << 17) 580 #define MXC_CCM_CLPCR_WB_CORE_AT_LPM (1 << 17)
581 #endif 581 #endif
582 #define MXC_CCM_CLPCR_WB_PER_AT_LPM (1 << 16) 582 #define MXC_CCM_CLPCR_WB_PER_AT_LPM (1 << 16)
583 #define MXC_CCM_CLPCR_COSC_PWRDOWN (1 << 11) 583 #define MXC_CCM_CLPCR_COSC_PWRDOWN (1 << 11)
584 #define MXC_CCM_CLPCR_STBY_COUNT_MASK (0x3 << 9) 584 #define MXC_CCM_CLPCR_STBY_COUNT_MASK (0x3 << 9)
585 #define MXC_CCM_CLPCR_STBY_COUNT_OFFSET 9 585 #define MXC_CCM_CLPCR_STBY_COUNT_OFFSET 9
586 #define MXC_CCM_CLPCR_VSTBY (1 << 8) 586 #define MXC_CCM_CLPCR_VSTBY (1 << 8)
587 #define MXC_CCM_CLPCR_DIS_REF_OSC (1 << 7) 587 #define MXC_CCM_CLPCR_DIS_REF_OSC (1 << 7)
588 #define MXC_CCM_CLPCR_SBYOS (1 << 6) 588 #define MXC_CCM_CLPCR_SBYOS (1 << 6)
589 #define MXC_CCM_CLPCR_ARM_CLK_DIS_ON_LPM (1 << 5) 589 #define MXC_CCM_CLPCR_ARM_CLK_DIS_ON_LPM (1 << 5)
590 #ifndef CONFIG_MX6SX 590 #ifndef CONFIG_MX6SX
591 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_MASK (0x3 << 3) 591 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_MASK (0x3 << 3)
592 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_OFFSET 3 592 #define MXC_CCM_CLPCR_LPSR_CLK_SEL_OFFSET 3
593 #define MXC_CCM_CLPCR_BYPASS_PMIC_VFUNC_READY (1 << 2) 593 #define MXC_CCM_CLPCR_BYPASS_PMIC_VFUNC_READY (1 << 2)
594 #endif 594 #endif
595 #define MXC_CCM_CLPCR_LPM_MASK 0x3 595 #define MXC_CCM_CLPCR_LPM_MASK 0x3
596 #define MXC_CCM_CLPCR_LPM_OFFSET 0 596 #define MXC_CCM_CLPCR_LPM_OFFSET 0
597 597
598 /* Define the bits in register CISR */ 598 /* Define the bits in register CISR */
599 #define MXC_CCM_CISR_ARM_PODF_LOADED (1 << 26) 599 #define MXC_CCM_CISR_ARM_PODF_LOADED (1 << 26)
600 #ifndef CONFIG_MX6SX 600 #ifndef CONFIG_MX6SX
601 #define MXC_CCM_CISR_MMDC_CH0_PODF_LOADED (1 << 23) 601 #define MXC_CCM_CISR_MMDC_CH0_PODF_LOADED (1 << 23)
602 #endif 602 #endif
603 #define MXC_CCM_CISR_PERIPH_CLK_SEL_LOADED (1 << 22) 603 #define MXC_CCM_CISR_PERIPH_CLK_SEL_LOADED (1 << 22)
604 #define MXC_CCM_CISR_MMDC_CH1_PODF_LOADED (1 << 21) 604 #define MXC_CCM_CISR_MMDC_CH1_PODF_LOADED (1 << 21)
605 #define MXC_CCM_CISR_AHB_PODF_LOADED (1 << 20) 605 #define MXC_CCM_CISR_AHB_PODF_LOADED (1 << 20)
606 #define MXC_CCM_CISR_PERIPH2_CLK_SEL_LOADED (1 << 19) 606 #define MXC_CCM_CISR_PERIPH2_CLK_SEL_LOADED (1 << 19)
607 #define MXC_CCM_CISR_AXI_PODF_LOADED (1 << 17) 607 #define MXC_CCM_CISR_AXI_PODF_LOADED (1 << 17)
608 #define MXC_CCM_CISR_COSC_READY (1 << 6) 608 #define MXC_CCM_CISR_COSC_READY (1 << 6)
609 #define MXC_CCM_CISR_LRF_PLL 1 609 #define MXC_CCM_CISR_LRF_PLL 1
610 610
611 /* Define the bits in register CIMR */ 611 /* Define the bits in register CIMR */
612 #define MXC_CCM_CIMR_MASK_ARM_PODF_LOADED (1 << 26) 612 #define MXC_CCM_CIMR_MASK_ARM_PODF_LOADED (1 << 26)
613 #ifndef CONFIG_MX6SX 613 #ifndef CONFIG_MX6SX
614 #define MXC_CCM_CIMR_MASK_MMDC_CH0_PODF_LOADED (1 << 23) 614 #define MXC_CCM_CIMR_MASK_MMDC_CH0_PODF_LOADED (1 << 23)
615 #endif 615 #endif
616 #define MXC_CCM_CIMR_MASK_PERIPH_CLK_SEL_LOADED (1 << 22) 616 #define MXC_CCM_CIMR_MASK_PERIPH_CLK_SEL_LOADED (1 << 22)
617 #define MXC_CCM_CIMR_MASK_MMDC_CH1_PODF_LOADED (1 << 21) 617 #define MXC_CCM_CIMR_MASK_MMDC_CH1_PODF_LOADED (1 << 21)
618 #define MXC_CCM_CIMR_MASK_AHB_PODF_LOADED (1 << 20) 618 #define MXC_CCM_CIMR_MASK_AHB_PODF_LOADED (1 << 20)
619 #define MXC_CCM_CIMR_MASK_PERIPH2_CLK_SEL_LOADED (1 << 19) 619 #define MXC_CCM_CIMR_MASK_PERIPH2_CLK_SEL_LOADED (1 << 19)
620 #define MXC_CCM_CIMR_MASK_AXI_PODF_LOADED (1 << 17) 620 #define MXC_CCM_CIMR_MASK_AXI_PODF_LOADED (1 << 17)
621 #define MXC_CCM_CIMR_MASK_COSC_READY (1 << 6) 621 #define MXC_CCM_CIMR_MASK_COSC_READY (1 << 6)
622 #define MXC_CCM_CIMR_MASK_LRF_PLL 1 622 #define MXC_CCM_CIMR_MASK_LRF_PLL 1
623 623
624 /* Define the bits in register CCOSR */ 624 /* Define the bits in register CCOSR */
625 #define MXC_CCM_CCOSR_CKO2_EN_OFFSET (1 << 24) 625 #define MXC_CCM_CCOSR_CKO2_EN_OFFSET (1 << 24)
626 #define MXC_CCM_CCOSR_CKO2_DIV_MASK (0x7 << 21) 626 #define MXC_CCM_CCOSR_CKO2_DIV_MASK (0x7 << 21)
627 #define MXC_CCM_CCOSR_CKO2_DIV_OFFSET 21 627 #define MXC_CCM_CCOSR_CKO2_DIV_OFFSET 21
628 #define MXC_CCM_CCOSR_CKO2_SEL_OFFSET 16 628 #define MXC_CCM_CCOSR_CKO2_SEL_OFFSET 16
629 #define MXC_CCM_CCOSR_CKO2_SEL_MASK (0x1F << 16) 629 #define MXC_CCM_CCOSR_CKO2_SEL_MASK (0x1F << 16)
630 #define MXC_CCM_CCOSR_CLK_OUT_SEL (0x1 << 8) 630 #define MXC_CCM_CCOSR_CLK_OUT_SEL (0x1 << 8)
631 #define MXC_CCM_CCOSR_CKOL_EN (0x1 << 7) 631 #define MXC_CCM_CCOSR_CKOL_EN (0x1 << 7)
632 #define MXC_CCM_CCOSR_CKOL_DIV_MASK (0x7 << 4) 632 #define MXC_CCM_CCOSR_CKOL_DIV_MASK (0x7 << 4)
633 #define MXC_CCM_CCOSR_CKOL_DIV_OFFSET 4 633 #define MXC_CCM_CCOSR_CKOL_DIV_OFFSET 4
634 #define MXC_CCM_CCOSR_CKOL_SEL_MASK 0xF 634 #define MXC_CCM_CCOSR_CKOL_SEL_MASK 0xF
635 #define MXC_CCM_CCOSR_CKOL_SEL_OFFSET 0 635 #define MXC_CCM_CCOSR_CKOL_SEL_OFFSET 0
636 636
637 /* Define the bits in registers CGPR */ 637 /* Define the bits in registers CGPR */
638 #define MXC_CCM_CGPR_FAST_PLL_EN (1 << 16) 638 #define MXC_CCM_CGPR_FAST_PLL_EN (1 << 16)
639 #define MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE (1 << 4) 639 #define MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE (1 << 4)
640 #define MXC_CCM_CGPR_MMDC_EXT_CLK_DIS (1 << 2) 640 #define MXC_CCM_CGPR_MMDC_EXT_CLK_DIS (1 << 2)
641 #define MXC_CCM_CGPR_PMIC_DELAY_SCALER 1 641 #define MXC_CCM_CGPR_PMIC_DELAY_SCALER 1
642 642
643 /* Define the bits in registers CCGRx */ 643 /* Define the bits in registers CCGRx */
644 #define MXC_CCM_CCGR_CG_MASK 3 644 #define MXC_CCM_CCGR_CG_MASK 3
645 645
646 /* i.MX 6ULL */ 646 /* i.MX 6ULL */
647 #define MXC_CCM_CCGR0_DCP_CLK_OFFSET 10 647 #define MXC_CCM_CCGR0_DCP_CLK_OFFSET 10
648 #define MXC_CCM_CCGR0_DCP_CLK_MASK (3 << MXC_CCM_CCGR0_DCP_CLK_OFFSET) 648 #define MXC_CCM_CCGR0_DCP_CLK_MASK (3 << MXC_CCM_CCGR0_DCP_CLK_OFFSET)
649 #define MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET 12 649 #define MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET 12
650 #define MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET) 650 #define MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR0_ENET_CLK_ENABLE_OFFSET)
651 651
652 #define MXC_CCM_CCGR0_AIPS_TZ1_OFFSET 0 652 #define MXC_CCM_CCGR0_AIPS_TZ1_OFFSET 0
653 #define MXC_CCM_CCGR0_AIPS_TZ1_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ1_OFFSET) 653 #define MXC_CCM_CCGR0_AIPS_TZ1_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ1_OFFSET)
654 #define MXC_CCM_CCGR0_AIPS_TZ2_OFFSET 2 654 #define MXC_CCM_CCGR0_AIPS_TZ2_OFFSET 2
655 #define MXC_CCM_CCGR0_AIPS_TZ2_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ2_OFFSET) 655 #define MXC_CCM_CCGR0_AIPS_TZ2_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ2_OFFSET)
656 #define MXC_CCM_CCGR0_APBHDMA_OFFSET 4 656 #define MXC_CCM_CCGR0_APBHDMA_OFFSET 4
657 #define MXC_CCM_CCGR0_APBHDMA_MASK (3 << MXC_CCM_CCGR0_APBHDMA_OFFSET) 657 #define MXC_CCM_CCGR0_APBHDMA_MASK (3 << MXC_CCM_CCGR0_APBHDMA_OFFSET)
658 #define MXC_CCM_CCGR0_ASRC_OFFSET 6 658 #define MXC_CCM_CCGR0_ASRC_OFFSET 6
659 #define MXC_CCM_CCGR0_ASRC_MASK (3 << MXC_CCM_CCGR0_ASRC_OFFSET) 659 #define MXC_CCM_CCGR0_ASRC_MASK (3 << MXC_CCM_CCGR0_ASRC_OFFSET)
660 #define MXC_CCM_CCGR0_CAAM_SECURE_MEM_OFFSET 8 660 #define MXC_CCM_CCGR0_CAAM_SECURE_MEM_OFFSET 8
661 #define MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK (3 << MXC_CCM_CCGR0_CAAM_SECURE_MEM_OFFSET) 661 #define MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK (3 << MXC_CCM_CCGR0_CAAM_SECURE_MEM_OFFSET)
662 #define MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_OFFSET 10 662 #define MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_OFFSET 10
663 #define MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK (3 << MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_OFFSET) 663 #define MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK (3 << MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_OFFSET)
664 #define MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_OFFSET 12 664 #define MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_OFFSET 12
665 #define MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK (3 << MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_OFFSET) 665 #define MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK (3 << MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_OFFSET)
666 #define MXC_CCM_CCGR0_CAN1_OFFSET 14 666 #define MXC_CCM_CCGR0_CAN1_OFFSET 14
667 #define MXC_CCM_CCGR0_CAN1_MASK (3 << MXC_CCM_CCGR0_CAN1_OFFSET) 667 #define MXC_CCM_CCGR0_CAN1_MASK (3 << MXC_CCM_CCGR0_CAN1_OFFSET)
668 #define MXC_CCM_CCGR0_CAN1_SERIAL_OFFSET 16 668 #define MXC_CCM_CCGR0_CAN1_SERIAL_OFFSET 16
669 #define MXC_CCM_CCGR0_CAN1_SERIAL_MASK (3 << MXC_CCM_CCGR0_CAN1_SERIAL_OFFSET) 669 #define MXC_CCM_CCGR0_CAN1_SERIAL_MASK (3 << MXC_CCM_CCGR0_CAN1_SERIAL_OFFSET)
670 #define MXC_CCM_CCGR0_CAN2_OFFSET 18 670 #define MXC_CCM_CCGR0_CAN2_OFFSET 18
671 #define MXC_CCM_CCGR0_CAN2_MASK (3 << MXC_CCM_CCGR0_CAN2_OFFSET) 671 #define MXC_CCM_CCGR0_CAN2_MASK (3 << MXC_CCM_CCGR0_CAN2_OFFSET)
672 #define MXC_CCM_CCGR0_CAN2_SERIAL_OFFSET 20 672 #define MXC_CCM_CCGR0_CAN2_SERIAL_OFFSET 20
673 #define MXC_CCM_CCGR0_CAN2_SERIAL_MASK (3 << MXC_CCM_CCGR0_CAN2_SERIAL_OFFSET) 673 #define MXC_CCM_CCGR0_CAN2_SERIAL_MASK (3 << MXC_CCM_CCGR0_CAN2_SERIAL_OFFSET)
674 #define MXC_CCM_CCGR0_CHEETAH_DBG_CLK_OFFSET 22 674 #define MXC_CCM_CCGR0_CHEETAH_DBG_CLK_OFFSET 22
675 #define MXC_CCM_CCGR0_CHEETAH_DBG_CLK_MASK (3 << MXC_CCM_CCGR0_CHEETAH_DBG_CLK_OFFSET) 675 #define MXC_CCM_CCGR0_CHEETAH_DBG_CLK_MASK (3 << MXC_CCM_CCGR0_CHEETAH_DBG_CLK_OFFSET)
676 #define MXC_CCM_CCGR0_DCIC1_OFFSET 24 676 #define MXC_CCM_CCGR0_DCIC1_OFFSET 24
677 #define MXC_CCM_CCGR0_DCIC1_MASK (3 << MXC_CCM_CCGR0_DCIC1_OFFSET) 677 #define MXC_CCM_CCGR0_DCIC1_MASK (3 << MXC_CCM_CCGR0_DCIC1_OFFSET)
678 #define MXC_CCM_CCGR0_DCIC2_OFFSET 26 678 #define MXC_CCM_CCGR0_DCIC2_OFFSET 26
679 #define MXC_CCM_CCGR0_DCIC2_MASK (3 << MXC_CCM_CCGR0_DCIC2_OFFSET) 679 #define MXC_CCM_CCGR0_DCIC2_MASK (3 << MXC_CCM_CCGR0_DCIC2_OFFSET)
680 #ifdef CONFIG_MX6SX 680 #ifdef CONFIG_MX6SX
681 #define MXC_CCM_CCGR0_AIPS_TZ3_OFFSET 30 681 #define MXC_CCM_CCGR0_AIPS_TZ3_OFFSET 30
682 #define MXC_CCM_CCGR0_AIPS_TZ3_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ3_OFFSET) 682 #define MXC_CCM_CCGR0_AIPS_TZ3_MASK (3 << MXC_CCM_CCGR0_AIPS_TZ3_OFFSET)
683 #else 683 #else
684 #define MXC_CCM_CCGR0_DTCP_OFFSET 28 684 #define MXC_CCM_CCGR0_DTCP_OFFSET 28
685 #define MXC_CCM_CCGR0_DTCP_MASK (3 << MXC_CCM_CCGR0_DTCP_OFFSET) 685 #define MXC_CCM_CCGR0_DTCP_MASK (3 << MXC_CCM_CCGR0_DTCP_OFFSET)
686 #endif 686 #endif
687 687
688 #define MXC_CCM_CCGR1_ECSPI1S_OFFSET 0 688 #define MXC_CCM_CCGR1_ECSPI1S_OFFSET 0
689 #define MXC_CCM_CCGR1_ECSPI1S_MASK (3 << MXC_CCM_CCGR1_ECSPI1S_OFFSET) 689 #define MXC_CCM_CCGR1_ECSPI1S_MASK (3 << MXC_CCM_CCGR1_ECSPI1S_OFFSET)
690 #define MXC_CCM_CCGR1_ECSPI2S_OFFSET 2 690 #define MXC_CCM_CCGR1_ECSPI2S_OFFSET 2
691 #define MXC_CCM_CCGR1_ECSPI2S_MASK (3 << MXC_CCM_CCGR1_ECSPI2S_OFFSET) 691 #define MXC_CCM_CCGR1_ECSPI2S_MASK (3 << MXC_CCM_CCGR1_ECSPI2S_OFFSET)
692 #define MXC_CCM_CCGR1_ECSPI3S_OFFSET 4 692 #define MXC_CCM_CCGR1_ECSPI3S_OFFSET 4
693 #define MXC_CCM_CCGR1_ECSPI3S_MASK (3 << MXC_CCM_CCGR1_ECSPI3S_OFFSET) 693 #define MXC_CCM_CCGR1_ECSPI3S_MASK (3 << MXC_CCM_CCGR1_ECSPI3S_OFFSET)
694 #define MXC_CCM_CCGR1_ECSPI4S_OFFSET 6 694 #define MXC_CCM_CCGR1_ECSPI4S_OFFSET 6
695 #define MXC_CCM_CCGR1_ECSPI4S_MASK (3 << MXC_CCM_CCGR1_ECSPI4S_OFFSET) 695 #define MXC_CCM_CCGR1_ECSPI4S_MASK (3 << MXC_CCM_CCGR1_ECSPI4S_OFFSET)
696 #define MXC_CCM_CCGR1_ECSPI5S_OFFSET 8 696 #define MXC_CCM_CCGR1_ECSPI5S_OFFSET 8
697 #define MXC_CCM_CCGR1_ECSPI5S_MASK (3 << MXC_CCM_CCGR1_ECSPI5S_OFFSET) 697 #define MXC_CCM_CCGR1_ECSPI5S_MASK (3 << MXC_CCM_CCGR1_ECSPI5S_OFFSET)
698 /* CCGR1_ENET does not exist on i.MX6SX/UL */ 698 /* CCGR1_ENET does not exist on i.MX6SX/UL */
699 #define MXC_CCM_CCGR1_ENET_OFFSET 10 699 #define MXC_CCM_CCGR1_ENET_OFFSET 10
700 #define MXC_CCM_CCGR1_ENET_MASK (3 << MXC_CCM_CCGR1_ENET_OFFSET) 700 #define MXC_CCM_CCGR1_ENET_MASK (3 << MXC_CCM_CCGR1_ENET_OFFSET)
701 #define MXC_CCM_CCGR1_EPIT1S_OFFSET 12 701 #define MXC_CCM_CCGR1_EPIT1S_OFFSET 12
702 #define MXC_CCM_CCGR1_EPIT1S_MASK (3 << MXC_CCM_CCGR1_EPIT1S_OFFSET) 702 #define MXC_CCM_CCGR1_EPIT1S_MASK (3 << MXC_CCM_CCGR1_EPIT1S_OFFSET)
703 #define MXC_CCM_CCGR1_EPIT2S_OFFSET 14 703 #define MXC_CCM_CCGR1_EPIT2S_OFFSET 14
704 #define MXC_CCM_CCGR1_EPIT2S_MASK (3 << MXC_CCM_CCGR1_EPIT2S_OFFSET) 704 #define MXC_CCM_CCGR1_EPIT2S_MASK (3 << MXC_CCM_CCGR1_EPIT2S_OFFSET)
705 #define MXC_CCM_CCGR1_ESAIS_OFFSET 16 705 #define MXC_CCM_CCGR1_ESAIS_OFFSET 16
706 #define MXC_CCM_CCGR1_ESAIS_MASK (3 << MXC_CCM_CCGR1_ESAIS_OFFSET) 706 #define MXC_CCM_CCGR1_ESAIS_MASK (3 << MXC_CCM_CCGR1_ESAIS_OFFSET)
707 #ifdef CONFIG_MX6SX 707 #ifdef CONFIG_MX6SX
708 #define MXC_CCM_CCGR1_WAKEUP_OFFSET 18 708 #define MXC_CCM_CCGR1_WAKEUP_OFFSET 18
709 #define MXC_CCM_CCGR1_WAKEUP_MASK (3 << MXC_CCM_CCGR1_WAKEUP_OFFSET) 709 #define MXC_CCM_CCGR1_WAKEUP_MASK (3 << MXC_CCM_CCGR1_WAKEUP_OFFSET)
710 #endif 710 #endif
711 #define MXC_CCM_CCGR1_GPT_BUS_OFFSET 20 711 #define MXC_CCM_CCGR1_GPT_BUS_OFFSET 20
712 #define MXC_CCM_CCGR1_GPT_BUS_MASK (3 << MXC_CCM_CCGR1_GPT_BUS_OFFSET) 712 #define MXC_CCM_CCGR1_GPT_BUS_MASK (3 << MXC_CCM_CCGR1_GPT_BUS_OFFSET)
713 #define MXC_CCM_CCGR1_GPT_SERIAL_OFFSET 22 713 #define MXC_CCM_CCGR1_GPT_SERIAL_OFFSET 22
714 #define MXC_CCM_CCGR1_GPT_SERIAL_MASK (3 << MXC_CCM_CCGR1_GPT_SERIAL_OFFSET) 714 #define MXC_CCM_CCGR1_GPT_SERIAL_MASK (3 << MXC_CCM_CCGR1_GPT_SERIAL_OFFSET)
715 #ifndef CONFIG_MX6SX 715 #ifndef CONFIG_MX6SX
716 #define MXC_CCM_CCGR1_GPU2D_OFFSET 24 716 #define MXC_CCM_CCGR1_GPU2D_OFFSET 24
717 #define MXC_CCM_CCGR1_GPU2D_MASK (3 << MXC_CCM_CCGR1_GPU2D_OFFSET) 717 #define MXC_CCM_CCGR1_GPU2D_MASK (3 << MXC_CCM_CCGR1_GPU2D_OFFSET)
718 #endif 718 #endif
719 #define MXC_CCM_CCGR1_GPU3D_OFFSET 26 719 #define MXC_CCM_CCGR1_GPU3D_OFFSET 26
720 #define MXC_CCM_CCGR1_GPU3D_MASK (3 << MXC_CCM_CCGR1_GPU3D_OFFSET) 720 #define MXC_CCM_CCGR1_GPU3D_MASK (3 << MXC_CCM_CCGR1_GPU3D_OFFSET)
721 #ifdef CONFIG_MX6SX 721 #ifdef CONFIG_MX6SX
722 #define MXC_CCM_CCGR1_OCRAM_S_OFFSET 28 722 #define MXC_CCM_CCGR1_OCRAM_S_OFFSET 28
723 #define MXC_CCM_CCGR1_OCRAM_S_MASK (3 << MXC_CCM_CCGR1_OCRAM_S_OFFSET) 723 #define MXC_CCM_CCGR1_OCRAM_S_MASK (3 << MXC_CCM_CCGR1_OCRAM_S_OFFSET)
724 #define MXC_CCM_CCGR1_CANFD_OFFSET 30 724 #define MXC_CCM_CCGR1_CANFD_OFFSET 30
725 #define MXC_CCM_CCGR1_CANFD_MASK (3 << MXC_CCM_CCGR1_CANFD_OFFSET) 725 #define MXC_CCM_CCGR1_CANFD_MASK (3 << MXC_CCM_CCGR1_CANFD_OFFSET)
726 #endif 726 #endif
727 727
728 #define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET 0 728 #define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET 0
729 #define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET) 729 #define MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_OFFSET)
730 730
731 /* i.MX6SX/UL */ 731 /* i.MX6SX/UL */
732 #define MXC_CCM_CCGR2_CSI_OFFSET 2 732 #define MXC_CCM_CCGR2_CSI_OFFSET 2
733 #define MXC_CCM_CCGR2_CSI_MASK (3 << MXC_CCM_CCGR2_CSI_OFFSET) 733 #define MXC_CCM_CCGR2_CSI_MASK (3 << MXC_CCM_CCGR2_CSI_OFFSET)
734 734
735 #ifndef CONFIG_MX6SX 735 #ifndef CONFIG_MX6SX
736 #define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET 4 736 #define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET 4
737 #define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET) 737 #define MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK (3 << MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_OFFSET)
738 #endif 738 #endif
739 #define MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET 6 739 #define MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET 6
740 #define MXC_CCM_CCGR2_I2C1_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET) 740 #define MXC_CCM_CCGR2_I2C1_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET)
741 #define MXC_CCM_CCGR2_I2C2_SERIAL_OFFSET 8 741 #define MXC_CCM_CCGR2_I2C2_SERIAL_OFFSET 8
742 #define MXC_CCM_CCGR2_I2C2_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C2_SERIAL_OFFSET) 742 #define MXC_CCM_CCGR2_I2C2_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C2_SERIAL_OFFSET)
743 #define MXC_CCM_CCGR2_I2C3_SERIAL_OFFSET 10 743 #define MXC_CCM_CCGR2_I2C3_SERIAL_OFFSET 10
744 #define MXC_CCM_CCGR2_I2C3_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C3_SERIAL_OFFSET) 744 #define MXC_CCM_CCGR2_I2C3_SERIAL_MASK (3 << MXC_CCM_CCGR2_I2C3_SERIAL_OFFSET)
745 #define MXC_CCM_CCGR1_I2C4_SERIAL_OFFSET 8 745 #define MXC_CCM_CCGR1_I2C4_SERIAL_OFFSET 8
746 #define MXC_CCM_CCGR1_I2C4_SERIAL_MASK (3 << MXC_CCM_CCGR1_I2C4_SERIAL_OFFSET) 746 #define MXC_CCM_CCGR1_I2C4_SERIAL_MASK (3 << MXC_CCM_CCGR1_I2C4_SERIAL_OFFSET)
747 #define MXC_CCM_CCGR2_OCOTP_CTRL_OFFSET 12 747 #define MXC_CCM_CCGR2_OCOTP_CTRL_OFFSET 12
748 #define MXC_CCM_CCGR2_OCOTP_CTRL_MASK (3 << MXC_CCM_CCGR2_OCOTP_CTRL_OFFSET) 748 #define MXC_CCM_CCGR2_OCOTP_CTRL_MASK (3 << MXC_CCM_CCGR2_OCOTP_CTRL_OFFSET)
749 #define MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_OFFSET 14 749 #define MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_OFFSET 14
750 #define MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK (3 << MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_OFFSET) 750 #define MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK (3 << MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_OFFSET)
751 #define MXC_CCM_CCGR2_IPMUX1_OFFSET 16 751 #define MXC_CCM_CCGR2_IPMUX1_OFFSET 16
752 #define MXC_CCM_CCGR2_IPMUX1_MASK (3 << MXC_CCM_CCGR2_IPMUX1_OFFSET) 752 #define MXC_CCM_CCGR2_IPMUX1_MASK (3 << MXC_CCM_CCGR2_IPMUX1_OFFSET)
753 #define MXC_CCM_CCGR2_IPMUX2_OFFSET 18 753 #define MXC_CCM_CCGR2_IPMUX2_OFFSET 18
754 #define MXC_CCM_CCGR2_IPMUX2_MASK (3 << MXC_CCM_CCGR2_IPMUX2_OFFSET) 754 #define MXC_CCM_CCGR2_IPMUX2_MASK (3 << MXC_CCM_CCGR2_IPMUX2_OFFSET)
755 #define MXC_CCM_CCGR2_IPMUX3_OFFSET 20 755 #define MXC_CCM_CCGR2_IPMUX3_OFFSET 20
756 #define MXC_CCM_CCGR2_IPMUX3_MASK (3 << MXC_CCM_CCGR2_IPMUX3_OFFSET) 756 #define MXC_CCM_CCGR2_IPMUX3_MASK (3 << MXC_CCM_CCGR2_IPMUX3_OFFSET)
757 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_OFFSET 22 757 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_OFFSET 22
758 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_MASK (3 << MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_OFFSET) 758 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_MASK (3 << MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC1_IPGS_OFFSET)
759 /* i.MX6SX/UL LCD and PXP */ 759 /* i.MX6SX/UL LCD and PXP */
760 #define MXC_CCM_CCGR2_LCD_OFFSET 28 760 #define MXC_CCM_CCGR2_LCD_OFFSET 28
761 #define MXC_CCM_CCGR2_LCD_MASK (3 << MXC_CCM_CCGR2_LCD_OFFSET) 761 #define MXC_CCM_CCGR2_LCD_MASK (3 << MXC_CCM_CCGR2_LCD_OFFSET)
762 #define MXC_CCM_CCGR2_PXP_OFFSET 30 762 #define MXC_CCM_CCGR2_PXP_OFFSET 30
763 #define MXC_CCM_CCGR2_PXP_MASK (3 << MXC_CCM_CCGR2_PXP_OFFSET) 763 #define MXC_CCM_CCGR2_PXP_MASK (3 << MXC_CCM_CCGR2_PXP_OFFSET)
764 764
765 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_OFFSET 24 765 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_OFFSET 24
766 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_MASK (3 << MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_OFFSET) 766 #define MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_MASK (3 << MXC_CCM_CCGR2_IPSYNC_IP2APB_TZASC2_IPG_OFFSET)
767 #define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET 26 767 #define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET 26
768 #define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_MASK (3 << MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET) 768 #define MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_MASK (3 << MXC_CCM_CCGR2_IPSYNC_VDOA_IPG_MASTER_CLK_OFFSET)
769 769
770 /* i.MX6ULL */ 770 /* i.MX6ULL */
771 #define MXC_CCM_CCGR2_ESAI_CLK_OFFSET 0 771 #define MXC_CCM_CCGR2_ESAI_CLK_OFFSET 0
772 #define MXC_CCM_CCGR2_ESAI_CLK_MASK (3 << MXC_CCM_CCGR2_ESAI_CLK_OFFSET) 772 #define MXC_CCM_CCGR2_ESAI_CLK_MASK (3 << MXC_CCM_CCGR2_ESAI_CLK_OFFSET)
773 #define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET 4 773 #define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET 4
774 #define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_MASK (3 << MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET) 774 #define MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_MASK (3 << MXC_CCM_CCGR2_IOMUXC_SNVS_CLK_OFFSET)
775 775
776 /* Exist on i.MX6SX */ 776 /* Exist on i.MX6SX */
777 #define MXC_CCM_CCGR3_M4_OFFSET 2 777 #define MXC_CCM_CCGR3_M4_OFFSET 2
778 #define MXC_CCM_CCGR3_M4_MASK (3 << MXC_CCM_CCGR3_M4_OFFSET) 778 #define MXC_CCM_CCGR3_M4_MASK (3 << MXC_CCM_CCGR3_M4_OFFSET)
779 /* i.MX6ULL */ 779 /* i.MX6ULL */
780 #define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET 4 780 #define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET 4
781 #define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET) 781 #define MXC_CCM_CCGR3_EPDC_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR3_EPDC_CLK_ENABLE_OFFSET)
782 #define MXC_CCM_CCGR3_ENET_OFFSET 4 782 #define MXC_CCM_CCGR3_ENET_OFFSET 4
783 #define MXC_CCM_CCGR3_ENET_MASK (3 << MXC_CCM_CCGR3_ENET_OFFSET) 783 #define MXC_CCM_CCGR3_ENET_MASK (3 << MXC_CCM_CCGR3_ENET_OFFSET)
784 #define MXC_CCM_CCGR3_QSPI_OFFSET 14 784 #define MXC_CCM_CCGR3_QSPI_OFFSET 14
785 #define MXC_CCM_CCGR3_QSPI_MASK (3 << MXC_CCM_CCGR3_QSPI_OFFSET) 785 #define MXC_CCM_CCGR3_QSPI_MASK (3 << MXC_CCM_CCGR3_QSPI_OFFSET)
786 786
787 #define MXC_CCM_CCGR3_IPU1_IPU_OFFSET 0 787 #define MXC_CCM_CCGR3_IPU1_IPU_OFFSET 0
788 #define MXC_CCM_CCGR3_IPU1_IPU_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_OFFSET) 788 #define MXC_CCM_CCGR3_IPU1_IPU_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_OFFSET)
789 #define MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET 2 789 #define MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET 2
790 #define MXC_CCM_CCGR3_IPU1_IPU_DI0_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET) 790 #define MXC_CCM_CCGR3_IPU1_IPU_DI0_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_DI0_OFFSET)
791 #define MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET 4 791 #define MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET 4
792 #define MXC_CCM_CCGR3_IPU1_IPU_DI1_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET) 792 #define MXC_CCM_CCGR3_IPU1_IPU_DI1_MASK (3 << MXC_CCM_CCGR3_IPU1_IPU_DI1_OFFSET)
793 793
794 #define MXC_CCM_CCGR3_IPU2_IPU_OFFSET 6 794 #define MXC_CCM_CCGR3_IPU2_IPU_OFFSET 6
795 #define MXC_CCM_CCGR3_IPU2_IPU_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_OFFSET) 795 #define MXC_CCM_CCGR3_IPU2_IPU_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_OFFSET)
796 #define MXC_CCM_CCGR3_IPU2_IPU_DI0_OFFSET 8 796 #define MXC_CCM_CCGR3_IPU2_IPU_DI0_OFFSET 8
797 #define MXC_CCM_CCGR3_IPU2_IPU_DI0_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_DI0_OFFSET) 797 #define MXC_CCM_CCGR3_IPU2_IPU_DI0_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_DI0_OFFSET)
798 #define MXC_CCM_CCGR3_IPU2_IPU_DI1_OFFSET 10 798 #define MXC_CCM_CCGR3_IPU2_IPU_DI1_OFFSET 10
799 #define MXC_CCM_CCGR3_IPU2_IPU_DI1_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_DI1_OFFSET) 799 #define MXC_CCM_CCGR3_IPU2_IPU_DI1_MASK (3 << MXC_CCM_CCGR3_IPU2_IPU_DI1_OFFSET)
800 #define MXC_CCM_CCGR3_LDB_DI0_OFFSET 12 800 #define MXC_CCM_CCGR3_LDB_DI0_OFFSET 12
801 #define MXC_CCM_CCGR3_LDB_DI0_MASK (3 << MXC_CCM_CCGR3_LDB_DI0_OFFSET) 801 #define MXC_CCM_CCGR3_LDB_DI0_MASK (3 << MXC_CCM_CCGR3_LDB_DI0_OFFSET)
802 802
803 /* QSPI1 exists on i.MX6SX/UL */ 803 /* QSPI1 exists on i.MX6SX/UL */
804 #define MXC_CCM_CCGR3_QSPI1_OFFSET 14 804 #define MXC_CCM_CCGR3_QSPI1_OFFSET 14
805 #define MXC_CCM_CCGR3_QSPI1_MASK (3 << MXC_CCM_CCGR3_QSPI1_OFFSET) 805 #define MXC_CCM_CCGR3_QSPI1_MASK (3 << MXC_CCM_CCGR3_QSPI1_OFFSET)
806 806
807 #define MXC_CCM_CCGR3_LDB_DI1_OFFSET 14 807 #define MXC_CCM_CCGR3_LDB_DI1_OFFSET 14
808 #define MXC_CCM_CCGR3_LDB_DI1_MASK (3 << MXC_CCM_CCGR3_LDB_DI1_OFFSET) 808 #define MXC_CCM_CCGR3_LDB_DI1_MASK (3 << MXC_CCM_CCGR3_LDB_DI1_OFFSET)
809 #define MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET 16 809 #define MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET 16
810 #define MXC_CCM_CCGR3_MIPI_CORE_CFG_MASK (3 << MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET) 810 #define MXC_CCM_CCGR3_MIPI_CORE_CFG_MASK (3 << MXC_CCM_CCGR3_MIPI_CORE_CFG_OFFSET)
811 811
812 /* A7_CLKDIV/WDOG1 on i.MX6UL */ 812 /* A7_CLKDIV/WDOG1 on i.MX6UL */
813 #define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET 16 813 #define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET 16
814 #define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET) 814 #define MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_MASK (3 << MXC_CCM_CCGR3_WDOG1_CLK_ENABLE_OFFSET)
815 #define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET 18 815 #define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET 18
816 #define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_MASK (3 << MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET) 816 #define MXC_CCM_CCGR3_A7_CLKDIV_PATCH_MASK (3 << MXC_CCM_CCGR3_A7_CLKDIV_PATCH_OFFSET)
817 817
818 #define MXC_CCM_CCGR3_MLB_OFFSET 18 818 #define MXC_CCM_CCGR3_MLB_OFFSET 18
819 #define MXC_CCM_CCGR3_MLB_MASK (3 << MXC_CCM_CCGR3_MLB_OFFSET) 819 #define MXC_CCM_CCGR3_MLB_MASK (3 << MXC_CCM_CCGR3_MLB_OFFSET)
820 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_OFFSET 20 820 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_OFFSET 20
821 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_OFFSET) 821 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P0_OFFSET)
822 #ifndef CONFIG_MX6SX 822 #ifndef CONFIG_MX6SX
823 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_OFFSET 22 823 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_OFFSET 22
824 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_OFFSET) 824 #define MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_ACLK_FAST_CORE_P1_OFFSET)
825 #endif 825 #endif
826 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_OFFSET 24 826 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_OFFSET 24
827 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_OFFSET) 827 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P0_OFFSET)
828 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET 26 828 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET 26
829 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET) 829 #define MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_MASK (3 << MXC_CCM_CCGR3_MMDC_CORE_IPG_CLK_P1_OFFSET)
830 830
831 #define MXC_CCM_CCGR3_DISP_AXI_OFFSET 6 831 #define MXC_CCM_CCGR3_DISP_AXI_OFFSET 6
832 #define MXC_CCM_CCGR3_DISP_AXI_MASK (3 << MXC_CCM_CCGR3_DISP_AXI_OFFSET) 832 #define MXC_CCM_CCGR3_DISP_AXI_MASK (3 << MXC_CCM_CCGR3_DISP_AXI_OFFSET)
833 #define MXC_CCM_CCGR3_LCDIF2_PIX_OFFSET 8 833 #define MXC_CCM_CCGR3_LCDIF2_PIX_OFFSET 8
834 #define MXC_CCM_CCGR3_LCDIF2_PIX_MASK (3 << MXC_CCM_CCGR3_LCDIF2_PIX_OFFSET) 834 #define MXC_CCM_CCGR3_LCDIF2_PIX_MASK (3 << MXC_CCM_CCGR3_LCDIF2_PIX_OFFSET)
835 #define MXC_CCM_CCGR3_LCDIF1_PIX_OFFSET 10 835 #define MXC_CCM_CCGR3_LCDIF1_PIX_OFFSET 10
836 #define MXC_CCM_CCGR3_LCDIF1_PIX_MASK (3 << MXC_CCM_CCGR3_LCDIF1_PIX_OFFSET) 836 #define MXC_CCM_CCGR3_LCDIF1_PIX_MASK (3 << MXC_CCM_CCGR3_LCDIF1_PIX_OFFSET)
837 /* AXI on i.MX6UL */ 837 /* AXI on i.MX6UL */
838 #define MXC_CCM_CCGR3_AXI_CLK_OFFSET 28 838 #define MXC_CCM_CCGR3_AXI_CLK_OFFSET 28
839 #define MXC_CCM_CCGR3_AXI_CLK_MASK (3 << MXC_CCM_CCGR3_AXI_CLK_OFFSET) 839 #define MXC_CCM_CCGR3_AXI_CLK_MASK (3 << MXC_CCM_CCGR3_AXI_CLK_OFFSET)
840 #define MXC_CCM_CCGR3_OCRAM_OFFSET 28 840 #define MXC_CCM_CCGR3_OCRAM_OFFSET 28
841 #define MXC_CCM_CCGR3_OCRAM_MASK (3 << MXC_CCM_CCGR3_OCRAM_OFFSET) 841 #define MXC_CCM_CCGR3_OCRAM_MASK (3 << MXC_CCM_CCGR3_OCRAM_OFFSET)
842 842
843 /* GPIO4 on i.MX6UL/ULL */ 843 /* GPIO4 on i.MX6UL/ULL */
844 #define MXC_CCM_CCGR3_GPIO4_CLK_OFFSET 30 844 #define MXC_CCM_CCGR3_GPIO4_CLK_OFFSET 30
845 #define MXC_CCM_CCGR3_GPIO4_CLK_MASK (3 << MXC_CCM_CCGR3_GPIO4_CLK_OFFSET) 845 #define MXC_CCM_CCGR3_GPIO4_CLK_MASK (3 << MXC_CCM_CCGR3_GPIO4_CLK_OFFSET)
846 846
847 #ifndef CONFIG_MX6SX 847 #ifndef CONFIG_MX6SX
848 #define MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET 30 848 #define MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET 30
849 #define MXC_CCM_CCGR3_OPENVGAXICLK_MASK (3 << MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET) 849 #define MXC_CCM_CCGR3_OPENVGAXICLK_MASK (3 << MXC_CCM_CCGR3_OPENVGAXICLK_OFFSET)
850 #endif 850 #endif
851 851
852 /* i.MX6ULL */ 852 /* i.MX6ULL */
853 #define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET 30 853 #define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET 30
854 #define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_MASK (3 << MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET) 854 #define MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_MASK (3 << MXC_CCM_CCGR3_IOMUXC_SNVS_GPR_CLK_OFFSET)
855 855
856 #define MXC_CCM_CCGR4_PCIE_OFFSET 0 856 #define MXC_CCM_CCGR4_PCIE_OFFSET 0
857 #define MXC_CCM_CCGR4_PCIE_MASK (3 << MXC_CCM_CCGR4_PCIE_OFFSET) 857 #define MXC_CCM_CCGR4_PCIE_MASK (3 << MXC_CCM_CCGR4_PCIE_OFFSET)
858 /* QSPI2 on i.MX6SX */ 858 /* QSPI2 on i.MX6SX */
859 #define MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET 10 859 #define MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET 10
860 #define MXC_CCM_CCGR4_QSPI2_ENFC_MASK (3 << MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET) 860 #define MXC_CCM_CCGR4_QSPI2_ENFC_MASK (3 << MXC_CCM_CCGR4_QSPI2_ENFC_OFFSET)
861 #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET 8 861 #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET 8
862 #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET) 862 #define MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QFAST1_S133_OFFSET)
863 #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET 12 863 #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET 12
864 #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET) 864 #define MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_OFFSET)
865 #define MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_OFFSET 14 865 #define MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_OFFSET 14
866 #define MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_OFFSET) 866 #define MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_MASK (3 << MXC_CCM_CCGR4_PL301_MX6QPER2_MAINCLK_ENABLE_OFFSET)
867 #define MXC_CCM_CCGR4_PWM1_OFFSET 16 867 #define MXC_CCM_CCGR4_PWM1_OFFSET 16
868 #define MXC_CCM_CCGR4_PWM1_MASK (3 << MXC_CCM_CCGR4_PWM1_OFFSET) 868 #define MXC_CCM_CCGR4_PWM1_MASK (3 << MXC_CCM_CCGR4_PWM1_OFFSET)
869 #define MXC_CCM_CCGR4_PWM2_OFFSET 18 869 #define MXC_CCM_CCGR4_PWM2_OFFSET 18
870 #define MXC_CCM_CCGR4_PWM2_MASK (3 << MXC_CCM_CCGR4_PWM2_OFFSET) 870 #define MXC_CCM_CCGR4_PWM2_MASK (3 << MXC_CCM_CCGR4_PWM2_OFFSET)
871 #define MXC_CCM_CCGR4_PWM3_OFFSET 20 871 #define MXC_CCM_CCGR4_PWM3_OFFSET 20
872 #define MXC_CCM_CCGR4_PWM3_MASK (3 << MXC_CCM_CCGR4_PWM3_OFFSET) 872 #define MXC_CCM_CCGR4_PWM3_MASK (3 << MXC_CCM_CCGR4_PWM3_OFFSET)
873 #define MXC_CCM_CCGR4_PWM4_OFFSET 22 873 #define MXC_CCM_CCGR4_PWM4_OFFSET 22
874 #define MXC_CCM_CCGR4_PWM4_MASK (3 << MXC_CCM_CCGR4_PWM4_OFFSET) 874 #define MXC_CCM_CCGR4_PWM4_MASK (3 << MXC_CCM_CCGR4_PWM4_OFFSET)
875 #define MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_OFFSET 24 875 #define MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_OFFSET 24
876 #define MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_OFFSET) 876 #define MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_OFFSET)
877 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_OFFSET 26 877 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_OFFSET 26
878 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_OFFSET) 878 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_OFFSET)
879 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_OFFSET 28 879 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_OFFSET 28
880 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_OFFSET) 880 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_OFFSET)
881 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_OFFSET 30 881 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_OFFSET 30
882 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_OFFSET) 882 #define MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK (3 << MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_OFFSET)
883 883
884 #define MXC_CCM_CCGR5_ROM_OFFSET 0 884 #define MXC_CCM_CCGR5_ROM_OFFSET 0
885 #define MXC_CCM_CCGR5_ROM_MASK (3 << MXC_CCM_CCGR5_ROM_OFFSET) 885 #define MXC_CCM_CCGR5_ROM_MASK (3 << MXC_CCM_CCGR5_ROM_OFFSET)
886 #ifndef CONFIG_MX6SX 886 #ifndef CONFIG_MX6SX
887 #define MXC_CCM_CCGR5_SATA_OFFSET 4 887 #define MXC_CCM_CCGR5_SATA_OFFSET 4
888 #define MXC_CCM_CCGR5_SATA_MASK (3 << MXC_CCM_CCGR5_SATA_OFFSET) 888 #define MXC_CCM_CCGR5_SATA_MASK (3 << MXC_CCM_CCGR5_SATA_OFFSET)
889 #endif 889 #endif
890 #define MXC_CCM_CCGR5_SDMA_OFFSET 6 890 #define MXC_CCM_CCGR5_SDMA_OFFSET 6
891 #define MXC_CCM_CCGR5_SDMA_MASK (3 << MXC_CCM_CCGR5_SDMA_OFFSET) 891 #define MXC_CCM_CCGR5_SDMA_MASK (3 << MXC_CCM_CCGR5_SDMA_OFFSET)
892 #define MXC_CCM_CCGR5_SPBA_OFFSET 12 892 #define MXC_CCM_CCGR5_SPBA_OFFSET 12
893 #define MXC_CCM_CCGR5_SPBA_MASK (3 << MXC_CCM_CCGR5_SPBA_OFFSET) 893 #define MXC_CCM_CCGR5_SPBA_MASK (3 << MXC_CCM_CCGR5_SPBA_OFFSET)
894 #define MXC_CCM_CCGR5_SPDIF_OFFSET 14 894 #define MXC_CCM_CCGR5_SPDIF_OFFSET 14
895 #define MXC_CCM_CCGR5_SPDIF_MASK (3 << MXC_CCM_CCGR5_SPDIF_OFFSET) 895 #define MXC_CCM_CCGR5_SPDIF_MASK (3 << MXC_CCM_CCGR5_SPDIF_OFFSET)
896 #define MXC_CCM_CCGR5_SSI1_OFFSET 18 896 #define MXC_CCM_CCGR5_SSI1_OFFSET 18
897 #define MXC_CCM_CCGR5_SSI1_MASK (3 << MXC_CCM_CCGR5_SSI1_OFFSET) 897 #define MXC_CCM_CCGR5_SSI1_MASK (3 << MXC_CCM_CCGR5_SSI1_OFFSET)
898 #define MXC_CCM_CCGR5_SSI2_OFFSET 20 898 #define MXC_CCM_CCGR5_SSI2_OFFSET 20
899 #define MXC_CCM_CCGR5_SSI2_MASK (3 << MXC_CCM_CCGR5_SSI2_OFFSET) 899 #define MXC_CCM_CCGR5_SSI2_MASK (3 << MXC_CCM_CCGR5_SSI2_OFFSET)
900 #define MXC_CCM_CCGR5_SSI3_OFFSET 22 900 #define MXC_CCM_CCGR5_SSI3_OFFSET 22
901 #define MXC_CCM_CCGR5_SSI3_MASK (3 << MXC_CCM_CCGR5_SSI3_OFFSET) 901 #define MXC_CCM_CCGR5_SSI3_MASK (3 << MXC_CCM_CCGR5_SSI3_OFFSET)
902 #define MXC_CCM_CCGR5_UART_OFFSET 24 902 #define MXC_CCM_CCGR5_UART_OFFSET 24
903 #define MXC_CCM_CCGR5_UART_MASK (3 << MXC_CCM_CCGR5_UART_OFFSET) 903 #define MXC_CCM_CCGR5_UART_MASK (3 << MXC_CCM_CCGR5_UART_OFFSET)
904 #define MXC_CCM_CCGR5_UART_SERIAL_OFFSET 26 904 #define MXC_CCM_CCGR5_UART_SERIAL_OFFSET 26
905 #define MXC_CCM_CCGR5_UART_SERIAL_MASK (3 << MXC_CCM_CCGR5_UART_SERIAL_OFFSET) 905 #define MXC_CCM_CCGR5_UART_SERIAL_MASK (3 << MXC_CCM_CCGR5_UART_SERIAL_OFFSET)
906 #ifdef CONFIG_MX6SX 906 #ifdef CONFIG_MX6SX
907 #define MXC_CCM_CCGR5_SAI1_OFFSET 20 907 #define MXC_CCM_CCGR5_SAI1_OFFSET 20
908 #define MXC_CCM_CCGR5_SAI1_MASK (3 << MXC_CCM_CCGR5_SAI1_OFFSET) 908 #define MXC_CCM_CCGR5_SAI1_MASK (3 << MXC_CCM_CCGR5_SAI1_OFFSET)
909 #define MXC_CCM_CCGR5_SAI2_OFFSET 30 909 #define MXC_CCM_CCGR5_SAI2_OFFSET 30
910 #define MXC_CCM_CCGR5_SAI2_MASK (3 << MXC_CCM_CCGR5_SAI2_OFFSET) 910 #define MXC_CCM_CCGR5_SAI2_MASK (3 << MXC_CCM_CCGR5_SAI2_OFFSET)
911 #endif 911 #endif
912 912
913 /* PRG_CLK0 exists on i.MX6QP */ 913 /* PRG_CLK0 exists on i.MX6QP */
914 #define MXC_CCM_CCGR6_PRG_CLK0_MASK (3 << 24) 914 #define MXC_CCM_CCGR6_PRG_CLK0_MASK (3 << 24)
915 915
916 #define MXC_CCM_CCGR6_USBOH3_OFFSET 0 916 #define MXC_CCM_CCGR6_USBOH3_OFFSET 0
917 #define MXC_CCM_CCGR6_USBOH3_MASK (3 << MXC_CCM_CCGR6_USBOH3_OFFSET) 917 #define MXC_CCM_CCGR6_USBOH3_MASK (3 << MXC_CCM_CCGR6_USBOH3_OFFSET)
918 #define MXC_CCM_CCGR6_USDHC1_OFFSET 2 918 #define MXC_CCM_CCGR6_USDHC1_OFFSET 2
919 #define MXC_CCM_CCGR6_USDHC1_MASK (3 << MXC_CCM_CCGR6_USDHC1_OFFSET) 919 #define MXC_CCM_CCGR6_USDHC1_MASK (3 << MXC_CCM_CCGR6_USDHC1_OFFSET)
920 #define MXC_CCM_CCGR6_USDHC2_OFFSET 4 920 #define MXC_CCM_CCGR6_USDHC2_OFFSET 4
921 #define MXC_CCM_CCGR6_USDHC2_MASK (3 << MXC_CCM_CCGR6_USDHC2_OFFSET) 921 #define MXC_CCM_CCGR6_USDHC2_MASK (3 << MXC_CCM_CCGR6_USDHC2_OFFSET)
922 #define MXC_CCM_CCGR6_SIM1_CLK_OFFSET 6 922 #define MXC_CCM_CCGR6_SIM1_CLK_OFFSET 6
923 #define MXC_CCM_CCGR6_SIM1_CLK_MASK (3 << MXC_CCM_CCGR6_SIM1_CLK_OFFSET) 923 #define MXC_CCM_CCGR6_SIM1_CLK_MASK (3 << MXC_CCM_CCGR6_SIM1_CLK_OFFSET)
924 #define MXC_CCM_CCGR6_SIM2_CLK_OFFSET 8 924 #define MXC_CCM_CCGR6_SIM2_CLK_OFFSET 8
925 #define MXC_CCM_CCGR6_SIM2_CLK_MASK (3 << MXC_CCM_CCGR6_SIM2_CLK_OFFSET) 925 #define MXC_CCM_CCGR6_SIM2_CLK_MASK (3 << MXC_CCM_CCGR6_SIM2_CLK_OFFSET)
926 /* i.MX6ULL */ 926 /* i.MX6ULL */
927 #define MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET 8 927 #define MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET 8
928 #define MXC_CCM_CCGR6_IPMUX4_CLK_MASK (3 << MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET) 928 #define MXC_CCM_CCGR6_IPMUX4_CLK_MASK (3 << MXC_CCM_CCGR6_IPMUX4_CLK_OFFSET)
929 /* GPMI/BCH on i.MX6UL */ 929 /* GPMI/BCH on i.MX6UL */
930 #define MXC_CCM_CCGR6_BCH_OFFSET 6 930 #define MXC_CCM_CCGR6_BCH_OFFSET 6
931 #define MXC_CCM_CCGR6_BCH_MASK (3 << MXC_CCM_CCGR6_BCH_OFFSET) 931 #define MXC_CCM_CCGR6_BCH_MASK (3 << MXC_CCM_CCGR6_BCH_OFFSET)
932 #define MXC_CCM_CCGR6_GPMI_OFFSET 8 932 #define MXC_CCM_CCGR6_GPMI_OFFSET 8
933 #define MXC_CCM_CCGR6_GPMI_MASK (3 << MXC_CCM_CCGR6_GPMI_OFFSET) 933 #define MXC_CCM_CCGR6_GPMI_MASK (3 << MXC_CCM_CCGR6_GPMI_OFFSET)
934 934
935 #define MXC_CCM_CCGR6_USDHC3_OFFSET 6 935 #define MXC_CCM_CCGR6_USDHC3_OFFSET 6
936 #define MXC_CCM_CCGR6_USDHC3_MASK (3 << MXC_CCM_CCGR6_USDHC3_OFFSET) 936 #define MXC_CCM_CCGR6_USDHC3_MASK (3 << MXC_CCM_CCGR6_USDHC3_OFFSET)
937 #define MXC_CCM_CCGR6_USDHC4_OFFSET 8 937 #define MXC_CCM_CCGR6_USDHC4_OFFSET 8
938 #define MXC_CCM_CCGR6_USDHC4_MASK (3 << MXC_CCM_CCGR6_USDHC4_OFFSET) 938 #define MXC_CCM_CCGR6_USDHC4_MASK (3 << MXC_CCM_CCGR6_USDHC4_OFFSET)
939 #define MXC_CCM_CCGR6_EMI_SLOW_OFFSET 10 939 #define MXC_CCM_CCGR6_EMI_SLOW_OFFSET 10
940 #define MXC_CCM_CCGR6_EMI_SLOW_MASK (3 << MXC_CCM_CCGR6_EMI_SLOW_OFFSET) 940 #define MXC_CCM_CCGR6_EMI_SLOW_MASK (3 << MXC_CCM_CCGR6_EMI_SLOW_OFFSET)
941 /* i.MX6ULL */ 941 /* i.MX6ULL */
942 #define MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET 18 942 #define MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET 18
943 #define MXC_CCM_CCGR6_AIPS_TZ3_CLK_MASK (3 << MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET) 943 #define MXC_CCM_CCGR6_AIPS_TZ3_CLK_MASK (3 << MXC_CCM_CCGR6_AIPS_TZ3_CLK_OFFSET)
944 /* The following *CCGR6* exist only i.MX6SX */ 944 /* The following *CCGR6* exist only i.MX6SX */
945 #define MXC_CCM_CCGR6_PWM8_OFFSET 16 945 #define MXC_CCM_CCGR6_PWM8_OFFSET 16
946 #define MXC_CCM_CCGR6_PWM8_MASK (3 << MXC_CCM_CCGR6_PWM8_OFFSET) 946 #define MXC_CCM_CCGR6_PWM8_MASK (3 << MXC_CCM_CCGR6_PWM8_OFFSET)
947 #define MXC_CCM_CCGR6_VADC_OFFSET 20 947 #define MXC_CCM_CCGR6_VADC_OFFSET 20
948 #define MXC_CCM_CCGR6_VADC_MASK (3 << MXC_CCM_CCGR6_VADC_OFFSET) 948 #define MXC_CCM_CCGR6_VADC_MASK (3 << MXC_CCM_CCGR6_VADC_OFFSET)
949 #define MXC_CCM_CCGR6_GIS_OFFSET 22 949 #define MXC_CCM_CCGR6_GIS_OFFSET 22
950 #define MXC_CCM_CCGR6_GIS_MASK (3 << MXC_CCM_CCGR6_GIS_OFFSET) 950 #define MXC_CCM_CCGR6_GIS_MASK (3 << MXC_CCM_CCGR6_GIS_OFFSET)
951 #define MXC_CCM_CCGR6_I2C4_OFFSET 24 951 #define MXC_CCM_CCGR6_I2C4_OFFSET 24
952 #define MXC_CCM_CCGR6_I2C4_MASK (3 << MXC_CCM_CCGR6_I2C4_OFFSET) 952 #define MXC_CCM_CCGR6_I2C4_MASK (3 << MXC_CCM_CCGR6_I2C4_OFFSET)
953 #define MXC_CCM_CCGR6_PWM5_OFFSET 26 953 #define MXC_CCM_CCGR6_PWM5_OFFSET 26
954 #define MXC_CCM_CCGR6_PWM5_MASK (3 << MXC_CCM_CCGR6_PWM5_OFFSET) 954 #define MXC_CCM_CCGR6_PWM5_MASK (3 << MXC_CCM_CCGR6_PWM5_OFFSET)
955 #define MXC_CCM_CCGR6_PWM6_OFFSET 28 955 #define MXC_CCM_CCGR6_PWM6_OFFSET 28
956 #define MXC_CCM_CCGR6_PWM6_MASK (3 << MXC_CCM_CCGR6_PWM6_OFFSET) 956 #define MXC_CCM_CCGR6_PWM6_MASK (3 << MXC_CCM_CCGR6_PWM6_OFFSET)
957 #define MXC_CCM_CCGR6_PWM7_OFFSET 30 957 #define MXC_CCM_CCGR6_PWM7_OFFSET 30
958 #define MXC_CCM_CCGR6_PWM7_MASK (3 << MXC_CCM_CCGR6_PWM7_OFFSET) 958 #define MXC_CCM_CCGR6_PWM7_MASK (3 << MXC_CCM_CCGR6_PWM7_OFFSET)
959 /* The two does not exist on i.MX6SX */ 959 /* The two does not exist on i.MX6SX */
960 #define MXC_CCM_CCGR6_VDOAXICLK_OFFSET 12 960 #define MXC_CCM_CCGR6_VDOAXICLK_OFFSET 12
961 #define MXC_CCM_CCGR6_VDOAXICLK_MASK (3 << MXC_CCM_CCGR6_VDOAXICLK_OFFSET) 961 #define MXC_CCM_CCGR6_VDOAXICLK_MASK (3 << MXC_CCM_CCGR6_VDOAXICLK_OFFSET)
962 962
963 #define BM_ANADIG_PLL_SYS_LOCK 0x80000000 963 #define BM_ANADIG_PLL_SYS_LOCK 0x80000000
964 #define BP_ANADIG_PLL_SYS_RSVD0 20 964 #define BP_ANADIG_PLL_SYS_RSVD0 20
965 #define BM_ANADIG_PLL_SYS_RSVD0 0x7FF00000 965 #define BM_ANADIG_PLL_SYS_RSVD0 0x7FF00000
966 #define BF_ANADIG_PLL_SYS_RSVD0(v) \ 966 #define BF_ANADIG_PLL_SYS_RSVD0(v) \
967 (((v) << 20) & BM_ANADIG_PLL_SYS_RSVD0) 967 (((v) << 20) & BM_ANADIG_PLL_SYS_RSVD0)
968 #define BM_ANADIG_PLL_SYS_PLL_SEL 0x00080000 968 #define BM_ANADIG_PLL_SYS_PLL_SEL 0x00080000
969 #define BM_ANADIG_PLL_SYS_LVDS_24MHZ_SEL 0x00040000 969 #define BM_ANADIG_PLL_SYS_LVDS_24MHZ_SEL 0x00040000
970 #define BM_ANADIG_PLL_SYS_LVDS_SEL 0x00020000 970 #define BM_ANADIG_PLL_SYS_LVDS_SEL 0x00020000
971 #define BM_ANADIG_PLL_SYS_BYPASS 0x00010000 971 #define BM_ANADIG_PLL_SYS_BYPASS 0x00010000
972 #define BP_ANADIG_PLL_SYS_BYPASS_CLK_SRC 14 972 #define BP_ANADIG_PLL_SYS_BYPASS_CLK_SRC 14
973 #define BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC 0x0000C000 973 #define BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC 0x0000C000
974 #define BF_ANADIG_PLL_SYS_BYPASS_CLK_SRC(v) \ 974 #define BF_ANADIG_PLL_SYS_BYPASS_CLK_SRC(v) \
975 (((v) << 14) & BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC) 975 (((v) << 14) & BM_ANADIG_PLL_SYS_BYPASS_CLK_SRC)
976 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__OSC_24M 0x0 976 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__OSC_24M 0x0
977 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_1 0x1 977 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_1 0x1
978 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_2 0x2 978 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__ANACLK_2 0x2
979 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__XOR 0x3 979 #define BV_ANADIG_PLL_SYS_BYPASS_CLK_SRC__XOR 0x3
980 #define BM_ANADIG_PLL_SYS_ENABLE 0x00002000 980 #define BM_ANADIG_PLL_SYS_ENABLE 0x00002000
981 #define BM_ANADIG_PLL_SYS_POWERDOWN 0x00001000 981 #define BM_ANADIG_PLL_SYS_POWERDOWN 0x00001000
982 #define BM_ANADIG_PLL_SYS_HOLD_RING_OFF 0x00000800 982 #define BM_ANADIG_PLL_SYS_HOLD_RING_OFF 0x00000800
983 #define BM_ANADIG_PLL_SYS_DOUBLE_CP 0x00000400 983 #define BM_ANADIG_PLL_SYS_DOUBLE_CP 0x00000400
984 #define BM_ANADIG_PLL_SYS_HALF_CP 0x00000200 984 #define BM_ANADIG_PLL_SYS_HALF_CP 0x00000200
985 #define BM_ANADIG_PLL_SYS_DOUBLE_LF 0x00000100 985 #define BM_ANADIG_PLL_SYS_DOUBLE_LF 0x00000100
986 #define BM_ANADIG_PLL_SYS_HALF_LF 0x00000080 986 #define BM_ANADIG_PLL_SYS_HALF_LF 0x00000080
987 #define BP_ANADIG_PLL_SYS_DIV_SELECT 0 987 #define BP_ANADIG_PLL_SYS_DIV_SELECT 0
988 #define BM_ANADIG_PLL_SYS_DIV_SELECT 0x0000007F 988 #define BM_ANADIG_PLL_SYS_DIV_SELECT 0x0000007F
989 #define BF_ANADIG_PLL_SYS_DIV_SELECT(v) \ 989 #define BF_ANADIG_PLL_SYS_DIV_SELECT(v) \
990 (((v) << 0) & BM_ANADIG_PLL_SYS_DIV_SELECT) 990 (((v) << 0) & BM_ANADIG_PLL_SYS_DIV_SELECT)
991 991
992 #define BM_ANADIG_USB1_PLL_480_CTRL_LOCK 0x80000000 992 #define BM_ANADIG_USB1_PLL_480_CTRL_LOCK 0x80000000
993 #define BP_ANADIG_USB1_PLL_480_CTRL_RSVD1 17 993 #define BP_ANADIG_USB1_PLL_480_CTRL_RSVD1 17
994 #define BM_ANADIG_USB1_PLL_480_CTRL_RSVD1 0x7FFE0000 994 #define BM_ANADIG_USB1_PLL_480_CTRL_RSVD1 0x7FFE0000
995 #define BF_ANADIG_USB1_PLL_480_CTRL_RSVD1(v) \ 995 #define BF_ANADIG_USB1_PLL_480_CTRL_RSVD1(v) \
996 (((v) << 17) & BM_ANADIG_USB1_PLL_480_CTRL_RSVD1) 996 (((v) << 17) & BM_ANADIG_USB1_PLL_480_CTRL_RSVD1)
997 #define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS 0x00010000 997 #define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS 0x00010000
998 #define BP_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC 14 998 #define BP_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC 14
999 #define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC 0x0000C000 999 #define BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC 0x0000C000
1000 #define BF_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC(v) \ 1000 #define BF_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC(v) \
1001 (((v) << 14) & BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC) 1001 (((v) << 14) & BM_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC)
1002 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__OSC_24M 0x0 1002 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__OSC_24M 0x0
1003 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_1 0x1 1003 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_1 0x1
1004 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_2 0x2 1004 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__ANACLK_2 0x2
1005 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__XOR 0x3 1005 #define BV_ANADIG_USB1_PLL_480_CTRL_BYPASS_CLK_SRC__XOR 0x3
1006 #define BM_ANADIG_USB1_PLL_480_CTRL_ENABLE 0x00002000 1006 #define BM_ANADIG_USB1_PLL_480_CTRL_ENABLE 0x00002000
1007 #define BM_ANADIG_USB1_PLL_480_CTRL_POWER 0x00001000 1007 #define BM_ANADIG_USB1_PLL_480_CTRL_POWER 0x00001000
1008 #define BM_ANADIG_USB1_PLL_480_CTRL_HOLD_RING_OFF 0x00000800 1008 #define BM_ANADIG_USB1_PLL_480_CTRL_HOLD_RING_OFF 0x00000800
1009 #define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_CP 0x00000400 1009 #define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_CP 0x00000400
1010 #define BM_ANADIG_USB1_PLL_480_CTRL_HALF_CP 0x00000200 1010 #define BM_ANADIG_USB1_PLL_480_CTRL_HALF_CP 0x00000200
1011 #define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_LF 0x00000100 1011 #define BM_ANADIG_USB1_PLL_480_CTRL_DOUBLE_LF 0x00000100
1012 #define BM_ANADIG_USB1_PLL_480_CTRL_HALF_LF 0x00000080 1012 #define BM_ANADIG_USB1_PLL_480_CTRL_HALF_LF 0x00000080
1013 #define BM_ANADIG_USB1_PLL_480_CTRL_EN_USB_CLKS 0x00000040 1013 #define BM_ANADIG_USB1_PLL_480_CTRL_EN_USB_CLKS 0x00000040
1014 #define BM_ANADIG_USB1_PLL_480_CTRL_RSVD0 0x00000020 1014 #define BM_ANADIG_USB1_PLL_480_CTRL_RSVD0 0x00000020
1015 #define BP_ANADIG_USB1_PLL_480_CTRL_CONTROL0 2 1015 #define BP_ANADIG_USB1_PLL_480_CTRL_CONTROL0 2
1016 #define BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0 0x0000001C 1016 #define BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0 0x0000001C
1017 #define BF_ANADIG_USB1_PLL_480_CTRL_CONTROL0(v) \ 1017 #define BF_ANADIG_USB1_PLL_480_CTRL_CONTROL0(v) \
1018 (((v) << 2) & BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0) 1018 (((v) << 2) & BM_ANADIG_USB1_PLL_480_CTRL_CONTROL0)
1019 #define BP_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT 0 1019 #define BP_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT 0
1020 #define BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT 0x00000003 1020 #define BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT 0x00000003
1021 #define BF_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT(v) \ 1021 #define BF_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT(v) \
1022 (((v) << 0) & BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT) 1022 (((v) << 0) & BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT)
1023 1023
1024 #define BM_ANADIG_PLL_528_LOCK 0x80000000 1024 #define BM_ANADIG_PLL_528_LOCK 0x80000000
1025 #define BP_ANADIG_PLL_528_RSVD1 19 1025 #define BP_ANADIG_PLL_528_RSVD1 19
1026 #define BM_ANADIG_PLL_528_RSVD1 0x7FF80000 1026 #define BM_ANADIG_PLL_528_RSVD1 0x7FF80000
1027 #define BF_ANADIG_PLL_528_RSVD1(v) \ 1027 #define BF_ANADIG_PLL_528_RSVD1(v) \
1028 (((v) << 19) & BM_ANADIG_PLL_528_RSVD1) 1028 (((v) << 19) & BM_ANADIG_PLL_528_RSVD1)
1029 #define BM_ANADIG_PLL_528_PFD_OFFSET_EN 0x00040000 1029 #define BM_ANADIG_PLL_528_PFD_OFFSET_EN 0x00040000
1030 #define BM_ANADIG_PLL_528_DITHER_ENABLE 0x00020000 1030 #define BM_ANADIG_PLL_528_DITHER_ENABLE 0x00020000
1031 #define BM_ANADIG_PLL_528_BYPASS 0x00010000 1031 #define BM_ANADIG_PLL_528_BYPASS 0x00010000
1032 #define BP_ANADIG_PLL_528_BYPASS_CLK_SRC 14 1032 #define BP_ANADIG_PLL_528_BYPASS_CLK_SRC 14
1033 #define BM_ANADIG_PLL_528_BYPASS_CLK_SRC 0x0000C000 1033 #define BM_ANADIG_PLL_528_BYPASS_CLK_SRC 0x0000C000
1034 #define BF_ANADIG_PLL_528_BYPASS_CLK_SRC(v) \ 1034 #define BF_ANADIG_PLL_528_BYPASS_CLK_SRC(v) \
1035 (((v) << 14) & BM_ANADIG_PLL_528_BYPASS_CLK_SRC) 1035 (((v) << 14) & BM_ANADIG_PLL_528_BYPASS_CLK_SRC)
1036 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__OSC_24M 0x0 1036 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__OSC_24M 0x0
1037 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_1 0x1 1037 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_1 0x1
1038 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_2 0x2 1038 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__ANACLK_2 0x2
1039 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__XOR 0x3 1039 #define BV_ANADIG_PLL_528_BYPASS_CLK_SRC__XOR 0x3
1040 #define BM_ANADIG_PLL_528_ENABLE 0x00002000 1040 #define BM_ANADIG_PLL_528_ENABLE 0x00002000
1041 #define BM_ANADIG_PLL_528_POWERDOWN 0x00001000 1041 #define BM_ANADIG_PLL_528_POWERDOWN 0x00001000
1042 #define BM_ANADIG_PLL_528_HOLD_RING_OFF 0x00000800 1042 #define BM_ANADIG_PLL_528_HOLD_RING_OFF 0x00000800
1043 #define BM_ANADIG_PLL_528_DOUBLE_CP 0x00000400 1043 #define BM_ANADIG_PLL_528_DOUBLE_CP 0x00000400
1044 #define BM_ANADIG_PLL_528_HALF_CP 0x00000200 1044 #define BM_ANADIG_PLL_528_HALF_CP 0x00000200
1045 #define BM_ANADIG_PLL_528_DOUBLE_LF 0x00000100 1045 #define BM_ANADIG_PLL_528_DOUBLE_LF 0x00000100
1046 #define BM_ANADIG_PLL_528_HALF_LF 0x00000080 1046 #define BM_ANADIG_PLL_528_HALF_LF 0x00000080
1047 #define BP_ANADIG_PLL_528_RSVD0 1 1047 #define BP_ANADIG_PLL_528_RSVD0 1
1048 #define BM_ANADIG_PLL_528_RSVD0 0x0000007E 1048 #define BM_ANADIG_PLL_528_RSVD0 0x0000007E
1049 #define BF_ANADIG_PLL_528_RSVD0(v) \ 1049 #define BF_ANADIG_PLL_528_RSVD0(v) \
1050 (((v) << 1) & BM_ANADIG_PLL_528_RSVD0) 1050 (((v) << 1) & BM_ANADIG_PLL_528_RSVD0)
1051 #define BM_ANADIG_PLL_528_DIV_SELECT 0x00000001 1051 #define BM_ANADIG_PLL_528_DIV_SELECT 0x00000001
1052 1052
1053 #define BP_ANADIG_PLL_528_SS_STOP 16 1053 #define BP_ANADIG_PLL_528_SS_STOP 16
1054 #define BM_ANADIG_PLL_528_SS_STOP 0xFFFF0000 1054 #define BM_ANADIG_PLL_528_SS_STOP 0xFFFF0000
1055 #define BF_ANADIG_PLL_528_SS_STOP(v) \ 1055 #define BF_ANADIG_PLL_528_SS_STOP(v) \
1056 (((v) << 16) & BM_ANADIG_PLL_528_SS_STOP) 1056 (((v) << 16) & BM_ANADIG_PLL_528_SS_STOP)
1057 #define BM_ANADIG_PLL_528_SS_ENABLE 0x00008000 1057 #define BM_ANADIG_PLL_528_SS_ENABLE 0x00008000
1058 #define BP_ANADIG_PLL_528_SS_STEP 0 1058 #define BP_ANADIG_PLL_528_SS_STEP 0
1059 #define BM_ANADIG_PLL_528_SS_STEP 0x00007FFF 1059 #define BM_ANADIG_PLL_528_SS_STEP 0x00007FFF
1060 #define BF_ANADIG_PLL_528_SS_STEP(v) \ 1060 #define BF_ANADIG_PLL_528_SS_STEP(v) \
1061 (((v) << 0) & BM_ANADIG_PLL_528_SS_STEP) 1061 (((v) << 0) & BM_ANADIG_PLL_528_SS_STEP)
1062 1062
1063 #define BP_ANADIG_PLL_528_NUM_RSVD0 30 1063 #define BP_ANADIG_PLL_528_NUM_RSVD0 30
1064 #define BM_ANADIG_PLL_528_NUM_RSVD0 0xC0000000 1064 #define BM_ANADIG_PLL_528_NUM_RSVD0 0xC0000000
1065 #define BF_ANADIG_PLL_528_NUM_RSVD0(v) \ 1065 #define BF_ANADIG_PLL_528_NUM_RSVD0(v) \
1066 (((v) << 30) & BM_ANADIG_PLL_528_NUM_RSVD0) 1066 (((v) << 30) & BM_ANADIG_PLL_528_NUM_RSVD0)
1067 #define BP_ANADIG_PLL_528_NUM_A 0 1067 #define BP_ANADIG_PLL_528_NUM_A 0
1068 #define BM_ANADIG_PLL_528_NUM_A 0x3FFFFFFF 1068 #define BM_ANADIG_PLL_528_NUM_A 0x3FFFFFFF
1069 #define BF_ANADIG_PLL_528_NUM_A(v) \ 1069 #define BF_ANADIG_PLL_528_NUM_A(v) \
1070 (((v) << 0) & BM_ANADIG_PLL_528_NUM_A) 1070 (((v) << 0) & BM_ANADIG_PLL_528_NUM_A)
1071 1071
1072 #define BP_ANADIG_PLL_528_DENOM_RSVD0 30 1072 #define BP_ANADIG_PLL_528_DENOM_RSVD0 30
1073 #define BM_ANADIG_PLL_528_DENOM_RSVD0 0xC0000000 1073 #define BM_ANADIG_PLL_528_DENOM_RSVD0 0xC0000000
1074 #define BF_ANADIG_PLL_528_DENOM_RSVD0(v) \ 1074 #define BF_ANADIG_PLL_528_DENOM_RSVD0(v) \
1075 (((v) << 30) & BM_ANADIG_PLL_528_DENOM_RSVD0) 1075 (((v) << 30) & BM_ANADIG_PLL_528_DENOM_RSVD0)
1076 #define BP_ANADIG_PLL_528_DENOM_B 0 1076 #define BP_ANADIG_PLL_528_DENOM_B 0
1077 #define BM_ANADIG_PLL_528_DENOM_B 0x3FFFFFFF 1077 #define BM_ANADIG_PLL_528_DENOM_B 0x3FFFFFFF
1078 #define BF_ANADIG_PLL_528_DENOM_B(v) \ 1078 #define BF_ANADIG_PLL_528_DENOM_B(v) \
1079 (((v) << 0) & BM_ANADIG_PLL_528_DENOM_B) 1079 (((v) << 0) & BM_ANADIG_PLL_528_DENOM_B)
1080 1080
1081 #define BM_ANADIG_PLL_AUDIO_LOCK 0x80000000 1081 #define BM_ANADIG_PLL_AUDIO_LOCK 0x80000000
1082 #define BP_ANADIG_PLL_AUDIO_RSVD0 22 1082 #define BP_ANADIG_PLL_AUDIO_RSVD0 22
1083 #define BM_ANADIG_PLL_AUDIO_RSVD0 0x7FC00000 1083 #define BM_ANADIG_PLL_AUDIO_RSVD0 0x7FC00000
1084 #define BF_ANADIG_PLL_AUDIO_RSVD0(v) \ 1084 #define BF_ANADIG_PLL_AUDIO_RSVD0(v) \
1085 (((v) << 22) & BM_ANADIG_PLL_AUDIO_RSVD0) 1085 (((v) << 22) & BM_ANADIG_PLL_AUDIO_RSVD0)
1086 #define BM_ANADIG_PLL_AUDIO_SSC_EN 0x00200000 1086 #define BM_ANADIG_PLL_AUDIO_SSC_EN 0x00200000
1087 #define BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT 19 1087 #define BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT 19
1088 #define BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT 0x00180000 1088 #define BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT 0x00180000
1089 #define BF_ANADIG_PLL_AUDIO_TEST_DIV_SELECT(v) \ 1089 #define BF_ANADIG_PLL_AUDIO_TEST_DIV_SELECT(v) \
1090 (((v) << 19) & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT) 1090 (((v) << 19) & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT)
1091 #define BM_ANADIG_PLL_AUDIO_PFD_OFFSET_EN 0x00040000 1091 #define BM_ANADIG_PLL_AUDIO_PFD_OFFSET_EN 0x00040000
1092 #define BM_ANADIG_PLL_AUDIO_DITHER_ENABLE 0x00020000 1092 #define BM_ANADIG_PLL_AUDIO_DITHER_ENABLE 0x00020000
1093 #define BM_ANADIG_PLL_AUDIO_BYPASS 0x00010000 1093 #define BM_ANADIG_PLL_AUDIO_BYPASS 0x00010000
1094 #define BP_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC 14 1094 #define BP_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC 14
1095 #define BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC 0x0000C000 1095 #define BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC 0x0000C000
1096 #define BF_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC(v) \ 1096 #define BF_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC(v) \
1097 (((v) << 14) & BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC) 1097 (((v) << 14) & BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC)
1098 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__OSC_24M 0x0 1098 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__OSC_24M 0x0
1099 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_1 0x1 1099 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_1 0x1
1100 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_2 0x2 1100 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__ANACLK_2 0x2
1101 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__XOR 0x3 1101 #define BV_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC__XOR 0x3
1102 #define BM_ANADIG_PLL_AUDIO_ENABLE 0x00002000 1102 #define BM_ANADIG_PLL_AUDIO_ENABLE 0x00002000
1103 #define BM_ANADIG_PLL_AUDIO_POWERDOWN 0x00001000 1103 #define BM_ANADIG_PLL_AUDIO_POWERDOWN 0x00001000
1104 #define BM_ANADIG_PLL_AUDIO_HOLD_RING_OFF 0x00000800 1104 #define BM_ANADIG_PLL_AUDIO_HOLD_RING_OFF 0x00000800
1105 #define BM_ANADIG_PLL_AUDIO_DOUBLE_CP 0x00000400 1105 #define BM_ANADIG_PLL_AUDIO_DOUBLE_CP 0x00000400
1106 #define BM_ANADIG_PLL_AUDIO_HALF_CP 0x00000200 1106 #define BM_ANADIG_PLL_AUDIO_HALF_CP 0x00000200
1107 #define BM_ANADIG_PLL_AUDIO_DOUBLE_LF 0x00000100 1107 #define BM_ANADIG_PLL_AUDIO_DOUBLE_LF 0x00000100
1108 #define BM_ANADIG_PLL_AUDIO_HALF_LF 0x00000080 1108 #define BM_ANADIG_PLL_AUDIO_HALF_LF 0x00000080
1109 #define BP_ANADIG_PLL_AUDIO_DIV_SELECT 0 1109 #define BP_ANADIG_PLL_AUDIO_DIV_SELECT 0
1110 #define BM_ANADIG_PLL_AUDIO_DIV_SELECT 0x0000007F 1110 #define BM_ANADIG_PLL_AUDIO_DIV_SELECT 0x0000007F
1111 #define BF_ANADIG_PLL_AUDIO_DIV_SELECT(v) \ 1111 #define BF_ANADIG_PLL_AUDIO_DIV_SELECT(v) \
1112 (((v) << 0) & BM_ANADIG_PLL_AUDIO_DIV_SELECT) 1112 (((v) << 0) & BM_ANADIG_PLL_AUDIO_DIV_SELECT)
1113 1113
1114 #define BP_ANADIG_PLL_AUDIO_NUM_RSVD0 30 1114 #define BP_ANADIG_PLL_AUDIO_NUM_RSVD0 30
1115 #define BM_ANADIG_PLL_AUDIO_NUM_RSVD0 0xC0000000 1115 #define BM_ANADIG_PLL_AUDIO_NUM_RSVD0 0xC0000000
1116 #define BF_ANADIG_PLL_AUDIO_NUM_RSVD0(v) \ 1116 #define BF_ANADIG_PLL_AUDIO_NUM_RSVD0(v) \
1117 (((v) << 30) & BM_ANADIG_PLL_AUDIO_NUM_RSVD0) 1117 (((v) << 30) & BM_ANADIG_PLL_AUDIO_NUM_RSVD0)
1118 #define BP_ANADIG_PLL_AUDIO_NUM_A 0 1118 #define BP_ANADIG_PLL_AUDIO_NUM_A 0
1119 #define BM_ANADIG_PLL_AUDIO_NUM_A 0x3FFFFFFF 1119 #define BM_ANADIG_PLL_AUDIO_NUM_A 0x3FFFFFFF
1120 #define BF_ANADIG_PLL_AUDIO_NUM_A(v) \ 1120 #define BF_ANADIG_PLL_AUDIO_NUM_A(v) \
1121 (((v) << 0) & BM_ANADIG_PLL_AUDIO_NUM_A) 1121 (((v) << 0) & BM_ANADIG_PLL_AUDIO_NUM_A)
1122 1122
1123 #define BP_ANADIG_PLL_AUDIO_DENOM_RSVD0 30 1123 #define BP_ANADIG_PLL_AUDIO_DENOM_RSVD0 30
1124 #define BM_ANADIG_PLL_AUDIO_DENOM_RSVD0 0xC0000000 1124 #define BM_ANADIG_PLL_AUDIO_DENOM_RSVD0 0xC0000000
1125 #define BF_ANADIG_PLL_AUDIO_DENOM_RSVD0(v) \ 1125 #define BF_ANADIG_PLL_AUDIO_DENOM_RSVD0(v) \
1126 (((v) << 30) & BM_ANADIG_PLL_AUDIO_DENOM_RSVD0) 1126 (((v) << 30) & BM_ANADIG_PLL_AUDIO_DENOM_RSVD0)
1127 #define BP_ANADIG_PLL_AUDIO_DENOM_B 0 1127 #define BP_ANADIG_PLL_AUDIO_DENOM_B 0
1128 #define BM_ANADIG_PLL_AUDIO_DENOM_B 0x3FFFFFFF 1128 #define BM_ANADIG_PLL_AUDIO_DENOM_B 0x3FFFFFFF
1129 #define BF_ANADIG_PLL_AUDIO_DENOM_B(v) \ 1129 #define BF_ANADIG_PLL_AUDIO_DENOM_B(v) \
1130 (((v) << 0) & BM_ANADIG_PLL_AUDIO_DENOM_B) 1130 (((v) << 0) & BM_ANADIG_PLL_AUDIO_DENOM_B)
1131 1131
1132 #define BM_ANADIG_PLL_VIDEO_LOCK 0x80000000 1132 #define BM_ANADIG_PLL_VIDEO_LOCK 0x80000000
1133 #define BP_ANADIG_PLL_VIDEO_RSVD0 22 1133 #define BP_ANADIG_PLL_VIDEO_RSVD0 22
1134 #define BM_ANADIG_PLL_VIDEO_RSVD0 0x7FC00000 1134 #define BM_ANADIG_PLL_VIDEO_RSVD0 0x7FC00000
1135 #define BF_ANADIG_PLL_VIDEO_RSVD0(v) \ 1135 #define BF_ANADIG_PLL_VIDEO_RSVD0(v) \
1136 (((v) << 22) & BM_ANADIG_PLL_VIDEO_RSVD0) 1136 (((v) << 22) & BM_ANADIG_PLL_VIDEO_RSVD0)
1137 #define BM_ANADIG_PLL_VIDEO_SSC_EN 0x00200000 1137 #define BM_ANADIG_PLL_VIDEO_SSC_EN 0x00200000
1138 #define BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT 19 1138 #define BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT 19
1139 #define BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT 0x00180000 1139 #define BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT 0x00180000
1140 #define BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(v) \ 1140 #define BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(v) \
1141 (((v) << 19) & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT) 1141 (((v) << 19) & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT)
1142 #define BM_ANADIG_PLL_VIDEO_PFD_OFFSET_EN 0x00040000 1142 #define BM_ANADIG_PLL_VIDEO_PFD_OFFSET_EN 0x00040000
1143 #define BM_ANADIG_PLL_VIDEO_DITHER_ENABLE 0x00020000 1143 #define BM_ANADIG_PLL_VIDEO_DITHER_ENABLE 0x00020000
1144 #define BM_ANADIG_PLL_VIDEO_BYPASS 0x00010000 1144 #define BM_ANADIG_PLL_VIDEO_BYPASS 0x00010000
1145 #define BP_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC 14 1145 #define BP_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC 14
1146 #define BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC 0x0000C000 1146 #define BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC 0x0000C000
1147 #define BF_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC(v) \ 1147 #define BF_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC(v) \
1148 (((v) << 14) & BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC) 1148 (((v) << 14) & BM_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC)
1149 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__OSC_24M 0x0 1149 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__OSC_24M 0x0
1150 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_1 0x1 1150 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_1 0x1
1151 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_2 0x2 1151 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__ANACLK_2 0x2
1152 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__XOR 0x3 1152 #define BV_ANADIG_PLL_VIDEO_BYPASS_CLK_SRC__XOR 0x3
1153 #define BM_ANADIG_PLL_VIDEO_ENABLE 0x00002000 1153 #define BM_ANADIG_PLL_VIDEO_ENABLE 0x00002000
1154 #define BM_ANADIG_PLL_VIDEO_POWERDOWN 0x00001000 1154 #define BM_ANADIG_PLL_VIDEO_POWERDOWN 0x00001000
1155 #define BM_ANADIG_PLL_VIDEO_HOLD_RING_OFF 0x00000800 1155 #define BM_ANADIG_PLL_VIDEO_HOLD_RING_OFF 0x00000800
1156 #define BM_ANADIG_PLL_VIDEO_DOUBLE_CP 0x00000400 1156 #define BM_ANADIG_PLL_VIDEO_DOUBLE_CP 0x00000400
1157 #define BM_ANADIG_PLL_VIDEO_HALF_CP 0x00000200 1157 #define BM_ANADIG_PLL_VIDEO_HALF_CP 0x00000200
1158 #define BM_ANADIG_PLL_VIDEO_DOUBLE_LF 0x00000100 1158 #define BM_ANADIG_PLL_VIDEO_DOUBLE_LF 0x00000100
1159 #define BM_ANADIG_PLL_VIDEO_HALF_LF 0x00000080 1159 #define BM_ANADIG_PLL_VIDEO_HALF_LF 0x00000080
1160 #define BP_ANADIG_PLL_VIDEO_DIV_SELECT 0 1160 #define BP_ANADIG_PLL_VIDEO_DIV_SELECT 0
1161 #define BM_ANADIG_PLL_VIDEO_DIV_SELECT 0x0000007F 1161 #define BM_ANADIG_PLL_VIDEO_DIV_SELECT 0x0000007F
1162 #define BF_ANADIG_PLL_VIDEO_DIV_SELECT(v) \ 1162 #define BF_ANADIG_PLL_VIDEO_DIV_SELECT(v) \
1163 (((v) << 0) & BM_ANADIG_PLL_VIDEO_DIV_SELECT) 1163 (((v) << 0) & BM_ANADIG_PLL_VIDEO_DIV_SELECT)
1164 1164
1165 #define BP_ANADIG_PLL_VIDEO_NUM_RSVD0 30 1165 #define BP_ANADIG_PLL_VIDEO_NUM_RSVD0 30
1166 #define BM_ANADIG_PLL_VIDEO_NUM_RSVD0 0xC0000000 1166 #define BM_ANADIG_PLL_VIDEO_NUM_RSVD0 0xC0000000
1167 #define BF_ANADIG_PLL_VIDEO_NUM_RSVD0(v) \ 1167 #define BF_ANADIG_PLL_VIDEO_NUM_RSVD0(v) \
1168 (((v) << 30) & BM_ANADIG_PLL_VIDEO_NUM_RSVD0) 1168 (((v) << 30) & BM_ANADIG_PLL_VIDEO_NUM_RSVD0)
1169 #define BP_ANADIG_PLL_VIDEO_NUM_A 0 1169 #define BP_ANADIG_PLL_VIDEO_NUM_A 0
1170 #define BM_ANADIG_PLL_VIDEO_NUM_A 0x3FFFFFFF 1170 #define BM_ANADIG_PLL_VIDEO_NUM_A 0x3FFFFFFF
1171 #define BF_ANADIG_PLL_VIDEO_NUM_A(v) \ 1171 #define BF_ANADIG_PLL_VIDEO_NUM_A(v) \
1172 (((v) << 0) & BM_ANADIG_PLL_VIDEO_NUM_A) 1172 (((v) << 0) & BM_ANADIG_PLL_VIDEO_NUM_A)
1173 1173
1174 #define BP_ANADIG_PLL_VIDEO_DENOM_RSVD0 30 1174 #define BP_ANADIG_PLL_VIDEO_DENOM_RSVD0 30
1175 #define BM_ANADIG_PLL_VIDEO_DENOM_RSVD0 0xC0000000 1175 #define BM_ANADIG_PLL_VIDEO_DENOM_RSVD0 0xC0000000
1176 #define BF_ANADIG_PLL_VIDEO_DENOM_RSVD0(v) \ 1176 #define BF_ANADIG_PLL_VIDEO_DENOM_RSVD0(v) \
1177 (((v) << 30) & BM_ANADIG_PLL_VIDEO_DENOM_RSVD0) 1177 (((v) << 30) & BM_ANADIG_PLL_VIDEO_DENOM_RSVD0)
1178 #define BP_ANADIG_PLL_VIDEO_DENOM_B 0 1178 #define BP_ANADIG_PLL_VIDEO_DENOM_B 0
1179 #define BM_ANADIG_PLL_VIDEO_DENOM_B 0x3FFFFFFF 1179 #define BM_ANADIG_PLL_VIDEO_DENOM_B 0x3FFFFFFF
1180 #define BF_ANADIG_PLL_VIDEO_DENOM_B(v) \ 1180 #define BF_ANADIG_PLL_VIDEO_DENOM_B(v) \
1181 (((v) << 0) & BM_ANADIG_PLL_VIDEO_DENOM_B) 1181 (((v) << 0) & BM_ANADIG_PLL_VIDEO_DENOM_B)
1182 1182
1183 #define BM_ANADIG_PLL_ENET_LOCK 0x80000000 1183 #define BM_ANADIG_PLL_ENET_LOCK 0x80000000
1184 #define BP_ANADIG_PLL_ENET_RSVD1 21 1184 #define BP_ANADIG_PLL_ENET_RSVD1 21
1185 #define BM_ANADIG_PLL_ENET_RSVD1 0x7FE00000 1185 #define BM_ANADIG_PLL_ENET_RSVD1 0x7FE00000
1186 #define BF_ANADIG_PLL_ENET_RSVD1(v) \ 1186 #define BF_ANADIG_PLL_ENET_RSVD1(v) \
1187 (((v) << 21) & BM_ANADIG_PLL_ENET_RSVD1) 1187 (((v) << 21) & BM_ANADIG_PLL_ENET_RSVD1)
1188 #define BM_ANADIG_PLL_ENET_REF_25M_ENABLE 0x00200000 1188 #define BM_ANADIG_PLL_ENET_REF_25M_ENABLE 0x00200000
1189 #define BM_ANADIG_PLL_ENET_ENABLE_SATA 0x00100000 1189 #define BM_ANADIG_PLL_ENET_ENABLE_SATA 0x00100000
1190 #define BM_ANADIG_PLL_ENET_ENABLE_PCIE 0x00080000 1190 #define BM_ANADIG_PLL_ENET_ENABLE_PCIE 0x00080000
1191 #define BM_ANADIG_PLL_ENET_PFD_OFFSET_EN 0x00040000 1191 #define BM_ANADIG_PLL_ENET_PFD_OFFSET_EN 0x00040000
1192 #define BM_ANADIG_PLL_ENET_DITHER_ENABLE 0x00020000 1192 #define BM_ANADIG_PLL_ENET_DITHER_ENABLE 0x00020000
1193 #define BM_ANADIG_PLL_ENET_BYPASS 0x00010000 1193 #define BM_ANADIG_PLL_ENET_BYPASS 0x00010000
1194 #define BP_ANADIG_PLL_ENET_BYPASS_CLK_SRC 14 1194 #define BP_ANADIG_PLL_ENET_BYPASS_CLK_SRC 14
1195 #define BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC 0x0000C000 1195 #define BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC 0x0000C000
1196 #define BF_ANADIG_PLL_ENET_BYPASS_CLK_SRC(v) \ 1196 #define BF_ANADIG_PLL_ENET_BYPASS_CLK_SRC(v) \
1197 (((v) << 14) & BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC) 1197 (((v) << 14) & BM_ANADIG_PLL_ENET_BYPASS_CLK_SRC)
1198 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__OSC_24M 0x0 1198 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__OSC_24M 0x0
1199 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_1 0x1 1199 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_1 0x1
1200 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_2 0x2 1200 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__ANACLK_2 0x2
1201 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__XOR 0x3 1201 #define BV_ANADIG_PLL_ENET_BYPASS_CLK_SRC__XOR 0x3
1202 #define BM_ANADIG_PLL_ENET_ENABLE 0x00002000 1202 #define BM_ANADIG_PLL_ENET_ENABLE 0x00002000
1203 #define BM_ANADIG_PLL_ENET_POWERDOWN 0x00001000 1203 #define BM_ANADIG_PLL_ENET_POWERDOWN 0x00001000
1204 #define BM_ANADIG_PLL_ENET_HOLD_RING_OFF 0x00000800 1204 #define BM_ANADIG_PLL_ENET_HOLD_RING_OFF 0x00000800
1205 #define BM_ANADIG_PLL_ENET_DOUBLE_CP 0x00000400 1205 #define BM_ANADIG_PLL_ENET_DOUBLE_CP 0x00000400
1206 #define BM_ANADIG_PLL_ENET_HALF_CP 0x00000200 1206 #define BM_ANADIG_PLL_ENET_HALF_CP 0x00000200
1207 #define BM_ANADIG_PLL_ENET_DOUBLE_LF 0x00000100 1207 #define BM_ANADIG_PLL_ENET_DOUBLE_LF 0x00000100
1208 #define BM_ANADIG_PLL_ENET_HALF_LF 0x00000080 1208 #define BM_ANADIG_PLL_ENET_HALF_LF 0x00000080
1209 #define BP_ANADIG_PLL_ENET_RSVD0 2 1209 #define BP_ANADIG_PLL_ENET_RSVD0 2
1210 #define BM_ANADIG_PLL_ENET_RSVD0 0x0000007C 1210 #define BM_ANADIG_PLL_ENET_RSVD0 0x0000007C
1211 #define BF_ANADIG_PLL_ENET_RSVD0(v) \ 1211 #define BF_ANADIG_PLL_ENET_RSVD0(v) \
1212 (((v) << 2) & BM_ANADIG_PLL_ENET_RSVD0) 1212 (((v) << 2) & BM_ANADIG_PLL_ENET_RSVD0)
1213 #define BP_ANADIG_PLL_ENET_DIV_SELECT 0 1213 #define BP_ANADIG_PLL_ENET_DIV_SELECT 0
1214 #define BM_ANADIG_PLL_ENET_DIV_SELECT 0x00000003 1214 #define BM_ANADIG_PLL_ENET_DIV_SELECT 0x00000003
1215 #define BF_ANADIG_PLL_ENET_DIV_SELECT(v) \ 1215 #define BF_ANADIG_PLL_ENET_DIV_SELECT(v) \
1216 (((v) << 0) & BM_ANADIG_PLL_ENET_DIV_SELECT) 1216 (((v) << 0) & BM_ANADIG_PLL_ENET_DIV_SELECT)
1217 1217
1218 /* ENET2 for i.MX6SX/UL */ 1218 /* ENET2 for i.MX6SX/UL */
1219 #define BM_ANADIG_PLL_ENET2_ENABLE 0x00100000 1219 #define BM_ANADIG_PLL_ENET2_ENABLE 0x00100000
1220 #define BM_ANADIG_PLL_ENET2_DIV_SELECT 0x0000000C 1220 #define BM_ANADIG_PLL_ENET2_DIV_SELECT 0x0000000C
1221 #define BF_ANADIG_PLL_ENET2_DIV_SELECT(v) \ 1221 #define BF_ANADIG_PLL_ENET2_DIV_SELECT(v) \
1222 (((v) << 2) & BM_ANADIG_PLL_ENET2_DIV_SELECT) 1222 (((v) << 2) & BM_ANADIG_PLL_ENET2_DIV_SELECT)
1223 1223
1224 #define BM_ANADIG_PFD_480_PFD3_CLKGATE 0x80000000 1224 #define BM_ANADIG_PFD_480_PFD3_CLKGATE 0x80000000
1225 #define BM_ANADIG_PFD_480_PFD3_STABLE 0x40000000 1225 #define BM_ANADIG_PFD_480_PFD3_STABLE 0x40000000
1226 #define BP_ANADIG_PFD_480_PFD3_FRAC 24 1226 #define BP_ANADIG_PFD_480_PFD3_FRAC 24
1227 #define BM_ANADIG_PFD_480_PFD3_FRAC 0x3F000000 1227 #define BM_ANADIG_PFD_480_PFD3_FRAC 0x3F000000
1228 #define BF_ANADIG_PFD_480_PFD3_FRAC(v) \ 1228 #define BF_ANADIG_PFD_480_PFD3_FRAC(v) \
1229 (((v) << 24) & BM_ANADIG_PFD_480_PFD3_FRAC) 1229 (((v) << 24) & BM_ANADIG_PFD_480_PFD3_FRAC)
1230 #define BM_ANADIG_PFD_480_PFD2_CLKGATE 0x00800000 1230 #define BM_ANADIG_PFD_480_PFD2_CLKGATE 0x00800000
1231 #define BM_ANADIG_PFD_480_PFD2_STABLE 0x00400000 1231 #define BM_ANADIG_PFD_480_PFD2_STABLE 0x00400000
1232 #define BP_ANADIG_PFD_480_PFD2_FRAC 16 1232 #define BP_ANADIG_PFD_480_PFD2_FRAC 16
1233 #define BM_ANADIG_PFD_480_PFD2_FRAC 0x003F0000 1233 #define BM_ANADIG_PFD_480_PFD2_FRAC 0x003F0000
1234 #define BF_ANADIG_PFD_480_PFD2_FRAC(v) \ 1234 #define BF_ANADIG_PFD_480_PFD2_FRAC(v) \
1235 (((v) << 16) & BM_ANADIG_PFD_480_PFD2_FRAC) 1235 (((v) << 16) & BM_ANADIG_PFD_480_PFD2_FRAC)
1236 #define BM_ANADIG_PFD_480_PFD1_CLKGATE 0x00008000 1236 #define BM_ANADIG_PFD_480_PFD1_CLKGATE 0x00008000
1237 #define BM_ANADIG_PFD_480_PFD1_STABLE 0x00004000 1237 #define BM_ANADIG_PFD_480_PFD1_STABLE 0x00004000
1238 #define BP_ANADIG_PFD_480_PFD1_FRAC 8 1238 #define BP_ANADIG_PFD_480_PFD1_FRAC 8
1239 #define BM_ANADIG_PFD_480_PFD1_FRAC 0x00003F00 1239 #define BM_ANADIG_PFD_480_PFD1_FRAC 0x00003F00
1240 #define BF_ANADIG_PFD_480_PFD1_FRAC(v) \ 1240 #define BF_ANADIG_PFD_480_PFD1_FRAC(v) \
1241 (((v) << 8) & BM_ANADIG_PFD_480_PFD1_FRAC) 1241 (((v) << 8) & BM_ANADIG_PFD_480_PFD1_FRAC)
1242 #define BM_ANADIG_PFD_480_PFD0_CLKGATE 0x00000080 1242 #define BM_ANADIG_PFD_480_PFD0_CLKGATE 0x00000080
1243 #define BM_ANADIG_PFD_480_PFD0_STABLE 0x00000040 1243 #define BM_ANADIG_PFD_480_PFD0_STABLE 0x00000040
1244 #define BP_ANADIG_PFD_480_PFD0_FRAC 0 1244 #define BP_ANADIG_PFD_480_PFD0_FRAC 0
1245 #define BM_ANADIG_PFD_480_PFD0_FRAC 0x0000003F 1245 #define BM_ANADIG_PFD_480_PFD0_FRAC 0x0000003F
1246 #define BF_ANADIG_PFD_480_PFD0_FRAC(v) \ 1246 #define BF_ANADIG_PFD_480_PFD0_FRAC(v) \
1247 (((v) << 0) & BM_ANADIG_PFD_480_PFD0_FRAC) 1247 (((v) << 0) & BM_ANADIG_PFD_480_PFD0_FRAC)
1248 1248
1249 #define BM_ANADIG_PFD_528_PFD3_CLKGATE 0x80000000 1249 #define BM_ANADIG_PFD_528_PFD3_CLKGATE 0x80000000
1250 #define BM_ANADIG_PFD_528_PFD3_STABLE 0x40000000 1250 #define BM_ANADIG_PFD_528_PFD3_STABLE 0x40000000
1251 #define BP_ANADIG_PFD_528_PFD3_FRAC 24 1251 #define BP_ANADIG_PFD_528_PFD3_FRAC 24
1252 #define BM_ANADIG_PFD_528_PFD3_FRAC 0x3F000000 1252 #define BM_ANADIG_PFD_528_PFD3_FRAC 0x3F000000
1253 #define BF_ANADIG_PFD_528_PFD3_FRAC(v) \ 1253 #define BF_ANADIG_PFD_528_PFD3_FRAC(v) \
1254 (((v) << 24) & BM_ANADIG_PFD_528_PFD3_FRAC) 1254 (((v) << 24) & BM_ANADIG_PFD_528_PFD3_FRAC)
1255 #define BM_ANADIG_PFD_528_PFD2_CLKGATE 0x00800000 1255 #define BM_ANADIG_PFD_528_PFD2_CLKGATE 0x00800000
1256 #define BM_ANADIG_PFD_528_PFD2_STABLE 0x00400000 1256 #define BM_ANADIG_PFD_528_PFD2_STABLE 0x00400000
1257 #define BP_ANADIG_PFD_528_PFD2_FRAC 16 1257 #define BP_ANADIG_PFD_528_PFD2_FRAC 16
1258 #define BM_ANADIG_PFD_528_PFD2_FRAC 0x003F0000 1258 #define BM_ANADIG_PFD_528_PFD2_FRAC 0x003F0000
1259 #define BF_ANADIG_PFD_528_PFD2_FRAC(v) \ 1259 #define BF_ANADIG_PFD_528_PFD2_FRAC(v) \
1260 (((v) << 16) & BM_ANADIG_PFD_528_PFD2_FRAC) 1260 (((v) << 16) & BM_ANADIG_PFD_528_PFD2_FRAC)
1261 #define BM_ANADIG_PFD_528_PFD1_CLKGATE 0x00008000 1261 #define BM_ANADIG_PFD_528_PFD1_CLKGATE 0x00008000
1262 #define BM_ANADIG_PFD_528_PFD1_STABLE 0x00004000 1262 #define BM_ANADIG_PFD_528_PFD1_STABLE 0x00004000
1263 #define BP_ANADIG_PFD_528_PFD1_FRAC 8 1263 #define BP_ANADIG_PFD_528_PFD1_FRAC 8
1264 #define BM_ANADIG_PFD_528_PFD1_FRAC 0x00003F00 1264 #define BM_ANADIG_PFD_528_PFD1_FRAC 0x00003F00
1265 #define BF_ANADIG_PFD_528_PFD1_FRAC(v) \ 1265 #define BF_ANADIG_PFD_528_PFD1_FRAC(v) \
1266 (((v) << 8) & BM_ANADIG_PFD_528_PFD1_FRAC) 1266 (((v) << 8) & BM_ANADIG_PFD_528_PFD1_FRAC)
1267 #define BM_ANADIG_PFD_528_PFD0_CLKGATE 0x00000080 1267 #define BM_ANADIG_PFD_528_PFD0_CLKGATE 0x00000080
1268 #define BM_ANADIG_PFD_528_PFD0_STABLE 0x00000040 1268 #define BM_ANADIG_PFD_528_PFD0_STABLE 0x00000040
1269 #define BP_ANADIG_PFD_528_PFD0_FRAC 0 1269 #define BP_ANADIG_PFD_528_PFD0_FRAC 0
1270 #define BM_ANADIG_PFD_528_PFD0_FRAC 0x0000003F 1270 #define BM_ANADIG_PFD_528_PFD0_FRAC 0x0000003F
1271 #define BF_ANADIG_PFD_528_PFD0_FRAC(v) \ 1271 #define BF_ANADIG_PFD_528_PFD0_FRAC(v) \
1272 (((v) << 0) & BM_ANADIG_PFD_528_PFD0_FRAC) 1272 (((v) << 0) & BM_ANADIG_PFD_528_PFD0_FRAC)
1273 1273
1274 #define BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF 0x00000008 1274 #define BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF 0x00000008
1275 1275
1276 #define BM_PMU_MISC2_AUDIO_DIV_MSB (1 << 23) 1276 #define BM_PMU_MISC2_AUDIO_DIV_MSB (1 << 23)
1277 #define BP_PMU_MISC2_AUDIO_DIV_MSB 23 1277 #define BP_PMU_MISC2_AUDIO_DIV_MSB 23
1278 1278
1279 #define BM_PMU_MISC2_AUDIO_DIV_LSB (1 << 15) 1279 #define BM_PMU_MISC2_AUDIO_DIV_LSB (1 << 15)
1280 #define BP_PMU_MISC2_AUDIO_DIV_LSB 15 1280 #define BP_PMU_MISC2_AUDIO_DIV_LSB 15
1281 1281
1282 #define PMU_MISC2_AUDIO_DIV(v) \ 1282 #define PMU_MISC2_AUDIO_DIV(v) \
1283 (((v & BM_PMU_MISC2_AUDIO_DIV_MSB) >> \ 1283 (((v & BM_PMU_MISC2_AUDIO_DIV_MSB) >> \
1284 (BP_PMU_MISC2_AUDIO_DIV_MSB - 1)) | \ 1284 (BP_PMU_MISC2_AUDIO_DIV_MSB - 1)) | \
1285 ((v & BM_PMU_MISC2_AUDIO_DIV_LSB) >> \ 1285 ((v & BM_PMU_MISC2_AUDIO_DIV_LSB) >> \
1286 BP_PMU_MISC2_AUDIO_DIV_LSB)) 1286 BP_PMU_MISC2_AUDIO_DIV_LSB))
1287 1287
1288 #endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */ 1288 #endif /*__ARCH_ARM_MACH_MX6_CCM_REGS_H__ */
1289 1289
arch/arm/include/asm/arch-mx6/imx-regs.h
1 /* 1 /*
2 * Copyright (C) 2011-2016 Freescale Semiconductor, Inc. All Rights Reserved. 2 * Copyright (C) 2011-2016 Freescale Semiconductor, Inc. All Rights Reserved.
3 * 3 *
4 * SPDX-License-Identifier: GPL-2.0+ 4 * SPDX-License-Identifier: GPL-2.0+
5 */ 5 */
6 6
7 #ifndef __ASM_ARCH_MX6_IMX_REGS_H__ 7 #ifndef __ASM_ARCH_MX6_IMX_REGS_H__
8 #define __ASM_ARCH_MX6_IMX_REGS_H__ 8 #define __ASM_ARCH_MX6_IMX_REGS_H__
9 9
10 #define ARCH_MXC 10 #define ARCH_MXC
11 11
12 #ifdef CONFIG_MX6UL 12 #ifdef CONFIG_MX6UL
13 #define CONFIG_SYS_CACHELINE_SIZE 64 13 #define CONFIG_SYS_CACHELINE_SIZE 64
14 #else 14 #else
15 #define CONFIG_SYS_CACHELINE_SIZE 32 15 #define CONFIG_SYS_CACHELINE_SIZE 32
16 #endif 16 #endif
17 17
18 #define ROMCP_ARB_BASE_ADDR 0x00000000 18 #define ROMCP_ARB_BASE_ADDR 0x00000000
19 #define ROMCP_ARB_END_ADDR 0x000FFFFF 19 #define ROMCP_ARB_END_ADDR 0x000FFFFF
20 20
21 #ifdef CONFIG_MX6SL 21 #ifdef CONFIG_MX6SL
22 #define GPU_2D_ARB_BASE_ADDR 0x02200000 22 #define GPU_2D_ARB_BASE_ADDR 0x02200000
23 #define GPU_2D_ARB_END_ADDR 0x02203FFF 23 #define GPU_2D_ARB_END_ADDR 0x02203FFF
24 #define OPENVG_ARB_BASE_ADDR 0x02204000 24 #define OPENVG_ARB_BASE_ADDR 0x02204000
25 #define OPENVG_ARB_END_ADDR 0x02207FFF 25 #define OPENVG_ARB_END_ADDR 0x02207FFF
26 #elif (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 26 #elif (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
27 #define CAAM_ARB_BASE_ADDR 0x00100000 27 #define CAAM_ARB_BASE_ADDR 0x00100000
28 #define CAAM_ARB_END_ADDR 0x00107FFF 28 #define CAAM_ARB_END_ADDR 0x00107FFF
29 #define GPU_ARB_BASE_ADDR 0x01800000 29 #define GPU_ARB_BASE_ADDR 0x01800000
30 #define GPU_ARB_END_ADDR 0x01803FFF 30 #define GPU_ARB_END_ADDR 0x01803FFF
31 #define APBH_DMA_ARB_BASE_ADDR 0x01804000 31 #define APBH_DMA_ARB_BASE_ADDR 0x01804000
32 #define APBH_DMA_ARB_END_ADDR 0x0180BFFF 32 #define APBH_DMA_ARB_END_ADDR 0x0180BFFF
33 #define M4_BOOTROM_BASE_ADDR 0x007F8000 33 #define M4_BOOTROM_BASE_ADDR 0x007F8000
34 34
35 #else 35 #else
36 #define CAAM_ARB_BASE_ADDR 0x00100000 36 #define CAAM_ARB_BASE_ADDR 0x00100000
37 #define CAAM_ARB_END_ADDR 0x00103FFF 37 #define CAAM_ARB_END_ADDR 0x00103FFF
38 #define APBH_DMA_ARB_BASE_ADDR 0x00110000 38 #define APBH_DMA_ARB_BASE_ADDR 0x00110000
39 #define APBH_DMA_ARB_END_ADDR 0x00117FFF 39 #define APBH_DMA_ARB_END_ADDR 0x00117FFF
40 #define HDMI_ARB_BASE_ADDR 0x00120000 40 #define HDMI_ARB_BASE_ADDR 0x00120000
41 #define HDMI_ARB_END_ADDR 0x00128FFF 41 #define HDMI_ARB_END_ADDR 0x00128FFF
42 #define GPU_3D_ARB_BASE_ADDR 0x00130000 42 #define GPU_3D_ARB_BASE_ADDR 0x00130000
43 #define GPU_3D_ARB_END_ADDR 0x00133FFF 43 #define GPU_3D_ARB_END_ADDR 0x00133FFF
44 #define GPU_2D_ARB_BASE_ADDR 0x00134000 44 #define GPU_2D_ARB_BASE_ADDR 0x00134000
45 #define GPU_2D_ARB_END_ADDR 0x00137FFF 45 #define GPU_2D_ARB_END_ADDR 0x00137FFF
46 #define DTCP_ARB_BASE_ADDR 0x00138000 46 #define DTCP_ARB_BASE_ADDR 0x00138000
47 #define DTCP_ARB_END_ADDR 0x0013BFFF 47 #define DTCP_ARB_END_ADDR 0x0013BFFF
48 #endif /* CONFIG_MX6SL */ 48 #endif /* CONFIG_MX6SL */
49 49
50 #define MXS_APBH_BASE APBH_DMA_ARB_BASE_ADDR 50 #define MXS_APBH_BASE APBH_DMA_ARB_BASE_ADDR
51 #define MXS_GPMI_BASE (APBH_DMA_ARB_BASE_ADDR + 0x02000) 51 #define MXS_GPMI_BASE (APBH_DMA_ARB_BASE_ADDR + 0x02000)
52 #define MXS_BCH_BASE (APBH_DMA_ARB_BASE_ADDR + 0x04000) 52 #define MXS_BCH_BASE (APBH_DMA_ARB_BASE_ADDR + 0x04000)
53 53
54 /* GPV - PL301 configuration ports */ 54 /* GPV - PL301 configuration ports */
55 #if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 55 #if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
56 #define GPV2_BASE_ADDR 0x00D00000 56 #define GPV2_BASE_ADDR 0x00D00000
57 #else 57 #else
58 #define GPV2_BASE_ADDR 0x00200000 58 #define GPV2_BASE_ADDR 0x00200000
59 #endif 59 #endif
60 60
61 #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 61 #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
62 #define GPV3_BASE_ADDR 0x00E00000 62 #define GPV3_BASE_ADDR 0x00E00000
63 #define GPV4_BASE_ADDR 0x00F00000 63 #define GPV4_BASE_ADDR 0x00F00000
64 #define GPV5_BASE_ADDR 0x01000000 64 #define GPV5_BASE_ADDR 0x01000000
65 #define GPV6_BASE_ADDR 0x01100000 65 #define GPV6_BASE_ADDR 0x01100000
66 #define PCIE_ARB_BASE_ADDR 0x08000000 66 #define PCIE_ARB_BASE_ADDR 0x08000000
67 #define PCIE_ARB_END_ADDR 0x08FFFFFF 67 #define PCIE_ARB_END_ADDR 0x08FFFFFF
68 68
69 #else 69 #else
70 #define GPV3_BASE_ADDR 0x00300000 70 #define GPV3_BASE_ADDR 0x00300000
71 #define GPV4_BASE_ADDR 0x00800000 71 #define GPV4_BASE_ADDR 0x00800000
72 #define PCIE_ARB_BASE_ADDR 0x01000000 72 #define PCIE_ARB_BASE_ADDR 0x01000000
73 #define PCIE_ARB_END_ADDR 0x01FFFFFF 73 #define PCIE_ARB_END_ADDR 0x01FFFFFF
74 #endif 74 #endif
75 75
76 #define IRAM_BASE_ADDR 0x00900000 76 #define IRAM_BASE_ADDR 0x00900000
77 #define SCU_BASE_ADDR 0x00A00000 77 #define SCU_BASE_ADDR 0x00A00000
78 #define IC_INTERFACES_BASE_ADDR 0x00A00100 78 #define IC_INTERFACES_BASE_ADDR 0x00A00100
79 #define GLOBAL_TIMER_BASE_ADDR 0x00A00200 79 #define GLOBAL_TIMER_BASE_ADDR 0x00A00200
80 #define PRIVATE_TIMERS_WD_BASE_ADDR 0x00A00600 80 #define PRIVATE_TIMERS_WD_BASE_ADDR 0x00A00600
81 #define IC_DISTRIBUTOR_BASE_ADDR 0x00A01000 81 #define IC_DISTRIBUTOR_BASE_ADDR 0x00A01000
82 #define L2_PL310_BASE 0x00A02000 82 #define L2_PL310_BASE 0x00A02000
83 #define GPV0_BASE_ADDR 0x00B00000 83 #define GPV0_BASE_ADDR 0x00B00000
84 #define GPV1_BASE_ADDR 0x00C00000 84 #define GPV1_BASE_ADDR 0x00C00000
85 85
86 #define AIPS1_ARB_BASE_ADDR 0x02000000 86 #define AIPS1_ARB_BASE_ADDR 0x02000000
87 #define AIPS1_ARB_END_ADDR 0x020FFFFF 87 #define AIPS1_ARB_END_ADDR 0x020FFFFF
88 #define AIPS2_ARB_BASE_ADDR 0x02100000 88 #define AIPS2_ARB_BASE_ADDR 0x02100000
89 #define AIPS2_ARB_END_ADDR 0x021FFFFF 89 #define AIPS2_ARB_END_ADDR 0x021FFFFF
90 /* AIPS3 only on i.MX6SX */ 90 /* AIPS3 only on i.MX6SX */
91 #define AIPS3_ARB_BASE_ADDR 0x02200000 91 #define AIPS3_ARB_BASE_ADDR 0x02200000
92 #define AIPS3_ARB_END_ADDR 0x022FFFFF 92 #define AIPS3_ARB_END_ADDR 0x022FFFFF
93 #ifdef CONFIG_MX6SX 93 #ifdef CONFIG_MX6SX
94 #define WEIM_ARB_BASE_ADDR 0x50000000 94 #define WEIM_ARB_BASE_ADDR 0x50000000
95 #define WEIM_ARB_END_ADDR 0x57FFFFFF 95 #define WEIM_ARB_END_ADDR 0x57FFFFFF
96 #define QSPI0_AMBA_BASE 0x60000000 96 #define QSPI0_AMBA_BASE 0x60000000
97 #define QSPI0_AMBA_END 0x6FFFFFFF 97 #define QSPI0_AMBA_END 0x6FFFFFFF
98 #define QSPI1_AMBA_BASE 0x70000000 98 #define QSPI1_AMBA_BASE 0x70000000
99 #define QSPI1_AMBA_END 0x7FFFFFFF 99 #define QSPI1_AMBA_END 0x7FFFFFFF
100 #elif defined(CONFIG_MX6UL) 100 #elif defined(CONFIG_MX6UL)
101 #define WEIM_ARB_BASE_ADDR 0x50000000 101 #define WEIM_ARB_BASE_ADDR 0x50000000
102 #define WEIM_ARB_END_ADDR 0x57FFFFFF 102 #define WEIM_ARB_END_ADDR 0x57FFFFFF
103 #define QSPI0_AMBA_BASE 0x60000000 103 #define QSPI0_AMBA_BASE 0x60000000
104 #define QSPI0_AMBA_END 0x6FFFFFFF 104 #define QSPI0_AMBA_END 0x6FFFFFFF
105 #else 105 #else
106 #define SATA_ARB_BASE_ADDR 0x02200000 106 #define SATA_ARB_BASE_ADDR 0x02200000
107 #define SATA_ARB_END_ADDR 0x02203FFF 107 #define SATA_ARB_END_ADDR 0x02203FFF
108 #define OPENVG_ARB_BASE_ADDR 0x02204000 108 #define OPENVG_ARB_BASE_ADDR 0x02204000
109 #define OPENVG_ARB_END_ADDR 0x02207FFF 109 #define OPENVG_ARB_END_ADDR 0x02207FFF
110 #define HSI_ARB_BASE_ADDR 0x02208000 110 #define HSI_ARB_BASE_ADDR 0x02208000
111 #define HSI_ARB_END_ADDR 0x0220BFFF 111 #define HSI_ARB_END_ADDR 0x0220BFFF
112 #define IPU1_ARB_BASE_ADDR 0x02400000 112 #define IPU1_ARB_BASE_ADDR 0x02400000
113 #define IPU1_ARB_END_ADDR 0x027FFFFF 113 #define IPU1_ARB_END_ADDR 0x027FFFFF
114 #define IPU2_ARB_BASE_ADDR 0x02800000 114 #define IPU2_ARB_BASE_ADDR 0x02800000
115 #define IPU2_ARB_END_ADDR 0x02BFFFFF 115 #define IPU2_ARB_END_ADDR 0x02BFFFFF
116 #define WEIM_ARB_BASE_ADDR 0x08000000 116 #define WEIM_ARB_BASE_ADDR 0x08000000
117 #define WEIM_ARB_END_ADDR 0x0FFFFFFF 117 #define WEIM_ARB_END_ADDR 0x0FFFFFFF
118 #endif 118 #endif
119 119
120 #if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 120 #if (defined(CONFIG_MX6SL) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
121 #define MMDC0_ARB_BASE_ADDR 0x80000000 121 #define MMDC0_ARB_BASE_ADDR 0x80000000
122 #define MMDC0_ARB_END_ADDR 0xFFFFFFFF 122 #define MMDC0_ARB_END_ADDR 0xFFFFFFFF
123 #define MMDC1_ARB_BASE_ADDR 0xC0000000 123 #define MMDC1_ARB_BASE_ADDR 0xC0000000
124 #define MMDC1_ARB_END_ADDR 0xFFFFFFFF 124 #define MMDC1_ARB_END_ADDR 0xFFFFFFFF
125 #else 125 #else
126 #define MMDC0_ARB_BASE_ADDR 0x10000000 126 #define MMDC0_ARB_BASE_ADDR 0x10000000
127 #define MMDC0_ARB_END_ADDR 0x7FFFFFFF 127 #define MMDC0_ARB_END_ADDR 0x7FFFFFFF
128 #define MMDC1_ARB_BASE_ADDR 0x80000000 128 #define MMDC1_ARB_BASE_ADDR 0x80000000
129 #define MMDC1_ARB_END_ADDR 0xFFFFFFFF 129 #define MMDC1_ARB_END_ADDR 0xFFFFFFFF
130 #endif 130 #endif
131 131
132 #define QSPI1_ARB_BASE_ADDR 0x60000000 132 #define QSPI1_ARB_BASE_ADDR 0x60000000
133 #define QSPI1_ARB_END_ADDR 0x6FFFFFFF 133 #define QSPI1_ARB_END_ADDR 0x6FFFFFFF
134 #define QSPI2_ARB_BASE_ADDR 0x70000000 134 #define QSPI2_ARB_BASE_ADDR 0x70000000
135 #define QSPI2_ARB_END_ADDR 0x7FFFFFFF 135 #define QSPI2_ARB_END_ADDR 0x7FFFFFFF
136 136
137 #if (!(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))) 137 #if (!(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)))
138 #define IPU_SOC_BASE_ADDR IPU1_ARB_BASE_ADDR 138 #define IPU_SOC_BASE_ADDR IPU1_ARB_BASE_ADDR
139 #define IPU_SOC_OFFSET 0x00200000 139 #define IPU_SOC_OFFSET 0x00200000
140 #endif 140 #endif
141 141
142 /* Defines for Blocks connected via AIPS (SkyBlue) */ 142 /* Defines for Blocks connected via AIPS (SkyBlue) */
143 #define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR 143 #define ATZ1_BASE_ADDR AIPS1_ARB_BASE_ADDR
144 #define ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR 144 #define ATZ2_BASE_ADDR AIPS2_ARB_BASE_ADDR
145 #define ATZ3_BASE_ADDR AIPS3_ARB_BASE_ADDR 145 #define ATZ3_BASE_ADDR AIPS3_ARB_BASE_ADDR
146 #define AIPS1_BASE_ADDR AIPS1_ON_BASE_ADDR 146 #define AIPS1_BASE_ADDR AIPS1_ON_BASE_ADDR
147 #define AIPS2_BASE_ADDR AIPS2_ON_BASE_ADDR 147 #define AIPS2_BASE_ADDR AIPS2_ON_BASE_ADDR
148 #define AIPS3_BASE_ADDR AIPS3_ON_BASE_ADDR 148 #define AIPS3_BASE_ADDR AIPS3_ON_BASE_ADDR
149 149
150 #define SPDIF_BASE_ADDR (ATZ1_BASE_ADDR + 0x04000) 150 #define SPDIF_BASE_ADDR (ATZ1_BASE_ADDR + 0x04000)
151 #define ECSPI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x08000) 151 #define ECSPI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x08000)
152 #define ECSPI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x0C000) 152 #define ECSPI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x0C000)
153 #define ECSPI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x10000) 153 #define ECSPI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x10000)
154 #define ECSPI4_BASE_ADDR (ATZ1_BASE_ADDR + 0x14000) 154 #define ECSPI4_BASE_ADDR (ATZ1_BASE_ADDR + 0x14000)
155 #ifdef CONFIG_MX6SL 155 #ifdef CONFIG_MX6SL
156 #define UART5_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 156 #define UART5_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000)
157 #define UART1_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x20000) 157 #define UART1_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x20000)
158 #define UART2_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 158 #define UART2_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000)
159 #define SSI1_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000) 159 #define SSI1_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000)
160 #define SSI2_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000) 160 #define SSI2_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000)
161 #define SSI3_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000) 161 #define SSI3_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000)
162 #define UART3_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 162 #define UART3_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000)
163 #define UART4_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x38000) 163 #define UART4_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x38000)
164 #else 164 #else
165 165
166 #if defined(CONFIG_MX6UL) 166 #if defined(CONFIG_MX6UL)
167 #define UART7_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 167 #define UART7_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000)
168 #elif !defined(CONFIG_MX6SX) 168 #elif !defined(CONFIG_MX6SX)
169 #define ECSPI5_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000) 169 #define ECSPI5_BASE_ADDR (ATZ1_BASE_ADDR + 0x18000)
170 #endif 170 #endif
171 #define UART1_BASE (ATZ1_BASE_ADDR + 0x20000) 171 #define UART1_BASE (ATZ1_BASE_ADDR + 0x20000)
172 #if defined(CONFIG_MX6UL) 172 #if defined(CONFIG_MX6UL)
173 #if defined(CONFIG_MX6ULL) 173 #if defined(CONFIG_MX6ULL)
174 #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 174 #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000)
175 #else 175 #else
176 #define UART8_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 176 #define UART8_IPS_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000)
177 #endif 177 #endif
178 #define SAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000) 178 #define SAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000)
179 #define SAI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000) 179 #define SAI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000)
180 #define SAI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000) 180 #define SAI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000)
181 #else 181 #else
182 #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000) 182 #define ESAI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x24000)
183 #define SSI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000) 183 #define SSI1_BASE_ADDR (ATZ1_BASE_ADDR + 0x28000)
184 #define SSI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000) 184 #define SSI2_BASE_ADDR (ATZ1_BASE_ADDR + 0x2C000)
185 #define SSI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000) 185 #define SSI3_BASE_ADDR (ATZ1_BASE_ADDR + 0x30000)
186 #endif 186 #endif
187 #define ASRC_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000) 187 #define ASRC_BASE_ADDR (ATZ1_BASE_ADDR + 0x34000)
188 #endif 188 #endif
189 189
190 #if defined(CONFIG_MX6UL) 190 #if defined(CONFIG_MX6UL)
191 #define TOUCH_CTRL_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000) 191 #define TOUCH_CTRL_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000)
192 #define BEE_BASE_ADDR (ATZ1_BASE_ADDR + 0x44000) 192 #define BEE_BASE_ADDR (ATZ1_BASE_ADDR + 0x44000)
193 #elif !defined(CONFIG_MX6SX) 193 #elif !defined(CONFIG_MX6SX)
194 #define SPBA_BASE_ADDR (ATZ1_BASE_ADDR + 0x3C000) 194 #define SPBA_BASE_ADDR (ATZ1_BASE_ADDR + 0x3C000)
195 #define VPU_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000) 195 #define VPU_BASE_ADDR (ATZ1_BASE_ADDR + 0x40000)
196 #endif 196 #endif
197 #define AIPS1_ON_BASE_ADDR (ATZ1_BASE_ADDR + 0x7C000) 197 #define AIPS1_ON_BASE_ADDR (ATZ1_BASE_ADDR + 0x7C000)
198 198
199 #define AIPS1_OFF_BASE_ADDR (ATZ1_BASE_ADDR + 0x80000) 199 #define AIPS1_OFF_BASE_ADDR (ATZ1_BASE_ADDR + 0x80000)
200 #define PWM1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x0000) 200 #define PWM1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x0000)
201 #define PWM2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4000) 201 #define PWM2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4000)
202 #define PWM3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x8000) 202 #define PWM3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x8000)
203 #define PWM4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0xC000) 203 #define PWM4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0xC000)
204 #define CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000) 204 #define CAN1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x10000)
205 #define CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000) 205 #define CAN2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x14000)
206 #define GPT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x18000) 206 #define GPT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x18000)
207 #define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000) 207 #define GPIO1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x1C000)
208 #define GPIO2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x20000) 208 #define GPIO2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x20000)
209 #define GPIO3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x24000) 209 #define GPIO3_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x24000)
210 #define GPIO4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x28000) 210 #define GPIO4_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x28000)
211 #define GPIO5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x2C000) 211 #define GPIO5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x2C000)
212 #define MX6UL_SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 212 #define MX6UL_SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000)
213 #if defined(CONFIG_MX6UL) 213 #if defined(CONFIG_MX6UL)
214 #define SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 214 #define SNVS_LP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000)
215 #define ENET2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 215 #define ENET2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
216 #else 216 #else
217 #define GPIO6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000) 217 #define GPIO6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x30000)
218 #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 218 #define GPIO7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
219 #endif 219 #endif
220 #define KPP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x38000) 220 #define KPP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x38000)
221 #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000) 221 #define WDOG1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x3C000)
222 #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x40000) 222 #define WDOG2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x40000)
223 #define ANATOP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x48000) 223 #define ANATOP_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x48000)
224 #define USB_PHY0_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x49000) 224 #define USB_PHY0_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x49000)
225 #define USB_PHY1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4a000) 225 #define USB_PHY1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4a000)
226 #define CCM_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x44000) 226 #define CCM_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x44000)
227 #define SNVS_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4C000) 227 #define SNVS_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x4C000)
228 #define EPIT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x50000) 228 #define EPIT1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x50000)
229 #define EPIT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x54000) 229 #define EPIT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x54000)
230 #define SRC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x58000) 230 #define SRC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x58000)
231 #define GPC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x5C000) 231 #define GPC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x5C000)
232 #define IOMUXC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x60000) 232 #define IOMUXC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x60000)
233 #define IOMUXC_GPR_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 233 #define IOMUXC_GPR_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000)
234 #ifdef CONFIG_MX6SL 234 #ifdef CONFIG_MX6SL
235 #define CSI_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 235 #define CSI_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000)
236 #define SIPIX_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 236 #define SIPIX_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000)
237 #define SDMA_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 237 #define SDMA_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000)
238 #define EPDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 238 #define EPDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000)
239 #elif CONFIG_MX6SX 239 #elif CONFIG_MX6SX
240 #define CANFD1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 240 #define CANFD1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000)
241 #define SDMA_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 241 #define SDMA_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000)
242 #define CANFD2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000) 242 #define CANFD2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000)
243 #define SEMAPHORE1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 243 #define SEMAPHORE1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000)
244 #define SEMAPHORE2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000) 244 #define SEMAPHORE2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000)
245 #define RDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000) 245 #define RDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000)
246 246
247 #elif defined(CONFIG_MX6UL) 247 #elif defined(CONFIG_MX6UL)
248 #define GPT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 248 #define GPT2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000)
249 #define SDMA_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 249 #define SDMA_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000)
250 #define PWM5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000) 250 #define PWM5_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x70000)
251 #define PWM6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 251 #define PWM6_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000)
252 #define PWM7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000) 252 #define PWM7_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x78000)
253 #define PWM8_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000) 253 #define PWM8_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x7C000)
254 #else 254 #else
255 #define DCIC1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000) 255 #define DCIC1_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x64000)
256 #define DCIC2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000) 256 #define DCIC2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x68000)
257 #define DMA_REQ_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000) 257 #define DMA_REQ_PORT_HOST_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x6C000)
258 #define EPDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000) 258 #define EPDC_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x74000)
259 #endif 259 #endif
260 260
261 #define AIPS2_ON_BASE_ADDR (ATZ2_BASE_ADDR + 0x7C000) 261 #define AIPS2_ON_BASE_ADDR (ATZ2_BASE_ADDR + 0x7C000)
262 #define AIPS2_OFF_BASE_ADDR (ATZ2_BASE_ADDR + 0x80000) 262 #define AIPS2_OFF_BASE_ADDR (ATZ2_BASE_ADDR + 0x80000)
263 #define AIPS3_ON_BASE_ADDR (ATZ3_BASE_ADDR + 0x7C000) 263 #define AIPS3_ON_BASE_ADDR (ATZ3_BASE_ADDR + 0x7C000)
264 #define AIPS3_OFF_BASE_ADDR (ATZ3_BASE_ADDR + 0x80000) 264 #define AIPS3_OFF_BASE_ADDR (ATZ3_BASE_ADDR + 0x80000)
265 265
266 #if defined(CONFIG_MX6UL) 266 #if defined(CONFIG_MX6UL)
267 #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000) 267 #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000)
268 #define ARM_BASE_ADDR (ATZ2_BASE_ADDR) 268 #define ARM_BASE_ADDR (ATZ2_BASE_ADDR)
269 #else 269 #else
270 #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR) 270 #define CAAM_BASE_ADDR (ATZ2_BASE_ADDR)
271 #define ARM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000) 271 #define ARM_BASE_ADDR (ATZ2_BASE_ADDR + 0x40000)
272 #endif 272 #endif
273 273
274 #define CONFIG_SYS_FSL_SEC_ADDR CAAM_BASE_ADDR 274 #define CONFIG_SYS_FSL_SEC_ADDR CAAM_BASE_ADDR
275 #define CONFIG_SYS_FSL_JR0_ADDR (CAAM_BASE_ADDR + 0x1000) 275 #define CONFIG_SYS_FSL_JR0_ADDR (CAAM_BASE_ADDR + 0x1000)
276 276
277 #define USB_PL301_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x0000) 277 #define USB_PL301_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x0000)
278 #define USB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4000) 278 #define USB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4000)
279 279
280 #define ENET_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x8000) 280 #define ENET_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x8000)
281 #ifdef CONFIG_MX6SL 281 #ifdef CONFIG_MX6SL
282 #define MSHC_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 282 #define MSHC_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000)
283 #elif defined(CONFIG_MX6UL) 283 #elif defined(CONFIG_MX6UL)
284 #define SIM1_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 284 #define SIM1_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000)
285 #else 285 #else
286 #define MLB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000) 286 #define MLB_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0xC000)
287 #endif 287 #endif
288 288
289 #define USDHC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x10000) 289 #define USDHC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x10000)
290 #define USDHC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x14000) 290 #define USDHC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x14000)
291 #define USDHC3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000) 291 #define USDHC3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000)
292 #define USDHC4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000) 292 #define USDHC4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000)
293 293
294 #define MX6UL_ADC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000) 294 #define MX6UL_ADC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x18000)
295 #define MX6UL_ADC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000) 295 #define MX6UL_ADC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x1C000)
296 #define I2C1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x20000) 296 #define I2C1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x20000)
297 #define I2C2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x24000) 297 #define I2C2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x24000)
298 #define I2C3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x28000) 298 #define I2C3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x28000)
299 #define ROMCP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x2C000) 299 #define ROMCP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x2C000)
300 #define MMDC_P0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x30000) 300 #define MMDC_P0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x30000)
301 /* i.MX6SL */ 301 /* i.MX6SL */
302 #define RNGB_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 302 #define RNGB_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000)
303 #ifdef CONFIG_MX6UL 303 #ifdef CONFIG_MX6UL
304 #define ENET2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000) 304 #define ENET2_BASE_ADDR (AIPS1_OFF_BASE_ADDR + 0x34000)
305 #else 305 #else
306 /* i.MX6SX */ 306 /* i.MX6SX */
307 #define ENET2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 307 #define ENET2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000)
308 #endif 308 #endif
309 /* i.MX6DQ/SDL */ 309 /* i.MX6DQ/SDL */
310 #define MMDC_P1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000) 310 #define MMDC_P1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x34000)
311 311
312 #define WEIM_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x38000) 312 #define WEIM_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x38000)
313 #define OCOTP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x3C000) 313 #define OCOTP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x3C000)
314 #define CSU_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x40000) 314 #define CSU_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x40000)
315 #if defined(CONFIG_MX6UL) 315 #if defined(CONFIG_MX6UL)
316 #define CSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000) 316 #define CSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000)
317 #define PXP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 317 #define PXP_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000)
318 #else 318 #else
319 #define IP2APB_PERFMON1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000) 319 #define IP2APB_PERFMON1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x44000)
320 #define IP2APB_PERFMON2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 320 #define IP2APB_PERFMON2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
321 #endif 321 #endif
322 #define MX6UL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 322 #define MX6UL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
323 #define MX6ULL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000) 323 #define MX6ULL_LCDIF1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x48000)
324 #ifdef CONFIG_MX6SX 324 #ifdef CONFIG_MX6SX
325 #define DEBUG_MONITOR_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 325 #define DEBUG_MONITOR_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000)
326 #else 326 #else
327 #define IP2APB_PERFMON3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000) 327 #define IP2APB_PERFMON3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x4C000)
328 #endif 328 #endif
329 #define IP2APB_TZASC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x50000) 329 #define IP2APB_TZASC1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x50000)
330 #ifdef CONFIG_MX6UL 330 #ifdef CONFIG_MX6UL
331 #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 331 #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000)
332 #define SYSCNT_RD_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 332 #define SYSCNT_RD_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000)
333 #define SYSCNT_CMP_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000) 333 #define SYSCNT_CMP_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000)
334 #define SYSCNT_CTRL_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 334 #define SYSCNT_CTRL_IPS_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000)
335 #elif defined(CONFIG_MX6SX) 335 #elif defined(CONFIG_MX6SX)
336 #define SAI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 336 #define SAI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000)
337 #define AUDMUX_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000) 337 #define AUDMUX_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x58000)
338 #define SAI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 338 #define SAI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000)
339 #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 339 #define QSPI0_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000)
340 #define QSPI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 340 #define QSPI1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000)
341 #else 341 #else
342 #define IP2APB_TZASC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000) 342 #define IP2APB_TZASC2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x54000)
343 #define MIPI_CSI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000) 343 #define MIPI_CSI2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x5C000)
344 #define MIPI_DSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000) 344 #define MIPI_DSI_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x60000)
345 #define VDOA_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 345 #define VDOA_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000)
346 #endif 346 #endif
347 #define MX6UL_WDOG3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000) 347 #define MX6UL_WDOG3_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x64000)
348 #define UART2_BASE (AIPS2_OFF_BASE_ADDR + 0x68000) 348 #define UART2_BASE (AIPS2_OFF_BASE_ADDR + 0x68000)
349 #define UART3_BASE (AIPS2_OFF_BASE_ADDR + 0x6C000) 349 #define UART3_BASE (AIPS2_OFF_BASE_ADDR + 0x6C000)
350 #define UART4_BASE (AIPS2_OFF_BASE_ADDR + 0x70000) 350 #define UART4_BASE (AIPS2_OFF_BASE_ADDR + 0x70000)
351 #define UART5_BASE (AIPS2_OFF_BASE_ADDR + 0x74000) 351 #define UART5_BASE (AIPS2_OFF_BASE_ADDR + 0x74000)
352 /* i.MX6SX/UL */ 352 /* i.MX6SX/UL */
353 #define I2C4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000) 353 #define I2C4_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000)
354 /* i.MX6UL */ 354 /* i.MX6UL */
355 #define MX6UL_UART6_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 355 #define MX6UL_UART6_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000)
356 #define IP2APB_USBPHY1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000) 356 #define IP2APB_USBPHY1_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x78000)
357 #define IP2APB_USBPHY2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000) 357 #define IP2APB_USBPHY2_BASE_ADDR (AIPS2_OFF_BASE_ADDR + 0x7C000)
358 358
359 #define OTG_BASE_ADDR USB_BASE_ADDR 359 #define OTG_BASE_ADDR USB_BASE_ADDR
360 360
361 #if defined(CONFIG_MX6UL) 361 #if defined(CONFIG_MX6UL)
362 #define SCTR_BASE_ADDR SYSCNT_CTRL_IPS_BASE_ADDR 362 #define SCTR_BASE_ADDR SYSCNT_CTRL_IPS_BASE_ADDR
363 #endif 363 #endif
364 364
365 #ifdef CONFIG_MX6SX 365 #ifdef CONFIG_MX6SX
366 #define GIS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x04000) 366 #define GIS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x04000)
367 #define DCIC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x0C000) 367 #define DCIC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x0C000)
368 #define DCIC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x10000) 368 #define DCIC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x10000)
369 #define CSI1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x14000) 369 #define CSI1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x14000)
370 #define PXP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x18000) 370 #define PXP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x18000)
371 #define CSI2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x1C000) 371 #define CSI2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x1C000)
372 #define VADC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x28000) 372 #define VADC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x28000)
373 #define VDEC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x2C000) 373 #define VDEC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x2C000)
374 #define SPBA_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x3C000) 374 #define SPBA_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x3C000)
375 #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000) 375 #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000)
376 #define MX6SX_ADC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000) 376 #define MX6SX_ADC1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000)
377 #define MX6SX_ADC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000) 377 #define MX6SX_ADC2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000)
378 #define ECSPI5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000) 378 #define ECSPI5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000)
379 #define HS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000) 379 #define HS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000)
380 #define MU_MCU_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000) 380 #define MU_MCU_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000)
381 #define CANFD_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x98000) 381 #define CANFD_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x98000)
382 #define MU_DSP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x9C000) 382 #define MU_DSP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x9C000)
383 #define PWM5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA4000) 383 #define PWM5_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA4000)
384 #define PWM6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA8000) 384 #define PWM6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA8000)
385 #define PWM7_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xAC000) 385 #define PWM7_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xAC000)
386 #define PWM8_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xB0000) 386 #define PWM8_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xB0000)
387 #elif defined(CONFIG_MX6ULL) 387 #elif defined(CONFIG_MX6ULL)
388 #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000) 388 #define AIPS3_CONFIG_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x7C000)
389 #define DCP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000) 389 #define DCP_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x80000)
390 #define RNGB_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000) 390 #define RNGB_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x84000)
391 #define UART8_IPS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000) 391 #define UART8_IPS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000)
392 #define EPDC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000) 392 #define EPDC_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x8C000)
393 #define IOMUXC_SNVS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000) 393 #define IOMUXC_SNVS_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x90000)
394 #define SNVS_GPR_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000) 394 #define SNVS_GPR_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x94000)
395 #endif 395 #endif
396 /* Only for i.MX6SX */ 396 /* Only for i.MX6SX */
397 #define LCDIF2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x24000) 397 #define LCDIF2_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x24000)
398 #define MX6SX_LCDIF1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x20000) 398 #define MX6SX_LCDIF1_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x20000)
399 #define MX6SX_WDOG3_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000) 399 #define MX6SX_WDOG3_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0x88000)
400 #define MX6SX_UART6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA0000) 400 #define MX6SX_UART6_BASE_ADDR (AIPS3_ARB_BASE_ADDR + 0xA0000)
401 401
402 #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 402 #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
403 #define IRAM_SIZE 0x00040000 403 #define IRAM_SIZE 0x00040000
404 #else 404 #else
405 #define IRAM_SIZE 0x00020000 405 #define IRAM_SIZE 0x00020000
406 #endif 406 #endif
407 #define FEC_QUIRK_ENET_MAC 407 #define FEC_QUIRK_ENET_MAC
408 #define SNVS_LPGPR 0x68 408 #define SNVS_LPGPR 0x68
409 409
410 #include <asm/imx-common/regs-lcdif.h> 410 #include <asm/imx-common/regs-lcdif.h>
411 #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) 411 #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
412 #include <asm/types.h> 412 #include <asm/types.h>
413 413
414 /* only for i.MX6SX/UL */ 414 /* only for i.MX6SX/UL */
415 #define WDOG3_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL) ? \ 415 #define WDOG3_BASE_ADDR (((is_cpu_type(MXC_CPU_MX6UL) || is_cpu_type(MXC_CPU_MX6ULL)) ? \
416 MX6UL_WDOG3_BASE_ADDR : MX6SX_WDOG3_BASE_ADDR)) 416 MX6UL_WDOG3_BASE_ADDR : MX6SX_WDOG3_BASE_ADDR))
417 #define LCDIF1_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL)) ? \ 417 #define LCDIF1_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL)) ? \
418 MX6UL_LCDIF1_BASE_ADDR : \ 418 MX6UL_LCDIF1_BASE_ADDR : \
419 ((is_cpu_type(MXC_CPU_MX6ULL)) ? \ 419 ((is_cpu_type(MXC_CPU_MX6ULL)) ? \
420 MX6ULL_LCDIF1_BASE_ADDR : MX6SX_LCDIF1_BASE_ADDR)) 420 MX6ULL_LCDIF1_BASE_ADDR : MX6SX_LCDIF1_BASE_ADDR))
421 #define UART6_BASE_ADDR ((is_cpu_type(MXC_CPU_MX6UL)) ? \ 421 #define UART6_BASE_ADDR (((is_cpu_type(MXC_CPU_MX6UL)) || is_cpu_type(MXC_CPU_MX6ULL)) ? \
422 MX6UL_UART6_BASE_ADDR : MX6SX_UART6_BASE_ADDR) 422 MX6UL_UART6_BASE_ADDR : MX6SX_UART6_BASE_ADDR)
423 423
424 #define MXS_LCDIF_BASE LCDIF1_BASE_ADDR 424 #define MXS_LCDIF_BASE LCDIF1_BASE_ADDR
425 425
426 426
427 extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac); 427 extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
428 428
429 #define SRC_SCR_CORE_1_RESET_OFFSET 14 429 #define SRC_SCR_CORE_1_RESET_OFFSET 14
430 #define SRC_SCR_CORE_1_RESET_MASK (1<<SRC_SCR_CORE_1_RESET_OFFSET) 430 #define SRC_SCR_CORE_1_RESET_MASK (1<<SRC_SCR_CORE_1_RESET_OFFSET)
431 #define SRC_SCR_CORE_2_RESET_OFFSET 15 431 #define SRC_SCR_CORE_2_RESET_OFFSET 15
432 #define SRC_SCR_CORE_2_RESET_MASK (1<<SRC_SCR_CORE_2_RESET_OFFSET) 432 #define SRC_SCR_CORE_2_RESET_MASK (1<<SRC_SCR_CORE_2_RESET_OFFSET)
433 #define SRC_SCR_CORE_3_RESET_OFFSET 16 433 #define SRC_SCR_CORE_3_RESET_OFFSET 16
434 #define SRC_SCR_CORE_3_RESET_MASK (1<<SRC_SCR_CORE_3_RESET_OFFSET) 434 #define SRC_SCR_CORE_3_RESET_MASK (1<<SRC_SCR_CORE_3_RESET_OFFSET)
435 #define SRC_SCR_CORE_1_ENABLE_OFFSET 22 435 #define SRC_SCR_CORE_1_ENABLE_OFFSET 22
436 #define SRC_SCR_CORE_1_ENABLE_MASK (1<<SRC_SCR_CORE_1_ENABLE_OFFSET) 436 #define SRC_SCR_CORE_1_ENABLE_MASK (1<<SRC_SCR_CORE_1_ENABLE_OFFSET)
437 #define SRC_SCR_CORE_2_ENABLE_OFFSET 23 437 #define SRC_SCR_CORE_2_ENABLE_OFFSET 23
438 #define SRC_SCR_CORE_2_ENABLE_MASK (1<<SRC_SCR_CORE_2_ENABLE_OFFSET) 438 #define SRC_SCR_CORE_2_ENABLE_MASK (1<<SRC_SCR_CORE_2_ENABLE_OFFSET)
439 #define SRC_SCR_CORE_3_ENABLE_OFFSET 24 439 #define SRC_SCR_CORE_3_ENABLE_OFFSET 24
440 #define SRC_SCR_CORE_3_ENABLE_MASK (1<<SRC_SCR_CORE_3_ENABLE_OFFSET) 440 #define SRC_SCR_CORE_3_ENABLE_MASK (1<<SRC_SCR_CORE_3_ENABLE_OFFSET)
441 441
442 struct rdc_regs { 442 struct rdc_regs {
443 u32 vir; /* Version information */ 443 u32 vir; /* Version information */
444 u32 reserved1[8]; 444 u32 reserved1[8];
445 u32 stat; /* Status */ 445 u32 stat; /* Status */
446 u32 intctrl; /* Interrupt and Control */ 446 u32 intctrl; /* Interrupt and Control */
447 u32 intstat; /* Interrupt Status */ 447 u32 intstat; /* Interrupt Status */
448 u32 reserved2[116]; 448 u32 reserved2[116];
449 u32 mda[32]; /* Master Domain Assignment */ 449 u32 mda[32]; /* Master Domain Assignment */
450 u32 reserved3[96]; 450 u32 reserved3[96];
451 u32 pdap[104]; /* Peripheral Domain Access Permissions */ 451 u32 pdap[104]; /* Peripheral Domain Access Permissions */
452 u32 reserved4[88]; 452 u32 reserved4[88];
453 struct { 453 struct {
454 u32 mrsa; /* Memory Region Start Address */ 454 u32 mrsa; /* Memory Region Start Address */
455 u32 mrea; /* Memory Region End Address */ 455 u32 mrea; /* Memory Region End Address */
456 u32 mrc; /* Memory Region Control */ 456 u32 mrc; /* Memory Region Control */
457 u32 mrvs; /* Memory Region Violation Status */ 457 u32 mrvs; /* Memory Region Violation Status */
458 } mem_region[55]; 458 } mem_region[55];
459 }; 459 };
460 460
461 struct rdc_sema_regs { 461 struct rdc_sema_regs {
462 u8 gate[64]; /* Gate */ 462 u8 gate[64]; /* Gate */
463 u16 rstgt; /* Reset Gate */ 463 u16 rstgt; /* Reset Gate */
464 }; 464 };
465 465
466 /* WEIM registers */ 466 /* WEIM registers */
467 struct weim { 467 struct weim {
468 u32 cs0gcr1; 468 u32 cs0gcr1;
469 u32 cs0gcr2; 469 u32 cs0gcr2;
470 u32 cs0rcr1; 470 u32 cs0rcr1;
471 u32 cs0rcr2; 471 u32 cs0rcr2;
472 u32 cs0wcr1; 472 u32 cs0wcr1;
473 u32 cs0wcr2; 473 u32 cs0wcr2;
474 474
475 u32 cs1gcr1; 475 u32 cs1gcr1;
476 u32 cs1gcr2; 476 u32 cs1gcr2;
477 u32 cs1rcr1; 477 u32 cs1rcr1;
478 u32 cs1rcr2; 478 u32 cs1rcr2;
479 u32 cs1wcr1; 479 u32 cs1wcr1;
480 u32 cs1wcr2; 480 u32 cs1wcr2;
481 481
482 u32 cs2gcr1; 482 u32 cs2gcr1;
483 u32 cs2gcr2; 483 u32 cs2gcr2;
484 u32 cs2rcr1; 484 u32 cs2rcr1;
485 u32 cs2rcr2; 485 u32 cs2rcr2;
486 u32 cs2wcr1; 486 u32 cs2wcr1;
487 u32 cs2wcr2; 487 u32 cs2wcr2;
488 488
489 u32 cs3gcr1; 489 u32 cs3gcr1;
490 u32 cs3gcr2; 490 u32 cs3gcr2;
491 u32 cs3rcr1; 491 u32 cs3rcr1;
492 u32 cs3rcr2; 492 u32 cs3rcr2;
493 u32 cs3wcr1; 493 u32 cs3wcr1;
494 u32 cs3wcr2; 494 u32 cs3wcr2;
495 495
496 u32 unused[12]; 496 u32 unused[12];
497 497
498 u32 wcr; 498 u32 wcr;
499 u32 wiar; 499 u32 wiar;
500 u32 ear; 500 u32 ear;
501 }; 501 };
502 502
503 /* System Reset Controller (SRC) */ 503 /* System Reset Controller (SRC) */
504 struct src { 504 struct src {
505 u32 scr; 505 u32 scr;
506 u32 sbmr1; 506 u32 sbmr1;
507 u32 srsr; 507 u32 srsr;
508 u32 reserved1[2]; 508 u32 reserved1[2];
509 u32 sisr; 509 u32 sisr;
510 u32 simr; 510 u32 simr;
511 u32 sbmr2; 511 u32 sbmr2;
512 u32 gpr1; 512 u32 gpr1;
513 u32 gpr2; 513 u32 gpr2;
514 u32 gpr3; 514 u32 gpr3;
515 u32 gpr4; 515 u32 gpr4;
516 u32 gpr5; 516 u32 gpr5;
517 u32 gpr6; 517 u32 gpr6;
518 u32 gpr7; 518 u32 gpr7;
519 u32 gpr8; 519 u32 gpr8;
520 u32 gpr9; 520 u32 gpr9;
521 u32 gpr10; 521 u32 gpr10;
522 }; 522 };
523 523
524 #define SRC_SCR_M4_ENABLE_OFFSET 22 524 #define SRC_SCR_M4_ENABLE_OFFSET 22
525 #define SRC_SCR_M4_ENABLE_MASK (1 << 22) 525 #define SRC_SCR_M4_ENABLE_MASK (1 << 22)
526 #define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 4 526 #define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 4
527 #define SRC_SCR_M4C_NON_SCLR_RST_MASK (1 << 4) 527 #define SRC_SCR_M4C_NON_SCLR_RST_MASK (1 << 4)
528 528
529 /* GPR1 bitfields */ 529 /* GPR1 bitfields */
530 #define IOMUXC_GPR1_APP_CLK_REQ_N BIT(30) 530 #define IOMUXC_GPR1_APP_CLK_REQ_N BIT(30)
531 #define IOMUXC_GPR1_PCIE_EXIT_L1 BIT(28) 531 #define IOMUXC_GPR1_PCIE_EXIT_L1 BIT(28)
532 #define IOMUXC_GPR1_PCIE_RDY_L23 BIT(27) 532 #define IOMUXC_GPR1_PCIE_RDY_L23 BIT(27)
533 #define IOMUXC_GPR1_PCIE_ENTER_L1 BIT(26) 533 #define IOMUXC_GPR1_PCIE_ENTER_L1 BIT(26)
534 #define IOMUXC_GPR1_MIPI_COLOR_SW BIT(25) 534 #define IOMUXC_GPR1_MIPI_COLOR_SW BIT(25)
535 #define IOMUXC_GPR1_DPI_OFF BIT(24) 535 #define IOMUXC_GPR1_DPI_OFF BIT(24)
536 #define IOMUXC_GPR1_EXC_MON_SLVE BIT(22) 536 #define IOMUXC_GPR1_EXC_MON_SLVE BIT(22)
537 #define IOMUXC_GPR1_ENET_CLK_SEL_OFFSET 21 537 #define IOMUXC_GPR1_ENET_CLK_SEL_OFFSET 21
538 #define IOMUXC_GPR1_ENET_CLK_SEL_MASK (1 << IOMUXC_GPR1_ENET_CLK_SEL_OFFSET) 538 #define IOMUXC_GPR1_ENET_CLK_SEL_MASK (1 << IOMUXC_GPR1_ENET_CLK_SEL_OFFSET)
539 #define IOMUXC_GPR1_MIPI_IPU2_MUX_IOMUX BIT(20) 539 #define IOMUXC_GPR1_MIPI_IPU2_MUX_IOMUX BIT(20)
540 #define IOMUXC_GPR1_MIPI_IPU1_MUX_IOMUX BIT(19) 540 #define IOMUXC_GPR1_MIPI_IPU1_MUX_IOMUX BIT(19)
541 #define IOMUXC_GPR1_PCIE_TEST_PD BIT(18) 541 #define IOMUXC_GPR1_PCIE_TEST_PD BIT(18)
542 #define IOMUXC_GPR1_IPU_VPU_MUX_IPU2 BIT(17) 542 #define IOMUXC_GPR1_IPU_VPU_MUX_IPU2 BIT(17)
543 #define IOMUXC_GPR1_PCIE_REF_CLK_EN BIT(16) 543 #define IOMUXC_GPR1_PCIE_REF_CLK_EN BIT(16)
544 #define IOMUXC_GPR1_USB_EXP_MODE BIT(15) 544 #define IOMUXC_GPR1_USB_EXP_MODE BIT(15)
545 #define IOMUXC_GPR1_PCIE_INT BIT(14) 545 #define IOMUXC_GPR1_PCIE_INT BIT(14)
546 #define IOMUXC_GPR1_USB_OTG_ID_OFFSET 13 546 #define IOMUXC_GPR1_USB_OTG_ID_OFFSET 13
547 #define IOMUXC_GPR1_USB_OTG_ID_SEL_MASK (1 << IOMUXC_GPR1_USB_OTG_ID_OFFSET) 547 #define IOMUXC_GPR1_USB_OTG_ID_SEL_MASK (1 << IOMUXC_GPR1_USB_OTG_ID_OFFSET)
548 #define IOMUXC_GPR1_GINT BIT(12) 548 #define IOMUXC_GPR1_GINT BIT(12)
549 #define IOMUXC_GPR1_ADDRS3_MASK (0x3 << 10) 549 #define IOMUXC_GPR1_ADDRS3_MASK (0x3 << 10)
550 #define IOMUXC_GPR1_ADDRS3_32MB (0x0 << 10) 550 #define IOMUXC_GPR1_ADDRS3_32MB (0x0 << 10)
551 #define IOMUXC_GPR1_ADDRS3_64MB (0x1 << 10) 551 #define IOMUXC_GPR1_ADDRS3_64MB (0x1 << 10)
552 #define IOMUXC_GPR1_ADDRS3_128MB (0x2 << 10) 552 #define IOMUXC_GPR1_ADDRS3_128MB (0x2 << 10)
553 #define IOMUXC_GPR1_ACT_CS3 BIT(9) 553 #define IOMUXC_GPR1_ACT_CS3 BIT(9)
554 #define IOMUXC_GPR1_ADDRS2_MASK (0x3 << 7) 554 #define IOMUXC_GPR1_ADDRS2_MASK (0x3 << 7)
555 #define IOMUXC_GPR1_ACT_CS2 BIT(6) 555 #define IOMUXC_GPR1_ACT_CS2 BIT(6)
556 #define IOMUXC_GPR1_ADDRS1_MASK (0x3 << 4) 556 #define IOMUXC_GPR1_ADDRS1_MASK (0x3 << 4)
557 #define IOMUXC_GPR1_ACT_CS1 BIT(3) 557 #define IOMUXC_GPR1_ACT_CS1 BIT(3)
558 #define IOMUXC_GPR1_ADDRS0_OFFSET (1) 558 #define IOMUXC_GPR1_ADDRS0_OFFSET (1)
559 #define IOMUXC_GPR1_ADDRS0_MASK (0x3 << 1) 559 #define IOMUXC_GPR1_ADDRS0_MASK (0x3 << 1)
560 #define IOMUXC_GPR1_ACT_CS0 BIT(0) 560 #define IOMUXC_GPR1_ACT_CS0 BIT(0)
561 561
562 /* GPR3 bitfields */ 562 /* GPR3 bitfields */
563 #define IOMUXC_GPR3_GPU_DBG_OFFSET 29 563 #define IOMUXC_GPR3_GPU_DBG_OFFSET 29
564 #define IOMUXC_GPR3_GPU_DBG_MASK (3<<IOMUXC_GPR3_GPU_DBG_OFFSET) 564 #define IOMUXC_GPR3_GPU_DBG_MASK (3<<IOMUXC_GPR3_GPU_DBG_OFFSET)
565 #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET 28 565 #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET 28
566 #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET) 566 #define IOMUXC_GPR3_BCH_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_WR_CACHE_CTL_OFFSET)
567 #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET 27 567 #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET 27
568 #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET) 568 #define IOMUXC_GPR3_BCH_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_BCH_RD_CACHE_CTL_OFFSET)
569 #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET 26 569 #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET 26
570 #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET) 570 #define IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_WR_CACHE_CTL_OFFSET)
571 #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET 25 571 #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET 25
572 #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET) 572 #define IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_MASK (1<<IOMUXC_GPR3_uSDHCx_RD_CACHE_CTL_OFFSET)
573 #define IOMUXC_GPR3_OCRAM_CTL_OFFSET 21 573 #define IOMUXC_GPR3_OCRAM_CTL_OFFSET 21
574 #define IOMUXC_GPR3_OCRAM_CTL_MASK (0xf<<IOMUXC_GPR3_OCRAM_CTL_OFFSET) 574 #define IOMUXC_GPR3_OCRAM_CTL_MASK (0xf<<IOMUXC_GPR3_OCRAM_CTL_OFFSET)
575 #define IOMUXC_GPR3_OCRAM_STATUS_OFFSET 17 575 #define IOMUXC_GPR3_OCRAM_STATUS_OFFSET 17
576 #define IOMUXC_GPR3_OCRAM_STATUS_MASK (0xf<<IOMUXC_GPR3_OCRAM_STATUS_OFFSET) 576 #define IOMUXC_GPR3_OCRAM_STATUS_MASK (0xf<<IOMUXC_GPR3_OCRAM_STATUS_OFFSET)
577 #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET 16 577 #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET 16
578 #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET) 578 #define IOMUXC_GPR3_CORE3_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE3_DBG_ACK_EN_OFFSET)
579 #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET 15 579 #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET 15
580 #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET) 580 #define IOMUXC_GPR3_CORE2_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE2_DBG_ACK_EN_OFFSET)
581 #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET 14 581 #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET 14
582 #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET) 582 #define IOMUXC_GPR3_CORE1_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE1_DBG_ACK_EN_OFFSET)
583 #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET 13 583 #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET 13
584 #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET) 584 #define IOMUXC_GPR3_CORE0_DBG_ACK_EN_MASK (1<<IOMUXC_GPR3_CORE0_DBG_ACK_EN_OFFSET)
585 #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET 12 585 #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET 12
586 #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET) 586 #define IOMUXC_GPR3_TZASC2_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC2_BOOT_LOCK_OFFSET)
587 #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET 11 587 #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET 11
588 #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET) 588 #define IOMUXC_GPR3_TZASC1_BOOT_LOCK_MASK (1<<IOMUXC_GPR3_TZASC1_BOOT_LOCK_OFFSET)
589 #define IOMUXC_GPR3_IPU_DIAG_OFFSET 10 589 #define IOMUXC_GPR3_IPU_DIAG_OFFSET 10
590 #define IOMUXC_GPR3_IPU_DIAG_MASK (1<<IOMUXC_GPR3_IPU_DIAG_OFFSET) 590 #define IOMUXC_GPR3_IPU_DIAG_MASK (1<<IOMUXC_GPR3_IPU_DIAG_OFFSET)
591 591
592 #define IOMUXC_GPR3_MUX_SRC_IPU1_DI0 0 592 #define IOMUXC_GPR3_MUX_SRC_IPU1_DI0 0
593 #define IOMUXC_GPR3_MUX_SRC_IPU1_DI1 1 593 #define IOMUXC_GPR3_MUX_SRC_IPU1_DI1 1
594 #define IOMUXC_GPR3_MUX_SRC_IPU2_DI0 2 594 #define IOMUXC_GPR3_MUX_SRC_IPU2_DI0 2
595 #define IOMUXC_GPR3_MUX_SRC_IPU2_DI1 3 595 #define IOMUXC_GPR3_MUX_SRC_IPU2_DI1 3
596 596
597 #define IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET 8 597 #define IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET 8
598 #define IOMUXC_GPR3_LVDS1_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET) 598 #define IOMUXC_GPR3_LVDS1_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS1_MUX_CTL_OFFSET)
599 599
600 #define IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET 6 600 #define IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET 6
601 #define IOMUXC_GPR3_LVDS0_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET) 601 #define IOMUXC_GPR3_LVDS0_MUX_CTL_MASK (3<<IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET)
602 602
603 #define IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET 4 603 #define IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET 4
604 #define IOMUXC_GPR3_MIPI_MUX_CTL_MASK (3<<IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET) 604 #define IOMUXC_GPR3_MIPI_MUX_CTL_MASK (3<<IOMUXC_GPR3_MIPI_MUX_CTL_OFFSET)
605 605
606 #define IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET 2 606 #define IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET 2
607 #define IOMUXC_GPR3_HDMI_MUX_CTL_MASK (3<<IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET) 607 #define IOMUXC_GPR3_HDMI_MUX_CTL_MASK (3<<IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET)
608 608
609 /* gpr12 bitfields */ 609 /* gpr12 bitfields */
610 #define IOMUXC_GPR12_ARMP_IPG_CLK_EN BIT(27) 610 #define IOMUXC_GPR12_ARMP_IPG_CLK_EN BIT(27)
611 #define IOMUXC_GPR12_ARMP_AHB_CLK_EN BIT(26) 611 #define IOMUXC_GPR12_ARMP_AHB_CLK_EN BIT(26)
612 #define IOMUXC_GPR12_ARMP_ATB_CLK_EN BIT(25) 612 #define IOMUXC_GPR12_ARMP_ATB_CLK_EN BIT(25)
613 #define IOMUXC_GPR12_ARMP_APB_CLK_EN BIT(24) 613 #define IOMUXC_GPR12_ARMP_APB_CLK_EN BIT(24)
614 #define IOMUXC_GPR12_DEVICE_TYPE (0xf << 12) 614 #define IOMUXC_GPR12_DEVICE_TYPE (0xf << 12)
615 #define IOMUXC_GPR12_PCIE_CTL_2 BIT(10) 615 #define IOMUXC_GPR12_PCIE_CTL_2 BIT(10)
616 #define IOMUXC_GPR12_LOS_LEVEL (0x1f << 4) 616 #define IOMUXC_GPR12_LOS_LEVEL (0x1f << 4)
617 617
618 struct iomuxc { 618 struct iomuxc {
619 #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 619 #if (defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
620 u8 reserved[0x4000]; 620 u8 reserved[0x4000];
621 #endif 621 #endif
622 622
623 #ifdef CONFIG_MX6UL 623 #ifdef CONFIG_MX6UL
624 u32 gpr[15]; 624 u32 gpr[15];
625 #else 625 #else
626 u32 gpr[14]; 626 u32 gpr[14];
627 #endif 627 #endif
628 }; 628 };
629 629
630 struct gpc { 630 struct gpc {
631 u32 cntr; 631 u32 cntr;
632 u32 pgr; 632 u32 pgr;
633 u32 imr1; 633 u32 imr1;
634 u32 imr2; 634 u32 imr2;
635 u32 imr3; 635 u32 imr3;
636 u32 imr4; 636 u32 imr4;
637 u32 isr1; 637 u32 isr1;
638 u32 isr2; 638 u32 isr2;
639 u32 isr3; 639 u32 isr3;
640 u32 isr4; 640 u32 isr4;
641 }; 641 };
642 642
643 #define IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET 20 643 #define IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET 20
644 #define IOMUXC_GPR2_COUNTER_RESET_VAL_MASK (3<<IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET) 644 #define IOMUXC_GPR2_COUNTER_RESET_VAL_MASK (3<<IOMUXC_GPR2_COUNTER_RESET_VAL_OFFSET)
645 #define IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET 16 645 #define IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET 16
646 #define IOMUXC_GPR2_LVDS_CLK_SHIFT_MASK (7<<IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET) 646 #define IOMUXC_GPR2_LVDS_CLK_SHIFT_MASK (7<<IOMUXC_GPR2_LVDS_CLK_SHIFT_OFFSET)
647 647
648 #define IOMUXC_GPR2_BGREF_RRMODE_OFFSET 15 648 #define IOMUXC_GPR2_BGREF_RRMODE_OFFSET 15
649 #define IOMUXC_GPR2_BGREF_RRMODE_MASK (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 649 #define IOMUXC_GPR2_BGREF_RRMODE_MASK (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET)
650 #define IOMUXC_GPR2_BGREF_RRMODE_INTERNAL_RES (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 650 #define IOMUXC_GPR2_BGREF_RRMODE_INTERNAL_RES (1<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET)
651 #define IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES (0<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET) 651 #define IOMUXC_GPR2_BGREF_RRMODE_EXTERNAL_RES (0<<IOMUXC_GPR2_BGREF_RRMODE_OFFSET)
652 #define IOMUXC_GPR2_VSYNC_ACTIVE_HIGH 0 652 #define IOMUXC_GPR2_VSYNC_ACTIVE_HIGH 0
653 #define IOMUXC_GPR2_VSYNC_ACTIVE_LOW 1 653 #define IOMUXC_GPR2_VSYNC_ACTIVE_LOW 1
654 654
655 #define IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET 10 655 #define IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET 10
656 #define IOMUXC_GPR2_DI1_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 656 #define IOMUXC_GPR2_DI1_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET)
657 #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 657 #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET)
658 #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET) 658 #define IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI1_VS_POLARITY_OFFSET)
659 659
660 #define IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET 9 660 #define IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET 9
661 #define IOMUXC_GPR2_DI0_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 661 #define IOMUXC_GPR2_DI0_VS_POLARITY_MASK (1<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET)
662 #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 662 #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_HIGH (IOMUXC_GPR2_VSYNC_ACTIVE_HIGH<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET)
663 #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET) 663 #define IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW (IOMUXC_GPR2_VSYNC_ACTIVE_LOW<<IOMUXC_GPR2_DI0_VS_POLARITY_OFFSET)
664 664
665 #define IOMUXC_GPR2_BITMAP_SPWG 0 665 #define IOMUXC_GPR2_BITMAP_SPWG 0
666 #define IOMUXC_GPR2_BITMAP_JEIDA 1 666 #define IOMUXC_GPR2_BITMAP_JEIDA 1
667 667
668 #define IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET 8 668 #define IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET 8
669 #define IOMUXC_GPR2_BIT_MAPPING_CH1_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 669 #define IOMUXC_GPR2_BIT_MAPPING_CH1_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET)
670 #define IOMUXC_GPR2_BIT_MAPPING_CH1_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 670 #define IOMUXC_GPR2_BIT_MAPPING_CH1_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET)
671 #define IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET) 671 #define IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH1_OFFSET)
672 672
673 #define IOMUXC_GPR2_DATA_WIDTH_18 0 673 #define IOMUXC_GPR2_DATA_WIDTH_18 0
674 #define IOMUXC_GPR2_DATA_WIDTH_24 1 674 #define IOMUXC_GPR2_DATA_WIDTH_24 1
675 675
676 #define IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET 7 676 #define IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET 7
677 #define IOMUXC_GPR2_DATA_WIDTH_CH1_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 677 #define IOMUXC_GPR2_DATA_WIDTH_CH1_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET)
678 #define IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 678 #define IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET)
679 #define IOMUXC_GPR2_DATA_WIDTH_CH1_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET) 679 #define IOMUXC_GPR2_DATA_WIDTH_CH1_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH1_OFFSET)
680 680
681 #define IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET 6 681 #define IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET 6
682 #define IOMUXC_GPR2_BIT_MAPPING_CH0_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 682 #define IOMUXC_GPR2_BIT_MAPPING_CH0_MASK (1<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET)
683 #define IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 683 #define IOMUXC_GPR2_BIT_MAPPING_CH0_JEIDA (IOMUXC_GPR2_BITMAP_JEIDA<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET)
684 #define IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET) 684 #define IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG (IOMUXC_GPR2_BITMAP_SPWG<<IOMUXC_GPR2_BIT_MAPPING_CH0_OFFSET)
685 685
686 #define IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET 5 686 #define IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET 5
687 #define IOMUXC_GPR2_DATA_WIDTH_CH0_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 687 #define IOMUXC_GPR2_DATA_WIDTH_CH0_MASK (1<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET)
688 #define IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 688 #define IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT (IOMUXC_GPR2_DATA_WIDTH_18<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET)
689 #define IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET) 689 #define IOMUXC_GPR2_DATA_WIDTH_CH0_24BIT (IOMUXC_GPR2_DATA_WIDTH_24<<IOMUXC_GPR2_DATA_WIDTH_CH0_OFFSET)
690 690
691 #define IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET 4 691 #define IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET 4
692 #define IOMUXC_GPR2_SPLIT_MODE_EN_MASK (1<<IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET) 692 #define IOMUXC_GPR2_SPLIT_MODE_EN_MASK (1<<IOMUXC_GPR2_SPLIT_MODE_EN_OFFSET)
693 693
694 #define IOMUXC_GPR2_MODE_DISABLED 0 694 #define IOMUXC_GPR2_MODE_DISABLED 0
695 #define IOMUXC_GPR2_MODE_ENABLED_DI0 1 695 #define IOMUXC_GPR2_MODE_ENABLED_DI0 1
696 #define IOMUXC_GPR2_MODE_ENABLED_DI1 3 696 #define IOMUXC_GPR2_MODE_ENABLED_DI1 3
697 697
698 #define IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET 2 698 #define IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET 2
699 #define IOMUXC_GPR2_LVDS_CH1_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 699 #define IOMUXC_GPR2_LVDS_CH1_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET)
700 #define IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 700 #define IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET)
701 #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 701 #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET)
702 #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET) 702 #define IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH1_MODE_OFFSET)
703 703
704 #define IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET 0 704 #define IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET 0
705 #define IOMUXC_GPR2_LVDS_CH0_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 705 #define IOMUXC_GPR2_LVDS_CH0_MODE_MASK (3<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET)
706 #define IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 706 #define IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED (IOMUXC_GPR2_MODE_DISABLED<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET)
707 #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 707 #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 (IOMUXC_GPR2_MODE_ENABLED_DI0<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET)
708 #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET) 708 #define IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI1 (IOMUXC_GPR2_MODE_ENABLED_DI1<<IOMUXC_GPR2_LVDS_CH0_MODE_OFFSET)
709 709
710 #define IMX6SX_GPR5_CSI1_MUX_CTRL_MASK (0x3 << 4) 710 #define IMX6SX_GPR5_CSI1_MUX_CTRL_MASK (0x3 << 4)
711 #define IMX6SX_GPR5_CSI1_MUX_CTRL_EXT_PIN (0x0 << 4) 711 #define IMX6SX_GPR5_CSI1_MUX_CTRL_EXT_PIN (0x0 << 4)
712 #define IMX6SX_GPR5_CSI1_MUX_CTRL_CVD (0x1 << 4) 712 #define IMX6SX_GPR5_CSI1_MUX_CTRL_CVD (0x1 << 4)
713 #define IMX6SX_GPR5_CSI1_MUX_CTRL_VDAC_TO_CSI (0x2 << 4) 713 #define IMX6SX_GPR5_CSI1_MUX_CTRL_VDAC_TO_CSI (0x2 << 4)
714 #define IMX6SX_GPR5_CSI1_MUX_CTRL_GND (0x3 << 4) 714 #define IMX6SX_GPR5_CSI1_MUX_CTRL_GND (0x3 << 4)
715 715
716 /* ECSPI registers */ 716 /* ECSPI registers */
717 struct cspi_regs { 717 struct cspi_regs {
718 u32 rxdata; 718 u32 rxdata;
719 u32 txdata; 719 u32 txdata;
720 u32 ctrl; 720 u32 ctrl;
721 u32 cfg; 721 u32 cfg;
722 u32 intr; 722 u32 intr;
723 u32 dma; 723 u32 dma;
724 u32 stat; 724 u32 stat;
725 u32 period; 725 u32 period;
726 }; 726 };
727 727
728 /* 728 /*
729 * CSPI register definitions 729 * CSPI register definitions
730 */ 730 */
731 #define MXC_ECSPI 731 #define MXC_ECSPI
732 #define MXC_CSPICTRL_EN (1 << 0) 732 #define MXC_CSPICTRL_EN (1 << 0)
733 #define MXC_CSPICTRL_MODE (1 << 1) 733 #define MXC_CSPICTRL_MODE (1 << 1)
734 #define MXC_CSPICTRL_XCH (1 << 2) 734 #define MXC_CSPICTRL_XCH (1 << 2)
735 #define MXC_CSPICTRL_MODE_MASK (0xf << 4) 735 #define MXC_CSPICTRL_MODE_MASK (0xf << 4)
736 #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12) 736 #define MXC_CSPICTRL_CHIPSELECT(x) (((x) & 0x3) << 12)
737 #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20) 737 #define MXC_CSPICTRL_BITCOUNT(x) (((x) & 0xfff) << 20)
738 #define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12) 738 #define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12)
739 #define MXC_CSPICTRL_POSTDIV(x) (((x) & 0xF) << 8) 739 #define MXC_CSPICTRL_POSTDIV(x) (((x) & 0xF) << 8)
740 #define MXC_CSPICTRL_SELCHAN(x) (((x) & 0x3) << 18) 740 #define MXC_CSPICTRL_SELCHAN(x) (((x) & 0x3) << 18)
741 #define MXC_CSPICTRL_MAXBITS 0xfff 741 #define MXC_CSPICTRL_MAXBITS 0xfff
742 #define MXC_CSPICTRL_TC (1 << 7) 742 #define MXC_CSPICTRL_TC (1 << 7)
743 #define MXC_CSPICTRL_RXOVF (1 << 6) 743 #define MXC_CSPICTRL_RXOVF (1 << 6)
744 #define MXC_CSPIPERIOD_32KHZ (1 << 15) 744 #define MXC_CSPIPERIOD_32KHZ (1 << 15)
745 #define MAX_SPI_BYTES 32 745 #define MAX_SPI_BYTES 32
746 #if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL) 746 #if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL)
747 #define SPI_MAX_NUM 3 747 #define SPI_MAX_NUM 3
748 #else 748 #else
749 #define SPI_MAX_NUM 4 749 #define SPI_MAX_NUM 4
750 #endif 750 #endif
751 751
752 /* Bit position inside CTRL register to be associated with SS */ 752 /* Bit position inside CTRL register to be associated with SS */
753 #define MXC_CSPICTRL_CHAN 18 753 #define MXC_CSPICTRL_CHAN 18
754 754
755 /* Bit position inside CON register to be associated with SS */ 755 /* Bit position inside CON register to be associated with SS */
756 #define MXC_CSPICON_PHA 0 /* SCLK phase control */ 756 #define MXC_CSPICON_PHA 0 /* SCLK phase control */
757 #define MXC_CSPICON_POL 4 /* SCLK polarity */ 757 #define MXC_CSPICON_POL 4 /* SCLK polarity */
758 #define MXC_CSPICON_SSPOL 12 /* SS polarity */ 758 #define MXC_CSPICON_SSPOL 12 /* SS polarity */
759 #define MXC_CSPICON_CTL 20 /* inactive state of SCLK */ 759 #define MXC_CSPICON_CTL 20 /* inactive state of SCLK */
760 #if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL) 760 #if defined(CONFIG_MX6SL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6UL)
761 #define MXC_SPI_BASE_ADDRESSES \ 761 #define MXC_SPI_BASE_ADDRESSES \
762 ECSPI1_BASE_ADDR, \ 762 ECSPI1_BASE_ADDR, \
763 ECSPI2_BASE_ADDR, \ 763 ECSPI2_BASE_ADDR, \
764 ECSPI3_BASE_ADDR, \ 764 ECSPI3_BASE_ADDR, \
765 ECSPI4_BASE_ADDR 765 ECSPI4_BASE_ADDR
766 #else 766 #else
767 #define MXC_SPI_BASE_ADDRESSES \ 767 #define MXC_SPI_BASE_ADDRESSES \
768 ECSPI1_BASE_ADDR, \ 768 ECSPI1_BASE_ADDR, \
769 ECSPI2_BASE_ADDR, \ 769 ECSPI2_BASE_ADDR, \
770 ECSPI3_BASE_ADDR, \ 770 ECSPI3_BASE_ADDR, \
771 ECSPI4_BASE_ADDR, \ 771 ECSPI4_BASE_ADDR, \
772 ECSPI5_BASE_ADDR 772 ECSPI5_BASE_ADDR
773 #endif 773 #endif
774 774
775 #define ANATOP_PLL_VIDEO 0xA0 775 #define ANATOP_PLL_VIDEO 0xA0
776 776
777 struct ocotp_regs { 777 struct ocotp_regs {
778 u32 ctrl; 778 u32 ctrl;
779 u32 ctrl_set; 779 u32 ctrl_set;
780 u32 ctrl_clr; 780 u32 ctrl_clr;
781 u32 ctrl_tog; 781 u32 ctrl_tog;
782 u32 timing; 782 u32 timing;
783 u32 rsvd0[3]; 783 u32 rsvd0[3];
784 u32 data; 784 u32 data;
785 u32 rsvd1[3]; 785 u32 rsvd1[3];
786 u32 read_ctrl; 786 u32 read_ctrl;
787 u32 rsvd2[3]; 787 u32 rsvd2[3];
788 u32 read_fuse_data; 788 u32 read_fuse_data;
789 u32 rsvd3[3]; 789 u32 rsvd3[3];
790 u32 sw_sticky; 790 u32 sw_sticky;
791 u32 rsvd4[3]; 791 u32 rsvd4[3];
792 u32 scs; 792 u32 scs;
793 u32 scs_set; 793 u32 scs_set;
794 u32 scs_clr; 794 u32 scs_clr;
795 u32 scs_tog; 795 u32 scs_tog;
796 u32 crc_addr; 796 u32 crc_addr;
797 u32 rsvd5[3]; 797 u32 rsvd5[3];
798 u32 crc_value; 798 u32 crc_value;
799 u32 rsvd6[3]; 799 u32 rsvd6[3];
800 u32 version; 800 u32 version;
801 u32 rsvd7[0xdb]; 801 u32 rsvd7[0xdb];
802 802
803 /* fuse banks */ 803 /* fuse banks */
804 struct fuse_bank { 804 struct fuse_bank {
805 u32 fuse_regs[0x20]; 805 u32 fuse_regs[0x20];
806 } bank[0]; 806 } bank[0];
807 }; 807 };
808 808
809 struct fuse_bank0_regs { 809 struct fuse_bank0_regs {
810 u32 lock; 810 u32 lock;
811 u32 rsvd0[3]; 811 u32 rsvd0[3];
812 u32 uid_low; 812 u32 uid_low;
813 u32 rsvd1[3]; 813 u32 rsvd1[3];
814 u32 uid_high; 814 u32 uid_high;
815 u32 rsvd2[3]; 815 u32 rsvd2[3];
816 u32 cfg2; 816 u32 cfg2;
817 u32 rsvd3[3]; 817 u32 rsvd3[3];
818 u32 cfg3; 818 u32 cfg3;
819 u32 rsvd4[3]; 819 u32 rsvd4[3];
820 u32 cfg4; 820 u32 cfg4;
821 u32 rsvd5[3]; 821 u32 rsvd5[3];
822 u32 cfg5; 822 u32 cfg5;
823 u32 rsvd6[3]; 823 u32 rsvd6[3];
824 u32 cfg6; 824 u32 cfg6;
825 u32 rsvd7[3]; 825 u32 rsvd7[3];
826 }; 826 };
827 827
828 struct fuse_bank1_regs { 828 struct fuse_bank1_regs {
829 u32 mem0; 829 u32 mem0;
830 u32 rsvd0[3]; 830 u32 rsvd0[3];
831 u32 mem1; 831 u32 mem1;
832 u32 rsvd1[3]; 832 u32 rsvd1[3];
833 u32 mem2; 833 u32 mem2;
834 u32 rsvd2[3]; 834 u32 rsvd2[3];
835 u32 mem3; 835 u32 mem3;
836 u32 rsvd3[3]; 836 u32 rsvd3[3];
837 u32 mem4; 837 u32 mem4;
838 u32 rsvd4[3]; 838 u32 rsvd4[3];
839 u32 ana0; 839 u32 ana0;
840 u32 rsvd5[3]; 840 u32 rsvd5[3];
841 u32 ana1; 841 u32 ana1;
842 u32 rsvd6[3]; 842 u32 rsvd6[3];
843 u32 ana2; 843 u32 ana2;
844 u32 rsvd7[3]; 844 u32 rsvd7[3];
845 }; 845 };
846 846
847 struct fuse_bank4_regs { 847 struct fuse_bank4_regs {
848 u32 sjc_resp_low; 848 u32 sjc_resp_low;
849 u32 rsvd0[3]; 849 u32 rsvd0[3];
850 u32 sjc_resp_high; 850 u32 sjc_resp_high;
851 u32 rsvd1[3]; 851 u32 rsvd1[3];
852 u32 mac_addr0; 852 u32 mac_addr0;
853 u32 rsvd2[3]; 853 u32 rsvd2[3];
854 u32 mac_addr1; 854 u32 mac_addr1;
855 u32 rsvd3[3]; 855 u32 rsvd3[3];
856 u32 mac_addr2; /*For i.MX6SX and i.MX6UL*/ 856 u32 mac_addr2; /*For i.MX6SX and i.MX6UL*/
857 u32 rsvd4[7]; 857 u32 rsvd4[7];
858 u32 gp1; 858 u32 gp1;
859 u32 rsvd5[3]; 859 u32 rsvd5[3];
860 u32 gp2; 860 u32 gp2;
861 u32 rsvd6[3]; 861 u32 rsvd6[3];
862 }; 862 };
863 863
864 struct aipstz_regs { 864 struct aipstz_regs {
865 u32 mprot0; 865 u32 mprot0;
866 u32 mprot1; 866 u32 mprot1;
867 u32 rsvd[0xe]; 867 u32 rsvd[0xe];
868 u32 opacr0; 868 u32 opacr0;
869 u32 opacr1; 869 u32 opacr1;
870 u32 opacr2; 870 u32 opacr2;
871 u32 opacr3; 871 u32 opacr3;
872 u32 opacr4; 872 u32 opacr4;
873 }; 873 };
874 874
875 struct anatop_regs { 875 struct anatop_regs {
876 u32 pll_sys; /* 0x000 */ 876 u32 pll_sys; /* 0x000 */
877 u32 pll_sys_set; /* 0x004 */ 877 u32 pll_sys_set; /* 0x004 */
878 u32 pll_sys_clr; /* 0x008 */ 878 u32 pll_sys_clr; /* 0x008 */
879 u32 pll_sys_tog; /* 0x00c */ 879 u32 pll_sys_tog; /* 0x00c */
880 u32 usb1_pll_480_ctrl; /* 0x010 */ 880 u32 usb1_pll_480_ctrl; /* 0x010 */
881 u32 usb1_pll_480_ctrl_set; /* 0x014 */ 881 u32 usb1_pll_480_ctrl_set; /* 0x014 */
882 u32 usb1_pll_480_ctrl_clr; /* 0x018 */ 882 u32 usb1_pll_480_ctrl_clr; /* 0x018 */
883 u32 usb1_pll_480_ctrl_tog; /* 0x01c */ 883 u32 usb1_pll_480_ctrl_tog; /* 0x01c */
884 u32 usb2_pll_480_ctrl; /* 0x020 */ 884 u32 usb2_pll_480_ctrl; /* 0x020 */
885 u32 usb2_pll_480_ctrl_set; /* 0x024 */ 885 u32 usb2_pll_480_ctrl_set; /* 0x024 */
886 u32 usb2_pll_480_ctrl_clr; /* 0x028 */ 886 u32 usb2_pll_480_ctrl_clr; /* 0x028 */
887 u32 usb2_pll_480_ctrl_tog; /* 0x02c */ 887 u32 usb2_pll_480_ctrl_tog; /* 0x02c */
888 u32 pll_528; /* 0x030 */ 888 u32 pll_528; /* 0x030 */
889 u32 pll_528_set; /* 0x034 */ 889 u32 pll_528_set; /* 0x034 */
890 u32 pll_528_clr; /* 0x038 */ 890 u32 pll_528_clr; /* 0x038 */
891 u32 pll_528_tog; /* 0x03c */ 891 u32 pll_528_tog; /* 0x03c */
892 u32 pll_528_ss; /* 0x040 */ 892 u32 pll_528_ss; /* 0x040 */
893 u32 rsvd0[3]; 893 u32 rsvd0[3];
894 u32 pll_528_num; /* 0x050 */ 894 u32 pll_528_num; /* 0x050 */
895 u32 rsvd1[3]; 895 u32 rsvd1[3];
896 u32 pll_528_denom; /* 0x060 */ 896 u32 pll_528_denom; /* 0x060 */
897 u32 rsvd2[3]; 897 u32 rsvd2[3];
898 u32 pll_audio; /* 0x070 */ 898 u32 pll_audio; /* 0x070 */
899 u32 pll_audio_set; /* 0x074 */ 899 u32 pll_audio_set; /* 0x074 */
900 u32 pll_audio_clr; /* 0x078 */ 900 u32 pll_audio_clr; /* 0x078 */
901 u32 pll_audio_tog; /* 0x07c */ 901 u32 pll_audio_tog; /* 0x07c */
902 u32 pll_audio_num; /* 0x080 */ 902 u32 pll_audio_num; /* 0x080 */
903 u32 rsvd3[3]; 903 u32 rsvd3[3];
904 u32 pll_audio_denom; /* 0x090 */ 904 u32 pll_audio_denom; /* 0x090 */
905 u32 rsvd4[3]; 905 u32 rsvd4[3];
906 u32 pll_video; /* 0x0a0 */ 906 u32 pll_video; /* 0x0a0 */
907 u32 pll_video_set; /* 0x0a4 */ 907 u32 pll_video_set; /* 0x0a4 */
908 u32 pll_video_clr; /* 0x0a8 */ 908 u32 pll_video_clr; /* 0x0a8 */
909 u32 pll_video_tog; /* 0x0ac */ 909 u32 pll_video_tog; /* 0x0ac */
910 u32 pll_video_num; /* 0x0b0 */ 910 u32 pll_video_num; /* 0x0b0 */
911 u32 rsvd5[3]; 911 u32 rsvd5[3];
912 u32 pll_video_denom; /* 0x0c0 */ 912 u32 pll_video_denom; /* 0x0c0 */
913 u32 rsvd6[3]; 913 u32 rsvd6[3];
914 u32 pll_mlb; /* 0x0d0 */ 914 u32 pll_mlb; /* 0x0d0 */
915 u32 pll_mlb_set; /* 0x0d4 */ 915 u32 pll_mlb_set; /* 0x0d4 */
916 u32 pll_mlb_clr; /* 0x0d8 */ 916 u32 pll_mlb_clr; /* 0x0d8 */
917 u32 pll_mlb_tog; /* 0x0dc */ 917 u32 pll_mlb_tog; /* 0x0dc */
918 u32 pll_enet; /* 0x0e0 */ 918 u32 pll_enet; /* 0x0e0 */
919 u32 pll_enet_set; /* 0x0e4 */ 919 u32 pll_enet_set; /* 0x0e4 */
920 u32 pll_enet_clr; /* 0x0e8 */ 920 u32 pll_enet_clr; /* 0x0e8 */
921 u32 pll_enet_tog; /* 0x0ec */ 921 u32 pll_enet_tog; /* 0x0ec */
922 u32 pfd_480; /* 0x0f0 */ 922 u32 pfd_480; /* 0x0f0 */
923 u32 pfd_480_set; /* 0x0f4 */ 923 u32 pfd_480_set; /* 0x0f4 */
924 u32 pfd_480_clr; /* 0x0f8 */ 924 u32 pfd_480_clr; /* 0x0f8 */
925 u32 pfd_480_tog; /* 0x0fc */ 925 u32 pfd_480_tog; /* 0x0fc */
926 u32 pfd_528; /* 0x100 */ 926 u32 pfd_528; /* 0x100 */
927 u32 pfd_528_set; /* 0x104 */ 927 u32 pfd_528_set; /* 0x104 */
928 u32 pfd_528_clr; /* 0x108 */ 928 u32 pfd_528_clr; /* 0x108 */
929 u32 pfd_528_tog; /* 0x10c */ 929 u32 pfd_528_tog; /* 0x10c */
930 u32 reg_1p1; /* 0x110 */ 930 u32 reg_1p1; /* 0x110 */
931 u32 reg_1p1_set; /* 0x114 */ 931 u32 reg_1p1_set; /* 0x114 */
932 u32 reg_1p1_clr; /* 0x118 */ 932 u32 reg_1p1_clr; /* 0x118 */
933 u32 reg_1p1_tog; /* 0x11c */ 933 u32 reg_1p1_tog; /* 0x11c */
934 u32 reg_3p0; /* 0x120 */ 934 u32 reg_3p0; /* 0x120 */
935 u32 reg_3p0_set; /* 0x124 */ 935 u32 reg_3p0_set; /* 0x124 */
936 u32 reg_3p0_clr; /* 0x128 */ 936 u32 reg_3p0_clr; /* 0x128 */
937 u32 reg_3p0_tog; /* 0x12c */ 937 u32 reg_3p0_tog; /* 0x12c */
938 u32 reg_2p5; /* 0x130 */ 938 u32 reg_2p5; /* 0x130 */
939 u32 reg_2p5_set; /* 0x134 */ 939 u32 reg_2p5_set; /* 0x134 */
940 u32 reg_2p5_clr; /* 0x138 */ 940 u32 reg_2p5_clr; /* 0x138 */
941 u32 reg_2p5_tog; /* 0x13c */ 941 u32 reg_2p5_tog; /* 0x13c */
942 u32 reg_core; /* 0x140 */ 942 u32 reg_core; /* 0x140 */
943 u32 reg_core_set; /* 0x144 */ 943 u32 reg_core_set; /* 0x144 */
944 u32 reg_core_clr; /* 0x148 */ 944 u32 reg_core_clr; /* 0x148 */
945 u32 reg_core_tog; /* 0x14c */ 945 u32 reg_core_tog; /* 0x14c */
946 u32 ana_misc0; /* 0x150 */ 946 u32 ana_misc0; /* 0x150 */
947 u32 ana_misc0_set; /* 0x154 */ 947 u32 ana_misc0_set; /* 0x154 */
948 u32 ana_misc0_clr; /* 0x158 */ 948 u32 ana_misc0_clr; /* 0x158 */
949 u32 ana_misc0_tog; /* 0x15c */ 949 u32 ana_misc0_tog; /* 0x15c */
950 u32 ana_misc1; /* 0x160 */ 950 u32 ana_misc1; /* 0x160 */
951 u32 ana_misc1_set; /* 0x164 */ 951 u32 ana_misc1_set; /* 0x164 */
952 u32 ana_misc1_clr; /* 0x168 */ 952 u32 ana_misc1_clr; /* 0x168 */
953 u32 ana_misc1_tog; /* 0x16c */ 953 u32 ana_misc1_tog; /* 0x16c */
954 u32 ana_misc2; /* 0x170 */ 954 u32 ana_misc2; /* 0x170 */
955 u32 ana_misc2_set; /* 0x174 */ 955 u32 ana_misc2_set; /* 0x174 */
956 u32 ana_misc2_clr; /* 0x178 */ 956 u32 ana_misc2_clr; /* 0x178 */
957 u32 ana_misc2_tog; /* 0x17c */ 957 u32 ana_misc2_tog; /* 0x17c */
958 u32 tempsense0; /* 0x180 */ 958 u32 tempsense0; /* 0x180 */
959 u32 tempsense0_set; /* 0x184 */ 959 u32 tempsense0_set; /* 0x184 */
960 u32 tempsense0_clr; /* 0x188 */ 960 u32 tempsense0_clr; /* 0x188 */
961 u32 tempsense0_tog; /* 0x18c */ 961 u32 tempsense0_tog; /* 0x18c */
962 u32 tempsense1; /* 0x190 */ 962 u32 tempsense1; /* 0x190 */
963 u32 tempsense1_set; /* 0x194 */ 963 u32 tempsense1_set; /* 0x194 */
964 u32 tempsense1_clr; /* 0x198 */ 964 u32 tempsense1_clr; /* 0x198 */
965 u32 tempsense1_tog; /* 0x19c */ 965 u32 tempsense1_tog; /* 0x19c */
966 u32 usb1_vbus_detect; /* 0x1a0 */ 966 u32 usb1_vbus_detect; /* 0x1a0 */
967 u32 usb1_vbus_detect_set; /* 0x1a4 */ 967 u32 usb1_vbus_detect_set; /* 0x1a4 */
968 u32 usb1_vbus_detect_clr; /* 0x1a8 */ 968 u32 usb1_vbus_detect_clr; /* 0x1a8 */
969 u32 usb1_vbus_detect_tog; /* 0x1ac */ 969 u32 usb1_vbus_detect_tog; /* 0x1ac */
970 u32 usb1_chrg_detect; /* 0x1b0 */ 970 u32 usb1_chrg_detect; /* 0x1b0 */
971 u32 usb1_chrg_detect_set; /* 0x1b4 */ 971 u32 usb1_chrg_detect_set; /* 0x1b4 */
972 u32 usb1_chrg_detect_clr; /* 0x1b8 */ 972 u32 usb1_chrg_detect_clr; /* 0x1b8 */
973 u32 usb1_chrg_detect_tog; /* 0x1bc */ 973 u32 usb1_chrg_detect_tog; /* 0x1bc */
974 u32 usb1_vbus_det_stat; /* 0x1c0 */ 974 u32 usb1_vbus_det_stat; /* 0x1c0 */
975 u32 usb1_vbus_det_stat_set; /* 0x1c4 */ 975 u32 usb1_vbus_det_stat_set; /* 0x1c4 */
976 u32 usb1_vbus_det_stat_clr; /* 0x1c8 */ 976 u32 usb1_vbus_det_stat_clr; /* 0x1c8 */
977 u32 usb1_vbus_det_stat_tog; /* 0x1cc */ 977 u32 usb1_vbus_det_stat_tog; /* 0x1cc */
978 u32 usb1_chrg_det_stat; /* 0x1d0 */ 978 u32 usb1_chrg_det_stat; /* 0x1d0 */
979 u32 usb1_chrg_det_stat_set; /* 0x1d4 */ 979 u32 usb1_chrg_det_stat_set; /* 0x1d4 */
980 u32 usb1_chrg_det_stat_clr; /* 0x1d8 */ 980 u32 usb1_chrg_det_stat_clr; /* 0x1d8 */
981 u32 usb1_chrg_det_stat_tog; /* 0x1dc */ 981 u32 usb1_chrg_det_stat_tog; /* 0x1dc */
982 u32 usb1_loopback; /* 0x1e0 */ 982 u32 usb1_loopback; /* 0x1e0 */
983 u32 usb1_loopback_set; /* 0x1e4 */ 983 u32 usb1_loopback_set; /* 0x1e4 */
984 u32 usb1_loopback_clr; /* 0x1e8 */ 984 u32 usb1_loopback_clr; /* 0x1e8 */
985 u32 usb1_loopback_tog; /* 0x1ec */ 985 u32 usb1_loopback_tog; /* 0x1ec */
986 u32 usb1_misc; /* 0x1f0 */ 986 u32 usb1_misc; /* 0x1f0 */
987 u32 usb1_misc_set; /* 0x1f4 */ 987 u32 usb1_misc_set; /* 0x1f4 */
988 u32 usb1_misc_clr; /* 0x1f8 */ 988 u32 usb1_misc_clr; /* 0x1f8 */
989 u32 usb1_misc_tog; /* 0x1fc */ 989 u32 usb1_misc_tog; /* 0x1fc */
990 u32 usb2_vbus_detect; /* 0x200 */ 990 u32 usb2_vbus_detect; /* 0x200 */
991 u32 usb2_vbus_detect_set; /* 0x204 */ 991 u32 usb2_vbus_detect_set; /* 0x204 */
992 u32 usb2_vbus_detect_clr; /* 0x208 */ 992 u32 usb2_vbus_detect_clr; /* 0x208 */
993 u32 usb2_vbus_detect_tog; /* 0x20c */ 993 u32 usb2_vbus_detect_tog; /* 0x20c */
994 u32 usb2_chrg_detect; /* 0x210 */ 994 u32 usb2_chrg_detect; /* 0x210 */
995 u32 usb2_chrg_detect_set; /* 0x214 */ 995 u32 usb2_chrg_detect_set; /* 0x214 */
996 u32 usb2_chrg_detect_clr; /* 0x218 */ 996 u32 usb2_chrg_detect_clr; /* 0x218 */
997 u32 usb2_chrg_detect_tog; /* 0x21c */ 997 u32 usb2_chrg_detect_tog; /* 0x21c */
998 u32 usb2_vbus_det_stat; /* 0x220 */ 998 u32 usb2_vbus_det_stat; /* 0x220 */
999 u32 usb2_vbus_det_stat_set; /* 0x224 */ 999 u32 usb2_vbus_det_stat_set; /* 0x224 */
1000 u32 usb2_vbus_det_stat_clr; /* 0x228 */ 1000 u32 usb2_vbus_det_stat_clr; /* 0x228 */
1001 u32 usb2_vbus_det_stat_tog; /* 0x22c */ 1001 u32 usb2_vbus_det_stat_tog; /* 0x22c */
1002 u32 usb2_chrg_det_stat; /* 0x230 */ 1002 u32 usb2_chrg_det_stat; /* 0x230 */
1003 u32 usb2_chrg_det_stat_set; /* 0x234 */ 1003 u32 usb2_chrg_det_stat_set; /* 0x234 */
1004 u32 usb2_chrg_det_stat_clr; /* 0x238 */ 1004 u32 usb2_chrg_det_stat_clr; /* 0x238 */
1005 u32 usb2_chrg_det_stat_tog; /* 0x23c */ 1005 u32 usb2_chrg_det_stat_tog; /* 0x23c */
1006 u32 usb2_loopback; /* 0x240 */ 1006 u32 usb2_loopback; /* 0x240 */
1007 u32 usb2_loopback_set; /* 0x244 */ 1007 u32 usb2_loopback_set; /* 0x244 */
1008 u32 usb2_loopback_clr; /* 0x248 */ 1008 u32 usb2_loopback_clr; /* 0x248 */
1009 u32 usb2_loopback_tog; /* 0x24c */ 1009 u32 usb2_loopback_tog; /* 0x24c */
1010 u32 usb2_misc; /* 0x250 */ 1010 u32 usb2_misc; /* 0x250 */
1011 u32 usb2_misc_set; /* 0x254 */ 1011 u32 usb2_misc_set; /* 0x254 */
1012 u32 usb2_misc_clr; /* 0x258 */ 1012 u32 usb2_misc_clr; /* 0x258 */
1013 u32 usb2_misc_tog; /* 0x25c */ 1013 u32 usb2_misc_tog; /* 0x25c */
1014 u32 digprog; /* 0x260 */ 1014 u32 digprog; /* 0x260 */
1015 u32 reserved1[7]; 1015 u32 reserved1[7];
1016 u32 digprog_sololite; /* 0x280 */ 1016 u32 digprog_sololite; /* 0x280 */
1017 }; 1017 };
1018 1018
1019 #define ANATOP_PFD_FRAC_SHIFT(n) ((n)*8) 1019 #define ANATOP_PFD_FRAC_SHIFT(n) ((n)*8)
1020 #define ANATOP_PFD_FRAC_MASK(n) (0x3f<<ANATOP_PFD_FRAC_SHIFT(n)) 1020 #define ANATOP_PFD_FRAC_MASK(n) (0x3f<<ANATOP_PFD_FRAC_SHIFT(n))
1021 #define ANATOP_PFD_STABLE_SHIFT(n) (6+((n)*8)) 1021 #define ANATOP_PFD_STABLE_SHIFT(n) (6+((n)*8))
1022 #define ANATOP_PFD_STABLE_MASK(n) (1<<ANATOP_PFD_STABLE_SHIFT(n)) 1022 #define ANATOP_PFD_STABLE_MASK(n) (1<<ANATOP_PFD_STABLE_SHIFT(n))
1023 #define ANATOP_PFD_CLKGATE_SHIFT(n) (7+((n)*8)) 1023 #define ANATOP_PFD_CLKGATE_SHIFT(n) (7+((n)*8))
1024 #define ANATOP_PFD_CLKGATE_MASK(n) (1<<ANATOP_PFD_CLKGATE_SHIFT(n)) 1024 #define ANATOP_PFD_CLKGATE_MASK(n) (1<<ANATOP_PFD_CLKGATE_SHIFT(n))
1025 1025
1026 struct iomuxc_gpr_base_regs { 1026 struct iomuxc_gpr_base_regs {
1027 #if defined(CONFIG_MX6UL) 1027 #if defined(CONFIG_MX6UL)
1028 u32 gpr[15]; /* 0x000 */ 1028 u32 gpr[15]; /* 0x000 */
1029 #else 1029 #else
1030 u32 gpr[14]; /* 0x000 */ 1030 u32 gpr[14]; /* 0x000 */
1031 #endif 1031 #endif
1032 }; 1032 };
1033 1033
1034 struct iomuxc_base_regs { 1034 struct iomuxc_base_regs {
1035 #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)) 1035 #if !(defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL))
1036 u32 gpr[14]; /* 0x000 */ 1036 u32 gpr[14]; /* 0x000 */
1037 #endif 1037 #endif
1038 u32 obsrv[5]; /* 0x038 */ 1038 u32 obsrv[5]; /* 0x038 */
1039 u32 swmux_ctl[197]; /* 0x04c */ 1039 u32 swmux_ctl[197]; /* 0x04c */
1040 u32 swpad_ctl[250]; /* 0x360 */ 1040 u32 swpad_ctl[250]; /* 0x360 */
1041 u32 swgrp[26]; /* 0x748 */ 1041 u32 swgrp[26]; /* 0x748 */
1042 u32 daisy[104]; /* 0x7b0..94c */ 1042 u32 daisy[104]; /* 0x7b0..94c */
1043 }; 1043 };
1044 1044
1045 struct wdog_regs { 1045 struct wdog_regs {
1046 u16 wcr; /* Control */ 1046 u16 wcr; /* Control */
1047 u16 wsr; /* Service */ 1047 u16 wsr; /* Service */
1048 u16 wrsr; /* Reset Status */ 1048 u16 wrsr; /* Reset Status */
1049 u16 wicr; /* Interrupt Control */ 1049 u16 wicr; /* Interrupt Control */
1050 u16 wmcr; /* Miscellaneous Control */ 1050 u16 wmcr; /* Miscellaneous Control */
1051 }; 1051 };
1052 1052
1053 #define PWMCR_PRESCALER(x) (((x - 1) & 0xFFF) << 4) 1053 #define PWMCR_PRESCALER(x) (((x - 1) & 0xFFF) << 4)
1054 #define PWMCR_DOZEEN (1 << 24) 1054 #define PWMCR_DOZEEN (1 << 24)
1055 #define PWMCR_WAITEN (1 << 23) 1055 #define PWMCR_WAITEN (1 << 23)
1056 #define PWMCR_DBGEN (1 << 22) 1056 #define PWMCR_DBGEN (1 << 22)
1057 #define PWMCR_CLKSRC_IPG_HIGH (2 << 16) 1057 #define PWMCR_CLKSRC_IPG_HIGH (2 << 16)
1058 #define PWMCR_CLKSRC_IPG (1 << 16) 1058 #define PWMCR_CLKSRC_IPG (1 << 16)
1059 #define PWMCR_EN (1 << 0) 1059 #define PWMCR_EN (1 << 0)
1060 1060
1061 struct pwm_regs { 1061 struct pwm_regs {
1062 u32 cr; 1062 u32 cr;
1063 u32 sr; 1063 u32 sr;
1064 u32 ir; 1064 u32 ir;
1065 u32 sar; 1065 u32 sar;
1066 u32 pr; 1066 u32 pr;
1067 u32 cnr; 1067 u32 cnr;
1068 }; 1068 };
1069 1069
1070 struct dbg_monitor_regs { 1070 struct dbg_monitor_regs {
1071 u32 ctrl[4]; /* Control */ 1071 u32 ctrl[4]; /* Control */
1072 u32 master_en[4]; /* Master enable */ 1072 u32 master_en[4]; /* Master enable */
1073 u32 irq[4]; /* IRQ */ 1073 u32 irq[4]; /* IRQ */
1074 u32 trap_addr_low[4]; /* Trap address low */ 1074 u32 trap_addr_low[4]; /* Trap address low */
1075 u32 trap_addr_high[4]; /* Trap address high */ 1075 u32 trap_addr_high[4]; /* Trap address high */
1076 u32 trap_id[4]; /* Trap ID */ 1076 u32 trap_id[4]; /* Trap ID */
1077 u32 snvs_addr[4]; /* SNVS address */ 1077 u32 snvs_addr[4]; /* SNVS address */
1078 u32 snvs_data[4]; /* SNVS data */ 1078 u32 snvs_data[4]; /* SNVS data */
1079 u32 snvs_info[4]; /* SNVS info */ 1079 u32 snvs_info[4]; /* SNVS info */
1080 u32 version[4]; /* Version */ 1080 u32 version[4]; /* Version */
1081 }; 1081 };
1082 1082
1083 /* 1083 /*
1084 * If ROM fail back to USB recover mode, USBPH0_PWD will be clear to use USB 1084 * If ROM fail back to USB recover mode, USBPH0_PWD will be clear to use USB
1085 * If boot from the other mode, USB0_PWD will keep reset value 1085 * If boot from the other mode, USB0_PWD will keep reset value
1086 */ 1086 */
1087 #define is_boot_from_usb(void) (!(readl(USB_PHY0_BASE_ADDR) & (1<<20))) 1087 #define is_boot_from_usb(void) (!(readl(USB_PHY0_BASE_ADDR) & (1<<20)))
1088 #define disconnect_from_pc(void) writel(0x0, OTG_BASE_ADDR + 0x140) 1088 #define disconnect_from_pc(void) writel(0x0, OTG_BASE_ADDR + 0x140)
1089 1089
1090 #endif /* __ASSEMBLER__*/ 1090 #endif /* __ASSEMBLER__*/
1091 #endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */ 1091 #endif /* __ASM_ARCH_MX6_IMX_REGS_H__ */
1092 1092