diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 14:25:08 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-11 14:25:08 -0500 |
commit | 93874681aa3f538a2b9d59a6c5b7c0e882a36978 (patch) | |
tree | 6ec88fb9fb50e2b5e15b008e7353cc7d6395e1f8 /drivers/clk/spear/spear3xx_clock.c | |
parent | 505cbedab9c7c565957e64af6348e5d84acd510e (diff) | |
parent | 8f87189653d60656e262060665f52c855508a301 (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.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")) |