aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-07-30 09:19:25 -0400
committerMichael Turquette <mturquette@baylibre.com>2015-08-24 19:49:14 -0400
commit5dc0fe199b358966021b015c71ca4049d0f42aa6 (patch)
tree6535c2dbda550a6a5d1353fd96dba05d6eec98dd
parentc660b2ebb25be5668a4ed333539f34b05841e17a (diff)
clk/ARM: move Ux500 PRCC bases to the device tree
The base addresses for the Ux500 PRCC controllers are hardcoded, let's move them to the clock node in the device tree and delete the constants. Cc: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Acked-by: Olof Johansson <olof@lixom.net> Acked-by: Michael Turquette <mturquette@baylibre.com> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
-rw-r--r--arch/arm/boot/dts/ste-dbx5x0.dtsi7
-rw-r--r--arch/arm/mach-ux500/cpu.c21
-rw-r--r--drivers/clk/ux500/u8500_of_clk.c163
-rw-r--r--drivers/clk/ux500/u8540_clk.c197
-rw-r--r--drivers/clk/ux500/u9540_clk.c3
-rw-r--r--include/linux/platform_data/clk-ux500.h10
6 files changed, 225 insertions, 176 deletions
diff --git a/arch/arm/boot/dts/ste-dbx5x0.dtsi b/arch/arm/boot/dts/ste-dbx5x0.dtsi
index 853684ad7773..a56bf890afaf 100644
--- a/arch/arm/boot/dts/ste-dbx5x0.dtsi
+++ b/arch/arm/boot/dts/ste-dbx5x0.dtsi
@@ -219,6 +219,13 @@
219 219
220 clocks { 220 clocks {
221 compatible = "stericsson,u8500-clks"; 221 compatible = "stericsson,u8500-clks";
222 /*
223 * Registers for the CLKRST block on peripheral
224 * groups 1, 2, 3, 5, 6,
225 */
226 reg = <0x8012f000 0x1000>, <0x8011f000 0x1000>,
227 <0x8000f000 0x1000>, <0xa03ff000 0x1000>,
228 <0xa03cf000 0x1000>;
222 229
223 prcmu_clk: prcmu-clock { 230 prcmu_clk: prcmu-clock {
224 #clock-cells = <1>; 231 #clock-cells = <1>;
diff --git a/arch/arm/mach-ux500/cpu.c b/arch/arm/mach-ux500/cpu.c
index e31d3d61c998..b316e18a76aa 100644
--- a/arch/arm/mach-ux500/cpu.c
+++ b/arch/arm/mach-ux500/cpu.c
@@ -72,21 +72,12 @@ void __init ux500_init_irq(void)
72 * Init clocks here so that they are available for system timer 72 * Init clocks here so that they are available for system timer
73 * initialization. 73 * initialization.
74 */ 74 */
75 if (cpu_is_u8500_family()) { 75 if (cpu_is_u8500_family())
76 u8500_of_clk_init(U8500_CLKRST1_BASE, 76 u8500_clk_init();
77 U8500_CLKRST2_BASE, 77 else if (cpu_is_u9540())
78 U8500_CLKRST3_BASE, 78 u9540_clk_init();
79 U8500_CLKRST5_BASE, 79 else if (cpu_is_u8540())
80 U8500_CLKRST6_BASE); 80 u8540_clk_init();
81 } else if (cpu_is_u9540()) {
82 u9540_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
83 U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
84 U8500_CLKRST6_BASE);
85 } else if (cpu_is_u8540()) {
86 u8540_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
87 U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
88 U8500_CLKRST6_BASE);
89 }
90} 81}
91 82
92static const char * __init ux500_get_machine(void) 83static const char * __init ux500_get_machine(void)
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
index c3e3b20e4b43..271c09644652 100644
--- a/drivers/clk/ux500/u8500_of_clk.c
+++ b/drivers/clk/ux500/u8500_of_clk.c
@@ -8,6 +8,7 @@
8 */ 8 */
9 9
10#include <linux/of.h> 10#include <linux/of.h>
11#include <linux/of_address.h>
11#include <linux/clk-provider.h> 12#include <linux/clk-provider.h>
12#include <linux/mfd/dbx500-prcmu.h> 13#include <linux/mfd/dbx500-prcmu.h>
13#include <linux/platform_data/clk-ux500.h> 14#include <linux/platform_data/clk-ux500.h>
@@ -52,14 +53,25 @@ static const struct of_device_id u8500_clk_of_match[] = {
52 { }, 53 { },
53}; 54};
54 55
55void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, 56/* CLKRST4 is missing making it hard to index things */
56 u32 clkrst5_base, u32 clkrst6_base) 57enum clkrst_index {
58 CLKRST1_INDEX = 0,
59 CLKRST2_INDEX,
60 CLKRST3_INDEX,
61 CLKRST5_INDEX,
62 CLKRST6_INDEX,
63 CLKRST_MAX,
64};
65
66void u8500_clk_init(void)
57{ 67{
58 struct prcmu_fw_version *fw_version; 68 struct prcmu_fw_version *fw_version;
59 struct device_node *np = NULL; 69 struct device_node *np = NULL;
60 struct device_node *child = NULL; 70 struct device_node *child = NULL;
61 const char *sgaclk_parent = NULL; 71 const char *sgaclk_parent = NULL;
62 struct clk *clk, *rtc_clk, *twd_clk; 72 struct clk *clk, *rtc_clk, *twd_clk;
73 u32 bases[CLKRST_MAX];
74 int i;
63 75
64 if (of_have_populated_dt()) 76 if (of_have_populated_dt())
65 np = of_find_matching_node(NULL, u8500_clk_of_match); 77 np = of_find_matching_node(NULL, u8500_clk_of_match);
@@ -67,6 +79,15 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
67 pr_err("Either DT or U8500 Clock node not found\n"); 79 pr_err("Either DT or U8500 Clock node not found\n");
68 return; 80 return;
69 } 81 }
82 for (i = 0; i < ARRAY_SIZE(bases); i++) {
83 struct resource r;
84
85 if (of_address_to_resource(np, i, &r))
86 /* Not much choice but to continue */
87 pr_err("failed to get CLKRST %d base address\n",
88 i + 1);
89 bases[i] = r.start;
90 }
70 91
71 /* Clock sources */ 92 /* Clock sources */
72 clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0, 93 clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
@@ -244,179 +265,179 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
244 */ 265 */
245 266
246 /* PRCC P-clocks */ 267 /* PRCC P-clocks */
247 clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base, 268 clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", bases[CLKRST1_INDEX],
248 BIT(0), 0); 269 BIT(0), 0);
249 PRCC_PCLK_STORE(clk, 1, 0); 270 PRCC_PCLK_STORE(clk, 1, 0);
250 271
251 clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base, 272 clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", bases[CLKRST1_INDEX],
252 BIT(1), 0); 273 BIT(1), 0);
253 PRCC_PCLK_STORE(clk, 1, 1); 274 PRCC_PCLK_STORE(clk, 1, 1);
254 275
255 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base, 276 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", bases[CLKRST1_INDEX],
256 BIT(2), 0); 277 BIT(2), 0);
257 PRCC_PCLK_STORE(clk, 1, 2); 278 PRCC_PCLK_STORE(clk, 1, 2);
258 279
259 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base, 280 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", bases[CLKRST1_INDEX],
260 BIT(3), 0); 281 BIT(3), 0);
261 PRCC_PCLK_STORE(clk, 1, 3); 282 PRCC_PCLK_STORE(clk, 1, 3);
262 283
263 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base, 284 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", bases[CLKRST1_INDEX],
264 BIT(4), 0); 285 BIT(4), 0);
265 PRCC_PCLK_STORE(clk, 1, 4); 286 PRCC_PCLK_STORE(clk, 1, 4);
266 287
267 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base, 288 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", bases[CLKRST1_INDEX],
268 BIT(5), 0); 289 BIT(5), 0);
269 PRCC_PCLK_STORE(clk, 1, 5); 290 PRCC_PCLK_STORE(clk, 1, 5);
270 291
271 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base, 292 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", bases[CLKRST1_INDEX],
272 BIT(6), 0); 293 BIT(6), 0);
273 PRCC_PCLK_STORE(clk, 1, 6); 294 PRCC_PCLK_STORE(clk, 1, 6);
274 295
275 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base, 296 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", bases[CLKRST1_INDEX],
276 BIT(7), 0); 297 BIT(7), 0);
277 PRCC_PCLK_STORE(clk, 1, 7); 298 PRCC_PCLK_STORE(clk, 1, 7);
278 299
279 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base, 300 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", bases[CLKRST1_INDEX],
280 BIT(8), 0); 301 BIT(8), 0);
281 PRCC_PCLK_STORE(clk, 1, 8); 302 PRCC_PCLK_STORE(clk, 1, 8);
282 303
283 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base, 304 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", bases[CLKRST1_INDEX],
284 BIT(9), 0); 305 BIT(9), 0);
285 PRCC_PCLK_STORE(clk, 1, 9); 306 PRCC_PCLK_STORE(clk, 1, 9);
286 307
287 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base, 308 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", bases[CLKRST1_INDEX],
288 BIT(10), 0); 309 BIT(10), 0);
289 PRCC_PCLK_STORE(clk, 1, 10); 310 PRCC_PCLK_STORE(clk, 1, 10);
290 311
291 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base, 312 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", bases[CLKRST1_INDEX],
292 BIT(11), 0); 313 BIT(11), 0);
293 PRCC_PCLK_STORE(clk, 1, 11); 314 PRCC_PCLK_STORE(clk, 1, 11);
294 315
295 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base, 316 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", bases[CLKRST2_INDEX],
296 BIT(0), 0); 317 BIT(0), 0);
297 PRCC_PCLK_STORE(clk, 2, 0); 318 PRCC_PCLK_STORE(clk, 2, 0);
298 319
299 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base, 320 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", bases[CLKRST2_INDEX],
300 BIT(1), 0); 321 BIT(1), 0);
301 PRCC_PCLK_STORE(clk, 2, 1); 322 PRCC_PCLK_STORE(clk, 2, 1);
302 323
303 clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base, 324 clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", bases[CLKRST2_INDEX],
304 BIT(2), 0); 325 BIT(2), 0);
305 PRCC_PCLK_STORE(clk, 2, 2); 326 PRCC_PCLK_STORE(clk, 2, 2);
306 327
307 clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base, 328 clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", bases[CLKRST2_INDEX],
308 BIT(3), 0); 329 BIT(3), 0);
309 PRCC_PCLK_STORE(clk, 2, 3); 330 PRCC_PCLK_STORE(clk, 2, 3);
310 331
311 clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base, 332 clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", bases[CLKRST2_INDEX],
312 BIT(4), 0); 333 BIT(4), 0);
313 PRCC_PCLK_STORE(clk, 2, 4); 334 PRCC_PCLK_STORE(clk, 2, 4);
314 335
315 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base, 336 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", bases[CLKRST2_INDEX],
316 BIT(5), 0); 337 BIT(5), 0);
317 PRCC_PCLK_STORE(clk, 2, 5); 338 PRCC_PCLK_STORE(clk, 2, 5);
318 339
319 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base, 340 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", bases[CLKRST2_INDEX],
320 BIT(6), 0); 341 BIT(6), 0);
321 PRCC_PCLK_STORE(clk, 2, 6); 342 PRCC_PCLK_STORE(clk, 2, 6);
322 343
323 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base, 344 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", bases[CLKRST2_INDEX],
324 BIT(7), 0); 345 BIT(7), 0);
325 PRCC_PCLK_STORE(clk, 2, 7); 346 PRCC_PCLK_STORE(clk, 2, 7);
326 347
327 clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base, 348 clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", bases[CLKRST2_INDEX],
328 BIT(8), 0); 349 BIT(8), 0);
329 PRCC_PCLK_STORE(clk, 2, 8); 350 PRCC_PCLK_STORE(clk, 2, 8);
330 351
331 clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base, 352 clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", bases[CLKRST2_INDEX],
332 BIT(9), 0); 353 BIT(9), 0);
333 PRCC_PCLK_STORE(clk, 2, 9); 354 PRCC_PCLK_STORE(clk, 2, 9);
334 355
335 clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base, 356 clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", bases[CLKRST2_INDEX],
336 BIT(10), 0); 357 BIT(10), 0);
337 PRCC_PCLK_STORE(clk, 2, 10); 358 PRCC_PCLK_STORE(clk, 2, 10);
338 359
339 clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base, 360 clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", bases[CLKRST2_INDEX],
340 BIT(11), 0); 361 BIT(11), 0);
341 PRCC_PCLK_STORE(clk, 2, 11); 362 PRCC_PCLK_STORE(clk, 2, 11);
342 363
343 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base, 364 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", bases[CLKRST2_INDEX],
344 BIT(12), 0); 365 BIT(12), 0);
345 PRCC_PCLK_STORE(clk, 2, 12); 366 PRCC_PCLK_STORE(clk, 2, 12);
346 367
347 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base, 368 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", bases[CLKRST3_INDEX],
348 BIT(0), 0); 369 BIT(0), 0);
349 PRCC_PCLK_STORE(clk, 3, 0); 370 PRCC_PCLK_STORE(clk, 3, 0);
350 371
351 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base, 372 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", bases[CLKRST3_INDEX],
352 BIT(1), 0); 373 BIT(1), 0);
353 PRCC_PCLK_STORE(clk, 3, 1); 374 PRCC_PCLK_STORE(clk, 3, 1);
354 375
355 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base, 376 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", bases[CLKRST3_INDEX],
356 BIT(2), 0); 377 BIT(2), 0);
357 PRCC_PCLK_STORE(clk, 3, 2); 378 PRCC_PCLK_STORE(clk, 3, 2);
358 379
359 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base, 380 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", bases[CLKRST3_INDEX],
360 BIT(3), 0); 381 BIT(3), 0);
361 PRCC_PCLK_STORE(clk, 3, 3); 382 PRCC_PCLK_STORE(clk, 3, 3);
362 383
363 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base, 384 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", bases[CLKRST3_INDEX],
364 BIT(4), 0); 385 BIT(4), 0);
365 PRCC_PCLK_STORE(clk, 3, 4); 386 PRCC_PCLK_STORE(clk, 3, 4);
366 387
367 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base, 388 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", bases[CLKRST3_INDEX],
368 BIT(5), 0); 389 BIT(5), 0);
369 PRCC_PCLK_STORE(clk, 3, 5); 390 PRCC_PCLK_STORE(clk, 3, 5);
370 391
371 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base, 392 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", bases[CLKRST3_INDEX],
372 BIT(6), 0); 393 BIT(6), 0);
373 PRCC_PCLK_STORE(clk, 3, 6); 394 PRCC_PCLK_STORE(clk, 3, 6);
374 395
375 clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base, 396 clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", bases[CLKRST3_INDEX],
376 BIT(7), 0); 397 BIT(7), 0);
377 PRCC_PCLK_STORE(clk, 3, 7); 398 PRCC_PCLK_STORE(clk, 3, 7);
378 399
379 clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base, 400 clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", bases[CLKRST3_INDEX],
380 BIT(8), 0); 401 BIT(8), 0);
381 PRCC_PCLK_STORE(clk, 3, 8); 402 PRCC_PCLK_STORE(clk, 3, 8);
382 403
383 clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base, 404 clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", bases[CLKRST5_INDEX],
384 BIT(0), 0); 405 BIT(0), 0);
385 PRCC_PCLK_STORE(clk, 5, 0); 406 PRCC_PCLK_STORE(clk, 5, 0);
386 407
387 clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base, 408 clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", bases[CLKRST5_INDEX],
388 BIT(1), 0); 409 BIT(1), 0);
389 PRCC_PCLK_STORE(clk, 5, 1); 410 PRCC_PCLK_STORE(clk, 5, 1);
390 411
391 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base, 412 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", bases[CLKRST6_INDEX],
392 BIT(0), 0); 413 BIT(0), 0);
393 PRCC_PCLK_STORE(clk, 6, 0); 414 PRCC_PCLK_STORE(clk, 6, 0);
394 415
395 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base, 416 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", bases[CLKRST6_INDEX],
396 BIT(1), 0); 417 BIT(1), 0);
397 PRCC_PCLK_STORE(clk, 6, 1); 418 PRCC_PCLK_STORE(clk, 6, 1);
398 419
399 clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base, 420 clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", bases[CLKRST6_INDEX],
400 BIT(2), 0); 421 BIT(2), 0);
401 PRCC_PCLK_STORE(clk, 6, 2); 422 PRCC_PCLK_STORE(clk, 6, 2);
402 423
403 clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base, 424 clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", bases[CLKRST6_INDEX],
404 BIT(3), 0); 425 BIT(3), 0);
405 PRCC_PCLK_STORE(clk, 6, 3); 426 PRCC_PCLK_STORE(clk, 6, 3);
406 427
407 clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base, 428 clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", bases[CLKRST6_INDEX],
408 BIT(4), 0); 429 BIT(4), 0);
409 PRCC_PCLK_STORE(clk, 6, 4); 430 PRCC_PCLK_STORE(clk, 6, 4);
410 431
411 clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base, 432 clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", bases[CLKRST6_INDEX],
412 BIT(5), 0); 433 BIT(5), 0);
413 PRCC_PCLK_STORE(clk, 6, 5); 434 PRCC_PCLK_STORE(clk, 6, 5);
414 435
415 clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base, 436 clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", bases[CLKRST6_INDEX],
416 BIT(6), 0); 437 BIT(6), 0);
417 PRCC_PCLK_STORE(clk, 6, 6); 438 PRCC_PCLK_STORE(clk, 6, 6);
418 439
419 clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base, 440 clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", bases[CLKRST6_INDEX],
420 BIT(7), 0); 441 BIT(7), 0);
421 PRCC_PCLK_STORE(clk, 6, 7); 442 PRCC_PCLK_STORE(clk, 6, 7);
422 443
@@ -430,109 +451,109 @@ void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
430 451
431 /* Periph1 */ 452 /* Periph1 */
432 clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk", 453 clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
433 clkrst1_base, BIT(0), CLK_SET_RATE_GATE); 454 bases[CLKRST1_INDEX], BIT(0), CLK_SET_RATE_GATE);
434 PRCC_KCLK_STORE(clk, 1, 0); 455 PRCC_KCLK_STORE(clk, 1, 0);
435 456
436 clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk", 457 clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
437 clkrst1_base, BIT(1), CLK_SET_RATE_GATE); 458 bases[CLKRST1_INDEX], BIT(1), CLK_SET_RATE_GATE);
438 PRCC_KCLK_STORE(clk, 1, 1); 459 PRCC_KCLK_STORE(clk, 1, 1);
439 460
440 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk", 461 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
441 clkrst1_base, BIT(2), CLK_SET_RATE_GATE); 462 bases[CLKRST1_INDEX], BIT(2), CLK_SET_RATE_GATE);
442 PRCC_KCLK_STORE(clk, 1, 2); 463 PRCC_KCLK_STORE(clk, 1, 2);
443 464
444 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk", 465 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
445 clkrst1_base, BIT(3), CLK_SET_RATE_GATE); 466 bases[CLKRST1_INDEX], BIT(3), CLK_SET_RATE_GATE);
446 PRCC_KCLK_STORE(clk, 1, 3); 467 PRCC_KCLK_STORE(clk, 1, 3);
447 468
448 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk", 469 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
449 clkrst1_base, BIT(4), CLK_SET_RATE_GATE); 470 bases[CLKRST1_INDEX], BIT(4), CLK_SET_RATE_GATE);
450 PRCC_KCLK_STORE(clk, 1, 4); 471 PRCC_KCLK_STORE(clk, 1, 4);
451 472
452 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk", 473 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
453 clkrst1_base, BIT(5), CLK_SET_RATE_GATE); 474 bases[CLKRST1_INDEX], BIT(5), CLK_SET_RATE_GATE);
454 PRCC_KCLK_STORE(clk, 1, 5); 475 PRCC_KCLK_STORE(clk, 1, 5);
455 476
456 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk", 477 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
457 clkrst1_base, BIT(6), CLK_SET_RATE_GATE); 478 bases[CLKRST1_INDEX], BIT(6), CLK_SET_RATE_GATE);
458 PRCC_KCLK_STORE(clk, 1, 6); 479 PRCC_KCLK_STORE(clk, 1, 6);
459 480
460 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk", 481 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
461 clkrst1_base, BIT(8), CLK_SET_RATE_GATE); 482 bases[CLKRST1_INDEX], BIT(8), CLK_SET_RATE_GATE);
462 PRCC_KCLK_STORE(clk, 1, 8); 483 PRCC_KCLK_STORE(clk, 1, 8);
463 484
464 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk", 485 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
465 clkrst1_base, BIT(9), CLK_SET_RATE_GATE); 486 bases[CLKRST1_INDEX], BIT(9), CLK_SET_RATE_GATE);
466 PRCC_KCLK_STORE(clk, 1, 9); 487 PRCC_KCLK_STORE(clk, 1, 9);
467 488
468 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk", 489 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
469 clkrst1_base, BIT(10), CLK_SET_RATE_GATE); 490 bases[CLKRST1_INDEX], BIT(10), CLK_SET_RATE_GATE);
470 PRCC_KCLK_STORE(clk, 1, 10); 491 PRCC_KCLK_STORE(clk, 1, 10);
471 492
472 /* Periph2 */ 493 /* Periph2 */
473 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk", 494 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
474 clkrst2_base, BIT(0), CLK_SET_RATE_GATE); 495 bases[CLKRST2_INDEX], BIT(0), CLK_SET_RATE_GATE);
475 PRCC_KCLK_STORE(clk, 2, 0); 496 PRCC_KCLK_STORE(clk, 2, 0);
476 497
477 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk", 498 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
478 clkrst2_base, BIT(2), CLK_SET_RATE_GATE); 499 bases[CLKRST2_INDEX], BIT(2), CLK_SET_RATE_GATE);
479 PRCC_KCLK_STORE(clk, 2, 2); 500 PRCC_KCLK_STORE(clk, 2, 2);
480 501
481 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk", 502 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
482 clkrst2_base, BIT(3), CLK_SET_RATE_GATE); 503 bases[CLKRST2_INDEX], BIT(3), CLK_SET_RATE_GATE);
483 PRCC_KCLK_STORE(clk, 2, 3); 504 PRCC_KCLK_STORE(clk, 2, 3);
484 505
485 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk", 506 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
486 clkrst2_base, BIT(4), CLK_SET_RATE_GATE); 507 bases[CLKRST2_INDEX], BIT(4), CLK_SET_RATE_GATE);
487 PRCC_KCLK_STORE(clk, 2, 4); 508 PRCC_KCLK_STORE(clk, 2, 4);
488 509
489 clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk", 510 clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
490 clkrst2_base, BIT(5), CLK_SET_RATE_GATE); 511 bases[CLKRST2_INDEX], BIT(5), CLK_SET_RATE_GATE);
491 PRCC_KCLK_STORE(clk, 2, 5); 512 PRCC_KCLK_STORE(clk, 2, 5);
492 513
493 /* Note that rate is received from parent. */ 514 /* Note that rate is received from parent. */
494 clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk", 515 clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
495 clkrst2_base, BIT(6), 516 bases[CLKRST2_INDEX], BIT(6),
496 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); 517 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
497 PRCC_KCLK_STORE(clk, 2, 6); 518 PRCC_KCLK_STORE(clk, 2, 6);
498 519
499 clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk", 520 clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
500 clkrst2_base, BIT(7), 521 bases[CLKRST2_INDEX], BIT(7),
501 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); 522 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
502 PRCC_KCLK_STORE(clk, 2, 7); 523 PRCC_KCLK_STORE(clk, 2, 7);
503 524
504 /* Periph3 */ 525 /* Periph3 */
505 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk", 526 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
506 clkrst3_base, BIT(1), CLK_SET_RATE_GATE); 527 bases[CLKRST3_INDEX], BIT(1), CLK_SET_RATE_GATE);
507 PRCC_KCLK_STORE(clk, 3, 1); 528 PRCC_KCLK_STORE(clk, 3, 1);
508 529
509 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk", 530 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
510 clkrst3_base, BIT(2), CLK_SET_RATE_GATE); 531 bases[CLKRST3_INDEX], BIT(2), CLK_SET_RATE_GATE);
511 PRCC_KCLK_STORE(clk, 3, 2); 532 PRCC_KCLK_STORE(clk, 3, 2);
512 533
513 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk", 534 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
514 clkrst3_base, BIT(3), CLK_SET_RATE_GATE); 535 bases[CLKRST3_INDEX], BIT(3), CLK_SET_RATE_GATE);
515 PRCC_KCLK_STORE(clk, 3, 3); 536 PRCC_KCLK_STORE(clk, 3, 3);
516 537
517 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk", 538 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
518 clkrst3_base, BIT(4), CLK_SET_RATE_GATE); 539 bases[CLKRST3_INDEX], BIT(4), CLK_SET_RATE_GATE);
519 PRCC_KCLK_STORE(clk, 3, 4); 540 PRCC_KCLK_STORE(clk, 3, 4);
520 541
521 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k", 542 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
522 clkrst3_base, BIT(5), CLK_SET_RATE_GATE); 543 bases[CLKRST3_INDEX], BIT(5), CLK_SET_RATE_GATE);
523 PRCC_KCLK_STORE(clk, 3, 5); 544 PRCC_KCLK_STORE(clk, 3, 5);
524 545
525 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk", 546 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
526 clkrst3_base, BIT(6), CLK_SET_RATE_GATE); 547 bases[CLKRST3_INDEX], BIT(6), CLK_SET_RATE_GATE);
527 PRCC_KCLK_STORE(clk, 3, 6); 548 PRCC_KCLK_STORE(clk, 3, 6);
528 549
529 clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk", 550 clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
530 clkrst3_base, BIT(7), CLK_SET_RATE_GATE); 551 bases[CLKRST3_INDEX], BIT(7), CLK_SET_RATE_GATE);
531 PRCC_KCLK_STORE(clk, 3, 7); 552 PRCC_KCLK_STORE(clk, 3, 7);
532 553
533 /* Periph6 */ 554 /* Periph6 */
534 clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk", 555 clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
535 clkrst6_base, BIT(0), CLK_SET_RATE_GATE); 556 bases[CLKRST6_INDEX], BIT(0), CLK_SET_RATE_GATE);
536 PRCC_KCLK_STORE(clk, 6, 0); 557 PRCC_KCLK_STORE(clk, 6, 0);
537 558
538 for_each_child_of_node(np, child) { 559 for_each_child_of_node(np, child) {
diff --git a/drivers/clk/ux500/u8540_clk.c b/drivers/clk/ux500/u8540_clk.c
index d0de335ea1e9..d7bcb7a86615 100644
--- a/drivers/clk/ux500/u8540_clk.c
+++ b/drivers/clk/ux500/u8540_clk.c
@@ -7,16 +7,51 @@
7 * License terms: GNU General Public License (GPL) version 2 7 * License terms: GNU General Public License (GPL) version 2
8 */ 8 */
9 9
10#include <linux/of.h>
11#include <linux/of_address.h>
10#include <linux/clkdev.h> 12#include <linux/clkdev.h>
11#include <linux/clk-provider.h> 13#include <linux/clk-provider.h>
12#include <linux/mfd/dbx500-prcmu.h> 14#include <linux/mfd/dbx500-prcmu.h>
13#include <linux/platform_data/clk-ux500.h> 15#include <linux/platform_data/clk-ux500.h>
14#include "clk.h" 16#include "clk.h"
15 17
16void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, 18static const struct of_device_id u8540_clk_of_match[] = {
17 u32 clkrst5_base, u32 clkrst6_base) 19 { .compatible = "stericsson,u8540-clks", },
20 { }
21};
22
23/* CLKRST4 is missing making it hard to index things */
24enum clkrst_index {
25 CLKRST1_INDEX = 0,
26 CLKRST2_INDEX,
27 CLKRST3_INDEX,
28 CLKRST5_INDEX,
29 CLKRST6_INDEX,
30 CLKRST_MAX,
31};
32
33void u8540_clk_init(void)
18{ 34{
19 struct clk *clk; 35 struct clk *clk;
36 struct device_node *np = NULL;
37 u32 bases[CLKRST_MAX];
38 int i;
39
40 if (of_have_populated_dt())
41 np = of_find_matching_node(NULL, u8540_clk_of_match);
42 if (!np) {
43 pr_err("Either DT or U8540 Clock node not found\n");
44 return;
45 }
46 for (i = 0; i < ARRAY_SIZE(bases); i++) {
47 struct resource r;
48
49 if (of_address_to_resource(np, i, &r))
50 /* Not much choice but to continue */
51 pr_err("failed to get CLKRST %d base address\n",
52 i + 1);
53 bases[i] = r.start;
54 }
20 55
21 /* Clock sources. */ 56 /* Clock sources. */
22 /* Fixed ClockGen */ 57 /* Fixed ClockGen */
@@ -218,151 +253,151 @@ void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
218 253
219 /* PRCC P-clocks */ 254 /* PRCC P-clocks */
220 /* Peripheral 1 : PRCC P-clocks */ 255 /* Peripheral 1 : PRCC P-clocks */
221 clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base, 256 clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", bases[CLKRST1_INDEX],
222 BIT(0), 0); 257 BIT(0), 0);
223 clk_register_clkdev(clk, "apb_pclk", "uart0"); 258 clk_register_clkdev(clk, "apb_pclk", "uart0");
224 259
225 clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base, 260 clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", bases[CLKRST1_INDEX],
226 BIT(1), 0); 261 BIT(1), 0);
227 clk_register_clkdev(clk, "apb_pclk", "uart1"); 262 clk_register_clkdev(clk, "apb_pclk", "uart1");
228 263
229 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base, 264 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", bases[CLKRST1_INDEX],
230 BIT(2), 0); 265 BIT(2), 0);
231 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1"); 266 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1");
232 267
233 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base, 268 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", bases[CLKRST1_INDEX],
234 BIT(3), 0); 269 BIT(3), 0);
235 clk_register_clkdev(clk, "apb_pclk", "msp0"); 270 clk_register_clkdev(clk, "apb_pclk", "msp0");
236 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.0"); 271 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.0");
237 272
238 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base, 273 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", bases[CLKRST1_INDEX],
239 BIT(4), 0); 274 BIT(4), 0);
240 clk_register_clkdev(clk, "apb_pclk", "msp1"); 275 clk_register_clkdev(clk, "apb_pclk", "msp1");
241 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.1"); 276 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.1");
242 277
243 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base, 278 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", bases[CLKRST1_INDEX],
244 BIT(5), 0); 279 BIT(5), 0);
245 clk_register_clkdev(clk, "apb_pclk", "sdi0"); 280 clk_register_clkdev(clk, "apb_pclk", "sdi0");
246 281
247 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base, 282 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", bases[CLKRST1_INDEX],
248 BIT(6), 0); 283 BIT(6), 0);
249 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2"); 284 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2");
250 285
251 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base, 286 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", bases[CLKRST1_INDEX],
252 BIT(7), 0); 287 BIT(7), 0);
253 clk_register_clkdev(clk, NULL, "spi3"); 288 clk_register_clkdev(clk, NULL, "spi3");
254 289
255 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base, 290 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", bases[CLKRST1_INDEX],
256 BIT(8), 0); 291 BIT(8), 0);
257 clk_register_clkdev(clk, "apb_pclk", "slimbus0"); 292 clk_register_clkdev(clk, "apb_pclk", "slimbus0");
258 293
259 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base, 294 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", bases[CLKRST1_INDEX],
260 BIT(9), 0); 295 BIT(9), 0);
261 clk_register_clkdev(clk, NULL, "gpio.0"); 296 clk_register_clkdev(clk, NULL, "gpio.0");
262 clk_register_clkdev(clk, NULL, "gpio.1"); 297 clk_register_clkdev(clk, NULL, "gpio.1");
263 clk_register_clkdev(clk, NULL, "gpioblock0"); 298 clk_register_clkdev(clk, NULL, "gpioblock0");
264 clk_register_clkdev(clk, "apb_pclk", "ab85xx-codec.0"); 299 clk_register_clkdev(clk, "apb_pclk", "ab85xx-codec.0");
265 300
266 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base, 301 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", bases[CLKRST1_INDEX],
267 BIT(10), 0); 302 BIT(10), 0);
268 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4"); 303 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4");
269 304
270 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base, 305 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", bases[CLKRST1_INDEX],
271 BIT(11), 0); 306 BIT(11), 0);
272 clk_register_clkdev(clk, "apb_pclk", "msp3"); 307 clk_register_clkdev(clk, "apb_pclk", "msp3");
273 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.3"); 308 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.3");
274 309
275 /* Peripheral 2 : PRCC P-clocks */ 310 /* Peripheral 2 : PRCC P-clocks */
276 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base, 311 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", bases[CLKRST2_INDEX],
277 BIT(0), 0); 312 BIT(0), 0);
278 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3"); 313 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3");
279 314
280 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base, 315 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", bases[CLKRST2_INDEX],
281 BIT(1), 0); 316 BIT(1), 0);
282 clk_register_clkdev(clk, NULL, "spi2"); 317 clk_register_clkdev(clk, NULL, "spi2");
283 318
284 clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base, 319 clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", bases[CLKRST2_INDEX],
285 BIT(2), 0); 320 BIT(2), 0);
286 clk_register_clkdev(clk, NULL, "spi1"); 321 clk_register_clkdev(clk, NULL, "spi1");
287 322
288 clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base, 323 clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", bases[CLKRST2_INDEX],
289 BIT(3), 0); 324 BIT(3), 0);
290 clk_register_clkdev(clk, NULL, "pwl"); 325 clk_register_clkdev(clk, NULL, "pwl");
291 326
292 clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base, 327 clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", bases[CLKRST2_INDEX],
293 BIT(4), 0); 328 BIT(4), 0);
294 clk_register_clkdev(clk, "apb_pclk", "sdi4"); 329 clk_register_clkdev(clk, "apb_pclk", "sdi4");
295 330
296 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base, 331 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", bases[CLKRST2_INDEX],
297 BIT(5), 0); 332 BIT(5), 0);
298 clk_register_clkdev(clk, "apb_pclk", "msp2"); 333 clk_register_clkdev(clk, "apb_pclk", "msp2");
299 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.2"); 334 clk_register_clkdev(clk, "apb_pclk", "dbx5x0-msp-i2s.2");
300 335
301 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base, 336 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", bases[CLKRST2_INDEX],
302 BIT(6), 0); 337 BIT(6), 0);
303 clk_register_clkdev(clk, "apb_pclk", "sdi1"); 338 clk_register_clkdev(clk, "apb_pclk", "sdi1");
304 339
305 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base, 340 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", bases[CLKRST2_INDEX],
306 BIT(7), 0); 341 BIT(7), 0);
307 clk_register_clkdev(clk, "apb_pclk", "sdi3"); 342 clk_register_clkdev(clk, "apb_pclk", "sdi3");
308 343
309 clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base, 344 clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", bases[CLKRST2_INDEX],
310 BIT(8), 0); 345 BIT(8), 0);
311 clk_register_clkdev(clk, NULL, "spi0"); 346 clk_register_clkdev(clk, NULL, "spi0");
312 347
313 clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base, 348 clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", bases[CLKRST2_INDEX],
314 BIT(9), 0); 349 BIT(9), 0);
315 clk_register_clkdev(clk, "hsir_hclk", "ste_hsi.0"); 350 clk_register_clkdev(clk, "hsir_hclk", "ste_hsi.0");
316 351
317 clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base, 352 clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", bases[CLKRST2_INDEX],
318 BIT(10), 0); 353 BIT(10), 0);
319 clk_register_clkdev(clk, "hsit_hclk", "ste_hsi.0"); 354 clk_register_clkdev(clk, "hsit_hclk", "ste_hsi.0");
320 355
321 clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base, 356 clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", bases[CLKRST2_INDEX],
322 BIT(11), 0); 357 BIT(11), 0);
323 clk_register_clkdev(clk, NULL, "gpio.6"); 358 clk_register_clkdev(clk, NULL, "gpio.6");
324 clk_register_clkdev(clk, NULL, "gpio.7"); 359 clk_register_clkdev(clk, NULL, "gpio.7");
325 clk_register_clkdev(clk, NULL, "gpioblock1"); 360 clk_register_clkdev(clk, NULL, "gpioblock1");
326 361
327 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base, 362 clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", bases[CLKRST2_INDEX],
328 BIT(12), 0); 363 BIT(12), 0);
329 clk_register_clkdev(clk, "msp4-pclk", "ab85xx-codec.0"); 364 clk_register_clkdev(clk, "msp4-pclk", "ab85xx-codec.0");
330 365
331 /* Peripheral 3 : PRCC P-clocks */ 366 /* Peripheral 3 : PRCC P-clocks */
332 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base, 367 clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", bases[CLKRST3_INDEX],
333 BIT(0), 0); 368 BIT(0), 0);
334 clk_register_clkdev(clk, NULL, "fsmc"); 369 clk_register_clkdev(clk, NULL, "fsmc");
335 370
336 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base, 371 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", bases[CLKRST3_INDEX],
337 BIT(1), 0); 372 BIT(1), 0);
338 clk_register_clkdev(clk, "apb_pclk", "ssp0"); 373 clk_register_clkdev(clk, "apb_pclk", "ssp0");
339 374
340 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base, 375 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", bases[CLKRST3_INDEX],
341 BIT(2), 0); 376 BIT(2), 0);
342 clk_register_clkdev(clk, "apb_pclk", "ssp1"); 377 clk_register_clkdev(clk, "apb_pclk", "ssp1");
343 378
344 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base, 379 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", bases[CLKRST3_INDEX],
345 BIT(3), 0); 380 BIT(3), 0);
346 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0"); 381 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0");
347 382
348 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base, 383 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", bases[CLKRST3_INDEX],
349 BIT(4), 0); 384 BIT(4), 0);
350 clk_register_clkdev(clk, "apb_pclk", "sdi2"); 385 clk_register_clkdev(clk, "apb_pclk", "sdi2");
351 386
352 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base, 387 clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", bases[CLKRST3_INDEX],
353 BIT(5), 0); 388 BIT(5), 0);
354 clk_register_clkdev(clk, "apb_pclk", "ske"); 389 clk_register_clkdev(clk, "apb_pclk", "ske");
355 clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad"); 390 clk_register_clkdev(clk, "apb_pclk", "nmk-ske-keypad");
356 391
357 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base, 392 clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", bases[CLKRST3_INDEX],
358 BIT(6), 0); 393 BIT(6), 0);
359 clk_register_clkdev(clk, "apb_pclk", "uart2"); 394 clk_register_clkdev(clk, "apb_pclk", "uart2");
360 395
361 clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base, 396 clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", bases[CLKRST3_INDEX],
362 BIT(7), 0); 397 BIT(7), 0);
363 clk_register_clkdev(clk, "apb_pclk", "sdi5"); 398 clk_register_clkdev(clk, "apb_pclk", "sdi5");
364 399
365 clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base, 400 clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", bases[CLKRST3_INDEX],
366 BIT(8), 0); 401 BIT(8), 0);
367 clk_register_clkdev(clk, NULL, "gpio.2"); 402 clk_register_clkdev(clk, NULL, "gpio.2");
368 clk_register_clkdev(clk, NULL, "gpio.3"); 403 clk_register_clkdev(clk, NULL, "gpio.3");
@@ -370,64 +405,64 @@ void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
370 clk_register_clkdev(clk, NULL, "gpio.5"); 405 clk_register_clkdev(clk, NULL, "gpio.5");
371 clk_register_clkdev(clk, NULL, "gpioblock2"); 406 clk_register_clkdev(clk, NULL, "gpioblock2");
372 407
373 clk = clk_reg_prcc_pclk("p3_pclk9", "per3clk", clkrst3_base, 408 clk = clk_reg_prcc_pclk("p3_pclk9", "per3clk", bases[CLKRST3_INDEX],
374 BIT(9), 0); 409 BIT(9), 0);
375 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.5"); 410 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.5");
376 411
377 clk = clk_reg_prcc_pclk("p3_pclk10", "per3clk", clkrst3_base, 412 clk = clk_reg_prcc_pclk("p3_pclk10", "per3clk", bases[CLKRST3_INDEX],
378 BIT(10), 0); 413 BIT(10), 0);
379 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.6"); 414 clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.6");
380 415
381 clk = clk_reg_prcc_pclk("p3_pclk11", "per3clk", clkrst3_base, 416 clk = clk_reg_prcc_pclk("p3_pclk11", "per3clk", bases[CLKRST3_INDEX],
382 BIT(11), 0); 417 BIT(11), 0);
383 clk_register_clkdev(clk, "apb_pclk", "uart3"); 418 clk_register_clkdev(clk, "apb_pclk", "uart3");
384 419
385 clk = clk_reg_prcc_pclk("p3_pclk12", "per3clk", clkrst3_base, 420 clk = clk_reg_prcc_pclk("p3_pclk12", "per3clk", bases[CLKRST3_INDEX],
386 BIT(12), 0); 421 BIT(12), 0);
387 clk_register_clkdev(clk, "apb_pclk", "uart4"); 422 clk_register_clkdev(clk, "apb_pclk", "uart4");
388 423
389 /* Peripheral 5 : PRCC P-clocks */ 424 /* Peripheral 5 : PRCC P-clocks */
390 clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base, 425 clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", bases[CLKRST5_INDEX],
391 BIT(0), 0); 426 BIT(0), 0);
392 clk_register_clkdev(clk, "usb", "musb-ux500.0"); 427 clk_register_clkdev(clk, "usb", "musb-ux500.0");
393 clk_register_clkdev(clk, "usbclk", "ab-iddet.0"); 428 clk_register_clkdev(clk, "usbclk", "ab-iddet.0");
394 429
395 clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base, 430 clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", bases[CLKRST5_INDEX],
396 BIT(1), 0); 431 BIT(1), 0);
397 clk_register_clkdev(clk, NULL, "gpio.8"); 432 clk_register_clkdev(clk, NULL, "gpio.8");
398 clk_register_clkdev(clk, NULL, "gpioblock3"); 433 clk_register_clkdev(clk, NULL, "gpioblock3");
399 434
400 /* Peripheral 6 : PRCC P-clocks */ 435 /* Peripheral 6 : PRCC P-clocks */
401 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base, 436 clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", bases[CLKRST6_INDEX],
402 BIT(0), 0); 437 BIT(0), 0);
403 clk_register_clkdev(clk, "apb_pclk", "rng"); 438 clk_register_clkdev(clk, "apb_pclk", "rng");
404 439
405 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base, 440 clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", bases[CLKRST6_INDEX],
406 BIT(1), 0); 441 BIT(1), 0);
407 clk_register_clkdev(clk, NULL, "cryp0"); 442 clk_register_clkdev(clk, NULL, "cryp0");
408 clk_register_clkdev(clk, NULL, "cryp1"); 443 clk_register_clkdev(clk, NULL, "cryp1");
409 444
410 clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base, 445 clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", bases[CLKRST6_INDEX],
411 BIT(2), 0); 446 BIT(2), 0);
412 clk_register_clkdev(clk, NULL, "hash0"); 447 clk_register_clkdev(clk, NULL, "hash0");
413 448
414 clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base, 449 clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", bases[CLKRST6_INDEX],
415 BIT(3), 0); 450 BIT(3), 0);
416 clk_register_clkdev(clk, NULL, "pka"); 451 clk_register_clkdev(clk, NULL, "pka");
417 452
418 clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base, 453 clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", bases[CLKRST6_INDEX],
419 BIT(4), 0); 454 BIT(4), 0);
420 clk_register_clkdev(clk, NULL, "db8540-hash1"); 455 clk_register_clkdev(clk, NULL, "db8540-hash1");
421 456
422 clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base, 457 clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", bases[CLKRST6_INDEX],
423 BIT(5), 0); 458 BIT(5), 0);
424 clk_register_clkdev(clk, NULL, "cfgreg"); 459 clk_register_clkdev(clk, NULL, "cfgreg");
425 460
426 clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base, 461 clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", bases[CLKRST6_INDEX],
427 BIT(6), 0); 462 BIT(6), 0);
428 clk_register_clkdev(clk, "apb_pclk", "mtu0"); 463 clk_register_clkdev(clk, "apb_pclk", "mtu0");
429 464
430 clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base, 465 clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", bases[CLKRST6_INDEX],
431 BIT(7), 0); 466 BIT(7), 0);
432 clk_register_clkdev(clk, "apb_pclk", "mtu1"); 467 clk_register_clkdev(clk, "apb_pclk", "mtu1");
433 468
@@ -441,138 +476,138 @@ void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
441 476
442 /* Peripheral 1 : PRCC K-clocks */ 477 /* Peripheral 1 : PRCC K-clocks */
443 clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk", 478 clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
444 clkrst1_base, BIT(0), CLK_SET_RATE_GATE); 479 bases[CLKRST1_INDEX], BIT(0), CLK_SET_RATE_GATE);
445 clk_register_clkdev(clk, NULL, "uart0"); 480 clk_register_clkdev(clk, NULL, "uart0");
446 481
447 clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk", 482 clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
448 clkrst1_base, BIT(1), CLK_SET_RATE_GATE); 483 bases[CLKRST1_INDEX], BIT(1), CLK_SET_RATE_GATE);
449 clk_register_clkdev(clk, NULL, "uart1"); 484 clk_register_clkdev(clk, NULL, "uart1");
450 485
451 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk", 486 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
452 clkrst1_base, BIT(2), CLK_SET_RATE_GATE); 487 bases[CLKRST1_INDEX], BIT(2), CLK_SET_RATE_GATE);
453 clk_register_clkdev(clk, NULL, "nmk-i2c.1"); 488 clk_register_clkdev(clk, NULL, "nmk-i2c.1");
454 489
455 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk", 490 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
456 clkrst1_base, BIT(3), CLK_SET_RATE_GATE); 491 bases[CLKRST1_INDEX], BIT(3), CLK_SET_RATE_GATE);
457 clk_register_clkdev(clk, NULL, "msp0"); 492 clk_register_clkdev(clk, NULL, "msp0");
458 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.0"); 493 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.0");
459 494
460 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk", 495 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
461 clkrst1_base, BIT(4), CLK_SET_RATE_GATE); 496 bases[CLKRST1_INDEX], BIT(4), CLK_SET_RATE_GATE);
462 clk_register_clkdev(clk, NULL, "msp1"); 497 clk_register_clkdev(clk, NULL, "msp1");
463 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.1"); 498 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.1");
464 499
465 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmchclk", 500 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmchclk",
466 clkrst1_base, BIT(5), CLK_SET_RATE_GATE); 501 bases[CLKRST1_INDEX], BIT(5), CLK_SET_RATE_GATE);
467 clk_register_clkdev(clk, NULL, "sdi0"); 502 clk_register_clkdev(clk, NULL, "sdi0");
468 503
469 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk", 504 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
470 clkrst1_base, BIT(6), CLK_SET_RATE_GATE); 505 bases[CLKRST1_INDEX], BIT(6), CLK_SET_RATE_GATE);
471 clk_register_clkdev(clk, NULL, "nmk-i2c.2"); 506 clk_register_clkdev(clk, NULL, "nmk-i2c.2");
472 507
473 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk", 508 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
474 clkrst1_base, BIT(8), CLK_SET_RATE_GATE); 509 bases[CLKRST1_INDEX], BIT(8), CLK_SET_RATE_GATE);
475 clk_register_clkdev(clk, NULL, "slimbus0"); 510 clk_register_clkdev(clk, NULL, "slimbus0");
476 511
477 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk", 512 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
478 clkrst1_base, BIT(9), CLK_SET_RATE_GATE); 513 bases[CLKRST1_INDEX], BIT(9), CLK_SET_RATE_GATE);
479 clk_register_clkdev(clk, NULL, "nmk-i2c.4"); 514 clk_register_clkdev(clk, NULL, "nmk-i2c.4");
480 515
481 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk", 516 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
482 clkrst1_base, BIT(10), CLK_SET_RATE_GATE); 517 bases[CLKRST1_INDEX], BIT(10), CLK_SET_RATE_GATE);
483 clk_register_clkdev(clk, NULL, "msp3"); 518 clk_register_clkdev(clk, NULL, "msp3");
484 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.3"); 519 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.3");
485 520
486 /* Peripheral 2 : PRCC K-clocks */ 521 /* Peripheral 2 : PRCC K-clocks */
487 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk", 522 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
488 clkrst2_base, BIT(0), CLK_SET_RATE_GATE); 523 bases[CLKRST2_INDEX], BIT(0), CLK_SET_RATE_GATE);
489 clk_register_clkdev(clk, NULL, "nmk-i2c.3"); 524 clk_register_clkdev(clk, NULL, "nmk-i2c.3");
490 525
491 clk = clk_reg_prcc_kclk("p2_pwl_kclk", "rtc32k", 526 clk = clk_reg_prcc_kclk("p2_pwl_kclk", "rtc32k",
492 clkrst2_base, BIT(1), CLK_SET_RATE_GATE); 527 bases[CLKRST2_INDEX], BIT(1), CLK_SET_RATE_GATE);
493 clk_register_clkdev(clk, NULL, "pwl"); 528 clk_register_clkdev(clk, NULL, "pwl");
494 529
495 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmchclk", 530 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmchclk",
496 clkrst2_base, BIT(2), CLK_SET_RATE_GATE); 531 bases[CLKRST2_INDEX], BIT(2), CLK_SET_RATE_GATE);
497 clk_register_clkdev(clk, NULL, "sdi4"); 532 clk_register_clkdev(clk, NULL, "sdi4");
498 533
499 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk", 534 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
500 clkrst2_base, BIT(3), CLK_SET_RATE_GATE); 535 bases[CLKRST2_INDEX], BIT(3), CLK_SET_RATE_GATE);
501 clk_register_clkdev(clk, NULL, "msp2"); 536 clk_register_clkdev(clk, NULL, "msp2");
502 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.2"); 537 clk_register_clkdev(clk, NULL, "dbx5x0-msp-i2s.2");
503 538
504 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmchclk", 539 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmchclk",
505 clkrst2_base, BIT(4), CLK_SET_RATE_GATE); 540 bases[CLKRST2_INDEX], BIT(4), CLK_SET_RATE_GATE);
506 clk_register_clkdev(clk, NULL, "sdi1"); 541 clk_register_clkdev(clk, NULL, "sdi1");
507 542
508 clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk", 543 clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
509 clkrst2_base, BIT(5), CLK_SET_RATE_GATE); 544 bases[CLKRST2_INDEX], BIT(5), CLK_SET_RATE_GATE);
510 clk_register_clkdev(clk, NULL, "sdi3"); 545 clk_register_clkdev(clk, NULL, "sdi3");
511 546
512 clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk", 547 clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
513 clkrst2_base, BIT(6), 548 bases[CLKRST2_INDEX], BIT(6),
514 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); 549 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
515 clk_register_clkdev(clk, "hsir_hsirxclk", "ste_hsi.0"); 550 clk_register_clkdev(clk, "hsir_hsirxclk", "ste_hsi.0");
516 551
517 clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk", 552 clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
518 clkrst2_base, BIT(7), 553 bases[CLKRST2_INDEX], BIT(7),
519 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT); 554 CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
520 clk_register_clkdev(clk, "hsit_hsitxclk", "ste_hsi.0"); 555 clk_register_clkdev(clk, "hsit_hsitxclk", "ste_hsi.0");
521 556
522 /* Should only be 9540, but might be added for 85xx as well */ 557 /* Should only be 9540, but might be added for 85xx as well */
523 clk = clk_reg_prcc_kclk("p2_msp4_kclk", "msp02clk", 558 clk = clk_reg_prcc_kclk("p2_msp4_kclk", "msp02clk",
524 clkrst2_base, BIT(9), CLK_SET_RATE_GATE); 559 bases[CLKRST2_INDEX], BIT(9), CLK_SET_RATE_GATE);
525 clk_register_clkdev(clk, NULL, "msp4"); 560 clk_register_clkdev(clk, NULL, "msp4");
526 clk_register_clkdev(clk, "msp4", "ab85xx-codec.0"); 561 clk_register_clkdev(clk, "msp4", "ab85xx-codec.0");
527 562
528 /* Peripheral 3 : PRCC K-clocks */ 563 /* Peripheral 3 : PRCC K-clocks */
529 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk", 564 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
530 clkrst3_base, BIT(1), CLK_SET_RATE_GATE); 565 bases[CLKRST3_INDEX], BIT(1), CLK_SET_RATE_GATE);
531 clk_register_clkdev(clk, NULL, "ssp0"); 566 clk_register_clkdev(clk, NULL, "ssp0");
532 567
533 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk", 568 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
534 clkrst3_base, BIT(2), CLK_SET_RATE_GATE); 569 bases[CLKRST3_INDEX], BIT(2), CLK_SET_RATE_GATE);
535 clk_register_clkdev(clk, NULL, "ssp1"); 570 clk_register_clkdev(clk, NULL, "ssp1");
536 571
537 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk", 572 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
538 clkrst3_base, BIT(3), CLK_SET_RATE_GATE); 573 bases[CLKRST3_INDEX], BIT(3), CLK_SET_RATE_GATE);
539 clk_register_clkdev(clk, NULL, "nmk-i2c.0"); 574 clk_register_clkdev(clk, NULL, "nmk-i2c.0");
540 575
541 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmchclk", 576 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmchclk",
542 clkrst3_base, BIT(4), CLK_SET_RATE_GATE); 577 bases[CLKRST3_INDEX], BIT(4), CLK_SET_RATE_GATE);
543 clk_register_clkdev(clk, NULL, "sdi2"); 578 clk_register_clkdev(clk, NULL, "sdi2");
544 579
545 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k", 580 clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
546 clkrst3_base, BIT(5), CLK_SET_RATE_GATE); 581 bases[CLKRST3_INDEX], BIT(5), CLK_SET_RATE_GATE);
547 clk_register_clkdev(clk, NULL, "ske"); 582 clk_register_clkdev(clk, NULL, "ske");
548 clk_register_clkdev(clk, NULL, "nmk-ske-keypad"); 583 clk_register_clkdev(clk, NULL, "nmk-ske-keypad");
549 584
550 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk", 585 clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
551 clkrst3_base, BIT(6), CLK_SET_RATE_GATE); 586 bases[CLKRST3_INDEX], BIT(6), CLK_SET_RATE_GATE);
552 clk_register_clkdev(clk, NULL, "uart2"); 587 clk_register_clkdev(clk, NULL, "uart2");
553 588
554 clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk", 589 clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
555 clkrst3_base, BIT(7), CLK_SET_RATE_GATE); 590 bases[CLKRST3_INDEX], BIT(7), CLK_SET_RATE_GATE);
556 clk_register_clkdev(clk, NULL, "sdi5"); 591 clk_register_clkdev(clk, NULL, "sdi5");
557 592
558 clk = clk_reg_prcc_kclk("p3_i2c5_kclk", "i2cclk", 593 clk = clk_reg_prcc_kclk("p3_i2c5_kclk", "i2cclk",
559 clkrst3_base, BIT(8), CLK_SET_RATE_GATE); 594 bases[CLKRST3_INDEX], BIT(8), CLK_SET_RATE_GATE);
560 clk_register_clkdev(clk, NULL, "nmk-i2c.5"); 595 clk_register_clkdev(clk, NULL, "nmk-i2c.5");
561 596
562 clk = clk_reg_prcc_kclk("p3_i2c6_kclk", "i2cclk", 597 clk = clk_reg_prcc_kclk("p3_i2c6_kclk", "i2cclk",
563 clkrst3_base, BIT(9), CLK_SET_RATE_GATE); 598 bases[CLKRST3_INDEX], BIT(9), CLK_SET_RATE_GATE);
564 clk_register_clkdev(clk, NULL, "nmk-i2c.6"); 599 clk_register_clkdev(clk, NULL, "nmk-i2c.6");
565 600
566 clk = clk_reg_prcc_kclk("p3_uart3_kclk", "uartclk", 601 clk = clk_reg_prcc_kclk("p3_uart3_kclk", "uartclk",
567 clkrst3_base, BIT(10), CLK_SET_RATE_GATE); 602 bases[CLKRST3_INDEX], BIT(10), CLK_SET_RATE_GATE);
568 clk_register_clkdev(clk, NULL, "uart3"); 603 clk_register_clkdev(clk, NULL, "uart3");
569 604
570 clk = clk_reg_prcc_kclk("p3_uart4_kclk", "uartclk", 605 clk = clk_reg_prcc_kclk("p3_uart4_kclk", "uartclk",
571 clkrst3_base, BIT(11), CLK_SET_RATE_GATE); 606 bases[CLKRST3_INDEX], BIT(11), CLK_SET_RATE_GATE);
572 clk_register_clkdev(clk, NULL, "uart4"); 607 clk_register_clkdev(clk, NULL, "uart4");
573 608
574 /* Peripheral 6 : PRCC K-clocks */ 609 /* Peripheral 6 : PRCC K-clocks */
575 clk = clk_reg_prcc_kclk("p6_rng_kclk", "rngclk", 610 clk = clk_reg_prcc_kclk("p6_rng_kclk", "rngclk",
576 clkrst6_base, BIT(0), CLK_SET_RATE_GATE); 611 bases[CLKRST6_INDEX], BIT(0), CLK_SET_RATE_GATE);
577 clk_register_clkdev(clk, NULL, "rng"); 612 clk_register_clkdev(clk, NULL, "rng");
578} 613}
diff --git a/drivers/clk/ux500/u9540_clk.c b/drivers/clk/ux500/u9540_clk.c
index 179bd3871b34..2138a4c8cbca 100644
--- a/drivers/clk/ux500/u9540_clk.c
+++ b/drivers/clk/ux500/u9540_clk.c
@@ -12,8 +12,7 @@
12#include <linux/platform_data/clk-ux500.h> 12#include <linux/platform_data/clk-ux500.h>
13#include "clk.h" 13#include "clk.h"
14 14
15void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, 15void u9540_clk_init(void)
16 u32 clkrst5_base, u32 clkrst6_base)
17{ 16{
18 /* register clocks here */ 17 /* register clocks here */
19} 18}
diff --git a/include/linux/platform_data/clk-ux500.h b/include/linux/platform_data/clk-ux500.h
index 0058edb24391..3af0da1f3be5 100644
--- a/include/linux/platform_data/clk-ux500.h
+++ b/include/linux/platform_data/clk-ux500.h
@@ -10,12 +10,8 @@
10#ifndef __CLK_UX500_H 10#ifndef __CLK_UX500_H
11#define __CLK_UX500_H 11#define __CLK_UX500_H
12 12
13void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, 13void u8500_clk_init(void);
14 u32 clkrst5_base, u32 clkrst6_base); 14void u9540_clk_init(void);
15 15void u8540_clk_init(void);
16void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
17 u32 clkrst5_base, u32 clkrst6_base);
18void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
19 u32 clkrst5_base, u32 clkrst6_base);
20 16
21#endif /* __CLK_UX500_H */ 17#endif /* __CLK_UX500_H */