blob: d0de335ea1e9e31ec3846ff394ceb95828a1b06a [file] [log] [blame]
Ulf Hanssonbce5afd2012-08-27 15:45:51 +02001/*
2 * Clock definitions for u8540 platform.
3 *
4 * Copyright (C) 2012 ST-Ericsson SA
5 * Author: Ulf Hansson <ulf.hansson@linaro.org>
6 *
7 * License terms: GNU General Public License (GPL) version 2
8 */
9
Ulf Hanssonbce5afd2012-08-27 15:45:51 +020010#include <linux/clkdev.h>
11#include <linux/clk-provider.h>
12#include <linux/mfd/dbx500-prcmu.h>
13#include <linux/platform_data/clk-ux500.h>
Ulf Hanssonbce5afd2012-08-27 15:45:51 +020014#include "clk.h"
15
Philippe Begnic1237e592013-05-27 14:41:29 +020016void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
17 u32 clkrst5_base, u32 clkrst6_base)
Ulf Hanssonbce5afd2012-08-27 15:45:51 +020018{
Philippe Begnica6a3ec72013-05-27 14:41:32 +020019 struct clk *clk;
20
21 /* Clock sources. */
22 /* Fixed ClockGen */
23 clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
24 CLK_IS_ROOT|CLK_IGNORE_UNUSED);
25 clk_register_clkdev(clk, "soc0_pll", NULL);
26
27 clk = clk_reg_prcmu_gate("soc1_pll", NULL, PRCMU_PLLSOC1,
28 CLK_IS_ROOT|CLK_IGNORE_UNUSED);
29 clk_register_clkdev(clk, "soc1_pll", NULL);
30
31 clk = clk_reg_prcmu_gate("ddr_pll", NULL, PRCMU_PLLDDR,
32 CLK_IS_ROOT|CLK_IGNORE_UNUSED);
33 clk_register_clkdev(clk, "ddr_pll", NULL);
34
35 clk = clk_register_fixed_rate(NULL, "rtc32k", NULL,
36 CLK_IS_ROOT|CLK_IGNORE_UNUSED,
37 32768);
38 clk_register_clkdev(clk, "clk32k", NULL);
39 clk_register_clkdev(clk, "apb_pclk", "rtc-pl031");
40
41 clk = clk_register_fixed_rate(NULL, "ulp38m4", NULL,
42 CLK_IS_ROOT|CLK_IGNORE_UNUSED,
43 38400000);
44
45 clk = clk_reg_prcmu_gate("uartclk", NULL, PRCMU_UARTCLK, CLK_IS_ROOT);
46 clk_register_clkdev(clk, NULL, "UART");
47
48 /* msp02clk needs a abx500 clk as parent. Handle by abx500 clk driver */
49 clk = clk_reg_prcmu_gate("msp02clk", "ab9540_sysclk12_b1",
50 PRCMU_MSP02CLK, 0);
51 clk_register_clkdev(clk, NULL, "MSP02");
52
53 clk = clk_reg_prcmu_gate("msp1clk", NULL, PRCMU_MSP1CLK, CLK_IS_ROOT);
54 clk_register_clkdev(clk, NULL, "MSP1");
55
56 clk = clk_reg_prcmu_gate("i2cclk", NULL, PRCMU_I2CCLK, CLK_IS_ROOT);
57 clk_register_clkdev(clk, NULL, "I2C");
58
59 clk = clk_reg_prcmu_gate("slimclk", NULL, PRCMU_SLIMCLK, CLK_IS_ROOT);
60 clk_register_clkdev(clk, NULL, "slim");
61
62 clk = clk_reg_prcmu_gate("per1clk", NULL, PRCMU_PER1CLK, CLK_IS_ROOT);
63 clk_register_clkdev(clk, NULL, "PERIPH1");
64
65 clk = clk_reg_prcmu_gate("per2clk", NULL, PRCMU_PER2CLK, CLK_IS_ROOT);
66 clk_register_clkdev(clk, NULL, "PERIPH2");
67
68 clk = clk_reg_prcmu_gate("per3clk", NULL, PRCMU_PER3CLK, CLK_IS_ROOT);
69 clk_register_clkdev(clk, NULL, "PERIPH3");
70
71 clk = clk_reg_prcmu_gate("per5clk", NULL, PRCMU_PER5CLK, CLK_IS_ROOT);
72 clk_register_clkdev(clk, NULL, "PERIPH5");
73
74 clk = clk_reg_prcmu_gate("per6clk", NULL, PRCMU_PER6CLK, CLK_IS_ROOT);
75 clk_register_clkdev(clk, NULL, "PERIPH6");
76
77 clk = clk_reg_prcmu_gate("per7clk", NULL, PRCMU_PER7CLK, CLK_IS_ROOT);
78 clk_register_clkdev(clk, NULL, "PERIPH7");
79
80 clk = clk_reg_prcmu_scalable("lcdclk", NULL, PRCMU_LCDCLK, 0,
81 CLK_IS_ROOT|CLK_SET_RATE_GATE);
82 clk_register_clkdev(clk, NULL, "lcd");
83 clk_register_clkdev(clk, "lcd", "mcde");
84
Lee Jones0473b172013-08-08 10:38:15 +010085 clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK,
Philippe Begnica6a3ec72013-05-27 14:41:32 +020086 CLK_IS_ROOT);
87 clk_register_clkdev(clk, NULL, "bml");
88
89 clk = clk_reg_prcmu_scalable("hsitxclk", NULL, PRCMU_HSITXCLK, 0,
90 CLK_IS_ROOT|CLK_SET_RATE_GATE);
91
92 clk = clk_reg_prcmu_scalable("hsirxclk", NULL, PRCMU_HSIRXCLK, 0,
93 CLK_IS_ROOT|CLK_SET_RATE_GATE);
94
95 clk = clk_reg_prcmu_scalable("hdmiclk", NULL, PRCMU_HDMICLK, 0,
96 CLK_IS_ROOT|CLK_SET_RATE_GATE);
97 clk_register_clkdev(clk, NULL, "hdmi");
98 clk_register_clkdev(clk, "hdmi", "mcde");
99
100 clk = clk_reg_prcmu_gate("apeatclk", NULL, PRCMU_APEATCLK, CLK_IS_ROOT);
101 clk_register_clkdev(clk, NULL, "apeat");
102
103 clk = clk_reg_prcmu_gate("apetraceclk", NULL, PRCMU_APETRACECLK,
104 CLK_IS_ROOT);
105 clk_register_clkdev(clk, NULL, "apetrace");
106
107 clk = clk_reg_prcmu_gate("mcdeclk", NULL, PRCMU_MCDECLK, CLK_IS_ROOT);
108 clk_register_clkdev(clk, NULL, "mcde");
109 clk_register_clkdev(clk, "mcde", "mcde");
110 clk_register_clkdev(clk, NULL, "dsilink.0");
111 clk_register_clkdev(clk, NULL, "dsilink.1");
112 clk_register_clkdev(clk, NULL, "dsilink.2");
113
114 clk = clk_reg_prcmu_opp_gate("ipi2cclk", NULL, PRCMU_IPI2CCLK,
115 CLK_IS_ROOT);
116 clk_register_clkdev(clk, NULL, "ipi2");
117
118 clk = clk_reg_prcmu_gate("dsialtclk", NULL, PRCMU_DSIALTCLK,
119 CLK_IS_ROOT);
120 clk_register_clkdev(clk, NULL, "dsialt");
121
122 clk = clk_reg_prcmu_gate("dmaclk", NULL, PRCMU_DMACLK, CLK_IS_ROOT);
123 clk_register_clkdev(clk, NULL, "dma40.0");
124
125 clk = clk_reg_prcmu_gate("b2r2clk", NULL, PRCMU_B2R2CLK, CLK_IS_ROOT);
126 clk_register_clkdev(clk, NULL, "b2r2");
127 clk_register_clkdev(clk, NULL, "b2r2_core");
128 clk_register_clkdev(clk, NULL, "U8500-B2R2.0");
129 clk_register_clkdev(clk, NULL, "b2r2_1_core");
130
131 clk = clk_reg_prcmu_scalable("tvclk", NULL, PRCMU_TVCLK, 0,
132 CLK_IS_ROOT|CLK_SET_RATE_GATE);
133 clk_register_clkdev(clk, NULL, "tv");
134 clk_register_clkdev(clk, "tv", "mcde");
135
136 clk = clk_reg_prcmu_gate("sspclk", NULL, PRCMU_SSPCLK, CLK_IS_ROOT);
137 clk_register_clkdev(clk, NULL, "SSP");
138
139 clk = clk_reg_prcmu_gate("rngclk", NULL, PRCMU_RNGCLK, CLK_IS_ROOT);
140 clk_register_clkdev(clk, NULL, "rngclk");
141
142 clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT);
143 clk_register_clkdev(clk, NULL, "uicc");
144
145 clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT);
146 clk_register_clkdev(clk, NULL, "mtu0");
147 clk_register_clkdev(clk, NULL, "mtu1");
148
149 clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL,
150 PRCMU_SDMMCCLK, 100000000,
151 CLK_IS_ROOT|CLK_SET_RATE_GATE);
152 clk_register_clkdev(clk, NULL, "sdmmc");
153
154 clk = clk_reg_prcmu_opp_volt_scalable("sdmmchclk", NULL,
155 PRCMU_SDMMCHCLK, 400000000,
156 CLK_IS_ROOT|CLK_SET_RATE_GATE);
157 clk_register_clkdev(clk, NULL, "sdmmchclk");
158
159 clk = clk_reg_prcmu_gate("hvaclk", NULL, PRCMU_HVACLK, CLK_IS_ROOT);
160 clk_register_clkdev(clk, NULL, "hva");
161
162 clk = clk_reg_prcmu_gate("g1clk", NULL, PRCMU_G1CLK, CLK_IS_ROOT);
163 clk_register_clkdev(clk, NULL, "g1");
164
165 clk = clk_reg_prcmu_scalable("spare1clk", NULL, PRCMU_SPARE1CLK, 0,
166 CLK_IS_ROOT|CLK_SET_RATE_GATE);
167 clk_register_clkdev(clk, "dsilcd", "mcde");
168
169 clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
170 PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
171 clk_register_clkdev(clk, "dsihs2", "mcde");
172 clk_register_clkdev(clk, "hs_clk", "dsilink.2");
173
174 clk = clk_reg_prcmu_scalable("dsilcd_pll", "spare1clk",
175 PRCMU_PLLDSI_LCD, 0, CLK_SET_RATE_GATE);
176 clk_register_clkdev(clk, "dsilcd_pll", "mcde");
177
178 clk = clk_reg_prcmu_scalable("dsi0clk", "dsi_pll",
179 PRCMU_DSI0CLK, 0, CLK_SET_RATE_GATE);
180 clk_register_clkdev(clk, "dsihs0", "mcde");
181
182 clk = clk_reg_prcmu_scalable("dsi0lcdclk", "dsilcd_pll",
183 PRCMU_DSI0CLK_LCD, 0, CLK_SET_RATE_GATE);
184 clk_register_clkdev(clk, "dsihs0", "mcde");
185 clk_register_clkdev(clk, "hs_clk", "dsilink.0");
186
187 clk = clk_reg_prcmu_scalable("dsi1clk", "dsi_pll",
188 PRCMU_DSI1CLK, 0, CLK_SET_RATE_GATE);
189 clk_register_clkdev(clk, "dsihs1", "mcde");
190
191 clk = clk_reg_prcmu_scalable("dsi1lcdclk", "dsilcd_pll",
192 PRCMU_DSI1CLK_LCD, 0, CLK_SET_RATE_GATE);
193 clk_register_clkdev(clk, "dsihs1", "mcde");
194 clk_register_clkdev(clk, "hs_clk", "dsilink.1");
195
196 clk = clk_reg_prcmu_scalable("dsi0escclk", "tvclk",
197 PRCMU_DSI0ESCCLK, 0, CLK_SET_RATE_GATE);
198 clk_register_clkdev(clk, "lp_clk", "dsilink.0");
199 clk_register_clkdev(clk, "dsilp0", "mcde");
200
201 clk = clk_reg_prcmu_scalable("dsi1escclk", "tvclk",
202 PRCMU_DSI1ESCCLK, 0, CLK_SET_RATE_GATE);
203 clk_register_clkdev(clk, "lp_clk", "dsilink.1");
204 clk_register_clkdev(clk, "dsilp1", "mcde");
205
206 clk = clk_reg_prcmu_scalable("dsi2escclk", "tvclk",
207 PRCMU_DSI2ESCCLK, 0, CLK_SET_RATE_GATE);
208 clk_register_clkdev(clk, "lp_clk", "dsilink.2");
209 clk_register_clkdev(clk, "dsilp2", "mcde");
210
211 clk = clk_reg_prcmu_scalable_rate("armss", NULL,
212 PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
213 clk_register_clkdev(clk, "armss", NULL);
214
215 clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
216 CLK_IGNORE_UNUSED, 1, 2);
217 clk_register_clkdev(clk, NULL, "smp_twd");
218
219 /* PRCC P-clocks */
220 /* Peripheral 1 : PRCC P-clocks */
221 clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base,
222 BIT(0), 0);
223 clk_register_clkdev(clk, "apb_pclk", "uart0");
224
225 clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base,
226 BIT(1), 0);
227 clk_register_clkdev(clk, "apb_pclk", "uart1");
228
229 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base,
230 BIT(2), 0);
231 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1");
232
233 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base,
234 BIT(3), 0);
235 clk_register_clkdev(clk, "apb_pclk", "msp0");
236 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.0");
237
238 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base,
239 BIT(4), 0);
240 clk_register_clkdev(clk, "apb_pclk", "msp1");
241 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.1");
242
243 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base,
244 BIT(5), 0);
245 clk_register_clkdev(clk, "apb_pclk", "sdi0");
246
247 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base,
248 BIT(6), 0);
249 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2");
250
251 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base,
252 BIT(7), 0);
253 clk_register_clkdev(clk, NULL, "spi3");
254
255 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base,
256 BIT(8), 0);
257 clk_register_clkdev(clk, "apb_pclk", "slimbus0");
258
259 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base,
260 BIT(9), 0);
261 clk_register_clkdev(clk, NULL, "gpio.0");
262 clk_register_clkdev(clk, NULL, "gpio.1");
263 clk_register_clkdev(clk, NULL, "gpioblock0");
264 clk_register_clkdev(clk, "apb_pclk", "ab85xx-codec.0");
265
266 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base,
267 BIT(10), 0);
268 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4");
269
270 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base,
271 BIT(11), 0);
272 clk_register_clkdev(clk, "apb_pclk", "msp3");
273 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.3");
274
275 /* Peripheral 2 : PRCC P-clocks */
276 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base,
277 BIT(0), 0);
278 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3");
279
280 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base,
281 BIT(1), 0);
282 clk_register_clkdev(clk, NULL, "spi2");
283
284 clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base,
285 BIT(2), 0);
286 clk_register_clkdev(clk, NULL, "spi1");
287
288 clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base,
289 BIT(3), 0);
290 clk_register_clkdev(clk, NULL, "pwl");
291
292 clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base,
293 BIT(4), 0);
294 clk_register_clkdev(clk, "apb_pclk", "sdi4");
295
296 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base,
297 BIT(5), 0);
298 clk_register_clkdev(clk, "apb_pclk", "msp2");
299 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.2");
300
301 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base,
302 BIT(6), 0);
303 clk_register_clkdev(clk, "apb_pclk", "sdi1");
304
305 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base,
306 BIT(7), 0);
307 clk_register_clkdev(clk, "apb_pclk", "sdi3");
308
309 clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base,
310 BIT(8), 0);
311 clk_register_clkdev(clk, NULL, "spi0");
312
313 clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base,
314 BIT(9), 0);
315 clk_register_clkdev(clk, "hsir_hclk", "ste_hsi.0");
316
317 clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base,
318 BIT(10), 0);
319 clk_register_clkdev(clk, "hsit_hclk", "ste_hsi.0");
320
321 clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base,
322 BIT(11), 0);
323 clk_register_clkdev(clk, NULL, "gpio.6");
324 clk_register_clkdev(clk, NULL, "gpio.7");
325 clk_register_clkdev(clk, NULL, "gpioblock1");
326
327 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base,
328 BIT(12), 0);
329 clk_register_clkdev(clk, "msp4-pclk", "ab85xx-codec.0");
330
331 /* Peripheral 3 : PRCC P-clocks */
332 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
333 BIT(0), 0);
334 clk_register_clkdev(clk, NULL, "fsmc");
335
336 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
337 BIT(1), 0);
338 clk_register_clkdev(clk, "apb_pclk", "ssp0");
339
340 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base,
341 BIT(2), 0);
342 clk_register_clkdev(clk, "apb_pclk", "ssp1");
343
344 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base,
345 BIT(3), 0);
346 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0");
347
348 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base,
349 BIT(4), 0);
350 clk_register_clkdev(clk, "apb_pclk", "sdi2");
351
352 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base,
353 BIT(5), 0);
354 clk_register_clkdev(clk, "apb_pclk", "ske");
355 clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad");
356
357 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base,
358 BIT(6), 0);
359 clk_register_clkdev(clk, "apb_pclk", "uart2");
360
361 clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base,
362 BIT(7), 0);
363 clk_register_clkdev(clk, "apb_pclk", "sdi5");
364
365 clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base,
366 BIT(8), 0);
367 clk_register_clkdev(clk, NULL, "gpio.2");
368 clk_register_clkdev(clk, NULL, "gpio.3");
369 clk_register_clkdev(clk, NULL, "gpio.4");
370 clk_register_clkdev(clk, NULL, "gpio.5");
371 clk_register_clkdev(clk, NULL, "gpioblock2");
372
373 clk = clk_reg_prcc_pclk("p3_pclk9", "per3clk", clkrst3_base,
374 BIT(9), 0);
375 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.5");
376
377 clk = clk_reg_prcc_pclk("p3_pclk10", "per3clk", clkrst3_base,
378 BIT(10), 0);
379 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.6");
380
381 clk = clk_reg_prcc_pclk("p3_pclk11", "per3clk", clkrst3_base,
382 BIT(11), 0);
383 clk_register_clkdev(clk, "apb_pclk", "uart3");
384
385 clk = clk_reg_prcc_pclk("p3_pclk12", "per3clk", clkrst3_base,
386 BIT(12), 0);
387 clk_register_clkdev(clk, "apb_pclk", "uart4");
388
389 /* Peripheral 5 : PRCC P-clocks */
390 clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base,
391 BIT(0), 0);
392 clk_register_clkdev(clk, "usb", "musb-ux500.0");
393 clk_register_clkdev(clk, "usbclk", "ab-iddet.0");
394
395 clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base,
396 BIT(1), 0);
397 clk_register_clkdev(clk, NULL, "gpio.8");
398 clk_register_clkdev(clk, NULL, "gpioblock3");
399
400 /* Peripheral 6 : PRCC P-clocks */
401 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base,
402 BIT(0), 0);
403 clk_register_clkdev(clk, "apb_pclk", "rng");
404
405 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base,
406 BIT(1), 0);
407 clk_register_clkdev(clk, NULL, "cryp0");
408 clk_register_clkdev(clk, NULL, "cryp1");
409
410 clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base,
411 BIT(2), 0);
412 clk_register_clkdev(clk, NULL, "hash0");
413
414 clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base,
415 BIT(3), 0);
416 clk_register_clkdev(clk, NULL, "pka");
417
418 clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base,
419 BIT(4), 0);
420 clk_register_clkdev(clk, NULL, "db8540-hash1");
421
422 clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base,
423 BIT(5), 0);
424 clk_register_clkdev(clk, NULL, "cfgreg");
425
426 clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base,
427 BIT(6), 0);
428 clk_register_clkdev(clk, "apb_pclk", "mtu0");
429
430 clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base,
431 BIT(7), 0);
432 clk_register_clkdev(clk, "apb_pclk", "mtu1");
433
434 /*
435 * PRCC K-clocks ==> see table PRCC_PCKEN/PRCC_KCKEN
436 * This differs from the internal implementation:
437 * We don't use the PERPIH[n| clock as parent, since those _should_
438 * only be used as parents for the P-clocks.
439 * TODO: "parentjoin" with corresponding P-clocks for all K-clocks.
440 */
441
442 /* Peripheral 1 : PRCC K-clocks */
443 clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
444 clkrst1_base, BIT(0), CLK_SET_RATE_GATE);
445 clk_register_clkdev(clk, NULL, "uart0");
446
447 clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
448 clkrst1_base, BIT(1), CLK_SET_RATE_GATE);
449 clk_register_clkdev(clk, NULL, "uart1");
450
451 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
452 clkrst1_base, BIT(2), CLK_SET_RATE_GATE);
453 clk_register_clkdev(clk, NULL, "nmk-i2c.1");
454
455 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
456 clkrst1_base, BIT(3), CLK_SET_RATE_GATE);
457 clk_register_clkdev(clk, NULL, "msp0");
458 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.0");
459
460 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
461 clkrst1_base, BIT(4), CLK_SET_RATE_GATE);
462 clk_register_clkdev(clk, NULL, "msp1");
463 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.1");
464
465 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmchclk",
466 clkrst1_base, BIT(5), CLK_SET_RATE_GATE);
467 clk_register_clkdev(clk, NULL, "sdi0");
468
469 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
470 clkrst1_base, BIT(6), CLK_SET_RATE_GATE);
471 clk_register_clkdev(clk, NULL, "nmk-i2c.2");
472
473 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
474 clkrst1_base, BIT(8), CLK_SET_RATE_GATE);
475 clk_register_clkdev(clk, NULL, "slimbus0");
476
477 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
478 clkrst1_base, BIT(9), CLK_SET_RATE_GATE);
479 clk_register_clkdev(clk, NULL, "nmk-i2c.4");
480
481 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
482 clkrst1_base, BIT(10), CLK_SET_RATE_GATE);
483 clk_register_clkdev(clk, NULL, "msp3");
484 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.3");
485
486 /* Peripheral 2 : PRCC K-clocks */
487 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
488 clkrst2_base, BIT(0), CLK_SET_RATE_GATE);
489 clk_register_clkdev(clk, NULL, "nmk-i2c.3");
490
491 clk = clk_reg_prcc_kclk("p2_pwl_kclk", "rtc32k",
492 clkrst2_base, BIT(1), CLK_SET_RATE_GATE);
493 clk_register_clkdev(clk, NULL, "pwl");
494
495 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmchclk",
496 clkrst2_base, BIT(2), CLK_SET_RATE_GATE);
497 clk_register_clkdev(clk, NULL, "sdi4");
498
499 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
500 clkrst2_base, BIT(3), CLK_SET_RATE_GATE);
501 clk_register_clkdev(clk, NULL, "msp2");
502 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.2");
503
504 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmchclk",
505 clkrst2_base, BIT(4), CLK_SET_RATE_GATE);
506 clk_register_clkdev(clk, NULL, "sdi1");
507
508 clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
509 clkrst2_base, BIT(5), CLK_SET_RATE_GATE);
510 clk_register_clkdev(clk, NULL, "sdi3");
511
512 clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
513 clkrst2_base, BIT(6),
514 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
515 clk_register_clkdev(clk, "hsir_hsirxclk", "ste_hsi.0");
516
517 clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
518 clkrst2_base, BIT(7),
519 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
520 clk_register_clkdev(clk, "hsit_hsitxclk", "ste_hsi.0");
521
522 /* Should only be 9540, but might be added for 85xx as well */
523 clk = clk_reg_prcc_kclk("p2_msp4_kclk", "msp02clk",
524 clkrst2_base, BIT(9), CLK_SET_RATE_GATE);
525 clk_register_clkdev(clk, NULL, "msp4");
526 clk_register_clkdev(clk, "msp4", "ab85xx-codec.0");
527
528 /* Peripheral 3 : PRCC K-clocks */
529 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
530 clkrst3_base, BIT(1), CLK_SET_RATE_GATE);
531 clk_register_clkdev(clk, NULL, "ssp0");
532
533 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
534 clkrst3_base, BIT(2), CLK_SET_RATE_GATE);
535 clk_register_clkdev(clk, NULL, "ssp1");
536
537 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
538 clkrst3_base, BIT(3), CLK_SET_RATE_GATE);
539 clk_register_clkdev(clk, NULL, "nmk-i2c.0");
540
541 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmchclk",
542 clkrst3_base, BIT(4), CLK_SET_RATE_GATE);
543 clk_register_clkdev(clk, NULL, "sdi2");
544
545 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
546 clkrst3_base, BIT(5), CLK_SET_RATE_GATE);
547 clk_register_clkdev(clk, NULL, "ske");
548 clk_register_clkdev(clk, NULL, "nmk-ske-keypad");
549
550 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
551 clkrst3_base, BIT(6), CLK_SET_RATE_GATE);
552 clk_register_clkdev(clk, NULL, "uart2");
553
554 clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
555 clkrst3_base, BIT(7), CLK_SET_RATE_GATE);
556 clk_register_clkdev(clk, NULL, "sdi5");
557
558 clk = clk_reg_prcc_kclk("p3_i2c5_kclk", "i2cclk",
559 clkrst3_base, BIT(8), CLK_SET_RATE_GATE);
560 clk_register_clkdev(clk, NULL, "nmk-i2c.5");
561
562 clk = clk_reg_prcc_kclk("p3_i2c6_kclk", "i2cclk",
563 clkrst3_base, BIT(9), CLK_SET_RATE_GATE);
564 clk_register_clkdev(clk, NULL, "nmk-i2c.6");
565
566 clk = clk_reg_prcc_kclk("p3_uart3_kclk", "uartclk",
567 clkrst3_base, BIT(10), CLK_SET_RATE_GATE);
568 clk_register_clkdev(clk, NULL, "uart3");
569
570 clk = clk_reg_prcc_kclk("p3_uart4_kclk", "uartclk",
571 clkrst3_base, BIT(11), CLK_SET_RATE_GATE);
572 clk_register_clkdev(clk, NULL, "uart4");
573
574 /* Peripheral 6 : PRCC K-clocks */
575 clk = clk_reg_prcc_kclk("p6_rng_kclk", "rngclk",
576 clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
577 clk_register_clkdev(clk, NULL, "rng");
Ulf Hanssonbce5afd2012-08-27 15:45:51 +0200578}