/*
 * Device Tree Source for OMAP2420 clock data
 *
 * Copyright (C) 2014 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.
 */

&prcm_clocks {
	sys_clkout2_src_gate: sys_clkout2_src_gate@70 {
		#clock-cells = <0>;
		compatible = "ti,composite-no-wait-gate-clock";
		clocks = <&core_ck>;
		ti,bit-shift = <15>;
		reg = <0x0070>;
	};

	sys_clkout2_src_mux: sys_clkout2_src_mux@70 {
		#clock-cells = <0>;
		compatible = "ti,composite-mux-clock";
		clocks = <&core_ck>, <&sys_ck>, <&func_96m_ck>, <&func_54m_ck>;
		ti,bit-shift = <8>;
		reg = <0x0070>;
	};

	sys_clkout2_src: sys_clkout2_src {
		#clock-cells = <0>;
		compatible = "ti,composite-clock";
		clocks = <&sys_clkout2_src_gate>, <&sys_clkout2_src_mux>;
	};

	sys_clkout2: sys_clkout2@70 {
		#clock-cells = <0>;
		compatible = "ti,divider-clock";
		clocks = <&sys_clkout2_src>;
		ti,bit-shift = <11>;
		ti,max-div = <64>;
		reg = <0x0070>;
		ti,index-power-of-two;
	};

	dsp_gate_ick: dsp_gate_ick@810 {
		#clock-cells = <0>;
		compatible = "ti,composite-interface-clock";
		clocks = <&dsp_fck>;
		ti,bit-shift = <1>;
		reg = <0x0810>;
	};

	dsp_div_ick: dsp_div_ick@840 {
		#clock-cells = <0>;
		compatible = "ti,composite-divider-clock";
		clocks = <&dsp_fck>;
		ti,bit-shift = <5>;
		ti,max-div = <3>;
		reg = <0x0840>;
		ti,index-starts-at-one;
	};

	dsp_ick: dsp_ick {
		#clock-cells = <0>;
		compatible = "ti,composite-clock";
		clocks = <&dsp_gate_ick>, <&dsp_div_ick>;
	};

	iva1_gate_ifck: iva1_gate_ifck@800 {
		#clock-cells = <0>;
		compatible = "ti,composite-gate-clock";
		clocks = <&core_ck>;
		ti,bit-shift = <10>;
		reg = <0x0800>;
	};

	iva1_div_ifck: iva1_div_ifck@840 {
		#clock-cells = <0>;
		compatible = "ti,composite-divider-clock";
		clocks = <&core_ck>;
		ti,bit-shift = <8>;
		reg = <0x0840>;
		ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
	};

	iva1_ifck: iva1_ifck {
		#clock-cells = <0>;
		compatible = "ti,composite-clock";
		clocks = <&iva1_gate_ifck>, <&iva1_div_ifck>;
	};

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

	iva1_mpu_int_ifck: iva1_mpu_int_ifck@800 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&iva1_ifck_div>;
		ti,bit-shift = <8>;
		reg = <0x0800>;
	};

	wdt3_ick: wdt3_ick@210 {
		#clock-cells = <0>;
		compatible = "ti,omap3-interface-clock";
		clocks = <&l4_ck>;
		ti,bit-shift = <28>;
		reg = <0x0210>;
	};

	wdt3_fck: wdt3_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&func_32k_ck>;
		ti,bit-shift = <28>;
		reg = <0x0200>;
	};

	mmc_ick: mmc_ick@210 {
		#clock-cells = <0>;
		compatible = "ti,omap3-interface-clock";
		clocks = <&l4_ck>;
		ti,bit-shift = <26>;
		reg = <0x0210>;
	};

	mmc_fck: mmc_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&func_96m_ck>;
		ti,bit-shift = <26>;
		reg = <0x0200>;
	};

	eac_ick: eac_ick@210 {
		#clock-cells = <0>;
		compatible = "ti,omap3-interface-clock";
		clocks = <&l4_ck>;
		ti,bit-shift = <24>;
		reg = <0x0210>;
	};

	eac_fck: eac_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&func_96m_ck>;
		ti,bit-shift = <24>;
		reg = <0x0200>;
	};

	i2c1_fck: i2c1_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&func_12m_ck>;
		ti,bit-shift = <19>;
		reg = <0x0200>;
	};

	i2c2_fck: i2c2_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,wait-gate-clock";
		clocks = <&func_12m_ck>;
		ti,bit-shift = <20>;
		reg = <0x0200>;
	};

	vlynq_ick: vlynq_ick@210 {
		#clock-cells = <0>;
		compatible = "ti,omap3-interface-clock";
		clocks = <&core_l3_ck>;
		ti,bit-shift = <3>;
		reg = <0x0210>;
	};

	vlynq_gate_fck: vlynq_gate_fck@200 {
		#clock-cells = <0>;
		compatible = "ti,composite-gate-clock";
		clocks = <&core_ck>;
		ti,bit-shift = <3>;
		reg = <0x0200>;
	};

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

	vlynq_mux_fck: vlynq_mux_fck@240 {
		#clock-cells = <0>;
		compatible = "ti,composite-mux-clock";
		clocks = <&func_96m_ck>, <&core_ck>, <&core_d2_ck>, <&core_d3_ck>, <&core_d4_ck>, <&dummy_ck>, <&core_d6_ck>, <&dummy_ck>, <&core_d8_ck>, <&core_d9_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d12_ck>, <&dummy_ck>, <&dummy_ck>, <&dummy_ck>, <&core_d16_ck>, <&dummy_ck>, <&core_d18_ck>;
		ti,bit-shift = <15>;
		reg = <0x0240>;
	};

	vlynq_fck: vlynq_fck {
		#clock-cells = <0>;
		compatible = "ti,composite-clock";
		clocks = <&vlynq_gate_fck>, <&vlynq_mux_fck>;
	};
};

