/*
 * OMAP2 Clock init
 *
 * Copyright (C) 2013 Texas Instruments, Inc
 *     Tero Kristo (t-kristo@ti.com)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation version 2.
 *
 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
 * kind, whether express or implied; without even the implied warranty
 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 */

#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/clk-provider.h>
#include <linux/clk/ti.h>

static struct ti_dt_clk omap2xxx_clks[] = {
	DT_CLK(NULL, "func_32k_ck", "func_32k_ck"),
	DT_CLK(NULL, "secure_32k_ck", "secure_32k_ck"),
	DT_CLK(NULL, "virt_12m_ck", "virt_12m_ck"),
	DT_CLK(NULL, "virt_13m_ck", "virt_13m_ck"),
	DT_CLK(NULL, "virt_19200000_ck", "virt_19200000_ck"),
	DT_CLK(NULL, "virt_26m_ck", "virt_26m_ck"),
	DT_CLK(NULL, "aplls_clkin_ck", "aplls_clkin_ck"),
	DT_CLK(NULL, "aplls_clkin_x2_ck", "aplls_clkin_x2_ck"),
	DT_CLK(NULL, "osc_ck", "osc_ck"),
	DT_CLK(NULL, "sys_ck", "sys_ck"),
	DT_CLK(NULL, "alt_ck", "alt_ck"),
	DT_CLK(NULL, "mcbsp_clks", "mcbsp_clks"),
	DT_CLK(NULL, "dpll_ck", "dpll_ck"),
	DT_CLK(NULL, "apll96_ck", "apll96_ck"),
	DT_CLK(NULL, "apll54_ck", "apll54_ck"),
	DT_CLK(NULL, "func_54m_ck", "func_54m_ck"),
	DT_CLK(NULL, "core_ck", "core_ck"),
	DT_CLK(NULL, "func_96m_ck", "func_96m_ck"),
	DT_CLK(NULL, "func_48m_ck", "func_48m_ck"),
	DT_CLK(NULL, "func_12m_ck", "func_12m_ck"),
	DT_CLK(NULL, "sys_clkout_src", "sys_clkout_src"),
	DT_CLK(NULL, "sys_clkout", "sys_clkout"),
	DT_CLK(NULL, "emul_ck", "emul_ck"),
	DT_CLK(NULL, "mpu_ck", "mpu_ck"),
	DT_CLK(NULL, "dsp_fck", "dsp_fck"),
	DT_CLK(NULL, "gfx_3d_fck", "gfx_3d_fck"),
	DT_CLK(NULL, "gfx_2d_fck", "gfx_2d_fck"),
	DT_CLK(NULL, "gfx_ick", "gfx_ick"),
	DT_CLK("omapdss_dss", "ick", "dss_ick"),
	DT_CLK(NULL, "dss_ick", "dss_ick"),
	DT_CLK(NULL, "dss1_fck", "dss1_fck"),
	DT_CLK(NULL, "dss2_fck", "dss2_fck"),
	DT_CLK(NULL, "dss_54m_fck", "dss_54m_fck"),
	DT_CLK(NULL, "core_l3_ck", "core_l3_ck"),
	DT_CLK(NULL, "ssi_fck", "ssi_ssr_sst_fck"),
	DT_CLK(NULL, "usb_l4_ick", "usb_l4_ick"),
	DT_CLK(NULL, "l4_ck", "l4_ck"),
	DT_CLK(NULL, "ssi_l4_ick", "ssi_l4_ick"),
	DT_CLK(NULL, "gpt1_ick", "gpt1_ick"),
	DT_CLK(NULL, "gpt1_fck", "gpt1_fck"),
	DT_CLK(NULL, "gpt2_ick", "gpt2_ick"),
	DT_CLK(NULL, "gpt2_fck", "gpt2_fck"),
	DT_CLK(NULL, "gpt3_ick", "gpt3_ick"),
	DT_CLK(NULL, "gpt3_fck", "gpt3_fck"),
	DT_CLK(NULL, "gpt4_ick", "gpt4_ick"),
	DT_CLK(NULL, "gpt4_fck", "gpt4_fck"),
	DT_CLK(NULL, "gpt5_ick", "gpt5_ick"),
	DT_CLK(NULL, "gpt5_fck", "gpt5_fck"),
	DT_CLK(NULL, "gpt6_ick", "gpt6_ick"),
	DT_CLK(NULL, "gpt6_fck", "gpt6_fck"),
	DT_CLK(NULL, "gpt7_ick", "gpt7_ick"),
	DT_CLK(NULL, "gpt7_fck", "gpt7_fck"),
	DT_CLK(NULL, "gpt8_ick", "gpt8_ick"),
	DT_CLK(NULL, "gpt8_fck", "gpt8_fck"),
	DT_CLK(NULL, "gpt9_ick", "gpt9_ick"),
	DT_CLK(NULL, "gpt9_fck", "gpt9_fck"),
	DT_CLK(NULL, "gpt10_ick", "gpt10_ick"),
	DT_CLK(NULL, "gpt10_fck", "gpt10_fck"),
	DT_CLK(NULL, "gpt11_ick", "gpt11_ick"),
	DT_CLK(NULL, "gpt11_fck", "gpt11_fck"),
	DT_CLK(NULL, "gpt12_ick", "gpt12_ick"),
	DT_CLK(NULL, "gpt12_fck", "gpt12_fck"),
	DT_CLK("omap-mcbsp.1", "ick", "mcbsp1_ick"),
	DT_CLK(NULL, "mcbsp1_ick", "mcbsp1_ick"),
	DT_CLK(NULL, "mcbsp1_fck", "mcbsp1_fck"),
	DT_CLK("omap-mcbsp.2", "ick", "mcbsp2_ick"),
	DT_CLK(NULL, "mcbsp2_ick", "mcbsp2_ick"),
	DT_CLK(NULL, "mcbsp2_fck", "mcbsp2_fck"),
	DT_CLK("omap2_mcspi.1", "ick", "mcspi1_ick"),
	DT_CLK(NULL, "mcspi1_ick", "mcspi1_ick"),
	DT_CLK(NULL, "mcspi1_fck", "mcspi1_fck"),
	DT_CLK("omap2_mcspi.2", "ick", "mcspi2_ick"),
	DT_CLK(NULL, "mcspi2_ick", "mcspi2_ick"),
	DT_CLK(NULL, "mcspi2_fck", "mcspi2_fck"),
	DT_CLK(NULL, "uart1_ick", "uart1_ick"),
	DT_CLK(NULL, "uart1_fck", "uart1_fck"),
	DT_CLK(NULL, "uart2_ick", "uart2_ick"),
	DT_CLK(NULL, "uart2_fck", "uart2_fck"),
	DT_CLK(NULL, "uart3_ick", "uart3_ick"),
	DT_CLK(NULL, "uart3_fck", "uart3_fck"),
	DT_CLK(NULL, "gpios_ick", "gpios_ick"),
	DT_CLK(NULL, "gpios_fck", "gpios_fck"),
	DT_CLK("omap_wdt", "ick", "mpu_wdt_ick"),
	DT_CLK(NULL, "mpu_wdt_ick", "mpu_wdt_ick"),
	DT_CLK(NULL, "mpu_wdt_fck", "mpu_wdt_fck"),
	DT_CLK(NULL, "sync_32k_ick", "sync_32k_ick"),
	DT_CLK(NULL, "wdt1_ick", "wdt1_ick"),
	DT_CLK(NULL, "omapctrl_ick", "omapctrl_ick"),
	DT_CLK("omap24xxcam", "fck", "cam_fck"),
	DT_CLK(NULL, "cam_fck", "cam_fck"),
	DT_CLK("omap24xxcam", "ick", "cam_ick"),
	DT_CLK(NULL, "cam_ick", "cam_ick"),
	DT_CLK(NULL, "mailboxes_ick", "mailboxes_ick"),
	DT_CLK(NULL, "wdt4_ick", "wdt4_ick"),
	DT_CLK(NULL, "wdt4_fck", "wdt4_fck"),
	DT_CLK(NULL, "mspro_ick", "mspro_ick"),
	DT_CLK(NULL, "mspro_fck", "mspro_fck"),
	DT_CLK(NULL, "fac_ick", "fac_ick"),
	DT_CLK(NULL, "fac_fck", "fac_fck"),
	DT_CLK("omap_hdq.0", "ick", "hdq_ick"),
	DT_CLK(NULL, "hdq_ick", "hdq_ick"),
	DT_CLK("omap_hdq.0", "fck", "hdq_fck"),
	DT_CLK(NULL, "hdq_fck", "hdq_fck"),
	DT_CLK("omap_i2c.1", "ick", "i2c1_ick"),
	DT_CLK(NULL, "i2c1_ick", "i2c1_ick"),
	DT_CLK("omap_i2c.2", "ick", "i2c2_ick"),
	DT_CLK(NULL, "i2c2_ick", "i2c2_ick"),
	DT_CLK(NULL, "gpmc_fck", "gpmc_fck"),
	DT_CLK(NULL, "sdma_fck", "sdma_fck"),
	DT_CLK(NULL, "sdma_ick", "sdma_ick"),
	DT_CLK(NULL, "sdrc_ick", "sdrc_ick"),
	DT_CLK(NULL, "des_ick", "des_ick"),
	DT_CLK("omap-sham", "ick", "sha_ick"),
	DT_CLK(NULL, "sha_ick", "sha_ick"),
	DT_CLK("omap_rng", "ick", "rng_ick"),
	DT_CLK(NULL, "rng_ick", "rng_ick"),
	DT_CLK("omap-aes", "ick", "aes_ick"),
	DT_CLK(NULL, "aes_ick", "aes_ick"),
	DT_CLK(NULL, "pka_ick", "pka_ick"),
	DT_CLK(NULL, "usb_fck", "usb_fck"),
	DT_CLK(NULL, "timer_32k_ck", "func_32k_ck"),
	DT_CLK(NULL, "timer_sys_ck", "sys_ck"),
	DT_CLK(NULL, "timer_ext_ck", "alt_ck"),
	{ .node_name = NULL },
};

