diff options
Diffstat (limited to 'drivers/clk/spear/spear3xx_clock.c')
-rw-r--r-- | drivers/clk/spear/spear3xx_clock.c | 154 |
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 */ |
108 | static struct aux_rate_tbl aux_rtbl[] = { | 108 | static 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 | ||
167 | static 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 | ||
209 | static 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 | ||
362 | static inline void spear320_clk_init(void) { } | ||
339 | #endif | 363 | #endif |
340 | 364 | ||
341 | void __init spear3xx_clk_init(void) | 365 | void __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")) |