&prcm_clockdomains {
	gfx_clkdm: gfx_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&gfx_ick>;
	};

	core_l3_clkdm: core_l3_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&cam_fck>, <&vlynq_ick>, <&usb_fck>;
	};

	wkup_clkdm: wkup_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&dpll_ck>, <&emul_ck>, <&gpt1_ick>, <&gpios_ick>,
			 <&gpios_fck>, <&mpu_wdt_ick>, <&mpu_wdt_fck>,
			 <&sync_32k_ick>, <&wdt1_ick>, <&omapctrl_ick>;
	};

	iva1_clkdm: iva1_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&iva1_mpu_int_ifck>;
	};

	dss_clkdm: dss_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&dss_ick>, <&dss_54m_fck>;
	};

	core_l4_clkdm: core_l4_clkdm {
		compatible = "ti,clockdomain";
		clocks = <&ssi_l4_ick>, <&gpt2_ick>, <&gpt3_ick>, <&gpt4_ick>,
			 <&gpt5_ick>, <&gpt6_ick>, <&gpt7_ick>, <&gpt8_ick>,
			 <&gpt9_ick>, <&gpt10_ick>, <&gpt11_ick>, <&gpt12_ick>,
			 <&mcbsp1_ick>, <&mcbsp2_ick>, <&mcspi1_ick>,
			 <&mcspi1_fck>, <&mcspi2_ick>, <&mcspi2_fck>,
			 <&uart1_ick>, <&uart1_fck>, <&uart2_ick>, <&uart2_fck>,
			 <&uart3_ick>, <&uart3_fck>, <&cam_ick>,
			 <&mailboxes_ick>, <&wdt4_ick>, <&wdt4_fck>,
			 <&wdt3_ick>, <&wdt3_fck>, <&mspro_ick>, <&mspro_fck>,
			 <&mmc_ick>, <&mmc_fck>, <&fac_ick>, <&fac_fck>,
			 <&eac_ick>, <&eac_fck>, <&hdq_ick>, <&hdq_fck>,
			 <&i2c1_ick>, <&i2c1_fck>, <&i2c2_ick>, <&i2c2_fck>,
			 <&des_ick>, <&sha_ick>, <&rng_ick>, <&aes_ick>,
			 <&pka_ick>;
	};
};

&func_96m_ck {
	compatible = "fixed-factor-clock";
	clocks = <&apll96_ck>;
	clock-mult = <1>;
	clock-div = <1>;
};

&dsp_div_fck {
	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>, <0>, <0>, <0>, <12>;
};

&ssi_ssr_sst_div_fck {
	ti,dividers = <0>, <1>, <2>, <3>, <4>, <0>, <6>, <0>, <8>;
};
