18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (c) 2014 Samsung Electronics Co., Ltd.
48c2ecf20Sopenharmony_ci * Author: Rahul Sharma <rahul.sharma@samsung.com>
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * Common Clock Framework support for Exynos5260 SoC.
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#include <linux/of.h>
108c2ecf20Sopenharmony_ci#include <linux/of_address.h>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#include "clk-exynos5260.h"
138c2ecf20Sopenharmony_ci#include "clk.h"
148c2ecf20Sopenharmony_ci#include "clk-pll.h"
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_ci#include <dt-bindings/clock/exynos5260-clk.h>
178c2ecf20Sopenharmony_ci
188c2ecf20Sopenharmony_ci/*
198c2ecf20Sopenharmony_ci * Applicable for all 2550 Type PLLS for Exynos5260, listed below
208c2ecf20Sopenharmony_ci * DISP_PLL, EGL_PLL, KFC_PLL, MEM_PLL, BUS_PLL, MEDIA_PLL, G3D_PLL.
218c2ecf20Sopenharmony_ci */
228c2ecf20Sopenharmony_cistatic const struct samsung_pll_rate_table pll2550_24mhz_tbl[] __initconst = {
238c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1700000000, 425, 6, 0),
248c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1600000000, 200, 3, 0),
258c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1500000000, 250, 4, 0),
268c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1400000000, 175, 3, 0),
278c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1300000000, 325, 6, 0),
288c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1200000000, 400, 4, 1),
298c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1100000000, 275, 3, 1),
308c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1000000000, 250, 3, 1),
318c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 933000000, 311, 4, 1),
328c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 900000000, 300, 4, 1),
338c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 800000000, 200, 3, 1),
348c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 733000000, 733, 12, 1),
358c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 700000000, 175, 3, 1),
368c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 667000000, 667, 12, 1),
378c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 633000000, 211, 4, 1),
388c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 620000000, 310, 3, 2),
398c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 600000000, 400, 4, 2),
408c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 543000000, 362, 4, 2),
418c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 533000000, 533, 6, 2),
428c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 500000000, 250, 3, 2),
438c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 450000000, 300, 4, 2),
448c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 400000000, 200, 3, 2),
458c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 350000000, 175, 3, 2),
468c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 300000000, 400, 4, 3),
478c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 266000000, 266, 3, 3),
488c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 200000000, 200, 3, 3),
498c2ecf20Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 160000000, 160, 3, 3),
508c2ecf20Sopenharmony_ci};
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci/*
538c2ecf20Sopenharmony_ci * Applicable for 2650 Type PLL for AUD_PLL.
548c2ecf20Sopenharmony_ci */
558c2ecf20Sopenharmony_cistatic const struct samsung_pll_rate_table pll2650_24mhz_tbl[] __initconst = {
568c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1600000000, 200, 3, 0, 0),
578c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1200000000, 100, 2, 0, 0),
588c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1000000000, 250, 3, 1, 0),
598c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 800000000, 200, 3, 1, 0),
608c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 600000000, 100, 2, 1, 0),
618c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 532000000, 266, 3, 2, 0),
628c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 480000000, 160, 2, 2, 0),
638c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 432000000, 144, 2, 2, 0),
648c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 400000000, 200, 3, 2, 0),
658c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 394073128, 459, 7, 2, 49282),
668c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 333000000, 111, 2, 2, 0),
678c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 300000000, 100, 2, 2, 0),
688c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 266000000, 266, 3, 3, 0),
698c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 200000000, 200, 3, 3, 0),
708c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 166000000, 166, 3, 3, 0),
718c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 133000000, 266, 3, 4, 0),
728c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 100000000, 200, 3, 4, 0),
738c2ecf20Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 66000000, 176, 2, 5, 0),
748c2ecf20Sopenharmony_ci};
758c2ecf20Sopenharmony_ci
768c2ecf20Sopenharmony_ci/* CMU_AUD */
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_cistatic const unsigned long aud_clk_regs[] __initconst = {
798c2ecf20Sopenharmony_ci	MUX_SEL_AUD,
808c2ecf20Sopenharmony_ci	DIV_AUD0,
818c2ecf20Sopenharmony_ci	DIV_AUD1,
828c2ecf20Sopenharmony_ci	EN_ACLK_AUD,
838c2ecf20Sopenharmony_ci	EN_PCLK_AUD,
848c2ecf20Sopenharmony_ci	EN_SCLK_AUD,
858c2ecf20Sopenharmony_ci	EN_IP_AUD,
868c2ecf20Sopenharmony_ci};
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ciPNAME(mout_aud_pll_user_p) = {"fin_pll", "fout_aud_pll"};
898c2ecf20Sopenharmony_ciPNAME(mout_sclk_aud_i2s_p) = {"mout_aud_pll_user", "ioclk_i2s_cdclk"};
908c2ecf20Sopenharmony_ciPNAME(mout_sclk_aud_pcm_p) = {"mout_aud_pll_user", "ioclk_pcm_extclk"};
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock aud_mux_clks[] __initconst = {
938c2ecf20Sopenharmony_ci	MUX(AUD_MOUT_AUD_PLL_USER, "mout_aud_pll_user", mout_aud_pll_user_p,
948c2ecf20Sopenharmony_ci			MUX_SEL_AUD, 0, 1),
958c2ecf20Sopenharmony_ci	MUX(AUD_MOUT_SCLK_AUD_I2S, "mout_sclk_aud_i2s", mout_sclk_aud_i2s_p,
968c2ecf20Sopenharmony_ci			MUX_SEL_AUD, 4, 1),
978c2ecf20Sopenharmony_ci	MUX(AUD_MOUT_SCLK_AUD_PCM, "mout_sclk_aud_pcm", mout_sclk_aud_pcm_p,
988c2ecf20Sopenharmony_ci			MUX_SEL_AUD, 8, 1),
998c2ecf20Sopenharmony_ci};
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_cistatic const struct samsung_div_clock aud_div_clks[] __initconst = {
1028c2ecf20Sopenharmony_ci	DIV(AUD_DOUT_ACLK_AUD_131, "dout_aclk_aud_131", "mout_aud_pll_user",
1038c2ecf20Sopenharmony_ci			DIV_AUD0, 0, 4),
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_I2S, "dout_sclk_aud_i2s", "mout_sclk_aud_i2s",
1068c2ecf20Sopenharmony_ci			DIV_AUD1, 0, 4),
1078c2ecf20Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_PCM, "dout_sclk_aud_pcm", "mout_sclk_aud_pcm",
1088c2ecf20Sopenharmony_ci			DIV_AUD1, 4, 8),
1098c2ecf20Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_UART, "dout_sclk_aud_uart", "mout_aud_pll_user",
1108c2ecf20Sopenharmony_ci			DIV_AUD1, 12, 4),
1118c2ecf20Sopenharmony_ci};
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock aud_gate_clks[] __initconst = {
1148c2ecf20Sopenharmony_ci	GATE(AUD_SCLK_I2S, "sclk_aud_i2s", "dout_sclk_aud_i2s",
1158c2ecf20Sopenharmony_ci			EN_SCLK_AUD, 0, CLK_SET_RATE_PARENT, 0),
1168c2ecf20Sopenharmony_ci	GATE(AUD_SCLK_PCM, "sclk_aud_pcm", "dout_sclk_aud_pcm",
1178c2ecf20Sopenharmony_ci			EN_SCLK_AUD, 1, CLK_SET_RATE_PARENT, 0),
1188c2ecf20Sopenharmony_ci	GATE(AUD_SCLK_AUD_UART, "sclk_aud_uart", "dout_sclk_aud_uart",
1198c2ecf20Sopenharmony_ci			EN_SCLK_AUD, 2, CLK_SET_RATE_PARENT, 0),
1208c2ecf20Sopenharmony_ci
1218c2ecf20Sopenharmony_ci	GATE(AUD_CLK_SRAMC, "clk_sramc", "dout_aclk_aud_131", EN_IP_AUD,
1228c2ecf20Sopenharmony_ci			0, 0, 0),
1238c2ecf20Sopenharmony_ci	GATE(AUD_CLK_DMAC, "clk_dmac", "dout_aclk_aud_131",
1248c2ecf20Sopenharmony_ci			EN_IP_AUD, 1, 0, 0),
1258c2ecf20Sopenharmony_ci	GATE(AUD_CLK_I2S, "clk_i2s", "dout_aclk_aud_131", EN_IP_AUD, 2, 0, 0),
1268c2ecf20Sopenharmony_ci	GATE(AUD_CLK_PCM, "clk_pcm", "dout_aclk_aud_131", EN_IP_AUD, 3, 0, 0),
1278c2ecf20Sopenharmony_ci	GATE(AUD_CLK_AUD_UART, "clk_aud_uart", "dout_aclk_aud_131",
1288c2ecf20Sopenharmony_ci			EN_IP_AUD, 4, 0, 0),
1298c2ecf20Sopenharmony_ci};
1308c2ecf20Sopenharmony_ci
1318c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info aud_cmu __initconst = {
1328c2ecf20Sopenharmony_ci	.mux_clks	= aud_mux_clks,
1338c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(aud_mux_clks),
1348c2ecf20Sopenharmony_ci	.div_clks	= aud_div_clks,
1358c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(aud_div_clks),
1368c2ecf20Sopenharmony_ci	.gate_clks	= aud_gate_clks,
1378c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(aud_gate_clks),
1388c2ecf20Sopenharmony_ci	.nr_clk_ids	= AUD_NR_CLK,
1398c2ecf20Sopenharmony_ci	.clk_regs	= aud_clk_regs,
1408c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(aud_clk_regs),
1418c2ecf20Sopenharmony_ci};
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_aud_init(struct device_node *np)
1448c2ecf20Sopenharmony_ci{
1458c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &aud_cmu);
1468c2ecf20Sopenharmony_ci}
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_aud, "samsung,exynos5260-clock-aud",
1498c2ecf20Sopenharmony_ci		exynos5260_clk_aud_init);
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci
1528c2ecf20Sopenharmony_ci/* CMU_DISP */
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_cistatic const unsigned long disp_clk_regs[] __initconst = {
1558c2ecf20Sopenharmony_ci	MUX_SEL_DISP0,
1568c2ecf20Sopenharmony_ci	MUX_SEL_DISP1,
1578c2ecf20Sopenharmony_ci	MUX_SEL_DISP2,
1588c2ecf20Sopenharmony_ci	MUX_SEL_DISP3,
1598c2ecf20Sopenharmony_ci	MUX_SEL_DISP4,
1608c2ecf20Sopenharmony_ci	DIV_DISP,
1618c2ecf20Sopenharmony_ci	EN_ACLK_DISP,
1628c2ecf20Sopenharmony_ci	EN_PCLK_DISP,
1638c2ecf20Sopenharmony_ci	EN_SCLK_DISP0,
1648c2ecf20Sopenharmony_ci	EN_SCLK_DISP1,
1658c2ecf20Sopenharmony_ci	EN_IP_DISP,
1668c2ecf20Sopenharmony_ci	EN_IP_DISP_BUS,
1678c2ecf20Sopenharmony_ci};
1688c2ecf20Sopenharmony_ci
1698c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch3_txd_clk_user_p) = {"fin_pll",
1708c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_ch3_txd_clk"};
1718c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch2_txd_clk_user_p) = {"fin_pll",
1728c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_ch2_txd_clk"};
1738c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch1_txd_clk_user_p) = {"fin_pll",
1748c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_ch1_txd_clk"};
1758c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch0_txd_clk_user_p) = {"fin_pll",
1768c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_ch0_txd_clk"};
1778c2ecf20Sopenharmony_ciPNAME(mout_aclk_disp_222_user_p) = {"fin_pll", "dout_aclk_disp_222"};
1788c2ecf20Sopenharmony_ciPNAME(mout_sclk_disp_pixel_user_p) = {"fin_pll", "dout_sclk_disp_pixel"};
1798c2ecf20Sopenharmony_ciPNAME(mout_aclk_disp_333_user_p) = {"fin_pll", "dout_aclk_disp_333"};
1808c2ecf20Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_tmds_clko_user_p) = {"fin_pll",
1818c2ecf20Sopenharmony_ci			"phyclk_hdmi_phy_tmds_clko"};
1828c2ecf20Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_ref_clko_user_p) = {"fin_pll",
1838c2ecf20Sopenharmony_ci			"phyclk_hdmi_phy_ref_clko"};
1848c2ecf20Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_pixel_clko_user_p) = {"fin_pll",
1858c2ecf20Sopenharmony_ci			"phyclk_hdmi_phy_pixel_clko"};
1868c2ecf20Sopenharmony_ciPNAME(mout_phyclk_hdmi_link_o_tmds_clkhi_user_p) = {"fin_pll",
1878c2ecf20Sopenharmony_ci			"phyclk_hdmi_link_o_tmds_clkhi"};
1888c2ecf20Sopenharmony_ciPNAME(mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs_p) = {"fin_pll",
1898c2ecf20Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_txbyte_clkhs"};
1908c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_o_ref_clk_24m_user_p) = {"fin_pll",
1918c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_o_ref_clk_24m"};
1928c2ecf20Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_clk_div2_user_p) = {"fin_pll",
1938c2ecf20Sopenharmony_ci			"phyclk_dptx_phy_clk_div2"};
1948c2ecf20Sopenharmony_ciPNAME(mout_sclk_hdmi_pixel_p) = {"mout_sclk_disp_pixel_user",
1958c2ecf20Sopenharmony_ci			"mout_aclk_disp_222_user"};
1968c2ecf20Sopenharmony_ciPNAME(mout_phyclk_mipi_dphy_4lmrxclk_esc0_user_p) = {"fin_pll",
1978c2ecf20Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_rxclkesc0"};
1988c2ecf20Sopenharmony_ciPNAME(mout_sclk_hdmi_spdif_p) = {"fin_pll", "ioclk_spdif_extclk",
1998c2ecf20Sopenharmony_ci			"dout_aclk_peri_aud", "phyclk_hdmi_phy_ref_cko"};
2008c2ecf20Sopenharmony_ci
2018c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock disp_mux_clks[] __initconst = {
2028c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_ACLK_DISP_333_USER, "mout_aclk_disp_333_user",
2038c2ecf20Sopenharmony_ci			mout_aclk_disp_333_user_p,
2048c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 0, 1),
2058c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_SCLK_DISP_PIXEL_USER, "mout_sclk_disp_pixel_user",
2068c2ecf20Sopenharmony_ci			mout_sclk_disp_pixel_user_p,
2078c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 4, 1),
2088c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_ACLK_DISP_222_USER, "mout_aclk_disp_222_user",
2098c2ecf20Sopenharmony_ci			mout_aclk_disp_222_user_p,
2108c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 8, 1),
2118c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH0_TXD_CLK_USER,
2128c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_ch0_txd_clk_user",
2138c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_ch0_txd_clk_user_p,
2148c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 16, 1),
2158c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH1_TXD_CLK_USER,
2168c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_ch1_txd_clk_user",
2178c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_ch1_txd_clk_user_p,
2188c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 20, 1),
2198c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH2_TXD_CLK_USER,
2208c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_ch2_txd_clk_user",
2218c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_ch2_txd_clk_user_p,
2228c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 24, 1),
2238c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH3_TXD_CLK_USER,
2248c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_ch3_txd_clk_user",
2258c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_ch3_txd_clk_user_p,
2268c2ecf20Sopenharmony_ci			MUX_SEL_DISP0, 28, 1),
2278c2ecf20Sopenharmony_ci
2288c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CLK_DIV2_USER,
2298c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_clk_div2_user",
2308c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_clk_div2_user_p,
2318c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 0, 1),
2328c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_O_REF_CLK_24M_USER,
2338c2ecf20Sopenharmony_ci			"mout_phyclk_dptx_phy_o_ref_clk_24m_user",
2348c2ecf20Sopenharmony_ci			mout_phyclk_dptx_phy_o_ref_clk_24m_user_p,
2358c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 4, 1),
2368c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_MIPI_DPHY_4L_M_TXBYTE_CLKHS,
2378c2ecf20Sopenharmony_ci			"mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs",
2388c2ecf20Sopenharmony_ci			mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs_p,
2398c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 8, 1),
2408c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_LINK_O_TMDS_CLKHI_USER,
2418c2ecf20Sopenharmony_ci			"mout_phyclk_hdmi_link_o_tmds_clkhi_user",
2428c2ecf20Sopenharmony_ci			mout_phyclk_hdmi_link_o_tmds_clkhi_user_p,
2438c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 16, 1),
2448c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_HDMI_PHY_PIXEL,
2458c2ecf20Sopenharmony_ci			"mout_phyclk_hdmi_phy_pixel_clko_user",
2468c2ecf20Sopenharmony_ci			mout_phyclk_hdmi_phy_pixel_clko_user_p,
2478c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 20, 1),
2488c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_PHY_REF_CLKO_USER,
2498c2ecf20Sopenharmony_ci			"mout_phyclk_hdmi_phy_ref_clko_user",
2508c2ecf20Sopenharmony_ci			mout_phyclk_hdmi_phy_ref_clko_user_p,
2518c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 24, 1),
2528c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_PHY_TMDS_CLKO_USER,
2538c2ecf20Sopenharmony_ci			"mout_phyclk_hdmi_phy_tmds_clko_user",
2548c2ecf20Sopenharmony_ci			mout_phyclk_hdmi_phy_tmds_clko_user_p,
2558c2ecf20Sopenharmony_ci			MUX_SEL_DISP1, 28, 1),
2568c2ecf20Sopenharmony_ci
2578c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_MIPI_DPHY_4LMRXCLK_ESC0_USER,
2588c2ecf20Sopenharmony_ci			"mout_phyclk_mipi_dphy_4lmrxclk_esc0_user",
2598c2ecf20Sopenharmony_ci			mout_phyclk_mipi_dphy_4lmrxclk_esc0_user_p,
2608c2ecf20Sopenharmony_ci			MUX_SEL_DISP2, 0, 1),
2618c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_SCLK_HDMI_PIXEL, "mout_sclk_hdmi_pixel",
2628c2ecf20Sopenharmony_ci			mout_sclk_hdmi_pixel_p,
2638c2ecf20Sopenharmony_ci			MUX_SEL_DISP2, 4, 1),
2648c2ecf20Sopenharmony_ci
2658c2ecf20Sopenharmony_ci	MUX(DISP_MOUT_SCLK_HDMI_SPDIF, "mout_sclk_hdmi_spdif",
2668c2ecf20Sopenharmony_ci			mout_sclk_hdmi_spdif_p,
2678c2ecf20Sopenharmony_ci			MUX_SEL_DISP4, 4, 2),
2688c2ecf20Sopenharmony_ci};
2698c2ecf20Sopenharmony_ci
2708c2ecf20Sopenharmony_cistatic const struct samsung_div_clock disp_div_clks[] __initconst = {
2718c2ecf20Sopenharmony_ci	DIV(DISP_DOUT_PCLK_DISP_111, "dout_pclk_disp_111",
2728c2ecf20Sopenharmony_ci			"mout_aclk_disp_222_user",
2738c2ecf20Sopenharmony_ci			DIV_DISP, 8, 4),
2748c2ecf20Sopenharmony_ci	DIV(DISP_DOUT_SCLK_FIMD1_EXTCLKPLL, "dout_sclk_fimd1_extclkpll",
2758c2ecf20Sopenharmony_ci			"mout_sclk_disp_pixel_user",
2768c2ecf20Sopenharmony_ci			DIV_DISP, 12, 4),
2778c2ecf20Sopenharmony_ci	DIV(DISP_DOUT_SCLK_HDMI_PHY_PIXEL_CLKI,
2788c2ecf20Sopenharmony_ci			"dout_sclk_hdmi_phy_pixel_clki",
2798c2ecf20Sopenharmony_ci			"mout_sclk_hdmi_pixel",
2808c2ecf20Sopenharmony_ci			DIV_DISP, 16, 4),
2818c2ecf20Sopenharmony_ci};
2828c2ecf20Sopenharmony_ci
2838c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock disp_gate_clks[] __initconst = {
2848c2ecf20Sopenharmony_ci	GATE(DISP_MOUT_HDMI_PHY_PIXEL_USER, "sclk_hdmi_link_i_pixel",
2858c2ecf20Sopenharmony_ci			"mout_phyclk_hdmi_phy_pixel_clko_user",
2868c2ecf20Sopenharmony_ci			EN_SCLK_DISP0, 26, CLK_SET_RATE_PARENT, 0),
2878c2ecf20Sopenharmony_ci	GATE(DISP_SCLK_PIXEL, "sclk_hdmi_phy_pixel_clki",
2888c2ecf20Sopenharmony_ci			"dout_sclk_hdmi_phy_pixel_clki",
2898c2ecf20Sopenharmony_ci			EN_SCLK_DISP0, 29, CLK_SET_RATE_PARENT, 0),
2908c2ecf20Sopenharmony_ci
2918c2ecf20Sopenharmony_ci	GATE(DISP_CLK_DP, "clk_dptx_link", "mout_aclk_disp_222_user",
2928c2ecf20Sopenharmony_ci			EN_IP_DISP, 4, 0, 0),
2938c2ecf20Sopenharmony_ci	GATE(DISP_CLK_DPPHY, "clk_dptx_phy", "mout_aclk_disp_222_user",
2948c2ecf20Sopenharmony_ci			EN_IP_DISP, 5, 0, 0),
2958c2ecf20Sopenharmony_ci	GATE(DISP_CLK_DSIM1, "clk_dsim1", "mout_aclk_disp_222_user",
2968c2ecf20Sopenharmony_ci			EN_IP_DISP, 6, 0, 0),
2978c2ecf20Sopenharmony_ci	GATE(DISP_CLK_FIMD1, "clk_fimd1", "mout_aclk_disp_222_user",
2988c2ecf20Sopenharmony_ci			EN_IP_DISP, 7, 0, 0),
2998c2ecf20Sopenharmony_ci	GATE(DISP_CLK_HDMI, "clk_hdmi", "mout_aclk_disp_222_user",
3008c2ecf20Sopenharmony_ci			EN_IP_DISP, 8, 0, 0),
3018c2ecf20Sopenharmony_ci	GATE(DISP_CLK_HDMIPHY, "clk_hdmiphy", "mout_aclk_disp_222_user",
3028c2ecf20Sopenharmony_ci			EN_IP_DISP, 9, 0, 0),
3038c2ecf20Sopenharmony_ci	GATE(DISP_CLK_MIPIPHY, "clk_mipi_dphy", "mout_aclk_disp_222_user",
3048c2ecf20Sopenharmony_ci			EN_IP_DISP, 10, 0, 0),
3058c2ecf20Sopenharmony_ci	GATE(DISP_CLK_MIXER, "clk_mixer", "mout_aclk_disp_222_user",
3068c2ecf20Sopenharmony_ci			EN_IP_DISP, 11, 0, 0),
3078c2ecf20Sopenharmony_ci	GATE(DISP_CLK_PIXEL_DISP, "clk_pixel_disp", "mout_aclk_disp_222_user",
3088c2ecf20Sopenharmony_ci			EN_IP_DISP, 12, CLK_IGNORE_UNUSED, 0),
3098c2ecf20Sopenharmony_ci	GATE(DISP_CLK_PIXEL_MIXER, "clk_pixel_mixer", "mout_aclk_disp_222_user",
3108c2ecf20Sopenharmony_ci			EN_IP_DISP, 13, CLK_IGNORE_UNUSED, 0),
3118c2ecf20Sopenharmony_ci	GATE(DISP_CLK_SMMU_FIMD1M0, "clk_smmu3_fimd1m0",
3128c2ecf20Sopenharmony_ci			"mout_aclk_disp_222_user",
3138c2ecf20Sopenharmony_ci			EN_IP_DISP, 22, 0, 0),
3148c2ecf20Sopenharmony_ci	GATE(DISP_CLK_SMMU_FIMD1M1, "clk_smmu3_fimd1m1",
3158c2ecf20Sopenharmony_ci			"mout_aclk_disp_222_user",
3168c2ecf20Sopenharmony_ci			EN_IP_DISP, 23, 0, 0),
3178c2ecf20Sopenharmony_ci	GATE(DISP_CLK_SMMU_TV, "clk_smmu3_tv", "mout_aclk_disp_222_user",
3188c2ecf20Sopenharmony_ci			EN_IP_DISP, 25, 0, 0),
3198c2ecf20Sopenharmony_ci};
3208c2ecf20Sopenharmony_ci
3218c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info disp_cmu __initconst = {
3228c2ecf20Sopenharmony_ci	.mux_clks	= disp_mux_clks,
3238c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(disp_mux_clks),
3248c2ecf20Sopenharmony_ci	.div_clks	= disp_div_clks,
3258c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(disp_div_clks),
3268c2ecf20Sopenharmony_ci	.gate_clks	= disp_gate_clks,
3278c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(disp_gate_clks),
3288c2ecf20Sopenharmony_ci	.nr_clk_ids	= DISP_NR_CLK,
3298c2ecf20Sopenharmony_ci	.clk_regs	= disp_clk_regs,
3308c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(disp_clk_regs),
3318c2ecf20Sopenharmony_ci};
3328c2ecf20Sopenharmony_ci
3338c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_disp_init(struct device_node *np)
3348c2ecf20Sopenharmony_ci{
3358c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &disp_cmu);
3368c2ecf20Sopenharmony_ci}
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_disp, "samsung,exynos5260-clock-disp",
3398c2ecf20Sopenharmony_ci		exynos5260_clk_disp_init);
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_ci
3428c2ecf20Sopenharmony_ci/* CMU_EGL */
3438c2ecf20Sopenharmony_ci
3448c2ecf20Sopenharmony_cistatic const unsigned long egl_clk_regs[] __initconst = {
3458c2ecf20Sopenharmony_ci	EGL_PLL_LOCK,
3468c2ecf20Sopenharmony_ci	EGL_PLL_CON0,
3478c2ecf20Sopenharmony_ci	EGL_PLL_CON1,
3488c2ecf20Sopenharmony_ci	EGL_PLL_FREQ_DET,
3498c2ecf20Sopenharmony_ci	MUX_SEL_EGL,
3508c2ecf20Sopenharmony_ci	MUX_ENABLE_EGL,
3518c2ecf20Sopenharmony_ci	DIV_EGL,
3528c2ecf20Sopenharmony_ci	DIV_EGL_PLL_FDET,
3538c2ecf20Sopenharmony_ci	EN_ACLK_EGL,
3548c2ecf20Sopenharmony_ci	EN_PCLK_EGL,
3558c2ecf20Sopenharmony_ci	EN_SCLK_EGL,
3568c2ecf20Sopenharmony_ci};
3578c2ecf20Sopenharmony_ci
3588c2ecf20Sopenharmony_ciPNAME(mout_egl_b_p) = {"mout_egl_pll", "dout_bus_pll"};
3598c2ecf20Sopenharmony_ciPNAME(mout_egl_pll_p) = {"fin_pll", "fout_egl_pll"};
3608c2ecf20Sopenharmony_ci
3618c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock egl_mux_clks[] __initconst = {
3628c2ecf20Sopenharmony_ci	MUX(EGL_MOUT_EGL_PLL, "mout_egl_pll", mout_egl_pll_p,
3638c2ecf20Sopenharmony_ci			MUX_SEL_EGL, 4, 1),
3648c2ecf20Sopenharmony_ci	MUX(EGL_MOUT_EGL_B, "mout_egl_b", mout_egl_b_p, MUX_SEL_EGL, 16, 1),
3658c2ecf20Sopenharmony_ci};
3668c2ecf20Sopenharmony_ci
3678c2ecf20Sopenharmony_cistatic const struct samsung_div_clock egl_div_clks[] __initconst = {
3688c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_EGL1, "dout_egl1", "mout_egl_b", DIV_EGL, 0, 3),
3698c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_EGL2, "dout_egl2", "dout_egl1", DIV_EGL, 4, 3),
3708c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_ACLK_EGL, "dout_aclk_egl", "dout_egl2", DIV_EGL, 8, 3),
3718c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_PCLK_EGL, "dout_pclk_egl", "dout_egl_atclk",
3728c2ecf20Sopenharmony_ci			DIV_EGL, 12, 3),
3738c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_EGL_ATCLK, "dout_egl_atclk", "dout_egl2", DIV_EGL, 16, 3),
3748c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_EGL_PCLK_DBG, "dout_egl_pclk_dbg", "dout_egl_atclk",
3758c2ecf20Sopenharmony_ci			DIV_EGL, 20, 3),
3768c2ecf20Sopenharmony_ci	DIV(EGL_DOUT_EGL_PLL, "dout_egl_pll", "mout_egl_b", DIV_EGL, 24, 3),
3778c2ecf20Sopenharmony_ci};
3788c2ecf20Sopenharmony_ci
3798c2ecf20Sopenharmony_cistatic const struct samsung_pll_clock egl_pll_clks[] __initconst = {
3808c2ecf20Sopenharmony_ci	PLL(pll_2550xx, EGL_FOUT_EGL_PLL, "fout_egl_pll", "fin_pll",
3818c2ecf20Sopenharmony_ci		EGL_PLL_LOCK, EGL_PLL_CON0,
3828c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
3838c2ecf20Sopenharmony_ci};
3848c2ecf20Sopenharmony_ci
3858c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info egl_cmu __initconst = {
3868c2ecf20Sopenharmony_ci	.pll_clks	= egl_pll_clks,
3878c2ecf20Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(egl_pll_clks),
3888c2ecf20Sopenharmony_ci	.mux_clks	= egl_mux_clks,
3898c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(egl_mux_clks),
3908c2ecf20Sopenharmony_ci	.div_clks	= egl_div_clks,
3918c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(egl_div_clks),
3928c2ecf20Sopenharmony_ci	.nr_clk_ids	= EGL_NR_CLK,
3938c2ecf20Sopenharmony_ci	.clk_regs	= egl_clk_regs,
3948c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(egl_clk_regs),
3958c2ecf20Sopenharmony_ci};
3968c2ecf20Sopenharmony_ci
3978c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_egl_init(struct device_node *np)
3988c2ecf20Sopenharmony_ci{
3998c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &egl_cmu);
4008c2ecf20Sopenharmony_ci}
4018c2ecf20Sopenharmony_ci
4028c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_egl, "samsung,exynos5260-clock-egl",
4038c2ecf20Sopenharmony_ci		exynos5260_clk_egl_init);
4048c2ecf20Sopenharmony_ci
4058c2ecf20Sopenharmony_ci
4068c2ecf20Sopenharmony_ci/* CMU_FSYS */
4078c2ecf20Sopenharmony_ci
4088c2ecf20Sopenharmony_cistatic const unsigned long fsys_clk_regs[] __initconst = {
4098c2ecf20Sopenharmony_ci	MUX_SEL_FSYS0,
4108c2ecf20Sopenharmony_ci	MUX_SEL_FSYS1,
4118c2ecf20Sopenharmony_ci	EN_ACLK_FSYS,
4128c2ecf20Sopenharmony_ci	EN_ACLK_FSYS_SECURE_RTIC,
4138c2ecf20Sopenharmony_ci	EN_ACLK_FSYS_SECURE_SMMU_RTIC,
4148c2ecf20Sopenharmony_ci	EN_SCLK_FSYS,
4158c2ecf20Sopenharmony_ci	EN_IP_FSYS,
4168c2ecf20Sopenharmony_ci	EN_IP_FSYS_SECURE_RTIC,
4178c2ecf20Sopenharmony_ci	EN_IP_FSYS_SECURE_SMMU_RTIC,
4188c2ecf20Sopenharmony_ci};
4198c2ecf20Sopenharmony_ci
4208c2ecf20Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phyclk_user_p) = {"fin_pll",
4218c2ecf20Sopenharmony_ci			"phyclk_usbhost20_phy_phyclock"};
4228c2ecf20Sopenharmony_ciPNAME(mout_phyclk_usbhost20_freeclk_user_p) = {"fin_pll",
4238c2ecf20Sopenharmony_ci			"phyclk_usbhost20_phy_freeclk"};
4248c2ecf20Sopenharmony_ciPNAME(mout_phyclk_usbhost20_clk48mohci_user_p) = {"fin_pll",
4258c2ecf20Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci"};
4268c2ecf20Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_pipe_pclk_user_p) = {"fin_pll",
4278c2ecf20Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk"};
4288c2ecf20Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_phyclock_user_p) = {"fin_pll",
4298c2ecf20Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock"};
4308c2ecf20Sopenharmony_ci
4318c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock fsys_mux_clks[] __initconst = {
4328c2ecf20Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBDRD30_PHYCLOCK_USER,
4338c2ecf20Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
4348c2ecf20Sopenharmony_ci			mout_phyclk_usbdrd30_phyclock_user_p,
4358c2ecf20Sopenharmony_ci			MUX_SEL_FSYS1, 0, 1),
4368c2ecf20Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBDRD30_PIPE_PCLK_USER,
4378c2ecf20Sopenharmony_ci			"mout_phyclk_usbdrd30_pipe_pclk_user",
4388c2ecf20Sopenharmony_ci			mout_phyclk_usbdrd30_pipe_pclk_user_p,
4398c2ecf20Sopenharmony_ci			MUX_SEL_FSYS1, 4, 1),
4408c2ecf20Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_CLK48MOHCI_USER,
4418c2ecf20Sopenharmony_ci			"mout_phyclk_usbhost20_clk48mohci_user",
4428c2ecf20Sopenharmony_ci			mout_phyclk_usbhost20_clk48mohci_user_p,
4438c2ecf20Sopenharmony_ci			MUX_SEL_FSYS1, 8, 1),
4448c2ecf20Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_FREECLK_USER,
4458c2ecf20Sopenharmony_ci			"mout_phyclk_usbhost20_freeclk_user",
4468c2ecf20Sopenharmony_ci			mout_phyclk_usbhost20_freeclk_user_p,
4478c2ecf20Sopenharmony_ci			MUX_SEL_FSYS1, 12, 1),
4488c2ecf20Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_PHYCLK_USER,
4498c2ecf20Sopenharmony_ci			"mout_phyclk_usbhost20_phyclk_user",
4508c2ecf20Sopenharmony_ci			mout_phyclk_usbhost20_phyclk_user_p,
4518c2ecf20Sopenharmony_ci			MUX_SEL_FSYS1, 16, 1),
4528c2ecf20Sopenharmony_ci};
4538c2ecf20Sopenharmony_ci
4548c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
4558c2ecf20Sopenharmony_ci	GATE(FSYS_PHYCLK_USBHOST20, "phyclk_usbhost20_phyclock",
4568c2ecf20Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
4578c2ecf20Sopenharmony_ci			EN_SCLK_FSYS, 1, 0, 0),
4588c2ecf20Sopenharmony_ci	GATE(FSYS_PHYCLK_USBDRD30, "phyclk_usbdrd30_udrd30_phyclock_g",
4598c2ecf20Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
4608c2ecf20Sopenharmony_ci			EN_SCLK_FSYS, 7, 0, 0),
4618c2ecf20Sopenharmony_ci
4628c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_MMC0, "clk_mmc0", "dout_aclk_fsys_200",
4638c2ecf20Sopenharmony_ci			EN_IP_FSYS, 6, 0, 0),
4648c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_MMC1, "clk_mmc1", "dout_aclk_fsys_200",
4658c2ecf20Sopenharmony_ci			EN_IP_FSYS, 7, 0, 0),
4668c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_MMC2, "clk_mmc2", "dout_aclk_fsys_200",
4678c2ecf20Sopenharmony_ci			EN_IP_FSYS, 8, 0, 0),
4688c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_PDMA, "clk_pdma", "dout_aclk_fsys_200",
4698c2ecf20Sopenharmony_ci			EN_IP_FSYS, 9, 0, 0),
4708c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_SROMC, "clk_sromc", "dout_aclk_fsys_200",
4718c2ecf20Sopenharmony_ci			EN_IP_FSYS, 13, 0, 0),
4728c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_USBDRD30, "clk_usbdrd30", "dout_aclk_fsys_200",
4738c2ecf20Sopenharmony_ci			EN_IP_FSYS, 14, 0, 0),
4748c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_USBHOST20, "clk_usbhost20", "dout_aclk_fsys_200",
4758c2ecf20Sopenharmony_ci			EN_IP_FSYS, 15, 0, 0),
4768c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_USBLINK, "clk_usblink", "dout_aclk_fsys_200",
4778c2ecf20Sopenharmony_ci			EN_IP_FSYS, 18, 0, 0),
4788c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_TSI, "clk_tsi", "dout_aclk_fsys_200",
4798c2ecf20Sopenharmony_ci			EN_IP_FSYS, 20, 0, 0),
4808c2ecf20Sopenharmony_ci
4818c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_RTIC, "clk_rtic", "dout_aclk_fsys_200",
4828c2ecf20Sopenharmony_ci			EN_IP_FSYS_SECURE_RTIC, 11, 0, 0),
4838c2ecf20Sopenharmony_ci	GATE(FSYS_CLK_SMMU_RTIC, "clk_smmu_rtic", "dout_aclk_fsys_200",
4848c2ecf20Sopenharmony_ci			EN_IP_FSYS_SECURE_SMMU_RTIC, 12, 0, 0),
4858c2ecf20Sopenharmony_ci};
4868c2ecf20Sopenharmony_ci
4878c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info fsys_cmu __initconst = {
4888c2ecf20Sopenharmony_ci	.mux_clks	= fsys_mux_clks,
4898c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(fsys_mux_clks),
4908c2ecf20Sopenharmony_ci	.gate_clks	= fsys_gate_clks,
4918c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(fsys_gate_clks),
4928c2ecf20Sopenharmony_ci	.nr_clk_ids	= FSYS_NR_CLK,
4938c2ecf20Sopenharmony_ci	.clk_regs	= fsys_clk_regs,
4948c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(fsys_clk_regs),
4958c2ecf20Sopenharmony_ci};
4968c2ecf20Sopenharmony_ci
4978c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_fsys_init(struct device_node *np)
4988c2ecf20Sopenharmony_ci{
4998c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &fsys_cmu);
5008c2ecf20Sopenharmony_ci}
5018c2ecf20Sopenharmony_ci
5028c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_fsys, "samsung,exynos5260-clock-fsys",
5038c2ecf20Sopenharmony_ci		exynos5260_clk_fsys_init);
5048c2ecf20Sopenharmony_ci
5058c2ecf20Sopenharmony_ci
5068c2ecf20Sopenharmony_ci/* CMU_G2D */
5078c2ecf20Sopenharmony_ci
5088c2ecf20Sopenharmony_cistatic const unsigned long g2d_clk_regs[] __initconst = {
5098c2ecf20Sopenharmony_ci	MUX_SEL_G2D,
5108c2ecf20Sopenharmony_ci	MUX_STAT_G2D,
5118c2ecf20Sopenharmony_ci	DIV_G2D,
5128c2ecf20Sopenharmony_ci	EN_ACLK_G2D,
5138c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SSS,
5148c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SLIM_SSS,
5158c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_SLIM_SSS,
5168c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_SSS,
5178c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_MDMA,
5188c2ecf20Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_G2D,
5198c2ecf20Sopenharmony_ci	EN_PCLK_G2D,
5208c2ecf20Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_SLIM_SSS,
5218c2ecf20Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_SSS,
5228c2ecf20Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_MDMA,
5238c2ecf20Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_G2D,
5248c2ecf20Sopenharmony_ci	EN_IP_G2D,
5258c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SSS,
5268c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SLIM_SSS,
5278c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_SLIM_SSS,
5288c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_SSS,
5298c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_MDMA,
5308c2ecf20Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_G2D,
5318c2ecf20Sopenharmony_ci};
5328c2ecf20Sopenharmony_ci
5338c2ecf20Sopenharmony_ciPNAME(mout_aclk_g2d_333_user_p) = {"fin_pll", "dout_aclk_g2d_333"};
5348c2ecf20Sopenharmony_ci
5358c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock g2d_mux_clks[] __initconst = {
5368c2ecf20Sopenharmony_ci	MUX(G2D_MOUT_ACLK_G2D_333_USER, "mout_aclk_g2d_333_user",
5378c2ecf20Sopenharmony_ci			mout_aclk_g2d_333_user_p,
5388c2ecf20Sopenharmony_ci			MUX_SEL_G2D, 0, 1),
5398c2ecf20Sopenharmony_ci};
5408c2ecf20Sopenharmony_ci
5418c2ecf20Sopenharmony_cistatic const struct samsung_div_clock g2d_div_clks[] __initconst = {
5428c2ecf20Sopenharmony_ci	DIV(G2D_DOUT_PCLK_G2D_83, "dout_pclk_g2d_83", "mout_aclk_g2d_333_user",
5438c2ecf20Sopenharmony_ci			DIV_G2D, 0, 3),
5448c2ecf20Sopenharmony_ci};
5458c2ecf20Sopenharmony_ci
5468c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock g2d_gate_clks[] __initconst = {
5478c2ecf20Sopenharmony_ci	GATE(G2D_CLK_G2D, "clk_g2d", "mout_aclk_g2d_333_user",
5488c2ecf20Sopenharmony_ci			EN_IP_G2D, 4, 0, 0),
5498c2ecf20Sopenharmony_ci	GATE(G2D_CLK_JPEG, "clk_jpeg", "mout_aclk_g2d_333_user",
5508c2ecf20Sopenharmony_ci			EN_IP_G2D, 5, 0, 0),
5518c2ecf20Sopenharmony_ci	GATE(G2D_CLK_MDMA, "clk_mdma", "mout_aclk_g2d_333_user",
5528c2ecf20Sopenharmony_ci			EN_IP_G2D, 6, 0, 0),
5538c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SMMU3_JPEG, "clk_smmu3_jpeg", "mout_aclk_g2d_333_user",
5548c2ecf20Sopenharmony_ci			EN_IP_G2D, 16, 0, 0),
5558c2ecf20Sopenharmony_ci
5568c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SSS, "clk_sss", "mout_aclk_g2d_333_user",
5578c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SSS, 17, 0, 0),
5588c2ecf20Sopenharmony_ci
5598c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SLIM_SSS, "clk_slim_sss", "mout_aclk_g2d_333_user",
5608c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SLIM_SSS, 11, 0, 0),
5618c2ecf20Sopenharmony_ci
5628c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SMMU_SLIM_SSS, "clk_smmu_slim_sss",
5638c2ecf20Sopenharmony_ci			"mout_aclk_g2d_333_user",
5648c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_SLIM_SSS, 13, 0, 0),
5658c2ecf20Sopenharmony_ci
5668c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SMMU_SSS, "clk_smmu_sss", "mout_aclk_g2d_333_user",
5678c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_SSS, 14, 0, 0),
5688c2ecf20Sopenharmony_ci
5698c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SMMU_MDMA, "clk_smmu_mdma", "mout_aclk_g2d_333_user",
5708c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_MDMA, 12, 0, 0),
5718c2ecf20Sopenharmony_ci
5728c2ecf20Sopenharmony_ci	GATE(G2D_CLK_SMMU3_G2D, "clk_smmu3_g2d", "mout_aclk_g2d_333_user",
5738c2ecf20Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_G2D, 15, 0, 0),
5748c2ecf20Sopenharmony_ci};
5758c2ecf20Sopenharmony_ci
5768c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info g2d_cmu __initconst = {
5778c2ecf20Sopenharmony_ci	.mux_clks	= g2d_mux_clks,
5788c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(g2d_mux_clks),
5798c2ecf20Sopenharmony_ci	.div_clks	= g2d_div_clks,
5808c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(g2d_div_clks),
5818c2ecf20Sopenharmony_ci	.gate_clks	= g2d_gate_clks,
5828c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(g2d_gate_clks),
5838c2ecf20Sopenharmony_ci	.nr_clk_ids	= G2D_NR_CLK,
5848c2ecf20Sopenharmony_ci	.clk_regs	= g2d_clk_regs,
5858c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(g2d_clk_regs),
5868c2ecf20Sopenharmony_ci};
5878c2ecf20Sopenharmony_ci
5888c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_g2d_init(struct device_node *np)
5898c2ecf20Sopenharmony_ci{
5908c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &g2d_cmu);
5918c2ecf20Sopenharmony_ci}
5928c2ecf20Sopenharmony_ci
5938c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_g2d, "samsung,exynos5260-clock-g2d",
5948c2ecf20Sopenharmony_ci		exynos5260_clk_g2d_init);
5958c2ecf20Sopenharmony_ci
5968c2ecf20Sopenharmony_ci
5978c2ecf20Sopenharmony_ci/* CMU_G3D */
5988c2ecf20Sopenharmony_ci
5998c2ecf20Sopenharmony_cistatic const unsigned long g3d_clk_regs[] __initconst = {
6008c2ecf20Sopenharmony_ci	G3D_PLL_LOCK,
6018c2ecf20Sopenharmony_ci	G3D_PLL_CON0,
6028c2ecf20Sopenharmony_ci	G3D_PLL_CON1,
6038c2ecf20Sopenharmony_ci	G3D_PLL_FDET,
6048c2ecf20Sopenharmony_ci	MUX_SEL_G3D,
6058c2ecf20Sopenharmony_ci	DIV_G3D,
6068c2ecf20Sopenharmony_ci	DIV_G3D_PLL_FDET,
6078c2ecf20Sopenharmony_ci	EN_ACLK_G3D,
6088c2ecf20Sopenharmony_ci	EN_PCLK_G3D,
6098c2ecf20Sopenharmony_ci	EN_SCLK_G3D,
6108c2ecf20Sopenharmony_ci	EN_IP_G3D,
6118c2ecf20Sopenharmony_ci};
6128c2ecf20Sopenharmony_ci
6138c2ecf20Sopenharmony_ciPNAME(mout_g3d_pll_p) = {"fin_pll", "fout_g3d_pll"};
6148c2ecf20Sopenharmony_ci
6158c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
6168c2ecf20Sopenharmony_ci	MUX(G3D_MOUT_G3D_PLL, "mout_g3d_pll", mout_g3d_pll_p,
6178c2ecf20Sopenharmony_ci			MUX_SEL_G3D, 0, 1),
6188c2ecf20Sopenharmony_ci};
6198c2ecf20Sopenharmony_ci
6208c2ecf20Sopenharmony_cistatic const struct samsung_div_clock g3d_div_clks[] __initconst = {
6218c2ecf20Sopenharmony_ci	DIV(G3D_DOUT_PCLK_G3D, "dout_pclk_g3d", "dout_aclk_g3d", DIV_G3D, 0, 3),
6228c2ecf20Sopenharmony_ci	DIV(G3D_DOUT_ACLK_G3D, "dout_aclk_g3d", "mout_g3d_pll", DIV_G3D, 4, 3),
6238c2ecf20Sopenharmony_ci};
6248c2ecf20Sopenharmony_ci
6258c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
6268c2ecf20Sopenharmony_ci	GATE(G3D_CLK_G3D, "clk_g3d", "dout_aclk_g3d", EN_IP_G3D, 2, 0, 0),
6278c2ecf20Sopenharmony_ci	GATE(G3D_CLK_G3D_HPM, "clk_g3d_hpm", "dout_aclk_g3d",
6288c2ecf20Sopenharmony_ci			EN_IP_G3D, 3, 0, 0),
6298c2ecf20Sopenharmony_ci};
6308c2ecf20Sopenharmony_ci
6318c2ecf20Sopenharmony_cistatic const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
6328c2ecf20Sopenharmony_ci	PLL(pll_2550, G3D_FOUT_G3D_PLL, "fout_g3d_pll", "fin_pll",
6338c2ecf20Sopenharmony_ci		G3D_PLL_LOCK, G3D_PLL_CON0,
6348c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
6358c2ecf20Sopenharmony_ci};
6368c2ecf20Sopenharmony_ci
6378c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info g3d_cmu __initconst = {
6388c2ecf20Sopenharmony_ci	.pll_clks	= g3d_pll_clks,
6398c2ecf20Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(g3d_pll_clks),
6408c2ecf20Sopenharmony_ci	.mux_clks	= g3d_mux_clks,
6418c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(g3d_mux_clks),
6428c2ecf20Sopenharmony_ci	.div_clks	= g3d_div_clks,
6438c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(g3d_div_clks),
6448c2ecf20Sopenharmony_ci	.gate_clks	= g3d_gate_clks,
6458c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(g3d_gate_clks),
6468c2ecf20Sopenharmony_ci	.nr_clk_ids	= G3D_NR_CLK,
6478c2ecf20Sopenharmony_ci	.clk_regs	= g3d_clk_regs,
6488c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(g3d_clk_regs),
6498c2ecf20Sopenharmony_ci};
6508c2ecf20Sopenharmony_ci
6518c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_g3d_init(struct device_node *np)
6528c2ecf20Sopenharmony_ci{
6538c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &g3d_cmu);
6548c2ecf20Sopenharmony_ci}
6558c2ecf20Sopenharmony_ci
6568c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_g3d, "samsung,exynos5260-clock-g3d",
6578c2ecf20Sopenharmony_ci		exynos5260_clk_g3d_init);
6588c2ecf20Sopenharmony_ci
6598c2ecf20Sopenharmony_ci
6608c2ecf20Sopenharmony_ci/* CMU_GSCL */
6618c2ecf20Sopenharmony_ci
6628c2ecf20Sopenharmony_cistatic const unsigned long gscl_clk_regs[] __initconst = {
6638c2ecf20Sopenharmony_ci	MUX_SEL_GSCL,
6648c2ecf20Sopenharmony_ci	DIV_GSCL,
6658c2ecf20Sopenharmony_ci	EN_ACLK_GSCL,
6668c2ecf20Sopenharmony_ci	EN_ACLK_GSCL_FIMC,
6678c2ecf20Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_GSCL0,
6688c2ecf20Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_GSCL1,
6698c2ecf20Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_MSCL0,
6708c2ecf20Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_MSCL1,
6718c2ecf20Sopenharmony_ci	EN_PCLK_GSCL,
6728c2ecf20Sopenharmony_ci	EN_PCLK_GSCL_FIMC,
6738c2ecf20Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_GSCL0,
6748c2ecf20Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_GSCL1,
6758c2ecf20Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_MSCL0,
6768c2ecf20Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_MSCL1,
6778c2ecf20Sopenharmony_ci	EN_SCLK_GSCL,
6788c2ecf20Sopenharmony_ci	EN_SCLK_GSCL_FIMC,
6798c2ecf20Sopenharmony_ci	EN_IP_GSCL,
6808c2ecf20Sopenharmony_ci	EN_IP_GSCL_FIMC,
6818c2ecf20Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_GSCL0,
6828c2ecf20Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_GSCL1,
6838c2ecf20Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_MSCL0,
6848c2ecf20Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_MSCL1,
6858c2ecf20Sopenharmony_ci};
6868c2ecf20Sopenharmony_ci
6878c2ecf20Sopenharmony_ciPNAME(mout_aclk_gscl_333_user_p) = {"fin_pll", "dout_aclk_gscl_333"};
6888c2ecf20Sopenharmony_ciPNAME(mout_aclk_m2m_400_user_p) = {"fin_pll", "dout_aclk_gscl_400"};
6898c2ecf20Sopenharmony_ciPNAME(mout_aclk_gscl_fimc_user_p) = {"fin_pll", "dout_aclk_gscl_400"};
6908c2ecf20Sopenharmony_ciPNAME(mout_aclk_csis_p) = {"dout_aclk_csis_200", "mout_aclk_gscl_fimc_user"};
6918c2ecf20Sopenharmony_ci
6928c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock gscl_mux_clks[] __initconst = {
6938c2ecf20Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_GSCL_333_USER, "mout_aclk_gscl_333_user",
6948c2ecf20Sopenharmony_ci			mout_aclk_gscl_333_user_p,
6958c2ecf20Sopenharmony_ci			MUX_SEL_GSCL, 0, 1),
6968c2ecf20Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_M2M_400_USER, "mout_aclk_m2m_400_user",
6978c2ecf20Sopenharmony_ci			mout_aclk_m2m_400_user_p,
6988c2ecf20Sopenharmony_ci			MUX_SEL_GSCL, 4, 1),
6998c2ecf20Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_GSCL_FIMC_USER, "mout_aclk_gscl_fimc_user",
7008c2ecf20Sopenharmony_ci			mout_aclk_gscl_fimc_user_p,
7018c2ecf20Sopenharmony_ci			MUX_SEL_GSCL, 8, 1),
7028c2ecf20Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_CSIS, "mout_aclk_csis", mout_aclk_csis_p,
7038c2ecf20Sopenharmony_ci			MUX_SEL_GSCL, 24, 1),
7048c2ecf20Sopenharmony_ci};
7058c2ecf20Sopenharmony_ci
7068c2ecf20Sopenharmony_cistatic const struct samsung_div_clock gscl_div_clks[] __initconst = {
7078c2ecf20Sopenharmony_ci	DIV(GSCL_DOUT_PCLK_M2M_100, "dout_pclk_m2m_100",
7088c2ecf20Sopenharmony_ci			"mout_aclk_m2m_400_user",
7098c2ecf20Sopenharmony_ci			DIV_GSCL, 0, 3),
7108c2ecf20Sopenharmony_ci	DIV(GSCL_DOUT_ACLK_CSIS_200, "dout_aclk_csis_200",
7118c2ecf20Sopenharmony_ci			"mout_aclk_m2m_400_user",
7128c2ecf20Sopenharmony_ci			DIV_GSCL, 4, 3),
7138c2ecf20Sopenharmony_ci};
7148c2ecf20Sopenharmony_ci
7158c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock gscl_gate_clks[] __initconst = {
7168c2ecf20Sopenharmony_ci	GATE(GSCL_SCLK_CSIS0_WRAP, "sclk_csis0_wrap", "dout_aclk_csis_200",
7178c2ecf20Sopenharmony_ci			EN_SCLK_GSCL_FIMC, 0, CLK_SET_RATE_PARENT, 0),
7188c2ecf20Sopenharmony_ci	GATE(GSCL_SCLK_CSIS1_WRAP, "sclk_csis1_wrap", "dout_aclk_csis_200",
7198c2ecf20Sopenharmony_ci			EN_SCLK_GSCL_FIMC, 1, CLK_SET_RATE_PARENT, 0),
7208c2ecf20Sopenharmony_ci
7218c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_GSCL0, "clk_gscl0", "mout_aclk_gscl_333_user",
7228c2ecf20Sopenharmony_ci			EN_IP_GSCL, 2, 0, 0),
7238c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_GSCL1, "clk_gscl1", "mout_aclk_gscl_333_user",
7248c2ecf20Sopenharmony_ci			EN_IP_GSCL, 3, 0, 0),
7258c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_MSCL0, "clk_mscl0", "mout_aclk_gscl_333_user",
7268c2ecf20Sopenharmony_ci			EN_IP_GSCL, 4, 0, 0),
7278c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_MSCL1, "clk_mscl1", "mout_aclk_gscl_333_user",
7288c2ecf20Sopenharmony_ci			EN_IP_GSCL, 5, 0, 0),
7298c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_PIXEL_GSCL0, "clk_pixel_gscl0",
7308c2ecf20Sopenharmony_ci			"mout_aclk_gscl_333_user",
7318c2ecf20Sopenharmony_ci			EN_IP_GSCL, 8, 0, 0),
7328c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_PIXEL_GSCL1, "clk_pixel_gscl1",
7338c2ecf20Sopenharmony_ci			"mout_aclk_gscl_333_user",
7348c2ecf20Sopenharmony_ci			EN_IP_GSCL, 9, 0, 0),
7358c2ecf20Sopenharmony_ci
7368c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_A, "clk_smmu3_lite_a",
7378c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7388c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 5, 0, 0),
7398c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_B, "clk_smmu3_lite_b",
7408c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7418c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 6, 0, 0),
7428c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_D, "clk_smmu3_lite_d",
7438c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7448c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 7, 0, 0),
7458c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_CSIS0, "clk_csis0", "mout_aclk_gscl_fimc_user",
7468c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 8, 0, 0),
7478c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_CSIS1, "clk_csis1", "mout_aclk_gscl_fimc_user",
7488c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 9, 0, 0),
7498c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_A, "clk_fimc_lite_a",
7508c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7518c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 10, 0, 0),
7528c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_B, "clk_fimc_lite_b",
7538c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7548c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 11, 0, 0),
7558c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_D, "clk_fimc_lite_d",
7568c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
7578c2ecf20Sopenharmony_ci			EN_IP_GSCL_FIMC, 12, 0, 0),
7588c2ecf20Sopenharmony_ci
7598c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_GSCL0, "clk_smmu3_gscl0",
7608c2ecf20Sopenharmony_ci			"mout_aclk_gscl_333_user",
7618c2ecf20Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_GSCL0, 17, 0, 0),
7628c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_GSCL1, "clk_smmu3_gscl1", "mout_aclk_gscl_333_user",
7638c2ecf20Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_GSCL1, 18, 0, 0),
7648c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_MSCL0, "clk_smmu3_mscl0",
7658c2ecf20Sopenharmony_ci			"mout_aclk_m2m_400_user",
7668c2ecf20Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_MSCL0, 19, 0, 0),
7678c2ecf20Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_MSCL1, "clk_smmu3_mscl1",
7688c2ecf20Sopenharmony_ci			"mout_aclk_m2m_400_user",
7698c2ecf20Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_MSCL1, 20, 0, 0),
7708c2ecf20Sopenharmony_ci};
7718c2ecf20Sopenharmony_ci
7728c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info gscl_cmu __initconst = {
7738c2ecf20Sopenharmony_ci	.mux_clks	= gscl_mux_clks,
7748c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(gscl_mux_clks),
7758c2ecf20Sopenharmony_ci	.div_clks	= gscl_div_clks,
7768c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(gscl_div_clks),
7778c2ecf20Sopenharmony_ci	.gate_clks	= gscl_gate_clks,
7788c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(gscl_gate_clks),
7798c2ecf20Sopenharmony_ci	.nr_clk_ids	= GSCL_NR_CLK,
7808c2ecf20Sopenharmony_ci	.clk_regs	= gscl_clk_regs,
7818c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(gscl_clk_regs),
7828c2ecf20Sopenharmony_ci};
7838c2ecf20Sopenharmony_ci
7848c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_gscl_init(struct device_node *np)
7858c2ecf20Sopenharmony_ci{
7868c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &gscl_cmu);
7878c2ecf20Sopenharmony_ci}
7888c2ecf20Sopenharmony_ci
7898c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_gscl, "samsung,exynos5260-clock-gscl",
7908c2ecf20Sopenharmony_ci		exynos5260_clk_gscl_init);
7918c2ecf20Sopenharmony_ci
7928c2ecf20Sopenharmony_ci
7938c2ecf20Sopenharmony_ci/* CMU_ISP */
7948c2ecf20Sopenharmony_ci
7958c2ecf20Sopenharmony_cistatic const unsigned long isp_clk_regs[] __initconst = {
7968c2ecf20Sopenharmony_ci	MUX_SEL_ISP0,
7978c2ecf20Sopenharmony_ci	MUX_SEL_ISP1,
7988c2ecf20Sopenharmony_ci	DIV_ISP,
7998c2ecf20Sopenharmony_ci	EN_ACLK_ISP0,
8008c2ecf20Sopenharmony_ci	EN_ACLK_ISP1,
8018c2ecf20Sopenharmony_ci	EN_PCLK_ISP0,
8028c2ecf20Sopenharmony_ci	EN_PCLK_ISP1,
8038c2ecf20Sopenharmony_ci	EN_SCLK_ISP,
8048c2ecf20Sopenharmony_ci	EN_IP_ISP0,
8058c2ecf20Sopenharmony_ci	EN_IP_ISP1,
8068c2ecf20Sopenharmony_ci};
8078c2ecf20Sopenharmony_ci
8088c2ecf20Sopenharmony_ciPNAME(mout_isp_400_user_p) = {"fin_pll", "dout_aclk_isp1_400"};
8098c2ecf20Sopenharmony_ciPNAME(mout_isp_266_user_p)	 = {"fin_pll", "dout_aclk_isp1_266"};
8108c2ecf20Sopenharmony_ci
8118c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock isp_mux_clks[] __initconst = {
8128c2ecf20Sopenharmony_ci	MUX(ISP_MOUT_ISP_266_USER, "mout_isp_266_user", mout_isp_266_user_p,
8138c2ecf20Sopenharmony_ci			MUX_SEL_ISP0, 0, 1),
8148c2ecf20Sopenharmony_ci	MUX(ISP_MOUT_ISP_400_USER, "mout_isp_400_user", mout_isp_400_user_p,
8158c2ecf20Sopenharmony_ci			MUX_SEL_ISP0, 4, 1),
8168c2ecf20Sopenharmony_ci};
8178c2ecf20Sopenharmony_ci
8188c2ecf20Sopenharmony_cistatic const struct samsung_div_clock isp_div_clks[] __initconst = {
8198c2ecf20Sopenharmony_ci	DIV(ISP_DOUT_PCLK_ISP_66, "dout_pclk_isp_66", "mout_kfc",
8208c2ecf20Sopenharmony_ci			DIV_ISP, 0, 3),
8218c2ecf20Sopenharmony_ci	DIV(ISP_DOUT_PCLK_ISP_133, "dout_pclk_isp_133", "mout_kfc",
8228c2ecf20Sopenharmony_ci			DIV_ISP, 4, 4),
8238c2ecf20Sopenharmony_ci	DIV(ISP_DOUT_CA5_ATCLKIN, "dout_ca5_atclkin", "mout_kfc",
8248c2ecf20Sopenharmony_ci			DIV_ISP, 12, 3),
8258c2ecf20Sopenharmony_ci	DIV(ISP_DOUT_CA5_PCLKDBG, "dout_ca5_pclkdbg", "mout_kfc",
8268c2ecf20Sopenharmony_ci			DIV_ISP, 16, 4),
8278c2ecf20Sopenharmony_ci	DIV(ISP_DOUT_SCLK_MPWM, "dout_sclk_mpwm", "mout_kfc", DIV_ISP, 20, 2),
8288c2ecf20Sopenharmony_ci};
8298c2ecf20Sopenharmony_ci
8308c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock isp_gate_clks[] __initconst = {
8318c2ecf20Sopenharmony_ci	GATE(ISP_CLK_GIC, "clk_isp_gic", "mout_aclk_isp1_266",
8328c2ecf20Sopenharmony_ci			EN_IP_ISP0, 15, 0, 0),
8338c2ecf20Sopenharmony_ci
8348c2ecf20Sopenharmony_ci	GATE(ISP_CLK_CA5, "clk_isp_ca5", "mout_aclk_isp1_266",
8358c2ecf20Sopenharmony_ci			EN_IP_ISP1, 1, 0, 0),
8368c2ecf20Sopenharmony_ci	GATE(ISP_CLK_FIMC_DRC, "clk_isp_fimc_drc", "mout_aclk_isp1_266",
8378c2ecf20Sopenharmony_ci			EN_IP_ISP1, 2, 0, 0),
8388c2ecf20Sopenharmony_ci	GATE(ISP_CLK_FIMC_FD, "clk_isp_fimc_fd", "mout_aclk_isp1_266",
8398c2ecf20Sopenharmony_ci			EN_IP_ISP1, 3, 0, 0),
8408c2ecf20Sopenharmony_ci	GATE(ISP_CLK_FIMC, "clk_isp_fimc", "mout_aclk_isp1_266",
8418c2ecf20Sopenharmony_ci			EN_IP_ISP1, 4, 0, 0),
8428c2ecf20Sopenharmony_ci	GATE(ISP_CLK_FIMC_SCALERC, "clk_isp_fimc_scalerc",
8438c2ecf20Sopenharmony_ci			"mout_aclk_isp1_266",
8448c2ecf20Sopenharmony_ci			EN_IP_ISP1, 5, 0, 0),
8458c2ecf20Sopenharmony_ci	GATE(ISP_CLK_FIMC_SCALERP, "clk_isp_fimc_scalerp",
8468c2ecf20Sopenharmony_ci			"mout_aclk_isp1_266",
8478c2ecf20Sopenharmony_ci			EN_IP_ISP1, 6, 0, 0),
8488c2ecf20Sopenharmony_ci	GATE(ISP_CLK_I2C0, "clk_isp_i2c0", "mout_aclk_isp1_266",
8498c2ecf20Sopenharmony_ci			EN_IP_ISP1, 7, 0, 0),
8508c2ecf20Sopenharmony_ci	GATE(ISP_CLK_I2C1, "clk_isp_i2c1", "mout_aclk_isp1_266",
8518c2ecf20Sopenharmony_ci			EN_IP_ISP1, 8, 0, 0),
8528c2ecf20Sopenharmony_ci	GATE(ISP_CLK_MCUCTL, "clk_isp_mcuctl", "mout_aclk_isp1_266",
8538c2ecf20Sopenharmony_ci			EN_IP_ISP1, 9, 0, 0),
8548c2ecf20Sopenharmony_ci	GATE(ISP_CLK_MPWM, "clk_isp_mpwm", "mout_aclk_isp1_266",
8558c2ecf20Sopenharmony_ci			EN_IP_ISP1, 10, 0, 0),
8568c2ecf20Sopenharmony_ci	GATE(ISP_CLK_MTCADC, "clk_isp_mtcadc", "mout_aclk_isp1_266",
8578c2ecf20Sopenharmony_ci			EN_IP_ISP1, 11, 0, 0),
8588c2ecf20Sopenharmony_ci	GATE(ISP_CLK_PWM, "clk_isp_pwm", "mout_aclk_isp1_266",
8598c2ecf20Sopenharmony_ci			EN_IP_ISP1, 14, 0, 0),
8608c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_DRC, "clk_smmu_drc", "mout_aclk_isp1_266",
8618c2ecf20Sopenharmony_ci			EN_IP_ISP1, 21, 0, 0),
8628c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_FD, "clk_smmu_fd", "mout_aclk_isp1_266",
8638c2ecf20Sopenharmony_ci			EN_IP_ISP1, 22, 0, 0),
8648c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_ISP, "clk_smmu_isp", "mout_aclk_isp1_266",
8658c2ecf20Sopenharmony_ci			EN_IP_ISP1, 23, 0, 0),
8668c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_ISPCX, "clk_smmu_ispcx", "mout_aclk_isp1_266",
8678c2ecf20Sopenharmony_ci			EN_IP_ISP1, 24, 0, 0),
8688c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_SCALERC, "clk_isp_smmu_scalerc",
8698c2ecf20Sopenharmony_ci			"mout_aclk_isp1_266",
8708c2ecf20Sopenharmony_ci			EN_IP_ISP1, 25, 0, 0),
8718c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SMMU_SCALERP, "clk_isp_smmu_scalerp",
8728c2ecf20Sopenharmony_ci			"mout_aclk_isp1_266",
8738c2ecf20Sopenharmony_ci			EN_IP_ISP1, 26, 0, 0),
8748c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SPI0, "clk_isp_spi0", "mout_aclk_isp1_266",
8758c2ecf20Sopenharmony_ci			EN_IP_ISP1, 27, 0, 0),
8768c2ecf20Sopenharmony_ci	GATE(ISP_CLK_SPI1, "clk_isp_spi1", "mout_aclk_isp1_266",
8778c2ecf20Sopenharmony_ci			EN_IP_ISP1, 28, 0, 0),
8788c2ecf20Sopenharmony_ci	GATE(ISP_CLK_WDT, "clk_isp_wdt", "mout_aclk_isp1_266",
8798c2ecf20Sopenharmony_ci			EN_IP_ISP1, 31, 0, 0),
8808c2ecf20Sopenharmony_ci	GATE(ISP_CLK_UART, "clk_isp_uart", "mout_aclk_isp1_266",
8818c2ecf20Sopenharmony_ci			EN_IP_ISP1, 30, 0, 0),
8828c2ecf20Sopenharmony_ci
8838c2ecf20Sopenharmony_ci	GATE(ISP_SCLK_UART_EXT, "sclk_isp_uart_ext", "fin_pll",
8848c2ecf20Sopenharmony_ci			EN_SCLK_ISP, 7, CLK_SET_RATE_PARENT, 0),
8858c2ecf20Sopenharmony_ci	GATE(ISP_SCLK_SPI1_EXT, "sclk_isp_spi1_ext", "fin_pll",
8868c2ecf20Sopenharmony_ci			EN_SCLK_ISP, 8, CLK_SET_RATE_PARENT, 0),
8878c2ecf20Sopenharmony_ci	GATE(ISP_SCLK_SPI0_EXT, "sclk_isp_spi0_ext", "fin_pll",
8888c2ecf20Sopenharmony_ci			EN_SCLK_ISP, 9, CLK_SET_RATE_PARENT, 0),
8898c2ecf20Sopenharmony_ci};
8908c2ecf20Sopenharmony_ci
8918c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info isp_cmu __initconst = {
8928c2ecf20Sopenharmony_ci	.mux_clks	= isp_mux_clks,
8938c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(isp_mux_clks),
8948c2ecf20Sopenharmony_ci	.div_clks	= isp_div_clks,
8958c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(isp_div_clks),
8968c2ecf20Sopenharmony_ci	.gate_clks	= isp_gate_clks,
8978c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(isp_gate_clks),
8988c2ecf20Sopenharmony_ci	.nr_clk_ids	= ISP_NR_CLK,
8998c2ecf20Sopenharmony_ci	.clk_regs	= isp_clk_regs,
9008c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(isp_clk_regs),
9018c2ecf20Sopenharmony_ci};
9028c2ecf20Sopenharmony_ci
9038c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_isp_init(struct device_node *np)
9048c2ecf20Sopenharmony_ci{
9058c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &isp_cmu);
9068c2ecf20Sopenharmony_ci}
9078c2ecf20Sopenharmony_ci
9088c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_isp, "samsung,exynos5260-clock-isp",
9098c2ecf20Sopenharmony_ci		exynos5260_clk_isp_init);
9108c2ecf20Sopenharmony_ci
9118c2ecf20Sopenharmony_ci
9128c2ecf20Sopenharmony_ci/* CMU_KFC */
9138c2ecf20Sopenharmony_ci
9148c2ecf20Sopenharmony_cistatic const unsigned long kfc_clk_regs[] __initconst = {
9158c2ecf20Sopenharmony_ci	KFC_PLL_LOCK,
9168c2ecf20Sopenharmony_ci	KFC_PLL_CON0,
9178c2ecf20Sopenharmony_ci	KFC_PLL_CON1,
9188c2ecf20Sopenharmony_ci	KFC_PLL_FDET,
9198c2ecf20Sopenharmony_ci	MUX_SEL_KFC0,
9208c2ecf20Sopenharmony_ci	MUX_SEL_KFC2,
9218c2ecf20Sopenharmony_ci	DIV_KFC,
9228c2ecf20Sopenharmony_ci	DIV_KFC_PLL_FDET,
9238c2ecf20Sopenharmony_ci	EN_ACLK_KFC,
9248c2ecf20Sopenharmony_ci	EN_PCLK_KFC,
9258c2ecf20Sopenharmony_ci	EN_SCLK_KFC,
9268c2ecf20Sopenharmony_ci	EN_IP_KFC,
9278c2ecf20Sopenharmony_ci};
9288c2ecf20Sopenharmony_ci
9298c2ecf20Sopenharmony_ciPNAME(mout_kfc_pll_p) = {"fin_pll", "fout_kfc_pll"};
9308c2ecf20Sopenharmony_ciPNAME(mout_kfc_p)	 = {"mout_kfc_pll", "dout_media_pll"};
9318c2ecf20Sopenharmony_ci
9328c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock kfc_mux_clks[] __initconst = {
9338c2ecf20Sopenharmony_ci	MUX(KFC_MOUT_KFC_PLL, "mout_kfc_pll", mout_kfc_pll_p,
9348c2ecf20Sopenharmony_ci			MUX_SEL_KFC0, 0, 1),
9358c2ecf20Sopenharmony_ci	MUX(KFC_MOUT_KFC, "mout_kfc", mout_kfc_p, MUX_SEL_KFC2, 0, 1),
9368c2ecf20Sopenharmony_ci};
9378c2ecf20Sopenharmony_ci
9388c2ecf20Sopenharmony_cistatic const struct samsung_div_clock kfc_div_clks[] __initconst = {
9398c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_KFC1, "dout_kfc1", "mout_kfc", DIV_KFC, 0, 3),
9408c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_KFC2, "dout_kfc2", "dout_kfc1", DIV_KFC, 4, 3),
9418c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_KFC_ATCLK, "dout_kfc_atclk", "dout_kfc2", DIV_KFC, 8, 3),
9428c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_KFC_PCLK_DBG, "dout_kfc_pclk_dbg", "dout_kfc2",
9438c2ecf20Sopenharmony_ci			DIV_KFC, 12, 3),
9448c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_ACLK_KFC, "dout_aclk_kfc", "dout_kfc2", DIV_KFC, 16, 3),
9458c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_PCLK_KFC, "dout_pclk_kfc", "dout_kfc2", DIV_KFC, 20, 3),
9468c2ecf20Sopenharmony_ci	DIV(KFC_DOUT_KFC_PLL, "dout_kfc_pll", "mout_kfc", DIV_KFC, 24, 3),
9478c2ecf20Sopenharmony_ci};
9488c2ecf20Sopenharmony_ci
9498c2ecf20Sopenharmony_cistatic const struct samsung_pll_clock kfc_pll_clks[] __initconst = {
9508c2ecf20Sopenharmony_ci	PLL(pll_2550xx, KFC_FOUT_KFC_PLL, "fout_kfc_pll", "fin_pll",
9518c2ecf20Sopenharmony_ci		KFC_PLL_LOCK, KFC_PLL_CON0,
9528c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
9538c2ecf20Sopenharmony_ci};
9548c2ecf20Sopenharmony_ci
9558c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info kfc_cmu __initconst = {
9568c2ecf20Sopenharmony_ci	.pll_clks	= kfc_pll_clks,
9578c2ecf20Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(kfc_pll_clks),
9588c2ecf20Sopenharmony_ci	.mux_clks	= kfc_mux_clks,
9598c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(kfc_mux_clks),
9608c2ecf20Sopenharmony_ci	.div_clks	= kfc_div_clks,
9618c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(kfc_div_clks),
9628c2ecf20Sopenharmony_ci	.nr_clk_ids	= KFC_NR_CLK,
9638c2ecf20Sopenharmony_ci	.clk_regs	= kfc_clk_regs,
9648c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(kfc_clk_regs),
9658c2ecf20Sopenharmony_ci};
9668c2ecf20Sopenharmony_ci
9678c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_kfc_init(struct device_node *np)
9688c2ecf20Sopenharmony_ci{
9698c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &kfc_cmu);
9708c2ecf20Sopenharmony_ci}
9718c2ecf20Sopenharmony_ci
9728c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_kfc, "samsung,exynos5260-clock-kfc",
9738c2ecf20Sopenharmony_ci		exynos5260_clk_kfc_init);
9748c2ecf20Sopenharmony_ci
9758c2ecf20Sopenharmony_ci
9768c2ecf20Sopenharmony_ci/* CMU_MFC */
9778c2ecf20Sopenharmony_ci
9788c2ecf20Sopenharmony_cistatic const unsigned long mfc_clk_regs[] __initconst = {
9798c2ecf20Sopenharmony_ci	MUX_SEL_MFC,
9808c2ecf20Sopenharmony_ci	DIV_MFC,
9818c2ecf20Sopenharmony_ci	EN_ACLK_MFC,
9828c2ecf20Sopenharmony_ci	EN_ACLK_SECURE_SMMU2_MFC,
9838c2ecf20Sopenharmony_ci	EN_PCLK_MFC,
9848c2ecf20Sopenharmony_ci	EN_PCLK_SECURE_SMMU2_MFC,
9858c2ecf20Sopenharmony_ci	EN_IP_MFC,
9868c2ecf20Sopenharmony_ci	EN_IP_MFC_SECURE_SMMU2_MFC,
9878c2ecf20Sopenharmony_ci};
9888c2ecf20Sopenharmony_ci
9898c2ecf20Sopenharmony_ciPNAME(mout_aclk_mfc_333_user_p) = {"fin_pll", "dout_aclk_mfc_333"};
9908c2ecf20Sopenharmony_ci
9918c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock mfc_mux_clks[] __initconst = {
9928c2ecf20Sopenharmony_ci	MUX(MFC_MOUT_ACLK_MFC_333_USER, "mout_aclk_mfc_333_user",
9938c2ecf20Sopenharmony_ci			mout_aclk_mfc_333_user_p,
9948c2ecf20Sopenharmony_ci			MUX_SEL_MFC, 0, 1),
9958c2ecf20Sopenharmony_ci};
9968c2ecf20Sopenharmony_ci
9978c2ecf20Sopenharmony_cistatic const struct samsung_div_clock mfc_div_clks[] __initconst = {
9988c2ecf20Sopenharmony_ci	DIV(MFC_DOUT_PCLK_MFC_83, "dout_pclk_mfc_83", "mout_aclk_mfc_333_user",
9998c2ecf20Sopenharmony_ci			DIV_MFC, 0, 3),
10008c2ecf20Sopenharmony_ci};
10018c2ecf20Sopenharmony_ci
10028c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock mfc_gate_clks[] __initconst = {
10038c2ecf20Sopenharmony_ci	GATE(MFC_CLK_MFC, "clk_mfc", "mout_aclk_mfc_333_user",
10048c2ecf20Sopenharmony_ci			EN_IP_MFC, 1, 0, 0),
10058c2ecf20Sopenharmony_ci	GATE(MFC_CLK_SMMU2_MFCM0, "clk_smmu2_mfcm0", "mout_aclk_mfc_333_user",
10068c2ecf20Sopenharmony_ci			EN_IP_MFC_SECURE_SMMU2_MFC, 6, 0, 0),
10078c2ecf20Sopenharmony_ci	GATE(MFC_CLK_SMMU2_MFCM1, "clk_smmu2_mfcm1", "mout_aclk_mfc_333_user",
10088c2ecf20Sopenharmony_ci			EN_IP_MFC_SECURE_SMMU2_MFC, 7, 0, 0),
10098c2ecf20Sopenharmony_ci};
10108c2ecf20Sopenharmony_ci
10118c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info mfc_cmu __initconst = {
10128c2ecf20Sopenharmony_ci	.mux_clks	= mfc_mux_clks,
10138c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(mfc_mux_clks),
10148c2ecf20Sopenharmony_ci	.div_clks	= mfc_div_clks,
10158c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(mfc_div_clks),
10168c2ecf20Sopenharmony_ci	.gate_clks	= mfc_gate_clks,
10178c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(mfc_gate_clks),
10188c2ecf20Sopenharmony_ci	.nr_clk_ids	= MFC_NR_CLK,
10198c2ecf20Sopenharmony_ci	.clk_regs	= mfc_clk_regs,
10208c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(mfc_clk_regs),
10218c2ecf20Sopenharmony_ci};
10228c2ecf20Sopenharmony_ci
10238c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_mfc_init(struct device_node *np)
10248c2ecf20Sopenharmony_ci{
10258c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &mfc_cmu);
10268c2ecf20Sopenharmony_ci}
10278c2ecf20Sopenharmony_ci
10288c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_mfc, "samsung,exynos5260-clock-mfc",
10298c2ecf20Sopenharmony_ci		exynos5260_clk_mfc_init);
10308c2ecf20Sopenharmony_ci
10318c2ecf20Sopenharmony_ci
10328c2ecf20Sopenharmony_ci/* CMU_MIF */
10338c2ecf20Sopenharmony_ci
10348c2ecf20Sopenharmony_cistatic const unsigned long mif_clk_regs[] __initconst = {
10358c2ecf20Sopenharmony_ci	MEM_PLL_LOCK,
10368c2ecf20Sopenharmony_ci	BUS_PLL_LOCK,
10378c2ecf20Sopenharmony_ci	MEDIA_PLL_LOCK,
10388c2ecf20Sopenharmony_ci	MEM_PLL_CON0,
10398c2ecf20Sopenharmony_ci	MEM_PLL_CON1,
10408c2ecf20Sopenharmony_ci	MEM_PLL_FDET,
10418c2ecf20Sopenharmony_ci	BUS_PLL_CON0,
10428c2ecf20Sopenharmony_ci	BUS_PLL_CON1,
10438c2ecf20Sopenharmony_ci	BUS_PLL_FDET,
10448c2ecf20Sopenharmony_ci	MEDIA_PLL_CON0,
10458c2ecf20Sopenharmony_ci	MEDIA_PLL_CON1,
10468c2ecf20Sopenharmony_ci	MEDIA_PLL_FDET,
10478c2ecf20Sopenharmony_ci	MUX_SEL_MIF,
10488c2ecf20Sopenharmony_ci	DIV_MIF,
10498c2ecf20Sopenharmony_ci	DIV_MIF_PLL_FDET,
10508c2ecf20Sopenharmony_ci	EN_ACLK_MIF,
10518c2ecf20Sopenharmony_ci	EN_ACLK_MIF_SECURE_DREX1_TZ,
10528c2ecf20Sopenharmony_ci	EN_ACLK_MIF_SECURE_DREX0_TZ,
10538c2ecf20Sopenharmony_ci	EN_ACLK_MIF_SECURE_INTMEM,
10548c2ecf20Sopenharmony_ci	EN_PCLK_MIF,
10558c2ecf20Sopenharmony_ci	EN_PCLK_MIF_SECURE_MONOCNT,
10568c2ecf20Sopenharmony_ci	EN_PCLK_MIF_SECURE_RTC_APBIF,
10578c2ecf20Sopenharmony_ci	EN_PCLK_MIF_SECURE_DREX1_TZ,
10588c2ecf20Sopenharmony_ci	EN_PCLK_MIF_SECURE_DREX0_TZ,
10598c2ecf20Sopenharmony_ci	EN_SCLK_MIF,
10608c2ecf20Sopenharmony_ci	EN_IP_MIF,
10618c2ecf20Sopenharmony_ci	EN_IP_MIF_SECURE_MONOCNT,
10628c2ecf20Sopenharmony_ci	EN_IP_MIF_SECURE_RTC_APBIF,
10638c2ecf20Sopenharmony_ci	EN_IP_MIF_SECURE_DREX1_TZ,
10648c2ecf20Sopenharmony_ci	EN_IP_MIF_SECURE_DREX0_TZ,
10658c2ecf20Sopenharmony_ci	EN_IP_MIF_SECURE_INTEMEM,
10668c2ecf20Sopenharmony_ci};
10678c2ecf20Sopenharmony_ci
10688c2ecf20Sopenharmony_ciPNAME(mout_mem_pll_p) = {"fin_pll", "fout_mem_pll"};
10698c2ecf20Sopenharmony_ciPNAME(mout_bus_pll_p) = {"fin_pll", "fout_bus_pll"};
10708c2ecf20Sopenharmony_ciPNAME(mout_media_pll_p) = {"fin_pll", "fout_media_pll"};
10718c2ecf20Sopenharmony_ciPNAME(mout_mif_drex_p) = {"dout_mem_pll", "dout_bus_pll"};
10728c2ecf20Sopenharmony_ciPNAME(mout_mif_drex2x_p) = {"dout_mem_pll", "dout_bus_pll"};
10738c2ecf20Sopenharmony_ciPNAME(mout_clkm_phy_p) = {"mout_mif_drex", "dout_media_pll"};
10748c2ecf20Sopenharmony_ciPNAME(mout_clk2x_phy_p) = {"mout_mif_drex2x", "dout_media_pll"};
10758c2ecf20Sopenharmony_ci
10768c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock mif_mux_clks[] __initconst = {
10778c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_MEM_PLL, "mout_mem_pll", mout_mem_pll_p,
10788c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 0, 1),
10798c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_BUS_PLL, "mout_bus_pll", mout_bus_pll_p,
10808c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 4, 1),
10818c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_MEDIA_PLL, "mout_media_pll", mout_media_pll_p,
10828c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 8, 1),
10838c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_MIF_DREX, "mout_mif_drex", mout_mif_drex_p,
10848c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 12, 1),
10858c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_CLKM_PHY, "mout_clkm_phy", mout_clkm_phy_p,
10868c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 16, 1),
10878c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_MIF_DREX2X, "mout_mif_drex2x", mout_mif_drex2x_p,
10888c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 20, 1),
10898c2ecf20Sopenharmony_ci	MUX(MIF_MOUT_CLK2X_PHY, "mout_clk2x_phy", mout_clk2x_phy_p,
10908c2ecf20Sopenharmony_ci			MUX_SEL_MIF, 24, 1),
10918c2ecf20Sopenharmony_ci};
10928c2ecf20Sopenharmony_ci
10938c2ecf20Sopenharmony_cistatic const struct samsung_div_clock mif_div_clks[] __initconst = {
10948c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_MEDIA_PLL, "dout_media_pll", "mout_media_pll",
10958c2ecf20Sopenharmony_ci			DIV_MIF, 0, 3),
10968c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_MEM_PLL, "dout_mem_pll", "mout_mem_pll",
10978c2ecf20Sopenharmony_ci			DIV_MIF, 4, 3),
10988c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_BUS_PLL, "dout_bus_pll", "mout_bus_pll",
10998c2ecf20Sopenharmony_ci			DIV_MIF, 8, 3),
11008c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_CLKM_PHY, "dout_clkm_phy", "mout_clkm_phy",
11018c2ecf20Sopenharmony_ci			DIV_MIF, 12, 3),
11028c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_CLK2X_PHY, "dout_clk2x_phy", "mout_clk2x_phy",
11038c2ecf20Sopenharmony_ci			DIV_MIF, 16, 4),
11048c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_ACLK_MIF_466, "dout_aclk_mif_466", "dout_clk2x_phy",
11058c2ecf20Sopenharmony_ci			DIV_MIF, 20, 3),
11068c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_ACLK_BUS_200, "dout_aclk_bus_200", "dout_bus_pll",
11078c2ecf20Sopenharmony_ci			DIV_MIF, 24, 3),
11088c2ecf20Sopenharmony_ci	DIV(MIF_DOUT_ACLK_BUS_100, "dout_aclk_bus_100", "dout_bus_pll",
11098c2ecf20Sopenharmony_ci			DIV_MIF, 28, 4),
11108c2ecf20Sopenharmony_ci};
11118c2ecf20Sopenharmony_ci
11128c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock mif_gate_clks[] __initconst = {
11138c2ecf20Sopenharmony_ci	GATE(MIF_CLK_LPDDR3PHY_WRAP0, "clk_lpddr3phy_wrap0", "dout_clk2x_phy",
11148c2ecf20Sopenharmony_ci			EN_IP_MIF, 12, CLK_IGNORE_UNUSED, 0),
11158c2ecf20Sopenharmony_ci	GATE(MIF_CLK_LPDDR3PHY_WRAP1, "clk_lpddr3phy_wrap1", "dout_clk2x_phy",
11168c2ecf20Sopenharmony_ci			EN_IP_MIF, 13, CLK_IGNORE_UNUSED, 0),
11178c2ecf20Sopenharmony_ci
11188c2ecf20Sopenharmony_ci	GATE(MIF_CLK_MONOCNT, "clk_monocnt", "dout_aclk_bus_100",
11198c2ecf20Sopenharmony_ci			EN_IP_MIF_SECURE_MONOCNT, 22,
11208c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
11218c2ecf20Sopenharmony_ci
11228c2ecf20Sopenharmony_ci	GATE(MIF_CLK_MIF_RTC, "clk_mif_rtc", "dout_aclk_bus_100",
11238c2ecf20Sopenharmony_ci			EN_IP_MIF_SECURE_RTC_APBIF, 23,
11248c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
11258c2ecf20Sopenharmony_ci
11268c2ecf20Sopenharmony_ci	GATE(MIF_CLK_DREX1, "clk_drex1", "dout_aclk_mif_466",
11278c2ecf20Sopenharmony_ci			EN_IP_MIF_SECURE_DREX1_TZ, 9,
11288c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
11298c2ecf20Sopenharmony_ci
11308c2ecf20Sopenharmony_ci	GATE(MIF_CLK_DREX0, "clk_drex0", "dout_aclk_mif_466",
11318c2ecf20Sopenharmony_ci			EN_IP_MIF_SECURE_DREX0_TZ, 9,
11328c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
11338c2ecf20Sopenharmony_ci
11348c2ecf20Sopenharmony_ci	GATE(MIF_CLK_INTMEM, "clk_intmem", "dout_aclk_bus_200",
11358c2ecf20Sopenharmony_ci			EN_IP_MIF_SECURE_INTEMEM, 11,
11368c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
11378c2ecf20Sopenharmony_ci
11388c2ecf20Sopenharmony_ci	GATE(MIF_SCLK_LPDDR3PHY_WRAP_U0, "sclk_lpddr3phy_wrap_u0",
11398c2ecf20Sopenharmony_ci			"dout_clkm_phy", EN_SCLK_MIF, 0,
11408c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
11418c2ecf20Sopenharmony_ci	GATE(MIF_SCLK_LPDDR3PHY_WRAP_U1, "sclk_lpddr3phy_wrap_u1",
11428c2ecf20Sopenharmony_ci			"dout_clkm_phy", EN_SCLK_MIF, 1,
11438c2ecf20Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
11448c2ecf20Sopenharmony_ci};
11458c2ecf20Sopenharmony_ci
11468c2ecf20Sopenharmony_cistatic const struct samsung_pll_clock mif_pll_clks[] __initconst = {
11478c2ecf20Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_MEM_PLL, "fout_mem_pll", "fin_pll",
11488c2ecf20Sopenharmony_ci		MEM_PLL_LOCK, MEM_PLL_CON0,
11498c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
11508c2ecf20Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_BUS_PLL, "fout_bus_pll", "fin_pll",
11518c2ecf20Sopenharmony_ci		BUS_PLL_LOCK, BUS_PLL_CON0,
11528c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
11538c2ecf20Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_MEDIA_PLL, "fout_media_pll", "fin_pll",
11548c2ecf20Sopenharmony_ci		MEDIA_PLL_LOCK, MEDIA_PLL_CON0,
11558c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
11568c2ecf20Sopenharmony_ci};
11578c2ecf20Sopenharmony_ci
11588c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info mif_cmu __initconst = {
11598c2ecf20Sopenharmony_ci	.pll_clks	= mif_pll_clks,
11608c2ecf20Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(mif_pll_clks),
11618c2ecf20Sopenharmony_ci	.mux_clks	= mif_mux_clks,
11628c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(mif_mux_clks),
11638c2ecf20Sopenharmony_ci	.div_clks	= mif_div_clks,
11648c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(mif_div_clks),
11658c2ecf20Sopenharmony_ci	.gate_clks	= mif_gate_clks,
11668c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(mif_gate_clks),
11678c2ecf20Sopenharmony_ci	.nr_clk_ids	= MIF_NR_CLK,
11688c2ecf20Sopenharmony_ci	.clk_regs	= mif_clk_regs,
11698c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(mif_clk_regs),
11708c2ecf20Sopenharmony_ci};
11718c2ecf20Sopenharmony_ci
11728c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_mif_init(struct device_node *np)
11738c2ecf20Sopenharmony_ci{
11748c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &mif_cmu);
11758c2ecf20Sopenharmony_ci}
11768c2ecf20Sopenharmony_ci
11778c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_mif, "samsung,exynos5260-clock-mif",
11788c2ecf20Sopenharmony_ci		exynos5260_clk_mif_init);
11798c2ecf20Sopenharmony_ci
11808c2ecf20Sopenharmony_ci
11818c2ecf20Sopenharmony_ci/* CMU_PERI */
11828c2ecf20Sopenharmony_ci
11838c2ecf20Sopenharmony_cistatic const unsigned long peri_clk_regs[] __initconst = {
11848c2ecf20Sopenharmony_ci	MUX_SEL_PERI,
11858c2ecf20Sopenharmony_ci	MUX_SEL_PERI1,
11868c2ecf20Sopenharmony_ci	DIV_PERI,
11878c2ecf20Sopenharmony_ci	EN_PCLK_PERI0,
11888c2ecf20Sopenharmony_ci	EN_PCLK_PERI1,
11898c2ecf20Sopenharmony_ci	EN_PCLK_PERI2,
11908c2ecf20Sopenharmony_ci	EN_PCLK_PERI3,
11918c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_CHIPID,
11928c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_PROVKEY0,
11938c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_PROVKEY1,
11948c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_SECKEY,
11958c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_ANTIRBKCNT,
11968c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_TOP_RTC,
11978c2ecf20Sopenharmony_ci	EN_PCLK_PERI_SECURE_TZPC,
11988c2ecf20Sopenharmony_ci	EN_SCLK_PERI,
11998c2ecf20Sopenharmony_ci	EN_SCLK_PERI_SECURE_TOP_RTC,
12008c2ecf20Sopenharmony_ci	EN_IP_PERI0,
12018c2ecf20Sopenharmony_ci	EN_IP_PERI1,
12028c2ecf20Sopenharmony_ci	EN_IP_PERI2,
12038c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_CHIPID,
12048c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_PROVKEY0,
12058c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_PROVKEY1,
12068c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_SECKEY,
12078c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_ANTIRBKCNT,
12088c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_TOP_RTC,
12098c2ecf20Sopenharmony_ci	EN_IP_PERI_SECURE_TZPC,
12108c2ecf20Sopenharmony_ci};
12118c2ecf20Sopenharmony_ci
12128c2ecf20Sopenharmony_ciPNAME(mout_sclk_pcm_p) = {"ioclk_pcm_extclk", "fin_pll", "dout_aclk_peri_aud",
12138c2ecf20Sopenharmony_ci			"phyclk_hdmi_phy_ref_cko"};
12148c2ecf20Sopenharmony_ciPNAME(mout_sclk_i2scod_p) = {"ioclk_i2s_cdclk", "fin_pll", "dout_aclk_peri_aud",
12158c2ecf20Sopenharmony_ci			"phyclk_hdmi_phy_ref_cko"};
12168c2ecf20Sopenharmony_ciPNAME(mout_sclk_spdif_p) = {"ioclk_spdif_extclk", "fin_pll",
12178c2ecf20Sopenharmony_ci			"dout_aclk_peri_aud", "phyclk_hdmi_phy_ref_cko"};
12188c2ecf20Sopenharmony_ci
12198c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock peri_mux_clks[] __initconst = {
12208c2ecf20Sopenharmony_ci	MUX(PERI_MOUT_SCLK_PCM, "mout_sclk_pcm", mout_sclk_pcm_p,
12218c2ecf20Sopenharmony_ci			MUX_SEL_PERI1, 4, 2),
12228c2ecf20Sopenharmony_ci	MUX(PERI_MOUT_SCLK_I2SCOD, "mout_sclk_i2scod", mout_sclk_i2scod_p,
12238c2ecf20Sopenharmony_ci			MUX_SEL_PERI1, 12, 2),
12248c2ecf20Sopenharmony_ci	MUX(PERI_MOUT_SCLK_SPDIF, "mout_sclk_spdif", mout_sclk_spdif_p,
12258c2ecf20Sopenharmony_ci			MUX_SEL_PERI1, 20, 2),
12268c2ecf20Sopenharmony_ci};
12278c2ecf20Sopenharmony_ci
12288c2ecf20Sopenharmony_cistatic const struct samsung_div_clock peri_div_clks[] __initconst = {
12298c2ecf20Sopenharmony_ci	DIV(PERI_DOUT_PCM, "dout_pcm", "mout_sclk_pcm", DIV_PERI, 0, 8),
12308c2ecf20Sopenharmony_ci	DIV(PERI_DOUT_I2S, "dout_i2s", "mout_sclk_i2scod", DIV_PERI, 8, 6),
12318c2ecf20Sopenharmony_ci};
12328c2ecf20Sopenharmony_ci
12338c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock peri_gate_clks[] __initconst = {
12348c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_PCM1, "sclk_pcm1", "dout_pcm", EN_SCLK_PERI, 0,
12358c2ecf20Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
12368c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_I2S, "sclk_i2s", "dout_i2s", EN_SCLK_PERI, 1,
12378c2ecf20Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
12388c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_SPDIF, "sclk_spdif", "dout_sclk_peri_spi0_b",
12398c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 2, CLK_SET_RATE_PARENT, 0),
12408c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_SPI0, "sclk_spi0", "dout_sclk_peri_spi0_b",
12418c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 7, CLK_SET_RATE_PARENT, 0),
12428c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_SPI1, "sclk_spi1", "dout_sclk_peri_spi1_b",
12438c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 8, CLK_SET_RATE_PARENT, 0),
12448c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_SPI2, "sclk_spi2", "dout_sclk_peri_spi2_b",
12458c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 9, CLK_SET_RATE_PARENT, 0),
12468c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_UART0, "sclk_uart0", "dout_sclk_peri_uart0",
12478c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 10, CLK_SET_RATE_PARENT, 0),
12488c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_UART1, "sclk_uart1", "dout_sclk_peri_uart1",
12498c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 11, CLK_SET_RATE_PARENT, 0),
12508c2ecf20Sopenharmony_ci	GATE(PERI_SCLK_UART2, "sclk_uart2", "dout_sclk_peri_uart2",
12518c2ecf20Sopenharmony_ci			EN_SCLK_PERI, 12, CLK_SET_RATE_PARENT, 0),
12528c2ecf20Sopenharmony_ci
12538c2ecf20Sopenharmony_ci	GATE(PERI_CLK_ABB, "clk_abb", "dout_aclk_peri_66",
12548c2ecf20Sopenharmony_ci		EN_IP_PERI0, 1, 0, 0),
12558c2ecf20Sopenharmony_ci	GATE(PERI_CLK_EFUSE_WRITER, "clk_efuse_writer", "dout_aclk_peri_66",
12568c2ecf20Sopenharmony_ci		EN_IP_PERI0, 5, 0, 0),
12578c2ecf20Sopenharmony_ci	GATE(PERI_CLK_HDMICEC, "clk_hdmicec", "dout_aclk_peri_66",
12588c2ecf20Sopenharmony_ci		EN_IP_PERI0, 6, 0, 0),
12598c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C10, "clk_i2c10", "dout_aclk_peri_66",
12608c2ecf20Sopenharmony_ci		EN_IP_PERI0, 7, 0, 0),
12618c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C11, "clk_i2c11", "dout_aclk_peri_66",
12628c2ecf20Sopenharmony_ci		EN_IP_PERI0, 8, 0, 0),
12638c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C8, "clk_i2c8", "dout_aclk_peri_66",
12648c2ecf20Sopenharmony_ci		EN_IP_PERI0, 9, 0, 0),
12658c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C9, "clk_i2c9", "dout_aclk_peri_66",
12668c2ecf20Sopenharmony_ci		EN_IP_PERI0, 10, 0, 0),
12678c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C4, "clk_i2c4", "dout_aclk_peri_66",
12688c2ecf20Sopenharmony_ci		EN_IP_PERI0, 11, 0, 0),
12698c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C5, "clk_i2c5", "dout_aclk_peri_66",
12708c2ecf20Sopenharmony_ci		EN_IP_PERI0, 12, 0, 0),
12718c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C6, "clk_i2c6", "dout_aclk_peri_66",
12728c2ecf20Sopenharmony_ci		EN_IP_PERI0, 13, 0, 0),
12738c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2C7, "clk_i2c7", "dout_aclk_peri_66",
12748c2ecf20Sopenharmony_ci		EN_IP_PERI0, 14, 0, 0),
12758c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2CHDMI, "clk_i2chdmi", "dout_aclk_peri_66",
12768c2ecf20Sopenharmony_ci		EN_IP_PERI0, 15, 0, 0),
12778c2ecf20Sopenharmony_ci	GATE(PERI_CLK_I2S, "clk_peri_i2s", "dout_aclk_peri_66",
12788c2ecf20Sopenharmony_ci		EN_IP_PERI0, 16, 0, 0),
12798c2ecf20Sopenharmony_ci	GATE(PERI_CLK_MCT, "clk_mct", "dout_aclk_peri_66",
12808c2ecf20Sopenharmony_ci		EN_IP_PERI0, 17, 0, 0),
12818c2ecf20Sopenharmony_ci	GATE(PERI_CLK_PCM, "clk_peri_pcm", "dout_aclk_peri_66",
12828c2ecf20Sopenharmony_ci		EN_IP_PERI0, 18, 0, 0),
12838c2ecf20Sopenharmony_ci	GATE(PERI_CLK_HSIC0, "clk_hsic0", "dout_aclk_peri_66",
12848c2ecf20Sopenharmony_ci		EN_IP_PERI0, 20, 0, 0),
12858c2ecf20Sopenharmony_ci	GATE(PERI_CLK_HSIC1, "clk_hsic1", "dout_aclk_peri_66",
12868c2ecf20Sopenharmony_ci		EN_IP_PERI0, 21, 0, 0),
12878c2ecf20Sopenharmony_ci	GATE(PERI_CLK_HSIC2, "clk_hsic2", "dout_aclk_peri_66",
12888c2ecf20Sopenharmony_ci		EN_IP_PERI0, 22, 0, 0),
12898c2ecf20Sopenharmony_ci	GATE(PERI_CLK_HSIC3, "clk_hsic3", "dout_aclk_peri_66",
12908c2ecf20Sopenharmony_ci		EN_IP_PERI0, 23, 0, 0),
12918c2ecf20Sopenharmony_ci	GATE(PERI_CLK_WDT_EGL, "clk_wdt_egl", "dout_aclk_peri_66",
12928c2ecf20Sopenharmony_ci		EN_IP_PERI0, 24, 0, 0),
12938c2ecf20Sopenharmony_ci	GATE(PERI_CLK_WDT_KFC, "clk_wdt_kfc", "dout_aclk_peri_66",
12948c2ecf20Sopenharmony_ci		EN_IP_PERI0, 25, 0, 0),
12958c2ecf20Sopenharmony_ci
12968c2ecf20Sopenharmony_ci	GATE(PERI_CLK_UART4, "clk_uart4", "dout_aclk_peri_66",
12978c2ecf20Sopenharmony_ci		EN_IP_PERI2, 0, 0, 0),
12988c2ecf20Sopenharmony_ci	GATE(PERI_CLK_PWM, "clk_pwm", "dout_aclk_peri_66",
12998c2ecf20Sopenharmony_ci		EN_IP_PERI2, 3, 0, 0),
13008c2ecf20Sopenharmony_ci	GATE(PERI_CLK_SPDIF, "clk_spdif", "dout_aclk_peri_66",
13018c2ecf20Sopenharmony_ci		EN_IP_PERI2, 6, 0, 0),
13028c2ecf20Sopenharmony_ci	GATE(PERI_CLK_SPI0, "clk_spi0", "dout_aclk_peri_66",
13038c2ecf20Sopenharmony_ci		EN_IP_PERI2, 7, 0, 0),
13048c2ecf20Sopenharmony_ci	GATE(PERI_CLK_SPI1, "clk_spi1", "dout_aclk_peri_66",
13058c2ecf20Sopenharmony_ci		EN_IP_PERI2, 8, 0, 0),
13068c2ecf20Sopenharmony_ci	GATE(PERI_CLK_SPI2, "clk_spi2", "dout_aclk_peri_66",
13078c2ecf20Sopenharmony_ci		EN_IP_PERI2, 9, 0, 0),
13088c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TMU0, "clk_tmu0", "dout_aclk_peri_66",
13098c2ecf20Sopenharmony_ci		EN_IP_PERI2, 10, 0, 0),
13108c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TMU1, "clk_tmu1", "dout_aclk_peri_66",
13118c2ecf20Sopenharmony_ci		EN_IP_PERI2, 11, 0, 0),
13128c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TMU2, "clk_tmu2", "dout_aclk_peri_66",
13138c2ecf20Sopenharmony_ci		EN_IP_PERI2, 12, 0, 0),
13148c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TMU3, "clk_tmu3", "dout_aclk_peri_66",
13158c2ecf20Sopenharmony_ci		EN_IP_PERI2, 13, 0, 0),
13168c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TMU4, "clk_tmu4", "dout_aclk_peri_66",
13178c2ecf20Sopenharmony_ci		EN_IP_PERI2, 14, 0, 0),
13188c2ecf20Sopenharmony_ci	GATE(PERI_CLK_ADC, "clk_adc", "dout_aclk_peri_66",
13198c2ecf20Sopenharmony_ci		EN_IP_PERI2, 18, 0, 0),
13208c2ecf20Sopenharmony_ci	GATE(PERI_CLK_UART0, "clk_uart0", "dout_aclk_peri_66",
13218c2ecf20Sopenharmony_ci		EN_IP_PERI2, 19, 0, 0),
13228c2ecf20Sopenharmony_ci	GATE(PERI_CLK_UART1, "clk_uart1", "dout_aclk_peri_66",
13238c2ecf20Sopenharmony_ci		EN_IP_PERI2, 20, 0, 0),
13248c2ecf20Sopenharmony_ci	GATE(PERI_CLK_UART2, "clk_uart2", "dout_aclk_peri_66",
13258c2ecf20Sopenharmony_ci		EN_IP_PERI2, 21, 0, 0),
13268c2ecf20Sopenharmony_ci
13278c2ecf20Sopenharmony_ci	GATE(PERI_CLK_CHIPID, "clk_chipid", "dout_aclk_peri_66",
13288c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_CHIPID, 2, 0, 0),
13298c2ecf20Sopenharmony_ci
13308c2ecf20Sopenharmony_ci	GATE(PERI_CLK_PROVKEY0, "clk_provkey0", "dout_aclk_peri_66",
13318c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_PROVKEY0, 1, 0, 0),
13328c2ecf20Sopenharmony_ci
13338c2ecf20Sopenharmony_ci	GATE(PERI_CLK_PROVKEY1, "clk_provkey1", "dout_aclk_peri_66",
13348c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_PROVKEY1, 2, 0, 0),
13358c2ecf20Sopenharmony_ci
13368c2ecf20Sopenharmony_ci	GATE(PERI_CLK_SECKEY, "clk_seckey", "dout_aclk_peri_66",
13378c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_SECKEY, 5, 0, 0),
13388c2ecf20Sopenharmony_ci
13398c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TOP_RTC, "clk_top_rtc", "dout_aclk_peri_66",
13408c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TOP_RTC, 5, 0, 0),
13418c2ecf20Sopenharmony_ci
13428c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC0, "clk_tzpc0", "dout_aclk_peri_66",
13438c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 10, 0, 0),
13448c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC1, "clk_tzpc1", "dout_aclk_peri_66",
13458c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 11, 0, 0),
13468c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC2, "clk_tzpc2", "dout_aclk_peri_66",
13478c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 12, 0, 0),
13488c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC3, "clk_tzpc3", "dout_aclk_peri_66",
13498c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 13, 0, 0),
13508c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC4, "clk_tzpc4", "dout_aclk_peri_66",
13518c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 14, 0, 0),
13528c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC5, "clk_tzpc5", "dout_aclk_peri_66",
13538c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 15, 0, 0),
13548c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC6, "clk_tzpc6", "dout_aclk_peri_66",
13558c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 16, 0, 0),
13568c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC7, "clk_tzpc7", "dout_aclk_peri_66",
13578c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 17, 0, 0),
13588c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC8, "clk_tzpc8", "dout_aclk_peri_66",
13598c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 18, 0, 0),
13608c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC9, "clk_tzpc9", "dout_aclk_peri_66",
13618c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 19, 0, 0),
13628c2ecf20Sopenharmony_ci	GATE(PERI_CLK_TZPC10, "clk_tzpc10", "dout_aclk_peri_66",
13638c2ecf20Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 20, 0, 0),
13648c2ecf20Sopenharmony_ci};
13658c2ecf20Sopenharmony_ci
13668c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info peri_cmu __initconst = {
13678c2ecf20Sopenharmony_ci	.mux_clks	= peri_mux_clks,
13688c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(peri_mux_clks),
13698c2ecf20Sopenharmony_ci	.div_clks	= peri_div_clks,
13708c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(peri_div_clks),
13718c2ecf20Sopenharmony_ci	.gate_clks	= peri_gate_clks,
13728c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(peri_gate_clks),
13738c2ecf20Sopenharmony_ci	.nr_clk_ids	= PERI_NR_CLK,
13748c2ecf20Sopenharmony_ci	.clk_regs	= peri_clk_regs,
13758c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(peri_clk_regs),
13768c2ecf20Sopenharmony_ci};
13778c2ecf20Sopenharmony_ci
13788c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_peri_init(struct device_node *np)
13798c2ecf20Sopenharmony_ci{
13808c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &peri_cmu);
13818c2ecf20Sopenharmony_ci}
13828c2ecf20Sopenharmony_ci
13838c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_peri, "samsung,exynos5260-clock-peri",
13848c2ecf20Sopenharmony_ci		exynos5260_clk_peri_init);
13858c2ecf20Sopenharmony_ci
13868c2ecf20Sopenharmony_ci
13878c2ecf20Sopenharmony_ci/* CMU_TOP */
13888c2ecf20Sopenharmony_ci
13898c2ecf20Sopenharmony_cistatic const unsigned long top_clk_regs[] __initconst = {
13908c2ecf20Sopenharmony_ci	DISP_PLL_LOCK,
13918c2ecf20Sopenharmony_ci	AUD_PLL_LOCK,
13928c2ecf20Sopenharmony_ci	DISP_PLL_CON0,
13938c2ecf20Sopenharmony_ci	DISP_PLL_CON1,
13948c2ecf20Sopenharmony_ci	DISP_PLL_FDET,
13958c2ecf20Sopenharmony_ci	AUD_PLL_CON0,
13968c2ecf20Sopenharmony_ci	AUD_PLL_CON1,
13978c2ecf20Sopenharmony_ci	AUD_PLL_CON2,
13988c2ecf20Sopenharmony_ci	AUD_PLL_FDET,
13998c2ecf20Sopenharmony_ci	MUX_SEL_TOP_PLL0,
14008c2ecf20Sopenharmony_ci	MUX_SEL_TOP_MFC,
14018c2ecf20Sopenharmony_ci	MUX_SEL_TOP_G2D,
14028c2ecf20Sopenharmony_ci	MUX_SEL_TOP_GSCL,
14038c2ecf20Sopenharmony_ci	MUX_SEL_TOP_ISP10,
14048c2ecf20Sopenharmony_ci	MUX_SEL_TOP_ISP11,
14058c2ecf20Sopenharmony_ci	MUX_SEL_TOP_DISP0,
14068c2ecf20Sopenharmony_ci	MUX_SEL_TOP_DISP1,
14078c2ecf20Sopenharmony_ci	MUX_SEL_TOP_BUS,
14088c2ecf20Sopenharmony_ci	MUX_SEL_TOP_PERI0,
14098c2ecf20Sopenharmony_ci	MUX_SEL_TOP_PERI1,
14108c2ecf20Sopenharmony_ci	MUX_SEL_TOP_FSYS,
14118c2ecf20Sopenharmony_ci	DIV_TOP_G2D_MFC,
14128c2ecf20Sopenharmony_ci	DIV_TOP_GSCL_ISP0,
14138c2ecf20Sopenharmony_ci	DIV_TOP_ISP10,
14148c2ecf20Sopenharmony_ci	DIV_TOP_ISP11,
14158c2ecf20Sopenharmony_ci	DIV_TOP_DISP,
14168c2ecf20Sopenharmony_ci	DIV_TOP_BUS,
14178c2ecf20Sopenharmony_ci	DIV_TOP_PERI0,
14188c2ecf20Sopenharmony_ci	DIV_TOP_PERI1,
14198c2ecf20Sopenharmony_ci	DIV_TOP_PERI2,
14208c2ecf20Sopenharmony_ci	DIV_TOP_FSYS0,
14218c2ecf20Sopenharmony_ci	DIV_TOP_FSYS1,
14228c2ecf20Sopenharmony_ci	DIV_TOP_HPM,
14238c2ecf20Sopenharmony_ci	DIV_TOP_PLL_FDET,
14248c2ecf20Sopenharmony_ci	EN_ACLK_TOP,
14258c2ecf20Sopenharmony_ci	EN_SCLK_TOP,
14268c2ecf20Sopenharmony_ci	EN_IP_TOP,
14278c2ecf20Sopenharmony_ci};
14288c2ecf20Sopenharmony_ci
14298c2ecf20Sopenharmony_ci/* fixed rate clocks generated inside the soc */
14308c2ecf20Sopenharmony_cistatic const struct samsung_fixed_rate_clock fixed_rate_clks[] __initconst = {
14318c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH3_TXD_CLK, "phyclk_dptx_phy_ch3_txd_clk", NULL,
14328c2ecf20Sopenharmony_ci			0, 270000000),
14338c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH2_TXD_CLK, "phyclk_dptx_phy_ch2_txd_clk", NULL,
14348c2ecf20Sopenharmony_ci			0, 270000000),
14358c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH1_TXD_CLK, "phyclk_dptx_phy_ch1_txd_clk", NULL,
14368c2ecf20Sopenharmony_ci			0, 270000000),
14378c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH0_TXD_CLK, "phyclk_dptx_phy_ch0_txd_clk", NULL,
14388c2ecf20Sopenharmony_ci			0, 270000000),
14398c2ecf20Sopenharmony_ci	FRATE(phyclk_hdmi_phy_tmds_clko, "phyclk_hdmi_phy_tmds_clko", NULL,
14408c2ecf20Sopenharmony_ci			0, 250000000),
14418c2ecf20Sopenharmony_ci	FRATE(PHYCLK_HDMI_PHY_PIXEL_CLKO, "phyclk_hdmi_phy_pixel_clko", NULL,
14428c2ecf20Sopenharmony_ci			0, 1660000000),
14438c2ecf20Sopenharmony_ci	FRATE(PHYCLK_HDMI_LINK_O_TMDS_CLKHI, "phyclk_hdmi_link_o_tmds_clkhi",
14448c2ecf20Sopenharmony_ci			NULL, 0, 125000000),
14458c2ecf20Sopenharmony_ci	FRATE(PHYCLK_MIPI_DPHY_4L_M_TXBYTECLKHS,
14468c2ecf20Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_txbyte_clkhs" , NULL,
14478c2ecf20Sopenharmony_ci			0, 187500000),
14488c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_O_REF_CLK_24M, "phyclk_dptx_phy_o_ref_clk_24m",
14498c2ecf20Sopenharmony_ci			NULL, 0, 24000000),
14508c2ecf20Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CLK_DIV2, "phyclk_dptx_phy_clk_div2", NULL,
14518c2ecf20Sopenharmony_ci			0, 135000000),
14528c2ecf20Sopenharmony_ci	FRATE(PHYCLK_MIPI_DPHY_4L_M_RXCLKESC0,
14538c2ecf20Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_rxclkesc0", NULL, 0, 20000000),
14548c2ecf20Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_PHYCLOCK, "phyclk_usbhost20_phy_phyclock",
14558c2ecf20Sopenharmony_ci			NULL, 0, 60000000),
14568c2ecf20Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_FREECLK, "phyclk_usbhost20_phy_freeclk",
14578c2ecf20Sopenharmony_ci			NULL, 0, 60000000),
14588c2ecf20Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_CLK48MOHCI,
14598c2ecf20Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci", NULL, 0, 48000000),
14608c2ecf20Sopenharmony_ci	FRATE(PHYCLK_USBDRD30_UDRD30_PIPE_PCLK,
14618c2ecf20Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk", NULL, 0, 125000000),
14628c2ecf20Sopenharmony_ci	FRATE(PHYCLK_USBDRD30_UDRD30_PHYCLOCK,
14638c2ecf20Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock", NULL, 0, 60000000),
14648c2ecf20Sopenharmony_ci};
14658c2ecf20Sopenharmony_ci
14668c2ecf20Sopenharmony_ciPNAME(mout_memtop_pll_user_p) = {"fin_pll", "dout_mem_pll"};
14678c2ecf20Sopenharmony_ciPNAME(mout_bustop_pll_user_p) = {"fin_pll", "dout_bus_pll"};
14688c2ecf20Sopenharmony_ciPNAME(mout_mediatop_pll_user_p) = {"fin_pll", "dout_media_pll"};
14698c2ecf20Sopenharmony_ciPNAME(mout_audtop_pll_user_p) = {"fin_pll", "mout_aud_pll"};
14708c2ecf20Sopenharmony_ciPNAME(mout_aud_pll_p) = {"fin_pll", "fout_aud_pll"};
14718c2ecf20Sopenharmony_ciPNAME(mout_disp_pll_p) = {"fin_pll", "fout_disp_pll"};
14728c2ecf20Sopenharmony_ciPNAME(mout_mfc_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
14738c2ecf20Sopenharmony_ciPNAME(mout_aclk_mfc_333_p) = {"mout_mediatop_pll_user", "mout_mfc_bustop_333"};
14748c2ecf20Sopenharmony_ciPNAME(mout_g2d_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
14758c2ecf20Sopenharmony_ciPNAME(mout_aclk_g2d_333_p) = {"mout_mediatop_pll_user", "mout_g2d_bustop_333"};
14768c2ecf20Sopenharmony_ciPNAME(mout_gscl_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
14778c2ecf20Sopenharmony_ciPNAME(mout_aclk_gscl_333_p) = {"mout_mediatop_pll_user",
14788c2ecf20Sopenharmony_ci			"mout_gscl_bustop_333"};
14798c2ecf20Sopenharmony_ciPNAME(mout_m2m_mediatop_400_p) = {"mout_mediatop_pll_user", "mout_disp_pll"};
14808c2ecf20Sopenharmony_ciPNAME(mout_aclk_gscl_400_p) = {"mout_bustop_pll_user",
14818c2ecf20Sopenharmony_ci			"mout_m2m_mediatop_400"};
14828c2ecf20Sopenharmony_ciPNAME(mout_gscl_bustop_fimc_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
14838c2ecf20Sopenharmony_ciPNAME(mout_aclk_gscl_fimc_p) = {"mout_mediatop_pll_user",
14848c2ecf20Sopenharmony_ci			"mout_gscl_bustop_fimc"};
14858c2ecf20Sopenharmony_ciPNAME(mout_isp1_media_266_p) = {"mout_mediatop_pll_user",
14868c2ecf20Sopenharmony_ci			"mout_memtop_pll_user"};
14878c2ecf20Sopenharmony_ciPNAME(mout_aclk_isp1_266_p) = {"mout_bustop_pll_user", "mout_isp1_media_266"};
14888c2ecf20Sopenharmony_ciPNAME(mout_isp1_media_400_p) = {"mout_mediatop_pll_user", "mout_disp_pll"};
14898c2ecf20Sopenharmony_ciPNAME(mout_aclk_isp1_400_p) = {"mout_bustop_pll_user", "mout_isp1_media_400"};
14908c2ecf20Sopenharmony_ciPNAME(mout_sclk_isp_spi_p) = {"fin_pll", "mout_bustop_pll_user"};
14918c2ecf20Sopenharmony_ciPNAME(mout_sclk_isp_uart_p) = {"fin_pll", "mout_bustop_pll_user"};
14928c2ecf20Sopenharmony_ciPNAME(mout_sclk_isp_sensor_p) = {"fin_pll", "mout_bustop_pll_user"};
14938c2ecf20Sopenharmony_ciPNAME(mout_disp_disp_333_p) = {"mout_disp_pll", "mout_bustop_pll_user"};
14948c2ecf20Sopenharmony_ciPNAME(mout_aclk_disp_333_p) = {"mout_mediatop_pll_user", "mout_disp_disp_333"};
14958c2ecf20Sopenharmony_ciPNAME(mout_disp_disp_222_p) = {"mout_disp_pll", "mout_bustop_pll_user"};
14968c2ecf20Sopenharmony_ciPNAME(mout_aclk_disp_222_p) = {"mout_mediatop_pll_user", "mout_disp_disp_222"};
14978c2ecf20Sopenharmony_ciPNAME(mout_disp_media_pixel_p) = {"mout_mediatop_pll_user",
14988c2ecf20Sopenharmony_ci			"mout_bustop_pll_user"};
14998c2ecf20Sopenharmony_ciPNAME(mout_sclk_disp_pixel_p) = {"mout_disp_pll", "mout_disp_media_pixel"};
15008c2ecf20Sopenharmony_ciPNAME(mout_bus_bustop_400_p) = {"mout_bustop_pll_user", "mout_memtop_pll_user"};
15018c2ecf20Sopenharmony_ciPNAME(mout_bus_bustop_100_p) = {"mout_bustop_pll_user", "mout_memtop_pll_user"};
15028c2ecf20Sopenharmony_ciPNAME(mout_sclk_peri_spi_clk_p) = {"fin_pll", "mout_bustop_pll_user"};
15038c2ecf20Sopenharmony_ciPNAME(mout_sclk_peri_uart_uclk_p) = {"fin_pll", "mout_bustop_pll_user"};
15048c2ecf20Sopenharmony_ciPNAME(mout_sclk_fsys_usb_p) = {"fin_pll", "mout_bustop_pll_user"};
15058c2ecf20Sopenharmony_ciPNAME(mout_sclk_fsys_mmc_sdclkin_a_p) = {"fin_pll", "mout_bustop_pll_user"};
15068c2ecf20Sopenharmony_ciPNAME(mout_sclk_fsys_mmc0_sdclkin_b_p) = {"mout_sclk_fsys_mmc0_sdclkin_a",
15078c2ecf20Sopenharmony_ci			"mout_mediatop_pll_user"};
15088c2ecf20Sopenharmony_ciPNAME(mout_sclk_fsys_mmc1_sdclkin_b_p) = {"mout_sclk_fsys_mmc1_sdclkin_a",
15098c2ecf20Sopenharmony_ci			"mout_mediatop_pll_user"};
15108c2ecf20Sopenharmony_ciPNAME(mout_sclk_fsys_mmc2_sdclkin_b_p) = {"mout_sclk_fsys_mmc2_sdclkin_a",
15118c2ecf20Sopenharmony_ci			"mout_mediatop_pll_user"};
15128c2ecf20Sopenharmony_ci
15138c2ecf20Sopenharmony_cistatic const struct samsung_mux_clock top_mux_clks[] __initconst = {
15148c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_MEDIATOP_PLL_USER, "mout_mediatop_pll_user",
15158c2ecf20Sopenharmony_ci			mout_mediatop_pll_user_p,
15168c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 0, 1),
15178c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_MEMTOP_PLL_USER, "mout_memtop_pll_user",
15188c2ecf20Sopenharmony_ci			mout_memtop_pll_user_p,
15198c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 4, 1),
15208c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUSTOP_PLL_USER, "mout_bustop_pll_user",
15218c2ecf20Sopenharmony_ci			mout_bustop_pll_user_p,
15228c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 8, 1),
15238c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_DISP_PLL, "mout_disp_pll", mout_disp_pll_p,
15248c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 12, 1),
15258c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_AUD_PLL, "mout_aud_pll", mout_aud_pll_p,
15268c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 16, 1),
15278c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_AUDTOP_PLL_USER, "mout_audtop_pll_user",
15288c2ecf20Sopenharmony_ci			mout_audtop_pll_user_p,
15298c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PLL0, 24, 1),
15308c2ecf20Sopenharmony_ci
15318c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_DISP_DISP_333, "mout_disp_disp_333", mout_disp_disp_333_p,
15328c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP0, 0, 1),
15338c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_DISP_333, "mout_aclk_disp_333", mout_aclk_disp_333_p,
15348c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP0, 8, 1),
15358c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_DISP_DISP_222, "mout_disp_disp_222", mout_disp_disp_222_p,
15368c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP0, 12, 1),
15378c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_DISP_222, "mout_aclk_disp_222", mout_aclk_disp_222_p,
15388c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP0, 20, 1),
15398c2ecf20Sopenharmony_ci
15408c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_FIMD1, "mout_sclk_disp_pixel", mout_sclk_disp_pixel_p,
15418c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP1, 0, 1),
15428c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_DISP_MEDIA_PIXEL, "mout_disp_media_pixel",
15438c2ecf20Sopenharmony_ci			mout_disp_media_pixel_p,
15448c2ecf20Sopenharmony_ci			MUX_SEL_TOP_DISP1, 8, 1),
15458c2ecf20Sopenharmony_ci
15468c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI2_CLK, "mout_sclk_peri_spi2_clk",
15478c2ecf20Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
15488c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 0, 1),
15498c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI1_CLK, "mout_sclk_peri_spi1_clk",
15508c2ecf20Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
15518c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 4, 1),
15528c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI0_CLK, "mout_sclk_peri_spi0_clk",
15538c2ecf20Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
15548c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 8, 1),
15558c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART1_UCLK, "mout_sclk_peri_uart1_uclk",
15568c2ecf20Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
15578c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 12, 1),
15588c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART2_UCLK, "mout_sclk_peri_uart2_uclk",
15598c2ecf20Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
15608c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 16, 1),
15618c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART0_UCLK, "mout_sclk_peri_uart0_uclk",
15628c2ecf20Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
15638c2ecf20Sopenharmony_ci			MUX_SEL_TOP_PERI1, 20, 1),
15648c2ecf20Sopenharmony_ci
15658c2ecf20Sopenharmony_ci
15668c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS1_BUSTOP_400, "mout_bus1_bustop_400",
15678c2ecf20Sopenharmony_ci			mout_bus_bustop_400_p,
15688c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 0, 1),
15698c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS1_BUSTOP_100, "mout_bus1_bustop_100",
15708c2ecf20Sopenharmony_ci			mout_bus_bustop_100_p,
15718c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 4, 1),
15728c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS2_BUSTOP_100, "mout_bus2_bustop_100",
15738c2ecf20Sopenharmony_ci			mout_bus_bustop_100_p,
15748c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 8, 1),
15758c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS2_BUSTOP_400, "mout_bus2_bustop_400",
15768c2ecf20Sopenharmony_ci			mout_bus_bustop_400_p,
15778c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 12, 1),
15788c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS3_BUSTOP_400, "mout_bus3_bustop_400",
15798c2ecf20Sopenharmony_ci			mout_bus_bustop_400_p,
15808c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 16, 1),
15818c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS3_BUSTOP_100, "mout_bus3_bustop_100",
15828c2ecf20Sopenharmony_ci			mout_bus_bustop_100_p,
15838c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 20, 1),
15848c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS4_BUSTOP_400, "mout_bus4_bustop_400",
15858c2ecf20Sopenharmony_ci			mout_bus_bustop_400_p,
15868c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 24, 1),
15878c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_BUS4_BUSTOP_100, "mout_bus4_bustop_100",
15888c2ecf20Sopenharmony_ci			mout_bus_bustop_100_p,
15898c2ecf20Sopenharmony_ci			MUX_SEL_TOP_BUS, 28, 1),
15908c2ecf20Sopenharmony_ci
15918c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_USB, "mout_sclk_fsys_usb",
15928c2ecf20Sopenharmony_ci			mout_sclk_fsys_usb_p,
15938c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 0, 1),
15948c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_A, "mout_sclk_fsys_mmc2_sdclkin_a",
15958c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
15968c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 4, 1),
15978c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_B, "mout_sclk_fsys_mmc2_sdclkin_b",
15988c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc2_sdclkin_b_p,
15998c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 8, 1),
16008c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_A, "mout_sclk_fsys_mmc1_sdclkin_a",
16018c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
16028c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 12, 1),
16038c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_B, "mout_sclk_fsys_mmc1_sdclkin_b",
16048c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc1_sdclkin_b_p,
16058c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 16, 1),
16068c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_A, "mout_sclk_fsys_mmc0_sdclkin_a",
16078c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
16088c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 20, 1),
16098c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_B, "mout_sclk_fsys_mmc0_sdclkin_b",
16108c2ecf20Sopenharmony_ci			mout_sclk_fsys_mmc0_sdclkin_b_p,
16118c2ecf20Sopenharmony_ci			MUX_SEL_TOP_FSYS, 24, 1),
16128c2ecf20Sopenharmony_ci
16138c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ISP1_MEDIA_400, "mout_isp1_media_400",
16148c2ecf20Sopenharmony_ci			mout_isp1_media_400_p,
16158c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP10, 4, 1),
16168c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_ISP1_400, "mout_aclk_isp1_400", mout_aclk_isp1_400_p,
16178c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP10, 8 , 1),
16188c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ISP1_MEDIA_266, "mout_isp1_media_266",
16198c2ecf20Sopenharmony_ci			mout_isp1_media_266_p,
16208c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP10, 16, 1),
16218c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_ISP1_266, "mout_aclk_isp1_266", mout_aclk_isp1_266_p,
16228c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP10, 20, 1),
16238c2ecf20Sopenharmony_ci
16248c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SPI0, "mout_sclk_isp1_spi0", mout_sclk_isp_spi_p,
16258c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 4, 1),
16268c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SPI1, "mout_sclk_isp1_spi1", mout_sclk_isp_spi_p,
16278c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 8, 1),
16288c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_UART, "mout_sclk_isp1_uart",
16298c2ecf20Sopenharmony_ci			mout_sclk_isp_uart_p,
16308c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 12, 1),
16318c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR0, "mout_sclk_isp1_sensor0",
16328c2ecf20Sopenharmony_ci			mout_sclk_isp_sensor_p,
16338c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 16, 1),
16348c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR1, "mout_sclk_isp1_sensor1",
16358c2ecf20Sopenharmony_ci			mout_sclk_isp_sensor_p,
16368c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 20, 1),
16378c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR2, "mout_sclk_isp1_sensor2",
16388c2ecf20Sopenharmony_ci			mout_sclk_isp_sensor_p,
16398c2ecf20Sopenharmony_ci			MUX_SEL_TOP_ISP11, 24, 1),
16408c2ecf20Sopenharmony_ci
16418c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_MFC_BUSTOP_333, "mout_mfc_bustop_333",
16428c2ecf20Sopenharmony_ci			mout_mfc_bustop_333_p,
16438c2ecf20Sopenharmony_ci			MUX_SEL_TOP_MFC, 4, 1),
16448c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_MFC_333, "mout_aclk_mfc_333", mout_aclk_mfc_333_p,
16458c2ecf20Sopenharmony_ci			MUX_SEL_TOP_MFC, 8, 1),
16468c2ecf20Sopenharmony_ci
16478c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_G2D_BUSTOP_333, "mout_g2d_bustop_333",
16488c2ecf20Sopenharmony_ci			mout_g2d_bustop_333_p,
16498c2ecf20Sopenharmony_ci			MUX_SEL_TOP_G2D, 4, 1),
16508c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_G2D_333, "mout_aclk_g2d_333", mout_aclk_g2d_333_p,
16518c2ecf20Sopenharmony_ci			MUX_SEL_TOP_G2D, 8, 1),
16528c2ecf20Sopenharmony_ci
16538c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_M2M_MEDIATOP_400, "mout_m2m_mediatop_400",
16548c2ecf20Sopenharmony_ci			mout_m2m_mediatop_400_p,
16558c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 0, 1),
16568c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_400, "mout_aclk_gscl_400",
16578c2ecf20Sopenharmony_ci			mout_aclk_gscl_400_p,
16588c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 4, 1),
16598c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_GSCL_BUSTOP_333, "mout_gscl_bustop_333",
16608c2ecf20Sopenharmony_ci			mout_gscl_bustop_333_p,
16618c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 8, 1),
16628c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_333, "mout_aclk_gscl_333",
16638c2ecf20Sopenharmony_ci			mout_aclk_gscl_333_p,
16648c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 12, 1),
16658c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_GSCL_BUSTOP_FIMC, "mout_gscl_bustop_fimc",
16668c2ecf20Sopenharmony_ci			mout_gscl_bustop_fimc_p,
16678c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 16, 1),
16688c2ecf20Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_FIMC, "mout_aclk_gscl_fimc",
16698c2ecf20Sopenharmony_ci			mout_aclk_gscl_fimc_p,
16708c2ecf20Sopenharmony_ci			MUX_SEL_TOP_GSCL, 20, 1),
16718c2ecf20Sopenharmony_ci};
16728c2ecf20Sopenharmony_ci
16738c2ecf20Sopenharmony_cistatic const struct samsung_div_clock top_div_clks[] __initconst = {
16748c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_G2D_333, "dout_aclk_g2d_333", "mout_aclk_g2d_333",
16758c2ecf20Sopenharmony_ci			DIV_TOP_G2D_MFC, 0, 3),
16768c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_MFC_333, "dout_aclk_mfc_333", "mout_aclk_mfc_333",
16778c2ecf20Sopenharmony_ci			DIV_TOP_G2D_MFC, 4, 3),
16788c2ecf20Sopenharmony_ci
16798c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_333, "dout_aclk_gscl_333", "mout_aclk_gscl_333",
16808c2ecf20Sopenharmony_ci			DIV_TOP_GSCL_ISP0, 0, 3),
16818c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_400, "dout_aclk_gscl_400", "mout_aclk_gscl_400",
16828c2ecf20Sopenharmony_ci			DIV_TOP_GSCL_ISP0, 4, 3),
16838c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_FIMC, "dout_aclk_gscl_fimc",
16848c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 8, 3),
16858c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR0_A, "dout_sclk_isp1_sensor0_a",
16868c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 16, 4),
16878c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR1_A, "dout_sclk_isp1_sensor1_a",
16888c2ecf20Sopenharmony_ci			"mout_aclk_gscl_400", DIV_TOP_GSCL_ISP0, 20, 4),
16898c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR2_A, "dout_sclk_isp1_sensor2_a",
16908c2ecf20Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 24, 4),
16918c2ecf20Sopenharmony_ci
16928c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_ISP1_266, "dout_aclk_isp1_266", "mout_aclk_isp1_266",
16938c2ecf20Sopenharmony_ci			DIV_TOP_ISP10, 0, 3),
16948c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_ISP1_400, "dout_aclk_isp1_400", "mout_aclk_isp1_400",
16958c2ecf20Sopenharmony_ci			DIV_TOP_ISP10, 4, 3),
16968c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI0_A, "dout_sclk_isp1_spi0_a",
16978c2ecf20Sopenharmony_ci			"mout_sclk_isp1_spi0", DIV_TOP_ISP10, 12, 4),
16988c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI0_B, "dout_sclk_isp1_spi0_b",
16998c2ecf20Sopenharmony_ci			"dout_sclk_isp1_spi0_a", DIV_TOP_ISP10, 16, 8),
17008c2ecf20Sopenharmony_ci
17018c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI1_A, "dout_sclk_isp1_spi1_a",
17028c2ecf20Sopenharmony_ci			"mout_sclk_isp1_spi1", DIV_TOP_ISP11, 0, 4),
17038c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI1_B, "dout_sclk_isp1_spi1_b",
17048c2ecf20Sopenharmony_ci			"dout_sclk_isp1_spi1_a", DIV_TOP_ISP11, 4, 8),
17058c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_UART, "dout_sclk_isp1_uart",
17068c2ecf20Sopenharmony_ci			"mout_sclk_isp1_uart", DIV_TOP_ISP11, 12, 4),
17078c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR0_B, "dout_sclk_isp1_sensor0_b",
17088c2ecf20Sopenharmony_ci			"dout_sclk_isp1_sensor0_a", DIV_TOP_ISP11, 16, 4),
17098c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR1_B, "dout_sclk_isp1_sensor1_b",
17108c2ecf20Sopenharmony_ci			"dout_sclk_isp1_sensor1_a", DIV_TOP_ISP11, 20, 4),
17118c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR2_B, "dout_sclk_isp1_sensor2_b",
17128c2ecf20Sopenharmony_ci			"dout_sclk_isp1_sensor2_a", DIV_TOP_ISP11, 24, 4),
17138c2ecf20Sopenharmony_ci
17148c2ecf20Sopenharmony_ci	DIV(TOP_DOUTTOP__SCLK_HPM_TARGETCLK, "dout_sclk_hpm_targetclk",
17158c2ecf20Sopenharmony_ci			"mout_bustop_pll_user", DIV_TOP_HPM, 0, 3),
17168c2ecf20Sopenharmony_ci
17178c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_DISP_333, "dout_aclk_disp_333", "mout_aclk_disp_333",
17188c2ecf20Sopenharmony_ci			DIV_TOP_DISP, 0, 3),
17198c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_DISP_222, "dout_aclk_disp_222", "mout_aclk_disp_222",
17208c2ecf20Sopenharmony_ci			DIV_TOP_DISP, 4, 3),
17218c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_DISP_PIXEL, "dout_sclk_disp_pixel",
17228c2ecf20Sopenharmony_ci			"mout_sclk_disp_pixel",	DIV_TOP_DISP, 8, 3),
17238c2ecf20Sopenharmony_ci
17248c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS1_400, "dout_aclk_bus1_400",
17258c2ecf20Sopenharmony_ci			"mout_bus1_bustop_400",	DIV_TOP_BUS, 0, 3),
17268c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS1_100, "dout_aclk_bus1_100",
17278c2ecf20Sopenharmony_ci			"mout_bus1_bustop_100",	DIV_TOP_BUS, 4, 4),
17288c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS2_400, "dout_aclk_bus2_400",
17298c2ecf20Sopenharmony_ci			"mout_bus2_bustop_400",	DIV_TOP_BUS, 8, 3),
17308c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS2_100, "dout_aclk_bus2_100",
17318c2ecf20Sopenharmony_ci			"mout_bus2_bustop_100",	DIV_TOP_BUS, 12, 4),
17328c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS3_400, "dout_aclk_bus3_400",
17338c2ecf20Sopenharmony_ci			"mout_bus3_bustop_400", DIV_TOP_BUS, 16, 3),
17348c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS3_100, "dout_aclk_bus3_100",
17358c2ecf20Sopenharmony_ci			"mout_bus3_bustop_100",	DIV_TOP_BUS, 20, 4),
17368c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS4_400, "dout_aclk_bus4_400",
17378c2ecf20Sopenharmony_ci			"mout_bus4_bustop_400",	DIV_TOP_BUS, 24, 3),
17388c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS4_100, "dout_aclk_bus4_100",
17398c2ecf20Sopenharmony_ci			"mout_bus4_bustop_100",	DIV_TOP_BUS, 28, 4),
17408c2ecf20Sopenharmony_ci
17418c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI0_A, "dout_sclk_peri_spi0_a",
17428c2ecf20Sopenharmony_ci			"mout_sclk_peri_spi0_clk", DIV_TOP_PERI0, 4, 4),
17438c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI0_B, "dout_sclk_peri_spi0_b",
17448c2ecf20Sopenharmony_ci			"dout_sclk_peri_spi0_a", DIV_TOP_PERI0, 8, 8),
17458c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI1_A, "dout_sclk_peri_spi1_a",
17468c2ecf20Sopenharmony_ci			"mout_sclk_peri_spi1_clk", DIV_TOP_PERI0, 16, 4),
17478c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI1_B, "dout_sclk_peri_spi1_b",
17488c2ecf20Sopenharmony_ci			"dout_sclk_peri_spi1_a", DIV_TOP_PERI0, 20, 8),
17498c2ecf20Sopenharmony_ci
17508c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI2_A, "dout_sclk_peri_spi2_a",
17518c2ecf20Sopenharmony_ci			"mout_sclk_peri_spi2_clk", DIV_TOP_PERI1, 0, 4),
17528c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI2_B, "dout_sclk_peri_spi2_b",
17538c2ecf20Sopenharmony_ci			"dout_sclk_peri_spi2_a", DIV_TOP_PERI1, 4, 8),
17548c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART1, "dout_sclk_peri_uart1",
17558c2ecf20Sopenharmony_ci			"mout_sclk_peri_uart1_uclk", DIV_TOP_PERI1, 16, 4),
17568c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART2, "dout_sclk_peri_uart2",
17578c2ecf20Sopenharmony_ci			"mout_sclk_peri_uart2_uclk", DIV_TOP_PERI1, 20, 4),
17588c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART0, "dout_sclk_peri_uart0",
17598c2ecf20Sopenharmony_ci			"mout_sclk_peri_uart0_uclk", DIV_TOP_PERI1, 24, 4),
17608c2ecf20Sopenharmony_ci
17618c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_PERI_66, "dout_aclk_peri_66", "mout_bustop_pll_user",
17628c2ecf20Sopenharmony_ci			DIV_TOP_PERI2, 20, 4),
17638c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_PERI_AUD, "dout_aclk_peri_aud",
17648c2ecf20Sopenharmony_ci			"mout_audtop_pll_user", DIV_TOP_PERI2, 24, 3),
17658c2ecf20Sopenharmony_ci
17668c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_ACLK_FSYS_200, "dout_aclk_fsys_200",
17678c2ecf20Sopenharmony_ci			"mout_bustop_pll_user", DIV_TOP_FSYS0, 0, 3),
17688c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_USBDRD30_SUSPEND_CLK,
17698c2ecf20Sopenharmony_ci			"dout_sclk_fsys_usbdrd30_suspend_clk",
17708c2ecf20Sopenharmony_ci			"mout_sclk_fsys_usb", DIV_TOP_FSYS0, 4, 4),
17718c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC0_SDCLKIN_A, "dout_sclk_fsys_mmc0_sdclkin_a",
17728c2ecf20Sopenharmony_ci			"mout_sclk_fsys_mmc0_sdclkin_b",
17738c2ecf20Sopenharmony_ci			DIV_TOP_FSYS0, 12, 4),
17748c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC0_SDCLKIN_B, "dout_sclk_fsys_mmc0_sdclkin_b",
17758c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc0_sdclkin_a",
17768c2ecf20Sopenharmony_ci			DIV_TOP_FSYS0, 16, 8),
17778c2ecf20Sopenharmony_ci
17788c2ecf20Sopenharmony_ci
17798c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC1_SDCLKIN_A, "dout_sclk_fsys_mmc1_sdclkin_a",
17808c2ecf20Sopenharmony_ci			"mout_sclk_fsys_mmc1_sdclkin_b",
17818c2ecf20Sopenharmony_ci			DIV_TOP_FSYS1, 0, 4),
17828c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC1_SDCLKIN_B, "dout_sclk_fsys_mmc1_sdclkin_b",
17838c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc1_sdclkin_a",
17848c2ecf20Sopenharmony_ci			DIV_TOP_FSYS1, 4, 8),
17858c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC2_SDCLKIN_A, "dout_sclk_fsys_mmc2_sdclkin_a",
17868c2ecf20Sopenharmony_ci			"mout_sclk_fsys_mmc2_sdclkin_b",
17878c2ecf20Sopenharmony_ci			DIV_TOP_FSYS1, 12, 4),
17888c2ecf20Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC2_SDCLKIN_B, "dout_sclk_fsys_mmc2_sdclkin_b",
17898c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc2_sdclkin_a",
17908c2ecf20Sopenharmony_ci			DIV_TOP_FSYS1, 16, 8),
17918c2ecf20Sopenharmony_ci
17928c2ecf20Sopenharmony_ci};
17938c2ecf20Sopenharmony_ci
17948c2ecf20Sopenharmony_cistatic const struct samsung_gate_clock top_gate_clks[] __initconst = {
17958c2ecf20Sopenharmony_ci	GATE(TOP_SCLK_MMC0, "sclk_fsys_mmc0_sdclkin",
17968c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc0_sdclkin_b",
17978c2ecf20Sopenharmony_ci			EN_SCLK_TOP, 7, CLK_SET_RATE_PARENT, 0),
17988c2ecf20Sopenharmony_ci	GATE(TOP_SCLK_MMC1, "sclk_fsys_mmc1_sdclkin",
17998c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc1_sdclkin_b",
18008c2ecf20Sopenharmony_ci			EN_SCLK_TOP, 8, CLK_SET_RATE_PARENT, 0),
18018c2ecf20Sopenharmony_ci	GATE(TOP_SCLK_MMC2, "sclk_fsys_mmc2_sdclkin",
18028c2ecf20Sopenharmony_ci			"dout_sclk_fsys_mmc2_sdclkin_b",
18038c2ecf20Sopenharmony_ci			EN_SCLK_TOP, 9, CLK_SET_RATE_PARENT, 0),
18048c2ecf20Sopenharmony_ci	GATE(TOP_SCLK_FIMD1, "sclk_disp_pixel", "dout_sclk_disp_pixel",
18058c2ecf20Sopenharmony_ci			EN_ACLK_TOP, 10, CLK_IGNORE_UNUSED |
18068c2ecf20Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
18078c2ecf20Sopenharmony_ci};
18088c2ecf20Sopenharmony_ci
18098c2ecf20Sopenharmony_cistatic const struct samsung_pll_clock top_pll_clks[] __initconst = {
18108c2ecf20Sopenharmony_ci	PLL(pll_2550xx, TOP_FOUT_DISP_PLL, "fout_disp_pll", "fin_pll",
18118c2ecf20Sopenharmony_ci		DISP_PLL_LOCK, DISP_PLL_CON0,
18128c2ecf20Sopenharmony_ci		pll2550_24mhz_tbl),
18138c2ecf20Sopenharmony_ci	PLL(pll_2650xx, TOP_FOUT_AUD_PLL, "fout_aud_pll", "fin_pll",
18148c2ecf20Sopenharmony_ci		AUD_PLL_LOCK, AUD_PLL_CON0,
18158c2ecf20Sopenharmony_ci		pll2650_24mhz_tbl),
18168c2ecf20Sopenharmony_ci};
18178c2ecf20Sopenharmony_ci
18188c2ecf20Sopenharmony_cistatic const struct samsung_cmu_info top_cmu __initconst = {
18198c2ecf20Sopenharmony_ci	.pll_clks	= top_pll_clks,
18208c2ecf20Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(top_pll_clks),
18218c2ecf20Sopenharmony_ci	.mux_clks	= top_mux_clks,
18228c2ecf20Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(top_mux_clks),
18238c2ecf20Sopenharmony_ci	.div_clks	= top_div_clks,
18248c2ecf20Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(top_div_clks),
18258c2ecf20Sopenharmony_ci	.gate_clks	= top_gate_clks,
18268c2ecf20Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(top_gate_clks),
18278c2ecf20Sopenharmony_ci	.fixed_clks	= fixed_rate_clks,
18288c2ecf20Sopenharmony_ci	.nr_fixed_clks	= ARRAY_SIZE(fixed_rate_clks),
18298c2ecf20Sopenharmony_ci	.nr_clk_ids	= TOP_NR_CLK,
18308c2ecf20Sopenharmony_ci	.clk_regs	= top_clk_regs,
18318c2ecf20Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(top_clk_regs),
18328c2ecf20Sopenharmony_ci};
18338c2ecf20Sopenharmony_ci
18348c2ecf20Sopenharmony_cistatic void __init exynos5260_clk_top_init(struct device_node *np)
18358c2ecf20Sopenharmony_ci{
18368c2ecf20Sopenharmony_ci	samsung_cmu_register_one(np, &top_cmu);
18378c2ecf20Sopenharmony_ci}
18388c2ecf20Sopenharmony_ci
18398c2ecf20Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_top, "samsung,exynos5260-clock-top",
18408c2ecf20Sopenharmony_ci		exynos5260_clk_top_init);
1841