aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/spear/spear3xx_clock.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-12-11 14:25:08 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2012-12-11 14:25:08 -0500
commit93874681aa3f538a2b9d59a6c5b7c0e882a36978 (patch)
tree6ec88fb9fb50e2b5e15b008e7353cc7d6395e1f8 /drivers/clk/spear/spear3xx_clock.c
parent505cbedab9c7c565957e64af6348e5d84acd510e (diff)
parent8f87189653d60656e262060665f52c855508a301 (diff)
Merge tag 'clk-for-linus' of git://git.linaro.org/people/mturquette/linux
Pull clock framework changes from Mike Turquette: "The common clock framework changes for 3.8 are comprised of lots of fixes for existing platforms as well as new ports for some ARM platforms. In addition there are new clk drivers for audio devices and MFDs." Fix up trivial conflict in <linux/clk-provider.h> (removal of 'inline' clashing with return type fixes) * tag 'clk-for-linus' of git://git.linaro.org/people/mturquette/linux: (51 commits) MAINTAINERS: bad email address for Mike Turquette clk: introduce optional disable_unused callback clk: ux500: fix bit error clk: clock multiplexers may register out of order clk: ux500: Initial support for abx500 clock driver CLK: SPEAr: Remove unused dummy apb_pclk CLK: SPEAr: Correct index scanning done for clock synths CLK: SPEAr: Update clock rate table CLK: SPEAr: Add missing clocks CLK: SPEAr: Set CLK_SET_RATE_PARENT for few clocks CLK: SPEAr13xx: fix parent names of multiple clocks CLK: SPEAr13xx: Fix mux clock names CLK: SPEAr: Fix dev_id & con_id for multiple clocks clk: move IM-PD1 clocks to drivers/clk clk: make ICST driver handle the VCO registers clk: add GPLv2 headers to the Versatile clock files clk: mxs: Use a better name for the USB PHY clock clk: spear: Add stub functions for spear3[0|1|2]0_clk_init() CLK: clk-twl6040: fix return value check in twl6040_clk_probe() clk: ux500: Register nomadik keypad clock lookups for u8500 ...
Diffstat (limited to 'drivers/clk/spear/spear3xx_clock.c')
-rw-r--r--drivers/clk/spear/spear3xx_clock.c154
1 files changed, 94 insertions, 60 deletions
diff --git a/drivers/clk/spear/spear3xx_clock.c b/drivers/clk/spear/spear3xx_clock.c
index c3157454bb3f..33d3ac588da7 100644
--- a/drivers/clk/spear/spear3xx_clock.c
+++ b/drivers/clk/spear/spear3xx_clock.c
@@ -107,6 +107,12 @@ static struct pll_rate_tbl pll_rtbl[] = {
107/* aux rate configuration table, in ascending order of rates */ 107/* aux rate configuration table, in ascending order of rates */
108static struct aux_rate_tbl aux_rtbl[] = { 108static struct aux_rate_tbl aux_rtbl[] = {
109 /* For PLL1 = 332 MHz */ 109 /* For PLL1 = 332 MHz */
110 {.xscale = 1, .yscale = 81, .eq = 0}, /* 2.049 MHz */
111 {.xscale = 1, .yscale = 59, .eq = 0}, /* 2.822 MHz */
112 {.xscale = 2, .yscale = 81, .eq = 0}, /* 4.098 MHz */
113 {.xscale = 3, .yscale = 89, .eq = 0}, /* 5.644 MHz */
114 {.xscale = 4, .yscale = 81, .eq = 0}, /* 8.197 MHz */
115 {.xscale = 4, .yscale = 59, .eq = 0}, /* 11.254 MHz */
110 {.xscale = 2, .yscale = 27, .eq = 0}, /* 12.296 MHz */ 116 {.xscale = 2, .yscale = 27, .eq = 0}, /* 12.296 MHz */
111 {.xscale = 2, .yscale = 8, .eq = 0}, /* 41.5 MHz */ 117 {.xscale = 2, .yscale = 8, .eq = 0}, /* 41.5 MHz */
112 {.xscale = 2, .yscale = 4, .eq = 0}, /* 83 MHz */ 118 {.xscale = 2, .yscale = 4, .eq = 0}, /* 83 MHz */
@@ -157,6 +163,8 @@ static void __init spear300_clk_init(void)
157 1); 163 1);
158 clk_register_clkdev(clk, NULL, "a0000000.kbd"); 164 clk_register_clkdev(clk, NULL, "a0000000.kbd");
159} 165}
166#else
167static inline void spear300_clk_init(void) { }
160#endif 168#endif
161 169
162/* array of all spear 310 clock lookups */ 170/* array of all spear 310 clock lookups */
@@ -197,6 +205,8 @@ static void __init spear310_clk_init(void)
197 1); 205 1);
198 clk_register_clkdev(clk, NULL, "b2200000.serial"); 206 clk_register_clkdev(clk, NULL, "b2200000.serial");
199} 207}
208#else
209static inline void spear310_clk_init(void) { }
200#endif 210#endif
201 211
202/* array of all spear 320 clock lookups */ 212/* array of all spear 320 clock lookups */
@@ -251,7 +261,7 @@ static void __init spear320_clk_init(void)
251 261
252 clk = clk_register_fixed_factor(NULL, "pwm_clk", "ras_ahb_clk", 0, 1, 262 clk = clk_register_fixed_factor(NULL, "pwm_clk", "ras_ahb_clk", 0, 1,
253 1); 263 1);
254 clk_register_clkdev(clk, "pwm", NULL); 264 clk_register_clkdev(clk, NULL, "a8000000.pwm");
255 265
256 clk = clk_register_fixed_factor(NULL, "ssp1_clk", "ras_ahb_clk", 0, 1, 266 clk = clk_register_fixed_factor(NULL, "ssp1_clk", "ras_ahb_clk", 0, 1,
257 1); 267 1);
@@ -271,26 +281,37 @@ static void __init spear320_clk_init(void)
271 281
272 clk = clk_register_fixed_factor(NULL, "i2s_clk", "ras_apb_clk", 0, 1, 282 clk = clk_register_fixed_factor(NULL, "i2s_clk", "ras_apb_clk", 0, 1,
273 1); 283 1);
274 clk_register_clkdev(clk, NULL, "i2s"); 284 clk_register_clkdev(clk, NULL, "a9400000.i2s");
275 285
276 clk = clk_register_mux(NULL, "i2s_ref_clk", i2s_ref_parents, 286 clk = clk_register_mux(NULL, "i2s_ref_clk", i2s_ref_parents,
277 ARRAY_SIZE(i2s_ref_parents), 0, SPEAR320_CONTROL_REG, 287 ARRAY_SIZE(i2s_ref_parents), CLK_SET_RATE_PARENT,
278 I2S_REF_PCLK_SHIFT, I2S_REF_PCLK_MASK, 0, &_lock); 288 SPEAR320_CONTROL_REG, I2S_REF_PCLK_SHIFT,
289 I2S_REF_PCLK_MASK, 0, &_lock);
279 clk_register_clkdev(clk, "i2s_ref_clk", NULL); 290 clk_register_clkdev(clk, "i2s_ref_clk", NULL);
280 291
281 clk = clk_register_fixed_factor(NULL, "i2s_sclk", "i2s_ref_clk", 0, 1, 292 clk = clk_register_fixed_factor(NULL, "i2s_sclk", "i2s_ref_clk",
293 CLK_SET_RATE_PARENT, 1,
282 4); 294 4);
283 clk_register_clkdev(clk, "i2s_sclk", NULL); 295 clk_register_clkdev(clk, "i2s_sclk", NULL);
284 296
297 clk = clk_register_fixed_factor(NULL, "macb1_clk", "ras_apb_clk", 0, 1,
298 1);
299 clk_register_clkdev(clk, "hclk", "aa000000.eth");
300
301 clk = clk_register_fixed_factor(NULL, "macb2_clk", "ras_apb_clk", 0, 1,
302 1);
303 clk_register_clkdev(clk, "hclk", "ab000000.eth");
304
285 clk = clk_register_mux(NULL, "rs485_clk", uartx_parents, 305 clk = clk_register_mux(NULL, "rs485_clk", uartx_parents,
286 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 306 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
287 SPEAR320_RS485_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 307 SPEAR320_EXT_CTRL_REG, SPEAR320_RS485_PCLK_SHIFT,
288 &_lock); 308 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
289 clk_register_clkdev(clk, NULL, "a9300000.serial"); 309 clk_register_clkdev(clk, NULL, "a9300000.serial");
290 310
291 clk = clk_register_mux(NULL, "sdhci_clk", sdhci_parents, 311 clk = clk_register_mux(NULL, "sdhci_clk", sdhci_parents,
292 ARRAY_SIZE(sdhci_parents), 0, SPEAR320_CONTROL_REG, 312 ARRAY_SIZE(sdhci_parents), CLK_SET_RATE_PARENT,
293 SDHCI_PCLK_SHIFT, SDHCI_PCLK_MASK, 0, &_lock); 313 SPEAR320_CONTROL_REG, SDHCI_PCLK_SHIFT, SDHCI_PCLK_MASK,
314 0, &_lock);
294 clk_register_clkdev(clk, NULL, "70000000.sdhci"); 315 clk_register_clkdev(clk, NULL, "70000000.sdhci");
295 316
296 clk = clk_register_mux(NULL, "smii_pclk", smii0_parents, 317 clk = clk_register_mux(NULL, "smii_pclk", smii0_parents,
@@ -302,49 +323,49 @@ static void __init spear320_clk_init(void)
302 clk_register_clkdev(clk, NULL, "smii"); 323 clk_register_clkdev(clk, NULL, "smii");
303 324
304 clk = clk_register_mux(NULL, "uart1_clk", uartx_parents, 325 clk = clk_register_mux(NULL, "uart1_clk", uartx_parents,
305 ARRAY_SIZE(uartx_parents), 0, SPEAR320_CONTROL_REG, 326 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
306 UART1_PCLK_SHIFT, UART1_PCLK_MASK, 0, &_lock); 327 SPEAR320_CONTROL_REG, UART1_PCLK_SHIFT, UART1_PCLK_MASK,
328 0, &_lock);
307 clk_register_clkdev(clk, NULL, "a3000000.serial"); 329 clk_register_clkdev(clk, NULL, "a3000000.serial");
308 330
309 clk = clk_register_mux(NULL, "uart2_clk", uartx_parents, 331 clk = clk_register_mux(NULL, "uart2_clk", uartx_parents,
310 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 332 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
311 SPEAR320_UART2_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 333 SPEAR320_EXT_CTRL_REG, SPEAR320_UART2_PCLK_SHIFT,
312 &_lock); 334 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
313 clk_register_clkdev(clk, NULL, "a4000000.serial"); 335 clk_register_clkdev(clk, NULL, "a4000000.serial");
314 336
315 clk = clk_register_mux(NULL, "uart3_clk", uartx_parents, 337 clk = clk_register_mux(NULL, "uart3_clk", uartx_parents,
316 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 338 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
317 SPEAR320_UART3_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 339 SPEAR320_EXT_CTRL_REG, SPEAR320_UART3_PCLK_SHIFT,
318 &_lock); 340 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
319 clk_register_clkdev(clk, NULL, "a9100000.serial"); 341 clk_register_clkdev(clk, NULL, "a9100000.serial");
320 342
321 clk = clk_register_mux(NULL, "uart4_clk", uartx_parents, 343 clk = clk_register_mux(NULL, "uart4_clk", uartx_parents,
322 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 344 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
323 SPEAR320_UART4_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 345 SPEAR320_EXT_CTRL_REG, SPEAR320_UART4_PCLK_SHIFT,
324 &_lock); 346 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
325 clk_register_clkdev(clk, NULL, "a9200000.serial"); 347 clk_register_clkdev(clk, NULL, "a9200000.serial");
326 348
327 clk = clk_register_mux(NULL, "uart5_clk", uartx_parents, 349 clk = clk_register_mux(NULL, "uart5_clk", uartx_parents,
328 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 350 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
329 SPEAR320_UART5_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 351 SPEAR320_EXT_CTRL_REG, SPEAR320_UART5_PCLK_SHIFT,
330 &_lock); 352 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
331 clk_register_clkdev(clk, NULL, "60000000.serial"); 353 clk_register_clkdev(clk, NULL, "60000000.serial");
332 354
333 clk = clk_register_mux(NULL, "uart6_clk", uartx_parents, 355 clk = clk_register_mux(NULL, "uart6_clk", uartx_parents,
334 ARRAY_SIZE(uartx_parents), 0, SPEAR320_EXT_CTRL_REG, 356 ARRAY_SIZE(uartx_parents), CLK_SET_RATE_PARENT,
335 SPEAR320_UART6_PCLK_SHIFT, SPEAR320_UARTX_PCLK_MASK, 0, 357 SPEAR320_EXT_CTRL_REG, SPEAR320_UART6_PCLK_SHIFT,
336 &_lock); 358 SPEAR320_UARTX_PCLK_MASK, 0, &_lock);
337 clk_register_clkdev(clk, NULL, "60100000.serial"); 359 clk_register_clkdev(clk, NULL, "60100000.serial");
338} 360}
361#else
362static inline void spear320_clk_init(void) { }
339#endif 363#endif
340 364
341void __init spear3xx_clk_init(void) 365void __init spear3xx_clk_init(void)
342{ 366{
343 struct clk *clk, *clk1; 367 struct clk *clk, *clk1;
344 368
345 clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL, CLK_IS_ROOT, 0);
346 clk_register_clkdev(clk, "apb_pclk", NULL);
347
348 clk = clk_register_fixed_rate(NULL, "osc_32k_clk", NULL, CLK_IS_ROOT, 369 clk = clk_register_fixed_rate(NULL, "osc_32k_clk", NULL, CLK_IS_ROOT,
349 32000); 370 32000);
350 clk_register_clkdev(clk, "osc_32k_clk", NULL); 371 clk_register_clkdev(clk, "osc_32k_clk", NULL);
@@ -380,7 +401,8 @@ void __init spear3xx_clk_init(void)
380 clk_register_clkdev(clk1, "pll2_clk", NULL); 401 clk_register_clkdev(clk1, "pll2_clk", NULL);
381 402
382 /* clock derived from pll1 clk */ 403 /* clock derived from pll1 clk */
383 clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk", 0, 1, 1); 404 clk = clk_register_fixed_factor(NULL, "cpu_clk", "pll1_clk",
405 CLK_SET_RATE_PARENT, 1, 1);
384 clk_register_clkdev(clk, "cpu_clk", NULL); 406 clk_register_clkdev(clk, "cpu_clk", NULL);
385 407
386 clk = clk_register_divider(NULL, "ahb_clk", "pll1_clk", 408 clk = clk_register_divider(NULL, "ahb_clk", "pll1_clk",
@@ -395,12 +417,14 @@ void __init spear3xx_clk_init(void)
395 clk_register_clkdev(clk1, "uart_syn_gclk", NULL); 417 clk_register_clkdev(clk1, "uart_syn_gclk", NULL);
396 418
397 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents, 419 clk = clk_register_mux(NULL, "uart0_mclk", uart0_parents,
398 ARRAY_SIZE(uart0_parents), 0, PERIP_CLK_CFG, 420 ARRAY_SIZE(uart0_parents), CLK_SET_RATE_PARENT,
399 UART_CLK_SHIFT, UART_CLK_MASK, 0, &_lock); 421 PERIP_CLK_CFG, UART_CLK_SHIFT, UART_CLK_MASK, 0,
422 &_lock);
400 clk_register_clkdev(clk, "uart0_mclk", NULL); 423 clk_register_clkdev(clk, "uart0_mclk", NULL);
401 424
402 clk = clk_register_gate(NULL, "uart0", "uart0_mclk", 0, PERIP1_CLK_ENB, 425 clk = clk_register_gate(NULL, "uart0", "uart0_mclk",
403 UART_CLK_ENB, 0, &_lock); 426 CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, UART_CLK_ENB, 0,
427 &_lock);
404 clk_register_clkdev(clk, NULL, "d0000000.serial"); 428 clk_register_clkdev(clk, NULL, "d0000000.serial");
405 429
406 clk = clk_register_aux("firda_syn_clk", "firda_syn_gclk", "pll1_clk", 0, 430 clk = clk_register_aux("firda_syn_clk", "firda_syn_gclk", "pll1_clk", 0,
@@ -410,40 +434,44 @@ void __init spear3xx_clk_init(void)
410 clk_register_clkdev(clk1, "firda_syn_gclk", NULL); 434 clk_register_clkdev(clk1, "firda_syn_gclk", NULL);
411 435
412 clk = clk_register_mux(NULL, "firda_mclk", firda_parents, 436 clk = clk_register_mux(NULL, "firda_mclk", firda_parents,
413 ARRAY_SIZE(firda_parents), 0, PERIP_CLK_CFG, 437 ARRAY_SIZE(firda_parents), CLK_SET_RATE_PARENT,
414 FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0, &_lock); 438 PERIP_CLK_CFG, FIRDA_CLK_SHIFT, FIRDA_CLK_MASK, 0,
439 &_lock);
415 clk_register_clkdev(clk, "firda_mclk", NULL); 440 clk_register_clkdev(clk, "firda_mclk", NULL);
416 441
417 clk = clk_register_gate(NULL, "firda_clk", "firda_mclk", 0, 442 clk = clk_register_gate(NULL, "firda_clk", "firda_mclk",
418 PERIP1_CLK_ENB, FIRDA_CLK_ENB, 0, &_lock); 443 CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, FIRDA_CLK_ENB, 0,
444 &_lock);
419 clk_register_clkdev(clk, NULL, "firda"); 445 clk_register_clkdev(clk, NULL, "firda");
420 446
421 /* gpt clocks */ 447 /* gpt clocks */
422 clk_register_gpt("gpt0_syn_clk", "pll1_clk", 0, PRSC0_CLK_CFG, gpt_rtbl, 448 clk_register_gpt("gpt0_syn_clk", "pll1_clk", 0, PRSC0_CLK_CFG, gpt_rtbl,
423 ARRAY_SIZE(gpt_rtbl), &_lock); 449 ARRAY_SIZE(gpt_rtbl), &_lock);
424 clk = clk_register_mux(NULL, "gpt0_clk", gpt0_parents, 450 clk = clk_register_mux(NULL, "gpt0_clk", gpt0_parents,
425 ARRAY_SIZE(gpt0_parents), 0, PERIP_CLK_CFG, 451 ARRAY_SIZE(gpt0_parents), CLK_SET_RATE_PARENT,
426 GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 452 PERIP_CLK_CFG, GPT0_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock);
427 clk_register_clkdev(clk, NULL, "gpt0"); 453 clk_register_clkdev(clk, NULL, "gpt0");
428 454
429 clk_register_gpt("gpt1_syn_clk", "pll1_clk", 0, PRSC1_CLK_CFG, gpt_rtbl, 455 clk_register_gpt("gpt1_syn_clk", "pll1_clk", 0, PRSC1_CLK_CFG, gpt_rtbl,
430 ARRAY_SIZE(gpt_rtbl), &_lock); 456 ARRAY_SIZE(gpt_rtbl), &_lock);
431 clk = clk_register_mux(NULL, "gpt1_mclk", gpt1_parents, 457 clk = clk_register_mux(NULL, "gpt1_mclk", gpt1_parents,
432 ARRAY_SIZE(gpt1_parents), 0, PERIP_CLK_CFG, 458 ARRAY_SIZE(gpt1_parents), CLK_SET_RATE_PARENT,
433 GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 459 PERIP_CLK_CFG, GPT1_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock);
434 clk_register_clkdev(clk, "gpt1_mclk", NULL); 460 clk_register_clkdev(clk, "gpt1_mclk", NULL);
435 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk", 0, 461 clk = clk_register_gate(NULL, "gpt1_clk", "gpt1_mclk",
436 PERIP1_CLK_ENB, GPT1_CLK_ENB, 0, &_lock); 462 CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, GPT1_CLK_ENB, 0,
463 &_lock);
437 clk_register_clkdev(clk, NULL, "gpt1"); 464 clk_register_clkdev(clk, NULL, "gpt1");
438 465
439 clk_register_gpt("gpt2_syn_clk", "pll1_clk", 0, PRSC2_CLK_CFG, gpt_rtbl, 466 clk_register_gpt("gpt2_syn_clk", "pll1_clk", 0, PRSC2_CLK_CFG, gpt_rtbl,
440 ARRAY_SIZE(gpt_rtbl), &_lock); 467 ARRAY_SIZE(gpt_rtbl), &_lock);
441 clk = clk_register_mux(NULL, "gpt2_mclk", gpt2_parents, 468 clk = clk_register_mux(NULL, "gpt2_mclk", gpt2_parents,
442 ARRAY_SIZE(gpt2_parents), 0, PERIP_CLK_CFG, 469 ARRAY_SIZE(gpt2_parents), CLK_SET_RATE_PARENT,
443 GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock); 470 PERIP_CLK_CFG, GPT2_CLK_SHIFT, GPT_CLK_MASK, 0, &_lock);
444 clk_register_clkdev(clk, "gpt2_mclk", NULL); 471 clk_register_clkdev(clk, "gpt2_mclk", NULL);
445 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk", 0, 472 clk = clk_register_gate(NULL, "gpt2_clk", "gpt2_mclk",
446 PERIP1_CLK_ENB, GPT2_CLK_ENB, 0, &_lock); 473 CLK_SET_RATE_PARENT, PERIP1_CLK_ENB, GPT2_CLK_ENB, 0,
474 &_lock);
447 clk_register_clkdev(clk, NULL, "gpt2"); 475 clk_register_clkdev(clk, NULL, "gpt2");
448 476
449 /* general synths clocks */ 477 /* general synths clocks */
@@ -480,7 +508,9 @@ void __init spear3xx_clk_init(void)
480 /* clock derived from pll3 clk */ 508 /* clock derived from pll3 clk */
481 clk = clk_register_gate(NULL, "usbh_clk", "pll3_clk", 0, PERIP1_CLK_ENB, 509 clk = clk_register_gate(NULL, "usbh_clk", "pll3_clk", 0, PERIP1_CLK_ENB,
482 USBH_CLK_ENB, 0, &_lock); 510 USBH_CLK_ENB, 0, &_lock);
483 clk_register_clkdev(clk, "usbh_clk", NULL); 511 clk_register_clkdev(clk, NULL, "e1800000.ehci");
512 clk_register_clkdev(clk, NULL, "e1900000.ohci");
513 clk_register_clkdev(clk, NULL, "e2100000.ohci");
484 514
485 clk = clk_register_fixed_factor(NULL, "usbh.0_clk", "usbh_clk", 0, 1, 515 clk = clk_register_fixed_factor(NULL, "usbh.0_clk", "usbh_clk", 0, 1,
486 1); 516 1);
@@ -492,7 +522,7 @@ void __init spear3xx_clk_init(void)
492 522
493 clk = clk_register_gate(NULL, "usbd_clk", "pll3_clk", 0, PERIP1_CLK_ENB, 523 clk = clk_register_gate(NULL, "usbd_clk", "pll3_clk", 0, PERIP1_CLK_ENB,
494 USBD_CLK_ENB, 0, &_lock); 524 USBD_CLK_ENB, 0, &_lock);
495 clk_register_clkdev(clk, NULL, "designware_udc"); 525 clk_register_clkdev(clk, NULL, "e1100000.usbd");
496 526
497 /* clock derived from ahb clk */ 527 /* clock derived from ahb clk */
498 clk = clk_register_fixed_factor(NULL, "ahbmult2_clk", "ahb_clk", 0, 2, 528 clk = clk_register_fixed_factor(NULL, "ahbmult2_clk", "ahb_clk", 0, 2,
@@ -540,7 +570,7 @@ void __init spear3xx_clk_init(void)
540 /* clock derived from apb clk */ 570 /* clock derived from apb clk */
541 clk = clk_register_gate(NULL, "adc_clk", "apb_clk", 0, PERIP1_CLK_ENB, 571 clk = clk_register_gate(NULL, "adc_clk", "apb_clk", 0, PERIP1_CLK_ENB,
542 ADC_CLK_ENB, 0, &_lock); 572 ADC_CLK_ENB, 0, &_lock);
543 clk_register_clkdev(clk, NULL, "adc"); 573 clk_register_clkdev(clk, NULL, "d0080000.adc");
544 574
545 clk = clk_register_gate(NULL, "gpio0_clk", "apb_clk", 0, PERIP1_CLK_ENB, 575 clk = clk_register_gate(NULL, "gpio0_clk", "apb_clk", 0, PERIP1_CLK_ENB,
546 GPIO_CLK_ENB, 0, &_lock); 576 GPIO_CLK_ENB, 0, &_lock);
@@ -579,20 +609,24 @@ void __init spear3xx_clk_init(void)
579 RAS_CLK_ENB, RAS_48M_CLK_ENB, 0, &_lock); 609 RAS_CLK_ENB, RAS_48M_CLK_ENB, 0, &_lock);
580 clk_register_clkdev(clk, "ras_pll3_clk", NULL); 610 clk_register_clkdev(clk, "ras_pll3_clk", NULL);
581 611
582 clk = clk_register_gate(NULL, "ras_syn0_gclk", "gen0_syn_gclk", 0, 612 clk = clk_register_gate(NULL, "ras_syn0_gclk", "gen0_syn_gclk",
583 RAS_CLK_ENB, RAS_SYNT0_CLK_ENB, 0, &_lock); 613 CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT0_CLK_ENB, 0,
614 &_lock);
584 clk_register_clkdev(clk, "ras_syn0_gclk", NULL); 615 clk_register_clkdev(clk, "ras_syn0_gclk", NULL);
585 616
586 clk = clk_register_gate(NULL, "ras_syn1_gclk", "gen1_syn_gclk", 0, 617 clk = clk_register_gate(NULL, "ras_syn1_gclk", "gen1_syn_gclk",
587 RAS_CLK_ENB, RAS_SYNT1_CLK_ENB, 0, &_lock); 618 CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT1_CLK_ENB, 0,
619 &_lock);
588 clk_register_clkdev(clk, "ras_syn1_gclk", NULL); 620 clk_register_clkdev(clk, "ras_syn1_gclk", NULL);
589 621
590 clk = clk_register_gate(NULL, "ras_syn2_gclk", "gen2_syn_gclk", 0, 622 clk = clk_register_gate(NULL, "ras_syn2_gclk", "gen2_syn_gclk",
591 RAS_CLK_ENB, RAS_SYNT2_CLK_ENB, 0, &_lock); 623 CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT2_CLK_ENB, 0,
624 &_lock);
592 clk_register_clkdev(clk, "ras_syn2_gclk", NULL); 625 clk_register_clkdev(clk, "ras_syn2_gclk", NULL);
593 626
594 clk = clk_register_gate(NULL, "ras_syn3_gclk", "gen3_syn_gclk", 0, 627 clk = clk_register_gate(NULL, "ras_syn3_gclk", "gen3_syn_gclk",
595 RAS_CLK_ENB, RAS_SYNT3_CLK_ENB, 0, &_lock); 628 CLK_SET_RATE_PARENT, RAS_CLK_ENB, RAS_SYNT3_CLK_ENB, 0,
629 &_lock);
596 clk_register_clkdev(clk, "ras_syn3_gclk", NULL); 630 clk_register_clkdev(clk, "ras_syn3_gclk", NULL);
597 631
598 if (of_machine_is_compatible("st,spear300")) 632 if (of_machine_is_compatible("st,spear300"))