static struct ti_dt_clk omap2420_clks[] = {
	DT_CLK(NULL, "sys_clkout2_src", "sys_clkout2_src"),
	DT_CLK(NULL, "sys_clkout2", "sys_clkout2"),
	DT_CLK(NULL, "dsp_ick", "dsp_ick"),
	DT_CLK(NULL, "iva1_ifck", "iva1_ifck"),
	DT_CLK(NULL, "iva1_mpu_int_ifck", "iva1_mpu_int_ifck"),
	DT_CLK(NULL, "wdt3_ick", "wdt3_ick"),
	DT_CLK(NULL, "wdt3_fck", "wdt3_fck"),
	DT_CLK("mmci-omap.0", "ick", "mmc_ick"),
	DT_CLK(NULL, "mmc_ick", "mmc_ick"),
	DT_CLK("mmci-omap.0", "fck", "mmc_fck"),
	DT_CLK(NULL, "mmc_fck", "mmc_fck"),
	DT_CLK(NULL, "eac_ick", "eac_ick"),
	DT_CLK(NULL, "eac_fck", "eac_fck"),
	DT_CLK(NULL, "i2c1_fck", "i2c1_fck"),
	DT_CLK(NULL, "i2c2_fck", "i2c2_fck"),
	DT_CLK(NULL, "vlynq_ick", "vlynq_ick"),
	DT_CLK(NULL, "vlynq_fck", "vlynq_fck"),
	DT_CLK("musb-hdrc", "fck", "osc_ck"),
	{ .node_name = NULL },
};

