diff options
author | Thara Gopinath <thara@ti.com> | 2010-12-21 23:08:13 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-12-21 23:08:13 -0500 |
commit | 032b5a7e3aa7dca8a13a79ff6a59232d307552a3 (patch) | |
tree | 476eae99c60539910434db6c1b8815784541c448 | |
parent | ae4b4fc1bb59ad8802800a8103a6519acadcc9cf (diff) |
OMAP4: clock data: Add missing DPLL x2 clock nodes
This patch extends the OMAP4 clock data to include
various x2 clock nodes between DPLL and HS dividers as the
clock framework skips a x2 while calculating the dpll locked
frequency.
The clock database extensions are autogenerated using
the scripts maintained by Benoit Cousson.
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Thara Gopinath <thara@ti.com>
[paul@pwsan.com: fixed merge conflicts against v2.6.37-rc5; dropped
dpll_mpu_x2_ck on advice from BenoƮt]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Rajendra Nayak <rnayak@ti.com>
-rw-r--r-- | arch/arm/mach-omap2/clock44xx_data.c | 415 |
1 files changed, 240 insertions, 175 deletions
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 305019c44108..7c8d7f485603 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -275,11 +275,63 @@ static struct clk dpll_abe_ck = { | |||
275 | .set_rate = &omap3_noncore_dpll_set_rate, | 275 | .set_rate = &omap3_noncore_dpll_set_rate, |
276 | }; | 276 | }; |
277 | 277 | ||
278 | static struct clk dpll_abe_x2_ck = { | ||
279 | .name = "dpll_abe_x2_ck", | ||
280 | .parent = &dpll_abe_ck, | ||
281 | .ops = &clkops_null, | ||
282 | .recalc = &omap3_clkoutx2_recalc, | ||
283 | }; | ||
284 | |||
285 | static const struct clksel_rate div31_1to31_rates[] = { | ||
286 | { .div = 1, .val = 1, .flags = RATE_IN_4430 }, | ||
287 | { .div = 2, .val = 2, .flags = RATE_IN_4430 }, | ||
288 | { .div = 3, .val = 3, .flags = RATE_IN_4430 }, | ||
289 | { .div = 4, .val = 4, .flags = RATE_IN_4430 }, | ||
290 | { .div = 5, .val = 5, .flags = RATE_IN_4430 }, | ||
291 | { .div = 6, .val = 6, .flags = RATE_IN_4430 }, | ||
292 | { .div = 7, .val = 7, .flags = RATE_IN_4430 }, | ||
293 | { .div = 8, .val = 8, .flags = RATE_IN_4430 }, | ||
294 | { .div = 9, .val = 9, .flags = RATE_IN_4430 }, | ||
295 | { .div = 10, .val = 10, .flags = RATE_IN_4430 }, | ||
296 | { .div = 11, .val = 11, .flags = RATE_IN_4430 }, | ||
297 | { .div = 12, .val = 12, .flags = RATE_IN_4430 }, | ||
298 | { .div = 13, .val = 13, .flags = RATE_IN_4430 }, | ||
299 | { .div = 14, .val = 14, .flags = RATE_IN_4430 }, | ||
300 | { .div = 15, .val = 15, .flags = RATE_IN_4430 }, | ||
301 | { .div = 16, .val = 16, .flags = RATE_IN_4430 }, | ||
302 | { .div = 17, .val = 17, .flags = RATE_IN_4430 }, | ||
303 | { .div = 18, .val = 18, .flags = RATE_IN_4430 }, | ||
304 | { .div = 19, .val = 19, .flags = RATE_IN_4430 }, | ||
305 | { .div = 20, .val = 20, .flags = RATE_IN_4430 }, | ||
306 | { .div = 21, .val = 21, .flags = RATE_IN_4430 }, | ||
307 | { .div = 22, .val = 22, .flags = RATE_IN_4430 }, | ||
308 | { .div = 23, .val = 23, .flags = RATE_IN_4430 }, | ||
309 | { .div = 24, .val = 24, .flags = RATE_IN_4430 }, | ||
310 | { .div = 25, .val = 25, .flags = RATE_IN_4430 }, | ||
311 | { .div = 26, .val = 26, .flags = RATE_IN_4430 }, | ||
312 | { .div = 27, .val = 27, .flags = RATE_IN_4430 }, | ||
313 | { .div = 28, .val = 28, .flags = RATE_IN_4430 }, | ||
314 | { .div = 29, .val = 29, .flags = RATE_IN_4430 }, | ||
315 | { .div = 30, .val = 30, .flags = RATE_IN_4430 }, | ||
316 | { .div = 31, .val = 31, .flags = RATE_IN_4430 }, | ||
317 | { .div = 0 }, | ||
318 | }; | ||
319 | |||
320 | static const struct clksel dpll_abe_m2x2_div[] = { | ||
321 | { .parent = &dpll_abe_x2_ck, .rates = div31_1to31_rates }, | ||
322 | { .parent = NULL }, | ||
323 | }; | ||
324 | |||
278 | static struct clk dpll_abe_m2x2_ck = { | 325 | static struct clk dpll_abe_m2x2_ck = { |
279 | .name = "dpll_abe_m2x2_ck", | 326 | .name = "dpll_abe_m2x2_ck", |
280 | .parent = &dpll_abe_ck, | 327 | .parent = &dpll_abe_x2_ck, |
328 | .clksel = dpll_abe_m2x2_div, | ||
329 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE, | ||
330 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | ||
281 | .ops = &clkops_null, | 331 | .ops = &clkops_null, |
282 | .recalc = &followparent_recalc, | 332 | .recalc = &omap2_clksel_recalc, |
333 | .round_rate = &omap2_clksel_round_rate, | ||
334 | .set_rate = &omap2_clksel_set_rate, | ||
283 | }; | 335 | }; |
284 | 336 | ||
285 | static struct clk abe_24m_fclk = { | 337 | static struct clk abe_24m_fclk = { |
@@ -336,50 +388,10 @@ static struct clk aess_fclk = { | |||
336 | .set_rate = &omap2_clksel_set_rate, | 388 | .set_rate = &omap2_clksel_set_rate, |
337 | }; | 389 | }; |
338 | 390 | ||
339 | static const struct clksel_rate div31_1to31_rates[] = { | 391 | static struct clk dpll_abe_m3x2_ck = { |
340 | { .div = 1, .val = 1, .flags = RATE_IN_4430 }, | 392 | .name = "dpll_abe_m3x2_ck", |
341 | { .div = 2, .val = 2, .flags = RATE_IN_4430 }, | 393 | .parent = &dpll_abe_x2_ck, |
342 | { .div = 3, .val = 3, .flags = RATE_IN_4430 }, | 394 | .clksel = dpll_abe_m2x2_div, |
343 | { .div = 4, .val = 4, .flags = RATE_IN_4430 }, | ||
344 | { .div = 5, .val = 5, .flags = RATE_IN_4430 }, | ||
345 | { .div = 6, .val = 6, .flags = RATE_IN_4430 }, | ||
346 | { .div = 7, .val = 7, .flags = RATE_IN_4430 }, | ||
347 | { .div = 8, .val = 8, .flags = RATE_IN_4430 }, | ||
348 | { .div = 9, .val = 9, .flags = RATE_IN_4430 }, | ||
349 | { .div = 10, .val = 10, .flags = RATE_IN_4430 }, | ||
350 | { .div = 11, .val = 11, .flags = RATE_IN_4430 }, | ||
351 | { .div = 12, .val = 12, .flags = RATE_IN_4430 }, | ||
352 | { .div = 13, .val = 13, .flags = RATE_IN_4430 }, | ||
353 | { .div = 14, .val = 14, .flags = RATE_IN_4430 }, | ||
354 | { .div = 15, .val = 15, .flags = RATE_IN_4430 }, | ||
355 | { .div = 16, .val = 16, .flags = RATE_IN_4430 }, | ||
356 | { .div = 17, .val = 17, .flags = RATE_IN_4430 }, | ||
357 | { .div = 18, .val = 18, .flags = RATE_IN_4430 }, | ||
358 | { .div = 19, .val = 19, .flags = RATE_IN_4430 }, | ||
359 | { .div = 20, .val = 20, .flags = RATE_IN_4430 }, | ||
360 | { .div = 21, .val = 21, .flags = RATE_IN_4430 }, | ||
361 | { .div = 22, .val = 22, .flags = RATE_IN_4430 }, | ||
362 | { .div = 23, .val = 23, .flags = RATE_IN_4430 }, | ||
363 | { .div = 24, .val = 24, .flags = RATE_IN_4430 }, | ||
364 | { .div = 25, .val = 25, .flags = RATE_IN_4430 }, | ||
365 | { .div = 26, .val = 26, .flags = RATE_IN_4430 }, | ||
366 | { .div = 27, .val = 27, .flags = RATE_IN_4430 }, | ||
367 | { .div = 28, .val = 28, .flags = RATE_IN_4430 }, | ||
368 | { .div = 29, .val = 29, .flags = RATE_IN_4430 }, | ||
369 | { .div = 30, .val = 30, .flags = RATE_IN_4430 }, | ||
370 | { .div = 31, .val = 31, .flags = RATE_IN_4430 }, | ||
371 | { .div = 0 }, | ||
372 | }; | ||
373 | |||
374 | static const struct clksel dpll_abe_m3_div[] = { | ||
375 | { .parent = &dpll_abe_ck, .rates = div31_1to31_rates }, | ||
376 | { .parent = NULL }, | ||
377 | }; | ||
378 | |||
379 | static struct clk dpll_abe_m3_ck = { | ||
380 | .name = "dpll_abe_m3_ck", | ||
381 | .parent = &dpll_abe_ck, | ||
382 | .clksel = dpll_abe_m3_div, | ||
383 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_ABE, | 395 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_ABE, |
384 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, | 396 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, |
385 | .ops = &clkops_null, | 397 | .ops = &clkops_null, |
@@ -390,7 +402,7 @@ static struct clk dpll_abe_m3_ck = { | |||
390 | 402 | ||
391 | static const struct clksel core_hsd_byp_clk_mux_sel[] = { | 403 | static const struct clksel core_hsd_byp_clk_mux_sel[] = { |
392 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, | 404 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, |
393 | { .parent = &dpll_abe_m3_ck, .rates = div_1_1_rates }, | 405 | { .parent = &dpll_abe_m3x2_ck, .rates = div_1_1_rates }, |
394 | { .parent = NULL }, | 406 | { .parent = NULL }, |
395 | }; | 407 | }; |
396 | 408 | ||
@@ -434,15 +446,22 @@ static struct clk dpll_core_ck = { | |||
434 | .recalc = &omap3_dpll_recalc, | 446 | .recalc = &omap3_dpll_recalc, |
435 | }; | 447 | }; |
436 | 448 | ||
437 | static const struct clksel dpll_core_m6_div[] = { | 449 | static struct clk dpll_core_x2_ck = { |
438 | { .parent = &dpll_core_ck, .rates = div31_1to31_rates }, | 450 | .name = "dpll_core_x2_ck", |
451 | .parent = &dpll_core_ck, | ||
452 | .ops = &clkops_null, | ||
453 | .recalc = &omap3_clkoutx2_recalc, | ||
454 | }; | ||
455 | |||
456 | static const struct clksel dpll_core_m6x2_div[] = { | ||
457 | { .parent = &dpll_core_x2_ck, .rates = div31_1to31_rates }, | ||
439 | { .parent = NULL }, | 458 | { .parent = NULL }, |
440 | }; | 459 | }; |
441 | 460 | ||
442 | static struct clk dpll_core_m6_ck = { | 461 | static struct clk dpll_core_m6x2_ck = { |
443 | .name = "dpll_core_m6_ck", | 462 | .name = "dpll_core_m6x2_ck", |
444 | .parent = &dpll_core_ck, | 463 | .parent = &dpll_core_x2_ck, |
445 | .clksel = dpll_core_m6_div, | 464 | .clksel = dpll_core_m6x2_div, |
446 | .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_CORE, | 465 | .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_CORE, |
447 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK, | 466 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK, |
448 | .ops = &clkops_null, | 467 | .ops = &clkops_null, |
@@ -453,7 +472,7 @@ static struct clk dpll_core_m6_ck = { | |||
453 | 472 | ||
454 | static const struct clksel dbgclk_mux_sel[] = { | 473 | static const struct clksel dbgclk_mux_sel[] = { |
455 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, | 474 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, |
456 | { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates }, | 475 | { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates }, |
457 | { .parent = NULL }, | 476 | { .parent = NULL }, |
458 | }; | 477 | }; |
459 | 478 | ||
@@ -464,10 +483,15 @@ static struct clk dbgclk_mux_ck = { | |||
464 | .recalc = &followparent_recalc, | 483 | .recalc = &followparent_recalc, |
465 | }; | 484 | }; |
466 | 485 | ||
486 | static const struct clksel dpll_core_m2_div[] = { | ||
487 | { .parent = &dpll_core_ck, .rates = div31_1to31_rates }, | ||
488 | { .parent = NULL }, | ||
489 | }; | ||
490 | |||
467 | static struct clk dpll_core_m2_ck = { | 491 | static struct clk dpll_core_m2_ck = { |
468 | .name = "dpll_core_m2_ck", | 492 | .name = "dpll_core_m2_ck", |
469 | .parent = &dpll_core_ck, | 493 | .parent = &dpll_core_ck, |
470 | .clksel = dpll_core_m6_div, | 494 | .clksel = dpll_core_m2_div, |
471 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_CORE, | 495 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_CORE, |
472 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | 496 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, |
473 | .ops = &clkops_null, | 497 | .ops = &clkops_null, |
@@ -483,10 +507,10 @@ static struct clk ddrphy_ck = { | |||
483 | .recalc = &followparent_recalc, | 507 | .recalc = &followparent_recalc, |
484 | }; | 508 | }; |
485 | 509 | ||
486 | static struct clk dpll_core_m5_ck = { | 510 | static struct clk dpll_core_m5x2_ck = { |
487 | .name = "dpll_core_m5_ck", | 511 | .name = "dpll_core_m5x2_ck", |
488 | .parent = &dpll_core_ck, | 512 | .parent = &dpll_core_x2_ck, |
489 | .clksel = dpll_core_m6_div, | 513 | .clksel = dpll_core_m6x2_div, |
490 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_CORE, | 514 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_CORE, |
491 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, | 515 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, |
492 | .ops = &clkops_null, | 516 | .ops = &clkops_null, |
@@ -496,13 +520,13 @@ static struct clk dpll_core_m5_ck = { | |||
496 | }; | 520 | }; |
497 | 521 | ||
498 | static const struct clksel div_core_div[] = { | 522 | static const struct clksel div_core_div[] = { |
499 | { .parent = &dpll_core_m5_ck, .rates = div2_1to2_rates }, | 523 | { .parent = &dpll_core_m5x2_ck, .rates = div2_1to2_rates }, |
500 | { .parent = NULL }, | 524 | { .parent = NULL }, |
501 | }; | 525 | }; |
502 | 526 | ||
503 | static struct clk div_core_ck = { | 527 | static struct clk div_core_ck = { |
504 | .name = "div_core_ck", | 528 | .name = "div_core_ck", |
505 | .parent = &dpll_core_m5_ck, | 529 | .parent = &dpll_core_m5x2_ck, |
506 | .clksel = div_core_div, | 530 | .clksel = div_core_div, |
507 | .clksel_reg = OMAP4430_CM_CLKSEL_CORE, | 531 | .clksel_reg = OMAP4430_CM_CLKSEL_CORE, |
508 | .clksel_mask = OMAP4430_CLKSEL_CORE_MASK, | 532 | .clksel_mask = OMAP4430_CLKSEL_CORE_MASK, |
@@ -521,13 +545,13 @@ static const struct clksel_rate div4_1to8_rates[] = { | |||
521 | }; | 545 | }; |
522 | 546 | ||
523 | static const struct clksel div_iva_hs_clk_div[] = { | 547 | static const struct clksel div_iva_hs_clk_div[] = { |
524 | { .parent = &dpll_core_m5_ck, .rates = div4_1to8_rates }, | 548 | { .parent = &dpll_core_m5x2_ck, .rates = div4_1to8_rates }, |
525 | { .parent = NULL }, | 549 | { .parent = NULL }, |
526 | }; | 550 | }; |
527 | 551 | ||
528 | static struct clk div_iva_hs_clk = { | 552 | static struct clk div_iva_hs_clk = { |
529 | .name = "div_iva_hs_clk", | 553 | .name = "div_iva_hs_clk", |
530 | .parent = &dpll_core_m5_ck, | 554 | .parent = &dpll_core_m5x2_ck, |
531 | .clksel = div_iva_hs_clk_div, | 555 | .clksel = div_iva_hs_clk_div, |
532 | .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_IVA, | 556 | .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_IVA, |
533 | .clksel_mask = OMAP4430_CLKSEL_0_1_MASK, | 557 | .clksel_mask = OMAP4430_CLKSEL_0_1_MASK, |
@@ -539,7 +563,7 @@ static struct clk div_iva_hs_clk = { | |||
539 | 563 | ||
540 | static struct clk div_mpu_hs_clk = { | 564 | static struct clk div_mpu_hs_clk = { |
541 | .name = "div_mpu_hs_clk", | 565 | .name = "div_mpu_hs_clk", |
542 | .parent = &dpll_core_m5_ck, | 566 | .parent = &dpll_core_m5x2_ck, |
543 | .clksel = div_iva_hs_clk_div, | 567 | .clksel = div_iva_hs_clk_div, |
544 | .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_MPU, | 568 | .clksel_reg = OMAP4430_CM_BYPCLK_DPLL_MPU, |
545 | .clksel_mask = OMAP4430_CLKSEL_0_1_MASK, | 569 | .clksel_mask = OMAP4430_CLKSEL_0_1_MASK, |
@@ -549,10 +573,10 @@ static struct clk div_mpu_hs_clk = { | |||
549 | .set_rate = &omap2_clksel_set_rate, | 573 | .set_rate = &omap2_clksel_set_rate, |
550 | }; | 574 | }; |
551 | 575 | ||
552 | static struct clk dpll_core_m4_ck = { | 576 | static struct clk dpll_core_m4x2_ck = { |
553 | .name = "dpll_core_m4_ck", | 577 | .name = "dpll_core_m4x2_ck", |
554 | .parent = &dpll_core_ck, | 578 | .parent = &dpll_core_x2_ck, |
555 | .clksel = dpll_core_m6_div, | 579 | .clksel = dpll_core_m6x2_div, |
556 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_CORE, | 580 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_CORE, |
557 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, | 581 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, |
558 | .ops = &clkops_null, | 582 | .ops = &clkops_null, |
@@ -563,15 +587,20 @@ static struct clk dpll_core_m4_ck = { | |||
563 | 587 | ||
564 | static struct clk dll_clk_div_ck = { | 588 | static struct clk dll_clk_div_ck = { |
565 | .name = "dll_clk_div_ck", | 589 | .name = "dll_clk_div_ck", |
566 | .parent = &dpll_core_m4_ck, | 590 | .parent = &dpll_core_m4x2_ck, |
567 | .ops = &clkops_null, | 591 | .ops = &clkops_null, |
568 | .recalc = &followparent_recalc, | 592 | .recalc = &followparent_recalc, |
569 | }; | 593 | }; |
570 | 594 | ||
595 | static const struct clksel dpll_abe_m2_div[] = { | ||
596 | { .parent = &dpll_abe_ck, .rates = div31_1to31_rates }, | ||
597 | { .parent = NULL }, | ||
598 | }; | ||
599 | |||
571 | static struct clk dpll_abe_m2_ck = { | 600 | static struct clk dpll_abe_m2_ck = { |
572 | .name = "dpll_abe_m2_ck", | 601 | .name = "dpll_abe_m2_ck", |
573 | .parent = &dpll_abe_ck, | 602 | .parent = &dpll_abe_ck, |
574 | .clksel = dpll_abe_m3_div, | 603 | .clksel = dpll_abe_m2_div, |
575 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE, | 604 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_ABE, |
576 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | 605 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, |
577 | .ops = &clkops_null, | 606 | .ops = &clkops_null, |
@@ -580,10 +609,10 @@ static struct clk dpll_abe_m2_ck = { | |||
580 | .set_rate = &omap2_clksel_set_rate, | 609 | .set_rate = &omap2_clksel_set_rate, |
581 | }; | 610 | }; |
582 | 611 | ||
583 | static struct clk dpll_core_m3_ck = { | 612 | static struct clk dpll_core_m3x2_ck = { |
584 | .name = "dpll_core_m3_ck", | 613 | .name = "dpll_core_m3x2_ck", |
585 | .parent = &dpll_core_ck, | 614 | .parent = &dpll_core_x2_ck, |
586 | .clksel = dpll_core_m6_div, | 615 | .clksel = dpll_core_m6x2_div, |
587 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_CORE, | 616 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_CORE, |
588 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, | 617 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, |
589 | .ops = &clkops_null, | 618 | .ops = &clkops_null, |
@@ -592,10 +621,10 @@ static struct clk dpll_core_m3_ck = { | |||
592 | .set_rate = &omap2_clksel_set_rate, | 621 | .set_rate = &omap2_clksel_set_rate, |
593 | }; | 622 | }; |
594 | 623 | ||
595 | static struct clk dpll_core_m7_ck = { | 624 | static struct clk dpll_core_m7x2_ck = { |
596 | .name = "dpll_core_m7_ck", | 625 | .name = "dpll_core_m7x2_ck", |
597 | .parent = &dpll_core_ck, | 626 | .parent = &dpll_core_x2_ck, |
598 | .clksel = dpll_core_m6_div, | 627 | .clksel = dpll_core_m6x2_div, |
599 | .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_CORE, | 628 | .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_CORE, |
600 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK, | 629 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK, |
601 | .ops = &clkops_null, | 630 | .ops = &clkops_null, |
@@ -648,15 +677,22 @@ static struct clk dpll_iva_ck = { | |||
648 | .set_rate = &omap3_noncore_dpll_set_rate, | 677 | .set_rate = &omap3_noncore_dpll_set_rate, |
649 | }; | 678 | }; |
650 | 679 | ||
651 | static const struct clksel dpll_iva_m4_div[] = { | 680 | static struct clk dpll_iva_x2_ck = { |
652 | { .parent = &dpll_iva_ck, .rates = div31_1to31_rates }, | 681 | .name = "dpll_iva_x2_ck", |
682 | .parent = &dpll_iva_ck, | ||
683 | .ops = &clkops_null, | ||
684 | .recalc = &omap3_clkoutx2_recalc, | ||
685 | }; | ||
686 | |||
687 | static const struct clksel dpll_iva_m4x2_div[] = { | ||
688 | { .parent = &dpll_iva_x2_ck, .rates = div31_1to31_rates }, | ||
653 | { .parent = NULL }, | 689 | { .parent = NULL }, |
654 | }; | 690 | }; |
655 | 691 | ||
656 | static struct clk dpll_iva_m4_ck = { | 692 | static struct clk dpll_iva_m4x2_ck = { |
657 | .name = "dpll_iva_m4_ck", | 693 | .name = "dpll_iva_m4x2_ck", |
658 | .parent = &dpll_iva_ck, | 694 | .parent = &dpll_iva_x2_ck, |
659 | .clksel = dpll_iva_m4_div, | 695 | .clksel = dpll_iva_m4x2_div, |
660 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_IVA, | 696 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_IVA, |
661 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, | 697 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, |
662 | .ops = &clkops_null, | 698 | .ops = &clkops_null, |
@@ -665,10 +701,10 @@ static struct clk dpll_iva_m4_ck = { | |||
665 | .set_rate = &omap2_clksel_set_rate, | 701 | .set_rate = &omap2_clksel_set_rate, |
666 | }; | 702 | }; |
667 | 703 | ||
668 | static struct clk dpll_iva_m5_ck = { | 704 | static struct clk dpll_iva_m5x2_ck = { |
669 | .name = "dpll_iva_m5_ck", | 705 | .name = "dpll_iva_m5x2_ck", |
670 | .parent = &dpll_iva_ck, | 706 | .parent = &dpll_iva_x2_ck, |
671 | .clksel = dpll_iva_m4_div, | 707 | .clksel = dpll_iva_m4x2_div, |
672 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_IVA, | 708 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_IVA, |
673 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, | 709 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, |
674 | .ops = &clkops_null, | 710 | .ops = &clkops_null, |
@@ -727,7 +763,7 @@ static struct clk dpll_mpu_m2_ck = { | |||
727 | 763 | ||
728 | static struct clk per_hs_clk_div_ck = { | 764 | static struct clk per_hs_clk_div_ck = { |
729 | .name = "per_hs_clk_div_ck", | 765 | .name = "per_hs_clk_div_ck", |
730 | .parent = &dpll_abe_m3_ck, | 766 | .parent = &dpll_abe_m3x2_ck, |
731 | .ops = &clkops_null, | 767 | .ops = &clkops_null, |
732 | .recalc = &followparent_recalc, | 768 | .recalc = &followparent_recalc, |
733 | }; | 769 | }; |
@@ -797,17 +833,34 @@ static struct clk dpll_per_m2_ck = { | |||
797 | .set_rate = &omap2_clksel_set_rate, | 833 | .set_rate = &omap2_clksel_set_rate, |
798 | }; | 834 | }; |
799 | 835 | ||
836 | static struct clk dpll_per_x2_ck = { | ||
837 | .name = "dpll_per_x2_ck", | ||
838 | .parent = &dpll_per_ck, | ||
839 | .ops = &clkops_null, | ||
840 | .recalc = &omap3_clkoutx2_recalc, | ||
841 | }; | ||
842 | |||
843 | static const struct clksel dpll_per_m2x2_div[] = { | ||
844 | { .parent = &dpll_per_x2_ck, .rates = div31_1to31_rates }, | ||
845 | { .parent = NULL }, | ||
846 | }; | ||
847 | |||
800 | static struct clk dpll_per_m2x2_ck = { | 848 | static struct clk dpll_per_m2x2_ck = { |
801 | .name = "dpll_per_m2x2_ck", | 849 | .name = "dpll_per_m2x2_ck", |
802 | .parent = &dpll_per_ck, | 850 | .parent = &dpll_per_x2_ck, |
851 | .clksel = dpll_per_m2x2_div, | ||
852 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_PER, | ||
853 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | ||
803 | .ops = &clkops_null, | 854 | .ops = &clkops_null, |
804 | .recalc = &followparent_recalc, | 855 | .recalc = &omap2_clksel_recalc, |
856 | .round_rate = &omap2_clksel_round_rate, | ||
857 | .set_rate = &omap2_clksel_set_rate, | ||
805 | }; | 858 | }; |
806 | 859 | ||
807 | static struct clk dpll_per_m3_ck = { | 860 | static struct clk dpll_per_m3x2_ck = { |
808 | .name = "dpll_per_m3_ck", | 861 | .name = "dpll_per_m3x2_ck", |
809 | .parent = &dpll_per_ck, | 862 | .parent = &dpll_per_x2_ck, |
810 | .clksel = dpll_per_m2_div, | 863 | .clksel = dpll_per_m2x2_div, |
811 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_PER, | 864 | .clksel_reg = OMAP4430_CM_DIV_M3_DPLL_PER, |
812 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, | 865 | .clksel_mask = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, |
813 | .ops = &clkops_null, | 866 | .ops = &clkops_null, |
@@ -816,10 +869,10 @@ static struct clk dpll_per_m3_ck = { | |||
816 | .set_rate = &omap2_clksel_set_rate, | 869 | .set_rate = &omap2_clksel_set_rate, |
817 | }; | 870 | }; |
818 | 871 | ||
819 | static struct clk dpll_per_m4_ck = { | 872 | static struct clk dpll_per_m4x2_ck = { |
820 | .name = "dpll_per_m4_ck", | 873 | .name = "dpll_per_m4x2_ck", |
821 | .parent = &dpll_per_ck, | 874 | .parent = &dpll_per_x2_ck, |
822 | .clksel = dpll_per_m2_div, | 875 | .clksel = dpll_per_m2x2_div, |
823 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_PER, | 876 | .clksel_reg = OMAP4430_CM_DIV_M4_DPLL_PER, |
824 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, | 877 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK, |
825 | .ops = &clkops_null, | 878 | .ops = &clkops_null, |
@@ -828,10 +881,10 @@ static struct clk dpll_per_m4_ck = { | |||
828 | .set_rate = &omap2_clksel_set_rate, | 881 | .set_rate = &omap2_clksel_set_rate, |
829 | }; | 882 | }; |
830 | 883 | ||
831 | static struct clk dpll_per_m5_ck = { | 884 | static struct clk dpll_per_m5x2_ck = { |
832 | .name = "dpll_per_m5_ck", | 885 | .name = "dpll_per_m5x2_ck", |
833 | .parent = &dpll_per_ck, | 886 | .parent = &dpll_per_x2_ck, |
834 | .clksel = dpll_per_m2_div, | 887 | .clksel = dpll_per_m2x2_div, |
835 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_PER, | 888 | .clksel_reg = OMAP4430_CM_DIV_M5_DPLL_PER, |
836 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, | 889 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK, |
837 | .ops = &clkops_null, | 890 | .ops = &clkops_null, |
@@ -840,10 +893,10 @@ static struct clk dpll_per_m5_ck = { | |||
840 | .set_rate = &omap2_clksel_set_rate, | 893 | .set_rate = &omap2_clksel_set_rate, |
841 | }; | 894 | }; |
842 | 895 | ||
843 | static struct clk dpll_per_m6_ck = { | 896 | static struct clk dpll_per_m6x2_ck = { |
844 | .name = "dpll_per_m6_ck", | 897 | .name = "dpll_per_m6x2_ck", |
845 | .parent = &dpll_per_ck, | 898 | .parent = &dpll_per_x2_ck, |
846 | .clksel = dpll_per_m2_div, | 899 | .clksel = dpll_per_m2x2_div, |
847 | .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_PER, | 900 | .clksel_reg = OMAP4430_CM_DIV_M6_DPLL_PER, |
848 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK, | 901 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK, |
849 | .ops = &clkops_null, | 902 | .ops = &clkops_null, |
@@ -852,10 +905,10 @@ static struct clk dpll_per_m6_ck = { | |||
852 | .set_rate = &omap2_clksel_set_rate, | 905 | .set_rate = &omap2_clksel_set_rate, |
853 | }; | 906 | }; |
854 | 907 | ||
855 | static struct clk dpll_per_m7_ck = { | 908 | static struct clk dpll_per_m7x2_ck = { |
856 | .name = "dpll_per_m7_ck", | 909 | .name = "dpll_per_m7x2_ck", |
857 | .parent = &dpll_per_ck, | 910 | .parent = &dpll_per_x2_ck, |
858 | .clksel = dpll_per_m2_div, | 911 | .clksel = dpll_per_m2x2_div, |
859 | .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_PER, | 912 | .clksel_reg = OMAP4430_CM_DIV_M7_DPLL_PER, |
860 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK, | 913 | .clksel_mask = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK, |
861 | .ops = &clkops_null, | 914 | .ops = &clkops_null, |
@@ -895,14 +948,21 @@ static struct clk dpll_unipro_ck = { | |||
895 | .set_rate = &omap3_noncore_dpll_set_rate, | 948 | .set_rate = &omap3_noncore_dpll_set_rate, |
896 | }; | 949 | }; |
897 | 950 | ||
951 | static struct clk dpll_unipro_x2_ck = { | ||
952 | .name = "dpll_unipro_x2_ck", | ||
953 | .parent = &dpll_unipro_ck, | ||
954 | .ops = &clkops_null, | ||
955 | .recalc = &omap3_clkoutx2_recalc, | ||
956 | }; | ||
957 | |||
898 | static const struct clksel dpll_unipro_m2x2_div[] = { | 958 | static const struct clksel dpll_unipro_m2x2_div[] = { |
899 | { .parent = &dpll_unipro_ck, .rates = div31_1to31_rates }, | 959 | { .parent = &dpll_unipro_x2_ck, .rates = div31_1to31_rates }, |
900 | { .parent = NULL }, | 960 | { .parent = NULL }, |
901 | }; | 961 | }; |
902 | 962 | ||
903 | static struct clk dpll_unipro_m2x2_ck = { | 963 | static struct clk dpll_unipro_m2x2_ck = { |
904 | .name = "dpll_unipro_m2x2_ck", | 964 | .name = "dpll_unipro_m2x2_ck", |
905 | .parent = &dpll_unipro_ck, | 965 | .parent = &dpll_unipro_x2_ck, |
906 | .clksel = dpll_unipro_m2x2_div, | 966 | .clksel = dpll_unipro_m2x2_div, |
907 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_UNIPRO, | 967 | .clksel_reg = OMAP4430_CM_DIV_M2_DPLL_UNIPRO, |
908 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, | 968 | .clksel_mask = OMAP4430_DPLL_CLKOUT_DIV_MASK, |
@@ -914,7 +974,7 @@ static struct clk dpll_unipro_m2x2_ck = { | |||
914 | 974 | ||
915 | static struct clk usb_hs_clk_div_ck = { | 975 | static struct clk usb_hs_clk_div_ck = { |
916 | .name = "usb_hs_clk_div_ck", | 976 | .name = "usb_hs_clk_div_ck", |
917 | .parent = &dpll_abe_m3_ck, | 977 | .parent = &dpll_abe_m3x2_ck, |
918 | .ops = &clkops_null, | 978 | .ops = &clkops_null, |
919 | .recalc = &followparent_recalc, | 979 | .recalc = &followparent_recalc, |
920 | }; | 980 | }; |
@@ -977,7 +1037,7 @@ static struct clk dpll_usb_m2_ck = { | |||
977 | 1037 | ||
978 | static const struct clksel ducati_clk_mux_sel[] = { | 1038 | static const struct clksel ducati_clk_mux_sel[] = { |
979 | { .parent = &div_core_ck, .rates = div_1_0_rates }, | 1039 | { .parent = &div_core_ck, .rates = div_1_0_rates }, |
980 | { .parent = &dpll_per_m6_ck, .rates = div_1_1_rates }, | 1040 | { .parent = &dpll_per_m6x2_ck, .rates = div_1_1_rates }, |
981 | { .parent = NULL }, | 1041 | { .parent = NULL }, |
982 | }; | 1042 | }; |
983 | 1043 | ||
@@ -1050,13 +1110,13 @@ static const struct clksel_rate div2_2to4_rates[] = { | |||
1050 | }; | 1110 | }; |
1051 | 1111 | ||
1052 | static const struct clksel func_64m_fclk_div[] = { | 1112 | static const struct clksel func_64m_fclk_div[] = { |
1053 | { .parent = &dpll_per_m4_ck, .rates = div2_2to4_rates }, | 1113 | { .parent = &dpll_per_m4x2_ck, .rates = div2_2to4_rates }, |
1054 | { .parent = NULL }, | 1114 | { .parent = NULL }, |
1055 | }; | 1115 | }; |
1056 | 1116 | ||
1057 | static struct clk func_64m_fclk = { | 1117 | static struct clk func_64m_fclk = { |
1058 | .name = "func_64m_fclk", | 1118 | .name = "func_64m_fclk", |
1059 | .parent = &dpll_per_m4_ck, | 1119 | .parent = &dpll_per_m4x2_ck, |
1060 | .clksel = func_64m_fclk_div, | 1120 | .clksel = func_64m_fclk_div, |
1061 | .clksel_reg = OMAP4430_CM_SCALE_FCLK, | 1121 | .clksel_reg = OMAP4430_CM_SCALE_FCLK, |
1062 | .clksel_mask = OMAP4430_SCALE_FCLK_MASK, | 1122 | .clksel_mask = OMAP4430_SCALE_FCLK_MASK, |
@@ -1230,7 +1290,7 @@ static struct clk per_abe_24m_fclk = { | |||
1230 | 1290 | ||
1231 | static const struct clksel pmd_stm_clock_mux_sel[] = { | 1291 | static const struct clksel pmd_stm_clock_mux_sel[] = { |
1232 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, | 1292 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, |
1233 | { .parent = &dpll_core_m6_ck, .rates = div_1_1_rates }, | 1293 | { .parent = &dpll_core_m6x2_ck, .rates = div_1_1_rates }, |
1234 | { .parent = &tie_low_clock_ck, .rates = div_1_2_rates }, | 1294 | { .parent = &tie_low_clock_ck, .rates = div_1_2_rates }, |
1235 | { .parent = NULL }, | 1295 | { .parent = NULL }, |
1236 | }; | 1296 | }; |
@@ -1364,7 +1424,7 @@ static struct clk dsp_fck = { | |||
1364 | .enable_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL, | 1424 | .enable_reg = OMAP4430_CM_TESLA_TESLA_CLKCTRL, |
1365 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, | 1425 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, |
1366 | .clkdm_name = "tesla_clkdm", | 1426 | .clkdm_name = "tesla_clkdm", |
1367 | .parent = &dpll_iva_m4_ck, | 1427 | .parent = &dpll_iva_m4x2_ck, |
1368 | .recalc = &followparent_recalc, | 1428 | .recalc = &followparent_recalc, |
1369 | }; | 1429 | }; |
1370 | 1430 | ||
@@ -1394,7 +1454,7 @@ static struct clk dss_dss_clk = { | |||
1394 | .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, | 1454 | .enable_reg = OMAP4430_CM_DSS_DSS_CLKCTRL, |
1395 | .enable_bit = OMAP4430_OPTFCLKEN_DSSCLK_SHIFT, | 1455 | .enable_bit = OMAP4430_OPTFCLKEN_DSSCLK_SHIFT, |
1396 | .clkdm_name = "l3_dss_clkdm", | 1456 | .clkdm_name = "l3_dss_clkdm", |
1397 | .parent = &dpll_per_m5_ck, | 1457 | .parent = &dpll_per_m5x2_ck, |
1398 | .recalc = &followparent_recalc, | 1458 | .recalc = &followparent_recalc, |
1399 | }; | 1459 | }; |
1400 | 1460 | ||
@@ -1451,14 +1511,14 @@ static struct clk emif2_fck = { | |||
1451 | }; | 1511 | }; |
1452 | 1512 | ||
1453 | static const struct clksel fdif_fclk_div[] = { | 1513 | static const struct clksel fdif_fclk_div[] = { |
1454 | { .parent = &dpll_per_m4_ck, .rates = div3_1to4_rates }, | 1514 | { .parent = &dpll_per_m4x2_ck, .rates = div3_1to4_rates }, |
1455 | { .parent = NULL }, | 1515 | { .parent = NULL }, |
1456 | }; | 1516 | }; |
1457 | 1517 | ||
1458 | /* Merged fdif_fclk into fdif */ | 1518 | /* Merged fdif_fclk into fdif */ |
1459 | static struct clk fdif_fck = { | 1519 | static struct clk fdif_fck = { |
1460 | .name = "fdif_fck", | 1520 | .name = "fdif_fck", |
1461 | .parent = &dpll_per_m4_ck, | 1521 | .parent = &dpll_per_m4x2_ck, |
1462 | .clksel = fdif_fclk_div, | 1522 | .clksel = fdif_fclk_div, |
1463 | .clksel_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL, | 1523 | .clksel_reg = OMAP4430_CM_CAM_FDIF_CLKCTRL, |
1464 | .clksel_mask = OMAP4430_CLKSEL_FCLK_MASK, | 1524 | .clksel_mask = OMAP4430_CLKSEL_FCLK_MASK, |
@@ -1612,15 +1672,15 @@ static struct clk gpmc_ick = { | |||
1612 | }; | 1672 | }; |
1613 | 1673 | ||
1614 | static const struct clksel sgx_clk_mux_sel[] = { | 1674 | static const struct clksel sgx_clk_mux_sel[] = { |
1615 | { .parent = &dpll_core_m7_ck, .rates = div_1_0_rates }, | 1675 | { .parent = &dpll_core_m7x2_ck, .rates = div_1_0_rates }, |
1616 | { .parent = &dpll_per_m7_ck, .rates = div_1_1_rates }, | 1676 | { .parent = &dpll_per_m7x2_ck, .rates = div_1_1_rates }, |
1617 | { .parent = NULL }, | 1677 | { .parent = NULL }, |
1618 | }; | 1678 | }; |
1619 | 1679 | ||
1620 | /* Merged sgx_clk_mux into gpu */ | 1680 | /* Merged sgx_clk_mux into gpu */ |
1621 | static struct clk gpu_fck = { | 1681 | static struct clk gpu_fck = { |
1622 | .name = "gpu_fck", | 1682 | .name = "gpu_fck", |
1623 | .parent = &dpll_core_m7_ck, | 1683 | .parent = &dpll_core_m7x2_ck, |
1624 | .clksel = sgx_clk_mux_sel, | 1684 | .clksel = sgx_clk_mux_sel, |
1625 | .init = &omap2_init_clksel_parent, | 1685 | .init = &omap2_init_clksel_parent, |
1626 | .clksel_reg = OMAP4430_CM_GFX_GFX_CLKCTRL, | 1686 | .clksel_reg = OMAP4430_CM_GFX_GFX_CLKCTRL, |
@@ -1739,7 +1799,7 @@ static struct clk iva_fck = { | |||
1739 | .enable_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL, | 1799 | .enable_reg = OMAP4430_CM_IVAHD_IVAHD_CLKCTRL, |
1740 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, | 1800 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, |
1741 | .clkdm_name = "ivahd_clkdm", | 1801 | .clkdm_name = "ivahd_clkdm", |
1742 | .parent = &dpll_iva_m5_ck, | 1802 | .parent = &dpll_iva_m5x2_ck, |
1743 | .recalc = &followparent_recalc, | 1803 | .recalc = &followparent_recalc, |
1744 | }; | 1804 | }; |
1745 | 1805 | ||
@@ -2103,7 +2163,7 @@ static struct clk sl2if_ick = { | |||
2103 | .enable_reg = OMAP4430_CM_IVAHD_SL2_CLKCTRL, | 2163 | .enable_reg = OMAP4430_CM_IVAHD_SL2_CLKCTRL, |
2104 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, | 2164 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL, |
2105 | .clkdm_name = "ivahd_clkdm", | 2165 | .clkdm_name = "ivahd_clkdm", |
2106 | .parent = &dpll_iva_m5_ck, | 2166 | .parent = &dpll_iva_m5x2_ck, |
2107 | .recalc = &followparent_recalc, | 2167 | .recalc = &followparent_recalc, |
2108 | }; | 2168 | }; |
2109 | 2169 | ||
@@ -2448,36 +2508,6 @@ static struct clk usb_host_fs_fck = { | |||
2448 | .recalc = &followparent_recalc, | 2508 | .recalc = &followparent_recalc, |
2449 | }; | 2509 | }; |
2450 | 2510 | ||
2451 | static struct clk usb_host_hs_utmi_p3_clk = { | ||
2452 | .name = "usb_host_hs_utmi_p3_clk", | ||
2453 | .ops = &clkops_omap2_dflt, | ||
2454 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2455 | .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT, | ||
2456 | .clkdm_name = "l3_init_clkdm", | ||
2457 | .parent = &init_60m_fclk, | ||
2458 | .recalc = &followparent_recalc, | ||
2459 | }; | ||
2460 | |||
2461 | static struct clk usb_host_hs_hsic60m_p1_clk = { | ||
2462 | .name = "usb_host_hs_hsic60m_p1_clk", | ||
2463 | .ops = &clkops_omap2_dflt, | ||
2464 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2465 | .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT, | ||
2466 | .clkdm_name = "l3_init_clkdm", | ||
2467 | .parent = &init_60m_fclk, | ||
2468 | .recalc = &followparent_recalc, | ||
2469 | }; | ||
2470 | |||
2471 | static struct clk usb_host_hs_hsic60m_p2_clk = { | ||
2472 | .name = "usb_host_hs_hsic60m_p2_clk", | ||
2473 | .ops = &clkops_omap2_dflt, | ||
2474 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2475 | .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT, | ||
2476 | .clkdm_name = "l3_init_clkdm", | ||
2477 | .parent = &init_60m_fclk, | ||
2478 | .recalc = &followparent_recalc, | ||
2479 | }; | ||
2480 | |||
2481 | static const struct clksel utmi_p1_gfclk_sel[] = { | 2511 | static const struct clksel utmi_p1_gfclk_sel[] = { |
2482 | { .parent = &init_60m_fclk, .rates = div_1_0_rates }, | 2512 | { .parent = &init_60m_fclk, .rates = div_1_0_rates }, |
2483 | { .parent = &xclk60mhsp1_ck, .rates = div_1_1_rates }, | 2513 | { .parent = &xclk60mhsp1_ck, .rates = div_1_1_rates }, |
@@ -2532,6 +2562,16 @@ static struct clk usb_host_hs_utmi_p2_clk = { | |||
2532 | .recalc = &followparent_recalc, | 2562 | .recalc = &followparent_recalc, |
2533 | }; | 2563 | }; |
2534 | 2564 | ||
2565 | static struct clk usb_host_hs_utmi_p3_clk = { | ||
2566 | .name = "usb_host_hs_utmi_p3_clk", | ||
2567 | .ops = &clkops_omap2_dflt, | ||
2568 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2569 | .enable_bit = OMAP4430_OPTFCLKEN_UTMI_P3_CLK_SHIFT, | ||
2570 | .clkdm_name = "l3_init_clkdm", | ||
2571 | .parent = &init_60m_fclk, | ||
2572 | .recalc = &followparent_recalc, | ||
2573 | }; | ||
2574 | |||
2535 | static struct clk usb_host_hs_hsic480m_p1_clk = { | 2575 | static struct clk usb_host_hs_hsic480m_p1_clk = { |
2536 | .name = "usb_host_hs_hsic480m_p1_clk", | 2576 | .name = "usb_host_hs_hsic480m_p1_clk", |
2537 | .ops = &clkops_omap2_dflt, | 2577 | .ops = &clkops_omap2_dflt, |
@@ -2542,6 +2582,26 @@ static struct clk usb_host_hs_hsic480m_p1_clk = { | |||
2542 | .recalc = &followparent_recalc, | 2582 | .recalc = &followparent_recalc, |
2543 | }; | 2583 | }; |
2544 | 2584 | ||
2585 | static struct clk usb_host_hs_hsic60m_p1_clk = { | ||
2586 | .name = "usb_host_hs_hsic60m_p1_clk", | ||
2587 | .ops = &clkops_omap2_dflt, | ||
2588 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2589 | .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P1_CLK_SHIFT, | ||
2590 | .clkdm_name = "l3_init_clkdm", | ||
2591 | .parent = &init_60m_fclk, | ||
2592 | .recalc = &followparent_recalc, | ||
2593 | }; | ||
2594 | |||
2595 | static struct clk usb_host_hs_hsic60m_p2_clk = { | ||
2596 | .name = "usb_host_hs_hsic60m_p2_clk", | ||
2597 | .ops = &clkops_omap2_dflt, | ||
2598 | .enable_reg = OMAP4430_CM_L3INIT_USB_HOST_CLKCTRL, | ||
2599 | .enable_bit = OMAP4430_OPTFCLKEN_HSIC60M_P2_CLK_SHIFT, | ||
2600 | .clkdm_name = "l3_init_clkdm", | ||
2601 | .parent = &init_60m_fclk, | ||
2602 | .recalc = &followparent_recalc, | ||
2603 | }; | ||
2604 | |||
2545 | static struct clk usb_host_hs_hsic480m_p2_clk = { | 2605 | static struct clk usb_host_hs_hsic480m_p2_clk = { |
2546 | .name = "usb_host_hs_hsic480m_p2_clk", | 2606 | .name = "usb_host_hs_hsic480m_p2_clk", |
2547 | .ops = &clkops_omap2_dflt, | 2607 | .ops = &clkops_omap2_dflt, |
@@ -2666,13 +2726,13 @@ static const struct clksel_rate div2_14to18_rates[] = { | |||
2666 | }; | 2726 | }; |
2667 | 2727 | ||
2668 | static const struct clksel usim_fclk_div[] = { | 2728 | static const struct clksel usim_fclk_div[] = { |
2669 | { .parent = &dpll_per_m4_ck, .rates = div2_14to18_rates }, | 2729 | { .parent = &dpll_per_m4x2_ck, .rates = div2_14to18_rates }, |
2670 | { .parent = NULL }, | 2730 | { .parent = NULL }, |
2671 | }; | 2731 | }; |
2672 | 2732 | ||
2673 | static struct clk usim_ck = { | 2733 | static struct clk usim_ck = { |
2674 | .name = "usim_ck", | 2734 | .name = "usim_ck", |
2675 | .parent = &dpll_per_m4_ck, | 2735 | .parent = &dpll_per_m4x2_ck, |
2676 | .clksel = usim_fclk_div, | 2736 | .clksel = usim_fclk_div, |
2677 | .clksel_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL, | 2737 | .clksel_reg = OMAP4430_CM_WKUP_USIM_CLKCTRL, |
2678 | .clksel_mask = OMAP4430_CLKSEL_DIV_MASK, | 2738 | .clksel_mask = OMAP4430_CLKSEL_DIV_MASK, |
@@ -2784,43 +2844,48 @@ static struct omap_clk omap44xx_clks[] = { | |||
2784 | CLK(NULL, "abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck, CK_443X), | 2844 | CLK(NULL, "abe_dpll_bypass_clk_mux_ck", &abe_dpll_bypass_clk_mux_ck, CK_443X), |
2785 | CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X), | 2845 | CLK(NULL, "abe_dpll_refclk_mux_ck", &abe_dpll_refclk_mux_ck, CK_443X), |
2786 | CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X), | 2846 | CLK(NULL, "dpll_abe_ck", &dpll_abe_ck, CK_443X), |
2847 | CLK(NULL, "dpll_abe_x2_ck", &dpll_abe_x2_ck, CK_443X), | ||
2787 | CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X), | 2848 | CLK(NULL, "dpll_abe_m2x2_ck", &dpll_abe_m2x2_ck, CK_443X), |
2788 | CLK(NULL, "abe_24m_fclk", &abe_24m_fclk, CK_443X), | 2849 | CLK(NULL, "abe_24m_fclk", &abe_24m_fclk, CK_443X), |
2789 | CLK(NULL, "abe_clk", &abe_clk, CK_443X), | 2850 | CLK(NULL, "abe_clk", &abe_clk, CK_443X), |
2790 | CLK(NULL, "aess_fclk", &aess_fclk, CK_443X), | 2851 | CLK(NULL, "aess_fclk", &aess_fclk, CK_443X), |
2791 | CLK(NULL, "dpll_abe_m3_ck", &dpll_abe_m3_ck, CK_443X), | 2852 | CLK(NULL, "dpll_abe_m3x2_ck", &dpll_abe_m3x2_ck, CK_443X), |
2792 | CLK(NULL, "core_hsd_byp_clk_mux_ck", &core_hsd_byp_clk_mux_ck, CK_443X), | 2853 | CLK(NULL, "core_hsd_byp_clk_mux_ck", &core_hsd_byp_clk_mux_ck, CK_443X), |
2793 | CLK(NULL, "dpll_core_ck", &dpll_core_ck, CK_443X), | 2854 | CLK(NULL, "dpll_core_ck", &dpll_core_ck, CK_443X), |
2794 | CLK(NULL, "dpll_core_m6_ck", &dpll_core_m6_ck, CK_443X), | 2855 | CLK(NULL, "dpll_core_x2_ck", &dpll_core_x2_ck, CK_443X), |
2856 | CLK(NULL, "dpll_core_m6x2_ck", &dpll_core_m6x2_ck, CK_443X), | ||
2795 | CLK(NULL, "dbgclk_mux_ck", &dbgclk_mux_ck, CK_443X), | 2857 | CLK(NULL, "dbgclk_mux_ck", &dbgclk_mux_ck, CK_443X), |
2796 | CLK(NULL, "dpll_core_m2_ck", &dpll_core_m2_ck, CK_443X), | 2858 | CLK(NULL, "dpll_core_m2_ck", &dpll_core_m2_ck, CK_443X), |
2797 | CLK(NULL, "ddrphy_ck", &ddrphy_ck, CK_443X), | 2859 | CLK(NULL, "ddrphy_ck", &ddrphy_ck, CK_443X), |
2798 | CLK(NULL, "dpll_core_m5_ck", &dpll_core_m5_ck, CK_443X), | 2860 | CLK(NULL, "dpll_core_m5x2_ck", &dpll_core_m5x2_ck, CK_443X), |
2799 | CLK(NULL, "div_core_ck", &div_core_ck, CK_443X), | 2861 | CLK(NULL, "div_core_ck", &div_core_ck, CK_443X), |
2800 | CLK(NULL, "div_iva_hs_clk", &div_iva_hs_clk, CK_443X), | 2862 | CLK(NULL, "div_iva_hs_clk", &div_iva_hs_clk, CK_443X), |
2801 | CLK(NULL, "div_mpu_hs_clk", &div_mpu_hs_clk, CK_443X), | 2863 | CLK(NULL, "div_mpu_hs_clk", &div_mpu_hs_clk, CK_443X), |
2802 | CLK(NULL, "dpll_core_m4_ck", &dpll_core_m4_ck, CK_443X), | 2864 | CLK(NULL, "dpll_core_m4x2_ck", &dpll_core_m4x2_ck, CK_443X), |
2803 | CLK(NULL, "dll_clk_div_ck", &dll_clk_div_ck, CK_443X), | 2865 | CLK(NULL, "dll_clk_div_ck", &dll_clk_div_ck, CK_443X), |
2804 | CLK(NULL, "dpll_abe_m2_ck", &dpll_abe_m2_ck, CK_443X), | 2866 | CLK(NULL, "dpll_abe_m2_ck", &dpll_abe_m2_ck, CK_443X), |
2805 | CLK(NULL, "dpll_core_m3_ck", &dpll_core_m3_ck, CK_443X), | 2867 | CLK(NULL, "dpll_core_m3x2_ck", &dpll_core_m3x2_ck, CK_443X), |
2806 | CLK(NULL, "dpll_core_m7_ck", &dpll_core_m7_ck, CK_443X), | 2868 | CLK(NULL, "dpll_core_m7x2_ck", &dpll_core_m7x2_ck, CK_443X), |
2807 | CLK(NULL, "iva_hsd_byp_clk_mux_ck", &iva_hsd_byp_clk_mux_ck, CK_443X), | 2869 | CLK(NULL, "iva_hsd_byp_clk_mux_ck", &iva_hsd_byp_clk_mux_ck, CK_443X), |
2808 | CLK(NULL, "dpll_iva_ck", &dpll_iva_ck, CK_443X), | 2870 | CLK(NULL, "dpll_iva_ck", &dpll_iva_ck, CK_443X), |
2809 | CLK(NULL, "dpll_iva_m4_ck", &dpll_iva_m4_ck, CK_443X), | 2871 | CLK(NULL, "dpll_iva_x2_ck", &dpll_iva_x2_ck, CK_443X), |
2810 | CLK(NULL, "dpll_iva_m5_ck", &dpll_iva_m5_ck, CK_443X), | 2872 | CLK(NULL, "dpll_iva_m4x2_ck", &dpll_iva_m4x2_ck, CK_443X), |
2873 | CLK(NULL, "dpll_iva_m5x2_ck", &dpll_iva_m5x2_ck, CK_443X), | ||
2811 | CLK(NULL, "dpll_mpu_ck", &dpll_mpu_ck, CK_443X), | 2874 | CLK(NULL, "dpll_mpu_ck", &dpll_mpu_ck, CK_443X), |
2812 | CLK(NULL, "dpll_mpu_m2_ck", &dpll_mpu_m2_ck, CK_443X), | 2875 | CLK(NULL, "dpll_mpu_m2_ck", &dpll_mpu_m2_ck, CK_443X), |
2813 | CLK(NULL, "per_hs_clk_div_ck", &per_hs_clk_div_ck, CK_443X), | 2876 | CLK(NULL, "per_hs_clk_div_ck", &per_hs_clk_div_ck, CK_443X), |
2814 | CLK(NULL, "per_hsd_byp_clk_mux_ck", &per_hsd_byp_clk_mux_ck, CK_443X), | 2877 | CLK(NULL, "per_hsd_byp_clk_mux_ck", &per_hsd_byp_clk_mux_ck, CK_443X), |
2815 | CLK(NULL, "dpll_per_ck", &dpll_per_ck, CK_443X), | 2878 | CLK(NULL, "dpll_per_ck", &dpll_per_ck, CK_443X), |
2816 | CLK(NULL, "dpll_per_m2_ck", &dpll_per_m2_ck, CK_443X), | 2879 | CLK(NULL, "dpll_per_m2_ck", &dpll_per_m2_ck, CK_443X), |
2880 | CLK(NULL, "dpll_per_x2_ck", &dpll_per_x2_ck, CK_443X), | ||
2817 | CLK(NULL, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, CK_443X), | 2881 | CLK(NULL, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, CK_443X), |
2818 | CLK(NULL, "dpll_per_m3_ck", &dpll_per_m3_ck, CK_443X), | 2882 | CLK(NULL, "dpll_per_m3x2_ck", &dpll_per_m3x2_ck, CK_443X), |
2819 | CLK(NULL, "dpll_per_m4_ck", &dpll_per_m4_ck, CK_443X), | 2883 | CLK(NULL, "dpll_per_m4x2_ck", &dpll_per_m4x2_ck, CK_443X), |
2820 | CLK(NULL, "dpll_per_m5_ck", &dpll_per_m5_ck, CK_443X), | 2884 | CLK(NULL, "dpll_per_m5x2_ck", &dpll_per_m5x2_ck, CK_443X), |
2821 | CLK(NULL, "dpll_per_m6_ck", &dpll_per_m6_ck, CK_443X), | 2885 | CLK(NULL, "dpll_per_m6x2_ck", &dpll_per_m6x2_ck, CK_443X), |
2822 | CLK(NULL, "dpll_per_m7_ck", &dpll_per_m7_ck, CK_443X), | 2886 | CLK(NULL, "dpll_per_m7x2_ck", &dpll_per_m7x2_ck, CK_443X), |
2823 | CLK(NULL, "dpll_unipro_ck", &dpll_unipro_ck, CK_443X), | 2887 | CLK(NULL, "dpll_unipro_ck", &dpll_unipro_ck, CK_443X), |
2888 | CLK(NULL, "dpll_unipro_x2_ck", &dpll_unipro_x2_ck, CK_443X), | ||
2824 | CLK(NULL, "dpll_unipro_m2x2_ck", &dpll_unipro_m2x2_ck, CK_443X), | 2889 | CLK(NULL, "dpll_unipro_m2x2_ck", &dpll_unipro_m2x2_ck, CK_443X), |
2825 | CLK(NULL, "usb_hs_clk_div_ck", &usb_hs_clk_div_ck, CK_443X), | 2890 | CLK(NULL, "usb_hs_clk_div_ck", &usb_hs_clk_div_ck, CK_443X), |
2826 | CLK(NULL, "dpll_usb_ck", &dpll_usb_ck, CK_443X), | 2891 | CLK(NULL, "dpll_usb_ck", &dpll_usb_ck, CK_443X), |
@@ -2947,14 +3012,14 @@ static struct omap_clk omap44xx_clks[] = { | |||
2947 | CLK(NULL, "uart3_fck", &uart3_fck, CK_443X), | 3012 | CLK(NULL, "uart3_fck", &uart3_fck, CK_443X), |
2948 | CLK(NULL, "uart4_fck", &uart4_fck, CK_443X), | 3013 | CLK(NULL, "uart4_fck", &uart4_fck, CK_443X), |
2949 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), | 3014 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), |
2950 | CLK(NULL, "usb_host_hs_utmi_p3_clk", &usb_host_hs_utmi_p3_clk, CK_443X), | ||
2951 | CLK(NULL, "usb_host_hs_hsic60m_p1_clk", &usb_host_hs_hsic60m_p1_clk, CK_443X), | ||
2952 | CLK(NULL, "usb_host_hs_hsic60m_p2_clk", &usb_host_hs_hsic60m_p2_clk, CK_443X), | ||
2953 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), | 3015 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), |
2954 | CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X), | 3016 | CLK(NULL, "usb_host_hs_utmi_p1_clk", &usb_host_hs_utmi_p1_clk, CK_443X), |
2955 | CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X), | 3017 | CLK(NULL, "utmi_p2_gfclk", &utmi_p2_gfclk, CK_443X), |
2956 | CLK(NULL, "usb_host_hs_utmi_p2_clk", &usb_host_hs_utmi_p2_clk, CK_443X), | 3018 | CLK(NULL, "usb_host_hs_utmi_p2_clk", &usb_host_hs_utmi_p2_clk, CK_443X), |
3019 | CLK(NULL, "usb_host_hs_utmi_p3_clk", &usb_host_hs_utmi_p3_clk, CK_443X), | ||
2957 | CLK(NULL, "usb_host_hs_hsic480m_p1_clk", &usb_host_hs_hsic480m_p1_clk, CK_443X), | 3020 | CLK(NULL, "usb_host_hs_hsic480m_p1_clk", &usb_host_hs_hsic480m_p1_clk, CK_443X), |
3021 | CLK(NULL, "usb_host_hs_hsic60m_p1_clk", &usb_host_hs_hsic60m_p1_clk, CK_443X), | ||
3022 | CLK(NULL, "usb_host_hs_hsic60m_p2_clk", &usb_host_hs_hsic60m_p2_clk, CK_443X), | ||
2958 | CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X), | 3023 | CLK(NULL, "usb_host_hs_hsic480m_p2_clk", &usb_host_hs_hsic480m_p2_clk, CK_443X), |
2959 | CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X), | 3024 | CLK(NULL, "usb_host_hs_func48mclk", &usb_host_hs_func48mclk, CK_443X), |
2960 | CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X), | 3025 | CLK(NULL, "usb_host_hs_fck", &usb_host_hs_fck, CK_443X), |