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")) |