static struct ti_dt_clk omap2430_clks[] = {
	DT_CLK("twl", "fck", "osc_ck"),
	DT_CLK(NULL, "iva2_1_ick", "iva2_1_ick"),
	DT_CLK(NULL, "mdm_ick", "mdm_ick"),
	DT_CLK(NULL, "mdm_osc_ck", "mdm_osc_ck"),
	DT_CLK("omap-mcbsp.3", "ick", "mcbsp3_ick"),
	DT_CLK(NULL, "mcbsp3_ick", "mcbsp3_ick"),
	DT_CLK(NULL, "mcbsp3_fck", "mcbsp3_fck"),
	DT_CLK("omap-mcbsp.4", "ick", "mcbsp4_ick"),
	DT_CLK(NULL, "mcbsp4_ick", "mcbsp4_ick"),
	DT_CLK(NULL, "mcbsp4_fck", "mcbsp4_fck"),
	DT_CLK("omap-mcbsp.5", "ick", "mcbsp5_ick"),
	DT_CLK(NULL, "mcbsp5_ick", "mcbsp5_ick"),
	DT_CLK(NULL, "mcbsp5_fck", "mcbsp5_fck"),
	DT_CLK("omap2_mcspi.3", "ick", "mcspi3_ick"),
	DT_CLK(NULL, "mcspi3_ick", "mcspi3_ick"),
	DT_CLK(NULL, "mcspi3_fck", "mcspi3_fck"),
	DT_CLK(NULL, "icr_ick", "icr_ick"),
	DT_CLK(NULL, "i2chs1_fck", "i2chs1_fck"),
	DT_CLK(NULL, "i2chs2_fck", "i2chs2_fck"),
	DT_CLK("musb-omap2430", "ick", "usbhs_ick"),
	DT_CLK(NULL, "usbhs_ick", "usbhs_ick"),
	DT_CLK("omap_hsmmc.0", "ick", "mmchs1_ick"),
	DT_CLK(NULL, "mmchs1_ick", "mmchs1_ick"),
	DT_CLK(NULL, "mmchs1_fck", "mmchs1_fck"),
	DT_CLK("omap_hsmmc.1", "ick", "mmchs2_ick"),
	DT_CLK(NULL, "mmchs2_ick", "mmchs2_ick"),
	DT_CLK(NULL, "mmchs2_fck", "mmchs2_fck"),
	DT_CLK(NULL, "gpio5_ick", "gpio5_ick"),
	DT_CLK(NULL, "gpio5_fck", "gpio5_fck"),
	DT_CLK(NULL, "mdm_intc_ick", "mdm_intc_ick"),
	DT_CLK("omap_hsmmc.0", "mmchsdb_fck", "mmchsdb1_fck"),
	DT_CLK(NULL, "mmchsdb1_fck", "mmchsdb1_fck"),
	DT_CLK("omap_hsmmc.1", "mmchsdb_fck", "mmchsdb2_fck"),
	DT_CLK(NULL, "mmchsdb2_fck", "mmchsdb2_fck"),
	{ .node_name = NULL },
};

