aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk/spear/spear3xx_clock.c
diff options
context:
space:
mode:
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"))