aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2017-12-21 11:19:38 -0500
committerArnd Bergmann <arnd@arndb.de>2017-12-21 11:19:38 -0500
commit24ff73a0af2c41fa32fd5d0836ab52e7cc93e9d5 (patch)
treed0af0cd2896b7562bcdbde188f438f0d84878aba
parent8d7ac420c161a63574e1709288a035148d3b377e (diff)
parent80a06c0d8357d1e75a8fbc10813fcdada4d897fb (diff)
Merge tag 'omap-for-v4.16/dt-clk-signed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/dt
Pull "Clock related dts changes for omaps for v4.16 merge window" from Tony Lindgren: This branch contains a series of dts changes from Tero Kristo to start using clkctrl clocks. Note that this branch is based on a merge of omap-for-v4.16/soc-signed and an immutable commit from Tero Kristo fe7020e64f04 ("clk: ti: omap4: clkctrl data fixes for opt-clocks") that is also in clk-next. * tag 'omap-for-v4.16/dt-clk-signed' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (57 commits) ARM: dts: dm816x: add clkctrl nodes ARM: dts: dm814x: add clkctrl nodes ARM: dts: am43xx: add clkctrl nodes ARM: dts: am33xx: add clkctrl nodes ARM: dts: dra7: add clkctrl nodes ARM: dts: omap5: add clkctrl nodes ARM: dts: omap4: add clkctrl nodes ARM: dts: dm816x: add bus functionality to base PRCM node ARM: dts: am43xx: add bus functionality to base PRCM node ARM: dts: am33xx: add bus functionality to base PRCM node ARM: dts: dra7: add bus functionality to base PRCM nodes ARM: dts: omap4: add bus functionality to base PRCM nodes ARM: dts: omap5: add bus functionality to base PRCM nodes ARM: dts: dm816x: add fck under timers1/2 ARM: dts: dm814x: add fck under timers1/2 ARM: dts: dra7: add fck under timer1 ARM: dts: am43xx: add fck under timers1/2 ARM: dts: am33xx: add fck under timers1/2 ARM: dts: omap4: add fck under timer1 ARM: dts: omap5: add fck under timer1 ...
-rw-r--r--arch/arm/boot/dts/am335x-bone-common.dtsi2
-rw-r--r--arch/arm/boot/dts/am335x-boneblue.dts2
-rw-r--r--arch/arm/boot/dts/am335x-evm.dts2
-rw-r--r--arch/arm/boot/dts/am335x-evmsk.dts2
-rw-r--r--arch/arm/boot/dts/am33xx-clocks.dtsi205
-rw-r--r--arch/arm/boot/dts/am33xx.dtsi14
-rw-r--r--arch/arm/boot/dts/am4372.dtsi16
-rw-r--r--arch/arm/boot/dts/am43x-epos-evm.dts2
-rw-r--r--arch/arm/boot/dts/am43xx-clocks.dtsi230
-rw-r--r--arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi2
-rw-r--r--arch/arm/boot/dts/dm814x-clocks.dtsi30
-rw-r--r--arch/arm/boot/dts/dm814x.dtsi4
-rw-r--r--arch/arm/boot/dts/dm816x-clocks.dtsi30
-rw-r--r--arch/arm/boot/dts/dm816x.dtsi9
-rw-r--r--arch/arm/boot/dts/dra7-evm-common.dtsi4
-rw-r--r--arch/arm/boot/dts/dra7.dtsi84
-rw-r--r--arch/arm/boot/dts/dra72-evm-common.dtsi4
-rw-r--r--arch/arm/boot/dts/dra72x.dtsi4
-rw-r--r--arch/arm/boot/dts/dra74x.dtsi6
-rw-r--r--arch/arm/boot/dts/dra7xx-clocks.dtsi909
-rw-r--r--arch/arm/boot/dts/omap4.dtsi37
-rw-r--r--arch/arm/boot/dts/omap44xx-clocks.dtsi895
-rw-r--r--arch/arm/boot/dts/omap5.dtsi46
-rw-r--r--arch/arm/boot/dts/omap54xx-clocks.dtsi623
-rw-r--r--arch/arm/mach-omap2/clockdomain.c8
-rw-r--r--arch/arm/mach-omap2/clockdomain.h2
-rw-r--r--arch/arm/mach-omap2/cm.h7
-rw-r--r--arch/arm/mach-omap2/cm2xxx.c2
-rw-r--r--arch/arm/mach-omap2/cm33xx.c8
-rw-r--r--arch/arm/mach-omap2/cm3xxx.c2
-rw-r--r--arch/arm/mach-omap2/cm_common.c16
-rw-r--r--arch/arm/mach-omap2/cminst44xx.c12
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c73
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_81xx_data.c2
-rw-r--r--drivers/clk/ti/apll.c3
-rw-r--r--drivers/clk/ti/clk-33xx.c279
-rw-r--r--drivers/clk/ti/clk-3xxx.c263
-rw-r--r--drivers/clk/ti/clk-43xx.c295
-rw-r--r--drivers/clk/ti/clk-44xx.c200
-rw-r--r--drivers/clk/ti/clk-54xx.c697
-rw-r--r--drivers/clk/ti/clk-7xx.c1076
-rw-r--r--drivers/clk/ti/clk-814x.c50
-rw-r--r--drivers/clk/ti/clk-816x.c62
-rw-r--r--drivers/clk/ti/clk.c70
-rw-r--r--drivers/clk/ti/clkctrl.c91
-rw-r--r--drivers/clk/ti/clock.h13
-rw-r--r--drivers/clk/ti/composite.c3
-rw-r--r--drivers/clk/ti/dpll.c3
-rw-r--r--include/dt-bindings/clock/am3.h108
-rw-r--r--include/dt-bindings/clock/am4.h113
-rw-r--r--include/dt-bindings/clock/dm814.h45
-rw-r--r--include/dt-bindings/clock/dm816.h53
-rw-r--r--include/dt-bindings/clock/dra7.h172
-rw-r--r--include/dt-bindings/clock/omap5.h118
54 files changed, 3821 insertions, 3187 deletions
diff --git a/arch/arm/boot/dts/am335x-bone-common.dtsi b/arch/arm/boot/dts/am335x-bone-common.dtsi
index 48a15fc641f2..e67b4d65c8d0 100644
--- a/arch/arm/boot/dts/am335x-bone-common.dtsi
+++ b/arch/arm/boot/dts/am335x-bone-common.dtsi
@@ -409,6 +409,6 @@
409}; 409};
410 410
411&rtc { 411&rtc {
412 clocks = <&clk_32768_ck>, <&clkdiv32k_ick>; 412 clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
413 clock-names = "ext-clk", "int-clk"; 413 clock-names = "ext-clk", "int-clk";
414}; 414};
diff --git a/arch/arm/boot/dts/am335x-boneblue.dts b/arch/arm/boot/dts/am335x-boneblue.dts
index cdc1b2be792f..d5be9fc4f416 100644
--- a/arch/arm/boot/dts/am335x-boneblue.dts
+++ b/arch/arm/boot/dts/am335x-boneblue.dts
@@ -446,7 +446,7 @@
446 446
447&rtc { 447&rtc {
448 system-power-controller; 448 system-power-controller;
449 clocks = <&clk_32768_ck>, <&clkdiv32k_ick>; 449 clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
450 clock-names = "ext-clk", "int-clk"; 450 clock-names = "ext-clk", "int-clk";
451}; 451};
452 452
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index ddd897556e03..fee6b3ee1741 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -790,6 +790,6 @@
790}; 790};
791 791
792&rtc { 792&rtc {
793 clocks = <&clk_32768_ck>, <&clkdiv32k_ick>; 793 clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
794 clock-names = "ext-clk", "int-clk"; 794 clock-names = "ext-clk", "int-clk";
795}; 795};
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
index 9ba4b18c0cb2..fa608cd5dc14 100644
--- a/arch/arm/boot/dts/am335x-evmsk.dts
+++ b/arch/arm/boot/dts/am335x-evmsk.dts
@@ -722,6 +722,6 @@
722}; 722};
723 723
724&rtc { 724&rtc {
725 clocks = <&clk_32768_ck>, <&clkdiv32k_ick>; 725 clocks = <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
726 clock-names = "ext-clk", "int-clk"; 726 clock-names = "ext-clk", "int-clk";
727}; 727};
diff --git a/arch/arm/boot/dts/am33xx-clocks.dtsi b/arch/arm/boot/dts/am33xx-clocks.dtsi
index 8d8319590cde..95d5c9d136c5 100644
--- a/arch/arm/boot/dts/am33xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am33xx-clocks.dtsi
@@ -292,14 +292,6 @@
292 clock-div = <4>; 292 clock-div = <4>;
293 }; 293 };
294 294
295 cefuse_fck: cefuse_fck@a20 {
296 #clock-cells = <0>;
297 compatible = "ti,gate-clock";
298 clocks = <&sys_clkin_ck>;
299 ti,bit-shift = <1>;
300 reg = <0x0a20>;
301 };
302
303 clk_24mhz: clk_24mhz { 295 clk_24mhz: clk_24mhz {
304 #clock-cells = <0>; 296 #clock-cells = <0>;
305 compatible = "fixed-factor-clock"; 297 compatible = "fixed-factor-clock";
@@ -316,14 +308,6 @@
316 clock-div = <732>; 308 clock-div = <732>;
317 }; 309 };
318 310
319 clkdiv32k_ick: clkdiv32k_ick@14c {
320 #clock-cells = <0>;
321 compatible = "ti,gate-clock";
322 clocks = <&clkdiv32k_ck>;
323 ti,bit-shift = <1>;
324 reg = <0x014c>;
325 };
326
327 l3_gclk: l3_gclk { 311 l3_gclk: l3_gclk {
328 #clock-cells = <0>; 312 #clock-cells = <0>;
329 compatible = "fixed-factor-clock"; 313 compatible = "fixed-factor-clock";
@@ -350,49 +334,49 @@
350 timer1_fck: timer1_fck@528 { 334 timer1_fck: timer1_fck@528 {
351 #clock-cells = <0>; 335 #clock-cells = <0>;
352 compatible = "ti,mux-clock"; 336 compatible = "ti,mux-clock";
353 clocks = <&sys_clkin_ck>, <&clkdiv32k_ick>, <&tclkin_ck>, <&clk_rc32k_ck>, <&clk_32768_ck>; 337 clocks = <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>, <&tclkin_ck>, <&clk_rc32k_ck>, <&clk_32768_ck>;
354 reg = <0x0528>; 338 reg = <0x0528>;
355 }; 339 };
356 340
357 timer2_fck: timer2_fck@508 { 341 timer2_fck: timer2_fck@508 {
358 #clock-cells = <0>; 342 #clock-cells = <0>;
359 compatible = "ti,mux-clock"; 343 compatible = "ti,mux-clock";
360 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 344 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
361 reg = <0x0508>; 345 reg = <0x0508>;
362 }; 346 };
363 347
364 timer3_fck: timer3_fck@50c { 348 timer3_fck: timer3_fck@50c {
365 #clock-cells = <0>; 349 #clock-cells = <0>;
366 compatible = "ti,mux-clock"; 350 compatible = "ti,mux-clock";
367 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 351 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
368 reg = <0x050c>; 352 reg = <0x050c>;
369 }; 353 };
370 354
371 timer4_fck: timer4_fck@510 { 355 timer4_fck: timer4_fck@510 {
372 #clock-cells = <0>; 356 #clock-cells = <0>;
373 compatible = "ti,mux-clock"; 357 compatible = "ti,mux-clock";
374 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 358 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
375 reg = <0x0510>; 359 reg = <0x0510>;
376 }; 360 };
377 361
378 timer5_fck: timer5_fck@518 { 362 timer5_fck: timer5_fck@518 {
379 #clock-cells = <0>; 363 #clock-cells = <0>;
380 compatible = "ti,mux-clock"; 364 compatible = "ti,mux-clock";
381 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 365 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
382 reg = <0x0518>; 366 reg = <0x0518>;
383 }; 367 };
384 368
385 timer6_fck: timer6_fck@51c { 369 timer6_fck: timer6_fck@51c {
386 #clock-cells = <0>; 370 #clock-cells = <0>;
387 compatible = "ti,mux-clock"; 371 compatible = "ti,mux-clock";
388 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 372 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
389 reg = <0x051c>; 373 reg = <0x051c>;
390 }; 374 };
391 375
392 timer7_fck: timer7_fck@504 { 376 timer7_fck: timer7_fck@504 {
393 #clock-cells = <0>; 377 #clock-cells = <0>;
394 compatible = "ti,mux-clock"; 378 compatible = "ti,mux-clock";
395 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&clkdiv32k_ick>; 379 clocks = <&tclkin_ck>, <&sys_clkin_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
396 reg = <0x0504>; 380 reg = <0x0504>;
397 }; 381 };
398 382
@@ -423,7 +407,7 @@
423 wdt1_fck: wdt1_fck@538 { 407 wdt1_fck: wdt1_fck@538 {
424 #clock-cells = <0>; 408 #clock-cells = <0>;
425 compatible = "ti,mux-clock"; 409 compatible = "ti,mux-clock";
426 clocks = <&clk_rc32k_ck>, <&clkdiv32k_ick>; 410 clocks = <&clk_rc32k_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
427 reg = <0x0538>; 411 reg = <0x0538>;
428 }; 412 };
429 413
@@ -493,42 +477,10 @@
493 gpio0_dbclk_mux_ck: gpio0_dbclk_mux_ck@53c { 477 gpio0_dbclk_mux_ck: gpio0_dbclk_mux_ck@53c {
494 #clock-cells = <0>; 478 #clock-cells = <0>;
495 compatible = "ti,mux-clock"; 479 compatible = "ti,mux-clock";
496 clocks = <&clk_rc32k_ck>, <&clk_32768_ck>, <&clkdiv32k_ick>; 480 clocks = <&clk_rc32k_ck>, <&clk_32768_ck>, <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
497 reg = <0x053c>; 481 reg = <0x053c>;
498 }; 482 };
499 483
500 gpio0_dbclk: gpio0_dbclk@408 {
501 #clock-cells = <0>;
502 compatible = "ti,gate-clock";
503 clocks = <&gpio0_dbclk_mux_ck>;
504 ti,bit-shift = <18>;
505 reg = <0x0408>;
506 };
507
508 gpio1_dbclk: gpio1_dbclk@ac {
509 #clock-cells = <0>;
510 compatible = "ti,gate-clock";
511 clocks = <&clkdiv32k_ick>;
512 ti,bit-shift = <18>;
513 reg = <0x00ac>;
514 };
515
516 gpio2_dbclk: gpio2_dbclk@b0 {
517 #clock-cells = <0>;
518 compatible = "ti,gate-clock";
519 clocks = <&clkdiv32k_ick>;
520 ti,bit-shift = <18>;
521 reg = <0x00b0>;
522 };
523
524 gpio3_dbclk: gpio3_dbclk@b4 {
525 #clock-cells = <0>;
526 compatible = "ti,gate-clock";
527 clocks = <&clkdiv32k_ick>;
528 ti,bit-shift = <18>;
529 reg = <0x00b4>;
530 };
531
532 lcd_gclk: lcd_gclk@534 { 484 lcd_gclk: lcd_gclk@534 {
533 #clock-cells = <0>; 485 #clock-cells = <0>;
534 compatible = "ti,mux-clock"; 486 compatible = "ti,mux-clock";
@@ -577,58 +529,6 @@
577 reg = <0x0700>; 529 reg = <0x0700>;
578 }; 530 };
579 531
580 dbg_sysclk_ck: dbg_sysclk_ck@414 {
581 #clock-cells = <0>;
582 compatible = "ti,gate-clock";
583 clocks = <&sys_clkin_ck>;
584 ti,bit-shift = <19>;
585 reg = <0x0414>;
586 };
587
588 dbg_clka_ck: dbg_clka_ck@414 {
589 #clock-cells = <0>;
590 compatible = "ti,gate-clock";
591 clocks = <&dpll_core_m4_ck>;
592 ti,bit-shift = <30>;
593 reg = <0x0414>;
594 };
595
596 stm_pmd_clock_mux_ck: stm_pmd_clock_mux_ck@414 {
597 #clock-cells = <0>;
598 compatible = "ti,mux-clock";
599 clocks = <&dbg_sysclk_ck>, <&dbg_clka_ck>;
600 ti,bit-shift = <22>;
601 reg = <0x0414>;
602 };
603
604 trace_pmd_clk_mux_ck: trace_pmd_clk_mux_ck@414 {
605 #clock-cells = <0>;
606 compatible = "ti,mux-clock";
607 clocks = <&dbg_sysclk_ck>, <&dbg_clka_ck>;
608 ti,bit-shift = <20>;
609 reg = <0x0414>;
610 };
611
612 stm_clk_div_ck: stm_clk_div_ck@414 {
613 #clock-cells = <0>;
614 compatible = "ti,divider-clock";
615 clocks = <&stm_pmd_clock_mux_ck>;
616 ti,bit-shift = <27>;
617 ti,max-div = <64>;
618 reg = <0x0414>;
619 ti,index-power-of-two;
620 };
621
622 trace_clk_div_ck: trace_clk_div_ck@414 {
623 #clock-cells = <0>;
624 compatible = "ti,divider-clock";
625 clocks = <&trace_pmd_clk_mux_ck>;
626 ti,bit-shift = <24>;
627 ti,max-div = <64>;
628 reg = <0x0414>;
629 ti,index-power-of-two;
630 };
631
632 clkout2_ck: clkout2_ck@700 { 532 clkout2_ck: clkout2_ck@700 {
633 #clock-cells = <0>; 533 #clock-cells = <0>;
634 compatible = "ti,gate-clock"; 534 compatible = "ti,gate-clock";
@@ -638,9 +538,88 @@
638 }; 538 };
639}; 539};
640 540
641&prcm_clockdomains { 541&prcm {
642 clk_24mhz_clkdm: clk_24mhz_clkdm { 542 l4_per_cm: l4_per_cm@0 {
643 compatible = "ti,clockdomain"; 543 compatible = "ti,omap4-cm";
644 clocks = <&clkdiv32k_ick>; 544 reg = <0x0 0x200>;
545 #address-cells = <1>;
546 #size-cells = <1>;
547 ranges = <0 0x0 0x200>;
548
549 l4_per_clkctrl: clk@14 {
550 compatible = "ti,clkctrl";
551 reg = <0x14 0x13c>;
552 #clock-cells = <2>;
553 };
554 };
555
556 l4_wkup_cm: l4_wkup_cm@400 {
557 compatible = "ti,omap4-cm";
558 reg = <0x400 0x100>;
559 #address-cells = <1>;
560 #size-cells = <1>;
561 ranges = <0 0x400 0x100>;
562
563 l4_wkup_clkctrl: clk@4 {
564 compatible = "ti,clkctrl";
565 reg = <0x4 0xd4>;
566 #clock-cells = <2>;
567 };
568 };
569
570 mpu_cm: mpu_cm@600 {
571 compatible = "ti,omap4-cm";
572 reg = <0x600 0x100>;
573 #address-cells = <1>;
574 #size-cells = <1>;
575 ranges = <0 0x600 0x100>;
576
577 mpu_clkctrl: clk@4 {
578 compatible = "ti,clkctrl";
579 reg = <0x4 0x4>;
580 #clock-cells = <2>;
581 };
582 };
583
584 l4_rtc_cm: l4_rtc_cm@800 {
585 compatible = "ti,omap4-cm";
586 reg = <0x800 0x100>;
587 #address-cells = <1>;
588 #size-cells = <1>;
589 ranges = <0 0x800 0x100>;
590
591 l4_rtc_clkctrl: clk@0 {
592 compatible = "ti,clkctrl";
593 reg = <0x0 0x4>;
594 #clock-cells = <2>;
595 };
596 };
597
598 gfx_l3_cm: gfx_l3_cm@900 {
599 compatible = "ti,omap4-cm";
600 reg = <0x900 0x100>;
601 #address-cells = <1>;
602 #size-cells = <1>;
603 ranges = <0 0x900 0x100>;
604
605 gfx_l3_clkctrl: clk@4 {
606 compatible = "ti,clkctrl";
607 reg = <0x4 0x4>;
608 #clock-cells = <2>;
609 };
610 };
611
612 l4_cefuse_cm: l4_cefuse_cm@a00 {
613 compatible = "ti,omap4-cm";
614 reg = <0xa00 0x100>;
615 #address-cells = <1>;
616 #size-cells = <1>;
617 ranges = <0 0xa00 0x100>;
618
619 l4_cefuse_clkctrl: clk@20 {
620 compatible = "ti,clkctrl";
621 reg = <0x20 0x4>;
622 #clock-cells = <2>;
623 };
645 }; 624 };
646}; 625};
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index d37f95025807..ca7400c20ed4 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -10,6 +10,7 @@
10 10
11#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/pinctrl/am33xx.h> 12#include <dt-bindings/pinctrl/am33xx.h>
13#include <dt-bindings/clock/am3.h>
13 14
14/ { 15/ {
15 compatible = "ti,am33xx"; 16 compatible = "ti,am33xx";
@@ -179,8 +180,11 @@
179 }; 180 };
180 181
181 prcm: prcm@200000 { 182 prcm: prcm@200000 {
182 compatible = "ti,am3-prcm"; 183 compatible = "ti,am3-prcm", "simple-bus";
183 reg = <0x200000 0x4000>; 184 reg = <0x200000 0x4000>;
185 #address-cells = <1>;
186 #size-cells = <1>;
187 ranges = <0 0x200000 0x4000>;
184 188
185 prcm_clocks: clocks { 189 prcm_clocks: clocks {
186 #address-cells = <1>; 190 #address-cells = <1>;
@@ -517,6 +521,8 @@
517 interrupts = <67>; 521 interrupts = <67>;
518 ti,hwmods = "timer1"; 522 ti,hwmods = "timer1";
519 ti,timer-alwon; 523 ti,timer-alwon;
524 clocks = <&timer1_fck>;
525 clock-names = "fck";
520 }; 526 };
521 527
522 timer2: timer@48040000 { 528 timer2: timer@48040000 {
@@ -524,6 +530,8 @@
524 reg = <0x48040000 0x400>; 530 reg = <0x48040000 0x400>;
525 interrupts = <68>; 531 interrupts = <68>;
526 ti,hwmods = "timer2"; 532 ti,hwmods = "timer2";
533 clocks = <&timer2_fck>;
534 clock-names = "fck";
527 }; 535 };
528 536
529 timer3: timer@48042000 { 537 timer3: timer@48042000 {
@@ -571,7 +579,7 @@
571 interrupts = <75 579 interrupts = <75
572 76>; 580 76>;
573 ti,hwmods = "rtc"; 581 ti,hwmods = "rtc";
574 clocks = <&clkdiv32k_ick>; 582 clocks = <&l4_per_clkctrl AM3_CLKDIV32K_CLKCTRL 0>;
575 clock-names = "int-clk"; 583 clock-names = "int-clk";
576 }; 584 };
577 585
@@ -1014,4 +1022,4 @@
1014 }; 1022 };
1015}; 1023};
1016 1024
1017/include/ "am33xx-clocks.dtsi" 1025#include "am33xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
index 4714a59fd86d..2f2984db1c26 100644
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -10,6 +10,7 @@
10 10
11#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/interrupt-controller/arm-gic.h> 12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/clock/am4.h>
13 14
14/ { 15/ {
15 compatible = "ti,am4372", "ti,am43"; 16 compatible = "ti,am4372", "ti,am43";
@@ -163,9 +164,12 @@
163 }; 164 };
164 165
165 prcm: prcm@1f0000 { 166 prcm: prcm@1f0000 {
166 compatible = "ti,am4-prcm"; 167 compatible = "ti,am4-prcm", "simple-bus";
167 reg = <0x1f0000 0x11000>; 168 reg = <0x1f0000 0x11000>;
168 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 169 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
170 #address-cells = <1>;
171 #size-cells = <1>;
172 ranges = <0 0x1f0000 0x11000>;
169 173
170 prcm_clocks: clocks { 174 prcm_clocks: clocks {
171 #address-cells = <1>; 175 #address-cells = <1>;
@@ -346,6 +350,8 @@
346 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; 350 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
347 ti,timer-alwon; 351 ti,timer-alwon;
348 ti,hwmods = "timer1"; 352 ti,hwmods = "timer1";
353 clocks = <&timer1_fck>;
354 clock-names = "fck";
349 }; 355 };
350 356
351 timer2: timer@48040000 { 357 timer2: timer@48040000 {
@@ -353,6 +359,8 @@
353 reg = <0x48040000 0x400>; 359 reg = <0x48040000 0x400>;
354 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>; 360 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
355 ti,hwmods = "timer2"; 361 ti,hwmods = "timer2";
362 clocks = <&timer2_fck>;
363 clock-names = "fck";
356 }; 364 };
357 365
358 timer3: timer@48042000 { 366 timer3: timer@48042000 {
@@ -993,7 +1001,7 @@
993 reg = <0x483a8000 0x8000>; 1001 reg = <0x483a8000 0x8000>;
994 syscon-phy-power = <&scm_conf 0x620>; 1002 syscon-phy-power = <&scm_conf 0x620>;
995 clocks = <&usb_phy0_always_on_clk32k>, 1003 clocks = <&usb_phy0_always_on_clk32k>,
996 <&usb_otg_ss0_refclk960m>; 1004 <&l4_per_clkctrl AM4_USB_OTG_SS0_CLKCTRL 8>;
997 clock-names = "wkupclk", "refclk"; 1005 clock-names = "wkupclk", "refclk";
998 #phy-cells = <0>; 1006 #phy-cells = <0>;
999 status = "disabled"; 1007 status = "disabled";
@@ -1012,7 +1020,7 @@
1012 reg = <0x483e8000 0x8000>; 1020 reg = <0x483e8000 0x8000>;
1013 syscon-phy-power = <&scm_conf 0x628>; 1021 syscon-phy-power = <&scm_conf 0x628>;
1014 clocks = <&usb_phy1_always_on_clk32k>, 1022 clocks = <&usb_phy1_always_on_clk32k>,
1015 <&usb_otg_ss1_refclk960m>; 1023 <&l4_per_clkctrl AM4_USB_OTG_SS1_CLKCTRL 8>;
1016 clock-names = "wkupclk", "refclk"; 1024 clock-names = "wkupclk", "refclk";
1017 #phy-cells = <0>; 1025 #phy-cells = <0>;
1018 status = "disabled"; 1026 status = "disabled";
@@ -1175,4 +1183,4 @@
1175 }; 1183 };
1176}; 1184};
1177 1185
1178/include/ "am43xx-clocks.dtsi" 1186#include "am43xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts
index a04d79ec212a..d3363fbe4240 100644
--- a/arch/arm/boot/dts/am43x-epos-evm.dts
+++ b/arch/arm/boot/dts/am43x-epos-evm.dts
@@ -985,7 +985,7 @@
985 rx-num-evt = <32>; 985 rx-num-evt = <32>;
986}; 986};
987 987
988&synctimer_32kclk { 988&mux_synctimer32k_ck {
989 assigned-clocks = <&mux_synctimer32k_ck>; 989 assigned-clocks = <&mux_synctimer32k_ck>;
990 assigned-clock-parents = <&clkdiv32k_ick>; 990 assigned-clock-parents = <&clkdiv32k_ick>;
991}; 991};
diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 430be5829f8f..a7037a4b4fd4 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -524,54 +524,6 @@
524 reg = <0x4240>; 524 reg = <0x4240>;
525 }; 525 };
526 526
527 gpio0_dbclk: gpio0_dbclk@2b68 {
528 #clock-cells = <0>;
529 compatible = "ti,gate-clock";
530 clocks = <&gpio0_dbclk_mux_ck>;
531 ti,bit-shift = <8>;
532 reg = <0x2b68>;
533 };
534
535 gpio1_dbclk: gpio1_dbclk@8c78 {
536 #clock-cells = <0>;
537 compatible = "ti,gate-clock";
538 clocks = <&clkdiv32k_ick>;
539 ti,bit-shift = <8>;
540 reg = <0x8c78>;
541 };
542
543 gpio2_dbclk: gpio2_dbclk@8c80 {
544 #clock-cells = <0>;
545 compatible = "ti,gate-clock";
546 clocks = <&clkdiv32k_ick>;
547 ti,bit-shift = <8>;
548 reg = <0x8c80>;
549 };
550
551 gpio3_dbclk: gpio3_dbclk@8c88 {
552 #clock-cells = <0>;
553 compatible = "ti,gate-clock";
554 clocks = <&clkdiv32k_ick>;
555 ti,bit-shift = <8>;
556 reg = <0x8c88>;
557 };
558
559 gpio4_dbclk: gpio4_dbclk@8c90 {
560 #clock-cells = <0>;
561 compatible = "ti,gate-clock";
562 clocks = <&clkdiv32k_ick>;
563 ti,bit-shift = <8>;
564 reg = <0x8c90>;
565 };
566
567 gpio5_dbclk: gpio5_dbclk@8c98 {
568 #clock-cells = <0>;
569 compatible = "ti,gate-clock";
570 clocks = <&clkdiv32k_ick>;
571 ti,bit-shift = <8>;
572 reg = <0x8c98>;
573 };
574
575 mmc_clk: mmc_clk { 527 mmc_clk: mmc_clk {
576 #clock-cells = <0>; 528 #clock-cells = <0>;
577 compatible = "fixed-factor-clock"; 529 compatible = "fixed-factor-clock";
@@ -629,14 +581,6 @@
629 reg = <0x4230>; 581 reg = <0x4230>;
630 }; 582 };
631 583
632 synctimer_32kclk: synctimer_32kclk@2a30 {
633 #clock-cells = <0>;
634 compatible = "ti,gate-clock";
635 clocks = <&mux_synctimer32k_ck>;
636 ti,bit-shift = <8>;
637 reg = <0x2a30>;
638 };
639
640 timer8_fck: timer8_fck@421c { 584 timer8_fck: timer8_fck@421c {
641 #clock-cells = <0>; 585 #clock-cells = <0>;
642 compatible = "ti,mux-clock"; 586 compatible = "ti,mux-clock";
@@ -763,110 +707,76 @@
763 ti,bit-shift = <8>; 707 ti,bit-shift = <8>;
764 reg = <0x2a48>; 708 reg = <0x2a48>;
765 }; 709 };
710};
766 711
767 usb_otg_ss0_refclk960m: usb_otg_ss0_refclk960m@8a60 { 712&prcm {
768 #clock-cells = <0>; 713 l4_wkup_cm: l4_wkup_cm@2800 {
769 compatible = "ti,gate-clock"; 714 compatible = "ti,omap4-cm";
770 clocks = <&dpll_per_clkdcoldo>; 715 reg = <0x2800 0x400>;
771 ti,bit-shift = <8>; 716 #address-cells = <1>;
772 reg = <0x8a60>; 717 #size-cells = <1>;
773 }; 718 ranges = <0 0x2800 0x400>;
774 719
775 usb_otg_ss1_refclk960m: usb_otg_ss1_refclk960m@8a68 { 720 l4_wkup_clkctrl: clk@20 {
776 #clock-cells = <0>; 721 compatible = "ti,clkctrl";
777 compatible = "ti,gate-clock"; 722 reg = <0x20 0x34c>;
778 clocks = <&dpll_per_clkdcoldo>; 723 #clock-cells = <2>;
779 ti,bit-shift = <8>; 724 };
780 reg = <0x8a68>; 725 };
781 }; 726
782 727 mpu_cm: mpu_cm@8300 {
783 clkout1_osc_div_ck: clkout1_osc_div_ck { 728 compatible = "ti,omap4-cm";
784 #clock-cells = <0>; 729 reg = <0x8300 0x100>;
785 compatible = "ti,divider-clock"; 730 #address-cells = <1>;
786 clocks = <&sys_clkin_ck>; 731 #size-cells = <1>;
787 ti,bit-shift = <20>; 732 ranges = <0 0x8300 0x100>;
788 ti,max-div = <4>; 733
789 reg = <0x4100>; 734 mpu_clkctrl: clk@20 {
790 }; 735 compatible = "ti,clkctrl";
791 736 reg = <0x20 0x4>;
792 clkout1_src2_mux_ck: clkout1_src2_mux_ck { 737 #clock-cells = <2>;
793 #clock-cells = <0>; 738 };
794 compatible = "ti,mux-clock"; 739 };
795 clocks = <&clk_rc32k_ck>, <&sysclk_div>, <&dpll_ddr_m2_ck>, 740
796 <&dpll_per_m2_ck>, <&dpll_disp_m2_ck>, 741 gfx_l3_cm: gfx_l3_cm@8400 {
797 <&dpll_mpu_m2_ck>; 742 compatible = "ti,omap4-cm";
798 reg = <0x4100>; 743 reg = <0x8400 0x100>;
799 }; 744 #address-cells = <1>;
800 745 #size-cells = <1>;
801 clkout1_src2_pre_div_ck: clkout1_src2_pre_div_ck { 746 ranges = <0 0x8400 0x100>;
802 #clock-cells = <0>; 747
803 compatible = "ti,divider-clock"; 748 gfx_l3_clkctrl: clk@20 {
804 clocks = <&clkout1_src2_mux_ck>; 749 compatible = "ti,clkctrl";
805 ti,bit-shift = <4>; 750 reg = <0x20 0x4>;
806 ti,max-div = <8>; 751 #clock-cells = <2>;
807 reg = <0x4100>; 752 };
808 }; 753 };
809 754
810 clkout1_src2_post_div_ck: clkout1_src2_post_div_ck { 755 l4_rtc_cm: l4_rtc_cm@8500 {
811 #clock-cells = <0>; 756 compatible = "ti,omap4-cm";
812 compatible = "ti,divider-clock"; 757 reg = <0x8500 0x100>;
813 clocks = <&clkout1_src2_pre_div_ck>; 758 #address-cells = <1>;
814 ti,bit-shift = <8>; 759 #size-cells = <1>;
815 ti,max-div = <32>; 760 ranges = <0 0x8500 0x100>;
816 ti,index-power-of-two; 761
817 reg = <0x4100>; 762 l4_rtc_clkctrl: clk@20 {
818 }; 763 compatible = "ti,clkctrl";
819 764 reg = <0x20 0x4>;
820 clkout1_mux_ck: clkout1_mux_ck { 765 #clock-cells = <2>;
821 #clock-cells = <0>; 766 };
822 compatible = "ti,mux-clock"; 767 };
823 clocks = <&clkout1_osc_div_ck>, <&clk_rc32k_ck>, 768
824 <&clkout1_src2_post_div_ck>, <&dpll_extdev_m2_ck>; 769 l4_per_cm: l4_per_cm@8800 {
825 ti,bit-shift = <16>; 770 compatible = "ti,omap4-cm";
826 reg = <0x4100>; 771 reg = <0x8800 0xc00>;
827 }; 772 #address-cells = <1>;
828 773 #size-cells = <1>;
829 clkout1_ck: clkout1_ck { 774 ranges = <0 0x8800 0xc00>;
830 #clock-cells = <0>; 775
831 compatible = "ti,gate-clock"; 776 l4_per_clkctrl: clk@20 {
832 clocks = <&clkout1_mux_ck>; 777 compatible = "ti,clkctrl";
833 ti,bit-shift = <23>; 778 reg = <0x20 0xb04>;
834 reg = <0x4100>; 779 #clock-cells = <2>;
835 }; 780 };
836
837 clkout2_src_mux_ck: clkout2_src_mux_ck {
838 #clock-cells = <0>;
839 compatible = "ti,mux-clock";
840 clocks = <&clk_rc32k_ck>, <&sysclk_div>, <&dpll_ddr_m2_ck>,
841 <&dpll_per_m2_ck>, <&dpll_disp_m2_ck>,
842 <&dpll_mpu_m2_ck>, <&dpll_extdev_ck>;
843 reg = <0x4108>;
844 };
845
846 clkout2_pre_div_ck: clkout2_pre_div_ck {
847 #clock-cells = <0>;
848 compatible = "ti,divider-clock";
849 clocks = <&clkout2_src_mux_ck>;
850 ti,bit-shift = <4>;
851 ti,max-div = <8>;
852 reg = <0x4108>;
853 };
854
855 clkout2_post_div_ck: clkout2_post_div_ck {
856 #clock-cells = <0>;
857 compatible = "ti,divider-clock";
858 clocks = <&clkout2_pre_div_ck>;
859 ti,bit-shift = <8>;
860 ti,max-div = <32>;
861 ti,index-power-of-two;
862 reg = <0x4108>;
863 };
864
865 clkout2_ck: clkout2_ck {
866 #clock-cells = <0>;
867 compatible = "ti,gate-clock";
868 clocks = <&clkout2_post_div_ck>;
869 ti,bit-shift = <16>;
870 reg = <0x4108>;
871 }; 781 };
872}; 782};
diff --git a/arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi b/arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
index 49aeecd312b4..74d1d0dab336 100644
--- a/arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
+++ b/arch/arm/boot/dts/am57xx-beagle-x15-common.dtsi
@@ -554,7 +554,7 @@
554 554
555&mcasp3 { 555&mcasp3 {
556 #sound-dai-cells = <0>; 556 #sound-dai-cells = <0>;
557 assigned-clocks = <&mcasp3_ahclkx_mux>; 557 assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
558 assigned-clock-parents = <&sys_clkin2>; 558 assigned-clock-parents = <&sys_clkin2>;
559 status = "okay"; 559 status = "okay";
560 560
diff --git a/arch/arm/boot/dts/dm814x-clocks.dtsi b/arch/arm/boot/dts/dm814x-clocks.dtsi
index c4671af0a28d..f80525a290bb 100644
--- a/arch/arm/boot/dts/dm814x-clocks.dtsi
+++ b/arch/arm/boot/dts/dm814x-clocks.dtsi
@@ -337,3 +337,33 @@
337 clock-frequency = <20000000>; 337 clock-frequency = <20000000>;
338 }; 338 };
339}; 339};
340
341&prcm {
342 default_cm: default_cm@500 {
343 compatible = "ti,omap4-cm";
344 reg = <0x500 0x100>;
345 #address-cells = <1>;
346 #size-cells = <1>;
347 ranges = <0 0x500 0x100>;
348
349 default_clkctrl: clk@0 {
350 compatible = "ti,clkctrl";
351 reg = <0x0 0x5c>;
352 #clock-cells = <2>;
353 };
354 };
355
356 alwon_cm: alwon_cm@1400 {
357 compatible = "ti,omap4-cm";
358 reg = <0x1400 0x300>;
359 #address-cells = <1>;
360 #size-cells = <1>;
361 ranges = <0 0x1400 0x300>;
362
363 alwon_clkctrl: clk@0 {
364 compatible = "ti,clkctrl";
365 reg = <0x0 0x228>;
366 #clock-cells = <2>;
367 };
368 };
369};
diff --git a/arch/arm/boot/dts/dm814x.dtsi b/arch/arm/boot/dts/dm814x.dtsi
index 681f5487406e..601c57afd4fe 100644
--- a/arch/arm/boot/dts/dm814x.dtsi
+++ b/arch/arm/boot/dts/dm814x.dtsi
@@ -250,6 +250,8 @@
250 interrupts = <67>; 250 interrupts = <67>;
251 ti,hwmods = "timer1"; 251 ti,hwmods = "timer1";
252 ti,timer-alwon; 252 ti,timer-alwon;
253 clocks = <&timer1_fck>;
254 clock-names = "fck";
253 }; 255 };
254 256
255 uart1: uart@20000 { 257 uart1: uart@20000 {
@@ -287,6 +289,8 @@
287 reg = <0x40000 0x2000>; 289 reg = <0x40000 0x2000>;
288 interrupts = <68>; 290 interrupts = <68>;
289 ti,hwmods = "timer2"; 291 ti,hwmods = "timer2";
292 clocks = <&timer2_fck>;
293 clock-names = "fck";
290 }; 294 };
291 295
292 timer3: timer@42000 { 296 timer3: timer@42000 {
diff --git a/arch/arm/boot/dts/dm816x-clocks.dtsi b/arch/arm/boot/dts/dm816x-clocks.dtsi
index 51865eb84a80..1efd4e23e50d 100644
--- a/arch/arm/boot/dts/dm816x-clocks.dtsi
+++ b/arch/arm/boot/dts/dm816x-clocks.dtsi
@@ -248,3 +248,33 @@
248 reg = <0x03a8>; 248 reg = <0x03a8>;
249 }; 249 };
250}; 250};
251
252&prcm {
253 default_cm: default_cm@500 {
254 compatible = "ti,omap4-cm";
255 reg = <0x500 0x100>;
256 #address-cells = <1>;
257 #size-cells = <1>;
258 ranges = <0 0x500 0x100>;
259
260 default_clkctrl: clk@0 {
261 compatible = "ti,clkctrl";
262 reg = <0x0 0x5c>;
263 #clock-cells = <2>;
264 };
265 };
266
267 alwon_cm: alwon_cm@1400 {
268 compatible = "ti,omap4-cm";
269 reg = <0x1400 0x300>;
270 #address-cells = <1>;
271 #size-cells = <1>;
272 ranges = <0 0x1400 0x300>;
273
274 alwon_clkctrl: clk@0 {
275 compatible = "ti,clkctrl";
276 reg = <0x0 0x208>;
277 #clock-cells = <2>;
278 };
279 };
280};
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi
index 566b2a8c8b96..1edc2b48b254 100644
--- a/arch/arm/boot/dts/dm816x.dtsi
+++ b/arch/arm/boot/dts/dm816x.dtsi
@@ -67,8 +67,11 @@
67 ranges; 67 ranges;
68 68
69 prcm: prcm@48180000 { 69 prcm: prcm@48180000 {
70 compatible = "ti,dm816-prcm"; 70 compatible = "ti,dm816-prcm", "simple-bus";
71 reg = <0x48180000 0x4000>; 71 reg = <0x48180000 0x4000>;
72 #address-cells = <1>;
73 #size-cells = <1>;
74 ranges = <0 0x48180000 0x4000>;
72 75
73 prcm_clocks: clocks { 76 prcm_clocks: clocks {
74 #address-cells = <1>; 77 #address-cells = <1>;
@@ -331,6 +334,8 @@
331 interrupts = <67>; 334 interrupts = <67>;
332 ti,hwmods = "timer1"; 335 ti,hwmods = "timer1";
333 ti,timer-alwon; 336 ti,timer-alwon;
337 clocks = <&timer1_fck>;
338 clock-names = "fck";
334 }; 339 };
335 340
336 timer2: timer@48040000 { 341 timer2: timer@48040000 {
@@ -338,6 +343,8 @@
338 reg = <0x48040000 0x2000>; 343 reg = <0x48040000 0x2000>;
339 interrupts = <68>; 344 interrupts = <68>;
340 ti,hwmods = "timer2"; 345 ti,hwmods = "timer2";
346 clocks = <&timer2_fck>;
347 clock-names = "fck";
341 }; 348 };
342 349
343 timer3: timer@48042000 { 350 timer3: timer@48042000 {
diff --git a/arch/arm/boot/dts/dra7-evm-common.dtsi b/arch/arm/boot/dts/dra7-evm-common.dtsi
index e088bb93636a..05a7b1a01bc3 100644
--- a/arch/arm/boot/dts/dra7-evm-common.dtsi
+++ b/arch/arm/boot/dts/dra7-evm-common.dtsi
@@ -204,7 +204,7 @@
204 204
205&atl { 205&atl {
206 assigned-clocks = <&abe_dpll_sys_clk_mux>, 206 assigned-clocks = <&abe_dpll_sys_clk_mux>,
207 <&atl_gfclk_mux>, 207 <&atl_clkctrl DRA7_ATL_CLKCTRL 26>,
208 <&dpll_abe_ck>, 208 <&dpll_abe_ck>,
209 <&dpll_abe_m2x2_ck>, 209 <&dpll_abe_m2x2_ck>,
210 <&atl_clkin2_ck>; 210 <&atl_clkin2_ck>;
@@ -222,7 +222,7 @@
222&mcasp3 { 222&mcasp3 {
223 #sound-dai-cells = <0>; 223 #sound-dai-cells = <0>;
224 224
225 assigned-clocks = <&mcasp3_ahclkx_mux>; 225 assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
226 assigned-clock-parents = <&atl_clkin2_ck>; 226 assigned-clock-parents = <&atl_clkin2_ck>;
227 227
228 status = "okay"; 228 status = "okay";
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index ac9216293b7c..a1d7178a3966 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -9,6 +9,7 @@
9 9
10#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
11#include <dt-bindings/pinctrl/dra.h> 11#include <dt-bindings/pinctrl/dra.h>
12#include <dt-bindings/clock/dra7.h>
12 13
13#define MAX_SOURCES 400 14#define MAX_SOURCES 400
14 15
@@ -224,8 +225,12 @@
224 }; 225 };
225 226
226 cm_core_aon: cm_core_aon@5000 { 227 cm_core_aon: cm_core_aon@5000 {
227 compatible = "ti,dra7-cm-core-aon"; 228 compatible = "ti,dra7-cm-core-aon",
229 "simple-bus";
230 #address-cells = <1>;
231 #size-cells = <1>;
228 reg = <0x5000 0x2000>; 232 reg = <0x5000 0x2000>;
233 ranges = <0 0x5000 0x2000>;
229 234
230 cm_core_aon_clocks: clocks { 235 cm_core_aon_clocks: clocks {
231 #address-cells = <1>; 236 #address-cells = <1>;
@@ -237,8 +242,11 @@
237 }; 242 };
238 243
239 cm_core: cm_core@8000 { 244 cm_core: cm_core@8000 {
240 compatible = "ti,dra7-cm-core"; 245 compatible = "ti,dra7-cm-core", "simple-bus";
246 #address-cells = <1>;
247 #size-cells = <1>;
241 reg = <0x8000 0x3000>; 248 reg = <0x8000 0x3000>;
249 ranges = <0 0x8000 0x3000>;
242 250
243 cm_core_clocks: clocks { 251 cm_core_clocks: clocks {
244 #address-cells = <1>; 252 #address-cells = <1>;
@@ -263,9 +271,12 @@
263 }; 271 };
264 272
265 prm: prm@6000 { 273 prm: prm@6000 {
266 compatible = "ti,dra7-prm"; 274 compatible = "ti,dra7-prm", "simple-bus";
267 reg = <0x6000 0x3000>; 275 reg = <0x6000 0x3000>;
268 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; 276 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
277 #address-cells = <1>;
278 #size-cells = <1>;
279 ranges = <0 0x6000 0x3000>;
269 280
270 prm_clocks: clocks { 281 prm_clocks: clocks {
271 #address-cells = <1>; 282 #address-cells = <1>;
@@ -876,6 +887,8 @@
876 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>; 887 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
877 ti,hwmods = "timer1"; 888 ti,hwmods = "timer1";
878 ti,timer-alwon; 889 ti,timer-alwon;
890 clock-names = "fck";
891 clocks = <&wkupaon_clkctrl DRA7_TIMER1_CLKCTRL 24>;
879 }; 892 };
880 893
881 timer2: timer@48032000 { 894 timer2: timer@48032000 {
@@ -1358,7 +1371,7 @@
1358 #address-cells = <1>; 1371 #address-cells = <1>;
1359 #size-cells = <0>; 1372 #size-cells = <0>;
1360 ti,hwmods = "qspi"; 1373 ti,hwmods = "qspi";
1361 clocks = <&qspi_gfclk_div>; 1374 clocks = <&l4per_clkctrl DRA7_QSPI_CLKCTRL 25>;
1362 clock-names = "fck"; 1375 clock-names = "fck";
1363 num-cs = <4>; 1376 num-cs = <4>;
1364 interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>; 1377 interrupts = <GIC_SPI 343 IRQ_TYPE_LEVEL_HIGH>;
@@ -1380,7 +1393,8 @@
1380 <0x4A096800 0x40>; /* pll_ctrl */ 1393 <0x4A096800 0x40>; /* pll_ctrl */
1381 reg-names = "phy_rx", "phy_tx", "pll_ctrl"; 1394 reg-names = "phy_rx", "phy_tx", "pll_ctrl";
1382 syscon-phy-power = <&scm_conf 0x374>; 1395 syscon-phy-power = <&scm_conf 0x374>;
1383 clocks = <&sys_clkin1>, <&sata_ref_clk>; 1396 clocks = <&sys_clkin1>,
1397 <&l3init_clkctrl DRA7_SATA_CLKCTRL 8>;
1384 clock-names = "sysclk", "refclk"; 1398 clock-names = "sysclk", "refclk";
1385 syscon-pllreset = <&scm_conf 0x3fc>; 1399 syscon-pllreset = <&scm_conf 0x3fc>;
1386 #phy-cells = <0>; 1400 #phy-cells = <0>;
@@ -1395,9 +1409,9 @@
1395 syscon-pcs = <&scm_conf_pcie 0x10>; 1409 syscon-pcs = <&scm_conf_pcie 0x10>;
1396 clocks = <&dpll_pcie_ref_ck>, 1410 clocks = <&dpll_pcie_ref_ck>,
1397 <&dpll_pcie_ref_m2ldo_ck>, 1411 <&dpll_pcie_ref_m2ldo_ck>,
1398 <&optfclk_pciephy1_32khz>, 1412 <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 8>,
1399 <&optfclk_pciephy1_clk>, 1413 <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 9>,
1400 <&optfclk_pciephy1_div_clk>, 1414 <&l3init_clkctrl DRA7_PCIE1_CLKCTRL 10>,
1401 <&optfclk_pciephy_div>, 1415 <&optfclk_pciephy_div>,
1402 <&sys_clkin1>; 1416 <&sys_clkin1>;
1403 clock-names = "dpll_ref", "dpll_ref_m2", 1417 clock-names = "dpll_ref", "dpll_ref_m2",
@@ -1415,9 +1429,9 @@
1415 syscon-pcs = <&scm_conf_pcie 0x10>; 1429 syscon-pcs = <&scm_conf_pcie 0x10>;
1416 clocks = <&dpll_pcie_ref_ck>, 1430 clocks = <&dpll_pcie_ref_ck>,
1417 <&dpll_pcie_ref_m2ldo_ck>, 1431 <&dpll_pcie_ref_m2ldo_ck>,
1418 <&optfclk_pciephy2_32khz>, 1432 <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 8>,
1419 <&optfclk_pciephy2_clk>, 1433 <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 9>,
1420 <&optfclk_pciephy2_div_clk>, 1434 <&l3init_clkctrl DRA7_PCIE2_CLKCTRL 10>,
1421 <&optfclk_pciephy_div>, 1435 <&optfclk_pciephy_div>,
1422 <&sys_clkin1>; 1436 <&sys_clkin1>;
1423 clock-names = "dpll_ref", "dpll_ref_m2", 1437 clock-names = "dpll_ref", "dpll_ref_m2",
@@ -1434,7 +1448,7 @@
1434 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>; 1448 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
1435 phys = <&sata_phy>; 1449 phys = <&sata_phy>;
1436 phy-names = "sata-phy"; 1450 phy-names = "sata-phy";
1437 clocks = <&sata_ref_clk>; 1451 clocks = <&l3init_clkctrl DRA7_SATA_CLKCTRL 8>;
1438 ti,hwmods = "sata"; 1452 ti,hwmods = "sata";
1439 ports-implemented = <0x1>; 1453 ports-implemented = <0x1>;
1440 }; 1454 };
@@ -1462,7 +1476,7 @@
1462 reg = <0x4a084000 0x400>; 1476 reg = <0x4a084000 0x400>;
1463 syscon-phy-power = <&scm_conf 0x300>; 1477 syscon-phy-power = <&scm_conf 0x300>;
1464 clocks = <&usb_phy1_always_on_clk32k>, 1478 clocks = <&usb_phy1_always_on_clk32k>,
1465 <&usb_otg_ss1_refclk960m>; 1479 <&l3init_clkctrl DRA7_USB_OTG_SS1_CLKCTRL 8>;
1466 clock-names = "wkupclk", 1480 clock-names = "wkupclk",
1467 "refclk"; 1481 "refclk";
1468 #phy-cells = <0>; 1482 #phy-cells = <0>;
@@ -1474,7 +1488,7 @@
1474 reg = <0x4a085000 0x400>; 1488 reg = <0x4a085000 0x400>;
1475 syscon-phy-power = <&scm_conf 0xe74>; 1489 syscon-phy-power = <&scm_conf 0xe74>;
1476 clocks = <&usb_phy2_always_on_clk32k>, 1490 clocks = <&usb_phy2_always_on_clk32k>,
1477 <&usb_otg_ss2_refclk960m>; 1491 <&l3init_clkctrl DRA7_USB_OTG_SS2_CLKCTRL 8>;
1478 clock-names = "wkupclk", 1492 clock-names = "wkupclk",
1479 "refclk"; 1493 "refclk";
1480 #phy-cells = <0>; 1494 #phy-cells = <0>;
@@ -1489,7 +1503,7 @@
1489 syscon-phy-power = <&scm_conf 0x370>; 1503 syscon-phy-power = <&scm_conf 0x370>;
1490 clocks = <&usb_phy3_always_on_clk32k>, 1504 clocks = <&usb_phy3_always_on_clk32k>,
1491 <&sys_clkin1>, 1505 <&sys_clkin1>,
1492 <&usb_otg_ss1_refclk960m>; 1506 <&l3init_clkctrl DRA7_USB_OTG_SS1_CLKCTRL 8>;
1493 clock-names = "wkupclk", 1507 clock-names = "wkupclk",
1494 "sysclk", 1508 "sysclk",
1495 "refclk"; 1509 "refclk";
@@ -1636,7 +1650,7 @@
1636 ti,hwmods = "atl"; 1650 ti,hwmods = "atl";
1637 ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>, 1651 ti,provided-clocks = <&atl_clkin0_ck>, <&atl_clkin1_ck>,
1638 <&atl_clkin2_ck>, <&atl_clkin3_ck>; 1652 <&atl_clkin2_ck>, <&atl_clkin3_ck>;
1639 clocks = <&atl_gfclk_mux>; 1653 clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
1640 clock-names = "fck"; 1654 clock-names = "fck";
1641 status = "disabled"; 1655 status = "disabled";
1642 }; 1656 };
@@ -1652,8 +1666,8 @@
1652 interrupt-names = "tx", "rx"; 1666 interrupt-names = "tx", "rx";
1653 dmas = <&edma_xbar 129 1>, <&edma_xbar 128 1>; 1667 dmas = <&edma_xbar 129 1>, <&edma_xbar 128 1>;
1654 dma-names = "tx", "rx"; 1668 dma-names = "tx", "rx";
1655 clocks = <&mcasp1_aux_gfclk_mux>, <&mcasp1_ahclkx_mux>, 1669 clocks = <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 22>, <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 24>,
1656 <&mcasp1_ahclkr_mux>; 1670 <&ipu_clkctrl DRA7_MCASP1_CLKCTRL 28>;
1657 clock-names = "fck", "ahclkx", "ahclkr"; 1671 clock-names = "fck", "ahclkx", "ahclkr";
1658 status = "disabled"; 1672 status = "disabled";
1659 }; 1673 };
@@ -1669,8 +1683,9 @@
1669 interrupt-names = "tx", "rx"; 1683 interrupt-names = "tx", "rx";
1670 dmas = <&edma_xbar 131 1>, <&edma_xbar 130 1>; 1684 dmas = <&edma_xbar 131 1>, <&edma_xbar 130 1>;
1671 dma-names = "tx", "rx"; 1685 dma-names = "tx", "rx";
1672 clocks = <&mcasp2_aux_gfclk_mux>, <&mcasp2_ahclkx_mux>, 1686 clocks = <&l4per_clkctrl DRA7_MCASP2_CLKCTRL 22>,
1673 <&mcasp2_ahclkr_mux>; 1687 <&l4per_clkctrl DRA7_MCASP2_CLKCTRL 24>,
1688 <&l4per_clkctrl DRA7_MCASP2_CLKCTRL 28>;
1674 clock-names = "fck", "ahclkx", "ahclkr"; 1689 clock-names = "fck", "ahclkx", "ahclkr";
1675 status = "disabled"; 1690 status = "disabled";
1676 }; 1691 };
@@ -1686,7 +1701,8 @@
1686 interrupt-names = "tx", "rx"; 1701 interrupt-names = "tx", "rx";
1687 dmas = <&edma_xbar 133 1>, <&edma_xbar 132 1>; 1702 dmas = <&edma_xbar 133 1>, <&edma_xbar 132 1>;
1688 dma-names = "tx", "rx"; 1703 dma-names = "tx", "rx";
1689 clocks = <&mcasp3_aux_gfclk_mux>, <&mcasp3_ahclkx_mux>; 1704 clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 22>,
1705 <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
1690 clock-names = "fck", "ahclkx"; 1706 clock-names = "fck", "ahclkx";
1691 status = "disabled"; 1707 status = "disabled";
1692 }; 1708 };
@@ -1702,7 +1718,8 @@
1702 interrupt-names = "tx", "rx"; 1718 interrupt-names = "tx", "rx";
1703 dmas = <&edma_xbar 135 1>, <&edma_xbar 134 1>; 1719 dmas = <&edma_xbar 135 1>, <&edma_xbar 134 1>;
1704 dma-names = "tx", "rx"; 1720 dma-names = "tx", "rx";
1705 clocks = <&mcasp4_aux_gfclk_mux>, <&mcasp4_ahclkx_mux>; 1721 clocks = <&l4per_clkctrl DRA7_MCASP4_CLKCTRL 22>,
1722 <&l4per_clkctrl DRA7_MCASP4_CLKCTRL 24>;
1706 clock-names = "fck", "ahclkx"; 1723 clock-names = "fck", "ahclkx";
1707 status = "disabled"; 1724 status = "disabled";
1708 }; 1725 };
@@ -1718,7 +1735,8 @@
1718 interrupt-names = "tx", "rx"; 1735 interrupt-names = "tx", "rx";
1719 dmas = <&edma_xbar 137 1>, <&edma_xbar 136 1>; 1736 dmas = <&edma_xbar 137 1>, <&edma_xbar 136 1>;
1720 dma-names = "tx", "rx"; 1737 dma-names = "tx", "rx";
1721 clocks = <&mcasp5_aux_gfclk_mux>, <&mcasp5_ahclkx_mux>; 1738 clocks = <&l4per_clkctrl DRA7_MCASP5_CLKCTRL 22>,
1739 <&l4per_clkctrl DRA7_MCASP5_CLKCTRL 24>;
1722 clock-names = "fck", "ahclkx"; 1740 clock-names = "fck", "ahclkx";
1723 status = "disabled"; 1741 status = "disabled";
1724 }; 1742 };
@@ -1734,7 +1752,8 @@
1734 interrupt-names = "tx", "rx"; 1752 interrupt-names = "tx", "rx";
1735 dmas = <&edma_xbar 139 1>, <&edma_xbar 138 1>; 1753 dmas = <&edma_xbar 139 1>, <&edma_xbar 138 1>;
1736 dma-names = "tx", "rx"; 1754 dma-names = "tx", "rx";
1737 clocks = <&mcasp6_aux_gfclk_mux>, <&mcasp6_ahclkx_mux>; 1755 clocks = <&l4per_clkctrl DRA7_MCASP6_CLKCTRL 22>,
1756 <&l4per_clkctrl DRA7_MCASP6_CLKCTRL 24>;
1738 clock-names = "fck", "ahclkx"; 1757 clock-names = "fck", "ahclkx";
1739 status = "disabled"; 1758 status = "disabled";
1740 }; 1759 };
@@ -1750,7 +1769,8 @@
1750 interrupt-names = "tx", "rx"; 1769 interrupt-names = "tx", "rx";
1751 dmas = <&edma_xbar 141 1>, <&edma_xbar 140 1>; 1770 dmas = <&edma_xbar 141 1>, <&edma_xbar 140 1>;
1752 dma-names = "tx", "rx"; 1771 dma-names = "tx", "rx";
1753 clocks = <&mcasp7_aux_gfclk_mux>, <&mcasp7_ahclkx_mux>; 1772 clocks = <&l4per_clkctrl DRA7_MCASP7_CLKCTRL 22>,
1773 <&l4per_clkctrl DRA7_MCASP7_CLKCTRL 24>;
1754 clock-names = "fck", "ahclkx"; 1774 clock-names = "fck", "ahclkx";
1755 status = "disabled"; 1775 status = "disabled";
1756 }; 1776 };
@@ -1766,7 +1786,8 @@
1766 interrupt-names = "tx", "rx"; 1786 interrupt-names = "tx", "rx";
1767 dmas = <&edma_xbar 143 1>, <&edma_xbar 142 1>; 1787 dmas = <&edma_xbar 143 1>, <&edma_xbar 142 1>;
1768 dma-names = "tx", "rx"; 1788 dma-names = "tx", "rx";
1769 clocks = <&mcasp8_aux_gfclk_mux>, <&mcasp8_ahclkx_mux>; 1789 clocks = <&l4per_clkctrl DRA7_MCASP8_CLKCTRL 22>,
1790 <&l4per_clkctrl DRA7_MCASP8_CLKCTRL 24>;
1770 clock-names = "fck", "ahclkx"; 1791 clock-names = "fck", "ahclkx";
1771 status = "disabled"; 1792 status = "disabled";
1772 }; 1793 };
@@ -1788,7 +1809,7 @@
1788 mac: ethernet@48484000 { 1809 mac: ethernet@48484000 {
1789 compatible = "ti,dra7-cpsw","ti,cpsw"; 1810 compatible = "ti,dra7-cpsw","ti,cpsw";
1790 ti,hwmods = "gmac"; 1811 ti,hwmods = "gmac";
1791 clocks = <&gmac_main_clk>, <&gmac_rft_clk_mux>; 1812 clocks = <&gmac_main_clk>, <&l3init_clkctrl DRA7_GMAC_CLKCTRL 25>;
1792 clock-names = "fck", "cpts"; 1813 clock-names = "fck", "cpts";
1793 cpdma_channels = <8>; 1814 cpdma_channels = <8>;
1794 ale_entries = <1024>; 1815 ale_entries = <1024>;
@@ -1858,7 +1879,7 @@
1858 reg = <0x4ae3c000 0x2000>; 1879 reg = <0x4ae3c000 0x2000>;
1859 syscon-raminit = <&scm_conf 0x558 0>; 1880 syscon-raminit = <&scm_conf 0x558 0>;
1860 interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>; 1881 interrupts = <GIC_SPI 222 IRQ_TYPE_LEVEL_HIGH>;
1861 clocks = <&dcan1_sys_clk_mux>; 1882 clocks = <&wkupaon_clkctrl DRA7_DCAN1_CLKCTRL 24>;
1862 status = "disabled"; 1883 status = "disabled";
1863 }; 1884 };
1864 1885
@@ -1889,7 +1910,7 @@
1889 reg = <0x58001000 0x1000>; 1910 reg = <0x58001000 0x1000>;
1890 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; 1911 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
1891 ti,hwmods = "dss_dispc"; 1912 ti,hwmods = "dss_dispc";
1892 clocks = <&dss_dss_clk>; 1913 clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>;
1893 clock-names = "fck"; 1914 clock-names = "fck";
1894 /* CTRL_CORE_SMA_SW_1 */ 1915 /* CTRL_CORE_SMA_SW_1 */
1895 syscon-pol = <&scm_conf 0x534>; 1916 syscon-pol = <&scm_conf 0x534>;
@@ -1905,7 +1926,8 @@
1905 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 1926 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
1906 status = "disabled"; 1927 status = "disabled";
1907 ti,hwmods = "dss_hdmi"; 1928 ti,hwmods = "dss_hdmi";
1908 clocks = <&dss_48mhz_clk>, <&dss_hdmi_clk>; 1929 clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 9>,
1930 <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 10>;
1909 clock-names = "fck", "sys_clk"; 1931 clock-names = "fck", "sys_clk";
1910 }; 1932 };
1911 }; 1933 };
@@ -2089,4 +2111,4 @@
2089 temperature = <120000>; /* milli Celsius */ 2111 temperature = <120000>; /* milli Celsius */
2090}; 2112};
2091 2113
2092/include/ "dra7xx-clocks.dtsi" 2114#include "dra7xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/dra72-evm-common.dtsi b/arch/arm/boot/dts/dra72-evm-common.dtsi
index 2e485a13dfd7..e85f560a2f78 100644
--- a/arch/arm/boot/dts/dra72-evm-common.dtsi
+++ b/arch/arm/boot/dts/dra72-evm-common.dtsi
@@ -514,7 +514,7 @@
514 514
515&atl { 515&atl {
516 assigned-clocks = <&abe_dpll_sys_clk_mux>, 516 assigned-clocks = <&abe_dpll_sys_clk_mux>,
517 <&atl_gfclk_mux>, 517 <&atl_clkctrl DRA7_ATL_CLKCTRL 26>,
518 <&dpll_abe_ck>, 518 <&dpll_abe_ck>,
519 <&dpll_abe_m2x2_ck>, 519 <&dpll_abe_m2x2_ck>,
520 <&atl_clkin2_ck>; 520 <&atl_clkin2_ck>;
@@ -532,7 +532,7 @@
532&mcasp3 { 532&mcasp3 {
533 #sound-dai-cells = <0>; 533 #sound-dai-cells = <0>;
534 534
535 assigned-clocks = <&mcasp3_ahclkx_mux>; 535 assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
536 assigned-clock-parents = <&atl_clkin2_ck>; 536 assigned-clock-parents = <&atl_clkin2_ck>;
537 537
538 status = "okay"; 538 status = "okay";
diff --git a/arch/arm/boot/dts/dra72x.dtsi b/arch/arm/boot/dts/dra72x.dtsi
index 67107605fb4c..a06d39919bf4 100644
--- a/arch/arm/boot/dts/dra72x.dtsi
+++ b/arch/arm/boot/dts/dra72x.dtsi
@@ -25,8 +25,8 @@
25 <0x58004300 0x20>; 25 <0x58004300 0x20>;
26 reg-names = "dss", "pll1_clkctrl", "pll1"; 26 reg-names = "dss", "pll1_clkctrl", "pll1";
27 27
28 clocks = <&dss_dss_clk>, 28 clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>,
29 <&dss_video1_clk>; 29 <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 12>;
30 clock-names = "fck", "video1_clk"; 30 clock-names = "fck", "video1_clk";
31}; 31};
32 32
diff --git a/arch/arm/boot/dts/dra74x.dtsi b/arch/arm/boot/dts/dra74x.dtsi
index 24e6746c5b26..24ff17bae4c6 100644
--- a/arch/arm/boot/dts/dra74x.dtsi
+++ b/arch/arm/boot/dts/dra74x.dtsi
@@ -93,9 +93,9 @@
93 reg-names = "dss", "pll1_clkctrl", "pll1", 93 reg-names = "dss", "pll1_clkctrl", "pll1",
94 "pll2_clkctrl", "pll2"; 94 "pll2_clkctrl", "pll2";
95 95
96 clocks = <&dss_dss_clk>, 96 clocks = <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 8>,
97 <&dss_video1_clk>, 97 <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 12>,
98 <&dss_video2_clk>; 98 <&dss_clkctrl DRA7_DSS_CORE_CLKCTRL 13>;
99 clock-names = "fck", "video1_clk", "video2_clk"; 99 clock-names = "fck", "video1_clk", "video2_clk";
100}; 100};
101 101
diff --git a/arch/arm/boot/dts/dra7xx-clocks.dtsi b/arch/arm/boot/dts/dra7xx-clocks.dtsi
index e62b62875cba..69562cdbeada 100644
--- a/arch/arm/boot/dts/dra7xx-clocks.dtsi
+++ b/arch/arm/boot/dts/dra7xx-clocks.dtsi
@@ -11,25 +11,25 @@
11 atl_clkin0_ck: atl_clkin0_ck { 11 atl_clkin0_ck: atl_clkin0_ck {
12 #clock-cells = <0>; 12 #clock-cells = <0>;
13 compatible = "ti,dra7-atl-clock"; 13 compatible = "ti,dra7-atl-clock";
14 clocks = <&atl_gfclk_mux>; 14 clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
15 }; 15 };
16 16
17 atl_clkin1_ck: atl_clkin1_ck { 17 atl_clkin1_ck: atl_clkin1_ck {
18 #clock-cells = <0>; 18 #clock-cells = <0>;
19 compatible = "ti,dra7-atl-clock"; 19 compatible = "ti,dra7-atl-clock";
20 clocks = <&atl_gfclk_mux>; 20 clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
21 }; 21 };
22 22
23 atl_clkin2_ck: atl_clkin2_ck { 23 atl_clkin2_ck: atl_clkin2_ck {
24 #clock-cells = <0>; 24 #clock-cells = <0>;
25 compatible = "ti,dra7-atl-clock"; 25 compatible = "ti,dra7-atl-clock";
26 clocks = <&atl_gfclk_mux>; 26 clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
27 }; 27 };
28 28
29 atl_clkin3_ck: atl_clkin3_ck { 29 atl_clkin3_ck: atl_clkin3_ck {
30 #clock-cells = <0>; 30 #clock-cells = <0>;
31 compatible = "ti,dra7-atl-clock"; 31 compatible = "ti,dra7-atl-clock";
32 clocks = <&atl_gfclk_mux>; 32 clocks = <&atl_clkctrl DRA7_ATL_CLKCTRL 26>;
33 }; 33 };
34 34
35 hdmi_clkin_ck: hdmi_clkin_ck { 35 hdmi_clkin_ck: hdmi_clkin_ck {
@@ -809,70 +809,6 @@
809 assigned-clock-parents = <&dpll_core_h22x2_ck>; 809 assigned-clock-parents = <&dpll_core_h22x2_ck>;
810 }; 810 };
811 811
812 mcasp1_ahclkr_mux: mcasp1_ahclkr_mux@550 {
813 #clock-cells = <0>;
814 compatible = "ti,mux-clock";
815 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
816 ti,bit-shift = <28>;
817 reg = <0x0550>;
818 };
819
820 mcasp1_ahclkx_mux: mcasp1_ahclkx_mux@550 {
821 #clock-cells = <0>;
822 compatible = "ti,mux-clock";
823 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
824 ti,bit-shift = <24>;
825 reg = <0x0550>;
826 };
827
828 mcasp1_aux_gfclk_mux: mcasp1_aux_gfclk_mux@550 {
829 #clock-cells = <0>;
830 compatible = "ti,mux-clock";
831 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
832 ti,bit-shift = <22>;
833 reg = <0x0550>;
834 };
835
836 timer5_gfclk_mux: timer5_gfclk_mux@558 {
837 #clock-cells = <0>;
838 compatible = "ti,mux-clock";
839 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>, <&clkoutmux0_clk_mux>;
840 ti,bit-shift = <24>;
841 reg = <0x0558>;
842 };
843
844 timer6_gfclk_mux: timer6_gfclk_mux@560 {
845 #clock-cells = <0>;
846 compatible = "ti,mux-clock";
847 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>, <&clkoutmux0_clk_mux>;
848 ti,bit-shift = <24>;
849 reg = <0x0560>;
850 };
851
852 timer7_gfclk_mux: timer7_gfclk_mux@568 {
853 #clock-cells = <0>;
854 compatible = "ti,mux-clock";
855 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>, <&clkoutmux0_clk_mux>;
856 ti,bit-shift = <24>;
857 reg = <0x0568>;
858 };
859
860 timer8_gfclk_mux: timer8_gfclk_mux@570 {
861 #clock-cells = <0>;
862 compatible = "ti,mux-clock";
863 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>, <&clkoutmux0_clk_mux>;
864 ti,bit-shift = <24>;
865 reg = <0x0570>;
866 };
867
868 uart6_gfclk_mux: uart6_gfclk_mux@580 {
869 #clock-cells = <0>;
870 compatible = "ti,mux-clock";
871 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
872 ti,bit-shift = <24>;
873 reg = <0x0580>;
874 };
875
876 dummy_ck: dummy_ck { 812 dummy_ck: dummy_ck {
877 #clock-cells = <0>; 813 #clock-cells = <0>;
878 compatible = "fixed-clock"; 814 compatible = "fixed-clock";
@@ -1188,39 +1124,8 @@
1188 clocks = <&sys_clkin1>, <&abe_lp_clk_div>; 1124 clocks = <&sys_clkin1>, <&abe_lp_clk_div>;
1189 reg = <0x0108>; 1125 reg = <0x0108>;
1190 }; 1126 };
1191
1192 gpio1_dbclk: gpio1_dbclk@1838 {
1193 #clock-cells = <0>;
1194 compatible = "ti,gate-clock";
1195 clocks = <&sys_32k_ck>;
1196 ti,bit-shift = <8>;
1197 reg = <0x1838>;
1198 };
1199
1200 dcan1_sys_clk_mux: dcan1_sys_clk_mux@1888 {
1201 #clock-cells = <0>;
1202 compatible = "ti,mux-clock";
1203 clocks = <&sys_clkin1>, <&sys_clkin2>;
1204 ti,bit-shift = <24>;
1205 reg = <0x1888>;
1206 };
1207
1208 timer1_gfclk_mux: timer1_gfclk_mux@1840 {
1209 #clock-cells = <0>;
1210 compatible = "ti,mux-clock";
1211 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
1212 ti,bit-shift = <24>;
1213 reg = <0x1840>;
1214 };
1215
1216 uart10_gfclk_mux: uart10_gfclk_mux@1880 {
1217 #clock-cells = <0>;
1218 compatible = "ti,mux-clock";
1219 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
1220 ti,bit-shift = <24>;
1221 reg = <0x1880>;
1222 };
1223}; 1127};
1128
1224&cm_core_clocks { 1129&cm_core_clocks {
1225 dpll_pcie_ref_ck: dpll_pcie_ref_ck@200 { 1130 dpll_pcie_ref_ck: dpll_pcie_ref_ck@200 {
1226 #clock-cells = <0>; 1131 #clock-cells = <0>;
@@ -1255,22 +1160,6 @@
1255 reg = <0x021c>, <0x0220>; 1160 reg = <0x021c>, <0x0220>;
1256 }; 1161 };
1257 1162
1258 optfclk_pciephy1_32khz: optfclk_pciephy1_32khz@4a0093b0 {
1259 compatible = "ti,gate-clock";
1260 clocks = <&sys_32k_ck>;
1261 #clock-cells = <0>;
1262 reg = <0x13b0>;
1263 ti,bit-shift = <8>;
1264 };
1265
1266 optfclk_pciephy2_32khz: optfclk_pciephy2_32khz@4a0093b8 {
1267 compatible = "ti,gate-clock";
1268 clocks = <&sys_32k_ck>;
1269 #clock-cells = <0>;
1270 reg = <0x13b8>;
1271 ti,bit-shift = <8>;
1272 };
1273
1274 optfclk_pciephy_div: optfclk_pciephy_div@4a00821c { 1163 optfclk_pciephy_div: optfclk_pciephy_div@4a00821c {
1275 compatible = "ti,divider-clock"; 1164 compatible = "ti,divider-clock";
1276 clocks = <&apll_pcie_ck>; 1165 clocks = <&apll_pcie_ck>;
@@ -1281,38 +1170,6 @@
1281 ti,max-div = <2>; 1170 ti,max-div = <2>;
1282 }; 1171 };
1283 1172
1284 optfclk_pciephy1_clk: optfclk_pciephy1_clk@4a0093b0 {
1285 compatible = "ti,gate-clock";
1286 clocks = <&apll_pcie_ck>;
1287 #clock-cells = <0>;
1288 reg = <0x13b0>;
1289 ti,bit-shift = <9>;
1290 };
1291
1292 optfclk_pciephy2_clk: optfclk_pciephy2_clk@4a0093b8 {
1293 compatible = "ti,gate-clock";
1294 clocks = <&apll_pcie_ck>;
1295 #clock-cells = <0>;
1296 reg = <0x13b8>;
1297 ti,bit-shift = <9>;
1298 };
1299
1300 optfclk_pciephy1_div_clk: optfclk_pciephy1_div_clk@4a0093b0 {
1301 compatible = "ti,gate-clock";
1302 clocks = <&optfclk_pciephy_div>;
1303 #clock-cells = <0>;
1304 reg = <0x13b0>;
1305 ti,bit-shift = <10>;
1306 };
1307
1308 optfclk_pciephy2_div_clk: optfclk_pciephy2_div_clk@4a0093b8 {
1309 compatible = "ti,gate-clock";
1310 clocks = <&optfclk_pciephy_div>;
1311 #clock-cells = <0>;
1312 reg = <0x13b8>;
1313 ti,bit-shift = <10>;
1314 };
1315
1316 apll_pcie_clkvcoldo: apll_pcie_clkvcoldo { 1173 apll_pcie_clkvcoldo: apll_pcie_clkvcoldo {
1317 #clock-cells = <0>; 1174 #clock-cells = <0>;
1318 compatible = "fixed-factor-clock"; 1175 compatible = "fixed-factor-clock";
@@ -1541,167 +1398,6 @@
1541 reg = <0x06c0>; 1398 reg = <0x06c0>;
1542 }; 1399 };
1543 1400
1544 dss_32khz_clk: dss_32khz_clk@1120 {
1545 #clock-cells = <0>;
1546 compatible = "ti,gate-clock";
1547 clocks = <&sys_32k_ck>;
1548 ti,bit-shift = <11>;
1549 reg = <0x1120>;
1550 };
1551
1552 dss_48mhz_clk: dss_48mhz_clk@1120 {
1553 #clock-cells = <0>;
1554 compatible = "ti,gate-clock";
1555 clocks = <&func_48m_fclk>;
1556 ti,bit-shift = <9>;
1557 reg = <0x1120>;
1558 };
1559
1560 dss_dss_clk: dss_dss_clk@1120 {
1561 #clock-cells = <0>;
1562 compatible = "ti,gate-clock";
1563 clocks = <&dpll_per_h12x2_ck>;
1564 ti,bit-shift = <8>;
1565 reg = <0x1120>;
1566 ti,set-rate-parent;
1567 };
1568
1569 dss_hdmi_clk: dss_hdmi_clk@1120 {
1570 #clock-cells = <0>;
1571 compatible = "ti,gate-clock";
1572 clocks = <&hdmi_dpll_clk_mux>;
1573 ti,bit-shift = <10>;
1574 reg = <0x1120>;
1575 };
1576
1577 dss_video1_clk: dss_video1_clk@1120 {
1578 #clock-cells = <0>;
1579 compatible = "ti,gate-clock";
1580 clocks = <&video1_dpll_clk_mux>;
1581 ti,bit-shift = <12>;
1582 reg = <0x1120>;
1583 };
1584
1585 dss_video2_clk: dss_video2_clk@1120 {
1586 #clock-cells = <0>;
1587 compatible = "ti,gate-clock";
1588 clocks = <&video2_dpll_clk_mux>;
1589 ti,bit-shift = <13>;
1590 reg = <0x1120>;
1591 };
1592
1593 gpio2_dbclk: gpio2_dbclk@1760 {
1594 #clock-cells = <0>;
1595 compatible = "ti,gate-clock";
1596 clocks = <&sys_32k_ck>;
1597 ti,bit-shift = <8>;
1598 reg = <0x1760>;
1599 };
1600
1601 gpio3_dbclk: gpio3_dbclk@1768 {
1602 #clock-cells = <0>;
1603 compatible = "ti,gate-clock";
1604 clocks = <&sys_32k_ck>;
1605 ti,bit-shift = <8>;
1606 reg = <0x1768>;
1607 };
1608
1609 gpio4_dbclk: gpio4_dbclk@1770 {
1610 #clock-cells = <0>;
1611 compatible = "ti,gate-clock";
1612 clocks = <&sys_32k_ck>;
1613 ti,bit-shift = <8>;
1614 reg = <0x1770>;
1615 };
1616
1617 gpio5_dbclk: gpio5_dbclk@1778 {
1618 #clock-cells = <0>;
1619 compatible = "ti,gate-clock";
1620 clocks = <&sys_32k_ck>;
1621 ti,bit-shift = <8>;
1622 reg = <0x1778>;
1623 };
1624
1625 gpio6_dbclk: gpio6_dbclk@1780 {
1626 #clock-cells = <0>;
1627 compatible = "ti,gate-clock";
1628 clocks = <&sys_32k_ck>;
1629 ti,bit-shift = <8>;
1630 reg = <0x1780>;
1631 };
1632
1633 gpio7_dbclk: gpio7_dbclk@1810 {
1634 #clock-cells = <0>;
1635 compatible = "ti,gate-clock";
1636 clocks = <&sys_32k_ck>;
1637 ti,bit-shift = <8>;
1638 reg = <0x1810>;
1639 };
1640
1641 gpio8_dbclk: gpio8_dbclk@1818 {
1642 #clock-cells = <0>;
1643 compatible = "ti,gate-clock";
1644 clocks = <&sys_32k_ck>;
1645 ti,bit-shift = <8>;
1646 reg = <0x1818>;
1647 };
1648
1649 mmc1_clk32k: mmc1_clk32k@1328 {
1650 #clock-cells = <0>;
1651 compatible = "ti,gate-clock";
1652 clocks = <&sys_32k_ck>;
1653 ti,bit-shift = <8>;
1654 reg = <0x1328>;
1655 };
1656
1657 mmc2_clk32k: mmc2_clk32k@1330 {
1658 #clock-cells = <0>;
1659 compatible = "ti,gate-clock";
1660 clocks = <&sys_32k_ck>;
1661 ti,bit-shift = <8>;
1662 reg = <0x1330>;
1663 };
1664
1665 mmc3_clk32k: mmc3_clk32k@1820 {
1666 #clock-cells = <0>;
1667 compatible = "ti,gate-clock";
1668 clocks = <&sys_32k_ck>;
1669 ti,bit-shift = <8>;
1670 reg = <0x1820>;
1671 };
1672
1673 mmc4_clk32k: mmc4_clk32k@1828 {
1674 #clock-cells = <0>;
1675 compatible = "ti,gate-clock";
1676 clocks = <&sys_32k_ck>;
1677 ti,bit-shift = <8>;
1678 reg = <0x1828>;
1679 };
1680
1681 sata_ref_clk: sata_ref_clk@1388 {
1682 #clock-cells = <0>;
1683 compatible = "ti,gate-clock";
1684 clocks = <&sys_clkin1>;
1685 ti,bit-shift = <8>;
1686 reg = <0x1388>;
1687 };
1688
1689 usb_otg_ss1_refclk960m: usb_otg_ss1_refclk960m@13f0 {
1690 #clock-cells = <0>;
1691 compatible = "ti,gate-clock";
1692 clocks = <&l3init_960m_gfclk>;
1693 ti,bit-shift = <8>;
1694 reg = <0x13f0>;
1695 };
1696
1697 usb_otg_ss2_refclk960m: usb_otg_ss2_refclk960m@1340 {
1698 #clock-cells = <0>;
1699 compatible = "ti,gate-clock";
1700 clocks = <&l3init_960m_gfclk>;
1701 ti,bit-shift = <8>;
1702 reg = <0x1340>;
1703 };
1704
1705 usb_phy1_always_on_clk32k: usb_phy1_always_on_clk32k@640 { 1401 usb_phy1_always_on_clk32k: usb_phy1_always_on_clk32k@640 {
1706 #clock-cells = <0>; 1402 #clock-cells = <0>;
1707 compatible = "ti,gate-clock"; 1403 compatible = "ti,gate-clock";
@@ -1726,38 +1422,6 @@
1726 reg = <0x0698>; 1422 reg = <0x0698>;
1727 }; 1423 };
1728 1424
1729 atl_dpll_clk_mux: atl_dpll_clk_mux@c00 {
1730 #clock-cells = <0>;
1731 compatible = "ti,mux-clock";
1732 clocks = <&sys_32k_ck>, <&video1_clkin_ck>, <&video2_clkin_ck>, <&hdmi_clkin_ck>;
1733 ti,bit-shift = <24>;
1734 reg = <0x0c00>;
1735 };
1736
1737 atl_gfclk_mux: atl_gfclk_mux@c00 {
1738 #clock-cells = <0>;
1739 compatible = "ti,mux-clock";
1740 clocks = <&l3_iclk_div>, <&dpll_abe_m2_ck>, <&atl_dpll_clk_mux>;
1741 ti,bit-shift = <26>;
1742 reg = <0x0c00>;
1743 };
1744
1745 rmii_50mhz_clk_mux: rmii_50mhz_clk_mux@13d0 {
1746 #clock-cells = <0>;
1747 compatible = "ti,mux-clock";
1748 clocks = <&dpll_gmac_h11x2_ck>, <&rmii_clk_ck>;
1749 ti,bit-shift = <24>;
1750 reg = <0x13d0>;
1751 };
1752
1753 gmac_rft_clk_mux: gmac_rft_clk_mux@13d0 {
1754 #clock-cells = <0>;
1755 compatible = "ti,mux-clock";
1756 clocks = <&video1_clkin_ck>, <&video2_clkin_ck>, <&dpll_abe_m2_ck>, <&hdmi_clkin_ck>, <&l3_iclk_div>;
1757 ti,bit-shift = <25>;
1758 reg = <0x13d0>;
1759 };
1760
1761 gpu_core_gclk_mux: gpu_core_gclk_mux@1220 { 1425 gpu_core_gclk_mux: gpu_core_gclk_mux@1220 {
1762 #clock-cells = <0>; 1426 #clock-cells = <0>;
1763 compatible = "ti,mux-clock"; 1427 compatible = "ti,mux-clock";
@@ -1787,362 +1451,6 @@
1787 ti,dividers = <8>, <16>, <32>; 1451 ti,dividers = <8>, <16>, <32>;
1788 }; 1452 };
1789 1453
1790 mcasp2_ahclkr_mux: mcasp2_ahclkr_mux@1860 {
1791 #clock-cells = <0>;
1792 compatible = "ti,mux-clock";
1793 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1794 ti,bit-shift = <28>;
1795 reg = <0x1860>;
1796 };
1797
1798 mcasp2_ahclkx_mux: mcasp2_ahclkx_mux@1860 {
1799 #clock-cells = <0>;
1800 compatible = "ti,mux-clock";
1801 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1802 ti,bit-shift = <24>;
1803 reg = <0x1860>;
1804 };
1805
1806 mcasp2_aux_gfclk_mux: mcasp2_aux_gfclk_mux@1860 {
1807 #clock-cells = <0>;
1808 compatible = "ti,mux-clock";
1809 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1810 ti,bit-shift = <22>;
1811 reg = <0x1860>;
1812 };
1813
1814 mcasp3_ahclkx_mux: mcasp3_ahclkx_mux@1868 {
1815 #clock-cells = <0>;
1816 compatible = "ti,mux-clock";
1817 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1818 ti,bit-shift = <24>;
1819 reg = <0x1868>;
1820 assigned-clocks = <&mcasp3_ahclkx_mux>;
1821 assigned-clock-parents = <&abe_24m_fclk>;
1822 };
1823
1824 mcasp3_aux_gfclk_mux: mcasp3_aux_gfclk_mux@1868 {
1825 #clock-cells = <0>;
1826 compatible = "ti,mux-clock";
1827 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1828 ti,bit-shift = <22>;
1829 reg = <0x1868>;
1830 };
1831
1832 mcasp4_ahclkx_mux: mcasp4_ahclkx_mux@1898 {
1833 #clock-cells = <0>;
1834 compatible = "ti,mux-clock";
1835 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1836 ti,bit-shift = <24>;
1837 reg = <0x1898>;
1838 };
1839
1840 mcasp4_aux_gfclk_mux: mcasp4_aux_gfclk_mux@1898 {
1841 #clock-cells = <0>;
1842 compatible = "ti,mux-clock";
1843 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1844 ti,bit-shift = <22>;
1845 reg = <0x1898>;
1846 };
1847
1848 mcasp5_ahclkx_mux: mcasp5_ahclkx_mux@1878 {
1849 #clock-cells = <0>;
1850 compatible = "ti,mux-clock";
1851 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1852 ti,bit-shift = <24>;
1853 reg = <0x1878>;
1854 };
1855
1856 mcasp5_aux_gfclk_mux: mcasp5_aux_gfclk_mux@1878 {
1857 #clock-cells = <0>;
1858 compatible = "ti,mux-clock";
1859 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1860 ti,bit-shift = <22>;
1861 reg = <0x1878>;
1862 };
1863
1864 mcasp6_ahclkx_mux: mcasp6_ahclkx_mux@1904 {
1865 #clock-cells = <0>;
1866 compatible = "ti,mux-clock";
1867 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1868 ti,bit-shift = <24>;
1869 reg = <0x1904>;
1870 };
1871
1872 mcasp6_aux_gfclk_mux: mcasp6_aux_gfclk_mux@1904 {
1873 #clock-cells = <0>;
1874 compatible = "ti,mux-clock";
1875 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1876 ti,bit-shift = <22>;
1877 reg = <0x1904>;
1878 };
1879
1880 mcasp7_ahclkx_mux: mcasp7_ahclkx_mux@1908 {
1881 #clock-cells = <0>;
1882 compatible = "ti,mux-clock";
1883 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1884 ti,bit-shift = <24>;
1885 reg = <0x1908>;
1886 };
1887
1888 mcasp7_aux_gfclk_mux: mcasp7_aux_gfclk_mux@1908 {
1889 #clock-cells = <0>;
1890 compatible = "ti,mux-clock";
1891 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1892 ti,bit-shift = <22>;
1893 reg = <0x1908>;
1894 };
1895
1896 mcasp8_ahclkx_mux: mcasp8_ahclkx_mux@1890 {
1897 #clock-cells = <0>;
1898 compatible = "ti,mux-clock";
1899 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atl_clkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>;
1900 ti,bit-shift = <22>;
1901 reg = <0x1890>;
1902 };
1903
1904 mcasp8_aux_gfclk_mux: mcasp8_aux_gfclk_mux@1890 {
1905 #clock-cells = <0>;
1906 compatible = "ti,mux-clock";
1907 clocks = <&per_abe_x1_gfclk2_div>, <&video1_clk2_div>, <&video2_clk2_div>, <&hdmi_clk2_div>;
1908 ti,bit-shift = <24>;
1909 reg = <0x1890>;
1910 };
1911
1912 mmc1_fclk_mux: mmc1_fclk_mux@1328 {
1913 #clock-cells = <0>;
1914 compatible = "ti,mux-clock";
1915 clocks = <&func_128m_clk>, <&dpll_per_m2x2_ck>;
1916 ti,bit-shift = <24>;
1917 reg = <0x1328>;
1918 };
1919
1920 mmc1_fclk_div: mmc1_fclk_div@1328 {
1921 #clock-cells = <0>;
1922 compatible = "ti,divider-clock";
1923 clocks = <&mmc1_fclk_mux>;
1924 ti,bit-shift = <25>;
1925 ti,max-div = <4>;
1926 reg = <0x1328>;
1927 ti,index-power-of-two;
1928 };
1929
1930 mmc2_fclk_mux: mmc2_fclk_mux@1330 {
1931 #clock-cells = <0>;
1932 compatible = "ti,mux-clock";
1933 clocks = <&func_128m_clk>, <&dpll_per_m2x2_ck>;
1934 ti,bit-shift = <24>;
1935 reg = <0x1330>;
1936 };
1937
1938 mmc2_fclk_div: mmc2_fclk_div@1330 {
1939 #clock-cells = <0>;
1940 compatible = "ti,divider-clock";
1941 clocks = <&mmc2_fclk_mux>;
1942 ti,bit-shift = <25>;
1943 ti,max-div = <4>;
1944 reg = <0x1330>;
1945 ti,index-power-of-two;
1946 };
1947
1948 mmc3_gfclk_mux: mmc3_gfclk_mux@1820 {
1949 #clock-cells = <0>;
1950 compatible = "ti,mux-clock";
1951 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
1952 ti,bit-shift = <24>;
1953 reg = <0x1820>;
1954 };
1955
1956 mmc3_gfclk_div: mmc3_gfclk_div@1820 {
1957 #clock-cells = <0>;
1958 compatible = "ti,divider-clock";
1959 clocks = <&mmc3_gfclk_mux>;
1960 ti,bit-shift = <25>;
1961 ti,max-div = <4>;
1962 reg = <0x1820>;
1963 ti,index-power-of-two;
1964 };
1965
1966 mmc4_gfclk_mux: mmc4_gfclk_mux@1828 {
1967 #clock-cells = <0>;
1968 compatible = "ti,mux-clock";
1969 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
1970 ti,bit-shift = <24>;
1971 reg = <0x1828>;
1972 };
1973
1974 mmc4_gfclk_div: mmc4_gfclk_div@1828 {
1975 #clock-cells = <0>;
1976 compatible = "ti,divider-clock";
1977 clocks = <&mmc4_gfclk_mux>;
1978 ti,bit-shift = <25>;
1979 ti,max-div = <4>;
1980 reg = <0x1828>;
1981 ti,index-power-of-two;
1982 };
1983
1984 qspi_gfclk_mux: qspi_gfclk_mux@1838 {
1985 #clock-cells = <0>;
1986 compatible = "ti,mux-clock";
1987 clocks = <&func_128m_clk>, <&dpll_per_h13x2_ck>;
1988 ti,bit-shift = <24>;
1989 reg = <0x1838>;
1990 };
1991
1992 qspi_gfclk_div: qspi_gfclk_div@1838 {
1993 #clock-cells = <0>;
1994 compatible = "ti,divider-clock";
1995 clocks = <&qspi_gfclk_mux>;
1996 ti,bit-shift = <25>;
1997 ti,max-div = <4>;
1998 reg = <0x1838>;
1999 ti,index-power-of-two;
2000 };
2001
2002 timer10_gfclk_mux: timer10_gfclk_mux@1728 {
2003 #clock-cells = <0>;
2004 compatible = "ti,mux-clock";
2005 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2006 ti,bit-shift = <24>;
2007 reg = <0x1728>;
2008 };
2009
2010 timer11_gfclk_mux: timer11_gfclk_mux@1730 {
2011 #clock-cells = <0>;
2012 compatible = "ti,mux-clock";
2013 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2014 ti,bit-shift = <24>;
2015 reg = <0x1730>;
2016 };
2017
2018 timer13_gfclk_mux: timer13_gfclk_mux@17c8 {
2019 #clock-cells = <0>;
2020 compatible = "ti,mux-clock";
2021 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2022 ti,bit-shift = <24>;
2023 reg = <0x17c8>;
2024 };
2025
2026 timer14_gfclk_mux: timer14_gfclk_mux@17d0 {
2027 #clock-cells = <0>;
2028 compatible = "ti,mux-clock";
2029 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2030 ti,bit-shift = <24>;
2031 reg = <0x17d0>;
2032 };
2033
2034 timer15_gfclk_mux: timer15_gfclk_mux@17d8 {
2035 #clock-cells = <0>;
2036 compatible = "ti,mux-clock";
2037 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2038 ti,bit-shift = <24>;
2039 reg = <0x17d8>;
2040 };
2041
2042 timer16_gfclk_mux: timer16_gfclk_mux@1830 {
2043 #clock-cells = <0>;
2044 compatible = "ti,mux-clock";
2045 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2046 ti,bit-shift = <24>;
2047 reg = <0x1830>;
2048 };
2049
2050 timer2_gfclk_mux: timer2_gfclk_mux@1738 {
2051 #clock-cells = <0>;
2052 compatible = "ti,mux-clock";
2053 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2054 ti,bit-shift = <24>;
2055 reg = <0x1738>;
2056 };
2057
2058 timer3_gfclk_mux: timer3_gfclk_mux@1740 {
2059 #clock-cells = <0>;
2060 compatible = "ti,mux-clock";
2061 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2062 ti,bit-shift = <24>;
2063 reg = <0x1740>;
2064 };
2065
2066 timer4_gfclk_mux: timer4_gfclk_mux@1748 {
2067 #clock-cells = <0>;
2068 compatible = "ti,mux-clock";
2069 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2070 ti,bit-shift = <24>;
2071 reg = <0x1748>;
2072 };
2073
2074 timer9_gfclk_mux: timer9_gfclk_mux@1750 {
2075 #clock-cells = <0>;
2076 compatible = "ti,mux-clock";
2077 clocks = <&timer_sys_clk_div>, <&sys_32k_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&abe_giclk_div>, <&video1_div_clk>, <&video2_div_clk>, <&hdmi_div_clk>;
2078 ti,bit-shift = <24>;
2079 reg = <0x1750>;
2080 };
2081
2082 uart1_gfclk_mux: uart1_gfclk_mux@1840 {
2083 #clock-cells = <0>;
2084 compatible = "ti,mux-clock";
2085 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2086 ti,bit-shift = <24>;
2087 reg = <0x1840>;
2088 };
2089
2090 uart2_gfclk_mux: uart2_gfclk_mux@1848 {
2091 #clock-cells = <0>;
2092 compatible = "ti,mux-clock";
2093 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2094 ti,bit-shift = <24>;
2095 reg = <0x1848>;
2096 };
2097
2098 uart3_gfclk_mux: uart3_gfclk_mux@1850 {
2099 #clock-cells = <0>;
2100 compatible = "ti,mux-clock";
2101 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2102 ti,bit-shift = <24>;
2103 reg = <0x1850>;
2104 };
2105
2106 uart4_gfclk_mux: uart4_gfclk_mux@1858 {
2107 #clock-cells = <0>;
2108 compatible = "ti,mux-clock";
2109 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2110 ti,bit-shift = <24>;
2111 reg = <0x1858>;
2112 };
2113
2114 uart5_gfclk_mux: uart5_gfclk_mux@1870 {
2115 #clock-cells = <0>;
2116 compatible = "ti,mux-clock";
2117 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2118 ti,bit-shift = <24>;
2119 reg = <0x1870>;
2120 };
2121
2122 uart7_gfclk_mux: uart7_gfclk_mux@18d0 {
2123 #clock-cells = <0>;
2124 compatible = "ti,mux-clock";
2125 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2126 ti,bit-shift = <24>;
2127 reg = <0x18d0>;
2128 };
2129
2130 uart8_gfclk_mux: uart8_gfclk_mux@18e0 {
2131 #clock-cells = <0>;
2132 compatible = "ti,mux-clock";
2133 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2134 ti,bit-shift = <24>;
2135 reg = <0x18e0>;
2136 };
2137
2138 uart9_gfclk_mux: uart9_gfclk_mux@18e8 {
2139 #clock-cells = <0>;
2140 compatible = "ti,mux-clock";
2141 clocks = <&func_48m_fclk>, <&dpll_per_m2x2_ck>;
2142 ti,bit-shift = <24>;
2143 reg = <0x18e8>;
2144 };
2145
2146 vip1_gclk_mux: vip1_gclk_mux@1020 { 1454 vip1_gclk_mux: vip1_gclk_mux@1020 {
2147 #clock-cells = <0>; 1455 #clock-cells = <0>;
2148 compatible = "ti,mux-clock"; 1456 compatible = "ti,mux-clock";
@@ -2216,3 +1524,210 @@
2216 reg = <0x6c4>; 1524 reg = <0x6c4>;
2217 }; 1525 };
2218}; 1526};
1527
1528&cm_core_aon {
1529 mpu_cm: mpu_cm@300 {
1530 compatible = "ti,omap4-cm";
1531 reg = <0x300 0x100>;
1532 #address-cells = <1>;
1533 #size-cells = <1>;
1534 ranges = <0 0x300 0x100>;
1535
1536 mpu_clkctrl: clk@20 {
1537 compatible = "ti,clkctrl";
1538 reg = <0x20 0x4>;
1539 #clock-cells = <2>;
1540 };
1541 };
1542
1543 ipu_cm: ipu_cm@500 {
1544 compatible = "ti,omap4-cm";
1545 reg = <0x500 0x100>;
1546 #address-cells = <1>;
1547 #size-cells = <1>;
1548 ranges = <0 0x500 0x100>;
1549
1550 ipu_clkctrl: clk@40 {
1551 compatible = "ti,clkctrl";
1552 reg = <0x40 0x44>;
1553 #clock-cells = <2>;
1554 };
1555 };
1556
1557 rtc_cm: rtc_cm@700 {
1558 compatible = "ti,omap4-cm";
1559 reg = <0x700 0x100>;
1560 #address-cells = <1>;
1561 #size-cells = <1>;
1562 ranges = <0 0x700 0x100>;
1563
1564 rtc_clkctrl: clk@40 {
1565 compatible = "ti,clkctrl";
1566 reg = <0x40 0x8>;
1567 #clock-cells = <2>;
1568 };
1569 };
1570
1571};
1572
1573&cm_core {
1574 coreaon_cm: coreaon_cm@600 {
1575 compatible = "ti,omap4-cm";
1576 reg = <0x600 0x100>;
1577 #address-cells = <1>;
1578 #size-cells = <1>;
1579 ranges = <0 0x600 0x100>;
1580
1581 coreaon_clkctrl: clk@20 {
1582 compatible = "ti,clkctrl";
1583 reg = <0x20 0x1c>;
1584 #clock-cells = <2>;
1585 };
1586 };
1587
1588 l3main1_cm: l3main1_cm@700 {
1589 compatible = "ti,omap4-cm";
1590 reg = <0x700 0x100>;
1591 #address-cells = <1>;
1592 #size-cells = <1>;
1593 ranges = <0 0x700 0x100>;
1594
1595 l3main1_clkctrl: clk@20 {
1596 compatible = "ti,clkctrl";
1597 reg = <0x20 0x74>;
1598 #clock-cells = <2>;
1599 };
1600 };
1601
1602 dma_cm: dma_cm@a00 {
1603 compatible = "ti,omap4-cm";
1604 reg = <0xa00 0x100>;
1605 #address-cells = <1>;
1606 #size-cells = <1>;
1607 ranges = <0 0xa00 0x100>;
1608
1609 dma_clkctrl: clk@20 {
1610 compatible = "ti,clkctrl";
1611 reg = <0x20 0x4>;
1612 #clock-cells = <2>;
1613 };
1614 };
1615
1616 emif_cm: emif_cm@b00 {
1617 compatible = "ti,omap4-cm";
1618 reg = <0xb00 0x100>;
1619 #address-cells = <1>;
1620 #size-cells = <1>;
1621 ranges = <0 0xb00 0x100>;
1622
1623 emif_clkctrl: clk@20 {
1624 compatible = "ti,clkctrl";
1625 reg = <0x20 0x4>;
1626 #clock-cells = <2>;
1627 };
1628 };
1629
1630 atl_cm: atl_cm@c00 {
1631 compatible = "ti,omap4-cm";
1632 reg = <0xc00 0x100>;
1633 #address-cells = <1>;
1634 #size-cells = <1>;
1635 ranges = <0 0xc00 0x100>;
1636
1637 atl_clkctrl: clk@0 {
1638 compatible = "ti,clkctrl";
1639 reg = <0x0 0x4>;
1640 #clock-cells = <2>;
1641 };
1642 };
1643
1644 l4cfg_cm: l4cfg_cm@d00 {
1645 compatible = "ti,omap4-cm";
1646 reg = <0xd00 0x100>;
1647 #address-cells = <1>;
1648 #size-cells = <1>;
1649 ranges = <0 0xd00 0x100>;
1650
1651 l4cfg_clkctrl: clk@20 {
1652 compatible = "ti,clkctrl";
1653 reg = <0x20 0x84>;
1654 #clock-cells = <2>;
1655 };
1656 };
1657
1658 l3instr_cm: l3instr_cm@e00 {
1659 compatible = "ti,omap4-cm";
1660 reg = <0xe00 0x100>;
1661 #address-cells = <1>;
1662 #size-cells = <1>;
1663 ranges = <0 0xe00 0x100>;
1664
1665 l3instr_clkctrl: clk@20 {
1666 compatible = "ti,clkctrl";
1667 reg = <0x20 0xc>;
1668 #clock-cells = <2>;
1669 };
1670 };
1671
1672 dss_cm: dss_cm@1100 {
1673 compatible = "ti,omap4-cm";
1674 reg = <0x1100 0x100>;
1675 #address-cells = <1>;
1676 #size-cells = <1>;
1677 ranges = <0 0x1100 0x100>;
1678
1679 dss_clkctrl: clk@20 {
1680 compatible = "ti,clkctrl";
1681 reg = <0x20 0x14>;
1682 #clock-cells = <2>;
1683 };
1684 };
1685
1686 l3init_cm: l3init_cm@1300 {
1687 compatible = "ti,omap4-cm";
1688 reg = <0x1300 0x100>;
1689 #address-cells = <1>;
1690 #size-cells = <1>;
1691 ranges = <0 0x1300 0x100>;
1692
1693 l3init_clkctrl: clk@20 {
1694 compatible = "ti,clkctrl";
1695 reg = <0x20 0xd4>;
1696 #clock-cells = <2>;
1697 };
1698 };
1699
1700 l4per_cm: l4per_cm@1700 {
1701 compatible = "ti,omap4-cm";
1702 reg = <0x1700 0x300>;
1703 #address-cells = <1>;
1704 #size-cells = <1>;
1705 ranges = <0 0x1700 0x300>;
1706
1707 l4per_clkctrl: clk@0 {
1708 compatible = "ti,clkctrl";
1709 reg = <0x0 0x20c>;
1710 #clock-cells = <2>;
1711
1712 assigned-clocks = <&l4per_clkctrl DRA7_MCASP3_CLKCTRL 24>;
1713 assigned-clock-parents = <&abe_24m_fclk>;
1714 };
1715 };
1716
1717};
1718
1719&prm {
1720 wkupaon_cm: wkupaon_cm@1800 {
1721 compatible = "ti,omap4-cm";
1722 reg = <0x1800 0x100>;
1723 #address-cells = <1>;
1724 #size-cells = <1>;
1725 ranges = <0 0x1800 0x100>;
1726
1727 wkupaon_clkctrl: clk@20 {
1728 compatible = "ti,clkctrl";
1729 reg = <0x20 0x6c>;
1730 #clock-cells = <2>;
1731 };
1732 };
1733};
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index cc1a07a3620f..18a11f689a1d 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -9,6 +9,7 @@
9#include <dt-bindings/gpio/gpio.h> 9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
11#include <dt-bindings/pinctrl/omap.h> 11#include <dt-bindings/pinctrl/omap.h>
12#include <dt-bindings/clock/omap4.h>
12 13
13/ { 14/ {
14 compatible = "ti,omap4430", "ti,omap4"; 15 compatible = "ti,omap4430", "ti,omap4";
@@ -143,8 +144,11 @@
143 ranges = <0 0x4a000000 0x1000000>; 144 ranges = <0 0x4a000000 0x1000000>;
144 145
145 cm1: cm1@4000 { 146 cm1: cm1@4000 {
146 compatible = "ti,omap4-cm1"; 147 compatible = "ti,omap4-cm1", "simple-bus";
147 reg = <0x4000 0x2000>; 148 reg = <0x4000 0x2000>;
149 #address-cells = <1>;
150 #size-cells = <1>;
151 ranges = <0 0x4000 0x2000>;
148 152
149 cm1_clocks: clocks { 153 cm1_clocks: clocks {
150 #address-cells = <1>; 154 #address-cells = <1>;
@@ -156,8 +160,11 @@
156 }; 160 };
157 161
158 cm2: cm2@8000 { 162 cm2: cm2@8000 {
159 compatible = "ti,omap4-cm2"; 163 compatible = "ti,omap4-cm2", "simple-bus";
160 reg = <0x8000 0x3000>; 164 reg = <0x8000 0x3000>;
165 #address-cells = <1>;
166 #size-cells = <1>;
167 ranges = <0 0x8000 0x3000>;
161 168
162 cm2_clocks: clocks { 169 cm2_clocks: clocks {
163 #address-cells = <1>; 170 #address-cells = <1>;
@@ -243,6 +250,9 @@
243 compatible = "ti,omap4-prm"; 250 compatible = "ti,omap4-prm";
244 reg = <0x6000 0x3000>; 251 reg = <0x6000 0x3000>;
245 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 252 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
253 #address-cells = <1>;
254 #size-cells = <1>;
255 ranges = <0 0x6000 0x3000>;
246 256
247 prm_clocks: clocks { 257 prm_clocks: clocks {
248 #address-cells = <1>; 258 #address-cells = <1>;
@@ -674,7 +684,7 @@
674 reg-names = "sys", "gdd"; 684 reg-names = "sys", "gdd";
675 ti,hwmods = "hsi"; 685 ti,hwmods = "hsi";
676 686
677 clocks = <&hsi_fck>; 687 clocks = <&l3_init_clkctrl OMAP4_HSI_CLKCTRL 0>;
678 clock-names = "hsi_fck"; 688 clock-names = "hsi_fck";
679 689
680 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 690 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
@@ -973,6 +983,8 @@
973 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 983 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
974 ti,hwmods = "timer1"; 984 ti,hwmods = "timer1";
975 ti,timer-alwon; 985 ti,timer-alwon;
986 clocks = <&l4_wkup_clkctrl OMAP4_TIMER1_CLKCTRL 24>;
987 clock-names = "fck";
976 }; 988 };
977 989
978 timer2: timer@48032000 { 990 timer2: timer@48032000 {
@@ -1202,7 +1214,7 @@
1202 reg = <0x58000000 0x80>; 1214 reg = <0x58000000 0x80>;
1203 status = "disabled"; 1215 status = "disabled";
1204 ti,hwmods = "dss_core"; 1216 ti,hwmods = "dss_core";
1205 clocks = <&dss_dss_clk>; 1217 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>;
1206 clock-names = "fck"; 1218 clock-names = "fck";
1207 #address-cells = <1>; 1219 #address-cells = <1>;
1208 #size-cells = <1>; 1220 #size-cells = <1>;
@@ -1213,7 +1225,7 @@
1213 reg = <0x58001000 0x1000>; 1225 reg = <0x58001000 0x1000>;
1214 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 1226 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
1215 ti,hwmods = "dss_dispc"; 1227 ti,hwmods = "dss_dispc";
1216 clocks = <&dss_dss_clk>; 1228 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>;
1217 clock-names = "fck"; 1229 clock-names = "fck";
1218 }; 1230 };
1219 1231
@@ -1222,7 +1234,7 @@
1222 reg = <0x58002000 0x1000>; 1234 reg = <0x58002000 0x1000>;
1223 status = "disabled"; 1235 status = "disabled";
1224 ti,hwmods = "dss_rfbi"; 1236 ti,hwmods = "dss_rfbi";
1225 clocks = <&dss_dss_clk>, <&l3_div_ck>; 1237 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>, <&l3_div_ck>;
1226 clock-names = "fck", "ick"; 1238 clock-names = "fck", "ick";
1227 }; 1239 };
1228 1240
@@ -1231,7 +1243,7 @@
1231 reg = <0x58003000 0x1000>; 1243 reg = <0x58003000 0x1000>;
1232 status = "disabled"; 1244 status = "disabled";
1233 ti,hwmods = "dss_venc"; 1245 ti,hwmods = "dss_venc";
1234 clocks = <&dss_tv_clk>; 1246 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 11>;
1235 clock-names = "fck"; 1247 clock-names = "fck";
1236 }; 1248 };
1237 1249
@@ -1244,7 +1256,8 @@
1244 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 1256 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
1245 status = "disabled"; 1257 status = "disabled";
1246 ti,hwmods = "dss_dsi1"; 1258 ti,hwmods = "dss_dsi1";
1247 clocks = <&dss_dss_clk>, <&dss_sys_clk>; 1259 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
1260 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
1248 clock-names = "fck", "sys_clk"; 1261 clock-names = "fck", "sys_clk";
1249 }; 1262 };
1250 1263
@@ -1257,7 +1270,8 @@
1257 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 1270 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1258 status = "disabled"; 1271 status = "disabled";
1259 ti,hwmods = "dss_dsi2"; 1272 ti,hwmods = "dss_dsi2";
1260 clocks = <&dss_dss_clk>, <&dss_sys_clk>; 1273 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 8>,
1274 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
1261 clock-names = "fck", "sys_clk"; 1275 clock-names = "fck", "sys_clk";
1262 }; 1276 };
1263 1277
@@ -1271,7 +1285,8 @@
1271 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 1285 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
1272 status = "disabled"; 1286 status = "disabled";
1273 ti,hwmods = "dss_hdmi"; 1287 ti,hwmods = "dss_hdmi";
1274 clocks = <&dss_48mhz_clk>, <&dss_sys_clk>; 1288 clocks = <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 9>,
1289 <&l3_dss_clkctrl OMAP4_DSS_CORE_CLKCTRL 10>;
1275 clock-names = "fck", "sys_clk"; 1290 clock-names = "fck", "sys_clk";
1276 dmas = <&sdma 76>; 1291 dmas = <&sdma 76>;
1277 dma-names = "audio_tx"; 1292 dma-names = "audio_tx";
@@ -1280,4 +1295,4 @@
1280 }; 1295 };
1281}; 1296};
1282 1297
1283/include/ "omap44xx-clocks.dtsi" 1298#include "omap44xx-clocks.dtsi"
diff --git a/arch/arm/boot/dts/omap44xx-clocks.dtsi b/arch/arm/boot/dts/omap44xx-clocks.dtsi
index 05732ed4f50f..279ff2f419df 100644
--- a/arch/arm/boot/dts/omap44xx-clocks.dtsi
+++ b/arch/arm/boot/dts/omap44xx-clocks.dtsi
@@ -174,14 +174,6 @@
174 ti,index-power-of-two; 174 ti,index-power-of-two;
175 }; 175 };
176 176
177 aess_fclk: aess_fclk@528 {
178 #clock-cells = <0>;
179 compatible = "ti,divider-clock";
180 clocks = <&abe_clk>;
181 ti,bit-shift = <24>;
182 ti,max-div = <2>;
183 reg = <0x0528>;
184 };
185 177
186 dpll_abe_m3x2_ck: dpll_abe_m3x2_ck@1f4 { 178 dpll_abe_m3x2_ck: dpll_abe_m3x2_ck@1f4 {
187 #clock-cells = <0>; 179 #clock-cells = <0>;
@@ -464,7 +456,7 @@
464 ocp_abe_iclk: ocp_abe_iclk@528 { 456 ocp_abe_iclk: ocp_abe_iclk@528 {
465 #clock-cells = <0>; 457 #clock-cells = <0>;
466 compatible = "ti,divider-clock"; 458 compatible = "ti,divider-clock";
467 clocks = <&aess_fclk>; 459 clocks = <&abe_clkctrl OMAP4_AESS_CLKCTRL 24>;
468 ti,bit-shift = <24>; 460 ti,bit-shift = <24>;
469 reg = <0x0528>; 461 reg = <0x0528>;
470 ti,dividers = <2>, <1>; 462 ti,dividers = <2>, <1>;
@@ -478,156 +470,13 @@
478 clock-div = <4>; 470 clock-div = <4>;
479 }; 471 };
480 472
481 dmic_sync_mux_ck: dmic_sync_mux_ck@538 {
482 #clock-cells = <0>;
483 compatible = "ti,mux-clock";
484 clocks = <&abe_24m_fclk>, <&syc_clk_div_ck>, <&func_24m_clk>;
485 ti,bit-shift = <25>;
486 reg = <0x0538>;
487 };
488
489 func_dmic_abe_gfclk: func_dmic_abe_gfclk@538 {
490 #clock-cells = <0>;
491 compatible = "ti,mux-clock";
492 clocks = <&dmic_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
493 ti,bit-shift = <24>;
494 reg = <0x0538>;
495 };
496
497 mcasp_sync_mux_ck: mcasp_sync_mux_ck@540 {
498 #clock-cells = <0>;
499 compatible = "ti,mux-clock";
500 clocks = <&abe_24m_fclk>, <&syc_clk_div_ck>, <&func_24m_clk>;
501 ti,bit-shift = <25>;
502 reg = <0x0540>;
503 };
504
505 func_mcasp_abe_gfclk: func_mcasp_abe_gfclk@540 {
506 #clock-cells = <0>;
507 compatible = "ti,mux-clock";
508 clocks = <&mcasp_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
509 ti,bit-shift = <24>;
510 reg = <0x0540>;
511 };
512
513 mcbsp1_sync_mux_ck: mcbsp1_sync_mux_ck@548 {
514 #clock-cells = <0>;
515 compatible = "ti,mux-clock";
516 clocks = <&abe_24m_fclk>, <&syc_clk_div_ck>, <&func_24m_clk>;
517 ti,bit-shift = <25>;
518 reg = <0x0548>;
519 };
520
521 func_mcbsp1_gfclk: func_mcbsp1_gfclk@548 {
522 #clock-cells = <0>;
523 compatible = "ti,mux-clock";
524 clocks = <&mcbsp1_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
525 ti,bit-shift = <24>;
526 reg = <0x0548>;
527 };
528
529 mcbsp2_sync_mux_ck: mcbsp2_sync_mux_ck@550 {
530 #clock-cells = <0>;
531 compatible = "ti,mux-clock";
532 clocks = <&abe_24m_fclk>, <&syc_clk_div_ck>, <&func_24m_clk>;
533 ti,bit-shift = <25>;
534 reg = <0x0550>;
535 };
536
537 func_mcbsp2_gfclk: func_mcbsp2_gfclk@550 {
538 #clock-cells = <0>;
539 compatible = "ti,mux-clock";
540 clocks = <&mcbsp2_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
541 ti,bit-shift = <24>;
542 reg = <0x0550>;
543 };
544
545 mcbsp3_sync_mux_ck: mcbsp3_sync_mux_ck@558 {
546 #clock-cells = <0>;
547 compatible = "ti,mux-clock";
548 clocks = <&abe_24m_fclk>, <&syc_clk_div_ck>, <&func_24m_clk>;
549 ti,bit-shift = <25>;
550 reg = <0x0558>;
551 };
552
553 func_mcbsp3_gfclk: func_mcbsp3_gfclk@558 {
554 #clock-cells = <0>;
555 compatible = "ti,mux-clock";
556 clocks = <&mcbsp3_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
557 ti,bit-shift = <24>;
558 reg = <0x0558>;
559 };
560
561 slimbus1_fclk_1: slimbus1_fclk_1@560 {
562 #clock-cells = <0>;
563 compatible = "ti,gate-clock";
564 clocks = <&func_24m_clk>;
565 ti,bit-shift = <9>;
566 reg = <0x0560>;
567 };
568
569 slimbus1_fclk_0: slimbus1_fclk_0@560 {
570 #clock-cells = <0>;
571 compatible = "ti,gate-clock";
572 clocks = <&abe_24m_fclk>;
573 ti,bit-shift = <8>;
574 reg = <0x0560>;
575 };
576
577 slimbus1_fclk_2: slimbus1_fclk_2@560 {
578 #clock-cells = <0>;
579 compatible = "ti,gate-clock";
580 clocks = <&pad_clks_ck>;
581 ti,bit-shift = <10>;
582 reg = <0x0560>;
583 };
584
585 slimbus1_slimbus_clk: slimbus1_slimbus_clk@560 {
586 #clock-cells = <0>;
587 compatible = "ti,gate-clock";
588 clocks = <&slimbus_clk>;
589 ti,bit-shift = <11>;
590 reg = <0x0560>;
591 };
592
593 timer5_sync_mux: timer5_sync_mux@568 {
594 #clock-cells = <0>;
595 compatible = "ti,mux-clock";
596 clocks = <&syc_clk_div_ck>, <&sys_32k_ck>;
597 ti,bit-shift = <24>;
598 reg = <0x0568>;
599 };
600
601 timer6_sync_mux: timer6_sync_mux@570 {
602 #clock-cells = <0>;
603 compatible = "ti,mux-clock";
604 clocks = <&syc_clk_div_ck>, <&sys_32k_ck>;
605 ti,bit-shift = <24>;
606 reg = <0x0570>;
607 };
608
609 timer7_sync_mux: timer7_sync_mux@578 {
610 #clock-cells = <0>;
611 compatible = "ti,mux-clock";
612 clocks = <&syc_clk_div_ck>, <&sys_32k_ck>;
613 ti,bit-shift = <24>;
614 reg = <0x0578>;
615 };
616
617 timer8_sync_mux: timer8_sync_mux@580 {
618 #clock-cells = <0>;
619 compatible = "ti,mux-clock";
620 clocks = <&syc_clk_div_ck>, <&sys_32k_ck>;
621 ti,bit-shift = <24>;
622 reg = <0x0580>;
623 };
624
625 dummy_ck: dummy_ck { 473 dummy_ck: dummy_ck {
626 #clock-cells = <0>; 474 #clock-cells = <0>;
627 compatible = "fixed-clock"; 475 compatible = "fixed-clock";
628 clock-frequency = <0>; 476 clock-frequency = <0>;
629 }; 477 };
630}; 478};
479
631&prm_clocks { 480&prm_clocks {
632 sys_clkin_ck: sys_clkin_ck@110 { 481 sys_clkin_ck: sys_clkin_ck@110 {
633 #clock-cells = <0>; 482 #clock-cells = <0>;
@@ -675,22 +524,6 @@
675 ti,max-div = <2>; 524 ti,max-div = <2>;
676 }; 525 };
677 526
678 gpio1_dbclk: gpio1_dbclk@1838 {
679 #clock-cells = <0>;
680 compatible = "ti,gate-clock";
681 clocks = <&sys_32k_ck>;
682 ti,bit-shift = <8>;
683 reg = <0x1838>;
684 };
685
686 dmt1_clk_mux: dmt1_clk_mux@1840 {
687 #clock-cells = <0>;
688 compatible = "ti,mux-clock";
689 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
690 ti,bit-shift = <24>;
691 reg = <0x1840>;
692 };
693
694 usim_ck: usim_ck@1858 { 527 usim_ck: usim_ck@1858 {
695 #clock-cells = <0>; 528 #clock-cells = <0>;
696 compatible = "ti,divider-clock"; 529 compatible = "ti,divider-clock";
@@ -708,45 +541,10 @@
708 reg = <0x1858>; 541 reg = <0x1858>;
709 }; 542 };
710 543
711 pmd_stm_clock_mux_ck: pmd_stm_clock_mux_ck@1a20 {
712 #clock-cells = <0>;
713 compatible = "ti,mux-clock";
714 clocks = <&sys_clkin_ck>, <&dpll_core_m6x2_ck>, <&tie_low_clock_ck>;
715 ti,bit-shift = <20>;
716 reg = <0x1a20>;
717 };
718
719 pmd_trace_clk_mux_ck: pmd_trace_clk_mux_ck@1a20 {
720 #clock-cells = <0>;
721 compatible = "ti,mux-clock";
722 clocks = <&sys_clkin_ck>, <&dpll_core_m6x2_ck>, <&tie_low_clock_ck>;
723 ti,bit-shift = <22>;
724 reg = <0x1a20>;
725 };
726
727 stm_clk_div_ck: stm_clk_div_ck@1a20 {
728 #clock-cells = <0>;
729 compatible = "ti,divider-clock";
730 clocks = <&pmd_stm_clock_mux_ck>;
731 ti,bit-shift = <27>;
732 ti,max-div = <64>;
733 reg = <0x1a20>;
734 ti,index-power-of-two;
735 };
736
737 trace_clk_div_div_ck: trace_clk_div_div_ck@1a20 {
738 #clock-cells = <0>;
739 compatible = "ti,divider-clock";
740 clocks = <&pmd_trace_clk_mux_ck>;
741 ti,bit-shift = <24>;
742 reg = <0x1a20>;
743 ti,dividers = <0>, <1>, <2>, <0>, <4>;
744 };
745
746 trace_clk_div_ck: trace_clk_div_ck { 544 trace_clk_div_ck: trace_clk_div_ck {
747 #clock-cells = <0>; 545 #clock-cells = <0>;
748 compatible = "ti,clkdm-gate-clock"; 546 compatible = "ti,clkdm-gate-clock";
749 clocks = <&trace_clk_div_div_ck>; 547 clocks = <&emu_sys_clkctrl OMAP4_DEBUGSS_CLKCTRL 24>;
750 }; 548 };
751}; 549};
752 550
@@ -975,155 +773,6 @@
975 ti,max-div = <2>; 773 ti,max-div = <2>;
976 }; 774 };
977 775
978 dss_sys_clk: dss_sys_clk@1120 {
979 #clock-cells = <0>;
980 compatible = "ti,gate-clock";
981 clocks = <&syc_clk_div_ck>;
982 ti,bit-shift = <10>;
983 reg = <0x1120>;
984 };
985
986 dss_tv_clk: dss_tv_clk@1120 {
987 #clock-cells = <0>;
988 compatible = "ti,gate-clock";
989 clocks = <&extalt_clkin_ck>;
990 ti,bit-shift = <11>;
991 reg = <0x1120>;
992 };
993
994 dss_dss_clk: dss_dss_clk@1120 {
995 #clock-cells = <0>;
996 compatible = "ti,gate-clock";
997 clocks = <&dpll_per_m5x2_ck>;
998 ti,bit-shift = <8>;
999 reg = <0x1120>;
1000 ti,set-rate-parent;
1001 };
1002
1003 dss_48mhz_clk: dss_48mhz_clk@1120 {
1004 #clock-cells = <0>;
1005 compatible = "ti,gate-clock";
1006 clocks = <&func_48mc_fclk>;
1007 ti,bit-shift = <9>;
1008 reg = <0x1120>;
1009 };
1010
1011 fdif_fck: fdif_fck@1028 {
1012 #clock-cells = <0>;
1013 compatible = "ti,divider-clock";
1014 clocks = <&dpll_per_m4x2_ck>;
1015 ti,bit-shift = <24>;
1016 ti,max-div = <4>;
1017 reg = <0x1028>;
1018 ti,index-power-of-two;
1019 };
1020
1021 gpio2_dbclk: gpio2_dbclk@1460 {
1022 #clock-cells = <0>;
1023 compatible = "ti,gate-clock";
1024 clocks = <&sys_32k_ck>;
1025 ti,bit-shift = <8>;
1026 reg = <0x1460>;
1027 };
1028
1029 gpio3_dbclk: gpio3_dbclk@1468 {
1030 #clock-cells = <0>;
1031 compatible = "ti,gate-clock";
1032 clocks = <&sys_32k_ck>;
1033 ti,bit-shift = <8>;
1034 reg = <0x1468>;
1035 };
1036
1037 gpio4_dbclk: gpio4_dbclk@1470 {
1038 #clock-cells = <0>;
1039 compatible = "ti,gate-clock";
1040 clocks = <&sys_32k_ck>;
1041 ti,bit-shift = <8>;
1042 reg = <0x1470>;
1043 };
1044
1045 gpio5_dbclk: gpio5_dbclk@1478 {
1046 #clock-cells = <0>;
1047 compatible = "ti,gate-clock";
1048 clocks = <&sys_32k_ck>;
1049 ti,bit-shift = <8>;
1050 reg = <0x1478>;
1051 };
1052
1053 gpio6_dbclk: gpio6_dbclk@1480 {
1054 #clock-cells = <0>;
1055 compatible = "ti,gate-clock";
1056 clocks = <&sys_32k_ck>;
1057 ti,bit-shift = <8>;
1058 reg = <0x1480>;
1059 };
1060
1061 sgx_clk_mux: sgx_clk_mux@1220 {
1062 #clock-cells = <0>;
1063 compatible = "ti,mux-clock";
1064 clocks = <&dpll_core_m7x2_ck>, <&dpll_per_m7x2_ck>;
1065 ti,bit-shift = <24>;
1066 reg = <0x1220>;
1067 };
1068
1069 hsi_fck: hsi_fck@1338 {
1070 #clock-cells = <0>;
1071 compatible = "ti,divider-clock";
1072 clocks = <&dpll_per_m2x2_ck>;
1073 ti,bit-shift = <24>;
1074 ti,max-div = <4>;
1075 reg = <0x1338>;
1076 ti,index-power-of-two;
1077 };
1078
1079 iss_ctrlclk: iss_ctrlclk@1020 {
1080 #clock-cells = <0>;
1081 compatible = "ti,gate-clock";
1082 clocks = <&func_96m_fclk>;
1083 ti,bit-shift = <8>;
1084 reg = <0x1020>;
1085 };
1086
1087 mcbsp4_sync_mux_ck: mcbsp4_sync_mux_ck@14e0 {
1088 #clock-cells = <0>;
1089 compatible = "ti,mux-clock";
1090 clocks = <&func_96m_fclk>, <&per_abe_nc_fclk>;
1091 ti,bit-shift = <25>;
1092 reg = <0x14e0>;
1093 };
1094
1095 per_mcbsp4_gfclk: per_mcbsp4_gfclk@14e0 {
1096 #clock-cells = <0>;
1097 compatible = "ti,mux-clock";
1098 clocks = <&mcbsp4_sync_mux_ck>, <&pad_clks_ck>;
1099 ti,bit-shift = <24>;
1100 reg = <0x14e0>;
1101 };
1102
1103 hsmmc1_fclk: hsmmc1_fclk@1328 {
1104 #clock-cells = <0>;
1105 compatible = "ti,mux-clock";
1106 clocks = <&func_64m_fclk>, <&func_96m_fclk>;
1107 ti,bit-shift = <24>;
1108 reg = <0x1328>;
1109 };
1110
1111 hsmmc2_fclk: hsmmc2_fclk@1330 {
1112 #clock-cells = <0>;
1113 compatible = "ti,mux-clock";
1114 clocks = <&func_64m_fclk>, <&func_96m_fclk>;
1115 ti,bit-shift = <24>;
1116 reg = <0x1330>;
1117 };
1118
1119 ocp2scp_usb_phy_phy_48m: ocp2scp_usb_phy_phy_48m@13e0 {
1120 #clock-cells = <0>;
1121 compatible = "ti,gate-clock";
1122 clocks = <&func_48m_fclk>;
1123 ti,bit-shift = <8>;
1124 reg = <0x13e0>;
1125 };
1126
1127 sha2md5_fck: sha2md5_fck@15c8 { 776 sha2md5_fck: sha2md5_fck@15c8 {
1128 #clock-cells = <0>; 777 #clock-cells = <0>;
1129 compatible = "ti,gate-clock"; 778 compatible = "ti,gate-clock";
@@ -1132,222 +781,6 @@
1132 reg = <0x15c8>; 781 reg = <0x15c8>;
1133 }; 782 };
1134 783
1135 slimbus2_fclk_1: slimbus2_fclk_1@1538 {
1136 #clock-cells = <0>;
1137 compatible = "ti,gate-clock";
1138 clocks = <&per_abe_24m_fclk>;
1139 ti,bit-shift = <9>;
1140 reg = <0x1538>;
1141 };
1142
1143 slimbus2_fclk_0: slimbus2_fclk_0@1538 {
1144 #clock-cells = <0>;
1145 compatible = "ti,gate-clock";
1146 clocks = <&func_24mc_fclk>;
1147 ti,bit-shift = <8>;
1148 reg = <0x1538>;
1149 };
1150
1151 slimbus2_slimbus_clk: slimbus2_slimbus_clk@1538 {
1152 #clock-cells = <0>;
1153 compatible = "ti,gate-clock";
1154 clocks = <&pad_slimbus_core_clks_ck>;
1155 ti,bit-shift = <10>;
1156 reg = <0x1538>;
1157 };
1158
1159 smartreflex_core_fck: smartreflex_core_fck@638 {
1160 #clock-cells = <0>;
1161 compatible = "ti,gate-clock";
1162 clocks = <&l4_wkup_clk_mux_ck>;
1163 ti,bit-shift = <1>;
1164 reg = <0x0638>;
1165 };
1166
1167 smartreflex_iva_fck: smartreflex_iva_fck@630 {
1168 #clock-cells = <0>;
1169 compatible = "ti,gate-clock";
1170 clocks = <&l4_wkup_clk_mux_ck>;
1171 ti,bit-shift = <1>;
1172 reg = <0x0630>;
1173 };
1174
1175 smartreflex_mpu_fck: smartreflex_mpu_fck@628 {
1176 #clock-cells = <0>;
1177 compatible = "ti,gate-clock";
1178 clocks = <&l4_wkup_clk_mux_ck>;
1179 ti,bit-shift = <1>;
1180 reg = <0x0628>;
1181 };
1182
1183 cm2_dm10_mux: cm2_dm10_mux@1428 {
1184 #clock-cells = <0>;
1185 compatible = "ti,mux-clock";
1186 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1187 ti,bit-shift = <24>;
1188 reg = <0x1428>;
1189 };
1190
1191 cm2_dm11_mux: cm2_dm11_mux@1430 {
1192 #clock-cells = <0>;
1193 compatible = "ti,mux-clock";
1194 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1195 ti,bit-shift = <24>;
1196 reg = <0x1430>;
1197 };
1198
1199 cm2_dm2_mux: cm2_dm2_mux@1438 {
1200 #clock-cells = <0>;
1201 compatible = "ti,mux-clock";
1202 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1203 ti,bit-shift = <24>;
1204 reg = <0x1438>;
1205 };
1206
1207 cm2_dm3_mux: cm2_dm3_mux@1440 {
1208 #clock-cells = <0>;
1209 compatible = "ti,mux-clock";
1210 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1211 ti,bit-shift = <24>;
1212 reg = <0x1440>;
1213 };
1214
1215 cm2_dm4_mux: cm2_dm4_mux@1448 {
1216 #clock-cells = <0>;
1217 compatible = "ti,mux-clock";
1218 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1219 ti,bit-shift = <24>;
1220 reg = <0x1448>;
1221 };
1222
1223 cm2_dm9_mux: cm2_dm9_mux@1450 {
1224 #clock-cells = <0>;
1225 compatible = "ti,mux-clock";
1226 clocks = <&sys_clkin_ck>, <&sys_32k_ck>;
1227 ti,bit-shift = <24>;
1228 reg = <0x1450>;
1229 };
1230
1231 usb_host_fs_fck: usb_host_fs_fck@13d0 {
1232 #clock-cells = <0>;
1233 compatible = "ti,gate-clock";
1234 clocks = <&func_48mc_fclk>;
1235 ti,bit-shift = <1>;
1236 reg = <0x13d0>;
1237 };
1238
1239 utmi_p1_gfclk: utmi_p1_gfclk@1358 {
1240 #clock-cells = <0>;
1241 compatible = "ti,mux-clock";
1242 clocks = <&init_60m_fclk>, <&xclk60mhsp1_ck>;
1243 ti,bit-shift = <24>;
1244 reg = <0x1358>;
1245 };
1246
1247 usb_host_hs_utmi_p1_clk: usb_host_hs_utmi_p1_clk@1358 {
1248 #clock-cells = <0>;
1249 compatible = "ti,gate-clock";
1250 clocks = <&utmi_p1_gfclk>;
1251 ti,bit-shift = <8>;
1252 reg = <0x1358>;
1253 };
1254
1255 utmi_p2_gfclk: utmi_p2_gfclk@1358 {
1256 #clock-cells = <0>;
1257 compatible = "ti,mux-clock";
1258 clocks = <&init_60m_fclk>, <&xclk60mhsp2_ck>;
1259 ti,bit-shift = <25>;
1260 reg = <0x1358>;
1261 };
1262
1263 usb_host_hs_utmi_p2_clk: usb_host_hs_utmi_p2_clk@1358 {
1264 #clock-cells = <0>;
1265 compatible = "ti,gate-clock";
1266 clocks = <&utmi_p2_gfclk>;
1267 ti,bit-shift = <9>;
1268 reg = <0x1358>;
1269 };
1270
1271 usb_host_hs_utmi_p3_clk: usb_host_hs_utmi_p3_clk@1358 {
1272 #clock-cells = <0>;
1273 compatible = "ti,gate-clock";
1274 clocks = <&init_60m_fclk>;
1275 ti,bit-shift = <10>;
1276 reg = <0x1358>;
1277 };
1278
1279 usb_host_hs_hsic480m_p1_clk: usb_host_hs_hsic480m_p1_clk@1358 {
1280 #clock-cells = <0>;
1281 compatible = "ti,gate-clock";
1282 clocks = <&dpll_usb_m2_ck>;
1283 ti,bit-shift = <13>;
1284 reg = <0x1358>;
1285 };
1286
1287 usb_host_hs_hsic60m_p1_clk: usb_host_hs_hsic60m_p1_clk@1358 {
1288 #clock-cells = <0>;
1289 compatible = "ti,gate-clock";
1290 clocks = <&init_60m_fclk>;
1291 ti,bit-shift = <11>;
1292 reg = <0x1358>;
1293 };
1294
1295 usb_host_hs_hsic60m_p2_clk: usb_host_hs_hsic60m_p2_clk@1358 {
1296 #clock-cells = <0>;
1297 compatible = "ti,gate-clock";
1298 clocks = <&init_60m_fclk>;
1299 ti,bit-shift = <12>;
1300 reg = <0x1358>;
1301 };
1302
1303 usb_host_hs_hsic480m_p2_clk: usb_host_hs_hsic480m_p2_clk@1358 {
1304 #clock-cells = <0>;
1305 compatible = "ti,gate-clock";
1306 clocks = <&dpll_usb_m2_ck>;
1307 ti,bit-shift = <14>;
1308 reg = <0x1358>;
1309 };
1310
1311 usb_host_hs_func48mclk: usb_host_hs_func48mclk@1358 {
1312 #clock-cells = <0>;
1313 compatible = "ti,gate-clock";
1314 clocks = <&func_48mc_fclk>;
1315 ti,bit-shift = <15>;
1316 reg = <0x1358>;
1317 };
1318
1319 usb_host_hs_fck: usb_host_hs_fck@1358 {
1320 #clock-cells = <0>;
1321 compatible = "ti,gate-clock";
1322 clocks = <&init_60m_fclk>;
1323 ti,bit-shift = <1>;
1324 reg = <0x1358>;
1325 };
1326
1327 otg_60m_gfclk: otg_60m_gfclk@1360 {
1328 #clock-cells = <0>;
1329 compatible = "ti,mux-clock";
1330 clocks = <&utmi_phy_clkout_ck>, <&xclk60motg_ck>;
1331 ti,bit-shift = <24>;
1332 reg = <0x1360>;
1333 };
1334
1335 usb_otg_hs_xclk: usb_otg_hs_xclk@1360 {
1336 #clock-cells = <0>;
1337 compatible = "ti,gate-clock";
1338 clocks = <&otg_60m_gfclk>;
1339 ti,bit-shift = <8>;
1340 reg = <0x1360>;
1341 };
1342
1343 usb_otg_hs_ick: usb_otg_hs_ick@1360 {
1344 #clock-cells = <0>;
1345 compatible = "ti,gate-clock";
1346 clocks = <&l3_div_ck>;
1347 ti,bit-shift = <0>;
1348 reg = <0x1360>;
1349 };
1350
1351 usb_phy_cm_clk32k: usb_phy_cm_clk32k@640 { 784 usb_phy_cm_clk32k: usb_phy_cm_clk32k@640 {
1352 #clock-cells = <0>; 785 #clock-cells = <0>;
1353 compatible = "ti,gate-clock"; 786 compatible = "ti,gate-clock";
@@ -1355,44 +788,12 @@
1355 ti,bit-shift = <8>; 788 ti,bit-shift = <8>;
1356 reg = <0x0640>; 789 reg = <0x0640>;
1357 }; 790 };
1358
1359 usb_tll_hs_usb_ch2_clk: usb_tll_hs_usb_ch2_clk@1368 {
1360 #clock-cells = <0>;
1361 compatible = "ti,gate-clock";
1362 clocks = <&init_60m_fclk>;
1363 ti,bit-shift = <10>;
1364 reg = <0x1368>;
1365 };
1366
1367 usb_tll_hs_usb_ch0_clk: usb_tll_hs_usb_ch0_clk@1368 {
1368 #clock-cells = <0>;
1369 compatible = "ti,gate-clock";
1370 clocks = <&init_60m_fclk>;
1371 ti,bit-shift = <8>;
1372 reg = <0x1368>;
1373 };
1374
1375 usb_tll_hs_usb_ch1_clk: usb_tll_hs_usb_ch1_clk@1368 {
1376 #clock-cells = <0>;
1377 compatible = "ti,gate-clock";
1378 clocks = <&init_60m_fclk>;
1379 ti,bit-shift = <9>;
1380 reg = <0x1368>;
1381 };
1382
1383 usb_tll_hs_ick: usb_tll_hs_ick@1368 {
1384 #clock-cells = <0>;
1385 compatible = "ti,gate-clock";
1386 clocks = <&l4_div_ck>;
1387 ti,bit-shift = <0>;
1388 reg = <0x1368>;
1389 };
1390}; 791};
1391 792
1392&cm2_clockdomains { 793&cm2_clockdomains {
1393 l3_init_clkdm: l3_init_clkdm { 794 l3_init_clkdm: l3_init_clkdm {
1394 compatible = "ti,clockdomain"; 795 compatible = "ti,clockdomain";
1395 clocks = <&dpll_usb_ck>, <&usb_host_fs_fck>; 796 clocks = <&dpll_usb_ck>;
1396 }; 797 };
1397}; 798};
1398 799
@@ -1631,3 +1032,291 @@
1631 reg = <0x0224>; 1032 reg = <0x0224>;
1632 }; 1033 };
1633}; 1034};
1035
1036&cm1 {
1037 mpuss_cm: mpuss_cm@300 {
1038 compatible = "ti,omap4-cm";
1039 reg = <0x300 0x100>;
1040 #address-cells = <1>;
1041 #size-cells = <1>;
1042 ranges = <0 0x300 0x100>;
1043
1044 mpuss_clkctrl: clk@20 {
1045 compatible = "ti,clkctrl";
1046 reg = <0x20 0x4>;
1047 #clock-cells = <2>;
1048 };
1049 };
1050
1051 tesla_cm: tesla_cm@400 {
1052 compatible = "ti,omap4-cm";
1053 reg = <0x400 0x100>;
1054 #address-cells = <1>;
1055 #size-cells = <1>;
1056 ranges = <0 0x400 0x100>;
1057
1058 tesla_clkctrl: clk@20 {
1059 compatible = "ti,clkctrl";
1060 reg = <0x20 0x4>;
1061 #clock-cells = <2>;
1062 };
1063 };
1064
1065 abe_cm: abe_cm@500 {
1066 compatible = "ti,omap4-cm";
1067 reg = <0x500 0x100>;
1068 #address-cells = <1>;
1069 #size-cells = <1>;
1070 ranges = <0 0x500 0x100>;
1071
1072 abe_clkctrl: clk@20 {
1073 compatible = "ti,clkctrl";
1074 reg = <0x20 0x6c>;
1075 #clock-cells = <2>;
1076 };
1077 };
1078
1079};
1080
1081&cm2 {
1082 l4_ao_cm: l4_ao_cm@600 {
1083 compatible = "ti,omap4-cm";
1084 reg = <0x600 0x100>;
1085 #address-cells = <1>;
1086 #size-cells = <1>;
1087 ranges = <0 0x600 0x100>;
1088
1089 l4_ao_clkctrl: clk@20 {
1090 compatible = "ti,clkctrl";
1091 reg = <0x20 0x1c>;
1092 #clock-cells = <2>;
1093 };
1094 };
1095
1096 l3_1_cm: l3_1_cm@700 {
1097 compatible = "ti,omap4-cm";
1098 reg = <0x700 0x100>;
1099 #address-cells = <1>;
1100 #size-cells = <1>;
1101 ranges = <0 0x700 0x100>;
1102
1103 l3_1_clkctrl: clk@20 {
1104 compatible = "ti,clkctrl";
1105 reg = <0x20 0x4>;
1106 #clock-cells = <2>;
1107 };
1108 };
1109
1110 l3_2_cm: l3_2_cm@800 {
1111 compatible = "ti,omap4-cm";
1112 reg = <0x800 0x100>;
1113 #address-cells = <1>;
1114 #size-cells = <1>;
1115 ranges = <0 0x800 0x100>;
1116
1117 l3_2_clkctrl: clk@20 {
1118 compatible = "ti,clkctrl";
1119 reg = <0x20 0x14>;
1120 #clock-cells = <2>;
1121 };
1122 };
1123
1124 ducati_cm: ducati_cm@900 {
1125 compatible = "ti,omap4-cm";
1126 reg = <0x900 0x100>;
1127 #address-cells = <1>;
1128 #size-cells = <1>;
1129 ranges = <0 0x900 0x100>;
1130
1131 ducati_clkctrl: clk@20 {
1132 compatible = "ti,clkctrl";
1133 reg = <0x20 0x4>;
1134 #clock-cells = <2>;
1135 };
1136 };
1137
1138 l3_dma_cm: l3_dma_cm@a00 {
1139 compatible = "ti,omap4-cm";
1140 reg = <0xa00 0x100>;
1141 #address-cells = <1>;
1142 #size-cells = <1>;
1143 ranges = <0 0xa00 0x100>;
1144
1145 l3_dma_clkctrl: clk@20 {
1146 compatible = "ti,clkctrl";
1147 reg = <0x20 0x4>;
1148 #clock-cells = <2>;
1149 };
1150 };
1151
1152 l3_emif_cm: l3_emif_cm@b00 {
1153 compatible = "ti,omap4-cm";
1154 reg = <0xb00 0x100>;
1155 #address-cells = <1>;
1156 #size-cells = <1>;
1157 ranges = <0 0xb00 0x100>;
1158
1159 l3_emif_clkctrl: clk@20 {
1160 compatible = "ti,clkctrl";
1161 reg = <0x20 0x1c>;
1162 #clock-cells = <2>;
1163 };
1164 };
1165
1166 d2d_cm: d2d_cm@c00 {
1167 compatible = "ti,omap4-cm";
1168 reg = <0xc00 0x100>;
1169 #address-cells = <1>;
1170 #size-cells = <1>;
1171 ranges = <0 0xc00 0x100>;
1172
1173 d2d_clkctrl: clk@20 {
1174 compatible = "ti,clkctrl";
1175 reg = <0x20 0x4>;
1176 #clock-cells = <2>;
1177 };
1178 };
1179
1180 l4_cfg_cm: l4_cfg_cm@d00 {
1181 compatible = "ti,omap4-cm";
1182 reg = <0xd00 0x100>;
1183 #address-cells = <1>;
1184 #size-cells = <1>;
1185 ranges = <0 0xd00 0x100>;
1186
1187 l4_cfg_clkctrl: clk@20 {
1188 compatible = "ti,clkctrl";
1189 reg = <0x20 0x14>;
1190 #clock-cells = <2>;
1191 };
1192 };
1193
1194 l3_instr_cm: l3_instr_cm@e00 {
1195 compatible = "ti,omap4-cm";
1196 reg = <0xe00 0x100>;
1197 #address-cells = <1>;
1198 #size-cells = <1>;
1199 ranges = <0 0xe00 0x100>;
1200
1201 l3_instr_clkctrl: clk@20 {
1202 compatible = "ti,clkctrl";
1203 reg = <0x20 0x24>;
1204 #clock-cells = <2>;
1205 };
1206 };
1207
1208 ivahd_cm: ivahd_cm@f00 {
1209 compatible = "ti,omap4-cm";
1210 reg = <0xf00 0x100>;
1211 #address-cells = <1>;
1212 #size-cells = <1>;
1213 ranges = <0 0xf00 0x100>;
1214
1215 ivahd_clkctrl: clk@20 {
1216 compatible = "ti,clkctrl";
1217 reg = <0x20 0xc>;
1218 #clock-cells = <2>;
1219 };
1220 };
1221
1222 iss_cm: iss_cm@1000 {
1223 compatible = "ti,omap4-cm";
1224 reg = <0x1000 0x100>;
1225 #address-cells = <1>;
1226 #size-cells = <1>;
1227 ranges = <0 0x1000 0x100>;
1228
1229 iss_clkctrl: clk@20 {
1230 compatible = "ti,clkctrl";
1231 reg = <0x20 0xc>;
1232 #clock-cells = <2>;
1233 };
1234 };
1235
1236 l3_dss_cm: l3_dss_cm@1100 {
1237 compatible = "ti,omap4-cm";
1238 reg = <0x1100 0x100>;
1239 #address-cells = <1>;
1240 #size-cells = <1>;
1241 ranges = <0 0x1100 0x100>;
1242
1243 l3_dss_clkctrl: clk@20 {
1244 compatible = "ti,clkctrl";
1245 reg = <0x20 0x4>;
1246 #clock-cells = <2>;
1247 };
1248 };
1249
1250 l3_gfx_cm: l3_gfx_cm@1200 {
1251 compatible = "ti,omap4-cm";
1252 reg = <0x1200 0x100>;
1253 #address-cells = <1>;
1254 #size-cells = <1>;
1255 ranges = <0 0x1200 0x100>;
1256
1257 l3_gfx_clkctrl: clk@20 {
1258 compatible = "ti,clkctrl";
1259 reg = <0x20 0x4>;
1260 #clock-cells = <2>;
1261 };
1262 };
1263
1264 l3_init_cm: l3_init_cm@1300 {
1265 compatible = "ti,omap4-cm";
1266 reg = <0x1300 0x100>;
1267 #address-cells = <1>;
1268 #size-cells = <1>;
1269 ranges = <0 0x1300 0x100>;
1270
1271 l3_init_clkctrl: clk@20 {
1272 compatible = "ti,clkctrl";
1273 reg = <0x20 0xc4>;
1274 #clock-cells = <2>;
1275 };
1276 };
1277
1278 l4_per_cm: l4_per_cm@1400 {
1279 compatible = "ti,omap4-cm";
1280 reg = <0x1400 0x200>;
1281 #address-cells = <1>;
1282 #size-cells = <1>;
1283 ranges = <0 0x1400 0x200>;
1284
1285 l4_per_clkctrl: clk@20 {
1286 compatible = "ti,clkctrl";
1287 reg = <0x20 0x144>;
1288 #clock-cells = <2>;
1289 };
1290 };
1291
1292};
1293
1294&prm {
1295 l4_wkup_cm: l4_wkup_cm@1800 {
1296 compatible = "ti,omap4-cm";
1297 reg = <0x1800 0x100>;
1298 #address-cells = <1>;
1299 #size-cells = <1>;
1300 ranges = <0 0x1800 0x100>;
1301
1302 l4_wkup_clkctrl: clk@20 {
1303 compatible = "ti,clkctrl";
1304 reg = <0x20 0x5c>;
1305 #clock-cells = <2>;
1306 };
1307 };
1308
1309 emu_sys_cm: emu_sys_cm@1a00 {
1310 compatible = "ti,omap4-cm";
1311 reg = <0x1a00 0x100>;
1312 #address-cells = <1>;
1313 #size-cells = <1>;
1314 ranges = <0 0x1a00 0x100>;
1315
1316 emu_sys_clkctrl: clk@20 {
1317 compatible = "ti,clkctrl";
1318 reg = <0x20 0x4>;
1319 #clock-cells = <2>;
1320 };
1321 };
1322};
diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index 51a7fb3d7b9a..35d4298da83d 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -10,6 +10,7 @@
10#include <dt-bindings/gpio/gpio.h> 10#include <dt-bindings/gpio/gpio.h>
11#include <dt-bindings/interrupt-controller/arm-gic.h> 11#include <dt-bindings/interrupt-controller/arm-gic.h>
12#include <dt-bindings/pinctrl/omap.h> 12#include <dt-bindings/pinctrl/omap.h>
13#include <dt-bindings/clock/omap5.h>
13 14
14/ { 15/ {
15 #address-cells = <2>; 16 #address-cells = <2>;
@@ -201,8 +202,12 @@
201 }; 202 };
202 203
203 cm_core_aon: cm_core_aon@4000 { 204 cm_core_aon: cm_core_aon@4000 {
204 compatible = "ti,omap5-cm-core-aon"; 205 compatible = "ti,omap5-cm-core-aon",
206 "simple-bus";
205 reg = <0x4000 0x2000>; 207 reg = <0x4000 0x2000>;
208 #address-cells = <1>;
209 #size-cells = <1>;
210 ranges = <0 0x4000 0x2000>;
206 211
207 cm_core_aon_clocks: clocks { 212 cm_core_aon_clocks: clocks {
208 #address-cells = <1>; 213 #address-cells = <1>;
@@ -214,8 +219,11 @@
214 }; 219 };
215 220
216 cm_core: cm_core@8000 { 221 cm_core: cm_core@8000 {
217 compatible = "ti,omap5-cm-core"; 222 compatible = "ti,omap5-cm-core", "simple-bus";
218 reg = <0x8000 0x3000>; 223 reg = <0x8000 0x3000>;
224 #address-cells = <1>;
225 #size-cells = <1>;
226 ranges = <0 0x8000 0x3000>;
219 227
220 cm_core_clocks: clocks { 228 cm_core_clocks: clocks {
221 #address-cells = <1>; 229 #address-cells = <1>;
@@ -240,9 +248,12 @@
240 }; 248 };
241 249
242 prm: prm@6000 { 250 prm: prm@6000 {
243 compatible = "ti,omap5-prm"; 251 compatible = "ti,omap5-prm", "simple-bus";
244 reg = <0x6000 0x3000>; 252 reg = <0x6000 0x3000>;
245 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 253 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
254 #address-cells = <1>;
255 #size-cells = <1>;
256 ranges = <0 0x6000 0x3000>;
246 257
247 prm_clocks: clocks { 258 prm_clocks: clocks {
248 #address-cells = <1>; 259 #address-cells = <1>;
@@ -734,6 +745,8 @@
734 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>; 745 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
735 ti,hwmods = "timer1"; 746 ti,hwmods = "timer1";
736 ti,timer-alwon; 747 ti,timer-alwon;
748 clocks = <&wkupaon_clkctrl OMAP5_TIMER1_CLKCTRL 24>;
749 clock-names = "fck";
737 }; 750 };
738 751
739 timer2: timer@48032000 { 752 timer2: timer@48032000 {
@@ -893,7 +906,8 @@
893 compatible = "ti,omap-usb2"; 906 compatible = "ti,omap-usb2";
894 reg = <0x4a084000 0x7c>; 907 reg = <0x4a084000 0x7c>;
895 syscon-phy-power = <&scm_conf 0x300>; 908 syscon-phy-power = <&scm_conf 0x300>;
896 clocks = <&usb_phy_cm_clk32k>, <&usb_otg_ss_refclk960m>; 909 clocks = <&usb_phy_cm_clk32k>,
910 <&l3init_clkctrl OMAP5_USB_OTG_SS_CLKCTRL 8>;
897 clock-names = "wkupclk", "refclk"; 911 clock-names = "wkupclk", "refclk";
898 #phy-cells = <0>; 912 #phy-cells = <0>;
899 }; 913 };
@@ -907,7 +921,7 @@
907 syscon-phy-power = <&scm_conf 0x370>; 921 syscon-phy-power = <&scm_conf 0x370>;
908 clocks = <&usb_phy_cm_clk32k>, 922 clocks = <&usb_phy_cm_clk32k>,
909 <&sys_clkin>, 923 <&sys_clkin>,
910 <&usb_otg_ss_refclk960m>; 924 <&l3init_clkctrl OMAP5_USB_OTG_SS_CLKCTRL 8>;
911 clock-names = "wkupclk", 925 clock-names = "wkupclk",
912 "sysclk", 926 "sysclk",
913 "refclk"; 927 "refclk";
@@ -976,7 +990,8 @@
976 <0x4A096800 0x40>; /* pll_ctrl */ 990 <0x4A096800 0x40>; /* pll_ctrl */
977 reg-names = "phy_rx", "phy_tx", "pll_ctrl"; 991 reg-names = "phy_rx", "phy_tx", "pll_ctrl";
978 syscon-phy-power = <&scm_conf 0x374>; 992 syscon-phy-power = <&scm_conf 0x374>;
979 clocks = <&sys_clkin>, <&sata_ref_clk>; 993 clocks = <&sys_clkin>,
994 <&l3init_clkctrl OMAP5_SATA_CLKCTRL 8>;
980 clock-names = "sysclk", "refclk"; 995 clock-names = "sysclk", "refclk";
981 #phy-cells = <0>; 996 #phy-cells = <0>;
982 }; 997 };
@@ -988,7 +1003,7 @@
988 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>; 1003 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
989 phys = <&sata_phy>; 1004 phys = <&sata_phy>;
990 phy-names = "sata-phy"; 1005 phy-names = "sata-phy";
991 clocks = <&sata_ref_clk>; 1006 clocks = <&l3init_clkctrl OMAP5_SATA_CLKCTRL 8>;
992 ti,hwmods = "sata"; 1007 ti,hwmods = "sata";
993 ports-implemented = <0x1>; 1008 ports-implemented = <0x1>;
994 }; 1009 };
@@ -998,7 +1013,7 @@
998 reg = <0x58000000 0x80>; 1013 reg = <0x58000000 0x80>;
999 status = "disabled"; 1014 status = "disabled";
1000 ti,hwmods = "dss_core"; 1015 ti,hwmods = "dss_core";
1001 clocks = <&dss_dss_clk>; 1016 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>;
1002 clock-names = "fck"; 1017 clock-names = "fck";
1003 #address-cells = <1>; 1018 #address-cells = <1>;
1004 #size-cells = <1>; 1019 #size-cells = <1>;
@@ -1009,7 +1024,7 @@
1009 reg = <0x58001000 0x1000>; 1024 reg = <0x58001000 0x1000>;
1010 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>; 1025 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
1011 ti,hwmods = "dss_dispc"; 1026 ti,hwmods = "dss_dispc";
1012 clocks = <&dss_dss_clk>; 1027 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>;
1013 clock-names = "fck"; 1028 clock-names = "fck";
1014 }; 1029 };
1015 1030
@@ -1018,7 +1033,7 @@
1018 reg = <0x58002000 0x100>; 1033 reg = <0x58002000 0x100>;
1019 status = "disabled"; 1034 status = "disabled";
1020 ti,hwmods = "dss_rfbi"; 1035 ti,hwmods = "dss_rfbi";
1021 clocks = <&dss_dss_clk>, <&l3_iclk_div>; 1036 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>, <&l3_iclk_div>;
1022 clock-names = "fck", "ick"; 1037 clock-names = "fck", "ick";
1023 }; 1038 };
1024 1039
@@ -1031,7 +1046,8 @@
1031 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>; 1046 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
1032 status = "disabled"; 1047 status = "disabled";
1033 ti,hwmods = "dss_dsi1"; 1048 ti,hwmods = "dss_dsi1";
1034 clocks = <&dss_dss_clk>, <&dss_sys_clk>; 1049 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>,
1050 <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>;
1035 clock-names = "fck", "sys_clk"; 1051 clock-names = "fck", "sys_clk";
1036 }; 1052 };
1037 1053
@@ -1044,7 +1060,8 @@
1044 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; 1060 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
1045 status = "disabled"; 1061 status = "disabled";
1046 ti,hwmods = "dss_dsi2"; 1062 ti,hwmods = "dss_dsi2";
1047 clocks = <&dss_dss_clk>, <&dss_sys_clk>; 1063 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 8>,
1064 <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>;
1048 clock-names = "fck", "sys_clk"; 1065 clock-names = "fck", "sys_clk";
1049 }; 1066 };
1050 1067
@@ -1058,7 +1075,8 @@
1058 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>; 1075 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
1059 status = "disabled"; 1076 status = "disabled";
1060 ti,hwmods = "dss_hdmi"; 1077 ti,hwmods = "dss_hdmi";
1061 clocks = <&dss_48mhz_clk>, <&dss_sys_clk>; 1078 clocks = <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 9>,
1079 <&dss_clkctrl OMAP5_DSS_CORE_CLKCTRL 10>;
1062 clock-names = "fck", "sys_clk"; 1080 clock-names = "fck", "sys_clk";
1063 dmas = <&sdma 76>; 1081 dmas = <&sdma 76>;
1064 dma-names = "audio_tx"; 1082 dma-names = "audio_tx";
@@ -1132,7 +1150,7 @@
1132 coefficients = <65 (-1791)>; 1150 coefficients = <65 (-1791)>;
1133}; 1151};
1134 1152
1135/include/ "omap54xx-clocks.dtsi" 1153#include "omap54xx-clocks.dtsi"
1136 1154
1137&gpu_thermal { 1155&gpu_thermal {
1138 coefficients = <117 (-2992)>; 1156 coefficients = <117 (-2992)>;
diff --git a/arch/arm/boot/dts/omap54xx-clocks.dtsi b/arch/arm/boot/dts/omap54xx-clocks.dtsi
index 529193442620..9619a746d657 100644
--- a/arch/arm/boot/dts/omap54xx-clocks.dtsi
+++ b/arch/arm/boot/dts/omap54xx-clocks.dtsi
@@ -432,22 +432,6 @@
432 reg = <0x0528>; 432 reg = <0x0528>;
433 }; 433 };
434 434
435 dmic_sync_mux_ck: dmic_sync_mux_ck@538 {
436 #clock-cells = <0>;
437 compatible = "ti,mux-clock";
438 clocks = <&abe_24m_fclk>, <&dss_syc_gfclk_div>, <&func_24m_clk>;
439 ti,bit-shift = <26>;
440 reg = <0x0538>;
441 };
442
443 dmic_gfclk: dmic_gfclk@538 {
444 #clock-cells = <0>;
445 compatible = "ti,mux-clock";
446 clocks = <&dmic_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
447 ti,bit-shift = <24>;
448 reg = <0x0538>;
449 };
450
451 mcasp_sync_mux_ck: mcasp_sync_mux_ck@540 { 435 mcasp_sync_mux_ck: mcasp_sync_mux_ck@540 {
452 #clock-cells = <0>; 436 #clock-cells = <0>;
453 compatible = "ti,mux-clock"; 437 compatible = "ti,mux-clock";
@@ -464,86 +448,6 @@
464 reg = <0x0540>; 448 reg = <0x0540>;
465 }; 449 };
466 450
467 mcbsp1_sync_mux_ck: mcbsp1_sync_mux_ck@548 {
468 #clock-cells = <0>;
469 compatible = "ti,mux-clock";
470 clocks = <&abe_24m_fclk>, <&dss_syc_gfclk_div>, <&func_24m_clk>;
471 ti,bit-shift = <26>;
472 reg = <0x0548>;
473 };
474
475 mcbsp1_gfclk: mcbsp1_gfclk@548 {
476 #clock-cells = <0>;
477 compatible = "ti,mux-clock";
478 clocks = <&mcbsp1_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
479 ti,bit-shift = <24>;
480 reg = <0x0548>;
481 };
482
483 mcbsp2_sync_mux_ck: mcbsp2_sync_mux_ck@550 {
484 #clock-cells = <0>;
485 compatible = "ti,mux-clock";
486 clocks = <&abe_24m_fclk>, <&dss_syc_gfclk_div>, <&func_24m_clk>;
487 ti,bit-shift = <26>;
488 reg = <0x0550>;
489 };
490
491 mcbsp2_gfclk: mcbsp2_gfclk@550 {
492 #clock-cells = <0>;
493 compatible = "ti,mux-clock";
494 clocks = <&mcbsp2_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
495 ti,bit-shift = <24>;
496 reg = <0x0550>;
497 };
498
499 mcbsp3_sync_mux_ck: mcbsp3_sync_mux_ck@558 {
500 #clock-cells = <0>;
501 compatible = "ti,mux-clock";
502 clocks = <&abe_24m_fclk>, <&dss_syc_gfclk_div>, <&func_24m_clk>;
503 ti,bit-shift = <26>;
504 reg = <0x0558>;
505 };
506
507 mcbsp3_gfclk: mcbsp3_gfclk@558 {
508 #clock-cells = <0>;
509 compatible = "ti,mux-clock";
510 clocks = <&mcbsp3_sync_mux_ck>, <&pad_clks_ck>, <&slimbus_clk>;
511 ti,bit-shift = <24>;
512 reg = <0x0558>;
513 };
514
515 timer5_gfclk_mux: timer5_gfclk_mux@568 {
516 #clock-cells = <0>;
517 compatible = "ti,mux-clock";
518 clocks = <&dss_syc_gfclk_div>, <&sys_32k_ck>;
519 ti,bit-shift = <24>;
520 reg = <0x0568>;
521 };
522
523 timer6_gfclk_mux: timer6_gfclk_mux@570 {
524 #clock-cells = <0>;
525 compatible = "ti,mux-clock";
526 clocks = <&dss_syc_gfclk_div>, <&sys_32k_ck>;
527 ti,bit-shift = <24>;
528 reg = <0x0570>;
529 };
530
531 timer7_gfclk_mux: timer7_gfclk_mux@578 {
532 #clock-cells = <0>;
533 compatible = "ti,mux-clock";
534 clocks = <&dss_syc_gfclk_div>, <&sys_32k_ck>;
535 ti,bit-shift = <24>;
536 reg = <0x0578>;
537 };
538
539 timer8_gfclk_mux: timer8_gfclk_mux@580 {
540 #clock-cells = <0>;
541 compatible = "ti,mux-clock";
542 clocks = <&dss_syc_gfclk_div>, <&sys_32k_ck>;
543 ti,bit-shift = <24>;
544 reg = <0x0580>;
545 };
546
547 dummy_ck: dummy_ck { 451 dummy_ck: dummy_ck {
548 #clock-cells = <0>; 452 #clock-cells = <0>;
549 compatible = "fixed-clock"; 453 compatible = "fixed-clock";
@@ -603,23 +507,8 @@
603 clock-mult = <1>; 507 clock-mult = <1>;
604 clock-div = <1>; 508 clock-div = <1>;
605 }; 509 };
606
607 gpio1_dbclk: gpio1_dbclk@1938 {
608 #clock-cells = <0>;
609 compatible = "ti,gate-clock";
610 clocks = <&sys_32k_ck>;
611 ti,bit-shift = <8>;
612 reg = <0x1938>;
613 };
614
615 timer1_gfclk_mux: timer1_gfclk_mux@1940 {
616 #clock-cells = <0>;
617 compatible = "ti,mux-clock";
618 clocks = <&sys_clkin>, <&sys_32k_ck>;
619 ti,bit-shift = <24>;
620 reg = <0x1940>;
621 };
622}; 510};
511
623&cm_core_clocks { 512&cm_core_clocks {
624 513
625 dpll_per_byp_mux: dpll_per_byp_mux@14c { 514 dpll_per_byp_mux: dpll_per_byp_mux@14c {
@@ -825,95 +714,6 @@
825 ti,dividers = <1>, <8>; 714 ti,dividers = <1>, <8>;
826 }; 715 };
827 716
828 dss_32khz_clk: dss_32khz_clk@1420 {
829 #clock-cells = <0>;
830 compatible = "ti,gate-clock";
831 clocks = <&sys_32k_ck>;
832 ti,bit-shift = <11>;
833 reg = <0x1420>;
834 };
835
836 dss_48mhz_clk: dss_48mhz_clk@1420 {
837 #clock-cells = <0>;
838 compatible = "ti,gate-clock";
839 clocks = <&func_48m_fclk>;
840 ti,bit-shift = <9>;
841 reg = <0x1420>;
842 };
843
844 dss_dss_clk: dss_dss_clk@1420 {
845 #clock-cells = <0>;
846 compatible = "ti,gate-clock";
847 clocks = <&dpll_per_h12x2_ck>;
848 ti,bit-shift = <8>;
849 reg = <0x1420>;
850 ti,set-rate-parent;
851 };
852
853 dss_sys_clk: dss_sys_clk@1420 {
854 #clock-cells = <0>;
855 compatible = "ti,gate-clock";
856 clocks = <&dss_syc_gfclk_div>;
857 ti,bit-shift = <10>;
858 reg = <0x1420>;
859 };
860
861 gpio2_dbclk: gpio2_dbclk@1060 {
862 #clock-cells = <0>;
863 compatible = "ti,gate-clock";
864 clocks = <&sys_32k_ck>;
865 ti,bit-shift = <8>;
866 reg = <0x1060>;
867 };
868
869 gpio3_dbclk: gpio3_dbclk@1068 {
870 #clock-cells = <0>;
871 compatible = "ti,gate-clock";
872 clocks = <&sys_32k_ck>;
873 ti,bit-shift = <8>;
874 reg = <0x1068>;
875 };
876
877 gpio4_dbclk: gpio4_dbclk@1070 {
878 #clock-cells = <0>;
879 compatible = "ti,gate-clock";
880 clocks = <&sys_32k_ck>;
881 ti,bit-shift = <8>;
882 reg = <0x1070>;
883 };
884
885 gpio5_dbclk: gpio5_dbclk@1078 {
886 #clock-cells = <0>;
887 compatible = "ti,gate-clock";
888 clocks = <&sys_32k_ck>;
889 ti,bit-shift = <8>;
890 reg = <0x1078>;
891 };
892
893 gpio6_dbclk: gpio6_dbclk@1080 {
894 #clock-cells = <0>;
895 compatible = "ti,gate-clock";
896 clocks = <&sys_32k_ck>;
897 ti,bit-shift = <8>;
898 reg = <0x1080>;
899 };
900
901 gpio7_dbclk: gpio7_dbclk@1110 {
902 #clock-cells = <0>;
903 compatible = "ti,gate-clock";
904 clocks = <&sys_32k_ck>;
905 ti,bit-shift = <8>;
906 reg = <0x1110>;
907 };
908
909 gpio8_dbclk: gpio8_dbclk@1118 {
910 #clock-cells = <0>;
911 compatible = "ti,gate-clock";
912 clocks = <&sys_32k_ck>;
913 ti,bit-shift = <8>;
914 reg = <0x1118>;
915 };
916
917 iss_ctrlclk: iss_ctrlclk@1320 { 717 iss_ctrlclk: iss_ctrlclk@1320 {
918 #clock-cells = <0>; 718 #clock-cells = <0>;
919 compatible = "ti,gate-clock"; 719 compatible = "ti,gate-clock";
@@ -938,118 +738,6 @@
938 reg = <0x0f20>; 738 reg = <0x0f20>;
939 }; 739 };
940 740
941 mmc1_32khz_clk: mmc1_32khz_clk@1628 {
942 #clock-cells = <0>;
943 compatible = "ti,gate-clock";
944 clocks = <&sys_32k_ck>;
945 ti,bit-shift = <8>;
946 reg = <0x1628>;
947 };
948
949 sata_ref_clk: sata_ref_clk@1688 {
950 #clock-cells = <0>;
951 compatible = "ti,gate-clock";
952 clocks = <&sys_clkin>;
953 ti,bit-shift = <8>;
954 reg = <0x1688>;
955 };
956
957 usb_host_hs_hsic480m_p1_clk: usb_host_hs_hsic480m_p1_clk@1658 {
958 #clock-cells = <0>;
959 compatible = "ti,gate-clock";
960 clocks = <&dpll_usb_m2_ck>;
961 ti,bit-shift = <13>;
962 reg = <0x1658>;
963 };
964
965 usb_host_hs_hsic480m_p2_clk: usb_host_hs_hsic480m_p2_clk@1658 {
966 #clock-cells = <0>;
967 compatible = "ti,gate-clock";
968 clocks = <&dpll_usb_m2_ck>;
969 ti,bit-shift = <14>;
970 reg = <0x1658>;
971 };
972
973 usb_host_hs_hsic480m_p3_clk: usb_host_hs_hsic480m_p3_clk@1658 {
974 #clock-cells = <0>;
975 compatible = "ti,gate-clock";
976 clocks = <&dpll_usb_m2_ck>;
977 ti,bit-shift = <7>;
978 reg = <0x1658>;
979 };
980
981 usb_host_hs_hsic60m_p1_clk: usb_host_hs_hsic60m_p1_clk@1658 {
982 #clock-cells = <0>;
983 compatible = "ti,gate-clock";
984 clocks = <&l3init_60m_fclk>;
985 ti,bit-shift = <11>;
986 reg = <0x1658>;
987 };
988
989 usb_host_hs_hsic60m_p2_clk: usb_host_hs_hsic60m_p2_clk@1658 {
990 #clock-cells = <0>;
991 compatible = "ti,gate-clock";
992 clocks = <&l3init_60m_fclk>;
993 ti,bit-shift = <12>;
994 reg = <0x1658>;
995 };
996
997 usb_host_hs_hsic60m_p3_clk: usb_host_hs_hsic60m_p3_clk@1658 {
998 #clock-cells = <0>;
999 compatible = "ti,gate-clock";
1000 clocks = <&l3init_60m_fclk>;
1001 ti,bit-shift = <6>;
1002 reg = <0x1658>;
1003 };
1004
1005 utmi_p1_gfclk: utmi_p1_gfclk@1658 {
1006 #clock-cells = <0>;
1007 compatible = "ti,mux-clock";
1008 clocks = <&l3init_60m_fclk>, <&xclk60mhsp1_ck>;
1009 ti,bit-shift = <24>;
1010 reg = <0x1658>;
1011 };
1012
1013 usb_host_hs_utmi_p1_clk: usb_host_hs_utmi_p1_clk@1658 {
1014 #clock-cells = <0>;
1015 compatible = "ti,gate-clock";
1016 clocks = <&utmi_p1_gfclk>;
1017 ti,bit-shift = <8>;
1018 reg = <0x1658>;
1019 };
1020
1021 utmi_p2_gfclk: utmi_p2_gfclk@1658 {
1022 #clock-cells = <0>;
1023 compatible = "ti,mux-clock";
1024 clocks = <&l3init_60m_fclk>, <&xclk60mhsp2_ck>;
1025 ti,bit-shift = <25>;
1026 reg = <0x1658>;
1027 };
1028
1029 usb_host_hs_utmi_p2_clk: usb_host_hs_utmi_p2_clk@1658 {
1030 #clock-cells = <0>;
1031 compatible = "ti,gate-clock";
1032 clocks = <&utmi_p2_gfclk>;
1033 ti,bit-shift = <9>;
1034 reg = <0x1658>;
1035 };
1036
1037 usb_host_hs_utmi_p3_clk: usb_host_hs_utmi_p3_clk@1658 {
1038 #clock-cells = <0>;
1039 compatible = "ti,gate-clock";
1040 clocks = <&l3init_60m_fclk>;
1041 ti,bit-shift = <10>;
1042 reg = <0x1658>;
1043 };
1044
1045 usb_otg_ss_refclk960m: usb_otg_ss_refclk960m@16f0 {
1046 #clock-cells = <0>;
1047 compatible = "ti,gate-clock";
1048 clocks = <&dpll_usb_clkdcoldo>;
1049 ti,bit-shift = <8>;
1050 reg = <0x16f0>;
1051 };
1052
1053 usb_phy_cm_clk32k: usb_phy_cm_clk32k@640 { 741 usb_phy_cm_clk32k: usb_phy_cm_clk32k@640 {
1054 #clock-cells = <0>; 742 #clock-cells = <0>;
1055 compatible = "ti,gate-clock"; 743 compatible = "ti,gate-clock";
@@ -1058,30 +746,6 @@
1058 reg = <0x0640>; 746 reg = <0x0640>;
1059 }; 747 };
1060 748
1061 usb_tll_hs_usb_ch0_clk: usb_tll_hs_usb_ch0_clk@1668 {
1062 #clock-cells = <0>;
1063 compatible = "ti,gate-clock";
1064 clocks = <&l3init_60m_fclk>;
1065 ti,bit-shift = <8>;
1066 reg = <0x1668>;
1067 };
1068
1069 usb_tll_hs_usb_ch1_clk: usb_tll_hs_usb_ch1_clk@1668 {
1070 #clock-cells = <0>;
1071 compatible = "ti,gate-clock";
1072 clocks = <&l3init_60m_fclk>;
1073 ti,bit-shift = <9>;
1074 reg = <0x1668>;
1075 };
1076
1077 usb_tll_hs_usb_ch2_clk: usb_tll_hs_usb_ch2_clk@1668 {
1078 #clock-cells = <0>;
1079 compatible = "ti,gate-clock";
1080 clocks = <&l3init_60m_fclk>;
1081 ti,bit-shift = <10>;
1082 reg = <0x1668>;
1083 };
1084
1085 fdif_fclk: fdif_fclk@1328 { 749 fdif_fclk: fdif_fclk@1328 {
1086 #clock-cells = <0>; 750 #clock-cells = <0>;
1087 compatible = "ti,divider-clock"; 751 compatible = "ti,divider-clock";
@@ -1115,88 +779,6 @@
1115 ti,max-div = <2>; 779 ti,max-div = <2>;
1116 reg = <0x1638>; 780 reg = <0x1638>;
1117 }; 781 };
1118
1119 mmc1_fclk_mux: mmc1_fclk_mux@1628 {
1120 #clock-cells = <0>;
1121 compatible = "ti,mux-clock";
1122 clocks = <&func_128m_clk>, <&dpll_per_m2x2_ck>;
1123 ti,bit-shift = <24>;
1124 reg = <0x1628>;
1125 };
1126
1127 mmc1_fclk: mmc1_fclk@1628 {
1128 #clock-cells = <0>;
1129 compatible = "ti,divider-clock";
1130 clocks = <&mmc1_fclk_mux>;
1131 ti,bit-shift = <25>;
1132 ti,max-div = <2>;
1133 reg = <0x1628>;
1134 };
1135
1136 mmc2_fclk_mux: mmc2_fclk_mux@1630 {
1137 #clock-cells = <0>;
1138 compatible = "ti,mux-clock";
1139 clocks = <&func_128m_clk>, <&dpll_per_m2x2_ck>;
1140 ti,bit-shift = <24>;
1141 reg = <0x1630>;
1142 };
1143
1144 mmc2_fclk: mmc2_fclk@1630 {
1145 #clock-cells = <0>;
1146 compatible = "ti,divider-clock";
1147 clocks = <&mmc2_fclk_mux>;
1148 ti,bit-shift = <25>;
1149 ti,max-div = <2>;
1150 reg = <0x1630>;
1151 };
1152
1153 timer10_gfclk_mux: timer10_gfclk_mux@1028 {
1154 #clock-cells = <0>;
1155 compatible = "ti,mux-clock";
1156 clocks = <&sys_clkin>, <&sys_32k_ck>;
1157 ti,bit-shift = <24>;
1158 reg = <0x1028>;
1159 };
1160
1161 timer11_gfclk_mux: timer11_gfclk_mux@1030 {
1162 #clock-cells = <0>;
1163 compatible = "ti,mux-clock";
1164 clocks = <&sys_clkin>, <&sys_32k_ck>;
1165 ti,bit-shift = <24>;
1166 reg = <0x1030>;
1167 };
1168
1169 timer2_gfclk_mux: timer2_gfclk_mux@1038 {
1170 #clock-cells = <0>;
1171 compatible = "ti,mux-clock";
1172 clocks = <&sys_clkin>, <&sys_32k_ck>;
1173 ti,bit-shift = <24>;
1174 reg = <0x1038>;
1175 };
1176
1177 timer3_gfclk_mux: timer3_gfclk_mux@1040 {
1178 #clock-cells = <0>;
1179 compatible = "ti,mux-clock";
1180 clocks = <&sys_clkin>, <&sys_32k_ck>;
1181 ti,bit-shift = <24>;
1182 reg = <0x1040>;
1183 };
1184
1185 timer4_gfclk_mux: timer4_gfclk_mux@1048 {
1186 #clock-cells = <0>;
1187 compatible = "ti,mux-clock";
1188 clocks = <&sys_clkin>, <&sys_32k_ck>;
1189 ti,bit-shift = <24>;
1190 reg = <0x1048>;
1191 };
1192
1193 timer9_gfclk_mux: timer9_gfclk_mux@1050 {
1194 #clock-cells = <0>;
1195 compatible = "ti,mux-clock";
1196 clocks = <&sys_clkin>, <&sys_32k_ck>;
1197 ti,bit-shift = <24>;
1198 reg = <0x1050>;
1199 };
1200}; 782};
1201 783
1202&cm_core_clockdomains { 784&cm_core_clockdomains {
@@ -1394,3 +976,206 @@
1394 reg = <0x021c>; 976 reg = <0x021c>;
1395 }; 977 };
1396}; 978};
979
980&cm_core_aon {
981 mpu_cm: mpu_cm@300 {
982 compatible = "ti,omap4-cm";
983 reg = <0x300 0x100>;
984 #address-cells = <1>;
985 #size-cells = <1>;
986 ranges = <0 0x300 0x100>;
987
988 mpu_clkctrl: clk@20 {
989 compatible = "ti,clkctrl";
990 reg = <0x20 0x4>;
991 #clock-cells = <2>;
992 };
993 };
994
995 dsp_cm: dsp_cm@400 {
996 compatible = "ti,omap4-cm";
997 reg = <0x400 0x100>;
998 #address-cells = <1>;
999 #size-cells = <1>;
1000 ranges = <0 0x400 0x100>;
1001
1002 dsp_clkctrl: clk@20 {
1003 compatible = "ti,clkctrl";
1004 reg = <0x20 0x4>;
1005 #clock-cells = <2>;
1006 };
1007 };
1008
1009 abe_cm: abe_cm@500 {
1010 compatible = "ti,omap4-cm";
1011 reg = <0x500 0x100>;
1012 #address-cells = <1>;
1013 #size-cells = <1>;
1014 ranges = <0 0x500 0x100>;
1015
1016 abe_clkctrl: clk@20 {
1017 compatible = "ti,clkctrl";
1018 reg = <0x20 0x64>;
1019 #clock-cells = <2>;
1020 };
1021 };
1022
1023};
1024
1025&cm_core {
1026 l3main1_cm: l3main1_cm@700 {
1027 compatible = "ti,omap4-cm";
1028 reg = <0x700 0x100>;
1029 #address-cells = <1>;
1030 #size-cells = <1>;
1031 ranges = <0 0x700 0x100>;
1032
1033 l3main1_clkctrl: clk@20 {
1034 compatible = "ti,clkctrl";
1035 reg = <0x20 0x4>;
1036 #clock-cells = <2>;
1037 };
1038 };
1039
1040 l3main2_cm: l3main2_cm@800 {
1041 compatible = "ti,omap4-cm";
1042 reg = <0x800 0x100>;
1043 #address-cells = <1>;
1044 #size-cells = <1>;
1045 ranges = <0 0x800 0x100>;
1046
1047 l3main2_clkctrl: clk@20 {
1048 compatible = "ti,clkctrl";
1049 reg = <0x20 0x4>;
1050 #clock-cells = <2>;
1051 };
1052 };
1053
1054 ipu_cm: ipu_cm@900 {
1055 compatible = "ti,omap4-cm";
1056 reg = <0x900 0x100>;
1057 #address-cells = <1>;
1058 #size-cells = <1>;
1059 ranges = <0 0x900 0x100>;
1060
1061 ipu_clkctrl: clk@20 {
1062 compatible = "ti,clkctrl";
1063 reg = <0x20 0x4>;
1064 #clock-cells = <2>;
1065 };
1066 };
1067
1068 dma_cm: dma_cm@a00 {
1069 compatible = "ti,omap4-cm";
1070 reg = <0xa00 0x100>;
1071 #address-cells = <1>;
1072 #size-cells = <1>;
1073 ranges = <0 0xa00 0x100>;
1074
1075 dma_clkctrl: clk@20 {
1076 compatible = "ti,clkctrl";
1077 reg = <0x20 0x4>;
1078 #clock-cells = <2>;
1079 };
1080 };
1081
1082 emif_cm: emif_cm@b00 {
1083 compatible = "ti,omap4-cm";
1084 reg = <0xb00 0x100>;
1085 #address-cells = <1>;
1086 #size-cells = <1>;
1087 ranges = <0 0xb00 0x100>;
1088
1089 emif_clkctrl: clk@20 {
1090 compatible = "ti,clkctrl";
1091 reg = <0x20 0x1c>;
1092 #clock-cells = <2>;
1093 };
1094 };
1095
1096 l4cfg_cm: l4cfg_cm@d00 {
1097 compatible = "ti,omap4-cm";
1098 reg = <0xd00 0x100>;
1099 #address-cells = <1>;
1100 #size-cells = <1>;
1101 ranges = <0 0xd00 0x100>;
1102
1103 l4cfg_clkctrl: clk@20 {
1104 compatible = "ti,clkctrl";
1105 reg = <0x20 0x14>;
1106 #clock-cells = <2>;
1107 };
1108 };
1109
1110 l3instr_cm: l3instr_cm@e00 {
1111 compatible = "ti,omap4-cm";
1112 reg = <0xe00 0x100>;
1113 #address-cells = <1>;
1114 #size-cells = <1>;
1115 ranges = <0 0xe00 0x100>;
1116
1117 l3instr_clkctrl: clk@20 {
1118 compatible = "ti,clkctrl";
1119 reg = <0x20 0xc>;
1120 #clock-cells = <2>;
1121 };
1122 };
1123
1124 l4per_cm: l4per_cm@1000 {
1125 compatible = "ti,omap4-cm";
1126 reg = <0x1000 0x200>;
1127 #address-cells = <1>;
1128 #size-cells = <1>;
1129 ranges = <0 0x1000 0x200>;
1130
1131 l4per_clkctrl: clk@20 {
1132 compatible = "ti,clkctrl";
1133 reg = <0x20 0x15c>;
1134 #clock-cells = <2>;
1135 };
1136 };
1137
1138 dss_cm: dss_cm@1400 {
1139 compatible = "ti,omap4-cm";
1140 reg = <0x1400 0x100>;
1141 #address-cells = <1>;
1142 #size-cells = <1>;
1143 ranges = <0 0x1400 0x100>;
1144
1145 dss_clkctrl: clk@20 {
1146 compatible = "ti,clkctrl";
1147 reg = <0x20 0x4>;
1148 #clock-cells = <2>;
1149 };
1150 };
1151
1152 l3init_cm: l3init_cm@1600 {
1153 compatible = "ti,omap4-cm";
1154 reg = <0x1600 0x100>;
1155 #address-cells = <1>;
1156 #size-cells = <1>;
1157 ranges = <0 0x1600 0x100>;
1158
1159 l3init_clkctrl: clk@20 {
1160 compatible = "ti,clkctrl";
1161 reg = <0x20 0xd4>;
1162 #clock-cells = <2>;
1163 };
1164 };
1165};
1166
1167&prm {
1168 wkupaon_cm: wkupaon_cm@1900 {
1169 compatible = "ti,omap4-cm";
1170 reg = <0x1900 0x100>;
1171 #address-cells = <1>;
1172 #size-cells = <1>;
1173 ranges = <0 0x1900 0x100>;
1174
1175 wkupaon_clkctrl: clk@20 {
1176 compatible = "ti,clkctrl";
1177 reg = <0x20 0x5c>;
1178 #clock-cells = <2>;
1179 };
1180 };
1181};
diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c
index 518926410b62..b79b1ca9aee9 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -1224,14 +1224,6 @@ ccd_exit:
1224 return 0; 1224 return 0;
1225} 1225}
1226 1226
1227u32 clkdm_xlate_address(struct clockdomain *clkdm)
1228{
1229 if (arch_clkdm->clkdm_xlate_address)
1230 return arch_clkdm->clkdm_xlate_address(clkdm);
1231
1232 return 0;
1233}
1234
1235/** 1227/**
1236 * clkdm_hwmod_enable - add an enabled downstream hwmod to this clkdm 1228 * clkdm_hwmod_enable - add an enabled downstream hwmod to this clkdm
1237 * @clkdm: struct clockdomain * 1229 * @clkdm: struct clockdomain *
diff --git a/arch/arm/mach-omap2/clockdomain.h b/arch/arm/mach-omap2/clockdomain.h
index 827f01e2d0af..24667a5a9dc0 100644
--- a/arch/arm/mach-omap2/clockdomain.h
+++ b/arch/arm/mach-omap2/clockdomain.h
@@ -175,7 +175,6 @@ struct clkdm_ops {
175 void (*clkdm_deny_idle)(struct clockdomain *clkdm); 175 void (*clkdm_deny_idle)(struct clockdomain *clkdm);
176 int (*clkdm_clk_enable)(struct clockdomain *clkdm); 176 int (*clkdm_clk_enable)(struct clockdomain *clkdm);
177 int (*clkdm_clk_disable)(struct clockdomain *clkdm); 177 int (*clkdm_clk_disable)(struct clockdomain *clkdm);
178 u32 (*clkdm_xlate_address)(struct clockdomain *clkdm);
179}; 178};
180 179
181int clkdm_register_platform_funcs(struct clkdm_ops *co); 180int clkdm_register_platform_funcs(struct clkdm_ops *co);
@@ -214,7 +213,6 @@ int clkdm_clk_enable(struct clockdomain *clkdm, struct clk *clk);
214int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk); 213int clkdm_clk_disable(struct clockdomain *clkdm, struct clk *clk);
215int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh); 214int clkdm_hwmod_enable(struct clockdomain *clkdm, struct omap_hwmod *oh);
216int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh); 215int clkdm_hwmod_disable(struct clockdomain *clkdm, struct omap_hwmod *oh);
217u32 clkdm_xlate_address(struct clockdomain *clkdm);
218 216
219extern void __init omap242x_clockdomains_init(void); 217extern void __init omap242x_clockdomains_init(void);
220extern void __init omap243x_clockdomains_init(void); 218extern void __init omap243x_clockdomains_init(void);
diff --git a/arch/arm/mach-omap2/cm.h b/arch/arm/mach-omap2/cm.h
index e833984cc85e..b19e83d53501 100644
--- a/arch/arm/mach-omap2/cm.h
+++ b/arch/arm/mach-omap2/cm.h
@@ -52,6 +52,7 @@ extern void omap2_set_globals_cm(void __iomem *cm, void __iomem *cm2);
52 * @wait_module_idle: ptr to the SoC CM-specific wait_module_idle impl 52 * @wait_module_idle: ptr to the SoC CM-specific wait_module_idle impl
53 * @module_enable: ptr to the SoC CM-specific module_enable impl 53 * @module_enable: ptr to the SoC CM-specific module_enable impl
54 * @module_disable: ptr to the SoC CM-specific module_disable impl 54 * @module_disable: ptr to the SoC CM-specific module_disable impl
55 * @xlate_clkctrl: ptr to the SoC CM-specific clkctrl xlate addr impl
55 */ 56 */
56struct cm_ll_data { 57struct cm_ll_data {
57 int (*split_idlest_reg)(struct clk_omap_reg *idlest_reg, s16 *prcm_inst, 58 int (*split_idlest_reg)(struct clk_omap_reg *idlest_reg, s16 *prcm_inst,
@@ -62,6 +63,7 @@ struct cm_ll_data {
62 u8 idlest_shift); 63 u8 idlest_shift);
63 void (*module_enable)(u8 mode, u8 part, u16 inst, u16 clkctrl_offs); 64 void (*module_enable)(u8 mode, u8 part, u16 inst, u16 clkctrl_offs);
64 void (*module_disable)(u8 part, u16 inst, u16 clkctrl_offs); 65 void (*module_disable)(u8 part, u16 inst, u16 clkctrl_offs);
66 u32 (*xlate_clkctrl)(u8 part, u16 inst, u16 clkctrl_offs);
65}; 67};
66 68
67extern int cm_split_idlest_reg(struct clk_omap_reg *idlest_reg, s16 *prcm_inst, 69extern int cm_split_idlest_reg(struct clk_omap_reg *idlest_reg, s16 *prcm_inst,
@@ -72,8 +74,9 @@ int omap_cm_wait_module_idle(u8 part, s16 prcm_mod, u16 idlest_reg,
72 u8 idlest_shift); 74 u8 idlest_shift);
73int omap_cm_module_enable(u8 mode, u8 part, u16 inst, u16 clkctrl_offs); 75int omap_cm_module_enable(u8 mode, u8 part, u16 inst, u16 clkctrl_offs);
74int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs); 76int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs);
75extern int cm_register(struct cm_ll_data *cld); 77u32 omap_cm_xlate_clkctrl(u8 part, u16 inst, u16 clkctrl_offs);
76extern int cm_unregister(struct cm_ll_data *cld); 78extern int cm_register(const struct cm_ll_data *cld);
79extern int cm_unregister(const struct cm_ll_data *cld);
77int omap_cm_init(void); 80int omap_cm_init(void);
78int omap2_cm_base_init(void); 81int omap2_cm_base_init(void);
79 82
diff --git a/arch/arm/mach-omap2/cm2xxx.c b/arch/arm/mach-omap2/cm2xxx.c
index cd90b4c6a06b..d5b87f42a96e 100644
--- a/arch/arm/mach-omap2/cm2xxx.c
+++ b/arch/arm/mach-omap2/cm2xxx.c
@@ -385,7 +385,7 @@ void omap2xxx_cm_set_mod_dividers(u32 mpu, u32 dsp, u32 gfx, u32 core, u32 mdm)
385 * 385 *
386 */ 386 */
387 387
388static struct cm_ll_data omap2xxx_cm_ll_data = { 388static const struct cm_ll_data omap2xxx_cm_ll_data = {
389 .split_idlest_reg = &omap2xxx_cm_split_idlest_reg, 389 .split_idlest_reg = &omap2xxx_cm_split_idlest_reg,
390 .wait_module_ready = &omap2xxx_cm_wait_module_ready, 390 .wait_module_ready = &omap2xxx_cm_wait_module_ready,
391}; 391};
diff --git a/arch/arm/mach-omap2/cm33xx.c b/arch/arm/mach-omap2/cm33xx.c
index a9e08d89104e..1cc0247a2cb5 100644
--- a/arch/arm/mach-omap2/cm33xx.c
+++ b/arch/arm/mach-omap2/cm33xx.c
@@ -333,6 +333,11 @@ static int am33xx_clkdm_clk_disable(struct clockdomain *clkdm)
333 return 0; 333 return 0;
334} 334}
335 335
336static u32 am33xx_cm_xlate_clkctrl(u8 part, u16 inst, u16 offset)
337{
338 return cm_base.pa + inst + offset;
339}
340
336struct clkdm_ops am33xx_clkdm_operations = { 341struct clkdm_ops am33xx_clkdm_operations = {
337 .clkdm_sleep = am33xx_clkdm_sleep, 342 .clkdm_sleep = am33xx_clkdm_sleep,
338 .clkdm_wakeup = am33xx_clkdm_wakeup, 343 .clkdm_wakeup = am33xx_clkdm_wakeup,
@@ -342,11 +347,12 @@ struct clkdm_ops am33xx_clkdm_operations = {
342 .clkdm_clk_disable = am33xx_clkdm_clk_disable, 347 .clkdm_clk_disable = am33xx_clkdm_clk_disable,
343}; 348};
344 349
345static struct cm_ll_data am33xx_cm_ll_data = { 350static const struct cm_ll_data am33xx_cm_ll_data = {
346 .wait_module_ready = &am33xx_cm_wait_module_ready, 351 .wait_module_ready = &am33xx_cm_wait_module_ready,
347 .wait_module_idle = &am33xx_cm_wait_module_idle, 352 .wait_module_idle = &am33xx_cm_wait_module_idle,
348 .module_enable = &am33xx_cm_module_enable, 353 .module_enable = &am33xx_cm_module_enable,
349 .module_disable = &am33xx_cm_module_disable, 354 .module_disable = &am33xx_cm_module_disable,
355 .xlate_clkctrl = &am33xx_cm_xlate_clkctrl,
350}; 356};
351 357
352int __init am33xx_cm_init(const struct omap_prcm_init_data *data) 358int __init am33xx_cm_init(const struct omap_prcm_init_data *data)
diff --git a/arch/arm/mach-omap2/cm3xxx.c b/arch/arm/mach-omap2/cm3xxx.c
index 961bc478b9de..ec580fd094a6 100644
--- a/arch/arm/mach-omap2/cm3xxx.c
+++ b/arch/arm/mach-omap2/cm3xxx.c
@@ -662,7 +662,7 @@ void omap3_cm_save_scratchpad_contents(u32 *ptr)
662 * 662 *
663 */ 663 */
664 664
665static struct cm_ll_data omap3xxx_cm_ll_data = { 665static const struct cm_ll_data omap3xxx_cm_ll_data = {
666 .split_idlest_reg = &omap3xxx_cm_split_idlest_reg, 666 .split_idlest_reg = &omap3xxx_cm_split_idlest_reg,
667 .wait_module_ready = &omap3xxx_cm_wait_module_ready, 667 .wait_module_ready = &omap3xxx_cm_wait_module_ready,
668}; 668};
diff --git a/arch/arm/mach-omap2/cm_common.c b/arch/arm/mach-omap2/cm_common.c
index 83c6fa74cc31..aff747ecad51 100644
--- a/arch/arm/mach-omap2/cm_common.c
+++ b/arch/arm/mach-omap2/cm_common.c
@@ -29,7 +29,7 @@
29 * common CM functions 29 * common CM functions
30 */ 30 */
31static struct cm_ll_data null_cm_ll_data; 31static struct cm_ll_data null_cm_ll_data;
32static struct cm_ll_data *cm_ll_data = &null_cm_ll_data; 32static const struct cm_ll_data *cm_ll_data = &null_cm_ll_data;
33 33
34/* cm_base: base virtual address of the CM IP block */ 34/* cm_base: base virtual address of the CM IP block */
35struct omap_domain_base cm_base; 35struct omap_domain_base cm_base;
@@ -178,6 +178,16 @@ int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs)
178 return 0; 178 return 0;
179} 179}
180 180
181u32 omap_cm_xlate_clkctrl(u8 part, u16 inst, u16 clkctrl_offs)
182{
183 if (!cm_ll_data->xlate_clkctrl) {
184 WARN_ONCE(1, "cm: %s: no low-level function defined\n",
185 __func__);
186 return 0;
187 }
188 return cm_ll_data->xlate_clkctrl(part, inst, clkctrl_offs);
189}
190
181/** 191/**
182 * cm_register - register per-SoC low-level data with the CM 192 * cm_register - register per-SoC low-level data with the CM
183 * @cld: low-level per-SoC OMAP CM data & function pointers to register 193 * @cld: low-level per-SoC OMAP CM data & function pointers to register
@@ -189,7 +199,7 @@ int omap_cm_module_disable(u8 part, u16 inst, u16 clkctrl_offs)
189 * is NULL, or -EEXIST if cm_register() has already been called 199 * is NULL, or -EEXIST if cm_register() has already been called
190 * without an intervening cm_unregister(). 200 * without an intervening cm_unregister().
191 */ 201 */
192int cm_register(struct cm_ll_data *cld) 202int cm_register(const struct cm_ll_data *cld)
193{ 203{
194 if (!cld) 204 if (!cld)
195 return -EINVAL; 205 return -EINVAL;
@@ -213,7 +223,7 @@ int cm_register(struct cm_ll_data *cld)
213 * -EINVAL if @cld is NULL or if @cld does not match the struct 223 * -EINVAL if @cld is NULL or if @cld does not match the struct
214 * cm_ll_data * previously registered by cm_register(). 224 * cm_ll_data * previously registered by cm_register().
215 */ 225 */
216int cm_unregister(struct cm_ll_data *cld) 226int cm_unregister(const struct cm_ll_data *cld)
217{ 227{
218 if (!cld || cm_ll_data != cld) 228 if (!cld || cm_ll_data != cld)
219 return -EINVAL; 229 return -EINVAL;
diff --git a/arch/arm/mach-omap2/cminst44xx.c b/arch/arm/mach-omap2/cminst44xx.c
index 8774e983bea1..7deefee49fc3 100644
--- a/arch/arm/mach-omap2/cminst44xx.c
+++ b/arch/arm/mach-omap2/cminst44xx.c
@@ -476,12 +476,9 @@ static int omap4_clkdm_clk_disable(struct clockdomain *clkdm)
476 return 0; 476 return 0;
477} 477}
478 478
479static u32 omap4_clkdm_xlate_address(struct clockdomain *clkdm) 479static u32 omap4_cminst_xlate_clkctrl(u8 part, u16 inst, u16 offset)
480{ 480{
481 u32 addr = _cm_bases[clkdm->prcm_partition].pa + clkdm->cm_inst + 481 return _cm_bases[part].pa + inst + offset;
482 clkdm->clkdm_offs;
483
484 return addr;
485} 482}
486 483
487struct clkdm_ops omap4_clkdm_operations = { 484struct clkdm_ops omap4_clkdm_operations = {
@@ -499,7 +496,6 @@ struct clkdm_ops omap4_clkdm_operations = {
499 .clkdm_deny_idle = omap4_clkdm_deny_idle, 496 .clkdm_deny_idle = omap4_clkdm_deny_idle,
500 .clkdm_clk_enable = omap4_clkdm_clk_enable, 497 .clkdm_clk_enable = omap4_clkdm_clk_enable,
501 .clkdm_clk_disable = omap4_clkdm_clk_disable, 498 .clkdm_clk_disable = omap4_clkdm_clk_disable,
502 .clkdm_xlate_address = omap4_clkdm_xlate_address,
503}; 499};
504 500
505struct clkdm_ops am43xx_clkdm_operations = { 501struct clkdm_ops am43xx_clkdm_operations = {
@@ -509,14 +505,14 @@ struct clkdm_ops am43xx_clkdm_operations = {
509 .clkdm_deny_idle = omap4_clkdm_deny_idle, 505 .clkdm_deny_idle = omap4_clkdm_deny_idle,
510 .clkdm_clk_enable = omap4_clkdm_clk_enable, 506 .clkdm_clk_enable = omap4_clkdm_clk_enable,
511 .clkdm_clk_disable = omap4_clkdm_clk_disable, 507 .clkdm_clk_disable = omap4_clkdm_clk_disable,
512 .clkdm_xlate_address = omap4_clkdm_xlate_address,
513}; 508};
514 509
515static struct cm_ll_data omap4xxx_cm_ll_data = { 510static const struct cm_ll_data omap4xxx_cm_ll_data = {
516 .wait_module_ready = &omap4_cminst_wait_module_ready, 511 .wait_module_ready = &omap4_cminst_wait_module_ready,
517 .wait_module_idle = &omap4_cminst_wait_module_idle, 512 .wait_module_idle = &omap4_cminst_wait_module_idle,
518 .module_enable = &omap4_cminst_module_enable, 513 .module_enable = &omap4_cminst_module_enable,
519 .module_disable = &omap4_cminst_module_disable, 514 .module_disable = &omap4_cminst_module_disable,
515 .xlate_clkctrl = &omap4_cminst_xlate_clkctrl,
520}; 516};
521 517
522int __init omap4_cm_init(const struct omap_prcm_init_data *data) 518int __init omap4_cm_init(const struct omap_prcm_init_data *data)
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 104256a5f0f7..5eff27e4f24b 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -185,15 +185,15 @@
185/** 185/**
186 * struct clkctrl_provider - clkctrl provider mapping data 186 * struct clkctrl_provider - clkctrl provider mapping data
187 * @addr: base address for the provider 187 * @addr: base address for the provider
188 * @offset: base offset for the provider 188 * @size: size of the provider address space
189 * @clkdm: base clockdomain for provider 189 * @offset: offset of the provider from PRCM instance base
190 * @node: device node associated with the provider 190 * @node: device node associated with the provider
191 * @link: list link 191 * @link: list link
192 */ 192 */
193struct clkctrl_provider { 193struct clkctrl_provider {
194 u32 addr; 194 u32 addr;
195 u32 size;
195 u16 offset; 196 u16 offset;
196 struct clockdomain *clkdm;
197 struct device_node *node; 197 struct device_node *node;
198 struct list_head link; 198 struct list_head link;
199}; 199};
@@ -223,8 +223,7 @@ struct omap_hwmod_soc_ops {
223 void (*update_context_lost)(struct omap_hwmod *oh); 223 void (*update_context_lost)(struct omap_hwmod *oh);
224 int (*get_context_lost)(struct omap_hwmod *oh); 224 int (*get_context_lost)(struct omap_hwmod *oh);
225 int (*disable_direct_prcm)(struct omap_hwmod *oh); 225 int (*disable_direct_prcm)(struct omap_hwmod *oh);
226 u32 (*xlate_clkctrl)(struct omap_hwmod *oh, 226 u32 (*xlate_clkctrl)(struct omap_hwmod *oh);
227 struct clkctrl_provider *provider);
228}; 227};
229 228
230/* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */ 229/* soc_ops: adapts the omap_hwmod code to the currently-booted SoC */
@@ -716,45 +715,28 @@ static const struct of_device_id ti_clkctrl_match_table[] __initconst = {
716 { } 715 { }
717}; 716};
718 717
719static int _match_clkdm(struct clockdomain *clkdm, void *user)
720{
721 struct clkctrl_provider *provider = user;
722
723 if (clkdm_xlate_address(clkdm) == provider->addr) {
724 pr_debug("%s: Matched clkdm %s for addr %x (%s)\n", __func__,
725 clkdm->name, provider->addr,
726 provider->node->parent->name);
727 provider->clkdm = clkdm;
728
729 return -1;
730 }
731
732 return 0;
733}
734
735static int _setup_clkctrl_provider(struct device_node *np) 718static int _setup_clkctrl_provider(struct device_node *np)
736{ 719{
737 const __be32 *addrp; 720 const __be32 *addrp;
738 struct clkctrl_provider *provider; 721 struct clkctrl_provider *provider;
722 u64 size;
739 723
740 provider = memblock_virt_alloc(sizeof(*provider), 0); 724 provider = memblock_virt_alloc(sizeof(*provider), 0);
741 if (!provider) 725 if (!provider)
742 return -ENOMEM; 726 return -ENOMEM;
743 727
744 addrp = of_get_address(np, 0, NULL, NULL); 728 addrp = of_get_address(np, 0, &size, NULL);
745 provider->addr = (u32)of_translate_address(np, addrp); 729 provider->addr = (u32)of_translate_address(np, addrp);
746 provider->offset = provider->addr & 0xff; 730 addrp = of_get_address(np->parent, 0, NULL, NULL);
731 provider->offset = provider->addr -
732 (u32)of_translate_address(np->parent, addrp);
747 provider->addr &= ~0xff; 733 provider->addr &= ~0xff;
734 provider->size = size | 0xff;
748 provider->node = np; 735 provider->node = np;
749 736
750 clkdm_for_each(_match_clkdm, provider); 737 pr_debug("%s: %s: %x...%x [+%x]\n", __func__, np->parent->name,
751 738 provider->addr, provider->addr + provider->size,
752 if (!provider->clkdm) { 739 provider->offset);
753 pr_err("%s: nothing matched for node %s (%x)\n",
754 __func__, np->parent->name, provider->addr);
755 memblock_free_early(__pa(provider), sizeof(*provider));
756 return -EINVAL;
757 }
758 740
759 list_add(&provider->link, &clkctrl_providers); 741 list_add(&provider->link, &clkctrl_providers);
760 742
@@ -775,32 +757,48 @@ static int _init_clkctrl_providers(void)
775 return ret; 757 return ret;
776} 758}
777 759
778static u32 _omap4_xlate_clkctrl(struct omap_hwmod *oh, 760static u32 _omap4_xlate_clkctrl(struct omap_hwmod *oh)
779 struct clkctrl_provider *provider)
780{ 761{
781 return oh->prcm.omap4.clkctrl_offs - 762 if (!oh->prcm.omap4.modulemode)
782 provider->offset - provider->clkdm->clkdm_offs; 763 return 0;
764
765 return omap_cm_xlate_clkctrl(oh->clkdm->prcm_partition,
766 oh->clkdm->cm_inst,
767 oh->prcm.omap4.clkctrl_offs);
783} 768}
784 769
785static struct clk *_lookup_clkctrl_clk(struct omap_hwmod *oh) 770static struct clk *_lookup_clkctrl_clk(struct omap_hwmod *oh)
786{ 771{
787 struct clkctrl_provider *provider; 772 struct clkctrl_provider *provider;
788 struct clk *clk; 773 struct clk *clk;
774 u32 addr;
789 775
790 if (!soc_ops.xlate_clkctrl) 776 if (!soc_ops.xlate_clkctrl)
791 return NULL; 777 return NULL;
792 778
779 addr = soc_ops.xlate_clkctrl(oh);
780 if (!addr)
781 return NULL;
782
783 pr_debug("%s: %s: addr=%x\n", __func__, oh->name, addr);
784
793 list_for_each_entry(provider, &clkctrl_providers, link) { 785 list_for_each_entry(provider, &clkctrl_providers, link) {
794 if (provider->clkdm == oh->clkdm) { 786 if (provider->addr <= addr &&
787 provider->addr + provider->size >= addr) {
795 struct of_phandle_args clkspec; 788 struct of_phandle_args clkspec;
796 789
797 clkspec.np = provider->node; 790 clkspec.np = provider->node;
798 clkspec.args_count = 2; 791 clkspec.args_count = 2;
799 clkspec.args[0] = soc_ops.xlate_clkctrl(oh, provider); 792 clkspec.args[0] = addr - provider->addr -
793 provider->offset;
800 clkspec.args[1] = 0; 794 clkspec.args[1] = 0;
801 795
802 clk = of_clk_get_from_provider(&clkspec); 796 clk = of_clk_get_from_provider(&clkspec);
803 797
798 pr_debug("%s: %s got %p (offset=%x, provider=%s)\n",
799 __func__, oh->name, clk, clkspec.args[0],
800 provider->node->parent->name);
801
804 return clk; 802 return clk;
805 } 803 }
806 } 804 }
@@ -3521,6 +3519,7 @@ void __init omap_hwmod_init(void)
3521 soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted; 3519 soc_ops.is_hardreset_asserted = _omap4_is_hardreset_asserted;
3522 soc_ops.init_clkdm = _init_clkdm; 3520 soc_ops.init_clkdm = _init_clkdm;
3523 soc_ops.disable_direct_prcm = _omap4_disable_direct_prcm; 3521 soc_ops.disable_direct_prcm = _omap4_disable_direct_prcm;
3522 soc_ops.xlate_clkctrl = _omap4_xlate_clkctrl;
3524 } else { 3523 } else {
3525 WARN(1, "omap_hwmod: unknown SoC type\n"); 3524 WARN(1, "omap_hwmod: unknown SoC type\n");
3526 } 3525 }
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index 77a515b11ec2..84f118280a0e 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -988,7 +988,7 @@ static struct omap_hwmod_class dm81xx_sata_hwmod_class = {
988 988
989static struct omap_hwmod dm81xx_sata_hwmod = { 989static struct omap_hwmod dm81xx_sata_hwmod = {
990 .name = "sata", 990 .name = "sata",
991 .clkdm_name = "default_sata_clkdm", 991 .clkdm_name = "default_clkdm",
992 .flags = HWMOD_NO_IDLEST, 992 .flags = HWMOD_NO_IDLEST,
993 .prcm = { 993 .prcm = {
994 .omap4 = { 994 .omap4 = {
diff --git a/drivers/clk/ti/apll.c b/drivers/clk/ti/apll.c
index 83b148f8037c..9498e9363b57 100644
--- a/drivers/clk/ti/apll.c
+++ b/drivers/clk/ti/apll.c
@@ -133,9 +133,10 @@ static const struct clk_ops apll_ck_ops = {
133 .get_parent = &dra7_init_apll_parent, 133 .get_parent = &dra7_init_apll_parent,
134}; 134};
135 135
136static void __init omap_clk_register_apll(struct clk_hw *hw, 136static void __init omap_clk_register_apll(void *user,
137 struct device_node *node) 137 struct device_node *node)
138{ 138{
139 struct clk_hw *hw = user;
139 struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw); 140 struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw);
140 struct dpll_data *ad = clk_hw->dpll_data; 141 struct dpll_data *ad = clk_hw->dpll_data;
141 struct clk *clk; 142 struct clk *clk;
diff --git a/drivers/clk/ti/clk-33xx.c b/drivers/clk/ti/clk-33xx.c
index 0e47d95faf49..612491a26070 100644
--- a/drivers/clk/ti/clk-33xx.c
+++ b/drivers/clk/ti/clk-33xx.c
@@ -19,98 +19,201 @@
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/clk-provider.h> 20#include <linux/clk-provider.h>
21#include <linux/clk/ti.h> 21#include <linux/clk/ti.h>
22#include <dt-bindings/clock/am3.h>
22 23
23#include "clock.h" 24#include "clock.h"
24 25
26static const char * const am3_gpio1_dbclk_parents[] __initconst = {
27 "l4_per_cm:clk:0138:0",
28 NULL,
29};
30
31static const struct omap_clkctrl_bit_data am3_gpio2_bit_data[] __initconst = {
32 { 18, TI_CLK_GATE, am3_gpio1_dbclk_parents, NULL },
33 { 0 },
34};
35
36static const struct omap_clkctrl_bit_data am3_gpio3_bit_data[] __initconst = {
37 { 18, TI_CLK_GATE, am3_gpio1_dbclk_parents, NULL },
38 { 0 },
39};
40
41static const struct omap_clkctrl_bit_data am3_gpio4_bit_data[] __initconst = {
42 { 18, TI_CLK_GATE, am3_gpio1_dbclk_parents, NULL },
43 { 0 },
44};
45
46static const struct omap_clkctrl_reg_data am3_l4_per_clkctrl_regs[] __initconst = {
47 { AM3_CPGMAC0_CLKCTRL, NULL, CLKF_SW_SUP, "cpsw_125mhz_gclk", "cpsw_125mhz_clkdm" },
48 { AM3_LCDC_CLKCTRL, NULL, CLKF_SW_SUP, "lcd_gclk", "lcdc_clkdm" },
49 { AM3_USB_OTG_HS_CLKCTRL, NULL, CLKF_SW_SUP, "usbotg_fck", "l3s_clkdm" },
50 { AM3_TPTC0_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
51 { AM3_EMIF_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_ddr_m2_div2_ck", "l3_clkdm" },
52 { AM3_OCMCRAM_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
53 { AM3_GPMC_CLKCTRL, NULL, CLKF_SW_SUP, "l3s_gclk", "l3s_clkdm" },
54 { AM3_MCASP0_CLKCTRL, NULL, CLKF_SW_SUP, "mcasp0_fck", "l3s_clkdm" },
55 { AM3_UART6_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
56 { AM3_MMC1_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk" },
57 { AM3_ELM_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
58 { AM3_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
59 { AM3_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
60 { AM3_SPI0_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
61 { AM3_SPI1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
62 { AM3_L4_LS_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
63 { AM3_MCASP1_CLKCTRL, NULL, CLKF_SW_SUP, "mcasp1_fck", "l3s_clkdm" },
64 { AM3_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
65 { AM3_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
66 { AM3_UART4_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
67 { AM3_UART5_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
68 { AM3_TIMER7_CLKCTRL, NULL, CLKF_SW_SUP, "timer7_fck" },
69 { AM3_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "timer2_fck" },
70 { AM3_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "timer3_fck" },
71 { AM3_TIMER4_CLKCTRL, NULL, CLKF_SW_SUP, "timer4_fck" },
72 { AM3_RNG_CLKCTRL, NULL, CLKF_SW_SUP, "rng_fck" },
73 { AM3_AES_CLKCTRL, NULL, CLKF_SW_SUP, "aes0_fck", "l3_clkdm" },
74 { AM3_SHAM_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
75 { AM3_GPIO2_CLKCTRL, am3_gpio2_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
76 { AM3_GPIO3_CLKCTRL, am3_gpio3_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
77 { AM3_GPIO4_CLKCTRL, am3_gpio4_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
78 { AM3_TPCC_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
79 { AM3_D_CAN0_CLKCTRL, NULL, CLKF_SW_SUP, "dcan0_fck" },
80 { AM3_D_CAN1_CLKCTRL, NULL, CLKF_SW_SUP, "dcan1_fck" },
81 { AM3_EPWMSS1_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
82 { AM3_EPWMSS0_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
83 { AM3_EPWMSS2_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
84 { AM3_L3_INSTR_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
85 { AM3_L3_MAIN_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
86 { AM3_PRUSS_CLKCTRL, NULL, CLKF_SW_SUP, "pruss_ocp_gclk", "pruss_ocp_clkdm" },
87 { AM3_TIMER5_CLKCTRL, NULL, CLKF_SW_SUP, "timer5_fck" },
88 { AM3_TIMER6_CLKCTRL, NULL, CLKF_SW_SUP, "timer6_fck" },
89 { AM3_MMC2_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk" },
90 { AM3_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk", "l3s_clkdm" },
91 { AM3_TPTC1_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
92 { AM3_TPTC2_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
93 { AM3_SPINLOCK_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
94 { AM3_MAILBOX_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
95 { AM3_L4_HS_CLKCTRL, NULL, CLKF_SW_SUP, "l4hs_gclk", "l4hs_clkdm" },
96 { AM3_OCPWP_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
97 { AM3_CLKDIV32K_CLKCTRL, NULL, CLKF_SW_SUP, "clkdiv32k_ck", "clk_24mhz_clkdm" },
98 { 0 },
99};
100
101static const char * const am3_gpio0_dbclk_parents[] __initconst = {
102 "gpio0_dbclk_mux_ck",
103 NULL,
104};
105
106static const struct omap_clkctrl_bit_data am3_gpio1_bit_data[] __initconst = {
107 { 18, TI_CLK_GATE, am3_gpio0_dbclk_parents, NULL },
108 { 0 },
109};
110
111static const char * const am3_dbg_sysclk_ck_parents[] __initconst = {
112 "sys_clkin_ck",
113 NULL,
114};
115
116static const char * const am3_trace_pmd_clk_mux_ck_parents[] __initconst = {
117 "l4_wkup_cm:clk:0010:19",
118 "l4_wkup_cm:clk:0010:30",
119 NULL,
120};
121
122static const char * const am3_trace_clk_div_ck_parents[] __initconst = {
123 "l4_wkup_cm:clk:0010:20",
124 NULL,
125};
126
127static const struct omap_clkctrl_div_data am3_trace_clk_div_ck_data __initconst = {
128 .max_div = 64,
129 .flags = CLK_DIVIDER_POWER_OF_TWO,
130};
131
132static const char * const am3_stm_clk_div_ck_parents[] __initconst = {
133 "l4_wkup_cm:clk:0010:22",
134 NULL,
135};
136
137static const struct omap_clkctrl_div_data am3_stm_clk_div_ck_data __initconst = {
138 .max_div = 64,
139 .flags = CLK_DIVIDER_POWER_OF_TWO,
140};
141
142static const char * const am3_dbg_clka_ck_parents[] __initconst = {
143 "dpll_core_m4_ck",
144 NULL,
145};
146
147static const struct omap_clkctrl_bit_data am3_debugss_bit_data[] __initconst = {
148 { 19, TI_CLK_GATE, am3_dbg_sysclk_ck_parents, NULL },
149 { 20, TI_CLK_MUX, am3_trace_pmd_clk_mux_ck_parents, NULL },
150 { 22, TI_CLK_MUX, am3_trace_pmd_clk_mux_ck_parents, NULL },
151 { 24, TI_CLK_DIVIDER, am3_trace_clk_div_ck_parents, &am3_trace_clk_div_ck_data },
152 { 27, TI_CLK_DIVIDER, am3_stm_clk_div_ck_parents, &am3_stm_clk_div_ck_data },
153 { 30, TI_CLK_GATE, am3_dbg_clka_ck_parents, NULL },
154 { 0 },
155};
156
157static const struct omap_clkctrl_reg_data am3_l4_wkup_clkctrl_regs[] __initconst = {
158 { AM3_CONTROL_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_core_m4_div2_ck" },
159 { AM3_GPIO1_CLKCTRL, am3_gpio1_bit_data, CLKF_SW_SUP, "dpll_core_m4_div2_ck" },
160 { AM3_L4_WKUP_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_core_m4_div2_ck" },
161 { AM3_DEBUGSS_CLKCTRL, am3_debugss_bit_data, CLKF_SW_SUP, "l4_wkup_cm:clk:0010:24", "l3_aon_clkdm" },
162 { AM3_WKUP_M3_CLKCTRL, NULL, CLKF_NO_IDLEST, "dpll_core_m4_div2_ck", "l4_wkup_aon_clkdm" },
163 { AM3_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_wkupdm_ck" },
164 { AM3_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_wkupdm_ck" },
165 { AM3_ADC_TSC_CLKCTRL, NULL, CLKF_SW_SUP, "adc_tsc_fck" },
166 { AM3_SMARTREFLEX0_CLKCTRL, NULL, CLKF_SW_SUP, "smartreflex0_fck" },
167 { AM3_TIMER1_CLKCTRL, NULL, CLKF_SW_SUP, "timer1_fck" },
168 { AM3_SMARTREFLEX1_CLKCTRL, NULL, CLKF_SW_SUP, "smartreflex1_fck" },
169 { AM3_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "wdt1_fck" },
170 { 0 },
171};
172
173static const struct omap_clkctrl_reg_data am3_mpu_clkctrl_regs[] __initconst = {
174 { AM3_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_mpu_m2_ck" },
175 { 0 },
176};
177
178static const struct omap_clkctrl_reg_data am3_l4_rtc_clkctrl_regs[] __initconst = {
179 { AM3_RTC_CLKCTRL, NULL, CLKF_SW_SUP, "clk_32768_ck" },
180 { 0 },
181};
182
183static const struct omap_clkctrl_reg_data am3_gfx_l3_clkctrl_regs[] __initconst = {
184 { AM3_GFX_CLKCTRL, NULL, CLKF_SW_SUP, "gfx_fck_div_ck" },
185 { 0 },
186};
187
188static const struct omap_clkctrl_reg_data am3_l4_cefuse_clkctrl_regs[] __initconst = {
189 { AM3_CEFUSE_CLKCTRL, NULL, CLKF_SW_SUP, "sys_clkin_ck" },
190 { 0 },
191};
192
193const struct omap_clkctrl_data am3_clkctrl_data[] __initconst = {
194 { 0x44e00014, am3_l4_per_clkctrl_regs },
195 { 0x44e00404, am3_l4_wkup_clkctrl_regs },
196 { 0x44e00604, am3_mpu_clkctrl_regs },
197 { 0x44e00800, am3_l4_rtc_clkctrl_regs },
198 { 0x44e00904, am3_gfx_l3_clkctrl_regs },
199 { 0x44e00a20, am3_l4_cefuse_clkctrl_regs },
200 { 0 },
201};
202
25static struct ti_dt_clk am33xx_clks[] = { 203static struct ti_dt_clk am33xx_clks[] = {
26 DT_CLK(NULL, "clk_32768_ck", "clk_32768_ck"), 204 DT_CLK(NULL, "timer_32k_ck", "l4_per_cm:0138:0"),
27 DT_CLK(NULL, "clk_rc32k_ck", "clk_rc32k_ck"),
28 DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
29 DT_CLK(NULL, "virt_24000000_ck", "virt_24000000_ck"),
30 DT_CLK(NULL, "virt_25000000_ck", "virt_25000000_ck"),
31 DT_CLK(NULL, "virt_26000000_ck", "virt_26000000_ck"),
32 DT_CLK(NULL, "sys_clkin_ck", "sys_clkin_ck"),
33 DT_CLK(NULL, "tclkin_ck", "tclkin_ck"),
34 DT_CLK(NULL, "dpll_core_ck", "dpll_core_ck"),
35 DT_CLK(NULL, "dpll_core_x2_ck", "dpll_core_x2_ck"),
36 DT_CLK(NULL, "dpll_core_m4_ck", "dpll_core_m4_ck"),
37 DT_CLK(NULL, "dpll_core_m5_ck", "dpll_core_m5_ck"),
38 DT_CLK(NULL, "dpll_core_m6_ck", "dpll_core_m6_ck"),
39 DT_CLK(NULL, "dpll_mpu_ck", "dpll_mpu_ck"),
40 DT_CLK(NULL, "dpll_mpu_m2_ck", "dpll_mpu_m2_ck"),
41 DT_CLK(NULL, "dpll_ddr_ck", "dpll_ddr_ck"),
42 DT_CLK(NULL, "dpll_ddr_m2_ck", "dpll_ddr_m2_ck"),
43 DT_CLK(NULL, "dpll_ddr_m2_div2_ck", "dpll_ddr_m2_div2_ck"),
44 DT_CLK(NULL, "dpll_disp_ck", "dpll_disp_ck"),
45 DT_CLK(NULL, "dpll_disp_m2_ck", "dpll_disp_m2_ck"),
46 DT_CLK(NULL, "dpll_per_ck", "dpll_per_ck"),
47 DT_CLK(NULL, "dpll_per_m2_ck", "dpll_per_m2_ck"),
48 DT_CLK(NULL, "dpll_per_m2_div4_wkupdm_ck", "dpll_per_m2_div4_wkupdm_ck"),
49 DT_CLK(NULL, "dpll_per_m2_div4_ck", "dpll_per_m2_div4_ck"),
50 DT_CLK(NULL, "adc_tsc_fck", "adc_tsc_fck"),
51 DT_CLK(NULL, "cefuse_fck", "cefuse_fck"),
52 DT_CLK(NULL, "clkdiv32k_ck", "clkdiv32k_ck"),
53 DT_CLK(NULL, "clkdiv32k_ick", "clkdiv32k_ick"),
54 DT_CLK(NULL, "dcan0_fck", "dcan0_fck"),
55 DT_CLK("481cc000.d_can", NULL, "dcan0_fck"),
56 DT_CLK(NULL, "dcan1_fck", "dcan1_fck"),
57 DT_CLK("481d0000.d_can", NULL, "dcan1_fck"),
58 DT_CLK(NULL, "pruss_ocp_gclk", "pruss_ocp_gclk"),
59 DT_CLK(NULL, "mcasp0_fck", "mcasp0_fck"),
60 DT_CLK(NULL, "mcasp1_fck", "mcasp1_fck"),
61 DT_CLK(NULL, "mmu_fck", "mmu_fck"),
62 DT_CLK(NULL, "smartreflex0_fck", "smartreflex0_fck"),
63 DT_CLK(NULL, "smartreflex1_fck", "smartreflex1_fck"),
64 DT_CLK(NULL, "sha0_fck", "sha0_fck"),
65 DT_CLK(NULL, "aes0_fck", "aes0_fck"),
66 DT_CLK(NULL, "rng_fck", "rng_fck"),
67 DT_CLK(NULL, "timer1_fck", "timer1_fck"),
68 DT_CLK(NULL, "timer2_fck", "timer2_fck"),
69 DT_CLK(NULL, "timer3_fck", "timer3_fck"),
70 DT_CLK(NULL, "timer4_fck", "timer4_fck"),
71 DT_CLK(NULL, "timer5_fck", "timer5_fck"),
72 DT_CLK(NULL, "timer6_fck", "timer6_fck"),
73 DT_CLK(NULL, "timer7_fck", "timer7_fck"),
74 DT_CLK(NULL, "usbotg_fck", "usbotg_fck"),
75 DT_CLK(NULL, "ieee5000_fck", "ieee5000_fck"),
76 DT_CLK(NULL, "wdt1_fck", "wdt1_fck"),
77 DT_CLK(NULL, "l4_rtc_gclk", "l4_rtc_gclk"),
78 DT_CLK(NULL, "l3_gclk", "l3_gclk"),
79 DT_CLK(NULL, "dpll_core_m4_div2_ck", "dpll_core_m4_div2_ck"),
80 DT_CLK(NULL, "l4hs_gclk", "l4hs_gclk"),
81 DT_CLK(NULL, "l3s_gclk", "l3s_gclk"),
82 DT_CLK(NULL, "l4fw_gclk", "l4fw_gclk"),
83 DT_CLK(NULL, "l4ls_gclk", "l4ls_gclk"),
84 DT_CLK(NULL, "clk_24mhz", "clk_24mhz"),
85 DT_CLK(NULL, "sysclk_div_ck", "sysclk_div_ck"),
86 DT_CLK(NULL, "cpsw_125mhz_gclk", "cpsw_125mhz_gclk"),
87 DT_CLK(NULL, "cpsw_cpts_rft_clk", "cpsw_cpts_rft_clk"),
88 DT_CLK(NULL, "gpio0_dbclk_mux_ck", "gpio0_dbclk_mux_ck"),
89 DT_CLK(NULL, "gpio0_dbclk", "gpio0_dbclk"),
90 DT_CLK(NULL, "gpio1_dbclk", "gpio1_dbclk"),
91 DT_CLK(NULL, "gpio2_dbclk", "gpio2_dbclk"),
92 DT_CLK(NULL, "gpio3_dbclk", "gpio3_dbclk"),
93 DT_CLK(NULL, "lcd_gclk", "lcd_gclk"),
94 DT_CLK(NULL, "mmc_clk", "mmc_clk"),
95 DT_CLK(NULL, "gfx_fclk_clksel_ck", "gfx_fclk_clksel_ck"),
96 DT_CLK(NULL, "gfx_fck_div_ck", "gfx_fck_div_ck"),
97 DT_CLK(NULL, "sysclkout_pre_ck", "sysclkout_pre_ck"),
98 DT_CLK(NULL, "clkout2_div_ck", "clkout2_div_ck"),
99 DT_CLK(NULL, "timer_32k_ck", "clkdiv32k_ick"),
100 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"), 205 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"),
101 DT_CLK(NULL, "dbg_sysclk_ck", "dbg_sysclk_ck"), 206 DT_CLK(NULL, "clkdiv32k_ick", "l4_per_cm:0138:0"),
102 DT_CLK(NULL, "dbg_clka_ck", "dbg_clka_ck"), 207 DT_CLK(NULL, "dbg_clka_ck", "l4_wkup_cm:0010:30"),
103 DT_CLK(NULL, "stm_pmd_clock_mux_ck", "stm_pmd_clock_mux_ck"), 208 DT_CLK(NULL, "dbg_sysclk_ck", "l4_wkup_cm:0010:19"),
104 DT_CLK(NULL, "trace_pmd_clk_mux_ck", "trace_pmd_clk_mux_ck"), 209 DT_CLK(NULL, "gpio0_dbclk", "l4_wkup_cm:0004:18"),
105 DT_CLK(NULL, "stm_clk_div_ck", "stm_clk_div_ck"), 210 DT_CLK(NULL, "gpio1_dbclk", "l4_per_cm:0098:18"),
106 DT_CLK(NULL, "trace_clk_div_ck", "trace_clk_div_ck"), 211 DT_CLK(NULL, "gpio2_dbclk", "l4_per_cm:009c:18"),
107 DT_CLK(NULL, "clkout2_ck", "clkout2_ck"), 212 DT_CLK(NULL, "gpio3_dbclk", "l4_per_cm:00a0:18"),
108 DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"), 213 DT_CLK(NULL, "stm_clk_div_ck", "l4_wkup_cm:0010:27"),
109 DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"), 214 DT_CLK(NULL, "stm_pmd_clock_mux_ck", "l4_wkup_cm:0010:22"),
110 DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"), 215 DT_CLK(NULL, "trace_clk_div_ck", "l4_wkup_cm:0010:24"),
111 DT_CLK("48300200.pwm", "tbclk", "ehrpwm0_tbclk"), 216 DT_CLK(NULL, "trace_pmd_clk_mux_ck", "l4_wkup_cm:0010:20"),
112 DT_CLK("48302200.pwm", "tbclk", "ehrpwm1_tbclk"),
113 DT_CLK("48304200.pwm", "tbclk", "ehrpwm2_tbclk"),
114 { .node_name = NULL }, 217 { .node_name = NULL },
115}; 218};
116 219
@@ -133,6 +236,8 @@ int __init am33xx_dt_clk_init(void)
133 236
134 omap2_clk_disable_autoidle_all(); 237 omap2_clk_disable_autoidle_all();
135 238
239 ti_clk_add_aliases();
240
136 omap2_clk_enable_init_clocks(enable_init_clks, 241 omap2_clk_enable_init_clocks(enable_init_clks,
137 ARRAY_SIZE(enable_init_clks)); 242 ARRAY_SIZE(enable_init_clks));
138 243
diff --git a/drivers/clk/ti/clk-3xxx.c b/drivers/clk/ti/clk-3xxx.c
index b1251cae98b8..8aa5f5793835 100644
--- a/drivers/clk/ti/clk-3xxx.c
+++ b/drivers/clk/ti/clk-3xxx.c
@@ -224,296 +224,43 @@ const struct clk_hw_omap_ops clkhwops_am35xx_ipss_wait = {
224}; 224};
225 225
226static struct ti_dt_clk omap3xxx_clks[] = { 226static struct ti_dt_clk omap3xxx_clks[] = {
227 DT_CLK(NULL, "apb_pclk", "dummy_apb_pclk"),
228 DT_CLK(NULL, "omap_32k_fck", "omap_32k_fck"),
229 DT_CLK(NULL, "virt_12m_ck", "virt_12m_ck"),
230 DT_CLK(NULL, "virt_13m_ck", "virt_13m_ck"),
231 DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
232 DT_CLK(NULL, "virt_26000000_ck", "virt_26000000_ck"),
233 DT_CLK(NULL, "virt_38_4m_ck", "virt_38_4m_ck"),
234 DT_CLK(NULL, "osc_sys_ck", "osc_sys_ck"),
235 DT_CLK("twl", "fck", "osc_sys_ck"),
236 DT_CLK(NULL, "sys_ck", "sys_ck"),
237 DT_CLK(NULL, "omap_96m_alwon_fck", "omap_96m_alwon_fck"),
238 DT_CLK("etb", "emu_core_alwon_ck", "emu_core_alwon_ck"),
239 DT_CLK(NULL, "sys_altclk", "sys_altclk"),
240 DT_CLK(NULL, "sys_clkout1", "sys_clkout1"),
241 DT_CLK(NULL, "dpll1_ck", "dpll1_ck"),
242 DT_CLK(NULL, "dpll1_x2_ck", "dpll1_x2_ck"),
243 DT_CLK(NULL, "dpll1_x2m2_ck", "dpll1_x2m2_ck"),
244 DT_CLK(NULL, "dpll3_ck", "dpll3_ck"),
245 DT_CLK(NULL, "core_ck", "core_ck"),
246 DT_CLK(NULL, "dpll3_x2_ck", "dpll3_x2_ck"),
247 DT_CLK(NULL, "dpll3_m2_ck", "dpll3_m2_ck"),
248 DT_CLK(NULL, "dpll3_m2x2_ck", "dpll3_m2x2_ck"),
249 DT_CLK(NULL, "dpll3_m3_ck", "dpll3_m3_ck"),
250 DT_CLK(NULL, "dpll3_m3x2_ck", "dpll3_m3x2_ck"),
251 DT_CLK(NULL, "dpll4_ck", "dpll4_ck"),
252 DT_CLK(NULL, "dpll4_x2_ck", "dpll4_x2_ck"),
253 DT_CLK(NULL, "omap_96m_fck", "omap_96m_fck"),
254 DT_CLK(NULL, "cm_96m_fck", "cm_96m_fck"),
255 DT_CLK(NULL, "omap_54m_fck", "omap_54m_fck"),
256 DT_CLK(NULL, "omap_48m_fck", "omap_48m_fck"),
257 DT_CLK(NULL, "omap_12m_fck", "omap_12m_fck"),
258 DT_CLK(NULL, "dpll4_m2_ck", "dpll4_m2_ck"),
259 DT_CLK(NULL, "dpll4_m2x2_ck", "dpll4_m2x2_ck"),
260 DT_CLK(NULL, "dpll4_m3_ck", "dpll4_m3_ck"),
261 DT_CLK(NULL, "dpll4_m3x2_ck", "dpll4_m3x2_ck"),
262 DT_CLK(NULL, "dpll4_m4_ck", "dpll4_m4_ck"),
263 DT_CLK(NULL, "dpll4_m4x2_ck", "dpll4_m4x2_ck"),
264 DT_CLK(NULL, "dpll4_m5_ck", "dpll4_m5_ck"),
265 DT_CLK(NULL, "dpll4_m5x2_ck", "dpll4_m5x2_ck"),
266 DT_CLK(NULL, "dpll4_m6_ck", "dpll4_m6_ck"),
267 DT_CLK(NULL, "dpll4_m6x2_ck", "dpll4_m6x2_ck"),
268 DT_CLK("etb", "emu_per_alwon_ck", "emu_per_alwon_ck"),
269 DT_CLK(NULL, "clkout2_src_ck", "clkout2_src_ck"),
270 DT_CLK(NULL, "sys_clkout2", "sys_clkout2"),
271 DT_CLK(NULL, "corex2_fck", "corex2_fck"),
272 DT_CLK(NULL, "dpll1_fck", "dpll1_fck"),
273 DT_CLK(NULL, "mpu_ck", "mpu_ck"),
274 DT_CLK(NULL, "arm_fck", "arm_fck"),
275 DT_CLK("etb", "emu_mpu_alwon_ck", "emu_mpu_alwon_ck"),
276 DT_CLK(NULL, "l3_ick", "l3_ick"),
277 DT_CLK(NULL, "l4_ick", "l4_ick"),
278 DT_CLK(NULL, "rm_ick", "rm_ick"),
279 DT_CLK(NULL, "gpt10_fck", "gpt10_fck"),
280 DT_CLK(NULL, "gpt11_fck", "gpt11_fck"),
281 DT_CLK(NULL, "core_96m_fck", "core_96m_fck"),
282 DT_CLK(NULL, "mmchs2_fck", "mmchs2_fck"),
283 DT_CLK(NULL, "mmchs1_fck", "mmchs1_fck"),
284 DT_CLK(NULL, "i2c3_fck", "i2c3_fck"),
285 DT_CLK(NULL, "i2c2_fck", "i2c2_fck"),
286 DT_CLK(NULL, "i2c1_fck", "i2c1_fck"),
287 DT_CLK(NULL, "core_48m_fck", "core_48m_fck"),
288 DT_CLK(NULL, "mcspi4_fck", "mcspi4_fck"),
289 DT_CLK(NULL, "mcspi3_fck", "mcspi3_fck"),
290 DT_CLK(NULL, "mcspi2_fck", "mcspi2_fck"),
291 DT_CLK(NULL, "mcspi1_fck", "mcspi1_fck"),
292 DT_CLK(NULL, "uart2_fck", "uart2_fck"),
293 DT_CLK(NULL, "uart1_fck", "uart1_fck"),
294 DT_CLK(NULL, "core_12m_fck", "core_12m_fck"),
295 DT_CLK("omap_hdq.0", "fck", "hdq_fck"),
296 DT_CLK(NULL, "hdq_fck", "hdq_fck"),
297 DT_CLK(NULL, "core_l3_ick", "core_l3_ick"),
298 DT_CLK(NULL, "sdrc_ick", "sdrc_ick"),
299 DT_CLK(NULL, "gpmc_fck", "gpmc_fck"),
300 DT_CLK(NULL, "core_l4_ick", "core_l4_ick"),
301 DT_CLK("omap_hsmmc.1", "ick", "mmchs2_ick"),
302 DT_CLK("omap_hsmmc.0", "ick", "mmchs1_ick"),
303 DT_CLK(NULL, "mmchs2_ick", "mmchs2_ick"),
304 DT_CLK(NULL, "mmchs1_ick", "mmchs1_ick"),
305 DT_CLK("omap_hdq.0", "ick", "hdq_ick"),
306 DT_CLK(NULL, "hdq_ick", "hdq_ick"),
307 DT_CLK("omap2_mcspi.4", "ick", "mcspi4_ick"),
308 DT_CLK("omap2_mcspi.3", "ick", "mcspi3_ick"),
309 DT_CLK("omap2_mcspi.2", "ick", "mcspi2_ick"),
310 DT_CLK("omap2_mcspi.1", "ick", "mcspi1_ick"),
311 DT_CLK(NULL, "mcspi4_ick", "mcspi4_ick"),
312 DT_CLK(NULL, "mcspi3_ick", "mcspi3_ick"),
313 DT_CLK(NULL, "mcspi2_ick", "mcspi2_ick"),
314 DT_CLK(NULL, "mcspi1_ick", "mcspi1_ick"),
315 DT_CLK("omap_i2c.3", "ick", "i2c3_ick"),
316 DT_CLK("omap_i2c.2", "ick", "i2c2_ick"),
317 DT_CLK("omap_i2c.1", "ick", "i2c1_ick"),
318 DT_CLK(NULL, "i2c3_ick", "i2c3_ick"),
319 DT_CLK(NULL, "i2c2_ick", "i2c2_ick"),
320 DT_CLK(NULL, "i2c1_ick", "i2c1_ick"),
321 DT_CLK(NULL, "uart2_ick", "uart2_ick"),
322 DT_CLK(NULL, "uart1_ick", "uart1_ick"),
323 DT_CLK(NULL, "gpt11_ick", "gpt11_ick"),
324 DT_CLK(NULL, "gpt10_ick", "gpt10_ick"),
325 DT_CLK(NULL, "omapctrl_ick", "omapctrl_ick"),
326 DT_CLK(NULL, "dss_tv_fck", "dss_tv_fck"),
327 DT_CLK(NULL, "dss_96m_fck", "dss_96m_fck"),
328 DT_CLK(NULL, "dss2_alwon_fck", "dss2_alwon_fck"),
329 DT_CLK(NULL, "init_60m_fclk", "dummy_ck"),
330 DT_CLK(NULL, "gpt1_fck", "gpt1_fck"),
331 DT_CLK(NULL, "aes2_ick", "aes2_ick"),
332 DT_CLK(NULL, "wkup_32k_fck", "wkup_32k_fck"),
333 DT_CLK(NULL, "gpio1_dbck", "gpio1_dbck"),
334 DT_CLK(NULL, "sha12_ick", "sha12_ick"),
335 DT_CLK(NULL, "wdt2_fck", "wdt2_fck"),
336 DT_CLK("omap_wdt", "ick", "wdt2_ick"),
337 DT_CLK(NULL, "wdt2_ick", "wdt2_ick"),
338 DT_CLK(NULL, "wdt1_ick", "wdt1_ick"),
339 DT_CLK(NULL, "gpio1_ick", "gpio1_ick"),
340 DT_CLK(NULL, "omap_32ksync_ick", "omap_32ksync_ick"),
341 DT_CLK(NULL, "gpt12_ick", "gpt12_ick"),
342 DT_CLK(NULL, "gpt1_ick", "gpt1_ick"),
343 DT_CLK(NULL, "per_96m_fck", "per_96m_fck"),
344 DT_CLK(NULL, "per_48m_fck", "per_48m_fck"),
345 DT_CLK(NULL, "uart3_fck", "uart3_fck"),
346 DT_CLK(NULL, "gpt2_fck", "gpt2_fck"),
347 DT_CLK(NULL, "gpt3_fck", "gpt3_fck"),
348 DT_CLK(NULL, "gpt4_fck", "gpt4_fck"),
349 DT_CLK(NULL, "gpt5_fck", "gpt5_fck"),
350 DT_CLK(NULL, "gpt6_fck", "gpt6_fck"),
351 DT_CLK(NULL, "gpt7_fck", "gpt7_fck"),
352 DT_CLK(NULL, "gpt8_fck", "gpt8_fck"),
353 DT_CLK(NULL, "gpt9_fck", "gpt9_fck"),
354 DT_CLK(NULL, "per_32k_alwon_fck", "per_32k_alwon_fck"),
355 DT_CLK(NULL, "gpio6_dbck", "gpio6_dbck"),
356 DT_CLK(NULL, "gpio5_dbck", "gpio5_dbck"),
357 DT_CLK(NULL, "gpio4_dbck", "gpio4_dbck"),
358 DT_CLK(NULL, "gpio3_dbck", "gpio3_dbck"),
359 DT_CLK(NULL, "gpio2_dbck", "gpio2_dbck"),
360 DT_CLK(NULL, "wdt3_fck", "wdt3_fck"),
361 DT_CLK(NULL, "per_l4_ick", "per_l4_ick"),
362 DT_CLK(NULL, "gpio6_ick", "gpio6_ick"),
363 DT_CLK(NULL, "gpio5_ick", "gpio5_ick"),
364 DT_CLK(NULL, "gpio4_ick", "gpio4_ick"),
365 DT_CLK(NULL, "gpio3_ick", "gpio3_ick"),
366 DT_CLK(NULL, "gpio2_ick", "gpio2_ick"),
367 DT_CLK(NULL, "wdt3_ick", "wdt3_ick"),
368 DT_CLK(NULL, "uart3_ick", "uart3_ick"),
369 DT_CLK(NULL, "gpt9_ick", "gpt9_ick"),
370 DT_CLK(NULL, "gpt8_ick", "gpt8_ick"),
371 DT_CLK(NULL, "gpt7_ick", "gpt7_ick"),
372 DT_CLK(NULL, "gpt6_ick", "gpt6_ick"),
373 DT_CLK(NULL, "gpt5_ick", "gpt5_ick"),
374 DT_CLK(NULL, "gpt4_ick", "gpt4_ick"),
375 DT_CLK(NULL, "gpt3_ick", "gpt3_ick"),
376 DT_CLK(NULL, "gpt2_ick", "gpt2_ick"),
377 DT_CLK(NULL, "mcbsp_clks", "mcbsp_clks"),
378 DT_CLK(NULL, "mcbsp1_ick", "mcbsp1_ick"),
379 DT_CLK(NULL, "mcbsp2_ick", "mcbsp2_ick"),
380 DT_CLK(NULL, "mcbsp3_ick", "mcbsp3_ick"),
381 DT_CLK(NULL, "mcbsp4_ick", "mcbsp4_ick"),
382 DT_CLK(NULL, "mcbsp5_ick", "mcbsp5_ick"),
383 DT_CLK(NULL, "mcbsp1_fck", "mcbsp1_fck"),
384 DT_CLK(NULL, "mcbsp2_fck", "mcbsp2_fck"),
385 DT_CLK(NULL, "mcbsp3_fck", "mcbsp3_fck"),
386 DT_CLK(NULL, "mcbsp4_fck", "mcbsp4_fck"),
387 DT_CLK(NULL, "mcbsp5_fck", "mcbsp5_fck"),
388 DT_CLK("etb", "emu_src_ck", "emu_src_ck"),
389 DT_CLK(NULL, "emu_src_ck", "emu_src_ck"),
390 DT_CLK(NULL, "pclk_fck", "pclk_fck"),
391 DT_CLK(NULL, "pclkx2_fck", "pclkx2_fck"),
392 DT_CLK(NULL, "atclk_fck", "atclk_fck"),
393 DT_CLK(NULL, "traceclk_src_fck", "traceclk_src_fck"),
394 DT_CLK(NULL, "traceclk_fck", "traceclk_fck"),
395 DT_CLK(NULL, "secure_32k_fck", "secure_32k_fck"),
396 DT_CLK(NULL, "gpt12_fck", "gpt12_fck"),
397 DT_CLK(NULL, "wdt1_fck", "wdt1_fck"),
398 DT_CLK(NULL, "timer_32k_ck", "omap_32k_fck"), 227 DT_CLK(NULL, "timer_32k_ck", "omap_32k_fck"),
399 DT_CLK(NULL, "timer_sys_ck", "sys_ck"), 228 DT_CLK(NULL, "timer_sys_ck", "sys_ck"),
400 DT_CLK(NULL, "cpufreq_ck", "dpll1_ck"),
401 { .node_name = NULL },
402};
403
404static struct ti_dt_clk omap34xx_omap36xx_clks[] = {
405 DT_CLK(NULL, "aes1_ick", "aes1_ick"),
406 DT_CLK("omap_rng", "ick", "rng_ick"),
407 DT_CLK("omap3-rom-rng", "ick", "rng_ick"),
408 DT_CLK(NULL, "sha11_ick", "sha11_ick"),
409 DT_CLK(NULL, "des1_ick", "des1_ick"),
410 DT_CLK(NULL, "cam_mclk", "cam_mclk"),
411 DT_CLK(NULL, "cam_ick", "cam_ick"),
412 DT_CLK(NULL, "csi2_96m_fck", "csi2_96m_fck"),
413 DT_CLK(NULL, "security_l3_ick", "security_l3_ick"),
414 DT_CLK(NULL, "pka_ick", "pka_ick"),
415 DT_CLK(NULL, "icr_ick", "icr_ick"),
416 DT_CLK("omap-aes", "ick", "aes2_ick"),
417 DT_CLK("omap-sham", "ick", "sha12_ick"),
418 DT_CLK(NULL, "des2_ick", "des2_ick"),
419 DT_CLK(NULL, "mspro_ick", "mspro_ick"),
420 DT_CLK(NULL, "mailboxes_ick", "mailboxes_ick"),
421 DT_CLK(NULL, "ssi_l4_ick", "ssi_l4_ick"),
422 DT_CLK(NULL, "sr1_fck", "sr1_fck"),
423 DT_CLK(NULL, "sr2_fck", "sr2_fck"),
424 DT_CLK(NULL, "sr_l4_ick", "sr_l4_ick"),
425 DT_CLK(NULL, "security_l4_ick2", "security_l4_ick2"),
426 DT_CLK(NULL, "wkup_l4_ick", "wkup_l4_ick"),
427 DT_CLK(NULL, "dpll2_fck", "dpll2_fck"),
428 DT_CLK(NULL, "iva2_ck", "iva2_ck"),
429 DT_CLK(NULL, "modem_fck", "modem_fck"),
430 DT_CLK(NULL, "sad2d_ick", "sad2d_ick"),
431 DT_CLK(NULL, "mad2d_ick", "mad2d_ick"),
432 DT_CLK(NULL, "mspro_fck", "mspro_fck"),
433 DT_CLK(NULL, "dpll2_ck", "dpll2_ck"),
434 DT_CLK(NULL, "dpll2_m2_ck", "dpll2_m2_ck"),
435 { .node_name = NULL }, 229 { .node_name = NULL },
436}; 230};
437 231
438static struct ti_dt_clk omap36xx_omap3430es2plus_clks[] = { 232static struct ti_dt_clk omap36xx_omap3430es2plus_clks[] = {
439 DT_CLK(NULL, "ssi_ssr_fck", "ssi_ssr_fck_3430es2"), 233 DT_CLK(NULL, "ssi_ssr_fck", "ssi_ssr_fck_3430es2"),
440 DT_CLK(NULL, "ssi_sst_fck", "ssi_sst_fck_3430es2"), 234 DT_CLK(NULL, "ssi_sst_fck", "ssi_sst_fck_3430es2"),
441 DT_CLK("musb-omap2430", "ick", "hsotgusb_ick_3430es2"),
442 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_3430es2"), 235 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_3430es2"),
443 DT_CLK(NULL, "ssi_ick", "ssi_ick_3430es2"), 236 DT_CLK(NULL, "ssi_ick", "ssi_ick_3430es2"),
444 DT_CLK(NULL, "usim_fck", "usim_fck"),
445 DT_CLK(NULL, "usim_ick", "usim_ick"),
446 { .node_name = NULL }, 237 { .node_name = NULL },
447}; 238};
448 239
449static struct ti_dt_clk omap3430es1_clks[] = { 240static struct ti_dt_clk omap3430es1_clks[] = {
450 DT_CLK(NULL, "gfx_l3_ck", "gfx_l3_ck"),
451 DT_CLK(NULL, "gfx_l3_fck", "gfx_l3_fck"),
452 DT_CLK(NULL, "gfx_l3_ick", "gfx_l3_ick"),
453 DT_CLK(NULL, "gfx_cg1_ck", "gfx_cg1_ck"),
454 DT_CLK(NULL, "gfx_cg2_ck", "gfx_cg2_ck"),
455 DT_CLK(NULL, "d2d_26m_fck", "d2d_26m_fck"),
456 DT_CLK(NULL, "fshostusb_fck", "fshostusb_fck"),
457 DT_CLK(NULL, "ssi_ssr_fck", "ssi_ssr_fck_3430es1"), 241 DT_CLK(NULL, "ssi_ssr_fck", "ssi_ssr_fck_3430es1"),
458 DT_CLK(NULL, "ssi_sst_fck", "ssi_sst_fck_3430es1"), 242 DT_CLK(NULL, "ssi_sst_fck", "ssi_sst_fck_3430es1"),
459 DT_CLK("musb-omap2430", "ick", "hsotgusb_ick_3430es1"),
460 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_3430es1"), 243 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_3430es1"),
461 DT_CLK(NULL, "fac_ick", "fac_ick"),
462 DT_CLK(NULL, "ssi_ick", "ssi_ick_3430es1"), 244 DT_CLK(NULL, "ssi_ick", "ssi_ick_3430es1"),
463 DT_CLK(NULL, "usb_l4_ick", "usb_l4_ick"),
464 DT_CLK(NULL, "dss1_alwon_fck", "dss1_alwon_fck_3430es1"), 245 DT_CLK(NULL, "dss1_alwon_fck", "dss1_alwon_fck_3430es1"),
465 DT_CLK("omapdss_dss", "ick", "dss_ick_3430es1"),
466 DT_CLK(NULL, "dss_ick", "dss_ick_3430es1"), 246 DT_CLK(NULL, "dss_ick", "dss_ick_3430es1"),
467 { .node_name = NULL }, 247 { .node_name = NULL },
468}; 248};
469 249
470static struct ti_dt_clk omap36xx_am35xx_omap3430es2plus_clks[] = { 250static struct ti_dt_clk omap36xx_am35xx_omap3430es2plus_clks[] = {
471 DT_CLK(NULL, "virt_16_8m_ck", "virt_16_8m_ck"),
472 DT_CLK(NULL, "dpll5_ck", "dpll5_ck"),
473 DT_CLK(NULL, "dpll5_m2_ck", "dpll5_m2_ck"),
474 DT_CLK(NULL, "sgx_fck", "sgx_fck"),
475 DT_CLK(NULL, "sgx_ick", "sgx_ick"),
476 DT_CLK(NULL, "cpefuse_fck", "cpefuse_fck"),
477 DT_CLK(NULL, "ts_fck", "ts_fck"),
478 DT_CLK(NULL, "usbtll_fck", "usbtll_fck"),
479 DT_CLK(NULL, "usbtll_ick", "usbtll_ick"),
480 DT_CLK("omap_hsmmc.2", "ick", "mmchs3_ick"),
481 DT_CLK(NULL, "mmchs3_ick", "mmchs3_ick"),
482 DT_CLK(NULL, "mmchs3_fck", "mmchs3_fck"),
483 DT_CLK(NULL, "dss1_alwon_fck", "dss1_alwon_fck_3430es2"), 251 DT_CLK(NULL, "dss1_alwon_fck", "dss1_alwon_fck_3430es2"),
484 DT_CLK("omapdss_dss", "ick", "dss_ick_3430es2"),
485 DT_CLK(NULL, "dss_ick", "dss_ick_3430es2"), 252 DT_CLK(NULL, "dss_ick", "dss_ick_3430es2"),
486 DT_CLK(NULL, "usbhost_120m_fck", "usbhost_120m_fck"),
487 DT_CLK(NULL, "usbhost_48m_fck", "usbhost_48m_fck"),
488 DT_CLK(NULL, "usbhost_ick", "usbhost_ick"),
489 { .node_name = NULL }, 253 { .node_name = NULL },
490}; 254};
491 255
492static struct ti_dt_clk am35xx_clks[] = { 256static struct ti_dt_clk am35xx_clks[] = {
493 DT_CLK(NULL, "ipss_ick", "ipss_ick"),
494 DT_CLK(NULL, "rmii_ck", "rmii_ck"),
495 DT_CLK(NULL, "pclk_ck", "pclk_ck"),
496 DT_CLK(NULL, "emac_ick", "emac_ick"),
497 DT_CLK(NULL, "emac_fck", "emac_fck"),
498 DT_CLK("davinci_emac.0", NULL, "emac_ick"),
499 DT_CLK("davinci_mdio.0", NULL, "emac_fck"),
500 DT_CLK("vpfe-capture", "master", "vpfe_ick"),
501 DT_CLK("vpfe-capture", "slave", "vpfe_fck"),
502 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_am35xx"), 257 DT_CLK(NULL, "hsotgusb_ick", "hsotgusb_ick_am35xx"),
503 DT_CLK(NULL, "hsotgusb_fck", "hsotgusb_fck_am35xx"), 258 DT_CLK(NULL, "hsotgusb_fck", "hsotgusb_fck_am35xx"),
504 DT_CLK(NULL, "hecc_ck", "hecc_ck"),
505 DT_CLK(NULL, "uart4_ick", "uart4_ick_am35xx"), 259 DT_CLK(NULL, "uart4_ick", "uart4_ick_am35xx"),
506 DT_CLK(NULL, "uart4_fck", "uart4_fck_am35xx"), 260 DT_CLK(NULL, "uart4_fck", "uart4_fck_am35xx"),
507 { .node_name = NULL }, 261 { .node_name = NULL },
508}; 262};
509 263
510static struct ti_dt_clk omap36xx_clks[] = {
511 DT_CLK(NULL, "omap_192m_alwon_fck", "omap_192m_alwon_fck"),
512 DT_CLK(NULL, "uart4_fck", "uart4_fck"),
513 DT_CLK(NULL, "uart4_ick", "uart4_ick"),
514 { .node_name = NULL },
515};
516
517static const char *enable_init_clks[] = { 264static const char *enable_init_clks[] = {
518 "sdrc_ick", 265 "sdrc_ick",
519 "gpmc_fck", 266 "gpmc_fck",
@@ -579,16 +326,10 @@ static int __init omap3xxx_dt_clk_init(int soc_type)
579 soc_type == OMAP3_SOC_OMAP3630) 326 soc_type == OMAP3_SOC_OMAP3630)
580 ti_dt_clocks_register(omap36xx_omap3430es2plus_clks); 327 ti_dt_clocks_register(omap36xx_omap3430es2plus_clks);
581 328
582 if (soc_type == OMAP3_SOC_OMAP3430_ES1 ||
583 soc_type == OMAP3_SOC_OMAP3430_ES2_PLUS ||
584 soc_type == OMAP3_SOC_OMAP3630)
585 ti_dt_clocks_register(omap34xx_omap36xx_clks);
586
587 if (soc_type == OMAP3_SOC_OMAP3630)
588 ti_dt_clocks_register(omap36xx_clks);
589
590 omap2_clk_disable_autoidle_all(); 329 omap2_clk_disable_autoidle_all();
591 330
331 ti_clk_add_aliases();
332
592 omap2_clk_enable_init_clocks(enable_init_clks, 333 omap2_clk_enable_init_clocks(enable_init_clks,
593 ARRAY_SIZE(enable_init_clks)); 334 ARRAY_SIZE(enable_init_clks));
594 335
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index e816a7500e43..2b7c2e017665 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -19,109 +19,208 @@
19#include <linux/clk.h> 19#include <linux/clk.h>
20#include <linux/clk-provider.h> 20#include <linux/clk-provider.h>
21#include <linux/clk/ti.h> 21#include <linux/clk/ti.h>
22#include <dt-bindings/clock/am4.h>
22 23
23#include "clock.h" 24#include "clock.h"
24 25
26static const char * const am4_synctimer_32kclk_parents[] __initconst = {
27 "mux_synctimer32k_ck",
28 NULL,
29};
30
31static const struct omap_clkctrl_bit_data am4_counter_32k_bit_data[] __initconst = {
32 { 8, TI_CLK_GATE, am4_synctimer_32kclk_parents, NULL },
33 { 0 },
34};
35
36static const char * const am4_gpio0_dbclk_parents[] __initconst = {
37 "gpio0_dbclk_mux_ck",
38 NULL,
39};
40
41static const struct omap_clkctrl_bit_data am4_gpio1_bit_data[] __initconst = {
42 { 8, TI_CLK_GATE, am4_gpio0_dbclk_parents, NULL },
43 { 0 },
44};
45
46static const struct omap_clkctrl_reg_data am4_l4_wkup_clkctrl_regs[] __initconst = {
47 { AM4_ADC_TSC_CLKCTRL, NULL, CLKF_SW_SUP, "adc_tsc_fck", "l3s_tsc_clkdm" },
48 { AM4_L4_WKUP_CLKCTRL, NULL, CLKF_SW_SUP, "sys_clkin_ck", "l4_wkup_clkdm" },
49 { AM4_WKUP_M3_CLKCTRL, NULL, CLKF_NO_IDLEST, "sys_clkin_ck" },
50 { AM4_COUNTER_32K_CLKCTRL, am4_counter_32k_bit_data, CLKF_SW_SUP, "l4_wkup_cm:clk:0210:8" },
51 { AM4_TIMER1_CLKCTRL, NULL, CLKF_SW_SUP, "timer1_fck", "l4_wkup_clkdm" },
52 { AM4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "wdt1_fck", "l4_wkup_clkdm" },
53 { AM4_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_wkupdm_ck", "l4_wkup_clkdm" },
54 { AM4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_wkupdm_ck", "l4_wkup_clkdm" },
55 { AM4_SMARTREFLEX0_CLKCTRL, NULL, CLKF_SW_SUP, "smartreflex0_fck", "l4_wkup_clkdm" },
56 { AM4_SMARTREFLEX1_CLKCTRL, NULL, CLKF_SW_SUP, "smartreflex1_fck", "l4_wkup_clkdm" },
57 { AM4_CONTROL_CLKCTRL, NULL, CLKF_SW_SUP, "sys_clkin_ck", "l4_wkup_clkdm" },
58 { AM4_GPIO1_CLKCTRL, am4_gpio1_bit_data, CLKF_SW_SUP, "sys_clkin_ck", "l4_wkup_clkdm" },
59 { 0 },
60};
61
62static const struct omap_clkctrl_reg_data am4_mpu_clkctrl_regs[] __initconst = {
63 { AM4_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_mpu_m2_ck" },
64 { 0 },
65};
66
67static const struct omap_clkctrl_reg_data am4_gfx_l3_clkctrl_regs[] __initconst = {
68 { AM4_GFX_CLKCTRL, NULL, CLKF_SW_SUP, "gfx_fck_div_ck" },
69 { 0 },
70};
71
72static const struct omap_clkctrl_reg_data am4_l4_rtc_clkctrl_regs[] __initconst = {
73 { AM4_RTC_CLKCTRL, NULL, CLKF_SW_SUP, "clk_32768_ck" },
74 { 0 },
75};
76
77static const char * const am4_usb_otg_ss0_refclk960m_parents[] __initconst = {
78 "dpll_per_clkdcoldo",
79 NULL,
80};
81
82static const struct omap_clkctrl_bit_data am4_usb_otg_ss0_bit_data[] __initconst = {
83 { 8, TI_CLK_GATE, am4_usb_otg_ss0_refclk960m_parents, NULL },
84 { 0 },
85};
86
87static const struct omap_clkctrl_bit_data am4_usb_otg_ss1_bit_data[] __initconst = {
88 { 8, TI_CLK_GATE, am4_usb_otg_ss0_refclk960m_parents, NULL },
89 { 0 },
90};
91
92static const char * const am4_gpio1_dbclk_parents[] __initconst = {
93 "clkdiv32k_ick",
94 NULL,
95};
96
97static const struct omap_clkctrl_bit_data am4_gpio2_bit_data[] __initconst = {
98 { 8, TI_CLK_GATE, am4_gpio1_dbclk_parents, NULL },
99 { 0 },
100};
101
102static const struct omap_clkctrl_bit_data am4_gpio3_bit_data[] __initconst = {
103 { 8, TI_CLK_GATE, am4_gpio1_dbclk_parents, NULL },
104 { 0 },
105};
106
107static const struct omap_clkctrl_bit_data am4_gpio4_bit_data[] __initconst = {
108 { 8, TI_CLK_GATE, am4_gpio1_dbclk_parents, NULL },
109 { 0 },
110};
111
112static const struct omap_clkctrl_bit_data am4_gpio5_bit_data[] __initconst = {
113 { 8, TI_CLK_GATE, am4_gpio1_dbclk_parents, NULL },
114 { 0 },
115};
116
117static const struct omap_clkctrl_bit_data am4_gpio6_bit_data[] __initconst = {
118 { 8, TI_CLK_GATE, am4_gpio1_dbclk_parents, NULL },
119 { 0 },
120};
121
122static const struct omap_clkctrl_reg_data am4_l4_per_clkctrl_regs[] __initconst = {
123 { AM4_L3_MAIN_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
124 { AM4_AES_CLKCTRL, NULL, CLKF_SW_SUP, "aes0_fck", "l3_clkdm" },
125 { AM4_DES_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
126 { AM4_L3_INSTR_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
127 { AM4_OCMCRAM_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
128 { AM4_SHAM_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
129 { AM4_VPFE0_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3s_clkdm" },
130 { AM4_VPFE1_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3s_clkdm" },
131 { AM4_TPCC_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
132 { AM4_TPTC0_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
133 { AM4_TPTC1_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
134 { AM4_TPTC2_CLKCTRL, NULL, CLKF_SW_SUP, "l3_gclk", "l3_clkdm" },
135 { AM4_L4_HS_CLKCTRL, NULL, CLKF_SW_SUP, "l4hs_gclk", "l3_clkdm" },
136 { AM4_GPMC_CLKCTRL, NULL, CLKF_SW_SUP, "l3s_gclk", "l3s_clkdm" },
137 { AM4_MCASP0_CLKCTRL, NULL, CLKF_SW_SUP, "mcasp0_fck", "l3s_clkdm" },
138 { AM4_MCASP1_CLKCTRL, NULL, CLKF_SW_SUP, "mcasp1_fck", "l3s_clkdm" },
139 { AM4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk", "l3s_clkdm" },
140 { AM4_QSPI_CLKCTRL, NULL, CLKF_SW_SUP, "l3s_gclk", "l3s_clkdm" },
141 { AM4_USB_OTG_SS0_CLKCTRL, am4_usb_otg_ss0_bit_data, CLKF_SW_SUP, "l3s_gclk", "l3s_clkdm" },
142 { AM4_USB_OTG_SS1_CLKCTRL, am4_usb_otg_ss1_bit_data, CLKF_SW_SUP, "l3s_gclk", "l3s_clkdm" },
143 { AM4_PRUSS_CLKCTRL, NULL, CLKF_SW_SUP, "pruss_ocp_gclk", "pruss_ocp_clkdm" },
144 { AM4_L4_LS_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
145 { AM4_D_CAN0_CLKCTRL, NULL, CLKF_SW_SUP, "dcan0_fck" },
146 { AM4_D_CAN1_CLKCTRL, NULL, CLKF_SW_SUP, "dcan1_fck" },
147 { AM4_EPWMSS0_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
148 { AM4_EPWMSS1_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
149 { AM4_EPWMSS2_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
150 { AM4_EPWMSS3_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
151 { AM4_EPWMSS4_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
152 { AM4_EPWMSS5_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
153 { AM4_ELM_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
154 { AM4_GPIO2_CLKCTRL, am4_gpio2_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
155 { AM4_GPIO3_CLKCTRL, am4_gpio3_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
156 { AM4_GPIO4_CLKCTRL, am4_gpio4_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
157 { AM4_GPIO5_CLKCTRL, am4_gpio5_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
158 { AM4_GPIO6_CLKCTRL, am4_gpio6_bit_data, CLKF_SW_SUP, "l4ls_gclk" },
159 { AM4_HDQ1W_CLKCTRL, NULL, CLKF_SW_SUP, "func_12m_clk" },
160 { AM4_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
161 { AM4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
162 { AM4_MAILBOX_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
163 { AM4_MMC1_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk" },
164 { AM4_MMC2_CLKCTRL, NULL, CLKF_SW_SUP, "mmc_clk" },
165 { AM4_RNG_CLKCTRL, NULL, CLKF_SW_SUP, "rng_fck" },
166 { AM4_SPI0_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
167 { AM4_SPI1_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
168 { AM4_SPI2_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
169 { AM4_SPI3_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
170 { AM4_SPI4_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
171 { AM4_SPINLOCK_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
172 { AM4_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "timer2_fck" },
173 { AM4_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "timer3_fck" },
174 { AM4_TIMER4_CLKCTRL, NULL, CLKF_SW_SUP, "timer4_fck" },
175 { AM4_TIMER5_CLKCTRL, NULL, CLKF_SW_SUP, "timer5_fck" },
176 { AM4_TIMER6_CLKCTRL, NULL, CLKF_SW_SUP, "timer6_fck" },
177 { AM4_TIMER7_CLKCTRL, NULL, CLKF_SW_SUP, "timer7_fck" },
178 { AM4_TIMER8_CLKCTRL, NULL, CLKF_SW_SUP, "timer8_fck" },
179 { AM4_TIMER9_CLKCTRL, NULL, CLKF_SW_SUP, "timer9_fck" },
180 { AM4_TIMER10_CLKCTRL, NULL, CLKF_SW_SUP, "timer10_fck" },
181 { AM4_TIMER11_CLKCTRL, NULL, CLKF_SW_SUP, "timer11_fck" },
182 { AM4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
183 { AM4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
184 { AM4_UART4_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
185 { AM4_UART5_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
186 { AM4_UART6_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_per_m2_div4_ck" },
187 { AM4_OCP2SCP0_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
188 { AM4_OCP2SCP1_CLKCTRL, NULL, CLKF_SW_SUP, "l4ls_gclk" },
189 { AM4_EMIF_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_ddr_m2_ck", "emif_clkdm" },
190 { AM4_DSS_CORE_CLKCTRL, NULL, CLKF_SW_SUP, "disp_clk", "dss_clkdm" },
191 { AM4_CPGMAC0_CLKCTRL, NULL, CLKF_SW_SUP, "cpsw_125mhz_gclk", "cpsw_125mhz_clkdm" },
192 { 0 },
193};
194
195const struct omap_clkctrl_data am4_clkctrl_data[] __initconst = {
196 { 0x44df2820, am4_l4_wkup_clkctrl_regs },
197 { 0x44df8320, am4_mpu_clkctrl_regs },
198 { 0x44df8420, am4_gfx_l3_clkctrl_regs },
199 { 0x44df8520, am4_l4_rtc_clkctrl_regs },
200 { 0x44df8820, am4_l4_per_clkctrl_regs },
201 { 0 },
202};
203
204const struct omap_clkctrl_data am438x_clkctrl_data[] __initconst = {
205 { 0x44df2820, am4_l4_wkup_clkctrl_regs },
206 { 0x44df8320, am4_mpu_clkctrl_regs },
207 { 0x44df8420, am4_gfx_l3_clkctrl_regs },
208 { 0x44df8820, am4_l4_per_clkctrl_regs },
209 { 0 },
210};
211
25static struct ti_dt_clk am43xx_clks[] = { 212static struct ti_dt_clk am43xx_clks[] = {
26 DT_CLK(NULL, "clk_32768_ck", "clk_32768_ck"),
27 DT_CLK(NULL, "clk_rc32k_ck", "clk_rc32k_ck"),
28 DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
29 DT_CLK(NULL, "virt_24000000_ck", "virt_24000000_ck"),
30 DT_CLK(NULL, "virt_25000000_ck", "virt_25000000_ck"),
31 DT_CLK(NULL, "virt_26000000_ck", "virt_26000000_ck"),
32 DT_CLK(NULL, "sys_clkin_ck", "sys_clkin_ck"),
33 DT_CLK(NULL, "tclkin_ck", "tclkin_ck"),
34 DT_CLK(NULL, "dpll_core_ck", "dpll_core_ck"),
35 DT_CLK(NULL, "dpll_core_x2_ck", "dpll_core_x2_ck"),
36 DT_CLK(NULL, "dpll_core_m4_ck", "dpll_core_m4_ck"),
37 DT_CLK(NULL, "dpll_core_m5_ck", "dpll_core_m5_ck"),
38 DT_CLK(NULL, "dpll_core_m6_ck", "dpll_core_m6_ck"),
39 DT_CLK(NULL, "dpll_mpu_ck", "dpll_mpu_ck"),
40 DT_CLK(NULL, "dpll_mpu_m2_ck", "dpll_mpu_m2_ck"),
41 DT_CLK(NULL, "dpll_ddr_ck", "dpll_ddr_ck"),
42 DT_CLK(NULL, "dpll_ddr_m2_ck", "dpll_ddr_m2_ck"),
43 DT_CLK(NULL, "dpll_disp_ck", "dpll_disp_ck"),
44 DT_CLK(NULL, "dpll_disp_m2_ck", "dpll_disp_m2_ck"),
45 DT_CLK(NULL, "dpll_per_ck", "dpll_per_ck"),
46 DT_CLK(NULL, "dpll_per_m2_ck", "dpll_per_m2_ck"),
47 DT_CLK(NULL, "dpll_per_m2_div4_wkupdm_ck", "dpll_per_m2_div4_wkupdm_ck"),
48 DT_CLK(NULL, "dpll_per_m2_div4_ck", "dpll_per_m2_div4_ck"),
49 DT_CLK(NULL, "adc_tsc_fck", "adc_tsc_fck"),
50 DT_CLK(NULL, "clkdiv32k_ck", "clkdiv32k_ck"),
51 DT_CLK(NULL, "clkdiv32k_ick", "clkdiv32k_ick"),
52 DT_CLK(NULL, "dcan0_fck", "dcan0_fck"),
53 DT_CLK(NULL, "dcan1_fck", "dcan1_fck"),
54 DT_CLK(NULL, "pruss_ocp_gclk", "pruss_ocp_gclk"),
55 DT_CLK(NULL, "mcasp0_fck", "mcasp0_fck"),
56 DT_CLK(NULL, "mcasp1_fck", "mcasp1_fck"),
57 DT_CLK(NULL, "smartreflex0_fck", "smartreflex0_fck"),
58 DT_CLK(NULL, "smartreflex1_fck", "smartreflex1_fck"),
59 DT_CLK(NULL, "sha0_fck", "sha0_fck"),
60 DT_CLK(NULL, "aes0_fck", "aes0_fck"),
61 DT_CLK(NULL, "rng_fck", "rng_fck"),
62 DT_CLK(NULL, "timer1_fck", "timer1_fck"),
63 DT_CLK(NULL, "timer2_fck", "timer2_fck"),
64 DT_CLK(NULL, "timer3_fck", "timer3_fck"),
65 DT_CLK(NULL, "timer4_fck", "timer4_fck"),
66 DT_CLK(NULL, "timer5_fck", "timer5_fck"),
67 DT_CLK(NULL, "timer6_fck", "timer6_fck"),
68 DT_CLK(NULL, "timer7_fck", "timer7_fck"),
69 DT_CLK(NULL, "wdt1_fck", "wdt1_fck"),
70 DT_CLK(NULL, "l3_gclk", "l3_gclk"),
71 DT_CLK(NULL, "dpll_core_m4_div2_ck", "dpll_core_m4_div2_ck"),
72 DT_CLK(NULL, "l4hs_gclk", "l4hs_gclk"),
73 DT_CLK(NULL, "l3s_gclk", "l3s_gclk"),
74 DT_CLK(NULL, "l4ls_gclk", "l4ls_gclk"),
75 DT_CLK(NULL, "clk_24mhz", "clk_24mhz"),
76 DT_CLK(NULL, "cpsw_125mhz_gclk", "cpsw_125mhz_gclk"),
77 DT_CLK(NULL, "cpsw_cpts_rft_clk", "cpsw_cpts_rft_clk"),
78 DT_CLK(NULL, "dpll_clksel_mac_clk", "dpll_clksel_mac_clk"),
79 DT_CLK(NULL, "gpio0_dbclk_mux_ck", "gpio0_dbclk_mux_ck"),
80 DT_CLK(NULL, "gpio0_dbclk", "gpio0_dbclk"),
81 DT_CLK(NULL, "gpio1_dbclk", "gpio1_dbclk"),
82 DT_CLK(NULL, "gpio2_dbclk", "gpio2_dbclk"),
83 DT_CLK(NULL, "gpio3_dbclk", "gpio3_dbclk"),
84 DT_CLK(NULL, "gpio4_dbclk", "gpio4_dbclk"),
85 DT_CLK(NULL, "gpio5_dbclk", "gpio5_dbclk"),
86 DT_CLK(NULL, "mmc_clk", "mmc_clk"),
87 DT_CLK(NULL, "gfx_fclk_clksel_ck", "gfx_fclk_clksel_ck"),
88 DT_CLK(NULL, "gfx_fck_div_ck", "gfx_fck_div_ck"),
89 DT_CLK(NULL, "timer_32k_ck", "clkdiv32k_ick"), 213 DT_CLK(NULL, "timer_32k_ck", "clkdiv32k_ick"),
90 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"), 214 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"),
91 DT_CLK(NULL, "sysclk_div", "sysclk_div"), 215 DT_CLK(NULL, "gpio0_dbclk", "l4_wkup_cm:0348:8"),
92 DT_CLK(NULL, "disp_clk", "disp_clk"), 216 DT_CLK(NULL, "gpio1_dbclk", "l4_per_cm:0458:8"),
93 DT_CLK(NULL, "clk_32k_mosc_ck", "clk_32k_mosc_ck"), 217 DT_CLK(NULL, "gpio2_dbclk", "l4_per_cm:0460:8"),
94 DT_CLK(NULL, "clk_32k_tpm_ck", "clk_32k_tpm_ck"), 218 DT_CLK(NULL, "gpio3_dbclk", "l4_per_cm:0468:8"),
95 DT_CLK(NULL, "dpll_extdev_ck", "dpll_extdev_ck"), 219 DT_CLK(NULL, "gpio4_dbclk", "l4_per_cm:0470:8"),
96 DT_CLK(NULL, "dpll_extdev_m2_ck", "dpll_extdev_m2_ck"), 220 DT_CLK(NULL, "gpio5_dbclk", "l4_per_cm:0478:8"),
97 DT_CLK(NULL, "mux_synctimer32k_ck", "mux_synctimer32k_ck"), 221 DT_CLK(NULL, "synctimer_32kclk", "l4_wkup_cm:0210:8"),
98 DT_CLK(NULL, "synctimer_32kclk", "synctimer_32kclk"), 222 DT_CLK(NULL, "usb_otg_ss0_refclk960m", "l4_per_cm:0240:8"),
99 DT_CLK(NULL, "timer8_fck", "timer8_fck"), 223 DT_CLK(NULL, "usb_otg_ss1_refclk960m", "l4_per_cm:0248:8"),
100 DT_CLK(NULL, "timer9_fck", "timer9_fck"),
101 DT_CLK(NULL, "timer10_fck", "timer10_fck"),
102 DT_CLK(NULL, "timer11_fck", "timer11_fck"),
103 DT_CLK(NULL, "cpsw_50m_clkdiv", "cpsw_50m_clkdiv"),
104 DT_CLK(NULL, "cpsw_5m_clkdiv", "cpsw_5m_clkdiv"),
105 DT_CLK(NULL, "dpll_ddr_x2_ck", "dpll_ddr_x2_ck"),
106 DT_CLK(NULL, "dpll_ddr_m4_ck", "dpll_ddr_m4_ck"),
107 DT_CLK(NULL, "dpll_per_clkdcoldo", "dpll_per_clkdcoldo"),
108 DT_CLK(NULL, "dll_aging_clk_div", "dll_aging_clk_div"),
109 DT_CLK(NULL, "div_core_25m_ck", "div_core_25m_ck"),
110 DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
111 DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
112 DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
113 DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
114 DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
115 DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
116 DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
117 DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
118 DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
119 DT_CLK("48300200.pwm", "tbclk", "ehrpwm0_tbclk"),
120 DT_CLK("48302200.pwm", "tbclk", "ehrpwm1_tbclk"),
121 DT_CLK("48304200.pwm", "tbclk", "ehrpwm2_tbclk"),
122 DT_CLK("48306200.pwm", "tbclk", "ehrpwm3_tbclk"),
123 DT_CLK("48308200.pwm", "tbclk", "ehrpwm4_tbclk"),
124 DT_CLK("4830a200.pwm", "tbclk", "ehrpwm5_tbclk"),
125 { .node_name = NULL }, 224 { .node_name = NULL },
126}; 225};
127 226
@@ -133,6 +232,8 @@ int __init am43xx_dt_clk_init(void)
133 232
134 omap2_clk_disable_autoidle_all(); 233 omap2_clk_disable_autoidle_all();
135 234
235 ti_clk_add_aliases();
236
136 /* 237 /*
137 * cpsw_cpts_rft_clk has got the choice of 3 clocksources 238 * cpsw_cpts_rft_clk has got the choice of 3 clocksources
138 * dpll_core_m4_ck, dpll_core_m5_ck and dpll_disp_m2_ck. 239 * dpll_core_m4_ck, dpll_core_m5_ck and dpll_disp_m2_ck.
diff --git a/drivers/clk/ti/clk-44xx.c b/drivers/clk/ti/clk-44xx.c
index 2005f032c02f..339d30d64ebb 100644
--- a/drivers/clk/ti/clk-44xx.c
+++ b/drivers/clk/ti/clk-44xx.c
@@ -35,7 +35,7 @@
35#define OMAP4_DPLL_USB_DEFFREQ 960000000 35#define OMAP4_DPLL_USB_DEFFREQ 960000000
36 36
37static const struct omap_clkctrl_reg_data omap4_mpuss_clkctrl_regs[] __initconst = { 37static const struct omap_clkctrl_reg_data omap4_mpuss_clkctrl_regs[] __initconst = {
38 { OMAP4_MPU_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_mpu_m2_ck" }, 38 { OMAP4_MPU_CLKCTRL, NULL, 0, "dpll_mpu_m2_ck" },
39 { 0 }, 39 { 0 },
40}; 40};
41 41
@@ -59,7 +59,7 @@ static const struct omap_clkctrl_bit_data omap4_aess_bit_data[] __initconst = {
59}; 59};
60 60
61static const char * const omap4_func_dmic_abe_gfclk_parents[] __initconst = { 61static const char * const omap4_func_dmic_abe_gfclk_parents[] __initconst = {
62 "dmic_sync_mux_ck", 62 "abe_cm:clk:0018:26",
63 "pad_clks_ck", 63 "pad_clks_ck",
64 "slimbus_clk", 64 "slimbus_clk",
65 NULL, 65 NULL,
@@ -79,7 +79,7 @@ static const struct omap_clkctrl_bit_data omap4_dmic_bit_data[] __initconst = {
79}; 79};
80 80
81static const char * const omap4_func_mcasp_abe_gfclk_parents[] __initconst = { 81static const char * const omap4_func_mcasp_abe_gfclk_parents[] __initconst = {
82 "mcasp_sync_mux_ck", 82 "abe_cm:clk:0020:26",
83 "pad_clks_ck", 83 "pad_clks_ck",
84 "slimbus_clk", 84 "slimbus_clk",
85 NULL, 85 NULL,
@@ -92,7 +92,7 @@ static const struct omap_clkctrl_bit_data omap4_mcasp_bit_data[] __initconst = {
92}; 92};
93 93
94static const char * const omap4_func_mcbsp1_gfclk_parents[] __initconst = { 94static const char * const omap4_func_mcbsp1_gfclk_parents[] __initconst = {
95 "mcbsp1_sync_mux_ck", 95 "abe_cm:clk:0028:26",
96 "pad_clks_ck", 96 "pad_clks_ck",
97 "slimbus_clk", 97 "slimbus_clk",
98 NULL, 98 NULL,
@@ -105,7 +105,7 @@ static const struct omap_clkctrl_bit_data omap4_mcbsp1_bit_data[] __initconst =
105}; 105};
106 106
107static const char * const omap4_func_mcbsp2_gfclk_parents[] __initconst = { 107static const char * const omap4_func_mcbsp2_gfclk_parents[] __initconst = {
108 "mcbsp2_sync_mux_ck", 108 "abe_cm:clk:0030:26",
109 "pad_clks_ck", 109 "pad_clks_ck",
110 "slimbus_clk", 110 "slimbus_clk",
111 NULL, 111 NULL,
@@ -118,7 +118,7 @@ static const struct omap_clkctrl_bit_data omap4_mcbsp2_bit_data[] __initconst =
118}; 118};
119 119
120static const char * const omap4_func_mcbsp3_gfclk_parents[] __initconst = { 120static const char * const omap4_func_mcbsp3_gfclk_parents[] __initconst = {
121 "mcbsp3_sync_mux_ck", 121 "abe_cm:clk:0038:26",
122 "pad_clks_ck", 122 "pad_clks_ck",
123 "slimbus_clk", 123 "slimbus_clk",
124 NULL, 124 NULL,
@@ -186,18 +186,18 @@ static const struct omap_clkctrl_bit_data omap4_timer8_bit_data[] __initconst =
186 186
187static const struct omap_clkctrl_reg_data omap4_abe_clkctrl_regs[] __initconst = { 187static const struct omap_clkctrl_reg_data omap4_abe_clkctrl_regs[] __initconst = {
188 { OMAP4_L4_ABE_CLKCTRL, NULL, 0, "ocp_abe_iclk" }, 188 { OMAP4_L4_ABE_CLKCTRL, NULL, 0, "ocp_abe_iclk" },
189 { OMAP4_AESS_CLKCTRL, omap4_aess_bit_data, CLKF_SW_SUP, "aess_fclk" }, 189 { OMAP4_AESS_CLKCTRL, omap4_aess_bit_data, CLKF_SW_SUP, "abe_cm:clk:0008:24" },
190 { OMAP4_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" }, 190 { OMAP4_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
191 { OMAP4_DMIC_CLKCTRL, omap4_dmic_bit_data, CLKF_SW_SUP, "func_dmic_abe_gfclk" }, 191 { OMAP4_DMIC_CLKCTRL, omap4_dmic_bit_data, CLKF_SW_SUP, "abe_cm:clk:0018:24" },
192 { OMAP4_MCASP_CLKCTRL, omap4_mcasp_bit_data, CLKF_SW_SUP, "func_mcasp_abe_gfclk" }, 192 { OMAP4_MCASP_CLKCTRL, omap4_mcasp_bit_data, CLKF_SW_SUP, "abe_cm:clk:0020:24" },
193 { OMAP4_MCBSP1_CLKCTRL, omap4_mcbsp1_bit_data, CLKF_SW_SUP, "func_mcbsp1_gfclk" }, 193 { OMAP4_MCBSP1_CLKCTRL, omap4_mcbsp1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0028:24" },
194 { OMAP4_MCBSP2_CLKCTRL, omap4_mcbsp2_bit_data, CLKF_SW_SUP, "func_mcbsp2_gfclk" }, 194 { OMAP4_MCBSP2_CLKCTRL, omap4_mcbsp2_bit_data, CLKF_SW_SUP, "abe_cm:clk:0030:24" },
195 { OMAP4_MCBSP3_CLKCTRL, omap4_mcbsp3_bit_data, CLKF_SW_SUP, "func_mcbsp3_gfclk" }, 195 { OMAP4_MCBSP3_CLKCTRL, omap4_mcbsp3_bit_data, CLKF_SW_SUP, "abe_cm:clk:0038:24" },
196 { OMAP4_SLIMBUS1_CLKCTRL, omap4_slimbus1_bit_data, CLKF_SW_SUP, "slimbus1_fclk_0" }, 196 { OMAP4_SLIMBUS1_CLKCTRL, omap4_slimbus1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0040:8" },
197 { OMAP4_TIMER5_CLKCTRL, omap4_timer5_bit_data, CLKF_SW_SUP, "timer5_sync_mux" }, 197 { OMAP4_TIMER5_CLKCTRL, omap4_timer5_bit_data, CLKF_SW_SUP, "abe_cm:clk:0048:24" },
198 { OMAP4_TIMER6_CLKCTRL, omap4_timer6_bit_data, CLKF_SW_SUP, "timer6_sync_mux" }, 198 { OMAP4_TIMER6_CLKCTRL, omap4_timer6_bit_data, CLKF_SW_SUP, "abe_cm:clk:0050:24" },
199 { OMAP4_TIMER7_CLKCTRL, omap4_timer7_bit_data, CLKF_SW_SUP, "timer7_sync_mux" }, 199 { OMAP4_TIMER7_CLKCTRL, omap4_timer7_bit_data, CLKF_SW_SUP, "abe_cm:clk:0058:24" },
200 { OMAP4_TIMER8_CLKCTRL, omap4_timer8_bit_data, CLKF_SW_SUP, "timer8_sync_mux" }, 200 { OMAP4_TIMER8_CLKCTRL, omap4_timer8_bit_data, CLKF_SW_SUP, "abe_cm:clk:0060:24" },
201 { OMAP4_WD_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 201 { OMAP4_WD_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
202 { 0 }, 202 { 0 },
203}; 203};
@@ -280,6 +280,7 @@ static const char * const omap4_fdif_fck_parents[] __initconst = {
280 280
281static const struct omap_clkctrl_div_data omap4_fdif_fck_data __initconst = { 281static const struct omap_clkctrl_div_data omap4_fdif_fck_data __initconst = {
282 .max_div = 4, 282 .max_div = 4,
283 .flags = CLK_DIVIDER_POWER_OF_TWO,
283}; 284};
284 285
285static const struct omap_clkctrl_bit_data omap4_fdif_bit_data[] __initconst = { 286static const struct omap_clkctrl_bit_data omap4_fdif_bit_data[] __initconst = {
@@ -289,7 +290,7 @@ static const struct omap_clkctrl_bit_data omap4_fdif_bit_data[] __initconst = {
289 290
290static const struct omap_clkctrl_reg_data omap4_iss_clkctrl_regs[] __initconst = { 291static const struct omap_clkctrl_reg_data omap4_iss_clkctrl_regs[] __initconst = {
291 { OMAP4_ISS_CLKCTRL, omap4_iss_bit_data, CLKF_SW_SUP, "ducati_clk_mux_ck" }, 292 { OMAP4_ISS_CLKCTRL, omap4_iss_bit_data, CLKF_SW_SUP, "ducati_clk_mux_ck" },
292 { OMAP4_FDIF_CLKCTRL, omap4_fdif_bit_data, CLKF_SW_SUP, "fdif_fck" }, 293 { OMAP4_FDIF_CLKCTRL, omap4_fdif_bit_data, CLKF_SW_SUP, "iss_cm:clk:0008:24" },
293 { 0 }, 294 { 0 },
294}; 295};
295 296
@@ -322,7 +323,7 @@ static const struct omap_clkctrl_bit_data omap4_dss_core_bit_data[] __initconst
322}; 323};
323 324
324static const struct omap_clkctrl_reg_data omap4_l3_dss_clkctrl_regs[] __initconst = { 325static const struct omap_clkctrl_reg_data omap4_l3_dss_clkctrl_regs[] __initconst = {
325 { OMAP4_DSS_CORE_CLKCTRL, omap4_dss_core_bit_data, CLKF_SW_SUP, "dss_dss_clk" }, 326 { OMAP4_DSS_CORE_CLKCTRL, omap4_dss_core_bit_data, CLKF_SW_SUP, "l3_dss_cm:clk:0000:8" },
326 { 0 }, 327 { 0 },
327}; 328};
328 329
@@ -338,7 +339,7 @@ static const struct omap_clkctrl_bit_data omap4_gpu_bit_data[] __initconst = {
338}; 339};
339 340
340static const struct omap_clkctrl_reg_data omap4_l3_gfx_clkctrl_regs[] __initconst = { 341static const struct omap_clkctrl_reg_data omap4_l3_gfx_clkctrl_regs[] __initconst = {
341 { OMAP4_GPU_CLKCTRL, omap4_gpu_bit_data, CLKF_SW_SUP, "sgx_clk_mux" }, 342 { OMAP4_GPU_CLKCTRL, omap4_gpu_bit_data, CLKF_SW_SUP, "l3_gfx_cm:clk:0000:24" },
342 { 0 }, 343 { 0 },
343}; 344};
344 345
@@ -365,6 +366,7 @@ static const char * const omap4_hsi_fck_parents[] __initconst = {
365 366
366static const struct omap_clkctrl_div_data omap4_hsi_fck_data __initconst = { 367static const struct omap_clkctrl_div_data omap4_hsi_fck_data __initconst = {
367 .max_div = 4, 368 .max_div = 4,
369 .flags = CLK_DIVIDER_POWER_OF_TWO,
368}; 370};
369 371
370static const struct omap_clkctrl_bit_data omap4_hsi_bit_data[] __initconst = { 372static const struct omap_clkctrl_bit_data omap4_hsi_bit_data[] __initconst = {
@@ -373,12 +375,12 @@ static const struct omap_clkctrl_bit_data omap4_hsi_bit_data[] __initconst = {
373}; 375};
374 376
375static const char * const omap4_usb_host_hs_utmi_p1_clk_parents[] __initconst = { 377static const char * const omap4_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
376 "utmi_p1_gfclk", 378 "l3_init_cm:clk:0038:24",
377 NULL, 379 NULL,
378}; 380};
379 381
380static const char * const omap4_usb_host_hs_utmi_p2_clk_parents[] __initconst = { 382static const char * const omap4_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
381 "utmi_p2_gfclk", 383 "l3_init_cm:clk:0038:25",
382 NULL, 384 NULL,
383}; 385};
384 386
@@ -419,7 +421,7 @@ static const struct omap_clkctrl_bit_data omap4_usb_host_hs_bit_data[] __initcon
419}; 421};
420 422
421static const char * const omap4_usb_otg_hs_xclk_parents[] __initconst = { 423static const char * const omap4_usb_otg_hs_xclk_parents[] __initconst = {
422 "otg_60m_gfclk", 424 "l3_init_cm:clk:0040:24",
423 NULL, 425 NULL,
424}; 426};
425 427
@@ -453,14 +455,14 @@ static const struct omap_clkctrl_bit_data omap4_ocp2scp_usb_phy_bit_data[] __ini
453}; 455};
454 456
455static const struct omap_clkctrl_reg_data omap4_l3_init_clkctrl_regs[] __initconst = { 457static const struct omap_clkctrl_reg_data omap4_l3_init_clkctrl_regs[] __initconst = {
456 { OMAP4_MMC1_CLKCTRL, omap4_mmc1_bit_data, CLKF_SW_SUP, "hsmmc1_fclk" }, 458 { OMAP4_MMC1_CLKCTRL, omap4_mmc1_bit_data, CLKF_SW_SUP, "l3_init_cm:clk:0008:24" },
457 { OMAP4_MMC2_CLKCTRL, omap4_mmc2_bit_data, CLKF_SW_SUP, "hsmmc2_fclk" }, 459 { OMAP4_MMC2_CLKCTRL, omap4_mmc2_bit_data, CLKF_SW_SUP, "l3_init_cm:clk:0010:24" },
458 { OMAP4_HSI_CLKCTRL, omap4_hsi_bit_data, CLKF_HW_SUP, "hsi_fck" }, 460 { OMAP4_HSI_CLKCTRL, omap4_hsi_bit_data, CLKF_HW_SUP, "l3_init_cm:clk:0018:24" },
459 { OMAP4_USB_HOST_HS_CLKCTRL, omap4_usb_host_hs_bit_data, CLKF_SW_SUP, "init_60m_fclk" }, 461 { OMAP4_USB_HOST_HS_CLKCTRL, omap4_usb_host_hs_bit_data, CLKF_SW_SUP, "init_60m_fclk" },
460 { OMAP4_USB_OTG_HS_CLKCTRL, omap4_usb_otg_hs_bit_data, CLKF_HW_SUP, "l3_div_ck" }, 462 { OMAP4_USB_OTG_HS_CLKCTRL, omap4_usb_otg_hs_bit_data, CLKF_HW_SUP, "l3_div_ck" },
461 { OMAP4_USB_TLL_HS_CLKCTRL, omap4_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 463 { OMAP4_USB_TLL_HS_CLKCTRL, omap4_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_div_ck" },
462 { OMAP4_USB_HOST_FS_CLKCTRL, NULL, CLKF_SW_SUP, "func_48mc_fclk" }, 464 { OMAP4_USB_HOST_FS_CLKCTRL, NULL, CLKF_SW_SUP, "func_48mc_fclk" },
463 { OMAP4_OCP2SCP_USB_PHY_CLKCTRL, omap4_ocp2scp_usb_phy_bit_data, CLKF_HW_SUP, "ocp2scp_usb_phy_phy_48m" }, 465 { OMAP4_OCP2SCP_USB_PHY_CLKCTRL, omap4_ocp2scp_usb_phy_bit_data, CLKF_HW_SUP, "l3_init_cm:clk:00c0:8" },
464 { 0 }, 466 { 0 },
465}; 467};
466 468
@@ -531,7 +533,7 @@ static const struct omap_clkctrl_bit_data omap4_gpio6_bit_data[] __initconst = {
531}; 533};
532 534
533static const char * const omap4_per_mcbsp4_gfclk_parents[] __initconst = { 535static const char * const omap4_per_mcbsp4_gfclk_parents[] __initconst = {
534 "mcbsp4_sync_mux_ck", 536 "l4_per_cm:clk:00c0:26",
535 "pad_clks_ck", 537 "pad_clks_ck",
536 NULL, 538 NULL,
537}; 539};
@@ -544,7 +546,7 @@ static const char * const omap4_mcbsp4_sync_mux_ck_parents[] __initconst = {
544 546
545static const struct omap_clkctrl_bit_data omap4_mcbsp4_bit_data[] __initconst = { 547static const struct omap_clkctrl_bit_data omap4_mcbsp4_bit_data[] __initconst = {
546 { 24, TI_CLK_MUX, omap4_per_mcbsp4_gfclk_parents, NULL }, 548 { 24, TI_CLK_MUX, omap4_per_mcbsp4_gfclk_parents, NULL },
547 { 25, TI_CLK_MUX, omap4_mcbsp4_sync_mux_ck_parents, NULL }, 549 { 26, TI_CLK_MUX, omap4_mcbsp4_sync_mux_ck_parents, NULL },
548 { 0 }, 550 { 0 },
549}; 551};
550 552
@@ -571,12 +573,12 @@ static const struct omap_clkctrl_bit_data omap4_slimbus2_bit_data[] __initconst
571}; 573};
572 574
573static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initconst = { 575static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initconst = {
574 { OMAP4_TIMER10_CLKCTRL, omap4_timer10_bit_data, CLKF_SW_SUP, "cm2_dm10_mux" }, 576 { OMAP4_TIMER10_CLKCTRL, omap4_timer10_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0008:24" },
575 { OMAP4_TIMER11_CLKCTRL, omap4_timer11_bit_data, CLKF_SW_SUP, "cm2_dm11_mux" }, 577 { OMAP4_TIMER11_CLKCTRL, omap4_timer11_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0010:24" },
576 { OMAP4_TIMER2_CLKCTRL, omap4_timer2_bit_data, CLKF_SW_SUP, "cm2_dm2_mux" }, 578 { OMAP4_TIMER2_CLKCTRL, omap4_timer2_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0018:24" },
577 { OMAP4_TIMER3_CLKCTRL, omap4_timer3_bit_data, CLKF_SW_SUP, "cm2_dm3_mux" }, 579 { OMAP4_TIMER3_CLKCTRL, omap4_timer3_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0020:24" },
578 { OMAP4_TIMER4_CLKCTRL, omap4_timer4_bit_data, CLKF_SW_SUP, "cm2_dm4_mux" }, 580 { OMAP4_TIMER4_CLKCTRL, omap4_timer4_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0028:24" },
579 { OMAP4_TIMER9_CLKCTRL, omap4_timer9_bit_data, CLKF_SW_SUP, "cm2_dm9_mux" }, 581 { OMAP4_TIMER9_CLKCTRL, omap4_timer9_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0030:24" },
580 { OMAP4_ELM_CLKCTRL, NULL, 0, "l4_div_ck" }, 582 { OMAP4_ELM_CLKCTRL, NULL, 0, "l4_div_ck" },
581 { OMAP4_GPIO2_CLKCTRL, omap4_gpio2_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 583 { OMAP4_GPIO2_CLKCTRL, omap4_gpio2_bit_data, CLKF_HW_SUP, "l4_div_ck" },
582 { OMAP4_GPIO3_CLKCTRL, omap4_gpio3_bit_data, CLKF_HW_SUP, "l4_div_ck" }, 584 { OMAP4_GPIO3_CLKCTRL, omap4_gpio3_bit_data, CLKF_HW_SUP, "l4_div_ck" },
@@ -589,14 +591,14 @@ static const struct omap_clkctrl_reg_data omap4_l4_per_clkctrl_regs[] __initcons
589 { OMAP4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 591 { OMAP4_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
590 { OMAP4_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 592 { OMAP4_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
591 { OMAP4_L4_PER_CLKCTRL, NULL, 0, "l4_div_ck" }, 593 { OMAP4_L4_PER_CLKCTRL, NULL, 0, "l4_div_ck" },
592 { OMAP4_MCBSP4_CLKCTRL, omap4_mcbsp4_bit_data, CLKF_SW_SUP, "per_mcbsp4_gfclk" }, 594 { OMAP4_MCBSP4_CLKCTRL, omap4_mcbsp4_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:00c0:24" },
593 { OMAP4_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 595 { OMAP4_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
594 { OMAP4_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 596 { OMAP4_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
595 { OMAP4_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 597 { OMAP4_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
596 { OMAP4_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 598 { OMAP4_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
597 { OMAP4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 599 { OMAP4_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
598 { OMAP4_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 600 { OMAP4_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
599 { OMAP4_SLIMBUS2_CLKCTRL, omap4_slimbus2_bit_data, CLKF_SW_SUP, "slimbus2_fclk_0" }, 601 { OMAP4_SLIMBUS2_CLKCTRL, omap4_slimbus2_bit_data, CLKF_SW_SUP, "l4_per_cm:clk:0118:8" },
600 { OMAP4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 602 { OMAP4_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
601 { OMAP4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 603 { OMAP4_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
602 { OMAP4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 604 { OMAP4_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
@@ -619,7 +621,7 @@ static const struct omap_clkctrl_reg_data omap4_l4_wkup_clkctrl_regs[] __initcon
619 { OMAP4_L4_WKUP_CLKCTRL, NULL, 0, "l4_wkup_clk_mux_ck" }, 621 { OMAP4_L4_WKUP_CLKCTRL, NULL, 0, "l4_wkup_clk_mux_ck" },
620 { OMAP4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 622 { OMAP4_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
621 { OMAP4_GPIO1_CLKCTRL, omap4_gpio1_bit_data, CLKF_HW_SUP, "l4_wkup_clk_mux_ck" }, 623 { OMAP4_GPIO1_CLKCTRL, omap4_gpio1_bit_data, CLKF_HW_SUP, "l4_wkup_clk_mux_ck" },
622 { OMAP4_TIMER1_CLKCTRL, omap4_timer1_bit_data, CLKF_SW_SUP, "dmt1_clk_mux" }, 624 { OMAP4_TIMER1_CLKCTRL, omap4_timer1_bit_data, CLKF_SW_SUP, "l4_wkup_cm:clk:0020:24" },
623 { OMAP4_COUNTER_32K_CLKCTRL, NULL, 0, "sys_32k_ck" }, 625 { OMAP4_COUNTER_32K_CLKCTRL, NULL, 0, "sys_32k_ck" },
624 { OMAP4_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 626 { OMAP4_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
625 { 0 }, 627 { 0 },
@@ -633,7 +635,7 @@ static const char * const omap4_pmd_stm_clock_mux_ck_parents[] __initconst = {
633}; 635};
634 636
635static const char * const omap4_trace_clk_div_div_ck_parents[] __initconst = { 637static const char * const omap4_trace_clk_div_div_ck_parents[] __initconst = {
636 "pmd_trace_clk_mux_ck", 638 "emu_sys_cm:clk:0000:22",
637 NULL, 639 NULL,
638}; 640};
639 641
@@ -651,12 +653,13 @@ static const struct omap_clkctrl_div_data omap4_trace_clk_div_div_ck_data __init
651}; 653};
652 654
653static const char * const omap4_stm_clk_div_ck_parents[] __initconst = { 655static const char * const omap4_stm_clk_div_ck_parents[] __initconst = {
654 "pmd_stm_clock_mux_ck", 656 "emu_sys_cm:clk:0000:20",
655 NULL, 657 NULL,
656}; 658};
657 659
658static const struct omap_clkctrl_div_data omap4_stm_clk_div_ck_data __initconst = { 660static const struct omap_clkctrl_div_data omap4_stm_clk_div_ck_data __initconst = {
659 .max_div = 64, 661 .max_div = 64,
662 .flags = CLK_DIVIDER_POWER_OF_TWO,
660}; 663};
661 664
662static const struct omap_clkctrl_bit_data omap4_debugss_bit_data[] __initconst = { 665static const struct omap_clkctrl_bit_data omap4_debugss_bit_data[] __initconst = {
@@ -697,52 +700,79 @@ const struct omap_clkctrl_data omap4_clkctrl_data[] __initconst = {
697}; 700};
698 701
699static struct ti_dt_clk omap44xx_clks[] = { 702static struct ti_dt_clk omap44xx_clks[] = {
700 DT_CLK("smp_twd", NULL, "mpu_periphclk"),
701 DT_CLK("omapdss_dss", "ick", "dss_fck"),
702 DT_CLK("usbhs_omap", "fs_fck", "usb_host_fs_fck"),
703 DT_CLK("usbhs_omap", "hs_fck", "usb_host_hs_fck"),
704 DT_CLK("musb-omap2430", "ick", "usb_otg_hs_ick"),
705 DT_CLK("usbhs_omap", "usbtll_ick", "usb_tll_hs_ick"),
706 DT_CLK("usbhs_tll", "usbtll_ick", "usb_tll_hs_ick"),
707 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
708 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
709 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
710 DT_CLK("omap_i2c.4", "ick", "dummy_ck"),
711 DT_CLK(NULL, "mailboxes_ick", "dummy_ck"),
712 DT_CLK("omap_hsmmc.0", "ick", "dummy_ck"),
713 DT_CLK("omap_hsmmc.1", "ick", "dummy_ck"),
714 DT_CLK("omap_hsmmc.2", "ick", "dummy_ck"),
715 DT_CLK("omap_hsmmc.3", "ick", "dummy_ck"),
716 DT_CLK("omap_hsmmc.4", "ick", "dummy_ck"),
717 DT_CLK("omap-mcbsp.1", "ick", "dummy_ck"),
718 DT_CLK("omap-mcbsp.2", "ick", "dummy_ck"),
719 DT_CLK("omap-mcbsp.3", "ick", "dummy_ck"),
720 DT_CLK("omap-mcbsp.4", "ick", "dummy_ck"),
721 DT_CLK("omap2_mcspi.1", "ick", "dummy_ck"),
722 DT_CLK("omap2_mcspi.2", "ick", "dummy_ck"),
723 DT_CLK("omap2_mcspi.3", "ick", "dummy_ck"),
724 DT_CLK("omap2_mcspi.4", "ick", "dummy_ck"),
725 DT_CLK(NULL, "uart1_ick", "dummy_ck"),
726 DT_CLK(NULL, "uart2_ick", "dummy_ck"),
727 DT_CLK(NULL, "uart3_ick", "dummy_ck"),
728 DT_CLK(NULL, "uart4_ick", "dummy_ck"),
729 DT_CLK("usbhs_omap", "usbhost_ick", "dummy_ck"),
730 DT_CLK("usbhs_omap", "usbtll_fck", "dummy_ck"),
731 DT_CLK("usbhs_tll", "usbtll_fck", "dummy_ck"),
732 DT_CLK("omap_wdt", "ick", "dummy_ck"),
733 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"), 703 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"),
734 DT_CLK("4a318000.timer", "timer_sys_ck", "sys_clkin_ck"), 704 /*
735 DT_CLK("48032000.timer", "timer_sys_ck", "sys_clkin_ck"), 705 * XXX: All the clock aliases below are only needed for legacy
736 DT_CLK("48034000.timer", "timer_sys_ck", "sys_clkin_ck"), 706 * hwmod support. Once hwmod is removed, these can be removed
737 DT_CLK("48036000.timer", "timer_sys_ck", "sys_clkin_ck"), 707 * also.
738 DT_CLK("4803e000.timer", "timer_sys_ck", "sys_clkin_ck"), 708 */
739 DT_CLK("48086000.timer", "timer_sys_ck", "sys_clkin_ck"), 709 DT_CLK(NULL, "aess_fclk", "abe_cm:0008:24"),
740 DT_CLK("48088000.timer", "timer_sys_ck", "sys_clkin_ck"), 710 DT_CLK(NULL, "cm2_dm10_mux", "l4_per_cm:0008:24"),
741 DT_CLK("40138000.timer", "timer_sys_ck", "syc_clk_div_ck"), 711 DT_CLK(NULL, "cm2_dm11_mux", "l4_per_cm:0010:24"),
742 DT_CLK("4013a000.timer", "timer_sys_ck", "syc_clk_div_ck"), 712 DT_CLK(NULL, "cm2_dm2_mux", "l4_per_cm:0018:24"),
743 DT_CLK("4013c000.timer", "timer_sys_ck", "syc_clk_div_ck"), 713 DT_CLK(NULL, "cm2_dm3_mux", "l4_per_cm:0020:24"),
744 DT_CLK("4013e000.timer", "timer_sys_ck", "syc_clk_div_ck"), 714 DT_CLK(NULL, "cm2_dm4_mux", "l4_per_cm:0028:24"),
745 DT_CLK(NULL, "cpufreq_ck", "dpll_mpu_ck"), 715 DT_CLK(NULL, "cm2_dm9_mux", "l4_per_cm:0030:24"),
716 DT_CLK(NULL, "dmic_sync_mux_ck", "abe_cm:0018:26"),
717 DT_CLK(NULL, "dmt1_clk_mux", "l4_wkup_cm:0020:24"),
718 DT_CLK(NULL, "dss_48mhz_clk", "l3_dss_cm:0000:9"),
719 DT_CLK(NULL, "dss_dss_clk", "l3_dss_cm:0000:8"),
720 DT_CLK(NULL, "dss_sys_clk", "l3_dss_cm:0000:10"),
721 DT_CLK(NULL, "dss_tv_clk", "l3_dss_cm:0000:11"),
722 DT_CLK(NULL, "fdif_fck", "iss_cm:0008:24"),
723 DT_CLK(NULL, "func_dmic_abe_gfclk", "abe_cm:0018:24"),
724 DT_CLK(NULL, "func_mcasp_abe_gfclk", "abe_cm:0020:24"),
725 DT_CLK(NULL, "func_mcbsp1_gfclk", "abe_cm:0028:24"),
726 DT_CLK(NULL, "func_mcbsp2_gfclk", "abe_cm:0030:24"),
727 DT_CLK(NULL, "func_mcbsp3_gfclk", "abe_cm:0038:24"),
728 DT_CLK(NULL, "gpio1_dbclk", "l4_wkup_cm:0018:8"),
729 DT_CLK(NULL, "gpio2_dbclk", "l4_per_cm:0040:8"),
730 DT_CLK(NULL, "gpio3_dbclk", "l4_per_cm:0048:8"),
731 DT_CLK(NULL, "gpio4_dbclk", "l4_per_cm:0050:8"),
732 DT_CLK(NULL, "gpio5_dbclk", "l4_per_cm:0058:8"),
733 DT_CLK(NULL, "gpio6_dbclk", "l4_per_cm:0060:8"),
734 DT_CLK(NULL, "hsi_fck", "l3_init_cm:0018:24"),
735 DT_CLK(NULL, "hsmmc1_fclk", "l3_init_cm:0008:24"),
736 DT_CLK(NULL, "hsmmc2_fclk", "l3_init_cm:0010:24"),
737 DT_CLK(NULL, "iss_ctrlclk", "iss_cm:0000:8"),
738 DT_CLK(NULL, "mcasp_sync_mux_ck", "abe_cm:0020:26"),
739 DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe_cm:0028:26"),
740 DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe_cm:0030:26"),
741 DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe_cm:0038:26"),
742 DT_CLK(NULL, "mcbsp4_sync_mux_ck", "l4_per_cm:00c0:26"),
743 DT_CLK(NULL, "ocp2scp_usb_phy_phy_48m", "l3_init_cm:00c0:8"),
744 DT_CLK(NULL, "otg_60m_gfclk", "l3_init_cm:0040:24"),
745 DT_CLK(NULL, "per_mcbsp4_gfclk", "l4_per_cm:00c0:24"),
746 DT_CLK(NULL, "pmd_stm_clock_mux_ck", "emu_sys_cm:0000:20"),
747 DT_CLK(NULL, "pmd_trace_clk_mux_ck", "emu_sys_cm:0000:22"),
748 DT_CLK(NULL, "sgx_clk_mux", "l3_gfx_cm:0000:24"),
749 DT_CLK(NULL, "slimbus1_fclk_0", "abe_cm:0040:8"),
750 DT_CLK(NULL, "slimbus1_fclk_1", "abe_cm:0040:9"),
751 DT_CLK(NULL, "slimbus1_fclk_2", "abe_cm:0040:10"),
752 DT_CLK(NULL, "slimbus1_slimbus_clk", "abe_cm:0040:11"),
753 DT_CLK(NULL, "slimbus2_fclk_0", "l4_per_cm:0118:8"),
754 DT_CLK(NULL, "slimbus2_fclk_1", "l4_per_cm:0118:9"),
755 DT_CLK(NULL, "slimbus2_slimbus_clk", "l4_per_cm:0118:10"),
756 DT_CLK(NULL, "stm_clk_div_ck", "emu_sys_cm:0000:27"),
757 DT_CLK(NULL, "timer5_sync_mux", "abe_cm:0048:24"),
758 DT_CLK(NULL, "timer6_sync_mux", "abe_cm:0050:24"),
759 DT_CLK(NULL, "timer7_sync_mux", "abe_cm:0058:24"),
760 DT_CLK(NULL, "timer8_sync_mux", "abe_cm:0060:24"),
761 DT_CLK(NULL, "trace_clk_div_div_ck", "emu_sys_cm:0000:24"),
762 DT_CLK(NULL, "usb_host_hs_func48mclk", "l3_init_cm:0038:15"),
763 DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3_init_cm:0038:13"),
764 DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3_init_cm:0038:14"),
765 DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3_init_cm:0038:11"),
766 DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3_init_cm:0038:12"),
767 DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3_init_cm:0038:8"),
768 DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3_init_cm:0038:9"),
769 DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3_init_cm:0038:10"),
770 DT_CLK(NULL, "usb_otg_hs_xclk", "l3_init_cm:0040:8"),
771 DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3_init_cm:0048:8"),
772 DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3_init_cm:0048:9"),
773 DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3_init_cm:0048:10"),
774 DT_CLK(NULL, "utmi_p1_gfclk", "l3_init_cm:0038:24"),
775 DT_CLK(NULL, "utmi_p2_gfclk", "l3_init_cm:0038:25"),
746 { .node_name = NULL }, 776 { .node_name = NULL },
747}; 777};
748 778
diff --git a/drivers/clk/ti/clk-54xx.c b/drivers/clk/ti/clk-54xx.c
index 294bc03ec067..a17b0c4646a1 100644
--- a/drivers/clk/ti/clk-54xx.c
+++ b/drivers/clk/ti/clk-54xx.c
@@ -16,6 +16,7 @@
16#include <linux/clkdev.h> 16#include <linux/clkdev.h>
17#include <linux/io.h> 17#include <linux/io.h>
18#include <linux/clk/ti.h> 18#include <linux/clk/ti.h>
19#include <dt-bindings/clock/omap5.h>
19 20
20#include "clock.h" 21#include "clock.h"
21 22
@@ -27,201 +28,511 @@
27 */ 28 */
28#define OMAP5_DPLL_USB_DEFFREQ 960000000 29#define OMAP5_DPLL_USB_DEFFREQ 960000000
29 30
31static const struct omap_clkctrl_reg_data omap5_mpu_clkctrl_regs[] __initconst = {
32 { OMAP5_MPU_CLKCTRL, NULL, 0, "dpll_mpu_m2_ck" },
33 { 0 },
34};
35
36static const struct omap_clkctrl_reg_data omap5_dsp_clkctrl_regs[] __initconst = {
37 { OMAP5_MMU_DSP_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_h11x2_ck" },
38 { 0 },
39};
40
41static const char * const omap5_dmic_gfclk_parents[] __initconst = {
42 "abe_cm:clk:0018:26",
43 "pad_clks_ck",
44 "slimbus_clk",
45 NULL,
46};
47
48static const char * const omap5_dmic_sync_mux_ck_parents[] __initconst = {
49 "abe_24m_fclk",
50 "dss_syc_gfclk_div",
51 "func_24m_clk",
52 NULL,
53};
54
55static const struct omap_clkctrl_bit_data omap5_dmic_bit_data[] __initconst = {
56 { 24, TI_CLK_MUX, omap5_dmic_gfclk_parents, NULL },
57 { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL },
58 { 0 },
59};
60
61static const char * const omap5_mcbsp1_gfclk_parents[] __initconst = {
62 "abe_cm:clk:0028:26",
63 "pad_clks_ck",
64 "slimbus_clk",
65 NULL,
66};
67
68static const struct omap_clkctrl_bit_data omap5_mcbsp1_bit_data[] __initconst = {
69 { 24, TI_CLK_MUX, omap5_mcbsp1_gfclk_parents, NULL },
70 { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL },
71 { 0 },
72};
73
74static const char * const omap5_mcbsp2_gfclk_parents[] __initconst = {
75 "abe_cm:clk:0030:26",
76 "pad_clks_ck",
77 "slimbus_clk",
78 NULL,
79};
80
81static const struct omap_clkctrl_bit_data omap5_mcbsp2_bit_data[] __initconst = {
82 { 24, TI_CLK_MUX, omap5_mcbsp2_gfclk_parents, NULL },
83 { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL },
84 { 0 },
85};
86
87static const char * const omap5_mcbsp3_gfclk_parents[] __initconst = {
88 "abe_cm:clk:0038:26",
89 "pad_clks_ck",
90 "slimbus_clk",
91 NULL,
92};
93
94static const struct omap_clkctrl_bit_data omap5_mcbsp3_bit_data[] __initconst = {
95 { 24, TI_CLK_MUX, omap5_mcbsp3_gfclk_parents, NULL },
96 { 26, TI_CLK_MUX, omap5_dmic_sync_mux_ck_parents, NULL },
97 { 0 },
98};
99
100static const char * const omap5_timer5_gfclk_mux_parents[] __initconst = {
101 "dss_syc_gfclk_div",
102 "sys_32k_ck",
103 NULL,
104};
105
106static const struct omap_clkctrl_bit_data omap5_timer5_bit_data[] __initconst = {
107 { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL },
108 { 0 },
109};
110
111static const struct omap_clkctrl_bit_data omap5_timer6_bit_data[] __initconst = {
112 { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL },
113 { 0 },
114};
115
116static const struct omap_clkctrl_bit_data omap5_timer7_bit_data[] __initconst = {
117 { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL },
118 { 0 },
119};
120
121static const struct omap_clkctrl_bit_data omap5_timer8_bit_data[] __initconst = {
122 { 24, TI_CLK_MUX, omap5_timer5_gfclk_mux_parents, NULL },
123 { 0 },
124};
125
126static const struct omap_clkctrl_reg_data omap5_abe_clkctrl_regs[] __initconst = {
127 { OMAP5_L4_ABE_CLKCTRL, NULL, 0, "abe_iclk" },
128 { OMAP5_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" },
129 { OMAP5_DMIC_CLKCTRL, omap5_dmic_bit_data, CLKF_SW_SUP, "abe_cm:clk:0018:24" },
130 { OMAP5_MCBSP1_CLKCTRL, omap5_mcbsp1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0028:24" },
131 { OMAP5_MCBSP2_CLKCTRL, omap5_mcbsp2_bit_data, CLKF_SW_SUP, "abe_cm:clk:0030:24" },
132 { OMAP5_MCBSP3_CLKCTRL, omap5_mcbsp3_bit_data, CLKF_SW_SUP, "abe_cm:clk:0038:24" },
133 { OMAP5_TIMER5_CLKCTRL, omap5_timer5_bit_data, CLKF_SW_SUP, "abe_cm:clk:0048:24" },
134 { OMAP5_TIMER6_CLKCTRL, omap5_timer6_bit_data, CLKF_SW_SUP, "abe_cm:clk:0050:24" },
135 { OMAP5_TIMER7_CLKCTRL, omap5_timer7_bit_data, CLKF_SW_SUP, "abe_cm:clk:0058:24" },
136 { OMAP5_TIMER8_CLKCTRL, omap5_timer8_bit_data, CLKF_SW_SUP, "abe_cm:clk:0060:24" },
137 { 0 },
138};
139
140static const struct omap_clkctrl_reg_data omap5_l3main1_clkctrl_regs[] __initconst = {
141 { OMAP5_L3_MAIN_1_CLKCTRL, NULL, 0, "l3_iclk_div" },
142 { 0 },
143};
144
145static const struct omap_clkctrl_reg_data omap5_l3main2_clkctrl_regs[] __initconst = {
146 { OMAP5_L3_MAIN_2_CLKCTRL, NULL, 0, "l3_iclk_div" },
147 { 0 },
148};
149
150static const struct omap_clkctrl_reg_data omap5_ipu_clkctrl_regs[] __initconst = {
151 { OMAP5_MMU_IPU_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h22x2_ck" },
152 { 0 },
153};
154
155static const struct omap_clkctrl_reg_data omap5_dma_clkctrl_regs[] __initconst = {
156 { OMAP5_DMA_SYSTEM_CLKCTRL, NULL, 0, "l3_iclk_div" },
157 { 0 },
158};
159
160static const struct omap_clkctrl_reg_data omap5_emif_clkctrl_regs[] __initconst = {
161 { OMAP5_DMM_CLKCTRL, NULL, 0, "l3_iclk_div" },
162 { OMAP5_EMIF1_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h11x2_ck" },
163 { OMAP5_EMIF2_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h11x2_ck" },
164 { 0 },
165};
166
167static const struct omap_clkctrl_reg_data omap5_l4cfg_clkctrl_regs[] __initconst = {
168 { OMAP5_L4_CFG_CLKCTRL, NULL, 0, "l4_root_clk_div" },
169 { OMAP5_SPINLOCK_CLKCTRL, NULL, 0, "l4_root_clk_div" },
170 { OMAP5_MAILBOX_CLKCTRL, NULL, 0, "l4_root_clk_div" },
171 { 0 },
172};
173
174static const struct omap_clkctrl_reg_data omap5_l3instr_clkctrl_regs[] __initconst = {
175 { OMAP5_L3_MAIN_3_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
176 { OMAP5_L3_INSTR_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
177 { 0 },
178};
179
180static const char * const omap5_timer10_gfclk_mux_parents[] __initconst = {
181 "sys_clkin",
182 "sys_32k_ck",
183 NULL,
184};
185
186static const struct omap_clkctrl_bit_data omap5_timer10_bit_data[] __initconst = {
187 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
188 { 0 },
189};
190
191static const struct omap_clkctrl_bit_data omap5_timer11_bit_data[] __initconst = {
192 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
193 { 0 },
194};
195
196static const struct omap_clkctrl_bit_data omap5_timer2_bit_data[] __initconst = {
197 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
198 { 0 },
199};
200
201static const struct omap_clkctrl_bit_data omap5_timer3_bit_data[] __initconst = {
202 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
203 { 0 },
204};
205
206static const struct omap_clkctrl_bit_data omap5_timer4_bit_data[] __initconst = {
207 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
208 { 0 },
209};
210
211static const struct omap_clkctrl_bit_data omap5_timer9_bit_data[] __initconst = {
212 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
213 { 0 },
214};
215
216static const char * const omap5_gpio2_dbclk_parents[] __initconst = {
217 "sys_32k_ck",
218 NULL,
219};
220
221static const struct omap_clkctrl_bit_data omap5_gpio2_bit_data[] __initconst = {
222 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
223 { 0 },
224};
225
226static const struct omap_clkctrl_bit_data omap5_gpio3_bit_data[] __initconst = {
227 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
228 { 0 },
229};
230
231static const struct omap_clkctrl_bit_data omap5_gpio4_bit_data[] __initconst = {
232 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
233 { 0 },
234};
235
236static const struct omap_clkctrl_bit_data omap5_gpio5_bit_data[] __initconst = {
237 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
238 { 0 },
239};
240
241static const struct omap_clkctrl_bit_data omap5_gpio6_bit_data[] __initconst = {
242 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
243 { 0 },
244};
245
246static const struct omap_clkctrl_bit_data omap5_gpio7_bit_data[] __initconst = {
247 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
248 { 0 },
249};
250
251static const struct omap_clkctrl_bit_data omap5_gpio8_bit_data[] __initconst = {
252 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
253 { 0 },
254};
255
256static const struct omap_clkctrl_reg_data omap5_l4per_clkctrl_regs[] __initconst = {
257 { OMAP5_TIMER10_CLKCTRL, omap5_timer10_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0008:24" },
258 { OMAP5_TIMER11_CLKCTRL, omap5_timer11_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0010:24" },
259 { OMAP5_TIMER2_CLKCTRL, omap5_timer2_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0018:24" },
260 { OMAP5_TIMER3_CLKCTRL, omap5_timer3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0020:24" },
261 { OMAP5_TIMER4_CLKCTRL, omap5_timer4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0028:24" },
262 { OMAP5_TIMER9_CLKCTRL, omap5_timer9_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0030:24" },
263 { OMAP5_GPIO2_CLKCTRL, omap5_gpio2_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
264 { OMAP5_GPIO3_CLKCTRL, omap5_gpio3_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
265 { OMAP5_GPIO4_CLKCTRL, omap5_gpio4_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
266 { OMAP5_GPIO5_CLKCTRL, omap5_gpio5_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
267 { OMAP5_GPIO6_CLKCTRL, omap5_gpio6_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
268 { OMAP5_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
269 { OMAP5_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
270 { OMAP5_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
271 { OMAP5_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
272 { OMAP5_L4_PER_CLKCTRL, NULL, 0, "l4_root_clk_div" },
273 { OMAP5_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
274 { OMAP5_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
275 { OMAP5_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
276 { OMAP5_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
277 { OMAP5_GPIO7_CLKCTRL, omap5_gpio7_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
278 { OMAP5_GPIO8_CLKCTRL, omap5_gpio8_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
279 { OMAP5_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
280 { OMAP5_MMC4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
281 { OMAP5_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
282 { OMAP5_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
283 { OMAP5_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
284 { OMAP5_UART4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
285 { OMAP5_MMC5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
286 { OMAP5_I2C5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
287 { OMAP5_UART5_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
288 { OMAP5_UART6_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
289 { 0 },
290};
291
292static const char * const omap5_dss_dss_clk_parents[] __initconst = {
293 "dpll_per_h12x2_ck",
294 NULL,
295};
296
297static const char * const omap5_dss_48mhz_clk_parents[] __initconst = {
298 "func_48m_fclk",
299 NULL,
300};
301
302static const char * const omap5_dss_sys_clk_parents[] __initconst = {
303 "dss_syc_gfclk_div",
304 NULL,
305};
306
307static const struct omap_clkctrl_bit_data omap5_dss_core_bit_data[] __initconst = {
308 { 8, TI_CLK_GATE, omap5_dss_dss_clk_parents, NULL },
309 { 9, TI_CLK_GATE, omap5_dss_48mhz_clk_parents, NULL },
310 { 10, TI_CLK_GATE, omap5_dss_sys_clk_parents, NULL },
311 { 11, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
312 { 0 },
313};
314
315static const struct omap_clkctrl_reg_data omap5_dss_clkctrl_regs[] __initconst = {
316 { OMAP5_DSS_CORE_CLKCTRL, omap5_dss_core_bit_data, CLKF_SW_SUP, "dss_cm:clk:0000:8" },
317 { 0 },
318};
319
320static const char * const omap5_mmc1_fclk_mux_parents[] __initconst = {
321 "func_128m_clk",
322 "dpll_per_m2x2_ck",
323 NULL,
324};
325
326static const char * const omap5_mmc1_fclk_parents[] __initconst = {
327 "l3init_cm:clk:0008:24",
328 NULL,
329};
330
331static const struct omap_clkctrl_div_data omap5_mmc1_fclk_data __initconst = {
332 .max_div = 2,
333};
334
335static const struct omap_clkctrl_bit_data omap5_mmc1_bit_data[] __initconst = {
336 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
337 { 24, TI_CLK_MUX, omap5_mmc1_fclk_mux_parents, NULL },
338 { 25, TI_CLK_DIVIDER, omap5_mmc1_fclk_parents, &omap5_mmc1_fclk_data },
339 { 0 },
340};
341
342static const char * const omap5_mmc2_fclk_parents[] __initconst = {
343 "l3init_cm:clk:0010:24",
344 NULL,
345};
346
347static const struct omap_clkctrl_div_data omap5_mmc2_fclk_data __initconst = {
348 .max_div = 2,
349};
350
351static const struct omap_clkctrl_bit_data omap5_mmc2_bit_data[] __initconst = {
352 { 24, TI_CLK_MUX, omap5_mmc1_fclk_mux_parents, NULL },
353 { 25, TI_CLK_DIVIDER, omap5_mmc2_fclk_parents, &omap5_mmc2_fclk_data },
354 { 0 },
355};
356
357static const char * const omap5_usb_host_hs_hsic60m_p3_clk_parents[] __initconst = {
358 "l3init_60m_fclk",
359 NULL,
360};
361
362static const char * const omap5_usb_host_hs_hsic480m_p3_clk_parents[] __initconst = {
363 "dpll_usb_m2_ck",
364 NULL,
365};
366
367static const char * const omap5_usb_host_hs_utmi_p1_clk_parents[] __initconst = {
368 "l3init_cm:clk:0038:24",
369 NULL,
370};
371
372static const char * const omap5_usb_host_hs_utmi_p2_clk_parents[] __initconst = {
373 "l3init_cm:clk:0038:25",
374 NULL,
375};
376
377static const char * const omap5_utmi_p1_gfclk_parents[] __initconst = {
378 "l3init_60m_fclk",
379 "xclk60mhsp1_ck",
380 NULL,
381};
382
383static const char * const omap5_utmi_p2_gfclk_parents[] __initconst = {
384 "l3init_60m_fclk",
385 "xclk60mhsp2_ck",
386 NULL,
387};
388
389static const struct omap_clkctrl_bit_data omap5_usb_host_hs_bit_data[] __initconst = {
390 { 6, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
391 { 7, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL },
392 { 8, TI_CLK_GATE, omap5_usb_host_hs_utmi_p1_clk_parents, NULL },
393 { 9, TI_CLK_GATE, omap5_usb_host_hs_utmi_p2_clk_parents, NULL },
394 { 10, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
395 { 11, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
396 { 12, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
397 { 13, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL },
398 { 14, TI_CLK_GATE, omap5_usb_host_hs_hsic480m_p3_clk_parents, NULL },
399 { 24, TI_CLK_MUX, omap5_utmi_p1_gfclk_parents, NULL },
400 { 25, TI_CLK_MUX, omap5_utmi_p2_gfclk_parents, NULL },
401 { 0 },
402};
403
404static const struct omap_clkctrl_bit_data omap5_usb_tll_hs_bit_data[] __initconst = {
405 { 8, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
406 { 9, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
407 { 10, TI_CLK_GATE, omap5_usb_host_hs_hsic60m_p3_clk_parents, NULL },
408 { 0 },
409};
410
411static const char * const omap5_sata_ref_clk_parents[] __initconst = {
412 "sys_clkin",
413 NULL,
414};
415
416static const struct omap_clkctrl_bit_data omap5_sata_bit_data[] __initconst = {
417 { 8, TI_CLK_GATE, omap5_sata_ref_clk_parents, NULL },
418 { 0 },
419};
420
421static const char * const omap5_usb_otg_ss_refclk960m_parents[] __initconst = {
422 "dpll_usb_clkdcoldo",
423 NULL,
424};
425
426static const struct omap_clkctrl_bit_data omap5_usb_otg_ss_bit_data[] __initconst = {
427 { 8, TI_CLK_GATE, omap5_usb_otg_ss_refclk960m_parents, NULL },
428 { 0 },
429};
430
431static const struct omap_clkctrl_reg_data omap5_l3init_clkctrl_regs[] __initconst = {
432 { OMAP5_MMC1_CLKCTRL, omap5_mmc1_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0008:25" },
433 { OMAP5_MMC2_CLKCTRL, omap5_mmc2_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0010:25" },
434 { OMAP5_USB_HOST_HS_CLKCTRL, omap5_usb_host_hs_bit_data, CLKF_SW_SUP, "l3init_60m_fclk" },
435 { OMAP5_USB_TLL_HS_CLKCTRL, omap5_usb_tll_hs_bit_data, CLKF_HW_SUP, "l4_root_clk_div" },
436 { OMAP5_SATA_CLKCTRL, omap5_sata_bit_data, CLKF_SW_SUP, "func_48m_fclk" },
437 { OMAP5_OCP2SCP1_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" },
438 { OMAP5_OCP2SCP3_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" },
439 { OMAP5_USB_OTG_SS_CLKCTRL, omap5_usb_otg_ss_bit_data, CLKF_HW_SUP, "dpll_core_h13x2_ck" },
440 { 0 },
441};
442
443static const struct omap_clkctrl_bit_data omap5_gpio1_bit_data[] __initconst = {
444 { 8, TI_CLK_GATE, omap5_gpio2_dbclk_parents, NULL },
445 { 0 },
446};
447
448static const struct omap_clkctrl_bit_data omap5_timer1_bit_data[] __initconst = {
449 { 24, TI_CLK_MUX, omap5_timer10_gfclk_mux_parents, NULL },
450 { 0 },
451};
452
453static const struct omap_clkctrl_reg_data omap5_wkupaon_clkctrl_regs[] __initconst = {
454 { OMAP5_L4_WKUP_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
455 { OMAP5_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
456 { OMAP5_GPIO1_CLKCTRL, omap5_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" },
457 { OMAP5_TIMER1_CLKCTRL, omap5_timer1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0020:24" },
458 { OMAP5_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
459 { OMAP5_KBD_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
460 { 0 },
461};
462
463const struct omap_clkctrl_data omap5_clkctrl_data[] __initconst = {
464 { 0x4a004320, omap5_mpu_clkctrl_regs },
465 { 0x4a004420, omap5_dsp_clkctrl_regs },
466 { 0x4a004520, omap5_abe_clkctrl_regs },
467 { 0x4a008720, omap5_l3main1_clkctrl_regs },
468 { 0x4a008820, omap5_l3main2_clkctrl_regs },
469 { 0x4a008920, omap5_ipu_clkctrl_regs },
470 { 0x4a008a20, omap5_dma_clkctrl_regs },
471 { 0x4a008b20, omap5_emif_clkctrl_regs },
472 { 0x4a008d20, omap5_l4cfg_clkctrl_regs },
473 { 0x4a008e20, omap5_l3instr_clkctrl_regs },
474 { 0x4a009020, omap5_l4per_clkctrl_regs },
475 { 0x4a009420, omap5_dss_clkctrl_regs },
476 { 0x4a009620, omap5_l3init_clkctrl_regs },
477 { 0x4ae07920, omap5_wkupaon_clkctrl_regs },
478 { 0 },
479};
480
30static struct ti_dt_clk omap54xx_clks[] = { 481static struct ti_dt_clk omap54xx_clks[] = {
31 DT_CLK(NULL, "pad_clks_src_ck", "pad_clks_src_ck"),
32 DT_CLK(NULL, "pad_clks_ck", "pad_clks_ck"),
33 DT_CLK(NULL, "secure_32k_clk_src_ck", "secure_32k_clk_src_ck"),
34 DT_CLK(NULL, "slimbus_src_clk", "slimbus_src_clk"),
35 DT_CLK(NULL, "slimbus_clk", "slimbus_clk"),
36 DT_CLK(NULL, "sys_32k_ck", "sys_32k_ck"),
37 DT_CLK(NULL, "virt_12000000_ck", "virt_12000000_ck"),
38 DT_CLK(NULL, "virt_13000000_ck", "virt_13000000_ck"),
39 DT_CLK(NULL, "virt_16800000_ck", "virt_16800000_ck"),
40 DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
41 DT_CLK(NULL, "virt_26000000_ck", "virt_26000000_ck"),
42 DT_CLK(NULL, "virt_27000000_ck", "virt_27000000_ck"),
43 DT_CLK(NULL, "virt_38400000_ck", "virt_38400000_ck"),
44 DT_CLK(NULL, "sys_clkin", "sys_clkin"),
45 DT_CLK(NULL, "xclk60mhsp1_ck", "xclk60mhsp1_ck"),
46 DT_CLK(NULL, "xclk60mhsp2_ck", "xclk60mhsp2_ck"),
47 DT_CLK(NULL, "abe_dpll_bypass_clk_mux", "abe_dpll_bypass_clk_mux"),
48 DT_CLK(NULL, "abe_dpll_clk_mux", "abe_dpll_clk_mux"),
49 DT_CLK(NULL, "dpll_abe_ck", "dpll_abe_ck"),
50 DT_CLK(NULL, "dpll_abe_x2_ck", "dpll_abe_x2_ck"),
51 DT_CLK(NULL, "dpll_abe_m2x2_ck", "dpll_abe_m2x2_ck"),
52 DT_CLK(NULL, "abe_24m_fclk", "abe_24m_fclk"),
53 DT_CLK(NULL, "abe_clk", "abe_clk"),
54 DT_CLK(NULL, "abe_iclk", "abe_iclk"),
55 DT_CLK(NULL, "abe_lp_clk_div", "abe_lp_clk_div"),
56 DT_CLK(NULL, "dpll_abe_m3x2_ck", "dpll_abe_m3x2_ck"),
57 DT_CLK(NULL, "dpll_core_ck", "dpll_core_ck"),
58 DT_CLK(NULL, "dpll_core_x2_ck", "dpll_core_x2_ck"),
59 DT_CLK(NULL, "dpll_core_h21x2_ck", "dpll_core_h21x2_ck"),
60 DT_CLK(NULL, "c2c_fclk", "c2c_fclk"),
61 DT_CLK(NULL, "c2c_iclk", "c2c_iclk"),
62 DT_CLK(NULL, "custefuse_sys_gfclk_div", "custefuse_sys_gfclk_div"),
63 DT_CLK(NULL, "dpll_core_h11x2_ck", "dpll_core_h11x2_ck"),
64 DT_CLK(NULL, "dpll_core_h12x2_ck", "dpll_core_h12x2_ck"),
65 DT_CLK(NULL, "dpll_core_h13x2_ck", "dpll_core_h13x2_ck"),
66 DT_CLK(NULL, "dpll_core_h14x2_ck", "dpll_core_h14x2_ck"),
67 DT_CLK(NULL, "dpll_core_h22x2_ck", "dpll_core_h22x2_ck"),
68 DT_CLK(NULL, "dpll_core_h23x2_ck", "dpll_core_h23x2_ck"),
69 DT_CLK(NULL, "dpll_core_h24x2_ck", "dpll_core_h24x2_ck"),
70 DT_CLK(NULL, "dpll_core_m2_ck", "dpll_core_m2_ck"),
71 DT_CLK(NULL, "dpll_core_m3x2_ck", "dpll_core_m3x2_ck"),
72 DT_CLK(NULL, "iva_dpll_hs_clk_div", "iva_dpll_hs_clk_div"),
73 DT_CLK(NULL, "dpll_iva_ck", "dpll_iva_ck"),
74 DT_CLK(NULL, "dpll_iva_x2_ck", "dpll_iva_x2_ck"),
75 DT_CLK(NULL, "dpll_iva_h11x2_ck", "dpll_iva_h11x2_ck"),
76 DT_CLK(NULL, "dpll_iva_h12x2_ck", "dpll_iva_h12x2_ck"),
77 DT_CLK(NULL, "mpu_dpll_hs_clk_div", "mpu_dpll_hs_clk_div"),
78 DT_CLK(NULL, "dpll_mpu_ck", "dpll_mpu_ck"),
79 DT_CLK(NULL, "dpll_mpu_m2_ck", "dpll_mpu_m2_ck"),
80 DT_CLK(NULL, "per_dpll_hs_clk_div", "per_dpll_hs_clk_div"),
81 DT_CLK(NULL, "dpll_per_ck", "dpll_per_ck"),
82 DT_CLK(NULL, "dpll_per_x2_ck", "dpll_per_x2_ck"),
83 DT_CLK(NULL, "dpll_per_h11x2_ck", "dpll_per_h11x2_ck"),
84 DT_CLK(NULL, "dpll_per_h12x2_ck", "dpll_per_h12x2_ck"),
85 DT_CLK(NULL, "dpll_per_h14x2_ck", "dpll_per_h14x2_ck"),
86 DT_CLK(NULL, "dpll_per_m2_ck", "dpll_per_m2_ck"),
87 DT_CLK(NULL, "dpll_per_m2x2_ck", "dpll_per_m2x2_ck"),
88 DT_CLK(NULL, "dpll_per_m3x2_ck", "dpll_per_m3x2_ck"),
89 DT_CLK(NULL, "dpll_unipro1_ck", "dpll_unipro1_ck"),
90 DT_CLK(NULL, "dpll_unipro1_clkdcoldo", "dpll_unipro1_clkdcoldo"),
91 DT_CLK(NULL, "dpll_unipro1_m2_ck", "dpll_unipro1_m2_ck"),
92 DT_CLK(NULL, "dpll_unipro2_ck", "dpll_unipro2_ck"),
93 DT_CLK(NULL, "dpll_unipro2_clkdcoldo", "dpll_unipro2_clkdcoldo"),
94 DT_CLK(NULL, "dpll_unipro2_m2_ck", "dpll_unipro2_m2_ck"),
95 DT_CLK(NULL, "usb_dpll_hs_clk_div", "usb_dpll_hs_clk_div"),
96 DT_CLK(NULL, "dpll_usb_ck", "dpll_usb_ck"),
97 DT_CLK(NULL, "dpll_usb_clkdcoldo", "dpll_usb_clkdcoldo"),
98 DT_CLK(NULL, "dpll_usb_m2_ck", "dpll_usb_m2_ck"),
99 DT_CLK(NULL, "dss_syc_gfclk_div", "dss_syc_gfclk_div"),
100 DT_CLK(NULL, "func_128m_clk", "func_128m_clk"),
101 DT_CLK(NULL, "func_12m_fclk", "func_12m_fclk"),
102 DT_CLK(NULL, "func_24m_clk", "func_24m_clk"),
103 DT_CLK(NULL, "func_48m_fclk", "func_48m_fclk"),
104 DT_CLK(NULL, "func_96m_fclk", "func_96m_fclk"),
105 DT_CLK(NULL, "l3_iclk_div", "l3_iclk_div"),
106 DT_CLK(NULL, "gpu_l3_iclk", "gpu_l3_iclk"),
107 DT_CLK(NULL, "l3init_60m_fclk", "l3init_60m_fclk"),
108 DT_CLK(NULL, "wkupaon_iclk_mux", "wkupaon_iclk_mux"),
109 DT_CLK(NULL, "l3instr_ts_gclk_div", "l3instr_ts_gclk_div"),
110 DT_CLK(NULL, "l4_root_clk_div", "l4_root_clk_div"),
111 DT_CLK(NULL, "dss_32khz_clk", "dss_32khz_clk"),
112 DT_CLK(NULL, "dss_48mhz_clk", "dss_48mhz_clk"),
113 DT_CLK(NULL, "dss_dss_clk", "dss_dss_clk"),
114 DT_CLK(NULL, "dss_sys_clk", "dss_sys_clk"),
115 DT_CLK(NULL, "gpio1_dbclk", "gpio1_dbclk"),
116 DT_CLK(NULL, "gpio2_dbclk", "gpio2_dbclk"),
117 DT_CLK(NULL, "gpio3_dbclk", "gpio3_dbclk"),
118 DT_CLK(NULL, "gpio4_dbclk", "gpio4_dbclk"),
119 DT_CLK(NULL, "gpio5_dbclk", "gpio5_dbclk"),
120 DT_CLK(NULL, "gpio6_dbclk", "gpio6_dbclk"),
121 DT_CLK(NULL, "gpio7_dbclk", "gpio7_dbclk"),
122 DT_CLK(NULL, "gpio8_dbclk", "gpio8_dbclk"),
123 DT_CLK(NULL, "iss_ctrlclk", "iss_ctrlclk"),
124 DT_CLK(NULL, "lli_txphy_clk", "lli_txphy_clk"),
125 DT_CLK(NULL, "lli_txphy_ls_clk", "lli_txphy_ls_clk"),
126 DT_CLK(NULL, "mmc1_32khz_clk", "mmc1_32khz_clk"),
127 DT_CLK(NULL, "sata_ref_clk", "sata_ref_clk"),
128 DT_CLK(NULL, "slimbus1_slimbus_clk", "slimbus1_slimbus_clk"),
129 DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "usb_host_hs_hsic480m_p1_clk"),
130 DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "usb_host_hs_hsic480m_p2_clk"),
131 DT_CLK(NULL, "usb_host_hs_hsic480m_p3_clk", "usb_host_hs_hsic480m_p3_clk"),
132 DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "usb_host_hs_hsic60m_p1_clk"),
133 DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "usb_host_hs_hsic60m_p2_clk"),
134 DT_CLK(NULL, "usb_host_hs_hsic60m_p3_clk", "usb_host_hs_hsic60m_p3_clk"),
135 DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "usb_host_hs_utmi_p1_clk"),
136 DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "usb_host_hs_utmi_p2_clk"),
137 DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "usb_host_hs_utmi_p3_clk"),
138 DT_CLK(NULL, "usb_otg_ss_refclk960m", "usb_otg_ss_refclk960m"),
139 DT_CLK(NULL, "usb_phy_cm_clk32k", "usb_phy_cm_clk32k"),
140 DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "usb_tll_hs_usb_ch0_clk"),
141 DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "usb_tll_hs_usb_ch1_clk"),
142 DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "usb_tll_hs_usb_ch2_clk"),
143 DT_CLK(NULL, "aess_fclk", "aess_fclk"),
144 DT_CLK(NULL, "dmic_sync_mux_ck", "dmic_sync_mux_ck"),
145 DT_CLK(NULL, "dmic_gfclk", "dmic_gfclk"),
146 DT_CLK(NULL, "fdif_fclk", "fdif_fclk"),
147 DT_CLK(NULL, "gpu_core_gclk_mux", "gpu_core_gclk_mux"),
148 DT_CLK(NULL, "gpu_hyd_gclk_mux", "gpu_hyd_gclk_mux"),
149 DT_CLK(NULL, "hsi_fclk", "hsi_fclk"),
150 DT_CLK(NULL, "mcasp_sync_mux_ck", "mcasp_sync_mux_ck"),
151 DT_CLK(NULL, "mcasp_gfclk", "mcasp_gfclk"),
152 DT_CLK(NULL, "mcbsp1_sync_mux_ck", "mcbsp1_sync_mux_ck"),
153 DT_CLK(NULL, "mcbsp1_gfclk", "mcbsp1_gfclk"),
154 DT_CLK(NULL, "mcbsp2_sync_mux_ck", "mcbsp2_sync_mux_ck"),
155 DT_CLK(NULL, "mcbsp2_gfclk", "mcbsp2_gfclk"),
156 DT_CLK(NULL, "mcbsp3_sync_mux_ck", "mcbsp3_sync_mux_ck"),
157 DT_CLK(NULL, "mcbsp3_gfclk", "mcbsp3_gfclk"),
158 DT_CLK(NULL, "mmc1_fclk_mux", "mmc1_fclk_mux"),
159 DT_CLK(NULL, "mmc1_fclk", "mmc1_fclk"),
160 DT_CLK(NULL, "mmc2_fclk_mux", "mmc2_fclk_mux"),
161 DT_CLK(NULL, "mmc2_fclk", "mmc2_fclk"),
162 DT_CLK(NULL, "timer10_gfclk_mux", "timer10_gfclk_mux"),
163 DT_CLK(NULL, "timer11_gfclk_mux", "timer11_gfclk_mux"),
164 DT_CLK(NULL, "timer1_gfclk_mux", "timer1_gfclk_mux"),
165 DT_CLK(NULL, "timer2_gfclk_mux", "timer2_gfclk_mux"),
166 DT_CLK(NULL, "timer3_gfclk_mux", "timer3_gfclk_mux"),
167 DT_CLK(NULL, "timer4_gfclk_mux", "timer4_gfclk_mux"),
168 DT_CLK(NULL, "timer5_gfclk_mux", "timer5_gfclk_mux"),
169 DT_CLK(NULL, "timer6_gfclk_mux", "timer6_gfclk_mux"),
170 DT_CLK(NULL, "timer7_gfclk_mux", "timer7_gfclk_mux"),
171 DT_CLK(NULL, "timer8_gfclk_mux", "timer8_gfclk_mux"),
172 DT_CLK(NULL, "timer9_gfclk_mux", "timer9_gfclk_mux"),
173 DT_CLK(NULL, "utmi_p1_gfclk", "utmi_p1_gfclk"),
174 DT_CLK(NULL, "utmi_p2_gfclk", "utmi_p2_gfclk"),
175 DT_CLK(NULL, "auxclk0_src_ck", "auxclk0_src_ck"),
176 DT_CLK(NULL, "auxclk0_ck", "auxclk0_ck"),
177 DT_CLK(NULL, "auxclkreq0_ck", "auxclkreq0_ck"),
178 DT_CLK(NULL, "auxclk1_src_ck", "auxclk1_src_ck"),
179 DT_CLK(NULL, "auxclk1_ck", "auxclk1_ck"),
180 DT_CLK(NULL, "auxclkreq1_ck", "auxclkreq1_ck"),
181 DT_CLK(NULL, "auxclk2_src_ck", "auxclk2_src_ck"),
182 DT_CLK(NULL, "auxclk2_ck", "auxclk2_ck"),
183 DT_CLK(NULL, "auxclkreq2_ck", "auxclkreq2_ck"),
184 DT_CLK(NULL, "auxclk3_src_ck", "auxclk3_src_ck"),
185 DT_CLK(NULL, "auxclk3_ck", "auxclk3_ck"),
186 DT_CLK(NULL, "auxclkreq3_ck", "auxclkreq3_ck"),
187 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
188 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
189 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
190 DT_CLK("omap_i2c.4", "ick", "dummy_ck"),
191 DT_CLK(NULL, "mailboxes_ick", "dummy_ck"),
192 DT_CLK("omap_hsmmc.0", "ick", "dummy_ck"),
193 DT_CLK("omap_hsmmc.1", "ick", "dummy_ck"),
194 DT_CLK("omap_hsmmc.2", "ick", "dummy_ck"),
195 DT_CLK("omap_hsmmc.3", "ick", "dummy_ck"),
196 DT_CLK("omap_hsmmc.4", "ick", "dummy_ck"),
197 DT_CLK("omap-mcbsp.1", "ick", "dummy_ck"),
198 DT_CLK("omap-mcbsp.2", "ick", "dummy_ck"),
199 DT_CLK("omap-mcbsp.3", "ick", "dummy_ck"),
200 DT_CLK("omap-mcbsp.4", "ick", "dummy_ck"),
201 DT_CLK("omap2_mcspi.1", "ick", "dummy_ck"),
202 DT_CLK("omap2_mcspi.2", "ick", "dummy_ck"),
203 DT_CLK("omap2_mcspi.3", "ick", "dummy_ck"),
204 DT_CLK("omap2_mcspi.4", "ick", "dummy_ck"),
205 DT_CLK(NULL, "uart1_ick", "dummy_ck"),
206 DT_CLK(NULL, "uart2_ick", "dummy_ck"),
207 DT_CLK(NULL, "uart3_ick", "dummy_ck"),
208 DT_CLK(NULL, "uart4_ick", "dummy_ck"),
209 DT_CLK("usbhs_omap", "usbhost_ick", "dummy_ck"),
210 DT_CLK("usbhs_omap", "usbtll_fck", "dummy_ck"),
211 DT_CLK("omap_wdt", "ick", "dummy_ck"),
212 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"), 482 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"),
213 DT_CLK(NULL, "sys_clkin_ck", "sys_clkin"), 483 DT_CLK(NULL, "sys_clkin_ck", "sys_clkin"),
214 DT_CLK("4ae18000.timer", "timer_sys_ck", "sys_clkin"), 484 DT_CLK(NULL, "dmic_gfclk", "abe_cm:0018:24"),
215 DT_CLK("48032000.timer", "timer_sys_ck", "sys_clkin"), 485 DT_CLK(NULL, "dmic_sync_mux_ck", "abe_cm:0018:26"),
216 DT_CLK("48034000.timer", "timer_sys_ck", "sys_clkin"), 486 DT_CLK(NULL, "dss_32khz_clk", "dss_cm:0000:11"),
217 DT_CLK("48036000.timer", "timer_sys_ck", "sys_clkin"), 487 DT_CLK(NULL, "dss_48mhz_clk", "dss_cm:0000:9"),
218 DT_CLK("4803e000.timer", "timer_sys_ck", "sys_clkin"), 488 DT_CLK(NULL, "dss_dss_clk", "dss_cm:0000:8"),
219 DT_CLK("48086000.timer", "timer_sys_ck", "sys_clkin"), 489 DT_CLK(NULL, "dss_sys_clk", "dss_cm:0000:10"),
220 DT_CLK("48088000.timer", "timer_sys_ck", "sys_clkin"), 490 DT_CLK(NULL, "gpio1_dbclk", "wkupaon_cm:0018:8"),
221 DT_CLK("40138000.timer", "timer_sys_ck", "dss_syc_gfclk_div"), 491 DT_CLK(NULL, "gpio2_dbclk", "l4per_cm:0040:8"),
222 DT_CLK("4013a000.timer", "timer_sys_ck", "dss_syc_gfclk_div"), 492 DT_CLK(NULL, "gpio3_dbclk", "l4per_cm:0048:8"),
223 DT_CLK("4013c000.timer", "timer_sys_ck", "dss_syc_gfclk_div"), 493 DT_CLK(NULL, "gpio4_dbclk", "l4per_cm:0050:8"),
224 DT_CLK("4013e000.timer", "timer_sys_ck", "dss_syc_gfclk_div"), 494 DT_CLK(NULL, "gpio5_dbclk", "l4per_cm:0058:8"),
495 DT_CLK(NULL, "gpio6_dbclk", "l4per_cm:0060:8"),
496 DT_CLK(NULL, "gpio7_dbclk", "l4per_cm:00f0:8"),
497 DT_CLK(NULL, "gpio8_dbclk", "l4per_cm:00f8:8"),
498 DT_CLK(NULL, "mcbsp1_gfclk", "abe_cm:0028:24"),
499 DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe_cm:0028:26"),
500 DT_CLK(NULL, "mcbsp2_gfclk", "abe_cm:0030:24"),
501 DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe_cm:0030:26"),
502 DT_CLK(NULL, "mcbsp3_gfclk", "abe_cm:0038:24"),
503 DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe_cm:0038:26"),
504 DT_CLK(NULL, "mmc1_32khz_clk", "l3init_cm:0008:8"),
505 DT_CLK(NULL, "mmc1_fclk", "l3init_cm:0008:25"),
506 DT_CLK(NULL, "mmc1_fclk_mux", "l3init_cm:0008:24"),
507 DT_CLK(NULL, "mmc2_fclk", "l3init_cm:0010:25"),
508 DT_CLK(NULL, "mmc2_fclk_mux", "l3init_cm:0010:24"),
509 DT_CLK(NULL, "sata_ref_clk", "l3init_cm:0068:8"),
510 DT_CLK(NULL, "timer10_gfclk_mux", "l4per_cm:0008:24"),
511 DT_CLK(NULL, "timer11_gfclk_mux", "l4per_cm:0010:24"),
512 DT_CLK(NULL, "timer1_gfclk_mux", "wkupaon_cm:0020:24"),
513 DT_CLK(NULL, "timer2_gfclk_mux", "l4per_cm:0018:24"),
514 DT_CLK(NULL, "timer3_gfclk_mux", "l4per_cm:0020:24"),
515 DT_CLK(NULL, "timer4_gfclk_mux", "l4per_cm:0028:24"),
516 DT_CLK(NULL, "timer5_gfclk_mux", "abe_cm:0048:24"),
517 DT_CLK(NULL, "timer6_gfclk_mux", "abe_cm:0050:24"),
518 DT_CLK(NULL, "timer7_gfclk_mux", "abe_cm:0058:24"),
519 DT_CLK(NULL, "timer8_gfclk_mux", "abe_cm:0060:24"),
520 DT_CLK(NULL, "timer9_gfclk_mux", "l4per_cm:0030:24"),
521 DT_CLK(NULL, "usb_host_hs_hsic480m_p1_clk", "l3init_cm:0038:13"),
522 DT_CLK(NULL, "usb_host_hs_hsic480m_p2_clk", "l3init_cm:0038:14"),
523 DT_CLK(NULL, "usb_host_hs_hsic480m_p3_clk", "l3init_cm:0038:7"),
524 DT_CLK(NULL, "usb_host_hs_hsic60m_p1_clk", "l3init_cm:0038:11"),
525 DT_CLK(NULL, "usb_host_hs_hsic60m_p2_clk", "l3init_cm:0038:12"),
526 DT_CLK(NULL, "usb_host_hs_hsic60m_p3_clk", "l3init_cm:0038:6"),
527 DT_CLK(NULL, "usb_host_hs_utmi_p1_clk", "l3init_cm:0038:8"),
528 DT_CLK(NULL, "usb_host_hs_utmi_p2_clk", "l3init_cm:0038:9"),
529 DT_CLK(NULL, "usb_host_hs_utmi_p3_clk", "l3init_cm:0038:10"),
530 DT_CLK(NULL, "usb_otg_ss_refclk960m", "l3init_cm:00d0:8"),
531 DT_CLK(NULL, "usb_tll_hs_usb_ch0_clk", "l3init_cm:0048:8"),
532 DT_CLK(NULL, "usb_tll_hs_usb_ch1_clk", "l3init_cm:0048:9"),
533 DT_CLK(NULL, "usb_tll_hs_usb_ch2_clk", "l3init_cm:0048:10"),
534 DT_CLK(NULL, "utmi_p1_gfclk", "l3init_cm:0038:24"),
535 DT_CLK(NULL, "utmi_p2_gfclk", "l3init_cm:0038:25"),
225 { .node_name = NULL }, 536 { .node_name = NULL },
226}; 537};
227 538
@@ -234,6 +545,8 @@ int __init omap5xxx_dt_clk_init(void)
234 545
235 omap2_clk_disable_autoidle_all(); 546 omap2_clk_disable_autoidle_all();
236 547
548 ti_clk_add_aliases();
549
237 abe_dpll_ref = clk_get_sys(NULL, "abe_dpll_clk_mux"); 550 abe_dpll_ref = clk_get_sys(NULL, "abe_dpll_clk_mux");
238 sys_32k_ck = clk_get_sys(NULL, "sys_32k_ck"); 551 sys_32k_ck = clk_get_sys(NULL, "sys_32k_ck");
239 rc = clk_set_parent(abe_dpll_ref, sys_32k_ck); 552 rc = clk_set_parent(abe_dpll_ref, sys_32k_ck);
diff --git a/drivers/clk/ti/clk-7xx.c b/drivers/clk/ti/clk-7xx.c
index 9fd6043314eb..fb249a1637a5 100644
--- a/drivers/clk/ti/clk-7xx.c
+++ b/drivers/clk/ti/clk-7xx.c
@@ -15,297 +15,809 @@
15#include <linux/clk.h> 15#include <linux/clk.h>
16#include <linux/clkdev.h> 16#include <linux/clkdev.h>
17#include <linux/clk/ti.h> 17#include <linux/clk/ti.h>
18#include <dt-bindings/clock/dra7.h>
18 19
19#include "clock.h" 20#include "clock.h"
20 21
21#define DRA7_DPLL_GMAC_DEFFREQ 1000000000 22#define DRA7_DPLL_GMAC_DEFFREQ 1000000000
22#define DRA7_DPLL_USB_DEFFREQ 960000000 23#define DRA7_DPLL_USB_DEFFREQ 960000000
23 24
25static const struct omap_clkctrl_reg_data dra7_mpu_clkctrl_regs[] __initconst = {
26 { DRA7_MPU_CLKCTRL, NULL, 0, "dpll_mpu_m2_ck" },
27 { 0 },
28};
29
30static const char * const dra7_mcasp1_aux_gfclk_mux_parents[] __initconst = {
31 "per_abe_x1_gfclk2_div",
32 "video1_clk2_div",
33 "video2_clk2_div",
34 "hdmi_clk2_div",
35 NULL,
36};
37
38static const char * const dra7_mcasp1_ahclkx_mux_parents[] __initconst = {
39 "abe_24m_fclk",
40 "abe_sys_clk_div",
41 "func_24m_clk",
42 "atl_clkin3_ck",
43 "atl_clkin2_ck",
44 "atl_clkin1_ck",
45 "atl_clkin0_ck",
46 "sys_clkin2",
47 "ref_clkin0_ck",
48 "ref_clkin1_ck",
49 "ref_clkin2_ck",
50 "ref_clkin3_ck",
51 "mlb_clk",
52 "mlbp_clk",
53 NULL,
54};
55
56static const struct omap_clkctrl_bit_data dra7_mcasp1_bit_data[] __initconst = {
57 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
58 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
59 { 28, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
60 { 0 },
61};
62
63static const char * const dra7_timer5_gfclk_mux_parents[] __initconst = {
64 "timer_sys_clk_div",
65 "sys_32k_ck",
66 "sys_clkin2",
67 "ref_clkin0_ck",
68 "ref_clkin1_ck",
69 "ref_clkin2_ck",
70 "ref_clkin3_ck",
71 "abe_giclk_div",
72 "video1_div_clk",
73 "video2_div_clk",
74 "hdmi_div_clk",
75 "clkoutmux0_clk_mux",
76 NULL,
77};
78
79static const struct omap_clkctrl_bit_data dra7_timer5_bit_data[] __initconst = {
80 { 24, TI_CLK_MUX, dra7_timer5_gfclk_mux_parents, NULL },
81 { 0 },
82};
83
84static const struct omap_clkctrl_bit_data dra7_timer6_bit_data[] __initconst = {
85 { 24, TI_CLK_MUX, dra7_timer5_gfclk_mux_parents, NULL },
86 { 0 },
87};
88
89static const struct omap_clkctrl_bit_data dra7_timer7_bit_data[] __initconst = {
90 { 24, TI_CLK_MUX, dra7_timer5_gfclk_mux_parents, NULL },
91 { 0 },
92};
93
94static const struct omap_clkctrl_bit_data dra7_timer8_bit_data[] __initconst = {
95 { 24, TI_CLK_MUX, dra7_timer5_gfclk_mux_parents, NULL },
96 { 0 },
97};
98
99static const char * const dra7_uart6_gfclk_mux_parents[] __initconst = {
100 "func_48m_fclk",
101 "dpll_per_m2x2_ck",
102 NULL,
103};
104
105static const struct omap_clkctrl_bit_data dra7_uart6_bit_data[] __initconst = {
106 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
107 { 0 },
108};
109
110static const struct omap_clkctrl_reg_data dra7_ipu_clkctrl_regs[] __initconst = {
111 { DRA7_MCASP1_CLKCTRL, dra7_mcasp1_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0010:22" },
112 { DRA7_TIMER5_CLKCTRL, dra7_timer5_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0018:24" },
113 { DRA7_TIMER6_CLKCTRL, dra7_timer6_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0020:24" },
114 { DRA7_TIMER7_CLKCTRL, dra7_timer7_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0028:24" },
115 { DRA7_TIMER8_CLKCTRL, dra7_timer8_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0030:24" },
116 { DRA7_I2C5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
117 { DRA7_UART6_CLKCTRL, dra7_uart6_bit_data, CLKF_SW_SUP, "ipu_cm:clk:0040:24" },
118 { 0 },
119};
120
121static const struct omap_clkctrl_reg_data dra7_rtc_clkctrl_regs[] __initconst = {
122 { DRA7_RTCSS_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
123 { 0 },
124};
125
126static const struct omap_clkctrl_reg_data dra7_coreaon_clkctrl_regs[] __initconst = {
127 { DRA7_SMARTREFLEX_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" },
128 { DRA7_SMARTREFLEX_CORE_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" },
129 { 0 },
130};
131
132static const struct omap_clkctrl_reg_data dra7_l3main1_clkctrl_regs[] __initconst = {
133 { DRA7_L3_MAIN_1_CLKCTRL, NULL, 0, "l3_iclk_div" },
134 { DRA7_GPMC_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
135 { DRA7_TPCC_CLKCTRL, NULL, 0, "l3_iclk_div" },
136 { DRA7_TPTC0_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
137 { DRA7_TPTC1_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
138 { DRA7_VCP1_CLKCTRL, NULL, 0, "l3_iclk_div" },
139 { DRA7_VCP2_CLKCTRL, NULL, 0, "l3_iclk_div" },
140 { 0 },
141};
142
143static const struct omap_clkctrl_reg_data dra7_dma_clkctrl_regs[] __initconst = {
144 { DRA7_DMA_SYSTEM_CLKCTRL, NULL, 0, "l3_iclk_div" },
145 { 0 },
146};
147
148static const struct omap_clkctrl_reg_data dra7_emif_clkctrl_regs[] __initconst = {
149 { DRA7_DMM_CLKCTRL, NULL, 0, "l3_iclk_div" },
150 { 0 },
151};
152
153static const char * const dra7_atl_dpll_clk_mux_parents[] __initconst = {
154 "sys_32k_ck",
155 "video1_clkin_ck",
156 "video2_clkin_ck",
157 "hdmi_clkin_ck",
158 NULL,
159};
160
161static const char * const dra7_atl_gfclk_mux_parents[] __initconst = {
162 "l3_iclk_div",
163 "dpll_abe_m2_ck",
164 "atl_cm:clk:0000:24",
165 NULL,
166};
167
168static const struct omap_clkctrl_bit_data dra7_atl_bit_data[] __initconst = {
169 { 24, TI_CLK_MUX, dra7_atl_dpll_clk_mux_parents, NULL },
170 { 26, TI_CLK_MUX, dra7_atl_gfclk_mux_parents, NULL },
171 { 0 },
172};
173
174static const struct omap_clkctrl_reg_data dra7_atl_clkctrl_regs[] __initconst = {
175 { DRA7_ATL_CLKCTRL, dra7_atl_bit_data, CLKF_SW_SUP, "atl_cm:clk:0000:26" },
176 { 0 },
177};
178
179static const struct omap_clkctrl_reg_data dra7_l4cfg_clkctrl_regs[] __initconst = {
180 { DRA7_L4_CFG_CLKCTRL, NULL, 0, "l3_iclk_div" },
181 { DRA7_SPINLOCK_CLKCTRL, NULL, 0, "l3_iclk_div" },
182 { DRA7_MAILBOX1_CLKCTRL, NULL, 0, "l3_iclk_div" },
183 { DRA7_MAILBOX2_CLKCTRL, NULL, 0, "l3_iclk_div" },
184 { DRA7_MAILBOX3_CLKCTRL, NULL, 0, "l3_iclk_div" },
185 { DRA7_MAILBOX4_CLKCTRL, NULL, 0, "l3_iclk_div" },
186 { DRA7_MAILBOX5_CLKCTRL, NULL, 0, "l3_iclk_div" },
187 { DRA7_MAILBOX6_CLKCTRL, NULL, 0, "l3_iclk_div" },
188 { DRA7_MAILBOX7_CLKCTRL, NULL, 0, "l3_iclk_div" },
189 { DRA7_MAILBOX8_CLKCTRL, NULL, 0, "l3_iclk_div" },
190 { DRA7_MAILBOX9_CLKCTRL, NULL, 0, "l3_iclk_div" },
191 { DRA7_MAILBOX10_CLKCTRL, NULL, 0, "l3_iclk_div" },
192 { DRA7_MAILBOX11_CLKCTRL, NULL, 0, "l3_iclk_div" },
193 { DRA7_MAILBOX12_CLKCTRL, NULL, 0, "l3_iclk_div" },
194 { DRA7_MAILBOX13_CLKCTRL, NULL, 0, "l3_iclk_div" },
195 { 0 },
196};
197
198static const struct omap_clkctrl_reg_data dra7_l3instr_clkctrl_regs[] __initconst = {
199 { DRA7_L3_MAIN_2_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
200 { DRA7_L3_INSTR_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" },
201 { 0 },
202};
203
204static const char * const dra7_dss_dss_clk_parents[] __initconst = {
205 "dpll_per_h12x2_ck",
206 NULL,
207};
208
209static const char * const dra7_dss_48mhz_clk_parents[] __initconst = {
210 "func_48m_fclk",
211 NULL,
212};
213
214static const char * const dra7_dss_hdmi_clk_parents[] __initconst = {
215 "hdmi_dpll_clk_mux",
216 NULL,
217};
218
219static const char * const dra7_dss_32khz_clk_parents[] __initconst = {
220 "sys_32k_ck",
221 NULL,
222};
223
224static const char * const dra7_dss_video1_clk_parents[] __initconst = {
225 "video1_dpll_clk_mux",
226 NULL,
227};
228
229static const char * const dra7_dss_video2_clk_parents[] __initconst = {
230 "video2_dpll_clk_mux",
231 NULL,
232};
233
234static const struct omap_clkctrl_bit_data dra7_dss_core_bit_data[] __initconst = {
235 { 8, TI_CLK_GATE, dra7_dss_dss_clk_parents, NULL },
236 { 9, TI_CLK_GATE, dra7_dss_48mhz_clk_parents, NULL },
237 { 10, TI_CLK_GATE, dra7_dss_hdmi_clk_parents, NULL },
238 { 11, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
239 { 12, TI_CLK_GATE, dra7_dss_video1_clk_parents, NULL },
240 { 13, TI_CLK_GATE, dra7_dss_video2_clk_parents, NULL },
241 { 0 },
242};
243
244static const struct omap_clkctrl_reg_data dra7_dss_clkctrl_regs[] __initconst = {
245 { DRA7_DSS_CORE_CLKCTRL, dra7_dss_core_bit_data, CLKF_SW_SUP, "dss_cm:clk:0000:8" },
246 { DRA7_BB2D_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_core_h24x2_ck" },
247 { 0 },
248};
249
250static const char * const dra7_mmc1_fclk_mux_parents[] __initconst = {
251 "func_128m_clk",
252 "dpll_per_m2x2_ck",
253 NULL,
254};
255
256static const char * const dra7_mmc1_fclk_div_parents[] __initconst = {
257 "l3init_cm:clk:0008:24",
258 NULL,
259};
260
261static const struct omap_clkctrl_div_data dra7_mmc1_fclk_div_data __initconst = {
262 .max_div = 4,
263 .flags = CLK_DIVIDER_POWER_OF_TWO,
264};
265
266static const struct omap_clkctrl_bit_data dra7_mmc1_bit_data[] __initconst = {
267 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
268 { 24, TI_CLK_MUX, dra7_mmc1_fclk_mux_parents, NULL },
269 { 25, TI_CLK_DIVIDER, dra7_mmc1_fclk_div_parents, &dra7_mmc1_fclk_div_data },
270 { 0 },
271};
272
273static const char * const dra7_mmc2_fclk_div_parents[] __initconst = {
274 "l3init_cm:clk:0010:24",
275 NULL,
276};
277
278static const struct omap_clkctrl_div_data dra7_mmc2_fclk_div_data __initconst = {
279 .max_div = 4,
280 .flags = CLK_DIVIDER_POWER_OF_TWO,
281};
282
283static const struct omap_clkctrl_bit_data dra7_mmc2_bit_data[] __initconst = {
284 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
285 { 24, TI_CLK_MUX, dra7_mmc1_fclk_mux_parents, NULL },
286 { 25, TI_CLK_DIVIDER, dra7_mmc2_fclk_div_parents, &dra7_mmc2_fclk_div_data },
287 { 0 },
288};
289
290static const char * const dra7_usb_otg_ss2_refclk960m_parents[] __initconst = {
291 "l3init_960m_gfclk",
292 NULL,
293};
294
295static const struct omap_clkctrl_bit_data dra7_usb_otg_ss2_bit_data[] __initconst = {
296 { 8, TI_CLK_GATE, dra7_usb_otg_ss2_refclk960m_parents, NULL },
297 { 0 },
298};
299
300static const char * const dra7_sata_ref_clk_parents[] __initconst = {
301 "sys_clkin1",
302 NULL,
303};
304
305static const struct omap_clkctrl_bit_data dra7_sata_bit_data[] __initconst = {
306 { 8, TI_CLK_GATE, dra7_sata_ref_clk_parents, NULL },
307 { 0 },
308};
309
310static const char * const dra7_optfclk_pciephy1_clk_parents[] __initconst = {
311 "apll_pcie_ck",
312 NULL,
313};
314
315static const char * const dra7_optfclk_pciephy1_div_clk_parents[] __initconst = {
316 "optfclk_pciephy_div",
317 NULL,
318};
319
320static const struct omap_clkctrl_bit_data dra7_pcie1_bit_data[] __initconst = {
321 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
322 { 9, TI_CLK_GATE, dra7_optfclk_pciephy1_clk_parents, NULL },
323 { 10, TI_CLK_GATE, dra7_optfclk_pciephy1_div_clk_parents, NULL },
324 { 0 },
325};
326
327static const struct omap_clkctrl_bit_data dra7_pcie2_bit_data[] __initconst = {
328 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
329 { 9, TI_CLK_GATE, dra7_optfclk_pciephy1_clk_parents, NULL },
330 { 10, TI_CLK_GATE, dra7_optfclk_pciephy1_div_clk_parents, NULL },
331 { 0 },
332};
333
334static const char * const dra7_rmii_50mhz_clk_mux_parents[] __initconst = {
335 "dpll_gmac_h11x2_ck",
336 "rmii_clk_ck",
337 NULL,
338};
339
340static const char * const dra7_gmac_rft_clk_mux_parents[] __initconst = {
341 "video1_clkin_ck",
342 "video2_clkin_ck",
343 "dpll_abe_m2_ck",
344 "hdmi_clkin_ck",
345 "l3_iclk_div",
346 NULL,
347};
348
349static const struct omap_clkctrl_bit_data dra7_gmac_bit_data[] __initconst = {
350 { 24, TI_CLK_MUX, dra7_rmii_50mhz_clk_mux_parents, NULL },
351 { 25, TI_CLK_MUX, dra7_gmac_rft_clk_mux_parents, NULL },
352 { 0 },
353};
354
355static const struct omap_clkctrl_bit_data dra7_usb_otg_ss1_bit_data[] __initconst = {
356 { 8, TI_CLK_GATE, dra7_usb_otg_ss2_refclk960m_parents, NULL },
357 { 0 },
358};
359
360static const struct omap_clkctrl_reg_data dra7_l3init_clkctrl_regs[] __initconst = {
361 { DRA7_MMC1_CLKCTRL, dra7_mmc1_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0008:25" },
362 { DRA7_MMC2_CLKCTRL, dra7_mmc2_bit_data, CLKF_SW_SUP, "l3init_cm:clk:0010:25" },
363 { DRA7_USB_OTG_SS2_CLKCTRL, dra7_usb_otg_ss2_bit_data, CLKF_HW_SUP, "dpll_core_h13x2_ck" },
364 { DRA7_USB_OTG_SS3_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h13x2_ck" },
365 { DRA7_USB_OTG_SS4_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h13x2_ck" },
366 { DRA7_SATA_CLKCTRL, dra7_sata_bit_data, CLKF_SW_SUP, "func_48m_fclk" },
367 { DRA7_PCIE1_CLKCTRL, dra7_pcie1_bit_data, CLKF_SW_SUP, "l4_root_clk_div", "pcie_clkdm" },
368 { DRA7_PCIE2_CLKCTRL, dra7_pcie2_bit_data, CLKF_SW_SUP, "l4_root_clk_div", "pcie_clkdm" },
369 { DRA7_GMAC_CLKCTRL, dra7_gmac_bit_data, CLKF_SW_SUP, "dpll_gmac_ck", "gmac_clkdm" },
370 { DRA7_OCP2SCP1_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" },
371 { DRA7_OCP2SCP3_CLKCTRL, NULL, CLKF_HW_SUP, "l4_root_clk_div" },
372 { DRA7_USB_OTG_SS1_CLKCTRL, dra7_usb_otg_ss1_bit_data, CLKF_HW_SUP, "dpll_core_h13x2_ck" },
373 { 0 },
374};
375
376static const char * const dra7_timer10_gfclk_mux_parents[] __initconst = {
377 "timer_sys_clk_div",
378 "sys_32k_ck",
379 "sys_clkin2",
380 "ref_clkin0_ck",
381 "ref_clkin1_ck",
382 "ref_clkin2_ck",
383 "ref_clkin3_ck",
384 "abe_giclk_div",
385 "video1_div_clk",
386 "video2_div_clk",
387 "hdmi_div_clk",
388 NULL,
389};
390
391static const struct omap_clkctrl_bit_data dra7_timer10_bit_data[] __initconst = {
392 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
393 { 0 },
394};
395
396static const struct omap_clkctrl_bit_data dra7_timer11_bit_data[] __initconst = {
397 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
398 { 0 },
399};
400
401static const struct omap_clkctrl_bit_data dra7_timer2_bit_data[] __initconst = {
402 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
403 { 0 },
404};
405
406static const struct omap_clkctrl_bit_data dra7_timer3_bit_data[] __initconst = {
407 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
408 { 0 },
409};
410
411static const struct omap_clkctrl_bit_data dra7_timer4_bit_data[] __initconst = {
412 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
413 { 0 },
414};
415
416static const struct omap_clkctrl_bit_data dra7_timer9_bit_data[] __initconst = {
417 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
418 { 0 },
419};
420
421static const struct omap_clkctrl_bit_data dra7_gpio2_bit_data[] __initconst = {
422 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
423 { 0 },
424};
425
426static const struct omap_clkctrl_bit_data dra7_gpio3_bit_data[] __initconst = {
427 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
428 { 0 },
429};
430
431static const struct omap_clkctrl_bit_data dra7_gpio4_bit_data[] __initconst = {
432 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
433 { 0 },
434};
435
436static const struct omap_clkctrl_bit_data dra7_gpio5_bit_data[] __initconst = {
437 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
438 { 0 },
439};
440
441static const struct omap_clkctrl_bit_data dra7_gpio6_bit_data[] __initconst = {
442 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
443 { 0 },
444};
445
446static const struct omap_clkctrl_bit_data dra7_timer13_bit_data[] __initconst = {
447 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
448 { 0 },
449};
450
451static const struct omap_clkctrl_bit_data dra7_timer14_bit_data[] __initconst = {
452 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
453 { 0 },
454};
455
456static const struct omap_clkctrl_bit_data dra7_timer15_bit_data[] __initconst = {
457 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
458 { 0 },
459};
460
461static const struct omap_clkctrl_bit_data dra7_gpio7_bit_data[] __initconst = {
462 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
463 { 0 },
464};
465
466static const struct omap_clkctrl_bit_data dra7_gpio8_bit_data[] __initconst = {
467 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
468 { 0 },
469};
470
471static const char * const dra7_mmc3_gfclk_div_parents[] __initconst = {
472 "l4per_cm:clk:0120:24",
473 NULL,
474};
475
476static const struct omap_clkctrl_div_data dra7_mmc3_gfclk_div_data __initconst = {
477 .max_div = 4,
478 .flags = CLK_DIVIDER_POWER_OF_TWO,
479};
480
481static const struct omap_clkctrl_bit_data dra7_mmc3_bit_data[] __initconst = {
482 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
483 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
484 { 25, TI_CLK_DIVIDER, dra7_mmc3_gfclk_div_parents, &dra7_mmc3_gfclk_div_data },
485 { 0 },
486};
487
488static const char * const dra7_mmc4_gfclk_div_parents[] __initconst = {
489 "l4per_cm:clk:0128:24",
490 NULL,
491};
492
493static const struct omap_clkctrl_div_data dra7_mmc4_gfclk_div_data __initconst = {
494 .max_div = 4,
495 .flags = CLK_DIVIDER_POWER_OF_TWO,
496};
497
498static const struct omap_clkctrl_bit_data dra7_mmc4_bit_data[] __initconst = {
499 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
500 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
501 { 25, TI_CLK_DIVIDER, dra7_mmc4_gfclk_div_parents, &dra7_mmc4_gfclk_div_data },
502 { 0 },
503};
504
505static const struct omap_clkctrl_bit_data dra7_timer16_bit_data[] __initconst = {
506 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
507 { 0 },
508};
509
510static const char * const dra7_qspi_gfclk_mux_parents[] __initconst = {
511 "func_128m_clk",
512 "dpll_per_h13x2_ck",
513 NULL,
514};
515
516static const char * const dra7_qspi_gfclk_div_parents[] __initconst = {
517 "l4per_cm:clk:0138:24",
518 NULL,
519};
520
521static const struct omap_clkctrl_div_data dra7_qspi_gfclk_div_data __initconst = {
522 .max_div = 4,
523 .flags = CLK_DIVIDER_POWER_OF_TWO,
524};
525
526static const struct omap_clkctrl_bit_data dra7_qspi_bit_data[] __initconst = {
527 { 24, TI_CLK_MUX, dra7_qspi_gfclk_mux_parents, NULL },
528 { 25, TI_CLK_DIVIDER, dra7_qspi_gfclk_div_parents, &dra7_qspi_gfclk_div_data },
529 { 0 },
530};
531
532static const struct omap_clkctrl_bit_data dra7_uart1_bit_data[] __initconst = {
533 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
534 { 0 },
535};
536
537static const struct omap_clkctrl_bit_data dra7_uart2_bit_data[] __initconst = {
538 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
539 { 0 },
540};
541
542static const struct omap_clkctrl_bit_data dra7_uart3_bit_data[] __initconst = {
543 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
544 { 0 },
545};
546
547static const struct omap_clkctrl_bit_data dra7_uart4_bit_data[] __initconst = {
548 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
549 { 0 },
550};
551
552static const struct omap_clkctrl_bit_data dra7_mcasp2_bit_data[] __initconst = {
553 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
554 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
555 { 28, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
556 { 0 },
557};
558
559static const struct omap_clkctrl_bit_data dra7_mcasp3_bit_data[] __initconst = {
560 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
561 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
562 { 0 },
563};
564
565static const struct omap_clkctrl_bit_data dra7_uart5_bit_data[] __initconst = {
566 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
567 { 0 },
568};
569
570static const struct omap_clkctrl_bit_data dra7_mcasp5_bit_data[] __initconst = {
571 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
572 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
573 { 0 },
574};
575
576static const struct omap_clkctrl_bit_data dra7_mcasp8_bit_data[] __initconst = {
577 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
578 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
579 { 0 },
580};
581
582static const struct omap_clkctrl_bit_data dra7_mcasp4_bit_data[] __initconst = {
583 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
584 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
585 { 0 },
586};
587
588static const struct omap_clkctrl_bit_data dra7_uart7_bit_data[] __initconst = {
589 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
590 { 0 },
591};
592
593static const struct omap_clkctrl_bit_data dra7_uart8_bit_data[] __initconst = {
594 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
595 { 0 },
596};
597
598static const struct omap_clkctrl_bit_data dra7_uart9_bit_data[] __initconst = {
599 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
600 { 0 },
601};
602
603static const struct omap_clkctrl_bit_data dra7_mcasp6_bit_data[] __initconst = {
604 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
605 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
606 { 0 },
607};
608
609static const struct omap_clkctrl_bit_data dra7_mcasp7_bit_data[] __initconst = {
610 { 22, TI_CLK_MUX, dra7_mcasp1_aux_gfclk_mux_parents, NULL },
611 { 24, TI_CLK_MUX, dra7_mcasp1_ahclkx_mux_parents, NULL },
612 { 0 },
613};
614
615static const struct omap_clkctrl_reg_data dra7_l4per_clkctrl_regs[] __initconst = {
616 { DRA7_L4_PER2_CLKCTRL, NULL, 0, "l3_iclk_div", "l4per2_clkdm" },
617 { DRA7_L4_PER3_CLKCTRL, NULL, 0, "l3_iclk_div", "l4per3_clkdm" },
618 { DRA7_TIMER10_CLKCTRL, dra7_timer10_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0028:24" },
619 { DRA7_TIMER11_CLKCTRL, dra7_timer11_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0030:24" },
620 { DRA7_TIMER2_CLKCTRL, dra7_timer2_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0038:24" },
621 { DRA7_TIMER3_CLKCTRL, dra7_timer3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0040:24" },
622 { DRA7_TIMER4_CLKCTRL, dra7_timer4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0048:24" },
623 { DRA7_TIMER9_CLKCTRL, dra7_timer9_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0050:24" },
624 { DRA7_ELM_CLKCTRL, NULL, 0, "l3_iclk_div" },
625 { DRA7_GPIO2_CLKCTRL, dra7_gpio2_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
626 { DRA7_GPIO3_CLKCTRL, dra7_gpio3_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
627 { DRA7_GPIO4_CLKCTRL, dra7_gpio4_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
628 { DRA7_GPIO5_CLKCTRL, dra7_gpio5_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
629 { DRA7_GPIO6_CLKCTRL, dra7_gpio6_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
630 { DRA7_HDQ1W_CLKCTRL, NULL, CLKF_SW_SUP, "func_12m_fclk" },
631 { DRA7_EPWMSS1_CLKCTRL, NULL, CLKF_SW_SUP, "l4_root_clk_div", "l4per2_clkdm" },
632 { DRA7_EPWMSS2_CLKCTRL, NULL, CLKF_SW_SUP, "l4_root_clk_div", "l4per2_clkdm" },
633 { DRA7_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
634 { DRA7_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
635 { DRA7_I2C3_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
636 { DRA7_I2C4_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" },
637 { DRA7_L4_PER1_CLKCTRL, NULL, 0, "l3_iclk_div" },
638 { DRA7_EPWMSS0_CLKCTRL, NULL, CLKF_SW_SUP, "l4_root_clk_div", "l4per2_clkdm" },
639 { DRA7_TIMER13_CLKCTRL, dra7_timer13_bit_data, CLKF_SW_SUP, "l4per_cm:clk:00c8:24", "l4per3_clkdm" },
640 { DRA7_TIMER14_CLKCTRL, dra7_timer14_bit_data, CLKF_SW_SUP, "l4per_cm:clk:00d0:24", "l4per3_clkdm" },
641 { DRA7_TIMER15_CLKCTRL, dra7_timer15_bit_data, CLKF_SW_SUP, "l4per_cm:clk:00d8:24", "l4per3_clkdm" },
642 { DRA7_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
643 { DRA7_MCSPI2_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
644 { DRA7_MCSPI3_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
645 { DRA7_MCSPI4_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" },
646 { DRA7_GPIO7_CLKCTRL, dra7_gpio7_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
647 { DRA7_GPIO8_CLKCTRL, dra7_gpio8_bit_data, CLKF_HW_SUP, "l3_iclk_div" },
648 { DRA7_MMC3_CLKCTRL, dra7_mmc3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0120:25" },
649 { DRA7_MMC4_CLKCTRL, dra7_mmc4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0128:25" },
650 { DRA7_TIMER16_CLKCTRL, dra7_timer16_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0130:24", "l4per3_clkdm" },
651 { DRA7_QSPI_CLKCTRL, dra7_qspi_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0138:25", "l4per2_clkdm" },
652 { DRA7_UART1_CLKCTRL, dra7_uart1_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0140:24" },
653 { DRA7_UART2_CLKCTRL, dra7_uart2_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0148:24" },
654 { DRA7_UART3_CLKCTRL, dra7_uart3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0150:24" },
655 { DRA7_UART4_CLKCTRL, dra7_uart4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0158:24" },
656 { DRA7_MCASP2_CLKCTRL, dra7_mcasp2_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0160:22", "l4per2_clkdm" },
657 { DRA7_MCASP3_CLKCTRL, dra7_mcasp3_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0168:22", "l4per2_clkdm" },
658 { DRA7_UART5_CLKCTRL, dra7_uart5_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0170:24" },
659 { DRA7_MCASP5_CLKCTRL, dra7_mcasp5_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0178:22", "l4per2_clkdm" },
660 { DRA7_MCASP8_CLKCTRL, dra7_mcasp8_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0190:24", "l4per2_clkdm" },
661 { DRA7_MCASP4_CLKCTRL, dra7_mcasp4_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0198:22", "l4per2_clkdm" },
662 { DRA7_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" },
663 { DRA7_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" },
664 { DRA7_DES_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" },
665 { DRA7_RNG_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" },
666 { DRA7_SHAM_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" },
667 { DRA7_UART7_CLKCTRL, dra7_uart7_bit_data, CLKF_SW_SUP, "l4per_cm:clk:01d0:24", "l4per2_clkdm" },
668 { DRA7_UART8_CLKCTRL, dra7_uart8_bit_data, CLKF_SW_SUP, "l4per_cm:clk:01e0:24", "l4per2_clkdm" },
669 { DRA7_UART9_CLKCTRL, dra7_uart9_bit_data, CLKF_SW_SUP, "l4per_cm:clk:01e8:24", "l4per2_clkdm" },
670 { DRA7_DCAN2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_clkin1", "l4per2_clkdm" },
671 { DRA7_MCASP6_CLKCTRL, dra7_mcasp6_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0204:22", "l4per2_clkdm" },
672 { DRA7_MCASP7_CLKCTRL, dra7_mcasp7_bit_data, CLKF_SW_SUP, "l4per_cm:clk:0208:22", "l4per2_clkdm" },
673 { 0 },
674};
675
676static const struct omap_clkctrl_bit_data dra7_gpio1_bit_data[] __initconst = {
677 { 8, TI_CLK_GATE, dra7_dss_32khz_clk_parents, NULL },
678 { 0 },
679};
680
681static const struct omap_clkctrl_bit_data dra7_timer1_bit_data[] __initconst = {
682 { 24, TI_CLK_MUX, dra7_timer10_gfclk_mux_parents, NULL },
683 { 0 },
684};
685
686static const struct omap_clkctrl_bit_data dra7_uart10_bit_data[] __initconst = {
687 { 24, TI_CLK_MUX, dra7_uart6_gfclk_mux_parents, NULL },
688 { 0 },
689};
690
691static const char * const dra7_dcan1_sys_clk_mux_parents[] __initconst = {
692 "sys_clkin1",
693 "sys_clkin2",
694 NULL,
695};
696
697static const struct omap_clkctrl_bit_data dra7_dcan1_bit_data[] __initconst = {
698 { 24, TI_CLK_MUX, dra7_dcan1_sys_clk_mux_parents, NULL },
699 { 0 },
700};
701
702static const struct omap_clkctrl_reg_data dra7_wkupaon_clkctrl_regs[] __initconst = {
703 { DRA7_L4_WKUP_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
704 { DRA7_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" },
705 { DRA7_GPIO1_CLKCTRL, dra7_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" },
706 { DRA7_TIMER1_CLKCTRL, dra7_timer1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0020:24" },
707 { DRA7_TIMER12_CLKCTRL, NULL, 0, "secure_32k_clk_src_ck" },
708 { DRA7_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" },
709 { DRA7_UART10_CLKCTRL, dra7_uart10_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0060:24" },
710 { DRA7_DCAN1_CLKCTRL, dra7_dcan1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0068:24" },
711 { 0 },
712};
713
714const struct omap_clkctrl_data dra7_clkctrl_data[] __initconst = {
715 { 0x4a005320, dra7_mpu_clkctrl_regs },
716 { 0x4a005540, dra7_ipu_clkctrl_regs },
717 { 0x4a005740, dra7_rtc_clkctrl_regs },
718 { 0x4a008620, dra7_coreaon_clkctrl_regs },
719 { 0x4a008720, dra7_l3main1_clkctrl_regs },
720 { 0x4a008a20, dra7_dma_clkctrl_regs },
721 { 0x4a008b20, dra7_emif_clkctrl_regs },
722 { 0x4a008c00, dra7_atl_clkctrl_regs },
723 { 0x4a008d20, dra7_l4cfg_clkctrl_regs },
724 { 0x4a008e20, dra7_l3instr_clkctrl_regs },
725 { 0x4a009120, dra7_dss_clkctrl_regs },
726 { 0x4a009320, dra7_l3init_clkctrl_regs },
727 { 0x4a009700, dra7_l4per_clkctrl_regs },
728 { 0x4ae07820, dra7_wkupaon_clkctrl_regs },
729 { 0 },
730};
731
24static struct ti_dt_clk dra7xx_clks[] = { 732static struct ti_dt_clk dra7xx_clks[] = {
25 DT_CLK(NULL, "atl_clkin0_ck", "atl_clkin0_ck"),
26 DT_CLK(NULL, "atl_clkin1_ck", "atl_clkin1_ck"),
27 DT_CLK(NULL, "atl_clkin2_ck", "atl_clkin2_ck"),
28 DT_CLK(NULL, "atl_clkin3_ck", "atl_clkin3_ck"),
29 DT_CLK(NULL, "hdmi_clkin_ck", "hdmi_clkin_ck"),
30 DT_CLK(NULL, "mlb_clkin_ck", "mlb_clkin_ck"),
31 DT_CLK(NULL, "mlbp_clkin_ck", "mlbp_clkin_ck"),
32 DT_CLK(NULL, "pciesref_acs_clk_ck", "pciesref_acs_clk_ck"),
33 DT_CLK(NULL, "ref_clkin0_ck", "ref_clkin0_ck"),
34 DT_CLK(NULL, "ref_clkin1_ck", "ref_clkin1_ck"),
35 DT_CLK(NULL, "ref_clkin2_ck", "ref_clkin2_ck"),
36 DT_CLK(NULL, "ref_clkin3_ck", "ref_clkin3_ck"),
37 DT_CLK(NULL, "rmii_clk_ck", "rmii_clk_ck"),
38 DT_CLK(NULL, "sdvenc_clkin_ck", "sdvenc_clkin_ck"),
39 DT_CLK(NULL, "secure_32k_clk_src_ck", "secure_32k_clk_src_ck"),
40 DT_CLK(NULL, "sys_32k_ck", "sys_32k_ck"),
41 DT_CLK(NULL, "virt_12000000_ck", "virt_12000000_ck"),
42 DT_CLK(NULL, "virt_13000000_ck", "virt_13000000_ck"),
43 DT_CLK(NULL, "virt_16800000_ck", "virt_16800000_ck"),
44 DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
45 DT_CLK(NULL, "virt_20000000_ck", "virt_20000000_ck"),
46 DT_CLK(NULL, "virt_26000000_ck", "virt_26000000_ck"),
47 DT_CLK(NULL, "virt_27000000_ck", "virt_27000000_ck"),
48 DT_CLK(NULL, "virt_38400000_ck", "virt_38400000_ck"),
49 DT_CLK(NULL, "sys_clkin1", "sys_clkin1"),
50 DT_CLK(NULL, "sys_clkin2", "sys_clkin2"),
51 DT_CLK(NULL, "usb_otg_clkin_ck", "usb_otg_clkin_ck"),
52 DT_CLK(NULL, "video1_clkin_ck", "video1_clkin_ck"),
53 DT_CLK(NULL, "video1_m2_clkin_ck", "video1_m2_clkin_ck"),
54 DT_CLK(NULL, "video2_clkin_ck", "video2_clkin_ck"),
55 DT_CLK(NULL, "video2_m2_clkin_ck", "video2_m2_clkin_ck"),
56 DT_CLK(NULL, "abe_dpll_sys_clk_mux", "abe_dpll_sys_clk_mux"),
57 DT_CLK(NULL, "abe_dpll_bypass_clk_mux", "abe_dpll_bypass_clk_mux"),
58 DT_CLK(NULL, "abe_dpll_clk_mux", "abe_dpll_clk_mux"),
59 DT_CLK(NULL, "dpll_abe_ck", "dpll_abe_ck"),
60 DT_CLK(NULL, "dpll_abe_x2_ck", "dpll_abe_x2_ck"),
61 DT_CLK(NULL, "dpll_abe_m2x2_ck", "dpll_abe_m2x2_ck"),
62 DT_CLK(NULL, "abe_24m_fclk", "abe_24m_fclk"),
63 DT_CLK(NULL, "abe_clk", "abe_clk"),
64 DT_CLK(NULL, "aess_fclk", "aess_fclk"),
65 DT_CLK(NULL, "abe_giclk_div", "abe_giclk_div"),
66 DT_CLK(NULL, "abe_lp_clk_div", "abe_lp_clk_div"),
67 DT_CLK(NULL, "abe_sys_clk_div", "abe_sys_clk_div"),
68 DT_CLK(NULL, "adc_gfclk_mux", "adc_gfclk_mux"),
69 DT_CLK(NULL, "dpll_pcie_ref_ck", "dpll_pcie_ref_ck"),
70 DT_CLK(NULL, "dpll_pcie_ref_m2ldo_ck", "dpll_pcie_ref_m2ldo_ck"),
71 DT_CLK(NULL, "apll_pcie_ck", "apll_pcie_ck"),
72 DT_CLK(NULL, "apll_pcie_clkvcoldo", "apll_pcie_clkvcoldo"),
73 DT_CLK(NULL, "apll_pcie_clkvcoldo_div", "apll_pcie_clkvcoldo_div"),
74 DT_CLK(NULL, "apll_pcie_m2_ck", "apll_pcie_m2_ck"),
75 DT_CLK(NULL, "sys_clk1_dclk_div", "sys_clk1_dclk_div"),
76 DT_CLK(NULL, "sys_clk2_dclk_div", "sys_clk2_dclk_div"),
77 DT_CLK(NULL, "dpll_abe_m2_ck", "dpll_abe_m2_ck"),
78 DT_CLK(NULL, "per_abe_x1_dclk_div", "per_abe_x1_dclk_div"),
79 DT_CLK(NULL, "dpll_abe_m3x2_ck", "dpll_abe_m3x2_ck"),
80 DT_CLK(NULL, "dpll_core_ck", "dpll_core_ck"),
81 DT_CLK(NULL, "dpll_core_x2_ck", "dpll_core_x2_ck"),
82 DT_CLK(NULL, "dpll_core_h12x2_ck", "dpll_core_h12x2_ck"),
83 DT_CLK(NULL, "mpu_dpll_hs_clk_div", "mpu_dpll_hs_clk_div"),
84 DT_CLK(NULL, "dpll_mpu_ck", "dpll_mpu_ck"),
85 DT_CLK(NULL, "dpll_mpu_m2_ck", "dpll_mpu_m2_ck"),
86 DT_CLK(NULL, "mpu_dclk_div", "mpu_dclk_div"),
87 DT_CLK(NULL, "dsp_dpll_hs_clk_div", "dsp_dpll_hs_clk_div"),
88 DT_CLK(NULL, "dpll_dsp_ck", "dpll_dsp_ck"),
89 DT_CLK(NULL, "dpll_dsp_m2_ck", "dpll_dsp_m2_ck"),
90 DT_CLK(NULL, "dsp_gclk_div", "dsp_gclk_div"),
91 DT_CLK(NULL, "iva_dpll_hs_clk_div", "iva_dpll_hs_clk_div"),
92 DT_CLK(NULL, "dpll_iva_ck", "dpll_iva_ck"),
93 DT_CLK(NULL, "dpll_iva_m2_ck", "dpll_iva_m2_ck"),
94 DT_CLK(NULL, "iva_dclk", "iva_dclk"),
95 DT_CLK(NULL, "dpll_gpu_ck", "dpll_gpu_ck"),
96 DT_CLK(NULL, "dpll_gpu_m2_ck", "dpll_gpu_m2_ck"),
97 DT_CLK(NULL, "gpu_dclk", "gpu_dclk"),
98 DT_CLK(NULL, "dpll_core_m2_ck", "dpll_core_m2_ck"),
99 DT_CLK(NULL, "core_dpll_out_dclk_div", "core_dpll_out_dclk_div"),
100 DT_CLK(NULL, "dpll_ddr_ck", "dpll_ddr_ck"),
101 DT_CLK(NULL, "dpll_ddr_m2_ck", "dpll_ddr_m2_ck"),
102 DT_CLK(NULL, "emif_phy_dclk_div", "emif_phy_dclk_div"),
103 DT_CLK(NULL, "dpll_gmac_ck", "dpll_gmac_ck"),
104 DT_CLK(NULL, "dpll_gmac_m2_ck", "dpll_gmac_m2_ck"),
105 DT_CLK(NULL, "gmac_250m_dclk_div", "gmac_250m_dclk_div"),
106 DT_CLK(NULL, "video2_dclk_div", "video2_dclk_div"),
107 DT_CLK(NULL, "video1_dclk_div", "video1_dclk_div"),
108 DT_CLK(NULL, "hdmi_dclk_div", "hdmi_dclk_div"),
109 DT_CLK(NULL, "per_dpll_hs_clk_div", "per_dpll_hs_clk_div"),
110 DT_CLK(NULL, "dpll_per_ck", "dpll_per_ck"),
111 DT_CLK(NULL, "dpll_per_m2_ck", "dpll_per_m2_ck"),
112 DT_CLK(NULL, "func_96m_aon_dclk_div", "func_96m_aon_dclk_div"),
113 DT_CLK(NULL, "usb_dpll_hs_clk_div", "usb_dpll_hs_clk_div"),
114 DT_CLK(NULL, "dpll_usb_ck", "dpll_usb_ck"),
115 DT_CLK(NULL, "dpll_usb_m2_ck", "dpll_usb_m2_ck"),
116 DT_CLK(NULL, "l3init_480m_dclk_div", "l3init_480m_dclk_div"),
117 DT_CLK(NULL, "usb_otg_dclk_div", "usb_otg_dclk_div"),
118 DT_CLK(NULL, "sata_dclk_div", "sata_dclk_div"),
119 DT_CLK(NULL, "dpll_pcie_ref_m2_ck", "dpll_pcie_ref_m2_ck"),
120 DT_CLK(NULL, "pcie2_dclk_div", "pcie2_dclk_div"),
121 DT_CLK(NULL, "pcie_dclk_div", "pcie_dclk_div"),
122 DT_CLK(NULL, "emu_dclk_div", "emu_dclk_div"),
123 DT_CLK(NULL, "secure_32k_dclk_div", "secure_32k_dclk_div"),
124 DT_CLK(NULL, "eve_dpll_hs_clk_div", "eve_dpll_hs_clk_div"),
125 DT_CLK(NULL, "dpll_eve_ck", "dpll_eve_ck"),
126 DT_CLK(NULL, "dpll_eve_m2_ck", "dpll_eve_m2_ck"),
127 DT_CLK(NULL, "eve_dclk_div", "eve_dclk_div"),
128 DT_CLK(NULL, "clkoutmux0_clk_mux", "clkoutmux0_clk_mux"),
129 DT_CLK(NULL, "clkoutmux1_clk_mux", "clkoutmux1_clk_mux"),
130 DT_CLK(NULL, "clkoutmux2_clk_mux", "clkoutmux2_clk_mux"),
131 DT_CLK(NULL, "custefuse_sys_gfclk_div", "custefuse_sys_gfclk_div"),
132 DT_CLK(NULL, "dpll_core_h13x2_ck", "dpll_core_h13x2_ck"),
133 DT_CLK(NULL, "dpll_core_h14x2_ck", "dpll_core_h14x2_ck"),
134 DT_CLK(NULL, "dpll_core_h22x2_ck", "dpll_core_h22x2_ck"),
135 DT_CLK(NULL, "dpll_core_h23x2_ck", "dpll_core_h23x2_ck"),
136 DT_CLK(NULL, "dpll_core_h24x2_ck", "dpll_core_h24x2_ck"),
137 DT_CLK(NULL, "dpll_ddr_x2_ck", "dpll_ddr_x2_ck"),
138 DT_CLK(NULL, "dpll_ddr_h11x2_ck", "dpll_ddr_h11x2_ck"),
139 DT_CLK(NULL, "dpll_dsp_x2_ck", "dpll_dsp_x2_ck"),
140 DT_CLK(NULL, "dpll_dsp_m3x2_ck", "dpll_dsp_m3x2_ck"),
141 DT_CLK(NULL, "dpll_gmac_x2_ck", "dpll_gmac_x2_ck"),
142 DT_CLK(NULL, "dpll_gmac_h11x2_ck", "dpll_gmac_h11x2_ck"),
143 DT_CLK(NULL, "dpll_gmac_h12x2_ck", "dpll_gmac_h12x2_ck"),
144 DT_CLK(NULL, "dpll_gmac_h13x2_ck", "dpll_gmac_h13x2_ck"),
145 DT_CLK(NULL, "dpll_gmac_m3x2_ck", "dpll_gmac_m3x2_ck"),
146 DT_CLK(NULL, "dpll_per_x2_ck", "dpll_per_x2_ck"),
147 DT_CLK(NULL, "dpll_per_h11x2_ck", "dpll_per_h11x2_ck"),
148 DT_CLK(NULL, "dpll_per_h12x2_ck", "dpll_per_h12x2_ck"),
149 DT_CLK(NULL, "dpll_per_h13x2_ck", "dpll_per_h13x2_ck"),
150 DT_CLK(NULL, "dpll_per_h14x2_ck", "dpll_per_h14x2_ck"),
151 DT_CLK(NULL, "dpll_per_m2x2_ck", "dpll_per_m2x2_ck"),
152 DT_CLK(NULL, "dpll_usb_clkdcoldo", "dpll_usb_clkdcoldo"),
153 DT_CLK(NULL, "eve_clk", "eve_clk"),
154 DT_CLK(NULL, "func_128m_clk", "func_128m_clk"),
155 DT_CLK(NULL, "func_12m_fclk", "func_12m_fclk"),
156 DT_CLK(NULL, "func_24m_clk", "func_24m_clk"),
157 DT_CLK(NULL, "func_48m_fclk", "func_48m_fclk"),
158 DT_CLK(NULL, "func_96m_fclk", "func_96m_fclk"),
159 DT_CLK(NULL, "gmii_m_clk_div", "gmii_m_clk_div"),
160 DT_CLK(NULL, "hdmi_clk2_div", "hdmi_clk2_div"),
161 DT_CLK(NULL, "hdmi_div_clk", "hdmi_div_clk"),
162 DT_CLK(NULL, "hdmi_dpll_clk_mux", "hdmi_dpll_clk_mux"),
163 DT_CLK(NULL, "l3_iclk_div", "l3_iclk_div"),
164 DT_CLK(NULL, "l3init_60m_fclk", "l3init_60m_fclk"),
165 DT_CLK(NULL, "l4_root_clk_div", "l4_root_clk_div"),
166 DT_CLK(NULL, "mlb_clk", "mlb_clk"),
167 DT_CLK(NULL, "mlbp_clk", "mlbp_clk"),
168 DT_CLK(NULL, "per_abe_x1_gfclk2_div", "per_abe_x1_gfclk2_div"),
169 DT_CLK(NULL, "timer_sys_clk_div", "timer_sys_clk_div"),
170 DT_CLK(NULL, "video1_clk2_div", "video1_clk2_div"),
171 DT_CLK(NULL, "video1_div_clk", "video1_div_clk"),
172 DT_CLK(NULL, "video1_dpll_clk_mux", "video1_dpll_clk_mux"),
173 DT_CLK(NULL, "video2_clk2_div", "video2_clk2_div"),
174 DT_CLK(NULL, "video2_div_clk", "video2_div_clk"),
175 DT_CLK(NULL, "video2_dpll_clk_mux", "video2_dpll_clk_mux"),
176 DT_CLK(NULL, "wkupaon_iclk_mux", "wkupaon_iclk_mux"),
177 DT_CLK(NULL, "dss_32khz_clk", "dss_32khz_clk"),
178 DT_CLK(NULL, "dss_48mhz_clk", "dss_48mhz_clk"),
179 DT_CLK(NULL, "dss_dss_clk", "dss_dss_clk"),
180 DT_CLK(NULL, "dss_hdmi_clk", "dss_hdmi_clk"),
181 DT_CLK(NULL, "dss_video1_clk", "dss_video1_clk"),
182 DT_CLK(NULL, "dss_video2_clk", "dss_video2_clk"),
183 DT_CLK(NULL, "gpio1_dbclk", "gpio1_dbclk"),
184 DT_CLK(NULL, "gpio2_dbclk", "gpio2_dbclk"),
185 DT_CLK(NULL, "gpio3_dbclk", "gpio3_dbclk"),
186 DT_CLK(NULL, "gpio4_dbclk", "gpio4_dbclk"),
187 DT_CLK(NULL, "gpio5_dbclk", "gpio5_dbclk"),
188 DT_CLK(NULL, "gpio6_dbclk", "gpio6_dbclk"),
189 DT_CLK(NULL, "gpio7_dbclk", "gpio7_dbclk"),
190 DT_CLK(NULL, "gpio8_dbclk", "gpio8_dbclk"),
191 DT_CLK(NULL, "mmc1_clk32k", "mmc1_clk32k"),
192 DT_CLK(NULL, "mmc2_clk32k", "mmc2_clk32k"),
193 DT_CLK(NULL, "mmc3_clk32k", "mmc3_clk32k"),
194 DT_CLK(NULL, "mmc4_clk32k", "mmc4_clk32k"),
195 DT_CLK(NULL, "sata_ref_clk", "sata_ref_clk"),
196 DT_CLK(NULL, "usb_otg_ss1_refclk960m", "usb_otg_ss1_refclk960m"),
197 DT_CLK(NULL, "usb_otg_ss2_refclk960m", "usb_otg_ss2_refclk960m"),
198 DT_CLK(NULL, "usb_phy1_always_on_clk32k", "usb_phy1_always_on_clk32k"),
199 DT_CLK(NULL, "usb_phy2_always_on_clk32k", "usb_phy2_always_on_clk32k"),
200 DT_CLK(NULL, "usb_phy3_always_on_clk32k", "usb_phy3_always_on_clk32k"),
201 DT_CLK(NULL, "atl_dpll_clk_mux", "atl_dpll_clk_mux"),
202 DT_CLK(NULL, "atl_gfclk_mux", "atl_gfclk_mux"),
203 DT_CLK(NULL, "dcan1_sys_clk_mux", "dcan1_sys_clk_mux"),
204 DT_CLK(NULL, "gmac_rft_clk_mux", "gmac_rft_clk_mux"),
205 DT_CLK(NULL, "gpu_core_gclk_mux", "gpu_core_gclk_mux"),
206 DT_CLK(NULL, "gpu_hyd_gclk_mux", "gpu_hyd_gclk_mux"),
207 DT_CLK(NULL, "ipu1_gfclk_mux", "ipu1_gfclk_mux"),
208 DT_CLK(NULL, "l3instr_ts_gclk_div", "l3instr_ts_gclk_div"),
209 DT_CLK(NULL, "mcasp1_ahclkr_mux", "mcasp1_ahclkr_mux"),
210 DT_CLK(NULL, "mcasp1_ahclkx_mux", "mcasp1_ahclkx_mux"),
211 DT_CLK(NULL, "mcasp1_aux_gfclk_mux", "mcasp1_aux_gfclk_mux"),
212 DT_CLK(NULL, "mcasp2_ahclkr_mux", "mcasp2_ahclkr_mux"),
213 DT_CLK(NULL, "mcasp2_ahclkx_mux", "mcasp2_ahclkx_mux"),
214 DT_CLK(NULL, "mcasp2_aux_gfclk_mux", "mcasp2_aux_gfclk_mux"),
215 DT_CLK(NULL, "mcasp3_ahclkx_mux", "mcasp3_ahclkx_mux"),
216 DT_CLK(NULL, "mcasp3_aux_gfclk_mux", "mcasp3_aux_gfclk_mux"),
217 DT_CLK(NULL, "mcasp4_ahclkx_mux", "mcasp4_ahclkx_mux"),
218 DT_CLK(NULL, "mcasp4_aux_gfclk_mux", "mcasp4_aux_gfclk_mux"),
219 DT_CLK(NULL, "mcasp5_ahclkx_mux", "mcasp5_ahclkx_mux"),
220 DT_CLK(NULL, "mcasp5_aux_gfclk_mux", "mcasp5_aux_gfclk_mux"),
221 DT_CLK(NULL, "mcasp6_ahclkx_mux", "mcasp6_ahclkx_mux"),
222 DT_CLK(NULL, "mcasp6_aux_gfclk_mux", "mcasp6_aux_gfclk_mux"),
223 DT_CLK(NULL, "mcasp7_ahclkx_mux", "mcasp7_ahclkx_mux"),
224 DT_CLK(NULL, "mcasp7_aux_gfclk_mux", "mcasp7_aux_gfclk_mux"),
225 DT_CLK(NULL, "mcasp8_ahclkx_mux", "mcasp8_ahclkx_mux"),
226 DT_CLK(NULL, "mcasp8_aux_gfclk_mux", "mcasp8_aux_gfclk_mux"),
227 DT_CLK(NULL, "mmc1_fclk_mux", "mmc1_fclk_mux"),
228 DT_CLK(NULL, "mmc1_fclk_div", "mmc1_fclk_div"),
229 DT_CLK(NULL, "mmc2_fclk_mux", "mmc2_fclk_mux"),
230 DT_CLK(NULL, "mmc2_fclk_div", "mmc2_fclk_div"),
231 DT_CLK(NULL, "mmc3_gfclk_mux", "mmc3_gfclk_mux"),
232 DT_CLK(NULL, "mmc3_gfclk_div", "mmc3_gfclk_div"),
233 DT_CLK(NULL, "mmc4_gfclk_mux", "mmc4_gfclk_mux"),
234 DT_CLK(NULL, "mmc4_gfclk_div", "mmc4_gfclk_div"),
235 DT_CLK(NULL, "qspi_gfclk_mux", "qspi_gfclk_mux"),
236 DT_CLK(NULL, "qspi_gfclk_div", "qspi_gfclk_div"),
237 DT_CLK(NULL, "timer10_gfclk_mux", "timer10_gfclk_mux"),
238 DT_CLK(NULL, "timer11_gfclk_mux", "timer11_gfclk_mux"),
239 DT_CLK(NULL, "timer13_gfclk_mux", "timer13_gfclk_mux"),
240 DT_CLK(NULL, "timer14_gfclk_mux", "timer14_gfclk_mux"),
241 DT_CLK(NULL, "timer15_gfclk_mux", "timer15_gfclk_mux"),
242 DT_CLK(NULL, "timer16_gfclk_mux", "timer16_gfclk_mux"),
243 DT_CLK(NULL, "timer1_gfclk_mux", "timer1_gfclk_mux"),
244 DT_CLK(NULL, "timer2_gfclk_mux", "timer2_gfclk_mux"),
245 DT_CLK(NULL, "timer3_gfclk_mux", "timer3_gfclk_mux"),
246 DT_CLK(NULL, "timer4_gfclk_mux", "timer4_gfclk_mux"),
247 DT_CLK(NULL, "timer5_gfclk_mux", "timer5_gfclk_mux"),
248 DT_CLK(NULL, "timer6_gfclk_mux", "timer6_gfclk_mux"),
249 DT_CLK(NULL, "timer7_gfclk_mux", "timer7_gfclk_mux"),
250 DT_CLK(NULL, "timer8_gfclk_mux", "timer8_gfclk_mux"),
251 DT_CLK(NULL, "timer9_gfclk_mux", "timer9_gfclk_mux"),
252 DT_CLK(NULL, "uart10_gfclk_mux", "uart10_gfclk_mux"),
253 DT_CLK(NULL, "uart1_gfclk_mux", "uart1_gfclk_mux"),
254 DT_CLK(NULL, "uart2_gfclk_mux", "uart2_gfclk_mux"),
255 DT_CLK(NULL, "uart3_gfclk_mux", "uart3_gfclk_mux"),
256 DT_CLK(NULL, "uart4_gfclk_mux", "uart4_gfclk_mux"),
257 DT_CLK(NULL, "uart5_gfclk_mux", "uart5_gfclk_mux"),
258 DT_CLK(NULL, "uart6_gfclk_mux", "uart6_gfclk_mux"),
259 DT_CLK(NULL, "uart7_gfclk_mux", "uart7_gfclk_mux"),
260 DT_CLK(NULL, "uart8_gfclk_mux", "uart8_gfclk_mux"),
261 DT_CLK(NULL, "uart9_gfclk_mux", "uart9_gfclk_mux"),
262 DT_CLK(NULL, "vip1_gclk_mux", "vip1_gclk_mux"),
263 DT_CLK(NULL, "vip2_gclk_mux", "vip2_gclk_mux"),
264 DT_CLK(NULL, "vip3_gclk_mux", "vip3_gclk_mux"),
265 DT_CLK("omap_i2c.1", "ick", "dummy_ck"),
266 DT_CLK("omap_i2c.2", "ick", "dummy_ck"),
267 DT_CLK("omap_i2c.3", "ick", "dummy_ck"),
268 DT_CLK("omap_i2c.4", "ick", "dummy_ck"),
269 DT_CLK(NULL, "mailboxes_ick", "dummy_ck"),
270 DT_CLK("omap_hsmmc.0", "ick", "dummy_ck"),
271 DT_CLK("omap_hsmmc.1", "ick", "dummy_ck"),
272 DT_CLK("omap_hsmmc.2", "ick", "dummy_ck"),
273 DT_CLK("omap_hsmmc.3", "ick", "dummy_ck"),
274 DT_CLK("omap_hsmmc.4", "ick", "dummy_ck"),
275 DT_CLK("omap-mcbsp.1", "ick", "dummy_ck"),
276 DT_CLK("omap-mcbsp.2", "ick", "dummy_ck"),
277 DT_CLK("omap-mcbsp.3", "ick", "dummy_ck"),
278 DT_CLK("omap-mcbsp.4", "ick", "dummy_ck"),
279 DT_CLK("omap2_mcspi.1", "ick", "dummy_ck"),
280 DT_CLK("omap2_mcspi.2", "ick", "dummy_ck"),
281 DT_CLK("omap2_mcspi.3", "ick", "dummy_ck"),
282 DT_CLK("omap2_mcspi.4", "ick", "dummy_ck"),
283 DT_CLK(NULL, "uart1_ick", "dummy_ck"),
284 DT_CLK(NULL, "uart2_ick", "dummy_ck"),
285 DT_CLK(NULL, "uart3_ick", "dummy_ck"),
286 DT_CLK(NULL, "uart4_ick", "dummy_ck"),
287 DT_CLK("usbhs_omap", "usbhost_ick", "dummy_ck"),
288 DT_CLK("usbhs_omap", "usbtll_fck", "dummy_ck"),
289 DT_CLK("omap_wdt", "ick", "dummy_ck"),
290 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"), 733 DT_CLK(NULL, "timer_32k_ck", "sys_32k_ck"),
291 DT_CLK(NULL, "sys_clkin_ck", "timer_sys_clk_div"), 734 DT_CLK(NULL, "sys_clkin_ck", "timer_sys_clk_div"),
292 DT_CLK("4ae18000.timer", "timer_sys_ck", "timer_sys_clk_div"),
293 DT_CLK("48032000.timer", "timer_sys_ck", "timer_sys_clk_div"),
294 DT_CLK("48034000.timer", "timer_sys_ck", "timer_sys_clk_div"),
295 DT_CLK("48036000.timer", "timer_sys_ck", "timer_sys_clk_div"),
296 DT_CLK("4803e000.timer", "timer_sys_ck", "timer_sys_clk_div"),
297 DT_CLK("48086000.timer", "timer_sys_ck", "timer_sys_clk_div"),
298 DT_CLK("48088000.timer", "timer_sys_ck", "timer_sys_clk_div"),
299 DT_CLK("48820000.timer", "timer_sys_ck", "timer_sys_clk_div"),
300 DT_CLK("48822000.timer", "timer_sys_ck", "timer_sys_clk_div"),
301 DT_CLK("48824000.timer", "timer_sys_ck", "timer_sys_clk_div"),
302 DT_CLK("48826000.timer", "timer_sys_ck", "timer_sys_clk_div"),
303 DT_CLK("48828000.timer", "timer_sys_ck", "timer_sys_clk_div"),
304 DT_CLK("4882a000.timer", "timer_sys_ck", "timer_sys_clk_div"),
305 DT_CLK("4882c000.timer", "timer_sys_ck", "timer_sys_clk_div"),
306 DT_CLK("4882e000.timer", "timer_sys_ck", "timer_sys_clk_div"),
307 DT_CLK(NULL, "sys_clkin", "sys_clkin1"), 735 DT_CLK(NULL, "sys_clkin", "sys_clkin1"),
308 DT_CLK(NULL, "dss_deshdcp_clk", "dss_deshdcp_clk"), 736 DT_CLK(NULL, "atl_dpll_clk_mux", "atl_cm:0000:24"),
737 DT_CLK(NULL, "atl_gfclk_mux", "atl_cm:0000:26"),
738 DT_CLK(NULL, "dcan1_sys_clk_mux", "wkupaon_cm:0068:24"),
739 DT_CLK(NULL, "dss_32khz_clk", "dss_cm:0000:11"),
740 DT_CLK(NULL, "dss_48mhz_clk", "dss_cm:0000:9"),
741 DT_CLK(NULL, "dss_dss_clk", "dss_cm:0000:8"),
742 DT_CLK(NULL, "dss_hdmi_clk", "dss_cm:0000:10"),
743 DT_CLK(NULL, "dss_video1_clk", "dss_cm:0000:12"),
744 DT_CLK(NULL, "dss_video2_clk", "dss_cm:0000:13"),
745 DT_CLK(NULL, "gmac_rft_clk_mux", "l3init_cm:00b0:25"),
746 DT_CLK(NULL, "gpio1_dbclk", "wkupaon_cm:0018:8"),
747 DT_CLK(NULL, "gpio2_dbclk", "l4per_cm:0060:8"),
748 DT_CLK(NULL, "gpio3_dbclk", "l4per_cm:0068:8"),
749 DT_CLK(NULL, "gpio4_dbclk", "l4per_cm:0070:8"),
750 DT_CLK(NULL, "gpio5_dbclk", "l4per_cm:0078:8"),
751 DT_CLK(NULL, "gpio6_dbclk", "l4per_cm:0080:8"),
752 DT_CLK(NULL, "gpio7_dbclk", "l4per_cm:0110:8"),
753 DT_CLK(NULL, "gpio8_dbclk", "l4per_cm:0118:8"),
754 DT_CLK(NULL, "mcasp1_ahclkr_mux", "ipu_cm:0010:28"),
755 DT_CLK(NULL, "mcasp1_ahclkx_mux", "ipu_cm:0010:24"),
756 DT_CLK(NULL, "mcasp1_aux_gfclk_mux", "ipu_cm:0010:22"),
757 DT_CLK(NULL, "mcasp2_ahclkr_mux", "l4per_cm:0160:28"),
758 DT_CLK(NULL, "mcasp2_ahclkx_mux", "l4per_cm:0160:24"),
759 DT_CLK(NULL, "mcasp2_aux_gfclk_mux", "l4per_cm:0160:22"),
760 DT_CLK(NULL, "mcasp3_ahclkx_mux", "l4per_cm:0168:24"),
761 DT_CLK(NULL, "mcasp3_aux_gfclk_mux", "l4per_cm:0168:22"),
762 DT_CLK(NULL, "mcasp4_ahclkx_mux", "l4per_cm:0198:24"),
763 DT_CLK(NULL, "mcasp4_aux_gfclk_mux", "l4per_cm:0198:22"),
764 DT_CLK(NULL, "mcasp5_ahclkx_mux", "l4per_cm:0178:24"),
765 DT_CLK(NULL, "mcasp5_aux_gfclk_mux", "l4per_cm:0178:22"),
766 DT_CLK(NULL, "mcasp6_ahclkx_mux", "l4per_cm:0204:24"),
767 DT_CLK(NULL, "mcasp6_aux_gfclk_mux", "l4per_cm:0204:22"),
768 DT_CLK(NULL, "mcasp7_ahclkx_mux", "l4per_cm:0208:24"),
769 DT_CLK(NULL, "mcasp7_aux_gfclk_mux", "l4per_cm:0208:22"),
770 DT_CLK(NULL, "mcasp8_ahclkx_mux", "l4per_cm:0190:22"),
771 DT_CLK(NULL, "mcasp8_aux_gfclk_mux", "l4per_cm:0190:24"),
772 DT_CLK(NULL, "mmc1_clk32k", "l3init_cm:0008:8"),
773 DT_CLK(NULL, "mmc1_fclk_div", "l3init_cm:0008:25"),
774 DT_CLK(NULL, "mmc1_fclk_mux", "l3init_cm:0008:24"),
775 DT_CLK(NULL, "mmc2_clk32k", "l3init_cm:0010:8"),
776 DT_CLK(NULL, "mmc2_fclk_div", "l3init_cm:0010:25"),
777 DT_CLK(NULL, "mmc2_fclk_mux", "l3init_cm:0010:24"),
778 DT_CLK(NULL, "mmc3_clk32k", "l4per_cm:0120:8"),
779 DT_CLK(NULL, "mmc3_gfclk_div", "l4per_cm:0120:25"),
780 DT_CLK(NULL, "mmc3_gfclk_mux", "l4per_cm:0120:24"),
781 DT_CLK(NULL, "mmc4_clk32k", "l4per_cm:0128:8"),
782 DT_CLK(NULL, "mmc4_gfclk_div", "l4per_cm:0128:25"),
783 DT_CLK(NULL, "mmc4_gfclk_mux", "l4per_cm:0128:24"),
784 DT_CLK(NULL, "optfclk_pciephy1_32khz", "l3init_cm:0090:8"),
785 DT_CLK(NULL, "optfclk_pciephy1_clk", "l3init_cm:0090:9"),
786 DT_CLK(NULL, "optfclk_pciephy1_div_clk", "l3init_cm:0090:10"),
787 DT_CLK(NULL, "optfclk_pciephy2_32khz", "l3init_cm:0098:8"),
788 DT_CLK(NULL, "optfclk_pciephy2_clk", "l3init_cm:0098:9"),
789 DT_CLK(NULL, "optfclk_pciephy2_div_clk", "l3init_cm:0098:10"),
790 DT_CLK(NULL, "qspi_gfclk_div", "l4per_cm:0138:25"),
791 DT_CLK(NULL, "qspi_gfclk_mux", "l4per_cm:0138:24"),
792 DT_CLK(NULL, "rmii_50mhz_clk_mux", "l3init_cm:00b0:24"),
793 DT_CLK(NULL, "sata_ref_clk", "l3init_cm:0068:8"),
794 DT_CLK(NULL, "timer10_gfclk_mux", "l4per_cm:0028:24"),
795 DT_CLK(NULL, "timer11_gfclk_mux", "l4per_cm:0030:24"),
796 DT_CLK(NULL, "timer13_gfclk_mux", "l4per_cm:00c8:24"),
797 DT_CLK(NULL, "timer14_gfclk_mux", "l4per_cm:00d0:24"),
798 DT_CLK(NULL, "timer15_gfclk_mux", "l4per_cm:00d8:24"),
799 DT_CLK(NULL, "timer16_gfclk_mux", "l4per_cm:0130:24"),
800 DT_CLK(NULL, "timer1_gfclk_mux", "wkupaon_cm:0020:24"),
801 DT_CLK(NULL, "timer2_gfclk_mux", "l4per_cm:0038:24"),
802 DT_CLK(NULL, "timer3_gfclk_mux", "l4per_cm:0040:24"),
803 DT_CLK(NULL, "timer4_gfclk_mux", "l4per_cm:0048:24"),
804 DT_CLK(NULL, "timer5_gfclk_mux", "ipu_cm:0018:24"),
805 DT_CLK(NULL, "timer6_gfclk_mux", "ipu_cm:0020:24"),
806 DT_CLK(NULL, "timer7_gfclk_mux", "ipu_cm:0028:24"),
807 DT_CLK(NULL, "timer8_gfclk_mux", "ipu_cm:0030:24"),
808 DT_CLK(NULL, "timer9_gfclk_mux", "l4per_cm:0050:24"),
809 DT_CLK(NULL, "uart10_gfclk_mux", "wkupaon_cm:0060:24"),
810 DT_CLK(NULL, "uart1_gfclk_mux", "l4per_cm:0140:24"),
811 DT_CLK(NULL, "uart2_gfclk_mux", "l4per_cm:0148:24"),
812 DT_CLK(NULL, "uart3_gfclk_mux", "l4per_cm:0150:24"),
813 DT_CLK(NULL, "uart4_gfclk_mux", "l4per_cm:0158:24"),
814 DT_CLK(NULL, "uart5_gfclk_mux", "l4per_cm:0170:24"),
815 DT_CLK(NULL, "uart6_gfclk_mux", "ipu_cm:0040:24"),
816 DT_CLK(NULL, "uart7_gfclk_mux", "l4per_cm:01d0:24"),
817 DT_CLK(NULL, "uart8_gfclk_mux", "l4per_cm:01e0:24"),
818 DT_CLK(NULL, "uart9_gfclk_mux", "l4per_cm:01e8:24"),
819 DT_CLK(NULL, "usb_otg_ss1_refclk960m", "l3init_cm:00d0:8"),
820 DT_CLK(NULL, "usb_otg_ss2_refclk960m", "l3init_cm:0020:8"),
309 { .node_name = NULL }, 821 { .node_name = NULL },
310}; 822};
311 823
@@ -318,6 +830,8 @@ int __init dra7xx_dt_clk_init(void)
318 830
319 omap2_clk_disable_autoidle_all(); 831 omap2_clk_disable_autoidle_all();
320 832
833 ti_clk_add_aliases();
834
321 dpll_ck = clk_get_sys(NULL, "dpll_gmac_ck"); 835 dpll_ck = clk_get_sys(NULL, "dpll_gmac_ck");
322 rc = clk_set_rate(dpll_ck, DRA7_DPLL_GMAC_DEFFREQ); 836 rc = clk_set_rate(dpll_ck, DRA7_DPLL_GMAC_DEFFREQ);
323 if (rc) 837 if (rc)
diff --git a/drivers/clk/ti/clk-814x.c b/drivers/clk/ti/clk-814x.c
index 52c6efc53731..f688fdd2cb59 100644
--- a/drivers/clk/ti/clk-814x.c
+++ b/drivers/clk/ti/clk-814x.c
@@ -9,23 +9,48 @@
9#include <linux/clk-provider.h> 9#include <linux/clk-provider.h>
10#include <linux/clk/ti.h> 10#include <linux/clk/ti.h>
11#include <linux/of_platform.h> 11#include <linux/of_platform.h>
12#include <dt-bindings/clock/dm814.h>
12 13
13#include "clock.h" 14#include "clock.h"
14 15
16static const struct omap_clkctrl_reg_data dm814_default_clkctrl_regs[] __initconst = {
17 { DM814_USB_OTG_HS_CLKCTRL, NULL, CLKF_SW_SUP, "pll260dcoclkldo" },
18 { 0 },
19};
20
21static const struct omap_clkctrl_reg_data dm814_alwon_clkctrl_regs[] __initconst = {
22 { DM814_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
23 { DM814_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
24 { DM814_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
25 { DM814_GPIO1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
26 { DM814_GPIO2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
27 { DM814_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
28 { DM814_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
29 { DM814_WD_TIMER_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" },
30 { DM814_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
31 { DM814_GPMC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
32 { DM814_CPGMAC0_CLKCTRL, NULL, CLKF_SW_SUP, "cpsw_125mhz_gclk" },
33 { DM814_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "mpu_ck" },
34 { DM814_RTC_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" },
35 { DM814_TPCC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
36 { DM814_TPTC0_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
37 { DM814_TPTC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
38 { DM814_TPTC2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
39 { DM814_TPTC3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
40 { DM814_MMC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk8_ck" },
41 { DM814_MMC2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk8_ck" },
42 { DM814_MMC3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk8_ck" },
43 { 0 },
44};
45
46const struct omap_clkctrl_data dm814_clkctrl_data[] __initconst = {
47 { 0x48180500, dm814_default_clkctrl_regs },
48 { 0x48181400, dm814_alwon_clkctrl_regs },
49 { 0 },
50};
51
15static struct ti_dt_clk dm814_clks[] = { 52static struct ti_dt_clk dm814_clks[] = {
16 DT_CLK(NULL, "devosc_ck", "devosc_ck"),
17 DT_CLK(NULL, "mpu_ck", "mpu_ck"),
18 DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"),
19 DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"),
20 DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"),
21 DT_CLK(NULL, "sysclk8_ck", "sysclk8_ck"),
22 DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"),
23 DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"),
24 DT_CLK(NULL, "timer_sys_ck", "devosc_ck"), 53 DT_CLK(NULL, "timer_sys_ck", "devosc_ck"),
25 DT_CLK(NULL, "timer1_fck", "timer1_fck"),
26 DT_CLK(NULL, "timer2_fck", "timer2_fck"),
27 DT_CLK(NULL, "cpsw_125mhz_gclk", "cpsw_125mhz_gclk"),
28 DT_CLK(NULL, "cpsw_cpts_rft_clk", "cpsw_cpts_rft_clk"),
29 { .node_name = NULL }, 54 { .node_name = NULL },
30}; 55};
31 56
@@ -83,6 +108,7 @@ int __init dm814x_dt_clk_init(void)
83{ 108{
84 ti_dt_clocks_register(dm814_clks); 109 ti_dt_clocks_register(dm814_clks);
85 omap2_clk_disable_autoidle_all(); 110 omap2_clk_disable_autoidle_all();
111 ti_clk_add_aliases();
86 omap2_clk_enable_init_clocks(NULL, 0); 112 omap2_clk_enable_init_clocks(NULL, 0);
87 timer_clocks_initialized = true; 113 timer_clocks_initialized = true;
88 114
diff --git a/drivers/clk/ti/clk-816x.c b/drivers/clk/ti/clk-816x.c
index 2a5d84fdddc5..7d215cdf9dda 100644
--- a/drivers/clk/ti/clk-816x.c
+++ b/drivers/clk/ti/clk-816x.c
@@ -13,30 +13,59 @@
13#include <linux/list.h> 13#include <linux/list.h>
14#include <linux/clk-provider.h> 14#include <linux/clk-provider.h>
15#include <linux/clk/ti.h> 15#include <linux/clk/ti.h>
16#include <dt-bindings/clock/dm816.h>
16 17
17#include "clock.h" 18#include "clock.h"
18 19
20static const struct omap_clkctrl_reg_data dm816_default_clkctrl_regs[] __initconst = {
21 { DM816_USB_OTG_HS_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
22 { 0 },
23};
24
25static const struct omap_clkctrl_reg_data dm816_alwon_clkctrl_regs[] __initconst = {
26 { DM816_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
27 { DM816_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
28 { DM816_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
29 { DM816_GPIO1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
30 { DM816_GPIO2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
31 { DM816_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
32 { DM816_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
33 { DM816_TIMER1_CLKCTRL, NULL, CLKF_SW_SUP, "timer1_fck" },
34 { DM816_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "timer2_fck" },
35 { DM816_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "timer3_fck" },
36 { DM816_TIMER4_CLKCTRL, NULL, CLKF_SW_SUP, "timer4_fck" },
37 { DM816_TIMER5_CLKCTRL, NULL, CLKF_SW_SUP, "timer5_fck" },
38 { DM816_TIMER6_CLKCTRL, NULL, CLKF_SW_SUP, "timer6_fck" },
39 { DM816_TIMER7_CLKCTRL, NULL, CLKF_SW_SUP, "timer7_fck" },
40 { DM816_WD_TIMER_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" },
41 { DM816_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
42 { DM816_MAILBOX_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
43 { DM816_SPINBOX_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
44 { DM816_MMC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" },
45 { DM816_GPMC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" },
46 { DM816_DAVINCI_MDIO_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk24_ck" },
47 { DM816_EMAC1_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk24_ck" },
48 { DM816_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk2_ck" },
49 { DM816_RTC_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" },
50 { DM816_TPCC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
51 { DM816_TPTC0_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
52 { DM816_TPTC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
53 { DM816_TPTC2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
54 { DM816_TPTC3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" },
55 { 0 },
56};
57
58const struct omap_clkctrl_data dm816_clkctrl_data[] __initconst = {
59 { 0x48180500, dm816_default_clkctrl_regs },
60 { 0x48181400, dm816_alwon_clkctrl_regs },
61 { 0 },
62};
63
19static struct ti_dt_clk dm816x_clks[] = { 64static struct ti_dt_clk dm816x_clks[] = {
20 DT_CLK(NULL, "sys_clkin", "sys_clkin_ck"), 65 DT_CLK(NULL, "sys_clkin", "sys_clkin_ck"),
21 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"), 66 DT_CLK(NULL, "timer_sys_ck", "sys_clkin_ck"),
22 DT_CLK(NULL, "sys_32k_ck", "sys_32k_ck"),
23 DT_CLK(NULL, "timer_32k_ck", "sysclk18_ck"), 67 DT_CLK(NULL, "timer_32k_ck", "sysclk18_ck"),
24 DT_CLK(NULL, "timer_ext_ck", "tclkin_ck"), 68 DT_CLK(NULL, "timer_ext_ck", "tclkin_ck"),
25 DT_CLK(NULL, "mpu_ck", "mpu_ck"),
26 DT_CLK(NULL, "timer1_fck", "timer1_fck"),
27 DT_CLK(NULL, "timer2_fck", "timer2_fck"),
28 DT_CLK(NULL, "timer3_fck", "timer3_fck"),
29 DT_CLK(NULL, "timer4_fck", "timer4_fck"),
30 DT_CLK(NULL, "timer5_fck", "timer5_fck"),
31 DT_CLK(NULL, "timer6_fck", "timer6_fck"),
32 DT_CLK(NULL, "timer7_fck", "timer7_fck"),
33 DT_CLK(NULL, "sysclk4_ck", "sysclk4_ck"),
34 DT_CLK(NULL, "sysclk5_ck", "sysclk5_ck"),
35 DT_CLK(NULL, "sysclk6_ck", "sysclk6_ck"),
36 DT_CLK(NULL, "sysclk10_ck", "sysclk10_ck"),
37 DT_CLK(NULL, "sysclk18_ck", "sysclk18_ck"),
38 DT_CLK(NULL, "sysclk24_ck", "sysclk24_ck"),
39 DT_CLK("4a100000.ethernet", "sysclk24_ck", "sysclk24_ck"),
40 { .node_name = NULL }, 69 { .node_name = NULL },
41}; 70};
42 71
@@ -50,6 +79,7 @@ int __init dm816x_dt_clk_init(void)
50{ 79{
51 ti_dt_clocks_register(dm816x_clks); 80 ti_dt_clocks_register(dm816x_clks);
52 omap2_clk_disable_autoidle_all(); 81 omap2_clk_disable_autoidle_all();
82 ti_clk_add_aliases();
53 omap2_clk_enable_init_clocks(enable_init_clks, 83 omap2_clk_enable_init_clocks(enable_init_clks,
54 ARRAY_SIZE(enable_init_clks)); 84 ARRAY_SIZE(enable_init_clks));
55 85
diff --git a/drivers/clk/ti/clk.c b/drivers/clk/ti/clk.c
index e5a1c8297a1d..302c9e64e5fa 100644
--- a/drivers/clk/ti/clk.c
+++ b/drivers/clk/ti/clk.c
@@ -108,25 +108,77 @@ void __init ti_dt_clocks_register(struct ti_dt_clk oclks[])
108 struct device_node *node; 108 struct device_node *node;
109 struct clk *clk; 109 struct clk *clk;
110 struct of_phandle_args clkspec; 110 struct of_phandle_args clkspec;
111 char buf[64];
112 char *ptr;
113 char *tags[2];
114 int i;
115 int num_args;
116 int ret;
117 static bool clkctrl_nodes_missing;
118 static bool has_clkctrl_data;
111 119
112 for (c = oclks; c->node_name != NULL; c++) { 120 for (c = oclks; c->node_name != NULL; c++) {
113 node = of_find_node_by_name(NULL, c->node_name); 121 strcpy(buf, c->node_name);
122 ptr = buf;
123 for (i = 0; i < 2; i++)
124 tags[i] = NULL;
125 num_args = 0;
126 while (*ptr) {
127 if (*ptr == ':') {
128 if (num_args >= 2) {
129 pr_warn("Bad number of tags on %s\n",
130 c->node_name);
131 return;
132 }
133 tags[num_args++] = ptr + 1;
134 *ptr = 0;
135 }
136 ptr++;
137 }
138
139 if (num_args && clkctrl_nodes_missing)
140 continue;
141
142 node = of_find_node_by_name(NULL, buf);
143 if (num_args)
144 node = of_find_node_by_name(node, "clk");
114 clkspec.np = node; 145 clkspec.np = node;
146 clkspec.args_count = num_args;
147 for (i = 0; i < num_args; i++) {
148 ret = kstrtoint(tags[i], i ? 10 : 16, clkspec.args + i);
149 if (ret) {
150 pr_warn("Bad tag in %s at %d: %s\n",
151 c->node_name, i, tags[i]);
152 return;
153 }
154 }
115 clk = of_clk_get_from_provider(&clkspec); 155 clk = of_clk_get_from_provider(&clkspec);
116 156
117 if (!IS_ERR(clk)) { 157 if (!IS_ERR(clk)) {
118 c->lk.clk = clk; 158 c->lk.clk = clk;
119 clkdev_add(&c->lk); 159 clkdev_add(&c->lk);
120 } else { 160 } else {
121 pr_warn("failed to lookup clock node %s\n", 161 if (num_args && !has_clkctrl_data) {
122 c->node_name); 162 if (of_find_compatible_node(NULL, NULL,
163 "ti,clkctrl")) {
164 has_clkctrl_data = true;
165 } else {
166 clkctrl_nodes_missing = true;
167
168 pr_warn("missing clkctrl nodes, please update your dts.\n");
169 continue;
170 }
171 }
172
173 pr_warn("failed to lookup clock node %s, ret=%ld\n",
174 c->node_name, PTR_ERR(clk));
123 } 175 }
124 } 176 }
125} 177}
126 178
127struct clk_init_item { 179struct clk_init_item {
128 struct device_node *node; 180 struct device_node *node;
129 struct clk_hw *hw; 181 void *user;
130 ti_of_clk_init_cb_t func; 182 ti_of_clk_init_cb_t func;
131 struct list_head link; 183 struct list_head link;
132}; 184};
@@ -136,14 +188,14 @@ static LIST_HEAD(retry_list);
136/** 188/**
137 * ti_clk_retry_init - retries a failed clock init at later phase 189 * ti_clk_retry_init - retries a failed clock init at later phase
138 * @node: device not for the clock 190 * @node: device not for the clock
139 * @hw: partially initialized clk_hw struct for the clock 191 * @user: user data pointer
140 * @func: init function to be called for the clock 192 * @func: init function to be called for the clock
141 * 193 *
142 * Adds a failed clock init to the retry list. The retry list is parsed 194 * Adds a failed clock init to the retry list. The retry list is parsed
143 * once all the other clocks have been initialized. 195 * once all the other clocks have been initialized.
144 */ 196 */
145int __init ti_clk_retry_init(struct device_node *node, struct clk_hw *hw, 197int __init ti_clk_retry_init(struct device_node *node, void *user,
146 ti_of_clk_init_cb_t func) 198 ti_of_clk_init_cb_t func)
147{ 199{
148 struct clk_init_item *retry; 200 struct clk_init_item *retry;
149 201
@@ -154,7 +206,7 @@ int __init ti_clk_retry_init(struct device_node *node, struct clk_hw *hw,
154 206
155 retry->node = node; 207 retry->node = node;
156 retry->func = func; 208 retry->func = func;
157 retry->hw = hw; 209 retry->user = user;
158 list_add(&retry->link, &retry_list); 210 list_add(&retry->link, &retry_list);
159 211
160 return 0; 212 return 0;
@@ -276,7 +328,7 @@ void ti_dt_clk_init_retry_clks(void)
276 while (!list_empty(&retry_list) && retries) { 328 while (!list_empty(&retry_list) && retries) {
277 list_for_each_entry_safe(retry, tmp, &retry_list, link) { 329 list_for_each_entry_safe(retry, tmp, &retry_list, link) {
278 pr_debug("retry-init: %s\n", retry->node->name); 330 pr_debug("retry-init: %s\n", retry->node->name);
279 retry->func(retry->hw, retry->node); 331 retry->func(retry->user, retry->node);
280 list_del(&retry->link); 332 list_del(&retry->link);
281 kfree(retry); 333 kfree(retry);
282 } 334 }
diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
index 53e71d0503ec..afa0d6bfc5c1 100644
--- a/drivers/clk/ti/clkctrl.c
+++ b/drivers/clk/ti/clkctrl.c
@@ -21,6 +21,7 @@
21#include <linux/of_address.h> 21#include <linux/of_address.h>
22#include <linux/clk/ti.h> 22#include <linux/clk/ti.h>
23#include <linux/delay.h> 23#include <linux/delay.h>
24#include <linux/timekeeping.h>
24#include "clock.h" 25#include "clock.h"
25 26
26#define NO_IDLEST 0x1 27#define NO_IDLEST 0x1
@@ -46,6 +47,7 @@ static bool _early_timeout = true;
46struct omap_clkctrl_provider { 47struct omap_clkctrl_provider {
47 void __iomem *base; 48 void __iomem *base;
48 struct list_head clocks; 49 struct list_head clocks;
50 char *clkdm_name;
49}; 51};
50 52
51struct omap_clkctrl_clk { 53struct omap_clkctrl_clk {
@@ -89,7 +91,18 @@ static bool _omap4_is_ready(u32 val)
89 91
90static bool _omap4_is_timeout(union omap4_timeout *time, u32 timeout) 92static bool _omap4_is_timeout(union omap4_timeout *time, u32 timeout)
91{ 93{
92 if (unlikely(_early_timeout)) { 94 /*
95 * There are two special cases where ktime_to_ns() can't be
96 * used to track the timeouts. First one is during early boot
97 * when the timers haven't been initialized yet. The second
98 * one is during suspend-resume cycle while timekeeping is
99 * being suspended / resumed. Clocksource for the system
100 * can be from a timer that requires pm_runtime access, which
101 * will eventually bring us here with timekeeping_suspended,
102 * during both suspend entry and resume paths. This happens
103 * at least on am43xx platform.
104 */
105 if (unlikely(_early_timeout || timekeeping_suspended)) {
93 if (time->cycles++ < timeout) { 106 if (time->cycles++ < timeout) {
94 udelay(1); 107 udelay(1);
95 return false; 108 return false;
@@ -208,6 +221,7 @@ static const struct clk_ops omap4_clkctrl_clk_ops = {
208 .enable = _omap4_clkctrl_clk_enable, 221 .enable = _omap4_clkctrl_clk_enable,
209 .disable = _omap4_clkctrl_clk_disable, 222 .disable = _omap4_clkctrl_clk_disable,
210 .is_enabled = _omap4_clkctrl_clk_is_enabled, 223 .is_enabled = _omap4_clkctrl_clk_is_enabled,
224 .init = omap2_init_clk_clkdm,
211}; 225};
212 226
213static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec, 227static struct clk_hw *_ti_omap4_clkctrl_xlate(struct of_phandle_args *clkspec,
@@ -321,6 +335,9 @@ _ti_clkctrl_setup_mux(struct omap_clkctrl_provider *provider,
321 } 335 }
322 336
323 mux->mask = num_parents; 337 mux->mask = num_parents;
338 if (!(mux->flags & CLK_MUX_INDEX_ONE))
339 mux->mask--;
340
324 mux->mask = (1 << fls(mux->mask)) - 1; 341 mux->mask = (1 << fls(mux->mask)) - 1;
325 342
326 mux->shift = data->bit; 343 mux->shift = data->bit;
@@ -340,6 +357,7 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider,
340{ 357{
341 struct clk_omap_divider *div; 358 struct clk_omap_divider *div;
342 const struct omap_clkctrl_div_data *div_data = data->data; 359 const struct omap_clkctrl_div_data *div_data = data->data;
360 u8 div_flags = 0;
343 361
344 div = kzalloc(sizeof(*div), GFP_KERNEL); 362 div = kzalloc(sizeof(*div), GFP_KERNEL);
345 if (!div) 363 if (!div)
@@ -347,12 +365,16 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider,
347 365
348 div->reg.ptr = reg; 366 div->reg.ptr = reg;
349 div->shift = data->bit; 367 div->shift = data->bit;
368 div->flags = div_data->flags;
369
370 if (div->flags & CLK_DIVIDER_POWER_OF_TWO)
371 div_flags |= CLKF_INDEX_POWER_OF_TWO;
350 372
351 if (ti_clk_parse_divider_data((int *)div_data->dividers, 373 if (ti_clk_parse_divider_data((int *)div_data->dividers, 0,
352 div_data->max_div, 0, 0, 374 div_data->max_div, div_flags,
353 &div->width, &div->table)) { 375 &div->width, &div->table)) {
354 pr_err("%s: Data parsing for %s:%04x:%d failed\n", __func__, 376 pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__,
355 node->name, offset, data->bit); 377 node, offset, data->bit);
356 kfree(div); 378 kfree(div);
357 return; 379 return;
358 } 380 }
@@ -400,6 +422,12 @@ _ti_clkctrl_setup_subclks(struct omap_clkctrl_provider *provider,
400 } 422 }
401} 423}
402 424
425static void __init _clkctrl_add_provider(void *data,
426 struct device_node *np)
427{
428 of_clk_add_hw_provider(np, _ti_omap4_clkctrl_xlate, data);
429}
430
403static void __init _ti_omap4_clkctrl_setup(struct device_node *node) 431static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
404{ 432{
405 struct omap_clkctrl_provider *provider; 433 struct omap_clkctrl_provider *provider;
@@ -411,6 +439,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
411 struct omap_clkctrl_clk *clkctrl_clk; 439 struct omap_clkctrl_clk *clkctrl_clk;
412 const __be32 *addrp; 440 const __be32 *addrp;
413 u32 addr; 441 u32 addr;
442 int ret;
414 443
415 addrp = of_get_address(node, 0, NULL, NULL); 444 addrp = of_get_address(node, 0, NULL, NULL);
416 addr = (u32)of_translate_address(node, addrp); 445 addr = (u32)of_translate_address(node, addrp);
@@ -419,6 +448,31 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
419 if (of_machine_is_compatible("ti,omap4")) 448 if (of_machine_is_compatible("ti,omap4"))
420 data = omap4_clkctrl_data; 449 data = omap4_clkctrl_data;
421#endif 450#endif
451#ifdef CONFIG_SOC_OMAP5
452 if (of_machine_is_compatible("ti,omap5"))
453 data = omap5_clkctrl_data;
454#endif
455#ifdef CONFIG_SOC_DRA7XX
456 if (of_machine_is_compatible("ti,dra7"))
457 data = dra7_clkctrl_data;
458#endif
459#ifdef CONFIG_SOC_AM33XX
460 if (of_machine_is_compatible("ti,am33xx"))
461 data = am3_clkctrl_data;
462#endif
463#ifdef CONFIG_SOC_AM43XX
464 if (of_machine_is_compatible("ti,am4372"))
465 data = am4_clkctrl_data;
466 if (of_machine_is_compatible("ti,am438x"))
467 data = am438x_clkctrl_data;
468#endif
469#ifdef CONFIG_SOC_TI81XX
470 if (of_machine_is_compatible("ti,dm814"))
471 data = dm814_clkctrl_data;
472
473 if (of_machine_is_compatible("ti,dm816"))
474 data = dm816_clkctrl_data;
475#endif
422 476
423 while (data->addr) { 477 while (data->addr) {
424 if (addr == data->addr) 478 if (addr == data->addr)
@@ -428,7 +482,7 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
428 } 482 }
429 483
430 if (!data->addr) { 484 if (!data->addr) {
431 pr_err("%s not found from clkctrl data.\n", node->name); 485 pr_err("%pOF not found from clkctrl data.\n", node);
432 return; 486 return;
433 } 487 }
434 488
@@ -438,6 +492,21 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
438 492
439 provider->base = of_iomap(node, 0); 493 provider->base = of_iomap(node, 0);
440 494
495 provider->clkdm_name = kmalloc(strlen(node->parent->name) + 3,
496 GFP_KERNEL);
497 if (!provider->clkdm_name) {
498 kfree(provider);
499 return;
500 }
501
502 /*
503 * Create default clkdm name, replace _cm from end of parent node
504 * name with _clkdm
505 */
506 strcpy(provider->clkdm_name, node->parent->name);
507 provider->clkdm_name[strlen(provider->clkdm_name) - 2] = 0;
508 strcat(provider->clkdm_name, "clkdm");
509
441 INIT_LIST_HEAD(&provider->clocks); 510 INIT_LIST_HEAD(&provider->clocks);
442 511
443 /* Generate clocks */ 512 /* Generate clocks */
@@ -460,6 +529,11 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
460 if (reg_data->flags & CLKF_NO_IDLEST) 529 if (reg_data->flags & CLKF_NO_IDLEST)
461 hw->flags |= NO_IDLEST; 530 hw->flags |= NO_IDLEST;
462 531
532 if (reg_data->clkdm_name)
533 hw->clkdm_name = reg_data->clkdm_name;
534 else
535 hw->clkdm_name = provider->clkdm_name;
536
463 init.parent_names = &reg_data->parent; 537 init.parent_names = &reg_data->parent;
464 init.num_parents = 1; 538 init.num_parents = 1;
465 init.flags = 0; 539 init.flags = 0;
@@ -485,7 +559,10 @@ static void __init _ti_omap4_clkctrl_setup(struct device_node *node)
485 reg_data++; 559 reg_data++;
486 } 560 }
487 561
488 of_clk_add_hw_provider(node, _ti_omap4_clkctrl_xlate, provider); 562 ret = of_clk_add_hw_provider(node, _ti_omap4_clkctrl_xlate, provider);
563 if (ret == -EPROBE_DEFER)
564 ti_clk_retry_init(node, provider, _clkctrl_add_provider);
565
489 return; 566 return;
490 567
491cleanup: 568cleanup:
diff --git a/drivers/clk/ti/clock.h b/drivers/clk/ti/clock.h
index 561dbe99ced7..883e39e5d3ec 100644
--- a/drivers/clk/ti/clock.h
+++ b/drivers/clk/ti/clock.h
@@ -207,6 +207,7 @@ struct ti_dt_clk {
207struct omap_clkctrl_div_data { 207struct omap_clkctrl_div_data {
208 const int *dividers; 208 const int *dividers;
209 int max_div; 209 int max_div;
210 u32 flags;
210}; 211};
211 212
212struct omap_clkctrl_bit_data { 213struct omap_clkctrl_bit_data {
@@ -221,6 +222,7 @@ struct omap_clkctrl_reg_data {
221 const struct omap_clkctrl_bit_data *bit_data; 222 const struct omap_clkctrl_bit_data *bit_data;
222 u16 flags; 223 u16 flags;
223 const char *parent; 224 const char *parent;
225 const char *clkdm_name;
224}; 226};
225 227
226struct omap_clkctrl_data { 228struct omap_clkctrl_data {
@@ -229,12 +231,19 @@ struct omap_clkctrl_data {
229}; 231};
230 232
231extern const struct omap_clkctrl_data omap4_clkctrl_data[]; 233extern const struct omap_clkctrl_data omap4_clkctrl_data[];
234extern const struct omap_clkctrl_data omap5_clkctrl_data[];
235extern const struct omap_clkctrl_data dra7_clkctrl_data[];
236extern const struct omap_clkctrl_data am3_clkctrl_data[];
237extern const struct omap_clkctrl_data am4_clkctrl_data[];
238extern const struct omap_clkctrl_data am438x_clkctrl_data[];
239extern const struct omap_clkctrl_data dm814_clkctrl_data[];
240extern const struct omap_clkctrl_data dm816_clkctrl_data[];
232 241
233#define CLKF_SW_SUP BIT(0) 242#define CLKF_SW_SUP BIT(0)
234#define CLKF_HW_SUP BIT(1) 243#define CLKF_HW_SUP BIT(1)
235#define CLKF_NO_IDLEST BIT(2) 244#define CLKF_NO_IDLEST BIT(2)
236 245
237typedef void (*ti_of_clk_init_cb_t)(struct clk_hw *, struct device_node *); 246typedef void (*ti_of_clk_init_cb_t)(void *, struct device_node *);
238 247
239struct clk *ti_clk_register_gate(struct ti_clk *setup); 248struct clk *ti_clk_register_gate(struct ti_clk *setup);
240struct clk *ti_clk_register_interface(struct ti_clk *setup); 249struct clk *ti_clk_register_interface(struct ti_clk *setup);
@@ -262,7 +271,7 @@ int ti_clk_register_legacy_clks(struct ti_clk_alias *clks);
262int ti_clk_get_reg_addr(struct device_node *node, int index, 271int ti_clk_get_reg_addr(struct device_node *node, int index,
263 struct clk_omap_reg *reg); 272 struct clk_omap_reg *reg);
264void ti_dt_clocks_register(struct ti_dt_clk *oclks); 273void ti_dt_clocks_register(struct ti_dt_clk *oclks);
265int ti_clk_retry_init(struct device_node *node, struct clk_hw *hw, 274int ti_clk_retry_init(struct device_node *node, void *user,
266 ti_of_clk_init_cb_t func); 275 ti_of_clk_init_cb_t func);
267int ti_clk_add_component(struct device_node *node, struct clk_hw *hw, int type); 276int ti_clk_add_component(struct device_node *node, struct clk_hw *hw, int type);
268 277
diff --git a/drivers/clk/ti/composite.c b/drivers/clk/ti/composite.c
index beea89463ca2..3eaba2d16ce4 100644
--- a/drivers/clk/ti/composite.c
+++ b/drivers/clk/ti/composite.c
@@ -161,9 +161,10 @@ struct clk *ti_clk_register_composite(struct ti_clk *setup)
161} 161}
162#endif 162#endif
163 163
164static void __init _register_composite(struct clk_hw *hw, 164static void __init _register_composite(void *user,
165 struct device_node *node) 165 struct device_node *node)
166{ 166{
167 struct clk_hw *hw = user;
167 struct clk *clk; 168 struct clk *clk;
168 struct clk_hw_omap_comp *cclk = to_clk_hw_comp(hw); 169 struct clk_hw_omap_comp *cclk = to_clk_hw_comp(hw);
169 struct component_clk *comp; 170 struct component_clk *comp;
diff --git a/drivers/clk/ti/dpll.c b/drivers/clk/ti/dpll.c
index d4e4444bc5ca..d246598c5016 100644
--- a/drivers/clk/ti/dpll.c
+++ b/drivers/clk/ti/dpll.c
@@ -152,9 +152,10 @@ static const struct clk_ops dpll_x2_ck_ops = {
152 * clk-bypass is missing), the clock is added to retry list and 152 * clk-bypass is missing), the clock is added to retry list and
153 * the initialization is retried on later stage. 153 * the initialization is retried on later stage.
154 */ 154 */
155static void __init _register_dpll(struct clk_hw *hw, 155static void __init _register_dpll(void *user,
156 struct device_node *node) 156 struct device_node *node)
157{ 157{
158 struct clk_hw *hw = user;
158 struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw); 159 struct clk_hw_omap *clk_hw = to_clk_hw_omap(hw);
159 struct dpll_data *dd = clk_hw->dpll_data; 160 struct dpll_data *dd = clk_hw->dpll_data;
160 struct clk *clk; 161 struct clk *clk;
diff --git a/include/dt-bindings/clock/am3.h b/include/dt-bindings/clock/am3.h
new file mode 100644
index 000000000000..b396f00e481d
--- /dev/null
+++ b/include/dt-bindings/clock/am3.h
@@ -0,0 +1,108 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_AM3_H
14#define __DT_BINDINGS_CLK_AM3_H
15
16#define AM3_CLKCTRL_OFFSET 0x0
17#define AM3_CLKCTRL_INDEX(offset) ((offset) - AM3_CLKCTRL_OFFSET)
18
19/* l4_per clocks */
20#define AM3_L4_PER_CLKCTRL_OFFSET 0x14
21#define AM3_L4_PER_CLKCTRL_INDEX(offset) ((offset) - AM3_L4_PER_CLKCTRL_OFFSET)
22#define AM3_CPGMAC0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x14)
23#define AM3_LCDC_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x18)
24#define AM3_USB_OTG_HS_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x1c)
25#define AM3_TPTC0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x24)
26#define AM3_EMIF_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x28)
27#define AM3_OCMCRAM_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x2c)
28#define AM3_GPMC_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x30)
29#define AM3_MCASP0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x34)
30#define AM3_UART6_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x38)
31#define AM3_MMC1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x3c)
32#define AM3_ELM_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x40)
33#define AM3_I2C3_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x44)
34#define AM3_I2C2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x48)
35#define AM3_SPI0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x4c)
36#define AM3_SPI1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x50)
37#define AM3_L4_LS_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x60)
38#define AM3_MCASP1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x68)
39#define AM3_UART2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x6c)
40#define AM3_UART3_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x70)
41#define AM3_UART4_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x74)
42#define AM3_UART5_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x78)
43#define AM3_TIMER7_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x7c)
44#define AM3_TIMER2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x80)
45#define AM3_TIMER3_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x84)
46#define AM3_TIMER4_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x88)
47#define AM3_RNG_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x90)
48#define AM3_AES_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x94)
49#define AM3_SHAM_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xa0)
50#define AM3_GPIO2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xac)
51#define AM3_GPIO3_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xb0)
52#define AM3_GPIO4_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xb4)
53#define AM3_TPCC_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xbc)
54#define AM3_D_CAN0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xc0)
55#define AM3_D_CAN1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xc4)
56#define AM3_EPWMSS1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xcc)
57#define AM3_EPWMSS0_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xd4)
58#define AM3_EPWMSS2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xd8)
59#define AM3_L3_INSTR_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xdc)
60#define AM3_L3_MAIN_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xe0)
61#define AM3_PRUSS_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xe8)
62#define AM3_TIMER5_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xec)
63#define AM3_TIMER6_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xf0)
64#define AM3_MMC2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xf4)
65#define AM3_MMC3_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xf8)
66#define AM3_TPTC1_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0xfc)
67#define AM3_TPTC2_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x100)
68#define AM3_SPINLOCK_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x10c)
69#define AM3_MAILBOX_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x110)
70#define AM3_L4_HS_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x120)
71#define AM3_OCPWP_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x130)
72#define AM3_CLKDIV32K_CLKCTRL AM3_L4_PER_CLKCTRL_INDEX(0x14c)
73
74/* l4_wkup clocks */
75#define AM3_L4_WKUP_CLKCTRL_OFFSET 0x4
76#define AM3_L4_WKUP_CLKCTRL_INDEX(offset) ((offset) - AM3_L4_WKUP_CLKCTRL_OFFSET)
77#define AM3_CONTROL_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0x4)
78#define AM3_GPIO1_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0x8)
79#define AM3_L4_WKUP_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xc)
80#define AM3_DEBUGSS_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0x14)
81#define AM3_WKUP_M3_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xb0)
82#define AM3_UART1_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xb4)
83#define AM3_I2C1_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xb8)
84#define AM3_ADC_TSC_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xbc)
85#define AM3_SMARTREFLEX0_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xc0)
86#define AM3_TIMER1_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xc4)
87#define AM3_SMARTREFLEX1_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xc8)
88#define AM3_WD_TIMER2_CLKCTRL AM3_L4_WKUP_CLKCTRL_INDEX(0xd4)
89
90/* mpu clocks */
91#define AM3_MPU_CLKCTRL_OFFSET 0x4
92#define AM3_MPU_CLKCTRL_INDEX(offset) ((offset) - AM3_MPU_CLKCTRL_OFFSET)
93#define AM3_MPU_CLKCTRL AM3_MPU_CLKCTRL_INDEX(0x4)
94
95/* l4_rtc clocks */
96#define AM3_RTC_CLKCTRL AM3_CLKCTRL_INDEX(0x0)
97
98/* gfx_l3 clocks */
99#define AM3_GFX_L3_CLKCTRL_OFFSET 0x4
100#define AM3_GFX_L3_CLKCTRL_INDEX(offset) ((offset) - AM3_GFX_L3_CLKCTRL_OFFSET)
101#define AM3_GFX_CLKCTRL AM3_GFX_L3_CLKCTRL_INDEX(0x4)
102
103/* l4_cefuse clocks */
104#define AM3_L4_CEFUSE_CLKCTRL_OFFSET 0x20
105#define AM3_L4_CEFUSE_CLKCTRL_INDEX(offset) ((offset) - AM3_L4_CEFUSE_CLKCTRL_OFFSET)
106#define AM3_CEFUSE_CLKCTRL AM3_L4_CEFUSE_CLKCTRL_INDEX(0x20)
107
108#endif
diff --git a/include/dt-bindings/clock/am4.h b/include/dt-bindings/clock/am4.h
new file mode 100644
index 000000000000..d21df00b3270
--- /dev/null
+++ b/include/dt-bindings/clock/am4.h
@@ -0,0 +1,113 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_AM4_H
14#define __DT_BINDINGS_CLK_AM4_H
15
16#define AM4_CLKCTRL_OFFSET 0x20
17#define AM4_CLKCTRL_INDEX(offset) ((offset) - AM4_CLKCTRL_OFFSET)
18
19/* l4_wkup clocks */
20#define AM4_ADC_TSC_CLKCTRL AM4_CLKCTRL_INDEX(0x120)
21#define AM4_L4_WKUP_CLKCTRL AM4_CLKCTRL_INDEX(0x220)
22#define AM4_WKUP_M3_CLKCTRL AM4_CLKCTRL_INDEX(0x228)
23#define AM4_COUNTER_32K_CLKCTRL AM4_CLKCTRL_INDEX(0x230)
24#define AM4_TIMER1_CLKCTRL AM4_CLKCTRL_INDEX(0x328)
25#define AM4_WD_TIMER2_CLKCTRL AM4_CLKCTRL_INDEX(0x338)
26#define AM4_I2C1_CLKCTRL AM4_CLKCTRL_INDEX(0x340)
27#define AM4_UART1_CLKCTRL AM4_CLKCTRL_INDEX(0x348)
28#define AM4_SMARTREFLEX0_CLKCTRL AM4_CLKCTRL_INDEX(0x350)
29#define AM4_SMARTREFLEX1_CLKCTRL AM4_CLKCTRL_INDEX(0x358)
30#define AM4_CONTROL_CLKCTRL AM4_CLKCTRL_INDEX(0x360)
31#define AM4_GPIO1_CLKCTRL AM4_CLKCTRL_INDEX(0x368)
32
33/* mpu clocks */
34#define AM4_MPU_CLKCTRL AM4_CLKCTRL_INDEX(0x20)
35
36/* gfx_l3 clocks */
37#define AM4_GFX_CLKCTRL AM4_CLKCTRL_INDEX(0x20)
38
39/* l4_rtc clocks */
40#define AM4_RTC_CLKCTRL AM4_CLKCTRL_INDEX(0x20)
41
42/* l4_per clocks */
43#define AM4_L3_MAIN_CLKCTRL AM4_CLKCTRL_INDEX(0x20)
44#define AM4_AES_CLKCTRL AM4_CLKCTRL_INDEX(0x28)
45#define AM4_DES_CLKCTRL AM4_CLKCTRL_INDEX(0x30)
46#define AM4_L3_INSTR_CLKCTRL AM4_CLKCTRL_INDEX(0x40)
47#define AM4_OCMCRAM_CLKCTRL AM4_CLKCTRL_INDEX(0x50)
48#define AM4_SHAM_CLKCTRL AM4_CLKCTRL_INDEX(0x58)
49#define AM4_VPFE0_CLKCTRL AM4_CLKCTRL_INDEX(0x68)
50#define AM4_VPFE1_CLKCTRL AM4_CLKCTRL_INDEX(0x70)
51#define AM4_TPCC_CLKCTRL AM4_CLKCTRL_INDEX(0x78)
52#define AM4_TPTC0_CLKCTRL AM4_CLKCTRL_INDEX(0x80)
53#define AM4_TPTC1_CLKCTRL AM4_CLKCTRL_INDEX(0x88)
54#define AM4_TPTC2_CLKCTRL AM4_CLKCTRL_INDEX(0x90)
55#define AM4_L4_HS_CLKCTRL AM4_CLKCTRL_INDEX(0xa0)
56#define AM4_GPMC_CLKCTRL AM4_CLKCTRL_INDEX(0x220)
57#define AM4_MCASP0_CLKCTRL AM4_CLKCTRL_INDEX(0x238)
58#define AM4_MCASP1_CLKCTRL AM4_CLKCTRL_INDEX(0x240)
59#define AM4_MMC3_CLKCTRL AM4_CLKCTRL_INDEX(0x248)
60#define AM4_QSPI_CLKCTRL AM4_CLKCTRL_INDEX(0x258)
61#define AM4_USB_OTG_SS0_CLKCTRL AM4_CLKCTRL_INDEX(0x260)
62#define AM4_USB_OTG_SS1_CLKCTRL AM4_CLKCTRL_INDEX(0x268)
63#define AM4_PRUSS_CLKCTRL AM4_CLKCTRL_INDEX(0x320)
64#define AM4_L4_LS_CLKCTRL AM4_CLKCTRL_INDEX(0x420)
65#define AM4_D_CAN0_CLKCTRL AM4_CLKCTRL_INDEX(0x428)
66#define AM4_D_CAN1_CLKCTRL AM4_CLKCTRL_INDEX(0x430)
67#define AM4_EPWMSS0_CLKCTRL AM4_CLKCTRL_INDEX(0x438)
68#define AM4_EPWMSS1_CLKCTRL AM4_CLKCTRL_INDEX(0x440)
69#define AM4_EPWMSS2_CLKCTRL AM4_CLKCTRL_INDEX(0x448)
70#define AM4_EPWMSS3_CLKCTRL AM4_CLKCTRL_INDEX(0x450)
71#define AM4_EPWMSS4_CLKCTRL AM4_CLKCTRL_INDEX(0x458)
72#define AM4_EPWMSS5_CLKCTRL AM4_CLKCTRL_INDEX(0x460)
73#define AM4_ELM_CLKCTRL AM4_CLKCTRL_INDEX(0x468)
74#define AM4_GPIO2_CLKCTRL AM4_CLKCTRL_INDEX(0x478)
75#define AM4_GPIO3_CLKCTRL AM4_CLKCTRL_INDEX(0x480)
76#define AM4_GPIO4_CLKCTRL AM4_CLKCTRL_INDEX(0x488)
77#define AM4_GPIO5_CLKCTRL AM4_CLKCTRL_INDEX(0x490)
78#define AM4_GPIO6_CLKCTRL AM4_CLKCTRL_INDEX(0x498)
79#define AM4_HDQ1W_CLKCTRL AM4_CLKCTRL_INDEX(0x4a0)
80#define AM4_I2C2_CLKCTRL AM4_CLKCTRL_INDEX(0x4a8)
81#define AM4_I2C3_CLKCTRL AM4_CLKCTRL_INDEX(0x4b0)
82#define AM4_MAILBOX_CLKCTRL AM4_CLKCTRL_INDEX(0x4b8)
83#define AM4_MMC1_CLKCTRL AM4_CLKCTRL_INDEX(0x4c0)
84#define AM4_MMC2_CLKCTRL AM4_CLKCTRL_INDEX(0x4c8)
85#define AM4_RNG_CLKCTRL AM4_CLKCTRL_INDEX(0x4e0)
86#define AM4_SPI0_CLKCTRL AM4_CLKCTRL_INDEX(0x500)
87#define AM4_SPI1_CLKCTRL AM4_CLKCTRL_INDEX(0x508)
88#define AM4_SPI2_CLKCTRL AM4_CLKCTRL_INDEX(0x510)
89#define AM4_SPI3_CLKCTRL AM4_CLKCTRL_INDEX(0x518)
90#define AM4_SPI4_CLKCTRL AM4_CLKCTRL_INDEX(0x520)
91#define AM4_SPINLOCK_CLKCTRL AM4_CLKCTRL_INDEX(0x528)
92#define AM4_TIMER2_CLKCTRL AM4_CLKCTRL_INDEX(0x530)
93#define AM4_TIMER3_CLKCTRL AM4_CLKCTRL_INDEX(0x538)
94#define AM4_TIMER4_CLKCTRL AM4_CLKCTRL_INDEX(0x540)
95#define AM4_TIMER5_CLKCTRL AM4_CLKCTRL_INDEX(0x548)
96#define AM4_TIMER6_CLKCTRL AM4_CLKCTRL_INDEX(0x550)
97#define AM4_TIMER7_CLKCTRL AM4_CLKCTRL_INDEX(0x558)
98#define AM4_TIMER8_CLKCTRL AM4_CLKCTRL_INDEX(0x560)
99#define AM4_TIMER9_CLKCTRL AM4_CLKCTRL_INDEX(0x568)
100#define AM4_TIMER10_CLKCTRL AM4_CLKCTRL_INDEX(0x570)
101#define AM4_TIMER11_CLKCTRL AM4_CLKCTRL_INDEX(0x578)
102#define AM4_UART2_CLKCTRL AM4_CLKCTRL_INDEX(0x580)
103#define AM4_UART3_CLKCTRL AM4_CLKCTRL_INDEX(0x588)
104#define AM4_UART4_CLKCTRL AM4_CLKCTRL_INDEX(0x590)
105#define AM4_UART5_CLKCTRL AM4_CLKCTRL_INDEX(0x598)
106#define AM4_UART6_CLKCTRL AM4_CLKCTRL_INDEX(0x5a0)
107#define AM4_OCP2SCP0_CLKCTRL AM4_CLKCTRL_INDEX(0x5b8)
108#define AM4_OCP2SCP1_CLKCTRL AM4_CLKCTRL_INDEX(0x5c0)
109#define AM4_EMIF_CLKCTRL AM4_CLKCTRL_INDEX(0x720)
110#define AM4_DSS_CORE_CLKCTRL AM4_CLKCTRL_INDEX(0xa20)
111#define AM4_CPGMAC0_CLKCTRL AM4_CLKCTRL_INDEX(0xb20)
112
113#endif
diff --git a/include/dt-bindings/clock/dm814.h b/include/dt-bindings/clock/dm814.h
new file mode 100644
index 000000000000..0e7099a344e1
--- /dev/null
+++ b/include/dt-bindings/clock/dm814.h
@@ -0,0 +1,45 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_DM814_H
14#define __DT_BINDINGS_CLK_DM814_H
15
16#define DM814_CLKCTRL_OFFSET 0x0
17#define DM814_CLKCTRL_INDEX(offset) ((offset) - DM814_CLKCTRL_OFFSET)
18
19/* default clocks */
20#define DM814_USB_OTG_HS_CLKCTRL DM814_CLKCTRL_INDEX(0x58)
21
22/* alwon clocks */
23#define DM814_UART1_CLKCTRL DM814_CLKCTRL_INDEX(0x150)
24#define DM814_UART2_CLKCTRL DM814_CLKCTRL_INDEX(0x154)
25#define DM814_UART3_CLKCTRL DM814_CLKCTRL_INDEX(0x158)
26#define DM814_GPIO1_CLKCTRL DM814_CLKCTRL_INDEX(0x15c)
27#define DM814_GPIO2_CLKCTRL DM814_CLKCTRL_INDEX(0x160)
28#define DM814_I2C1_CLKCTRL DM814_CLKCTRL_INDEX(0x164)
29#define DM814_I2C2_CLKCTRL DM814_CLKCTRL_INDEX(0x168)
30#define DM814_WD_TIMER_CLKCTRL DM814_CLKCTRL_INDEX(0x18c)
31#define DM814_MCSPI1_CLKCTRL DM814_CLKCTRL_INDEX(0x190)
32#define DM814_GPMC_CLKCTRL DM814_CLKCTRL_INDEX(0x1d0)
33#define DM814_CPGMAC0_CLKCTRL DM814_CLKCTRL_INDEX(0x1d4)
34#define DM814_MPU_CLKCTRL DM814_CLKCTRL_INDEX(0x1dc)
35#define DM814_RTC_CLKCTRL DM814_CLKCTRL_INDEX(0x1f0)
36#define DM814_TPCC_CLKCTRL DM814_CLKCTRL_INDEX(0x1f4)
37#define DM814_TPTC0_CLKCTRL DM814_CLKCTRL_INDEX(0x1f8)
38#define DM814_TPTC1_CLKCTRL DM814_CLKCTRL_INDEX(0x1fc)
39#define DM814_TPTC2_CLKCTRL DM814_CLKCTRL_INDEX(0x200)
40#define DM814_TPTC3_CLKCTRL DM814_CLKCTRL_INDEX(0x204)
41#define DM814_MMC1_CLKCTRL DM814_CLKCTRL_INDEX(0x21c)
42#define DM814_MMC2_CLKCTRL DM814_CLKCTRL_INDEX(0x220)
43#define DM814_MMC3_CLKCTRL DM814_CLKCTRL_INDEX(0x224)
44
45#endif
diff --git a/include/dt-bindings/clock/dm816.h b/include/dt-bindings/clock/dm816.h
new file mode 100644
index 000000000000..69e8a36d783e
--- /dev/null
+++ b/include/dt-bindings/clock/dm816.h
@@ -0,0 +1,53 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_DM816_H
14#define __DT_BINDINGS_CLK_DM816_H
15
16#define DM816_CLKCTRL_OFFSET 0x0
17#define DM816_CLKCTRL_INDEX(offset) ((offset) - DM816_CLKCTRL_OFFSET)
18
19/* default clocks */
20#define DM816_USB_OTG_HS_CLKCTRL DM816_CLKCTRL_INDEX(0x58)
21
22/* alwon clocks */
23#define DM816_UART1_CLKCTRL DM816_CLKCTRL_INDEX(0x150)
24#define DM816_UART2_CLKCTRL DM816_CLKCTRL_INDEX(0x154)
25#define DM816_UART3_CLKCTRL DM816_CLKCTRL_INDEX(0x158)
26#define DM816_GPIO1_CLKCTRL DM816_CLKCTRL_INDEX(0x15c)
27#define DM816_GPIO2_CLKCTRL DM816_CLKCTRL_INDEX(0x160)
28#define DM816_I2C1_CLKCTRL DM816_CLKCTRL_INDEX(0x164)
29#define DM816_I2C2_CLKCTRL DM816_CLKCTRL_INDEX(0x168)
30#define DM816_TIMER1_CLKCTRL DM816_CLKCTRL_INDEX(0x170)
31#define DM816_TIMER2_CLKCTRL DM816_CLKCTRL_INDEX(0x174)
32#define DM816_TIMER3_CLKCTRL DM816_CLKCTRL_INDEX(0x178)
33#define DM816_TIMER4_CLKCTRL DM816_CLKCTRL_INDEX(0x17c)
34#define DM816_TIMER5_CLKCTRL DM816_CLKCTRL_INDEX(0x180)
35#define DM816_TIMER6_CLKCTRL DM816_CLKCTRL_INDEX(0x184)
36#define DM816_TIMER7_CLKCTRL DM816_CLKCTRL_INDEX(0x188)
37#define DM816_WD_TIMER_CLKCTRL DM816_CLKCTRL_INDEX(0x18c)
38#define DM816_MCSPI1_CLKCTRL DM816_CLKCTRL_INDEX(0x190)
39#define DM816_MAILBOX_CLKCTRL DM816_CLKCTRL_INDEX(0x194)
40#define DM816_SPINBOX_CLKCTRL DM816_CLKCTRL_INDEX(0x198)
41#define DM816_MMC1_CLKCTRL DM816_CLKCTRL_INDEX(0x1b0)
42#define DM816_GPMC_CLKCTRL DM816_CLKCTRL_INDEX(0x1d0)
43#define DM816_DAVINCI_MDIO_CLKCTRL DM816_CLKCTRL_INDEX(0x1d4)
44#define DM816_EMAC1_CLKCTRL DM816_CLKCTRL_INDEX(0x1d8)
45#define DM816_MPU_CLKCTRL DM816_CLKCTRL_INDEX(0x1dc)
46#define DM816_RTC_CLKCTRL DM816_CLKCTRL_INDEX(0x1f0)
47#define DM816_TPCC_CLKCTRL DM816_CLKCTRL_INDEX(0x1f4)
48#define DM816_TPTC0_CLKCTRL DM816_CLKCTRL_INDEX(0x1f8)
49#define DM816_TPTC1_CLKCTRL DM816_CLKCTRL_INDEX(0x1fc)
50#define DM816_TPTC2_CLKCTRL DM816_CLKCTRL_INDEX(0x200)
51#define DM816_TPTC3_CLKCTRL DM816_CLKCTRL_INDEX(0x204)
52
53#endif
diff --git a/include/dt-bindings/clock/dra7.h b/include/dt-bindings/clock/dra7.h
new file mode 100644
index 000000000000..5e1061b15aed
--- /dev/null
+++ b/include/dt-bindings/clock/dra7.h
@@ -0,0 +1,172 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_DRA7_H
14#define __DT_BINDINGS_CLK_DRA7_H
15
16#define DRA7_CLKCTRL_OFFSET 0x20
17#define DRA7_CLKCTRL_INDEX(offset) ((offset) - DRA7_CLKCTRL_OFFSET)
18
19/* mpu clocks */
20#define DRA7_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
21
22/* ipu clocks */
23#define DRA7_IPU_CLKCTRL_OFFSET 0x40
24#define DRA7_IPU_CLKCTRL_INDEX(offset) ((offset) - DRA7_IPU_CLKCTRL_OFFSET)
25#define DRA7_MCASP1_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x50)
26#define DRA7_TIMER5_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x58)
27#define DRA7_TIMER6_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x60)
28#define DRA7_TIMER7_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x68)
29#define DRA7_TIMER8_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x70)
30#define DRA7_I2C5_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x78)
31#define DRA7_UART6_CLKCTRL DRA7_IPU_CLKCTRL_INDEX(0x80)
32
33/* rtc clocks */
34#define DRA7_RTC_CLKCTRL_OFFSET 0x40
35#define DRA7_RTC_CLKCTRL_INDEX(offset) ((offset) - DRA7_RTC_CLKCTRL_OFFSET)
36#define DRA7_RTCSS_CLKCTRL DRA7_RTC_CLKCTRL_INDEX(0x44)
37
38/* coreaon clocks */
39#define DRA7_SMARTREFLEX_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
40#define DRA7_SMARTREFLEX_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x38)
41
42/* l3main1 clocks */
43#define DRA7_L3_MAIN_1_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
44#define DRA7_GPMC_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
45#define DRA7_TPCC_CLKCTRL DRA7_CLKCTRL_INDEX(0x70)
46#define DRA7_TPTC0_CLKCTRL DRA7_CLKCTRL_INDEX(0x78)
47#define DRA7_TPTC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x80)
48#define DRA7_VCP1_CLKCTRL DRA7_CLKCTRL_INDEX(0x88)
49#define DRA7_VCP2_CLKCTRL DRA7_CLKCTRL_INDEX(0x90)
50
51/* dma clocks */
52#define DRA7_DMA_SYSTEM_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
53
54/* emif clocks */
55#define DRA7_DMM_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
56
57/* atl clocks */
58#define DRA7_ATL_CLKCTRL_OFFSET 0x0
59#define DRA7_ATL_CLKCTRL_INDEX(offset) ((offset) - DRA7_ATL_CLKCTRL_OFFSET)
60#define DRA7_ATL_CLKCTRL DRA7_ATL_CLKCTRL_INDEX(0x0)
61
62/* l4cfg clocks */
63#define DRA7_L4_CFG_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
64#define DRA7_SPINLOCK_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
65#define DRA7_MAILBOX1_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
66#define DRA7_MAILBOX2_CLKCTRL DRA7_CLKCTRL_INDEX(0x48)
67#define DRA7_MAILBOX3_CLKCTRL DRA7_CLKCTRL_INDEX(0x50)
68#define DRA7_MAILBOX4_CLKCTRL DRA7_CLKCTRL_INDEX(0x58)
69#define DRA7_MAILBOX5_CLKCTRL DRA7_CLKCTRL_INDEX(0x60)
70#define DRA7_MAILBOX6_CLKCTRL DRA7_CLKCTRL_INDEX(0x68)
71#define DRA7_MAILBOX7_CLKCTRL DRA7_CLKCTRL_INDEX(0x70)
72#define DRA7_MAILBOX8_CLKCTRL DRA7_CLKCTRL_INDEX(0x78)
73#define DRA7_MAILBOX9_CLKCTRL DRA7_CLKCTRL_INDEX(0x80)
74#define DRA7_MAILBOX10_CLKCTRL DRA7_CLKCTRL_INDEX(0x88)
75#define DRA7_MAILBOX11_CLKCTRL DRA7_CLKCTRL_INDEX(0x90)
76#define DRA7_MAILBOX12_CLKCTRL DRA7_CLKCTRL_INDEX(0x98)
77#define DRA7_MAILBOX13_CLKCTRL DRA7_CLKCTRL_INDEX(0xa0)
78
79/* l3instr clocks */
80#define DRA7_L3_MAIN_2_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
81#define DRA7_L3_INSTR_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
82
83/* dss clocks */
84#define DRA7_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
85#define DRA7_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
86
87/* l3init clocks */
88#define DRA7_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
89#define DRA7_MMC2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
90#define DRA7_USB_OTG_SS2_CLKCTRL DRA7_CLKCTRL_INDEX(0x40)
91#define DRA7_USB_OTG_SS3_CLKCTRL DRA7_CLKCTRL_INDEX(0x48)
92#define DRA7_USB_OTG_SS4_CLKCTRL DRA7_CLKCTRL_INDEX(0x50)
93#define DRA7_SATA_CLKCTRL DRA7_CLKCTRL_INDEX(0x88)
94#define DRA7_PCIE1_CLKCTRL DRA7_CLKCTRL_INDEX(0xb0)
95#define DRA7_PCIE2_CLKCTRL DRA7_CLKCTRL_INDEX(0xb8)
96#define DRA7_GMAC_CLKCTRL DRA7_CLKCTRL_INDEX(0xd0)
97#define DRA7_OCP2SCP1_CLKCTRL DRA7_CLKCTRL_INDEX(0xe0)
98#define DRA7_OCP2SCP3_CLKCTRL DRA7_CLKCTRL_INDEX(0xe8)
99#define DRA7_USB_OTG_SS1_CLKCTRL DRA7_CLKCTRL_INDEX(0xf0)
100
101/* l4per clocks */
102#define DRA7_L4PER_CLKCTRL_OFFSET 0x0
103#define DRA7_L4PER_CLKCTRL_INDEX(offset) ((offset) - DRA7_L4PER_CLKCTRL_OFFSET)
104#define DRA7_L4_PER2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xc)
105#define DRA7_L4_PER3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x14)
106#define DRA7_TIMER10_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x28)
107#define DRA7_TIMER11_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x30)
108#define DRA7_TIMER2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x38)
109#define DRA7_TIMER3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x40)
110#define DRA7_TIMER4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x48)
111#define DRA7_TIMER9_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x50)
112#define DRA7_ELM_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x58)
113#define DRA7_GPIO2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x60)
114#define DRA7_GPIO3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x68)
115#define DRA7_GPIO4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x70)
116#define DRA7_GPIO5_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x78)
117#define DRA7_GPIO6_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x80)
118#define DRA7_HDQ1W_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x88)
119#define DRA7_EPWMSS1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x90)
120#define DRA7_EPWMSS2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x98)
121#define DRA7_I2C1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xa0)
122#define DRA7_I2C2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xa8)
123#define DRA7_I2C3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xb0)
124#define DRA7_I2C4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xb8)
125#define DRA7_L4_PER1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xc0)
126#define DRA7_EPWMSS0_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xc4)
127#define DRA7_TIMER13_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xc8)
128#define DRA7_TIMER14_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xd0)
129#define DRA7_TIMER15_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xd8)
130#define DRA7_MCSPI1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xf0)
131#define DRA7_MCSPI2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0xf8)
132#define DRA7_MCSPI3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x100)
133#define DRA7_MCSPI4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x108)
134#define DRA7_GPIO7_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x110)
135#define DRA7_GPIO8_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x118)
136#define DRA7_MMC3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x120)
137#define DRA7_MMC4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x128)
138#define DRA7_TIMER16_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x130)
139#define DRA7_QSPI_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x138)
140#define DRA7_UART1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x140)
141#define DRA7_UART2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x148)
142#define DRA7_UART3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x150)
143#define DRA7_UART4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x158)
144#define DRA7_MCASP2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x160)
145#define DRA7_MCASP3_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x168)
146#define DRA7_UART5_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x170)
147#define DRA7_MCASP5_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x178)
148#define DRA7_MCASP8_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x190)
149#define DRA7_MCASP4_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x198)
150#define DRA7_AES1_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1a0)
151#define DRA7_AES2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1a8)
152#define DRA7_DES_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1b0)
153#define DRA7_RNG_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1c0)
154#define DRA7_SHAM_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1c8)
155#define DRA7_UART7_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1d0)
156#define DRA7_UART8_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1e0)
157#define DRA7_UART9_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1e8)
158#define DRA7_DCAN2_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x1f0)
159#define DRA7_MCASP6_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x204)
160#define DRA7_MCASP7_CLKCTRL DRA7_L4PER_CLKCTRL_INDEX(0x208)
161
162/* wkupaon clocks */
163#define DRA7_L4_WKUP_CLKCTRL DRA7_CLKCTRL_INDEX(0x20)
164#define DRA7_WD_TIMER2_CLKCTRL DRA7_CLKCTRL_INDEX(0x30)
165#define DRA7_GPIO1_CLKCTRL DRA7_CLKCTRL_INDEX(0x38)
166#define DRA7_TIMER1_CLKCTRL DRA7_CLKCTRL_INDEX(0x40)
167#define DRA7_TIMER12_CLKCTRL DRA7_CLKCTRL_INDEX(0x48)
168#define DRA7_COUNTER_32K_CLKCTRL DRA7_CLKCTRL_INDEX(0x50)
169#define DRA7_UART10_CLKCTRL DRA7_CLKCTRL_INDEX(0x80)
170#define DRA7_DCAN1_CLKCTRL DRA7_CLKCTRL_INDEX(0x88)
171
172#endif
diff --git a/include/dt-bindings/clock/omap5.h b/include/dt-bindings/clock/omap5.h
new file mode 100644
index 000000000000..f51821a91216
--- /dev/null
+++ b/include/dt-bindings/clock/omap5.h
@@ -0,0 +1,118 @@
1/*
2 * Copyright 2017 Texas Instruments, Inc.
3 *
4 * This software is licensed under the terms of the GNU General Public
5 * License version 2, as published by the Free Software Foundation, and
6 * may be copied, distributed, and modified under those terms.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 */
13#ifndef __DT_BINDINGS_CLK_OMAP5_H
14#define __DT_BINDINGS_CLK_OMAP5_H
15
16#define OMAP5_CLKCTRL_OFFSET 0x20
17#define OMAP5_CLKCTRL_INDEX(offset) ((offset) - OMAP5_CLKCTRL_OFFSET)
18
19/* mpu clocks */
20#define OMAP5_MPU_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
21
22/* dsp clocks */
23#define OMAP5_MMU_DSP_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
24
25/* abe clocks */
26#define OMAP5_L4_ABE_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
27#define OMAP5_MCPDM_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
28#define OMAP5_DMIC_CLKCTRL OMAP5_CLKCTRL_INDEX(0x38)
29#define OMAP5_MCBSP1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x48)
30#define OMAP5_MCBSP2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x50)
31#define OMAP5_MCBSP3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x58)
32#define OMAP5_TIMER5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x68)
33#define OMAP5_TIMER6_CLKCTRL OMAP5_CLKCTRL_INDEX(0x70)
34#define OMAP5_TIMER7_CLKCTRL OMAP5_CLKCTRL_INDEX(0x78)
35#define OMAP5_TIMER8_CLKCTRL OMAP5_CLKCTRL_INDEX(0x80)
36
37/* l3main1 clocks */
38#define OMAP5_L3_MAIN_1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
39
40/* l3main2 clocks */
41#define OMAP5_L3_MAIN_2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
42
43/* ipu clocks */
44#define OMAP5_MMU_IPU_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
45
46/* dma clocks */
47#define OMAP5_DMA_SYSTEM_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
48
49/* emif clocks */
50#define OMAP5_DMM_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
51#define OMAP5_EMIF1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
52#define OMAP5_EMIF2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x38)
53
54/* l4cfg clocks */
55#define OMAP5_L4_CFG_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
56#define OMAP5_SPINLOCK_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)
57#define OMAP5_MAILBOX_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
58
59/* l3instr clocks */
60#define OMAP5_L3_MAIN_3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
61#define OMAP5_L3_INSTR_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)
62
63/* l4per clocks */
64#define OMAP5_TIMER10_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)
65#define OMAP5_TIMER11_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
66#define OMAP5_TIMER2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x38)
67#define OMAP5_TIMER3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x40)
68#define OMAP5_TIMER4_CLKCTRL OMAP5_CLKCTRL_INDEX(0x48)
69#define OMAP5_TIMER9_CLKCTRL OMAP5_CLKCTRL_INDEX(0x50)
70#define OMAP5_GPIO2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x60)
71#define OMAP5_GPIO3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x68)
72#define OMAP5_GPIO4_CLKCTRL OMAP5_CLKCTRL_INDEX(0x70)
73#define OMAP5_GPIO5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x78)
74#define OMAP5_GPIO6_CLKCTRL OMAP5_CLKCTRL_INDEX(0x80)
75#define OMAP5_I2C1_CLKCTRL OMAP5_CLKCTRL_INDEX(0xa0)
76#define OMAP5_I2C2_CLKCTRL OMAP5_CLKCTRL_INDEX(0xa8)
77#define OMAP5_I2C3_CLKCTRL OMAP5_CLKCTRL_INDEX(0xb0)
78#define OMAP5_I2C4_CLKCTRL OMAP5_CLKCTRL_INDEX(0xb8)
79#define OMAP5_L4_PER_CLKCTRL OMAP5_CLKCTRL_INDEX(0xc0)
80#define OMAP5_MCSPI1_CLKCTRL OMAP5_CLKCTRL_INDEX(0xf0)
81#define OMAP5_MCSPI2_CLKCTRL OMAP5_CLKCTRL_INDEX(0xf8)
82#define OMAP5_MCSPI3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x100)
83#define OMAP5_MCSPI4_CLKCTRL OMAP5_CLKCTRL_INDEX(0x108)
84#define OMAP5_GPIO7_CLKCTRL OMAP5_CLKCTRL_INDEX(0x110)
85#define OMAP5_GPIO8_CLKCTRL OMAP5_CLKCTRL_INDEX(0x118)
86#define OMAP5_MMC3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x120)
87#define OMAP5_MMC4_CLKCTRL OMAP5_CLKCTRL_INDEX(0x128)
88#define OMAP5_UART1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x140)
89#define OMAP5_UART2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x148)
90#define OMAP5_UART3_CLKCTRL OMAP5_CLKCTRL_INDEX(0x150)
91#define OMAP5_UART4_CLKCTRL OMAP5_CLKCTRL_INDEX(0x158)
92#define OMAP5_MMC5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x160)
93#define OMAP5_I2C5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x168)
94#define OMAP5_UART5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x170)
95#define OMAP5_UART6_CLKCTRL OMAP5_CLKCTRL_INDEX(0x178)
96
97/* dss clocks */
98#define OMAP5_DSS_CORE_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
99
100/* l3init clocks */
101#define OMAP5_MMC1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)
102#define OMAP5_MMC2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
103#define OMAP5_USB_HOST_HS_CLKCTRL OMAP5_CLKCTRL_INDEX(0x58)
104#define OMAP5_USB_TLL_HS_CLKCTRL OMAP5_CLKCTRL_INDEX(0x68)
105#define OMAP5_SATA_CLKCTRL OMAP5_CLKCTRL_INDEX(0x88)
106#define OMAP5_OCP2SCP1_CLKCTRL OMAP5_CLKCTRL_INDEX(0xe0)
107#define OMAP5_OCP2SCP3_CLKCTRL OMAP5_CLKCTRL_INDEX(0xe8)
108#define OMAP5_USB_OTG_SS_CLKCTRL OMAP5_CLKCTRL_INDEX(0xf0)
109
110/* wkupaon clocks */
111#define OMAP5_L4_WKUP_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
112#define OMAP5_WD_TIMER2_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30)
113#define OMAP5_GPIO1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x38)
114#define OMAP5_TIMER1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x40)
115#define OMAP5_COUNTER_32K_CLKCTRL OMAP5_CLKCTRL_INDEX(0x50)
116#define OMAP5_KBD_CLKCTRL OMAP5_CLKCTRL_INDEX(0x78)
117
118#endif