static const char *enable_init_clks[] = {
	"apll96_ck",
	"apll54_ck",
	"sync_32k_ick",
	"omapctrl_ick",
	"gpmc_fck",
	"sdrc_ick",
};

enum {
	OMAP2_SOC_OMAP2420,
	OMAP2_SOC_OMAP2430,
};

static int __init omap2xxx_dt_clk_init(int soc_type)
{
	ti_dt_clocks_register(omap2xxx_clks);

	if (soc_type == OMAP2_SOC_OMAP2420)
		ti_dt_clocks_register(omap2420_clks);
	else
		ti_dt_clocks_register(omap2430_clks);

	omap2xxx_clkt_vps_init();

	omap2_clk_disable_autoidle_all();

	omap2_clk_enable_init_clocks(enable_init_clks,
				     ARRAY_SIZE(enable_init_clks));

	pr_info("Clocking rate (Crystal/DPLL/MPU): %ld.%01ld/%ld/%ld MHz\n",
		(clk_get_rate(clk_get_sys(NULL, "sys_ck")) / 1000000),
		(clk_get_rate(clk_get_sys(NULL, "sys_ck")) / 100000) % 10,
		(clk_get_rate(clk_get_sys(NULL, "dpll_ck")) / 1000000),
		(clk_get_rate(clk_get_sys(NULL, "mpu_ck")) / 1000000));

	return 0;
}

int __init omap2420_dt_clk_init(void)
{
	return omap2xxx_dt_clk_init(OMAP2_SOC_OMAP2420);
}

int __init omap2430_dt_clk_init(void)
{
	return omap2xxx_dt_clk_init(OMAP2_SOC_OMAP2430);
}
