diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2015-07-30 09:19:25 -0400 |
---|---|---|
committer | Michael Turquette <mturquette@baylibre.com> | 2015-08-24 19:49:14 -0400 |
commit | 5dc0fe199b358966021b015c71ca4049d0f42aa6 (patch) | |
tree | 6535c2dbda550a6a5d1353fd96dba05d6eec98dd | |
parent | c660b2ebb25be5668a4ed333539f34b05841e17a (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.dtsi | 7 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu.c | 21 | ||||
-rw-r--r-- | drivers/clk/ux500/u8500_of_clk.c | 163 | ||||
-rw-r--r-- | drivers/clk/ux500/u8540_clk.c | 197 | ||||
-rw-r--r-- | drivers/clk/ux500/u9540_clk.c | 3 | ||||
-rw-r--r-- | include/linux/platform_data/clk-ux500.h | 10 |
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 | ||
92 | static const char * __init ux500_get_machine(void) | 83 | static 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 | ||
55 | void 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) | 57 | enum clkrst_index { |
58 | CLKRST1_INDEX = 0, | ||
59 | CLKRST2_INDEX, | ||
60 | CLKRST3_INDEX, | ||
61 | CLKRST5_INDEX, | ||
62 | CLKRST6_INDEX, | ||
63 | CLKRST_MAX, | ||
64 | }; | ||
65 | |||
66 | void 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 | ||
16 | void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, | 18 | static 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 */ | ||
24 | enum clkrst_index { | ||
25 | CLKRST1_INDEX = 0, | ||
26 | CLKRST2_INDEX, | ||
27 | CLKRST3_INDEX, | ||
28 | CLKRST5_INDEX, | ||
29 | CLKRST6_INDEX, | ||
30 | CLKRST_MAX, | ||
31 | }; | ||
32 | |||
33 | void 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 | ||
15 | void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, | 15 | void 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 | ||
13 | void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, | 13 | void u8500_clk_init(void); |
14 | u32 clkrst5_base, u32 clkrst6_base); | 14 | void u9540_clk_init(void); |
15 | 15 | void u8540_clk_init(void); | |
16 | void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, | ||
17 | u32 clkrst5_base, u32 clkrst6_base); | ||
18 | void 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 */ |