/*
 * Device Tree Source for OMAP34xx/OMAP36xx clock data
 *
 * Copyright (C) 2013 Texas Instruments, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
&cm_clocks {
       ssi_ssr_gate_fck_3430es2: ssi_ssr_gate_fck_3430es2@a00 {
               #clock-cells = <0>;
               compatible = "ti,composite-no-wait-gate-clock";
               clocks = <&corex2_fck>;
               ti,bit-shift = <0>;
               reg = <0x0a00>;
       };

       ssi_ssr_div_fck_3430es2: ssi_ssr_div_fck_3430es2@a40 {
               #clock-cells = <0>;
               compatible = "ti,composite-divider-clock";
               clocks = <&corex2_fck>;
               ti,bit-shift = <8>;
               reg = <0x0a40>;
               ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>;
       };

       ssi_ssr_fck: ssi_ssr_fck_3430es2 {
               #clock-cells = <0>;
               compatible = "ti,composite-clock";
               clocks = <&ssi_ssr_gate_fck_3430es2>, <&ssi_ssr_div_fck_3430es2>;
       };

       ssi_sst_fck: ssi_sst_fck_3430es2 {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&ssi_ssr_fck>;
               clock-mult = <1>;
               clock-div = <2>;
       };

       hsotgusb_ick_3430es2: hsotgusb_ick_3430es2@a10 {
               #clock-cells = <0>;
               compatible = "ti,omap3-hsotgusb-interface-clock";
               clocks = <&core_l3_ick>;
               reg = <0x0a10>;
               ti,bit-shift = <4>;
       };

       ssi_l4_ick: ssi_l4_ick {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&l4_ick>;
               clock-mult = <1>;
               clock-div = <1>;
       };

       ssi_ick: ssi_ick_3430es2@a10 {
               #clock-cells = <0>;
               compatible = "ti,omap3-ssi-interface-clock";
               clocks = <&ssi_l4_ick>;
               reg = <0x0a10>;
               ti,bit-shift = <0>;
       };

       usim_gate_fck: usim_gate_fck@c00 {
               #clock-cells = <0>;
               compatible = "ti,composite-gate-clock";
               clocks = <&omap_96m_fck>;
               ti,bit-shift = <9>;
               reg = <0x0c00>;
       };

       sys_d2_ck: sys_d2_ck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&sys_ck>;
               clock-mult = <1>;
               clock-div = <2>;
       };

       omap_96m_d2_fck: omap_96m_d2_fck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&omap_96m_fck>;
               clock-mult = <1>;
               clock-div = <2>;
       };

       omap_96m_d4_fck: omap_96m_d4_fck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&omap_96m_fck>;
               clock-mult = <1>;
               clock-div = <4>;
       };

       omap_96m_d8_fck: omap_96m_d8_fck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&omap_96m_fck>;
               clock-mult = <1>;
               clock-div = <8>;
       };

       omap_96m_d10_fck: omap_96m_d10_fck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&omap_96m_fck>;
               clock-mult = <1>;
               clock-div = <10>;
       };

       dpll5_m2_d4_ck: dpll5_m2_d4_ck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&dpll5_m2_ck>;
               clock-mult = <1>;
               clock-div = <4>;
       };

       dpll5_m2_d8_ck: dpll5_m2_d8_ck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&dpll5_m2_ck>;
               clock-mult = <1>;
               clock-div = <8>;
       };

       dpll5_m2_d16_ck: dpll5_m2_d16_ck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&dpll5_m2_ck>;
               clock-mult = <1>;
               clock-div = <16>;
       };

       dpll5_m2_d20_ck: dpll5_m2_d20_ck {
               #clock-cells = <0>;
               compatible = "fixed-factor-clock";
               clocks = <&dpll5_m2_ck>;
               clock-mult = <1>;
               clock-div = <20>;
       };

       usim_mux_fck: usim_mux_fck@c40 {
               #clock-cells = <0>;
               compatible = "ti,composite-mux-clock";
               clocks = <&sys_ck>, <&sys_d2_ck>, <&omap_96m_d2_fck>, <&omap_96m_d4_fck>, <&omap_96m_d8_fck>, <&omap_96m_d10_fck>, <&dpll5_m2_d4_ck>, <&dpll5_m2_d8_ck>, <&dpll5_m2_d16_ck>, <&dpll5_m2_d20_ck>;
               ti,bit-shift = <3>;
               reg = <0x0c40>;
               ti,index-starts-at-one;
       };

       usim_fck: usim_fck {
               #clock-cells = <0>;
               compatible = "ti,composite-clock";
               clocks = <&usim_gate_fck>, <&usim_mux_fck>;
       };

       usim_ick: usim_ick@c10 {
               #clock-cells = <0>;
               compatible = "ti,omap3-interface-clock";
               clocks = <&wkup_l4_ick>;
               reg = <0x0c10>;
               ti,bit-shift = <9>;
       };
};

&cm_clockdomains {
       core_l3_clkdm: core_l3_clkdm {
               compatible = "ti,clockdomain";
               clocks = <&sdrc_ick>, <&hsotgusb_ick_3430es2>;
       };

       wkup_clkdm: wkup_clkdm {
               compatible = "ti,clockdomain";
               clocks = <&gpio1_dbck>, <&wdt2_fck>, <&wdt2_ick>, <&wdt1_ick>,
                        <&gpio1_ick>, <&omap_32ksync_ick>, <&gpt12_ick>,
                        <&gpt1_ick>, <&usim_ick>;
       };

       core_l4_clkdm: core_l4_clkdm {
               compatible = "ti,clockdomain";
               clocks = <&cpefuse_fck>, <&ts_fck>, <&usbtll_fck>,
                        <&usbtll_ick>, <&mmchs3_ick>, <&mmchs3_fck>,
                        <&mmchs2_fck>, <&mmchs1_fck>, <&i2c3_fck>, <&i2c2_fck>,
                        <&i2c1_fck>, <&mcspi4_fck>, <&mcspi3_fck>,
                        <&mcspi2_fck>, <&mcspi1_fck>, <&uart2_fck>,
                        <&uart1_fck>, <&hdq_fck>, <&mmchs2_ick>, <&mmchs1_ick>,
                        <&hdq_ick>, <&mcspi4_ick>, <&mcspi3_ick>,
                        <&mcspi2_ick>, <&mcspi1_ick>, <&i2c3_ick>, <&i2c2_ick>,
                        <&i2c1_ick>, <&uart2_ick>, <&uart1_ick>, <&gpt11_ick>,
                        <&gpt10_ick>, <&mcbsp5_ick>, <&mcbsp1_ick>,
                        <&omapctrl_ick>, <&aes2_ick>, <&sha12_ick>,
                        <&ssi_ick>;
       };
};
