162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2014 Samsung Electronics Co., Ltd.
462306a36Sopenharmony_ci * Author: Rahul Sharma <rahul.sharma@samsung.com>
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Common Clock Framework support for Exynos5260 SoC.
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/of.h>
1062306a36Sopenharmony_ci#include <linux/of_address.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "clk-exynos5260.h"
1362306a36Sopenharmony_ci#include "clk.h"
1462306a36Sopenharmony_ci#include "clk-pll.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include <dt-bindings/clock/exynos5260-clk.h>
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* NOTE: Must be equal to the last clock ID increased by one */
1962306a36Sopenharmony_ci#define CLKS_NR_TOP			(PHYCLK_USBDRD30_UDRD30_PHYCLOCK + 1)
2062306a36Sopenharmony_ci#define CLKS_NR_EGL			(EGL_DOUT_EGL1 + 1)
2162306a36Sopenharmony_ci#define CLKS_NR_KFC			(KFC_DOUT_KFC1 + 1)
2262306a36Sopenharmony_ci#define CLKS_NR_MIF			(MIF_SCLK_LPDDR3PHY_WRAP_U0 + 1)
2362306a36Sopenharmony_ci#define CLKS_NR_G3D			(G3D_CLK_G3D + 1)
2462306a36Sopenharmony_ci#define CLKS_NR_AUD			(AUD_SCLK_I2S + 1)
2562306a36Sopenharmony_ci#define CLKS_NR_MFC			(MFC_CLK_SMMU2_MFCM0 + 1)
2662306a36Sopenharmony_ci#define CLKS_NR_GSCL			(GSCL_SCLK_CSIS0_WRAP + 1)
2762306a36Sopenharmony_ci#define CLKS_NR_FSYS			(FSYS_PHYCLK_USBHOST20 + 1)
2862306a36Sopenharmony_ci#define CLKS_NR_PERI			(PERI_SCLK_PCM1 + 1)
2962306a36Sopenharmony_ci#define CLKS_NR_DISP			(DISP_MOUT_HDMI_PHY_PIXEL_USER + 1)
3062306a36Sopenharmony_ci#define CLKS_NR_G2D			(G2D_CLK_SMMU3_G2D + 1)
3162306a36Sopenharmony_ci#define CLKS_NR_ISP			(ISP_SCLK_UART_EXT + 1)
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci/*
3462306a36Sopenharmony_ci * Applicable for all 2550 Type PLLS for Exynos5260, listed below
3562306a36Sopenharmony_ci * DISP_PLL, EGL_PLL, KFC_PLL, MEM_PLL, BUS_PLL, MEDIA_PLL, G3D_PLL.
3662306a36Sopenharmony_ci */
3762306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll2550_24mhz_tbl[] __initconst = {
3862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1700000000, 425, 6, 0),
3962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1600000000, 200, 3, 0),
4062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1500000000, 250, 4, 0),
4162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1400000000, 175, 3, 0),
4262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1300000000, 325, 6, 0),
4362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1200000000, 400, 4, 1),
4462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1100000000, 275, 3, 1),
4562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1000000000, 250, 3, 1),
4662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 933000000, 311, 4, 1),
4762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 900000000, 300, 4, 1),
4862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 800000000, 200, 3, 1),
4962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 733000000, 733, 12, 1),
5062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 700000000, 175, 3, 1),
5162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 667000000, 667, 12, 1),
5262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 633000000, 211, 4, 1),
5362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 620000000, 310, 3, 2),
5462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 600000000, 400, 4, 2),
5562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 543000000, 362, 4, 2),
5662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 533000000, 533, 6, 2),
5762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 500000000, 250, 3, 2),
5862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 450000000, 300, 4, 2),
5962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 400000000, 200, 3, 2),
6062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 350000000, 175, 3, 2),
6162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 300000000, 400, 4, 3),
6262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 266000000, 266, 3, 3),
6362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 200000000, 200, 3, 3),
6462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 160000000, 160, 3, 3),
6562306a36Sopenharmony_ci};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci/*
6862306a36Sopenharmony_ci * Applicable for 2650 Type PLL for AUD_PLL.
6962306a36Sopenharmony_ci */
7062306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll2650_24mhz_tbl[] __initconst = {
7162306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1600000000, 200, 3, 0, 0),
7262306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1200000000, 100, 2, 0, 0),
7362306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 1000000000, 250, 3, 1, 0),
7462306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 800000000, 200, 3, 1, 0),
7562306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 600000000, 100, 2, 1, 0),
7662306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 532000000, 266, 3, 2, 0),
7762306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 480000000, 160, 2, 2, 0),
7862306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 432000000, 144, 2, 2, 0),
7962306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 400000000, 200, 3, 2, 0),
8062306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 394073128, 459, 7, 2, 49282),
8162306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 333000000, 111, 2, 2, 0),
8262306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 300000000, 100, 2, 2, 0),
8362306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 266000000, 266, 3, 3, 0),
8462306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 200000000, 200, 3, 3, 0),
8562306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 166000000, 166, 3, 3, 0),
8662306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 133000000, 266, 3, 4, 0),
8762306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 100000000, 200, 3, 4, 0),
8862306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 66000000, 176, 2, 5, 0),
8962306a36Sopenharmony_ci};
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci/* CMU_AUD */
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_cistatic const unsigned long aud_clk_regs[] __initconst = {
9462306a36Sopenharmony_ci	MUX_SEL_AUD,
9562306a36Sopenharmony_ci	DIV_AUD0,
9662306a36Sopenharmony_ci	DIV_AUD1,
9762306a36Sopenharmony_ci	EN_ACLK_AUD,
9862306a36Sopenharmony_ci	EN_PCLK_AUD,
9962306a36Sopenharmony_ci	EN_SCLK_AUD,
10062306a36Sopenharmony_ci	EN_IP_AUD,
10162306a36Sopenharmony_ci};
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciPNAME(mout_aud_pll_user_p) = {"fin_pll", "fout_aud_pll"};
10462306a36Sopenharmony_ciPNAME(mout_sclk_aud_i2s_p) = {"mout_aud_pll_user", "ioclk_i2s_cdclk"};
10562306a36Sopenharmony_ciPNAME(mout_sclk_aud_pcm_p) = {"mout_aud_pll_user", "ioclk_pcm_extclk"};
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_cistatic const struct samsung_mux_clock aud_mux_clks[] __initconst = {
10862306a36Sopenharmony_ci	MUX(AUD_MOUT_AUD_PLL_USER, "mout_aud_pll_user", mout_aud_pll_user_p,
10962306a36Sopenharmony_ci			MUX_SEL_AUD, 0, 1),
11062306a36Sopenharmony_ci	MUX(AUD_MOUT_SCLK_AUD_I2S, "mout_sclk_aud_i2s", mout_sclk_aud_i2s_p,
11162306a36Sopenharmony_ci			MUX_SEL_AUD, 4, 1),
11262306a36Sopenharmony_ci	MUX(AUD_MOUT_SCLK_AUD_PCM, "mout_sclk_aud_pcm", mout_sclk_aud_pcm_p,
11362306a36Sopenharmony_ci			MUX_SEL_AUD, 8, 1),
11462306a36Sopenharmony_ci};
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_cistatic const struct samsung_div_clock aud_div_clks[] __initconst = {
11762306a36Sopenharmony_ci	DIV(AUD_DOUT_ACLK_AUD_131, "dout_aclk_aud_131", "mout_aud_pll_user",
11862306a36Sopenharmony_ci			DIV_AUD0, 0, 4),
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_I2S, "dout_sclk_aud_i2s", "mout_sclk_aud_i2s",
12162306a36Sopenharmony_ci			DIV_AUD1, 0, 4),
12262306a36Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_PCM, "dout_sclk_aud_pcm", "mout_sclk_aud_pcm",
12362306a36Sopenharmony_ci			DIV_AUD1, 4, 8),
12462306a36Sopenharmony_ci	DIV(AUD_DOUT_SCLK_AUD_UART, "dout_sclk_aud_uart", "mout_aud_pll_user",
12562306a36Sopenharmony_ci			DIV_AUD1, 12, 4),
12662306a36Sopenharmony_ci};
12762306a36Sopenharmony_ci
12862306a36Sopenharmony_cistatic const struct samsung_gate_clock aud_gate_clks[] __initconst = {
12962306a36Sopenharmony_ci	GATE(AUD_SCLK_I2S, "sclk_aud_i2s", "dout_sclk_aud_i2s",
13062306a36Sopenharmony_ci			EN_SCLK_AUD, 0, CLK_SET_RATE_PARENT, 0),
13162306a36Sopenharmony_ci	GATE(AUD_SCLK_PCM, "sclk_aud_pcm", "dout_sclk_aud_pcm",
13262306a36Sopenharmony_ci			EN_SCLK_AUD, 1, CLK_SET_RATE_PARENT, 0),
13362306a36Sopenharmony_ci	GATE(AUD_SCLK_AUD_UART, "sclk_aud_uart", "dout_sclk_aud_uart",
13462306a36Sopenharmony_ci			EN_SCLK_AUD, 2, CLK_SET_RATE_PARENT, 0),
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	GATE(AUD_CLK_SRAMC, "clk_sramc", "dout_aclk_aud_131", EN_IP_AUD,
13762306a36Sopenharmony_ci			0, 0, 0),
13862306a36Sopenharmony_ci	GATE(AUD_CLK_DMAC, "clk_dmac", "dout_aclk_aud_131",
13962306a36Sopenharmony_ci			EN_IP_AUD, 1, 0, 0),
14062306a36Sopenharmony_ci	GATE(AUD_CLK_I2S, "clk_i2s", "dout_aclk_aud_131", EN_IP_AUD, 2, 0, 0),
14162306a36Sopenharmony_ci	GATE(AUD_CLK_PCM, "clk_pcm", "dout_aclk_aud_131", EN_IP_AUD, 3, 0, 0),
14262306a36Sopenharmony_ci	GATE(AUD_CLK_AUD_UART, "clk_aud_uart", "dout_aclk_aud_131",
14362306a36Sopenharmony_ci			EN_IP_AUD, 4, 0, 0),
14462306a36Sopenharmony_ci};
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_cistatic const struct samsung_cmu_info aud_cmu __initconst = {
14762306a36Sopenharmony_ci	.mux_clks	= aud_mux_clks,
14862306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(aud_mux_clks),
14962306a36Sopenharmony_ci	.div_clks	= aud_div_clks,
15062306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(aud_div_clks),
15162306a36Sopenharmony_ci	.gate_clks	= aud_gate_clks,
15262306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(aud_gate_clks),
15362306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_AUD,
15462306a36Sopenharmony_ci	.clk_regs	= aud_clk_regs,
15562306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(aud_clk_regs),
15662306a36Sopenharmony_ci};
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_cistatic void __init exynos5260_clk_aud_init(struct device_node *np)
15962306a36Sopenharmony_ci{
16062306a36Sopenharmony_ci	samsung_cmu_register_one(np, &aud_cmu);
16162306a36Sopenharmony_ci}
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_aud, "samsung,exynos5260-clock-aud",
16462306a36Sopenharmony_ci		exynos5260_clk_aud_init);
16562306a36Sopenharmony_ci
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci/* CMU_DISP */
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_cistatic const unsigned long disp_clk_regs[] __initconst = {
17062306a36Sopenharmony_ci	MUX_SEL_DISP0,
17162306a36Sopenharmony_ci	MUX_SEL_DISP1,
17262306a36Sopenharmony_ci	MUX_SEL_DISP2,
17362306a36Sopenharmony_ci	MUX_SEL_DISP3,
17462306a36Sopenharmony_ci	MUX_SEL_DISP4,
17562306a36Sopenharmony_ci	DIV_DISP,
17662306a36Sopenharmony_ci	EN_ACLK_DISP,
17762306a36Sopenharmony_ci	EN_PCLK_DISP,
17862306a36Sopenharmony_ci	EN_SCLK_DISP0,
17962306a36Sopenharmony_ci	EN_SCLK_DISP1,
18062306a36Sopenharmony_ci	EN_IP_DISP,
18162306a36Sopenharmony_ci	EN_IP_DISP_BUS,
18262306a36Sopenharmony_ci};
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch3_txd_clk_user_p) = {"fin_pll",
18562306a36Sopenharmony_ci			"phyclk_dptx_phy_ch3_txd_clk"};
18662306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch2_txd_clk_user_p) = {"fin_pll",
18762306a36Sopenharmony_ci			"phyclk_dptx_phy_ch2_txd_clk"};
18862306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch1_txd_clk_user_p) = {"fin_pll",
18962306a36Sopenharmony_ci			"phyclk_dptx_phy_ch1_txd_clk"};
19062306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_ch0_txd_clk_user_p) = {"fin_pll",
19162306a36Sopenharmony_ci			"phyclk_dptx_phy_ch0_txd_clk"};
19262306a36Sopenharmony_ciPNAME(mout_aclk_disp_222_user_p) = {"fin_pll", "dout_aclk_disp_222"};
19362306a36Sopenharmony_ciPNAME(mout_sclk_disp_pixel_user_p) = {"fin_pll", "dout_sclk_disp_pixel"};
19462306a36Sopenharmony_ciPNAME(mout_aclk_disp_333_user_p) = {"fin_pll", "dout_aclk_disp_333"};
19562306a36Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_tmds_clko_user_p) = {"fin_pll",
19662306a36Sopenharmony_ci			"phyclk_hdmi_phy_tmds_clko"};
19762306a36Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_ref_clko_user_p) = {"fin_pll",
19862306a36Sopenharmony_ci			"phyclk_hdmi_phy_ref_clko"};
19962306a36Sopenharmony_ciPNAME(mout_phyclk_hdmi_phy_pixel_clko_user_p) = {"fin_pll",
20062306a36Sopenharmony_ci			"phyclk_hdmi_phy_pixel_clko"};
20162306a36Sopenharmony_ciPNAME(mout_phyclk_hdmi_link_o_tmds_clkhi_user_p) = {"fin_pll",
20262306a36Sopenharmony_ci			"phyclk_hdmi_link_o_tmds_clkhi"};
20362306a36Sopenharmony_ciPNAME(mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs_p) = {"fin_pll",
20462306a36Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_txbyte_clkhs"};
20562306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_o_ref_clk_24m_user_p) = {"fin_pll",
20662306a36Sopenharmony_ci			"phyclk_dptx_phy_o_ref_clk_24m"};
20762306a36Sopenharmony_ciPNAME(mout_phyclk_dptx_phy_clk_div2_user_p) = {"fin_pll",
20862306a36Sopenharmony_ci			"phyclk_dptx_phy_clk_div2"};
20962306a36Sopenharmony_ciPNAME(mout_sclk_hdmi_pixel_p) = {"mout_sclk_disp_pixel_user",
21062306a36Sopenharmony_ci			"mout_aclk_disp_222_user"};
21162306a36Sopenharmony_ciPNAME(mout_phyclk_mipi_dphy_4lmrxclk_esc0_user_p) = {"fin_pll",
21262306a36Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_rxclkesc0"};
21362306a36Sopenharmony_ciPNAME(mout_sclk_hdmi_spdif_p) = {"fin_pll", "ioclk_spdif_extclk",
21462306a36Sopenharmony_ci			"dout_aclk_peri_aud", "phyclk_hdmi_phy_ref_cko"};
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_cistatic const struct samsung_mux_clock disp_mux_clks[] __initconst = {
21762306a36Sopenharmony_ci	MUX(DISP_MOUT_ACLK_DISP_333_USER, "mout_aclk_disp_333_user",
21862306a36Sopenharmony_ci			mout_aclk_disp_333_user_p,
21962306a36Sopenharmony_ci			MUX_SEL_DISP0, 0, 1),
22062306a36Sopenharmony_ci	MUX(DISP_MOUT_SCLK_DISP_PIXEL_USER, "mout_sclk_disp_pixel_user",
22162306a36Sopenharmony_ci			mout_sclk_disp_pixel_user_p,
22262306a36Sopenharmony_ci			MUX_SEL_DISP0, 4, 1),
22362306a36Sopenharmony_ci	MUX(DISP_MOUT_ACLK_DISP_222_USER, "mout_aclk_disp_222_user",
22462306a36Sopenharmony_ci			mout_aclk_disp_222_user_p,
22562306a36Sopenharmony_ci			MUX_SEL_DISP0, 8, 1),
22662306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH0_TXD_CLK_USER,
22762306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_ch0_txd_clk_user",
22862306a36Sopenharmony_ci			mout_phyclk_dptx_phy_ch0_txd_clk_user_p,
22962306a36Sopenharmony_ci			MUX_SEL_DISP0, 16, 1),
23062306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH1_TXD_CLK_USER,
23162306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_ch1_txd_clk_user",
23262306a36Sopenharmony_ci			mout_phyclk_dptx_phy_ch1_txd_clk_user_p,
23362306a36Sopenharmony_ci			MUX_SEL_DISP0, 20, 1),
23462306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH2_TXD_CLK_USER,
23562306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_ch2_txd_clk_user",
23662306a36Sopenharmony_ci			mout_phyclk_dptx_phy_ch2_txd_clk_user_p,
23762306a36Sopenharmony_ci			MUX_SEL_DISP0, 24, 1),
23862306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CH3_TXD_CLK_USER,
23962306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_ch3_txd_clk_user",
24062306a36Sopenharmony_ci			mout_phyclk_dptx_phy_ch3_txd_clk_user_p,
24162306a36Sopenharmony_ci			MUX_SEL_DISP0, 28, 1),
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_CLK_DIV2_USER,
24462306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_clk_div2_user",
24562306a36Sopenharmony_ci			mout_phyclk_dptx_phy_clk_div2_user_p,
24662306a36Sopenharmony_ci			MUX_SEL_DISP1, 0, 1),
24762306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_DPTX_PHY_O_REF_CLK_24M_USER,
24862306a36Sopenharmony_ci			"mout_phyclk_dptx_phy_o_ref_clk_24m_user",
24962306a36Sopenharmony_ci			mout_phyclk_dptx_phy_o_ref_clk_24m_user_p,
25062306a36Sopenharmony_ci			MUX_SEL_DISP1, 4, 1),
25162306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_MIPI_DPHY_4L_M_TXBYTE_CLKHS,
25262306a36Sopenharmony_ci			"mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs",
25362306a36Sopenharmony_ci			mout_phyclk_mipi_dphy_4l_m_txbyte_clkhs_p,
25462306a36Sopenharmony_ci			MUX_SEL_DISP1, 8, 1),
25562306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_LINK_O_TMDS_CLKHI_USER,
25662306a36Sopenharmony_ci			"mout_phyclk_hdmi_link_o_tmds_clkhi_user",
25762306a36Sopenharmony_ci			mout_phyclk_hdmi_link_o_tmds_clkhi_user_p,
25862306a36Sopenharmony_ci			MUX_SEL_DISP1, 16, 1),
25962306a36Sopenharmony_ci	MUX(DISP_MOUT_HDMI_PHY_PIXEL,
26062306a36Sopenharmony_ci			"mout_phyclk_hdmi_phy_pixel_clko_user",
26162306a36Sopenharmony_ci			mout_phyclk_hdmi_phy_pixel_clko_user_p,
26262306a36Sopenharmony_ci			MUX_SEL_DISP1, 20, 1),
26362306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_PHY_REF_CLKO_USER,
26462306a36Sopenharmony_ci			"mout_phyclk_hdmi_phy_ref_clko_user",
26562306a36Sopenharmony_ci			mout_phyclk_hdmi_phy_ref_clko_user_p,
26662306a36Sopenharmony_ci			MUX_SEL_DISP1, 24, 1),
26762306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_HDMI_PHY_TMDS_CLKO_USER,
26862306a36Sopenharmony_ci			"mout_phyclk_hdmi_phy_tmds_clko_user",
26962306a36Sopenharmony_ci			mout_phyclk_hdmi_phy_tmds_clko_user_p,
27062306a36Sopenharmony_ci			MUX_SEL_DISP1, 28, 1),
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci	MUX(DISP_MOUT_PHYCLK_MIPI_DPHY_4LMRXCLK_ESC0_USER,
27362306a36Sopenharmony_ci			"mout_phyclk_mipi_dphy_4lmrxclk_esc0_user",
27462306a36Sopenharmony_ci			mout_phyclk_mipi_dphy_4lmrxclk_esc0_user_p,
27562306a36Sopenharmony_ci			MUX_SEL_DISP2, 0, 1),
27662306a36Sopenharmony_ci	MUX(DISP_MOUT_SCLK_HDMI_PIXEL, "mout_sclk_hdmi_pixel",
27762306a36Sopenharmony_ci			mout_sclk_hdmi_pixel_p,
27862306a36Sopenharmony_ci			MUX_SEL_DISP2, 4, 1),
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci	MUX(DISP_MOUT_SCLK_HDMI_SPDIF, "mout_sclk_hdmi_spdif",
28162306a36Sopenharmony_ci			mout_sclk_hdmi_spdif_p,
28262306a36Sopenharmony_ci			MUX_SEL_DISP4, 4, 2),
28362306a36Sopenharmony_ci};
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_cistatic const struct samsung_div_clock disp_div_clks[] __initconst = {
28662306a36Sopenharmony_ci	DIV(DISP_DOUT_PCLK_DISP_111, "dout_pclk_disp_111",
28762306a36Sopenharmony_ci			"mout_aclk_disp_222_user",
28862306a36Sopenharmony_ci			DIV_DISP, 8, 4),
28962306a36Sopenharmony_ci	DIV(DISP_DOUT_SCLK_FIMD1_EXTCLKPLL, "dout_sclk_fimd1_extclkpll",
29062306a36Sopenharmony_ci			"mout_sclk_disp_pixel_user",
29162306a36Sopenharmony_ci			DIV_DISP, 12, 4),
29262306a36Sopenharmony_ci	DIV(DISP_DOUT_SCLK_HDMI_PHY_PIXEL_CLKI,
29362306a36Sopenharmony_ci			"dout_sclk_hdmi_phy_pixel_clki",
29462306a36Sopenharmony_ci			"mout_sclk_hdmi_pixel",
29562306a36Sopenharmony_ci			DIV_DISP, 16, 4),
29662306a36Sopenharmony_ci};
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_cistatic const struct samsung_gate_clock disp_gate_clks[] __initconst = {
29962306a36Sopenharmony_ci	GATE(DISP_MOUT_HDMI_PHY_PIXEL_USER, "sclk_hdmi_link_i_pixel",
30062306a36Sopenharmony_ci			"mout_phyclk_hdmi_phy_pixel_clko_user",
30162306a36Sopenharmony_ci			EN_SCLK_DISP0, 26, CLK_SET_RATE_PARENT, 0),
30262306a36Sopenharmony_ci	GATE(DISP_SCLK_PIXEL, "sclk_hdmi_phy_pixel_clki",
30362306a36Sopenharmony_ci			"dout_sclk_hdmi_phy_pixel_clki",
30462306a36Sopenharmony_ci			EN_SCLK_DISP0, 29, CLK_SET_RATE_PARENT, 0),
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci	GATE(DISP_CLK_DP, "clk_dptx_link", "mout_aclk_disp_222_user",
30762306a36Sopenharmony_ci			EN_IP_DISP, 4, 0, 0),
30862306a36Sopenharmony_ci	GATE(DISP_CLK_DPPHY, "clk_dptx_phy", "mout_aclk_disp_222_user",
30962306a36Sopenharmony_ci			EN_IP_DISP, 5, 0, 0),
31062306a36Sopenharmony_ci	GATE(DISP_CLK_DSIM1, "clk_dsim1", "mout_aclk_disp_222_user",
31162306a36Sopenharmony_ci			EN_IP_DISP, 6, 0, 0),
31262306a36Sopenharmony_ci	GATE(DISP_CLK_FIMD1, "clk_fimd1", "mout_aclk_disp_222_user",
31362306a36Sopenharmony_ci			EN_IP_DISP, 7, 0, 0),
31462306a36Sopenharmony_ci	GATE(DISP_CLK_HDMI, "clk_hdmi", "mout_aclk_disp_222_user",
31562306a36Sopenharmony_ci			EN_IP_DISP, 8, 0, 0),
31662306a36Sopenharmony_ci	GATE(DISP_CLK_HDMIPHY, "clk_hdmiphy", "mout_aclk_disp_222_user",
31762306a36Sopenharmony_ci			EN_IP_DISP, 9, 0, 0),
31862306a36Sopenharmony_ci	GATE(DISP_CLK_MIPIPHY, "clk_mipi_dphy", "mout_aclk_disp_222_user",
31962306a36Sopenharmony_ci			EN_IP_DISP, 10, 0, 0),
32062306a36Sopenharmony_ci	GATE(DISP_CLK_MIXER, "clk_mixer", "mout_aclk_disp_222_user",
32162306a36Sopenharmony_ci			EN_IP_DISP, 11, 0, 0),
32262306a36Sopenharmony_ci	GATE(DISP_CLK_PIXEL_DISP, "clk_pixel_disp", "mout_aclk_disp_222_user",
32362306a36Sopenharmony_ci			EN_IP_DISP, 12, CLK_IGNORE_UNUSED, 0),
32462306a36Sopenharmony_ci	GATE(DISP_CLK_PIXEL_MIXER, "clk_pixel_mixer", "mout_aclk_disp_222_user",
32562306a36Sopenharmony_ci			EN_IP_DISP, 13, CLK_IGNORE_UNUSED, 0),
32662306a36Sopenharmony_ci	GATE(DISP_CLK_SMMU_FIMD1M0, "clk_smmu3_fimd1m0",
32762306a36Sopenharmony_ci			"mout_aclk_disp_222_user",
32862306a36Sopenharmony_ci			EN_IP_DISP, 22, 0, 0),
32962306a36Sopenharmony_ci	GATE(DISP_CLK_SMMU_FIMD1M1, "clk_smmu3_fimd1m1",
33062306a36Sopenharmony_ci			"mout_aclk_disp_222_user",
33162306a36Sopenharmony_ci			EN_IP_DISP, 23, 0, 0),
33262306a36Sopenharmony_ci	GATE(DISP_CLK_SMMU_TV, "clk_smmu3_tv", "mout_aclk_disp_222_user",
33362306a36Sopenharmony_ci			EN_IP_DISP, 25, 0, 0),
33462306a36Sopenharmony_ci};
33562306a36Sopenharmony_ci
33662306a36Sopenharmony_cistatic const struct samsung_cmu_info disp_cmu __initconst = {
33762306a36Sopenharmony_ci	.mux_clks	= disp_mux_clks,
33862306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(disp_mux_clks),
33962306a36Sopenharmony_ci	.div_clks	= disp_div_clks,
34062306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(disp_div_clks),
34162306a36Sopenharmony_ci	.gate_clks	= disp_gate_clks,
34262306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(disp_gate_clks),
34362306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_DISP,
34462306a36Sopenharmony_ci	.clk_regs	= disp_clk_regs,
34562306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(disp_clk_regs),
34662306a36Sopenharmony_ci};
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_cistatic void __init exynos5260_clk_disp_init(struct device_node *np)
34962306a36Sopenharmony_ci{
35062306a36Sopenharmony_ci	samsung_cmu_register_one(np, &disp_cmu);
35162306a36Sopenharmony_ci}
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_disp, "samsung,exynos5260-clock-disp",
35462306a36Sopenharmony_ci		exynos5260_clk_disp_init);
35562306a36Sopenharmony_ci
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci/* CMU_EGL */
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_cistatic const unsigned long egl_clk_regs[] __initconst = {
36062306a36Sopenharmony_ci	EGL_PLL_LOCK,
36162306a36Sopenharmony_ci	EGL_PLL_CON0,
36262306a36Sopenharmony_ci	EGL_PLL_CON1,
36362306a36Sopenharmony_ci	EGL_PLL_FREQ_DET,
36462306a36Sopenharmony_ci	MUX_SEL_EGL,
36562306a36Sopenharmony_ci	MUX_ENABLE_EGL,
36662306a36Sopenharmony_ci	DIV_EGL,
36762306a36Sopenharmony_ci	DIV_EGL_PLL_FDET,
36862306a36Sopenharmony_ci	EN_ACLK_EGL,
36962306a36Sopenharmony_ci	EN_PCLK_EGL,
37062306a36Sopenharmony_ci	EN_SCLK_EGL,
37162306a36Sopenharmony_ci};
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ciPNAME(mout_egl_b_p) = {"mout_egl_pll", "dout_bus_pll"};
37462306a36Sopenharmony_ciPNAME(mout_egl_pll_p) = {"fin_pll", "fout_egl_pll"};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_cistatic const struct samsung_mux_clock egl_mux_clks[] __initconst = {
37762306a36Sopenharmony_ci	MUX(EGL_MOUT_EGL_PLL, "mout_egl_pll", mout_egl_pll_p,
37862306a36Sopenharmony_ci			MUX_SEL_EGL, 4, 1),
37962306a36Sopenharmony_ci	MUX(EGL_MOUT_EGL_B, "mout_egl_b", mout_egl_b_p, MUX_SEL_EGL, 16, 1),
38062306a36Sopenharmony_ci};
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_cistatic const struct samsung_div_clock egl_div_clks[] __initconst = {
38362306a36Sopenharmony_ci	DIV(EGL_DOUT_EGL1, "dout_egl1", "mout_egl_b", DIV_EGL, 0, 3),
38462306a36Sopenharmony_ci	DIV(EGL_DOUT_EGL2, "dout_egl2", "dout_egl1", DIV_EGL, 4, 3),
38562306a36Sopenharmony_ci	DIV(EGL_DOUT_ACLK_EGL, "dout_aclk_egl", "dout_egl2", DIV_EGL, 8, 3),
38662306a36Sopenharmony_ci	DIV(EGL_DOUT_PCLK_EGL, "dout_pclk_egl", "dout_egl_atclk",
38762306a36Sopenharmony_ci			DIV_EGL, 12, 3),
38862306a36Sopenharmony_ci	DIV(EGL_DOUT_EGL_ATCLK, "dout_egl_atclk", "dout_egl2", DIV_EGL, 16, 3),
38962306a36Sopenharmony_ci	DIV(EGL_DOUT_EGL_PCLK_DBG, "dout_egl_pclk_dbg", "dout_egl_atclk",
39062306a36Sopenharmony_ci			DIV_EGL, 20, 3),
39162306a36Sopenharmony_ci	DIV(EGL_DOUT_EGL_PLL, "dout_egl_pll", "mout_egl_b", DIV_EGL, 24, 3),
39262306a36Sopenharmony_ci};
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_cistatic const struct samsung_pll_clock egl_pll_clks[] __initconst = {
39562306a36Sopenharmony_ci	PLL(pll_2550xx, EGL_FOUT_EGL_PLL, "fout_egl_pll", "fin_pll",
39662306a36Sopenharmony_ci		EGL_PLL_LOCK, EGL_PLL_CON0,
39762306a36Sopenharmony_ci		pll2550_24mhz_tbl),
39862306a36Sopenharmony_ci};
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_cistatic const struct samsung_cmu_info egl_cmu __initconst = {
40162306a36Sopenharmony_ci	.pll_clks	= egl_pll_clks,
40262306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(egl_pll_clks),
40362306a36Sopenharmony_ci	.mux_clks	= egl_mux_clks,
40462306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(egl_mux_clks),
40562306a36Sopenharmony_ci	.div_clks	= egl_div_clks,
40662306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(egl_div_clks),
40762306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_EGL,
40862306a36Sopenharmony_ci	.clk_regs	= egl_clk_regs,
40962306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(egl_clk_regs),
41062306a36Sopenharmony_ci};
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_cistatic void __init exynos5260_clk_egl_init(struct device_node *np)
41362306a36Sopenharmony_ci{
41462306a36Sopenharmony_ci	samsung_cmu_register_one(np, &egl_cmu);
41562306a36Sopenharmony_ci}
41662306a36Sopenharmony_ci
41762306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_egl, "samsung,exynos5260-clock-egl",
41862306a36Sopenharmony_ci		exynos5260_clk_egl_init);
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ci
42162306a36Sopenharmony_ci/* CMU_FSYS */
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_cistatic const unsigned long fsys_clk_regs[] __initconst = {
42462306a36Sopenharmony_ci	MUX_SEL_FSYS0,
42562306a36Sopenharmony_ci	MUX_SEL_FSYS1,
42662306a36Sopenharmony_ci	EN_ACLK_FSYS,
42762306a36Sopenharmony_ci	EN_ACLK_FSYS_SECURE_RTIC,
42862306a36Sopenharmony_ci	EN_ACLK_FSYS_SECURE_SMMU_RTIC,
42962306a36Sopenharmony_ci	EN_SCLK_FSYS,
43062306a36Sopenharmony_ci	EN_IP_FSYS,
43162306a36Sopenharmony_ci	EN_IP_FSYS_SECURE_RTIC,
43262306a36Sopenharmony_ci	EN_IP_FSYS_SECURE_SMMU_RTIC,
43362306a36Sopenharmony_ci};
43462306a36Sopenharmony_ci
43562306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phyclk_user_p) = {"fin_pll",
43662306a36Sopenharmony_ci			"phyclk_usbhost20_phy_phyclock"};
43762306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_freeclk_user_p) = {"fin_pll",
43862306a36Sopenharmony_ci			"phyclk_usbhost20_phy_freeclk"};
43962306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_clk48mohci_user_p) = {"fin_pll",
44062306a36Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci"};
44162306a36Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_pipe_pclk_user_p) = {"fin_pll",
44262306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk"};
44362306a36Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_phyclock_user_p) = {"fin_pll",
44462306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock"};
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_cistatic const struct samsung_mux_clock fsys_mux_clks[] __initconst = {
44762306a36Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBDRD30_PHYCLOCK_USER,
44862306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
44962306a36Sopenharmony_ci			mout_phyclk_usbdrd30_phyclock_user_p,
45062306a36Sopenharmony_ci			MUX_SEL_FSYS1, 0, 1),
45162306a36Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBDRD30_PIPE_PCLK_USER,
45262306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_pipe_pclk_user",
45362306a36Sopenharmony_ci			mout_phyclk_usbdrd30_pipe_pclk_user_p,
45462306a36Sopenharmony_ci			MUX_SEL_FSYS1, 4, 1),
45562306a36Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_CLK48MOHCI_USER,
45662306a36Sopenharmony_ci			"mout_phyclk_usbhost20_clk48mohci_user",
45762306a36Sopenharmony_ci			mout_phyclk_usbhost20_clk48mohci_user_p,
45862306a36Sopenharmony_ci			MUX_SEL_FSYS1, 8, 1),
45962306a36Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_FREECLK_USER,
46062306a36Sopenharmony_ci			"mout_phyclk_usbhost20_freeclk_user",
46162306a36Sopenharmony_ci			mout_phyclk_usbhost20_freeclk_user_p,
46262306a36Sopenharmony_ci			MUX_SEL_FSYS1, 12, 1),
46362306a36Sopenharmony_ci	MUX(FSYS_MOUT_PHYCLK_USBHOST20_PHYCLK_USER,
46462306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phyclk_user",
46562306a36Sopenharmony_ci			mout_phyclk_usbhost20_phyclk_user_p,
46662306a36Sopenharmony_ci			MUX_SEL_FSYS1, 16, 1),
46762306a36Sopenharmony_ci};
46862306a36Sopenharmony_ci
46962306a36Sopenharmony_cistatic const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
47062306a36Sopenharmony_ci	GATE(FSYS_PHYCLK_USBHOST20, "phyclk_usbhost20_phyclock",
47162306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
47262306a36Sopenharmony_ci			EN_SCLK_FSYS, 1, 0, 0),
47362306a36Sopenharmony_ci	GATE(FSYS_PHYCLK_USBDRD30, "phyclk_usbdrd30_udrd30_phyclock_g",
47462306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_phyclock_user",
47562306a36Sopenharmony_ci			EN_SCLK_FSYS, 7, 0, 0),
47662306a36Sopenharmony_ci
47762306a36Sopenharmony_ci	GATE(FSYS_CLK_MMC0, "clk_mmc0", "dout_aclk_fsys_200",
47862306a36Sopenharmony_ci			EN_IP_FSYS, 6, 0, 0),
47962306a36Sopenharmony_ci	GATE(FSYS_CLK_MMC1, "clk_mmc1", "dout_aclk_fsys_200",
48062306a36Sopenharmony_ci			EN_IP_FSYS, 7, 0, 0),
48162306a36Sopenharmony_ci	GATE(FSYS_CLK_MMC2, "clk_mmc2", "dout_aclk_fsys_200",
48262306a36Sopenharmony_ci			EN_IP_FSYS, 8, 0, 0),
48362306a36Sopenharmony_ci	GATE(FSYS_CLK_PDMA, "clk_pdma", "dout_aclk_fsys_200",
48462306a36Sopenharmony_ci			EN_IP_FSYS, 9, 0, 0),
48562306a36Sopenharmony_ci	GATE(FSYS_CLK_SROMC, "clk_sromc", "dout_aclk_fsys_200",
48662306a36Sopenharmony_ci			EN_IP_FSYS, 13, 0, 0),
48762306a36Sopenharmony_ci	GATE(FSYS_CLK_USBDRD30, "clk_usbdrd30", "dout_aclk_fsys_200",
48862306a36Sopenharmony_ci			EN_IP_FSYS, 14, 0, 0),
48962306a36Sopenharmony_ci	GATE(FSYS_CLK_USBHOST20, "clk_usbhost20", "dout_aclk_fsys_200",
49062306a36Sopenharmony_ci			EN_IP_FSYS, 15, 0, 0),
49162306a36Sopenharmony_ci	GATE(FSYS_CLK_USBLINK, "clk_usblink", "dout_aclk_fsys_200",
49262306a36Sopenharmony_ci			EN_IP_FSYS, 18, 0, 0),
49362306a36Sopenharmony_ci	GATE(FSYS_CLK_TSI, "clk_tsi", "dout_aclk_fsys_200",
49462306a36Sopenharmony_ci			EN_IP_FSYS, 20, 0, 0),
49562306a36Sopenharmony_ci
49662306a36Sopenharmony_ci	GATE(FSYS_CLK_RTIC, "clk_rtic", "dout_aclk_fsys_200",
49762306a36Sopenharmony_ci			EN_IP_FSYS_SECURE_RTIC, 11, 0, 0),
49862306a36Sopenharmony_ci	GATE(FSYS_CLK_SMMU_RTIC, "clk_smmu_rtic", "dout_aclk_fsys_200",
49962306a36Sopenharmony_ci			EN_IP_FSYS_SECURE_SMMU_RTIC, 12, 0, 0),
50062306a36Sopenharmony_ci};
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_cistatic const struct samsung_cmu_info fsys_cmu __initconst = {
50362306a36Sopenharmony_ci	.mux_clks	= fsys_mux_clks,
50462306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(fsys_mux_clks),
50562306a36Sopenharmony_ci	.gate_clks	= fsys_gate_clks,
50662306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(fsys_gate_clks),
50762306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_FSYS,
50862306a36Sopenharmony_ci	.clk_regs	= fsys_clk_regs,
50962306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(fsys_clk_regs),
51062306a36Sopenharmony_ci};
51162306a36Sopenharmony_ci
51262306a36Sopenharmony_cistatic void __init exynos5260_clk_fsys_init(struct device_node *np)
51362306a36Sopenharmony_ci{
51462306a36Sopenharmony_ci	samsung_cmu_register_one(np, &fsys_cmu);
51562306a36Sopenharmony_ci}
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_fsys, "samsung,exynos5260-clock-fsys",
51862306a36Sopenharmony_ci		exynos5260_clk_fsys_init);
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci/* CMU_G2D */
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_cistatic const unsigned long g2d_clk_regs[] __initconst = {
52462306a36Sopenharmony_ci	MUX_SEL_G2D,
52562306a36Sopenharmony_ci	MUX_STAT_G2D,
52662306a36Sopenharmony_ci	DIV_G2D,
52762306a36Sopenharmony_ci	EN_ACLK_G2D,
52862306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SSS,
52962306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SLIM_SSS,
53062306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_SLIM_SSS,
53162306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_SSS,
53262306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_MDMA,
53362306a36Sopenharmony_ci	EN_ACLK_G2D_SECURE_SMMU_G2D,
53462306a36Sopenharmony_ci	EN_PCLK_G2D,
53562306a36Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_SLIM_SSS,
53662306a36Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_SSS,
53762306a36Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_MDMA,
53862306a36Sopenharmony_ci	EN_PCLK_G2D_SECURE_SMMU_G2D,
53962306a36Sopenharmony_ci	EN_IP_G2D,
54062306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SSS,
54162306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SLIM_SSS,
54262306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_SLIM_SSS,
54362306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_SSS,
54462306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_MDMA,
54562306a36Sopenharmony_ci	EN_IP_G2D_SECURE_SMMU_G2D,
54662306a36Sopenharmony_ci};
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ciPNAME(mout_aclk_g2d_333_user_p) = {"fin_pll", "dout_aclk_g2d_333"};
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_cistatic const struct samsung_mux_clock g2d_mux_clks[] __initconst = {
55162306a36Sopenharmony_ci	MUX(G2D_MOUT_ACLK_G2D_333_USER, "mout_aclk_g2d_333_user",
55262306a36Sopenharmony_ci			mout_aclk_g2d_333_user_p,
55362306a36Sopenharmony_ci			MUX_SEL_G2D, 0, 1),
55462306a36Sopenharmony_ci};
55562306a36Sopenharmony_ci
55662306a36Sopenharmony_cistatic const struct samsung_div_clock g2d_div_clks[] __initconst = {
55762306a36Sopenharmony_ci	DIV(G2D_DOUT_PCLK_G2D_83, "dout_pclk_g2d_83", "mout_aclk_g2d_333_user",
55862306a36Sopenharmony_ci			DIV_G2D, 0, 3),
55962306a36Sopenharmony_ci};
56062306a36Sopenharmony_ci
56162306a36Sopenharmony_cistatic const struct samsung_gate_clock g2d_gate_clks[] __initconst = {
56262306a36Sopenharmony_ci	GATE(G2D_CLK_G2D, "clk_g2d", "mout_aclk_g2d_333_user",
56362306a36Sopenharmony_ci			EN_IP_G2D, 4, 0, 0),
56462306a36Sopenharmony_ci	GATE(G2D_CLK_JPEG, "clk_jpeg", "mout_aclk_g2d_333_user",
56562306a36Sopenharmony_ci			EN_IP_G2D, 5, 0, 0),
56662306a36Sopenharmony_ci	GATE(G2D_CLK_MDMA, "clk_mdma", "mout_aclk_g2d_333_user",
56762306a36Sopenharmony_ci			EN_IP_G2D, 6, 0, 0),
56862306a36Sopenharmony_ci	GATE(G2D_CLK_SMMU3_JPEG, "clk_smmu3_jpeg", "mout_aclk_g2d_333_user",
56962306a36Sopenharmony_ci			EN_IP_G2D, 16, 0, 0),
57062306a36Sopenharmony_ci
57162306a36Sopenharmony_ci	GATE(G2D_CLK_SSS, "clk_sss", "mout_aclk_g2d_333_user",
57262306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SSS, 17, 0, 0),
57362306a36Sopenharmony_ci
57462306a36Sopenharmony_ci	GATE(G2D_CLK_SLIM_SSS, "clk_slim_sss", "mout_aclk_g2d_333_user",
57562306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SLIM_SSS, 11, 0, 0),
57662306a36Sopenharmony_ci
57762306a36Sopenharmony_ci	GATE(G2D_CLK_SMMU_SLIM_SSS, "clk_smmu_slim_sss",
57862306a36Sopenharmony_ci			"mout_aclk_g2d_333_user",
57962306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_SLIM_SSS, 13, 0, 0),
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ci	GATE(G2D_CLK_SMMU_SSS, "clk_smmu_sss", "mout_aclk_g2d_333_user",
58262306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_SSS, 14, 0, 0),
58362306a36Sopenharmony_ci
58462306a36Sopenharmony_ci	GATE(G2D_CLK_SMMU_MDMA, "clk_smmu_mdma", "mout_aclk_g2d_333_user",
58562306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_MDMA, 12, 0, 0),
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci	GATE(G2D_CLK_SMMU3_G2D, "clk_smmu3_g2d", "mout_aclk_g2d_333_user",
58862306a36Sopenharmony_ci			EN_IP_G2D_SECURE_SMMU_G2D, 15, 0, 0),
58962306a36Sopenharmony_ci};
59062306a36Sopenharmony_ci
59162306a36Sopenharmony_cistatic const struct samsung_cmu_info g2d_cmu __initconst = {
59262306a36Sopenharmony_ci	.mux_clks	= g2d_mux_clks,
59362306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(g2d_mux_clks),
59462306a36Sopenharmony_ci	.div_clks	= g2d_div_clks,
59562306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(g2d_div_clks),
59662306a36Sopenharmony_ci	.gate_clks	= g2d_gate_clks,
59762306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(g2d_gate_clks),
59862306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_G2D,
59962306a36Sopenharmony_ci	.clk_regs	= g2d_clk_regs,
60062306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(g2d_clk_regs),
60162306a36Sopenharmony_ci};
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_cistatic void __init exynos5260_clk_g2d_init(struct device_node *np)
60462306a36Sopenharmony_ci{
60562306a36Sopenharmony_ci	samsung_cmu_register_one(np, &g2d_cmu);
60662306a36Sopenharmony_ci}
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_g2d, "samsung,exynos5260-clock-g2d",
60962306a36Sopenharmony_ci		exynos5260_clk_g2d_init);
61062306a36Sopenharmony_ci
61162306a36Sopenharmony_ci
61262306a36Sopenharmony_ci/* CMU_G3D */
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_cistatic const unsigned long g3d_clk_regs[] __initconst = {
61562306a36Sopenharmony_ci	G3D_PLL_LOCK,
61662306a36Sopenharmony_ci	G3D_PLL_CON0,
61762306a36Sopenharmony_ci	G3D_PLL_CON1,
61862306a36Sopenharmony_ci	G3D_PLL_FDET,
61962306a36Sopenharmony_ci	MUX_SEL_G3D,
62062306a36Sopenharmony_ci	DIV_G3D,
62162306a36Sopenharmony_ci	DIV_G3D_PLL_FDET,
62262306a36Sopenharmony_ci	EN_ACLK_G3D,
62362306a36Sopenharmony_ci	EN_PCLK_G3D,
62462306a36Sopenharmony_ci	EN_SCLK_G3D,
62562306a36Sopenharmony_ci	EN_IP_G3D,
62662306a36Sopenharmony_ci};
62762306a36Sopenharmony_ci
62862306a36Sopenharmony_ciPNAME(mout_g3d_pll_p) = {"fin_pll", "fout_g3d_pll"};
62962306a36Sopenharmony_ci
63062306a36Sopenharmony_cistatic const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
63162306a36Sopenharmony_ci	MUX(G3D_MOUT_G3D_PLL, "mout_g3d_pll", mout_g3d_pll_p,
63262306a36Sopenharmony_ci			MUX_SEL_G3D, 0, 1),
63362306a36Sopenharmony_ci};
63462306a36Sopenharmony_ci
63562306a36Sopenharmony_cistatic const struct samsung_div_clock g3d_div_clks[] __initconst = {
63662306a36Sopenharmony_ci	DIV(G3D_DOUT_PCLK_G3D, "dout_pclk_g3d", "dout_aclk_g3d", DIV_G3D, 0, 3),
63762306a36Sopenharmony_ci	DIV(G3D_DOUT_ACLK_G3D, "dout_aclk_g3d", "mout_g3d_pll", DIV_G3D, 4, 3),
63862306a36Sopenharmony_ci};
63962306a36Sopenharmony_ci
64062306a36Sopenharmony_cistatic const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
64162306a36Sopenharmony_ci	GATE(G3D_CLK_G3D, "clk_g3d", "dout_aclk_g3d", EN_IP_G3D, 2, 0, 0),
64262306a36Sopenharmony_ci	GATE(G3D_CLK_G3D_HPM, "clk_g3d_hpm", "dout_aclk_g3d",
64362306a36Sopenharmony_ci			EN_IP_G3D, 3, 0, 0),
64462306a36Sopenharmony_ci};
64562306a36Sopenharmony_ci
64662306a36Sopenharmony_cistatic const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
64762306a36Sopenharmony_ci	PLL(pll_2550, G3D_FOUT_G3D_PLL, "fout_g3d_pll", "fin_pll",
64862306a36Sopenharmony_ci		G3D_PLL_LOCK, G3D_PLL_CON0,
64962306a36Sopenharmony_ci		pll2550_24mhz_tbl),
65062306a36Sopenharmony_ci};
65162306a36Sopenharmony_ci
65262306a36Sopenharmony_cistatic const struct samsung_cmu_info g3d_cmu __initconst = {
65362306a36Sopenharmony_ci	.pll_clks	= g3d_pll_clks,
65462306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(g3d_pll_clks),
65562306a36Sopenharmony_ci	.mux_clks	= g3d_mux_clks,
65662306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(g3d_mux_clks),
65762306a36Sopenharmony_ci	.div_clks	= g3d_div_clks,
65862306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(g3d_div_clks),
65962306a36Sopenharmony_ci	.gate_clks	= g3d_gate_clks,
66062306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(g3d_gate_clks),
66162306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_G3D,
66262306a36Sopenharmony_ci	.clk_regs	= g3d_clk_regs,
66362306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(g3d_clk_regs),
66462306a36Sopenharmony_ci};
66562306a36Sopenharmony_ci
66662306a36Sopenharmony_cistatic void __init exynos5260_clk_g3d_init(struct device_node *np)
66762306a36Sopenharmony_ci{
66862306a36Sopenharmony_ci	samsung_cmu_register_one(np, &g3d_cmu);
66962306a36Sopenharmony_ci}
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_g3d, "samsung,exynos5260-clock-g3d",
67262306a36Sopenharmony_ci		exynos5260_clk_g3d_init);
67362306a36Sopenharmony_ci
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_ci/* CMU_GSCL */
67662306a36Sopenharmony_ci
67762306a36Sopenharmony_cistatic const unsigned long gscl_clk_regs[] __initconst = {
67862306a36Sopenharmony_ci	MUX_SEL_GSCL,
67962306a36Sopenharmony_ci	DIV_GSCL,
68062306a36Sopenharmony_ci	EN_ACLK_GSCL,
68162306a36Sopenharmony_ci	EN_ACLK_GSCL_FIMC,
68262306a36Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_GSCL0,
68362306a36Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_GSCL1,
68462306a36Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_MSCL0,
68562306a36Sopenharmony_ci	EN_ACLK_GSCL_SECURE_SMMU_MSCL1,
68662306a36Sopenharmony_ci	EN_PCLK_GSCL,
68762306a36Sopenharmony_ci	EN_PCLK_GSCL_FIMC,
68862306a36Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_GSCL0,
68962306a36Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_GSCL1,
69062306a36Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_MSCL0,
69162306a36Sopenharmony_ci	EN_PCLK_GSCL_SECURE_SMMU_MSCL1,
69262306a36Sopenharmony_ci	EN_SCLK_GSCL,
69362306a36Sopenharmony_ci	EN_SCLK_GSCL_FIMC,
69462306a36Sopenharmony_ci	EN_IP_GSCL,
69562306a36Sopenharmony_ci	EN_IP_GSCL_FIMC,
69662306a36Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_GSCL0,
69762306a36Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_GSCL1,
69862306a36Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_MSCL0,
69962306a36Sopenharmony_ci	EN_IP_GSCL_SECURE_SMMU_MSCL1,
70062306a36Sopenharmony_ci};
70162306a36Sopenharmony_ci
70262306a36Sopenharmony_ciPNAME(mout_aclk_gscl_333_user_p) = {"fin_pll", "dout_aclk_gscl_333"};
70362306a36Sopenharmony_ciPNAME(mout_aclk_m2m_400_user_p) = {"fin_pll", "dout_aclk_gscl_400"};
70462306a36Sopenharmony_ciPNAME(mout_aclk_gscl_fimc_user_p) = {"fin_pll", "dout_aclk_gscl_400"};
70562306a36Sopenharmony_ciPNAME(mout_aclk_csis_p) = {"dout_aclk_csis_200", "mout_aclk_gscl_fimc_user"};
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_cistatic const struct samsung_mux_clock gscl_mux_clks[] __initconst = {
70862306a36Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_GSCL_333_USER, "mout_aclk_gscl_333_user",
70962306a36Sopenharmony_ci			mout_aclk_gscl_333_user_p,
71062306a36Sopenharmony_ci			MUX_SEL_GSCL, 0, 1),
71162306a36Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_M2M_400_USER, "mout_aclk_m2m_400_user",
71262306a36Sopenharmony_ci			mout_aclk_m2m_400_user_p,
71362306a36Sopenharmony_ci			MUX_SEL_GSCL, 4, 1),
71462306a36Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_GSCL_FIMC_USER, "mout_aclk_gscl_fimc_user",
71562306a36Sopenharmony_ci			mout_aclk_gscl_fimc_user_p,
71662306a36Sopenharmony_ci			MUX_SEL_GSCL, 8, 1),
71762306a36Sopenharmony_ci	MUX(GSCL_MOUT_ACLK_CSIS, "mout_aclk_csis", mout_aclk_csis_p,
71862306a36Sopenharmony_ci			MUX_SEL_GSCL, 24, 1),
71962306a36Sopenharmony_ci};
72062306a36Sopenharmony_ci
72162306a36Sopenharmony_cistatic const struct samsung_div_clock gscl_div_clks[] __initconst = {
72262306a36Sopenharmony_ci	DIV(GSCL_DOUT_PCLK_M2M_100, "dout_pclk_m2m_100",
72362306a36Sopenharmony_ci			"mout_aclk_m2m_400_user",
72462306a36Sopenharmony_ci			DIV_GSCL, 0, 3),
72562306a36Sopenharmony_ci	DIV(GSCL_DOUT_ACLK_CSIS_200, "dout_aclk_csis_200",
72662306a36Sopenharmony_ci			"mout_aclk_m2m_400_user",
72762306a36Sopenharmony_ci			DIV_GSCL, 4, 3),
72862306a36Sopenharmony_ci};
72962306a36Sopenharmony_ci
73062306a36Sopenharmony_cistatic const struct samsung_gate_clock gscl_gate_clks[] __initconst = {
73162306a36Sopenharmony_ci	GATE(GSCL_SCLK_CSIS0_WRAP, "sclk_csis0_wrap", "dout_aclk_csis_200",
73262306a36Sopenharmony_ci			EN_SCLK_GSCL_FIMC, 0, CLK_SET_RATE_PARENT, 0),
73362306a36Sopenharmony_ci	GATE(GSCL_SCLK_CSIS1_WRAP, "sclk_csis1_wrap", "dout_aclk_csis_200",
73462306a36Sopenharmony_ci			EN_SCLK_GSCL_FIMC, 1, CLK_SET_RATE_PARENT, 0),
73562306a36Sopenharmony_ci
73662306a36Sopenharmony_ci	GATE(GSCL_CLK_GSCL0, "clk_gscl0", "mout_aclk_gscl_333_user",
73762306a36Sopenharmony_ci			EN_IP_GSCL, 2, 0, 0),
73862306a36Sopenharmony_ci	GATE(GSCL_CLK_GSCL1, "clk_gscl1", "mout_aclk_gscl_333_user",
73962306a36Sopenharmony_ci			EN_IP_GSCL, 3, 0, 0),
74062306a36Sopenharmony_ci	GATE(GSCL_CLK_MSCL0, "clk_mscl0", "mout_aclk_gscl_333_user",
74162306a36Sopenharmony_ci			EN_IP_GSCL, 4, 0, 0),
74262306a36Sopenharmony_ci	GATE(GSCL_CLK_MSCL1, "clk_mscl1", "mout_aclk_gscl_333_user",
74362306a36Sopenharmony_ci			EN_IP_GSCL, 5, 0, 0),
74462306a36Sopenharmony_ci	GATE(GSCL_CLK_PIXEL_GSCL0, "clk_pixel_gscl0",
74562306a36Sopenharmony_ci			"mout_aclk_gscl_333_user",
74662306a36Sopenharmony_ci			EN_IP_GSCL, 8, 0, 0),
74762306a36Sopenharmony_ci	GATE(GSCL_CLK_PIXEL_GSCL1, "clk_pixel_gscl1",
74862306a36Sopenharmony_ci			"mout_aclk_gscl_333_user",
74962306a36Sopenharmony_ci			EN_IP_GSCL, 9, 0, 0),
75062306a36Sopenharmony_ci
75162306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_A, "clk_smmu3_lite_a",
75262306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
75362306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 5, 0, 0),
75462306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_B, "clk_smmu3_lite_b",
75562306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
75662306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 6, 0, 0),
75762306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_LITE_D, "clk_smmu3_lite_d",
75862306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
75962306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 7, 0, 0),
76062306a36Sopenharmony_ci	GATE(GSCL_CLK_CSIS0, "clk_csis0", "mout_aclk_gscl_fimc_user",
76162306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 8, 0, 0),
76262306a36Sopenharmony_ci	GATE(GSCL_CLK_CSIS1, "clk_csis1", "mout_aclk_gscl_fimc_user",
76362306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 9, 0, 0),
76462306a36Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_A, "clk_fimc_lite_a",
76562306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
76662306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 10, 0, 0),
76762306a36Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_B, "clk_fimc_lite_b",
76862306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
76962306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 11, 0, 0),
77062306a36Sopenharmony_ci	GATE(GSCL_CLK_FIMC_LITE_D, "clk_fimc_lite_d",
77162306a36Sopenharmony_ci			"mout_aclk_gscl_fimc_user",
77262306a36Sopenharmony_ci			EN_IP_GSCL_FIMC, 12, 0, 0),
77362306a36Sopenharmony_ci
77462306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_GSCL0, "clk_smmu3_gscl0",
77562306a36Sopenharmony_ci			"mout_aclk_gscl_333_user",
77662306a36Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_GSCL0, 17, 0, 0),
77762306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_GSCL1, "clk_smmu3_gscl1", "mout_aclk_gscl_333_user",
77862306a36Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_GSCL1, 18, 0, 0),
77962306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_MSCL0, "clk_smmu3_mscl0",
78062306a36Sopenharmony_ci			"mout_aclk_m2m_400_user",
78162306a36Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_MSCL0, 19, 0, 0),
78262306a36Sopenharmony_ci	GATE(GSCL_CLK_SMMU3_MSCL1, "clk_smmu3_mscl1",
78362306a36Sopenharmony_ci			"mout_aclk_m2m_400_user",
78462306a36Sopenharmony_ci			EN_IP_GSCL_SECURE_SMMU_MSCL1, 20, 0, 0),
78562306a36Sopenharmony_ci};
78662306a36Sopenharmony_ci
78762306a36Sopenharmony_cistatic const struct samsung_cmu_info gscl_cmu __initconst = {
78862306a36Sopenharmony_ci	.mux_clks	= gscl_mux_clks,
78962306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(gscl_mux_clks),
79062306a36Sopenharmony_ci	.div_clks	= gscl_div_clks,
79162306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(gscl_div_clks),
79262306a36Sopenharmony_ci	.gate_clks	= gscl_gate_clks,
79362306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(gscl_gate_clks),
79462306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_GSCL,
79562306a36Sopenharmony_ci	.clk_regs	= gscl_clk_regs,
79662306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(gscl_clk_regs),
79762306a36Sopenharmony_ci};
79862306a36Sopenharmony_ci
79962306a36Sopenharmony_cistatic void __init exynos5260_clk_gscl_init(struct device_node *np)
80062306a36Sopenharmony_ci{
80162306a36Sopenharmony_ci	samsung_cmu_register_one(np, &gscl_cmu);
80262306a36Sopenharmony_ci}
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_gscl, "samsung,exynos5260-clock-gscl",
80562306a36Sopenharmony_ci		exynos5260_clk_gscl_init);
80662306a36Sopenharmony_ci
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_ci/* CMU_ISP */
80962306a36Sopenharmony_ci
81062306a36Sopenharmony_cistatic const unsigned long isp_clk_regs[] __initconst = {
81162306a36Sopenharmony_ci	MUX_SEL_ISP0,
81262306a36Sopenharmony_ci	MUX_SEL_ISP1,
81362306a36Sopenharmony_ci	DIV_ISP,
81462306a36Sopenharmony_ci	EN_ACLK_ISP0,
81562306a36Sopenharmony_ci	EN_ACLK_ISP1,
81662306a36Sopenharmony_ci	EN_PCLK_ISP0,
81762306a36Sopenharmony_ci	EN_PCLK_ISP1,
81862306a36Sopenharmony_ci	EN_SCLK_ISP,
81962306a36Sopenharmony_ci	EN_IP_ISP0,
82062306a36Sopenharmony_ci	EN_IP_ISP1,
82162306a36Sopenharmony_ci};
82262306a36Sopenharmony_ci
82362306a36Sopenharmony_ciPNAME(mout_isp_400_user_p) = {"fin_pll", "dout_aclk_isp1_400"};
82462306a36Sopenharmony_ciPNAME(mout_isp_266_user_p)	 = {"fin_pll", "dout_aclk_isp1_266"};
82562306a36Sopenharmony_ci
82662306a36Sopenharmony_cistatic const struct samsung_mux_clock isp_mux_clks[] __initconst = {
82762306a36Sopenharmony_ci	MUX(ISP_MOUT_ISP_266_USER, "mout_isp_266_user", mout_isp_266_user_p,
82862306a36Sopenharmony_ci			MUX_SEL_ISP0, 0, 1),
82962306a36Sopenharmony_ci	MUX(ISP_MOUT_ISP_400_USER, "mout_isp_400_user", mout_isp_400_user_p,
83062306a36Sopenharmony_ci			MUX_SEL_ISP0, 4, 1),
83162306a36Sopenharmony_ci};
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_cistatic const struct samsung_div_clock isp_div_clks[] __initconst = {
83462306a36Sopenharmony_ci	DIV(ISP_DOUT_PCLK_ISP_66, "dout_pclk_isp_66", "mout_kfc",
83562306a36Sopenharmony_ci			DIV_ISP, 0, 3),
83662306a36Sopenharmony_ci	DIV(ISP_DOUT_PCLK_ISP_133, "dout_pclk_isp_133", "mout_kfc",
83762306a36Sopenharmony_ci			DIV_ISP, 4, 4),
83862306a36Sopenharmony_ci	DIV(ISP_DOUT_CA5_ATCLKIN, "dout_ca5_atclkin", "mout_kfc",
83962306a36Sopenharmony_ci			DIV_ISP, 12, 3),
84062306a36Sopenharmony_ci	DIV(ISP_DOUT_CA5_PCLKDBG, "dout_ca5_pclkdbg", "mout_kfc",
84162306a36Sopenharmony_ci			DIV_ISP, 16, 4),
84262306a36Sopenharmony_ci	DIV(ISP_DOUT_SCLK_MPWM, "dout_sclk_mpwm", "mout_kfc", DIV_ISP, 20, 2),
84362306a36Sopenharmony_ci};
84462306a36Sopenharmony_ci
84562306a36Sopenharmony_cistatic const struct samsung_gate_clock isp_gate_clks[] __initconst = {
84662306a36Sopenharmony_ci	GATE(ISP_CLK_GIC, "clk_isp_gic", "mout_aclk_isp1_266",
84762306a36Sopenharmony_ci			EN_IP_ISP0, 15, 0, 0),
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_ci	GATE(ISP_CLK_CA5, "clk_isp_ca5", "mout_aclk_isp1_266",
85062306a36Sopenharmony_ci			EN_IP_ISP1, 1, 0, 0),
85162306a36Sopenharmony_ci	GATE(ISP_CLK_FIMC_DRC, "clk_isp_fimc_drc", "mout_aclk_isp1_266",
85262306a36Sopenharmony_ci			EN_IP_ISP1, 2, 0, 0),
85362306a36Sopenharmony_ci	GATE(ISP_CLK_FIMC_FD, "clk_isp_fimc_fd", "mout_aclk_isp1_266",
85462306a36Sopenharmony_ci			EN_IP_ISP1, 3, 0, 0),
85562306a36Sopenharmony_ci	GATE(ISP_CLK_FIMC, "clk_isp_fimc", "mout_aclk_isp1_266",
85662306a36Sopenharmony_ci			EN_IP_ISP1, 4, 0, 0),
85762306a36Sopenharmony_ci	GATE(ISP_CLK_FIMC_SCALERC, "clk_isp_fimc_scalerc",
85862306a36Sopenharmony_ci			"mout_aclk_isp1_266",
85962306a36Sopenharmony_ci			EN_IP_ISP1, 5, 0, 0),
86062306a36Sopenharmony_ci	GATE(ISP_CLK_FIMC_SCALERP, "clk_isp_fimc_scalerp",
86162306a36Sopenharmony_ci			"mout_aclk_isp1_266",
86262306a36Sopenharmony_ci			EN_IP_ISP1, 6, 0, 0),
86362306a36Sopenharmony_ci	GATE(ISP_CLK_I2C0, "clk_isp_i2c0", "mout_aclk_isp1_266",
86462306a36Sopenharmony_ci			EN_IP_ISP1, 7, 0, 0),
86562306a36Sopenharmony_ci	GATE(ISP_CLK_I2C1, "clk_isp_i2c1", "mout_aclk_isp1_266",
86662306a36Sopenharmony_ci			EN_IP_ISP1, 8, 0, 0),
86762306a36Sopenharmony_ci	GATE(ISP_CLK_MCUCTL, "clk_isp_mcuctl", "mout_aclk_isp1_266",
86862306a36Sopenharmony_ci			EN_IP_ISP1, 9, 0, 0),
86962306a36Sopenharmony_ci	GATE(ISP_CLK_MPWM, "clk_isp_mpwm", "mout_aclk_isp1_266",
87062306a36Sopenharmony_ci			EN_IP_ISP1, 10, 0, 0),
87162306a36Sopenharmony_ci	GATE(ISP_CLK_MTCADC, "clk_isp_mtcadc", "mout_aclk_isp1_266",
87262306a36Sopenharmony_ci			EN_IP_ISP1, 11, 0, 0),
87362306a36Sopenharmony_ci	GATE(ISP_CLK_PWM, "clk_isp_pwm", "mout_aclk_isp1_266",
87462306a36Sopenharmony_ci			EN_IP_ISP1, 14, 0, 0),
87562306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_DRC, "clk_smmu_drc", "mout_aclk_isp1_266",
87662306a36Sopenharmony_ci			EN_IP_ISP1, 21, 0, 0),
87762306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_FD, "clk_smmu_fd", "mout_aclk_isp1_266",
87862306a36Sopenharmony_ci			EN_IP_ISP1, 22, 0, 0),
87962306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_ISP, "clk_smmu_isp", "mout_aclk_isp1_266",
88062306a36Sopenharmony_ci			EN_IP_ISP1, 23, 0, 0),
88162306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_ISPCX, "clk_smmu_ispcx", "mout_aclk_isp1_266",
88262306a36Sopenharmony_ci			EN_IP_ISP1, 24, 0, 0),
88362306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_SCALERC, "clk_isp_smmu_scalerc",
88462306a36Sopenharmony_ci			"mout_aclk_isp1_266",
88562306a36Sopenharmony_ci			EN_IP_ISP1, 25, 0, 0),
88662306a36Sopenharmony_ci	GATE(ISP_CLK_SMMU_SCALERP, "clk_isp_smmu_scalerp",
88762306a36Sopenharmony_ci			"mout_aclk_isp1_266",
88862306a36Sopenharmony_ci			EN_IP_ISP1, 26, 0, 0),
88962306a36Sopenharmony_ci	GATE(ISP_CLK_SPI0, "clk_isp_spi0", "mout_aclk_isp1_266",
89062306a36Sopenharmony_ci			EN_IP_ISP1, 27, 0, 0),
89162306a36Sopenharmony_ci	GATE(ISP_CLK_SPI1, "clk_isp_spi1", "mout_aclk_isp1_266",
89262306a36Sopenharmony_ci			EN_IP_ISP1, 28, 0, 0),
89362306a36Sopenharmony_ci	GATE(ISP_CLK_WDT, "clk_isp_wdt", "mout_aclk_isp1_266",
89462306a36Sopenharmony_ci			EN_IP_ISP1, 31, 0, 0),
89562306a36Sopenharmony_ci	GATE(ISP_CLK_UART, "clk_isp_uart", "mout_aclk_isp1_266",
89662306a36Sopenharmony_ci			EN_IP_ISP1, 30, 0, 0),
89762306a36Sopenharmony_ci
89862306a36Sopenharmony_ci	GATE(ISP_SCLK_UART_EXT, "sclk_isp_uart_ext", "fin_pll",
89962306a36Sopenharmony_ci			EN_SCLK_ISP, 7, CLK_SET_RATE_PARENT, 0),
90062306a36Sopenharmony_ci	GATE(ISP_SCLK_SPI1_EXT, "sclk_isp_spi1_ext", "fin_pll",
90162306a36Sopenharmony_ci			EN_SCLK_ISP, 8, CLK_SET_RATE_PARENT, 0),
90262306a36Sopenharmony_ci	GATE(ISP_SCLK_SPI0_EXT, "sclk_isp_spi0_ext", "fin_pll",
90362306a36Sopenharmony_ci			EN_SCLK_ISP, 9, CLK_SET_RATE_PARENT, 0),
90462306a36Sopenharmony_ci};
90562306a36Sopenharmony_ci
90662306a36Sopenharmony_cistatic const struct samsung_cmu_info isp_cmu __initconst = {
90762306a36Sopenharmony_ci	.mux_clks	= isp_mux_clks,
90862306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(isp_mux_clks),
90962306a36Sopenharmony_ci	.div_clks	= isp_div_clks,
91062306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(isp_div_clks),
91162306a36Sopenharmony_ci	.gate_clks	= isp_gate_clks,
91262306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(isp_gate_clks),
91362306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_ISP,
91462306a36Sopenharmony_ci	.clk_regs	= isp_clk_regs,
91562306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(isp_clk_regs),
91662306a36Sopenharmony_ci};
91762306a36Sopenharmony_ci
91862306a36Sopenharmony_cistatic void __init exynos5260_clk_isp_init(struct device_node *np)
91962306a36Sopenharmony_ci{
92062306a36Sopenharmony_ci	samsung_cmu_register_one(np, &isp_cmu);
92162306a36Sopenharmony_ci}
92262306a36Sopenharmony_ci
92362306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_isp, "samsung,exynos5260-clock-isp",
92462306a36Sopenharmony_ci		exynos5260_clk_isp_init);
92562306a36Sopenharmony_ci
92662306a36Sopenharmony_ci
92762306a36Sopenharmony_ci/* CMU_KFC */
92862306a36Sopenharmony_ci
92962306a36Sopenharmony_cistatic const unsigned long kfc_clk_regs[] __initconst = {
93062306a36Sopenharmony_ci	KFC_PLL_LOCK,
93162306a36Sopenharmony_ci	KFC_PLL_CON0,
93262306a36Sopenharmony_ci	KFC_PLL_CON1,
93362306a36Sopenharmony_ci	KFC_PLL_FDET,
93462306a36Sopenharmony_ci	MUX_SEL_KFC0,
93562306a36Sopenharmony_ci	MUX_SEL_KFC2,
93662306a36Sopenharmony_ci	DIV_KFC,
93762306a36Sopenharmony_ci	DIV_KFC_PLL_FDET,
93862306a36Sopenharmony_ci	EN_ACLK_KFC,
93962306a36Sopenharmony_ci	EN_PCLK_KFC,
94062306a36Sopenharmony_ci	EN_SCLK_KFC,
94162306a36Sopenharmony_ci	EN_IP_KFC,
94262306a36Sopenharmony_ci};
94362306a36Sopenharmony_ci
94462306a36Sopenharmony_ciPNAME(mout_kfc_pll_p) = {"fin_pll", "fout_kfc_pll"};
94562306a36Sopenharmony_ciPNAME(mout_kfc_p)	 = {"mout_kfc_pll", "dout_media_pll"};
94662306a36Sopenharmony_ci
94762306a36Sopenharmony_cistatic const struct samsung_mux_clock kfc_mux_clks[] __initconst = {
94862306a36Sopenharmony_ci	MUX(KFC_MOUT_KFC_PLL, "mout_kfc_pll", mout_kfc_pll_p,
94962306a36Sopenharmony_ci			MUX_SEL_KFC0, 0, 1),
95062306a36Sopenharmony_ci	MUX(KFC_MOUT_KFC, "mout_kfc", mout_kfc_p, MUX_SEL_KFC2, 0, 1),
95162306a36Sopenharmony_ci};
95262306a36Sopenharmony_ci
95362306a36Sopenharmony_cistatic const struct samsung_div_clock kfc_div_clks[] __initconst = {
95462306a36Sopenharmony_ci	DIV(KFC_DOUT_KFC1, "dout_kfc1", "mout_kfc", DIV_KFC, 0, 3),
95562306a36Sopenharmony_ci	DIV(KFC_DOUT_KFC2, "dout_kfc2", "dout_kfc1", DIV_KFC, 4, 3),
95662306a36Sopenharmony_ci	DIV(KFC_DOUT_KFC_ATCLK, "dout_kfc_atclk", "dout_kfc2", DIV_KFC, 8, 3),
95762306a36Sopenharmony_ci	DIV(KFC_DOUT_KFC_PCLK_DBG, "dout_kfc_pclk_dbg", "dout_kfc2",
95862306a36Sopenharmony_ci			DIV_KFC, 12, 3),
95962306a36Sopenharmony_ci	DIV(KFC_DOUT_ACLK_KFC, "dout_aclk_kfc", "dout_kfc2", DIV_KFC, 16, 3),
96062306a36Sopenharmony_ci	DIV(KFC_DOUT_PCLK_KFC, "dout_pclk_kfc", "dout_kfc2", DIV_KFC, 20, 3),
96162306a36Sopenharmony_ci	DIV(KFC_DOUT_KFC_PLL, "dout_kfc_pll", "mout_kfc", DIV_KFC, 24, 3),
96262306a36Sopenharmony_ci};
96362306a36Sopenharmony_ci
96462306a36Sopenharmony_cistatic const struct samsung_pll_clock kfc_pll_clks[] __initconst = {
96562306a36Sopenharmony_ci	PLL(pll_2550xx, KFC_FOUT_KFC_PLL, "fout_kfc_pll", "fin_pll",
96662306a36Sopenharmony_ci		KFC_PLL_LOCK, KFC_PLL_CON0,
96762306a36Sopenharmony_ci		pll2550_24mhz_tbl),
96862306a36Sopenharmony_ci};
96962306a36Sopenharmony_ci
97062306a36Sopenharmony_cistatic const struct samsung_cmu_info kfc_cmu __initconst = {
97162306a36Sopenharmony_ci	.pll_clks	= kfc_pll_clks,
97262306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(kfc_pll_clks),
97362306a36Sopenharmony_ci	.mux_clks	= kfc_mux_clks,
97462306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(kfc_mux_clks),
97562306a36Sopenharmony_ci	.div_clks	= kfc_div_clks,
97662306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(kfc_div_clks),
97762306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_KFC,
97862306a36Sopenharmony_ci	.clk_regs	= kfc_clk_regs,
97962306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(kfc_clk_regs),
98062306a36Sopenharmony_ci};
98162306a36Sopenharmony_ci
98262306a36Sopenharmony_cistatic void __init exynos5260_clk_kfc_init(struct device_node *np)
98362306a36Sopenharmony_ci{
98462306a36Sopenharmony_ci	samsung_cmu_register_one(np, &kfc_cmu);
98562306a36Sopenharmony_ci}
98662306a36Sopenharmony_ci
98762306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_kfc, "samsung,exynos5260-clock-kfc",
98862306a36Sopenharmony_ci		exynos5260_clk_kfc_init);
98962306a36Sopenharmony_ci
99062306a36Sopenharmony_ci
99162306a36Sopenharmony_ci/* CMU_MFC */
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_cistatic const unsigned long mfc_clk_regs[] __initconst = {
99462306a36Sopenharmony_ci	MUX_SEL_MFC,
99562306a36Sopenharmony_ci	DIV_MFC,
99662306a36Sopenharmony_ci	EN_ACLK_MFC,
99762306a36Sopenharmony_ci	EN_ACLK_SECURE_SMMU2_MFC,
99862306a36Sopenharmony_ci	EN_PCLK_MFC,
99962306a36Sopenharmony_ci	EN_PCLK_SECURE_SMMU2_MFC,
100062306a36Sopenharmony_ci	EN_IP_MFC,
100162306a36Sopenharmony_ci	EN_IP_MFC_SECURE_SMMU2_MFC,
100262306a36Sopenharmony_ci};
100362306a36Sopenharmony_ci
100462306a36Sopenharmony_ciPNAME(mout_aclk_mfc_333_user_p) = {"fin_pll", "dout_aclk_mfc_333"};
100562306a36Sopenharmony_ci
100662306a36Sopenharmony_cistatic const struct samsung_mux_clock mfc_mux_clks[] __initconst = {
100762306a36Sopenharmony_ci	MUX(MFC_MOUT_ACLK_MFC_333_USER, "mout_aclk_mfc_333_user",
100862306a36Sopenharmony_ci			mout_aclk_mfc_333_user_p,
100962306a36Sopenharmony_ci			MUX_SEL_MFC, 0, 1),
101062306a36Sopenharmony_ci};
101162306a36Sopenharmony_ci
101262306a36Sopenharmony_cistatic const struct samsung_div_clock mfc_div_clks[] __initconst = {
101362306a36Sopenharmony_ci	DIV(MFC_DOUT_PCLK_MFC_83, "dout_pclk_mfc_83", "mout_aclk_mfc_333_user",
101462306a36Sopenharmony_ci			DIV_MFC, 0, 3),
101562306a36Sopenharmony_ci};
101662306a36Sopenharmony_ci
101762306a36Sopenharmony_cistatic const struct samsung_gate_clock mfc_gate_clks[] __initconst = {
101862306a36Sopenharmony_ci	GATE(MFC_CLK_MFC, "clk_mfc", "mout_aclk_mfc_333_user",
101962306a36Sopenharmony_ci			EN_IP_MFC, 1, 0, 0),
102062306a36Sopenharmony_ci	GATE(MFC_CLK_SMMU2_MFCM0, "clk_smmu2_mfcm0", "mout_aclk_mfc_333_user",
102162306a36Sopenharmony_ci			EN_IP_MFC_SECURE_SMMU2_MFC, 6, 0, 0),
102262306a36Sopenharmony_ci	GATE(MFC_CLK_SMMU2_MFCM1, "clk_smmu2_mfcm1", "mout_aclk_mfc_333_user",
102362306a36Sopenharmony_ci			EN_IP_MFC_SECURE_SMMU2_MFC, 7, 0, 0),
102462306a36Sopenharmony_ci};
102562306a36Sopenharmony_ci
102662306a36Sopenharmony_cistatic const struct samsung_cmu_info mfc_cmu __initconst = {
102762306a36Sopenharmony_ci	.mux_clks	= mfc_mux_clks,
102862306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(mfc_mux_clks),
102962306a36Sopenharmony_ci	.div_clks	= mfc_div_clks,
103062306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(mfc_div_clks),
103162306a36Sopenharmony_ci	.gate_clks	= mfc_gate_clks,
103262306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(mfc_gate_clks),
103362306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_MFC,
103462306a36Sopenharmony_ci	.clk_regs	= mfc_clk_regs,
103562306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(mfc_clk_regs),
103662306a36Sopenharmony_ci};
103762306a36Sopenharmony_ci
103862306a36Sopenharmony_cistatic void __init exynos5260_clk_mfc_init(struct device_node *np)
103962306a36Sopenharmony_ci{
104062306a36Sopenharmony_ci	samsung_cmu_register_one(np, &mfc_cmu);
104162306a36Sopenharmony_ci}
104262306a36Sopenharmony_ci
104362306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_mfc, "samsung,exynos5260-clock-mfc",
104462306a36Sopenharmony_ci		exynos5260_clk_mfc_init);
104562306a36Sopenharmony_ci
104662306a36Sopenharmony_ci
104762306a36Sopenharmony_ci/* CMU_MIF */
104862306a36Sopenharmony_ci
104962306a36Sopenharmony_cistatic const unsigned long mif_clk_regs[] __initconst = {
105062306a36Sopenharmony_ci	MEM_PLL_LOCK,
105162306a36Sopenharmony_ci	BUS_PLL_LOCK,
105262306a36Sopenharmony_ci	MEDIA_PLL_LOCK,
105362306a36Sopenharmony_ci	MEM_PLL_CON0,
105462306a36Sopenharmony_ci	MEM_PLL_CON1,
105562306a36Sopenharmony_ci	MEM_PLL_FDET,
105662306a36Sopenharmony_ci	BUS_PLL_CON0,
105762306a36Sopenharmony_ci	BUS_PLL_CON1,
105862306a36Sopenharmony_ci	BUS_PLL_FDET,
105962306a36Sopenharmony_ci	MEDIA_PLL_CON0,
106062306a36Sopenharmony_ci	MEDIA_PLL_CON1,
106162306a36Sopenharmony_ci	MEDIA_PLL_FDET,
106262306a36Sopenharmony_ci	MUX_SEL_MIF,
106362306a36Sopenharmony_ci	DIV_MIF,
106462306a36Sopenharmony_ci	DIV_MIF_PLL_FDET,
106562306a36Sopenharmony_ci	EN_ACLK_MIF,
106662306a36Sopenharmony_ci	EN_ACLK_MIF_SECURE_DREX1_TZ,
106762306a36Sopenharmony_ci	EN_ACLK_MIF_SECURE_DREX0_TZ,
106862306a36Sopenharmony_ci	EN_ACLK_MIF_SECURE_INTMEM,
106962306a36Sopenharmony_ci	EN_PCLK_MIF,
107062306a36Sopenharmony_ci	EN_PCLK_MIF_SECURE_MONOCNT,
107162306a36Sopenharmony_ci	EN_PCLK_MIF_SECURE_RTC_APBIF,
107262306a36Sopenharmony_ci	EN_PCLK_MIF_SECURE_DREX1_TZ,
107362306a36Sopenharmony_ci	EN_PCLK_MIF_SECURE_DREX0_TZ,
107462306a36Sopenharmony_ci	EN_SCLK_MIF,
107562306a36Sopenharmony_ci	EN_IP_MIF,
107662306a36Sopenharmony_ci	EN_IP_MIF_SECURE_MONOCNT,
107762306a36Sopenharmony_ci	EN_IP_MIF_SECURE_RTC_APBIF,
107862306a36Sopenharmony_ci	EN_IP_MIF_SECURE_DREX1_TZ,
107962306a36Sopenharmony_ci	EN_IP_MIF_SECURE_DREX0_TZ,
108062306a36Sopenharmony_ci	EN_IP_MIF_SECURE_INTEMEM,
108162306a36Sopenharmony_ci};
108262306a36Sopenharmony_ci
108362306a36Sopenharmony_ciPNAME(mout_mem_pll_p) = {"fin_pll", "fout_mem_pll"};
108462306a36Sopenharmony_ciPNAME(mout_bus_pll_p) = {"fin_pll", "fout_bus_pll"};
108562306a36Sopenharmony_ciPNAME(mout_media_pll_p) = {"fin_pll", "fout_media_pll"};
108662306a36Sopenharmony_ciPNAME(mout_mif_drex_p) = {"dout_mem_pll", "dout_bus_pll"};
108762306a36Sopenharmony_ciPNAME(mout_mif_drex2x_p) = {"dout_mem_pll", "dout_bus_pll"};
108862306a36Sopenharmony_ciPNAME(mout_clkm_phy_p) = {"mout_mif_drex", "dout_media_pll"};
108962306a36Sopenharmony_ciPNAME(mout_clk2x_phy_p) = {"mout_mif_drex2x", "dout_media_pll"};
109062306a36Sopenharmony_ci
109162306a36Sopenharmony_cistatic const struct samsung_mux_clock mif_mux_clks[] __initconst = {
109262306a36Sopenharmony_ci	MUX(MIF_MOUT_MEM_PLL, "mout_mem_pll", mout_mem_pll_p,
109362306a36Sopenharmony_ci			MUX_SEL_MIF, 0, 1),
109462306a36Sopenharmony_ci	MUX(MIF_MOUT_BUS_PLL, "mout_bus_pll", mout_bus_pll_p,
109562306a36Sopenharmony_ci			MUX_SEL_MIF, 4, 1),
109662306a36Sopenharmony_ci	MUX(MIF_MOUT_MEDIA_PLL, "mout_media_pll", mout_media_pll_p,
109762306a36Sopenharmony_ci			MUX_SEL_MIF, 8, 1),
109862306a36Sopenharmony_ci	MUX(MIF_MOUT_MIF_DREX, "mout_mif_drex", mout_mif_drex_p,
109962306a36Sopenharmony_ci			MUX_SEL_MIF, 12, 1),
110062306a36Sopenharmony_ci	MUX(MIF_MOUT_CLKM_PHY, "mout_clkm_phy", mout_clkm_phy_p,
110162306a36Sopenharmony_ci			MUX_SEL_MIF, 16, 1),
110262306a36Sopenharmony_ci	MUX(MIF_MOUT_MIF_DREX2X, "mout_mif_drex2x", mout_mif_drex2x_p,
110362306a36Sopenharmony_ci			MUX_SEL_MIF, 20, 1),
110462306a36Sopenharmony_ci	MUX(MIF_MOUT_CLK2X_PHY, "mout_clk2x_phy", mout_clk2x_phy_p,
110562306a36Sopenharmony_ci			MUX_SEL_MIF, 24, 1),
110662306a36Sopenharmony_ci};
110762306a36Sopenharmony_ci
110862306a36Sopenharmony_cistatic const struct samsung_div_clock mif_div_clks[] __initconst = {
110962306a36Sopenharmony_ci	DIV(MIF_DOUT_MEDIA_PLL, "dout_media_pll", "mout_media_pll",
111062306a36Sopenharmony_ci			DIV_MIF, 0, 3),
111162306a36Sopenharmony_ci	DIV(MIF_DOUT_MEM_PLL, "dout_mem_pll", "mout_mem_pll",
111262306a36Sopenharmony_ci			DIV_MIF, 4, 3),
111362306a36Sopenharmony_ci	DIV(MIF_DOUT_BUS_PLL, "dout_bus_pll", "mout_bus_pll",
111462306a36Sopenharmony_ci			DIV_MIF, 8, 3),
111562306a36Sopenharmony_ci	DIV(MIF_DOUT_CLKM_PHY, "dout_clkm_phy", "mout_clkm_phy",
111662306a36Sopenharmony_ci			DIV_MIF, 12, 3),
111762306a36Sopenharmony_ci	DIV(MIF_DOUT_CLK2X_PHY, "dout_clk2x_phy", "mout_clk2x_phy",
111862306a36Sopenharmony_ci			DIV_MIF, 16, 4),
111962306a36Sopenharmony_ci	DIV(MIF_DOUT_ACLK_MIF_466, "dout_aclk_mif_466", "dout_clk2x_phy",
112062306a36Sopenharmony_ci			DIV_MIF, 20, 3),
112162306a36Sopenharmony_ci	DIV(MIF_DOUT_ACLK_BUS_200, "dout_aclk_bus_200", "dout_bus_pll",
112262306a36Sopenharmony_ci			DIV_MIF, 24, 3),
112362306a36Sopenharmony_ci	DIV(MIF_DOUT_ACLK_BUS_100, "dout_aclk_bus_100", "dout_bus_pll",
112462306a36Sopenharmony_ci			DIV_MIF, 28, 4),
112562306a36Sopenharmony_ci};
112662306a36Sopenharmony_ci
112762306a36Sopenharmony_cistatic const struct samsung_gate_clock mif_gate_clks[] __initconst = {
112862306a36Sopenharmony_ci	GATE(MIF_CLK_LPDDR3PHY_WRAP0, "clk_lpddr3phy_wrap0", "dout_clk2x_phy",
112962306a36Sopenharmony_ci			EN_IP_MIF, 12, CLK_IGNORE_UNUSED, 0),
113062306a36Sopenharmony_ci	GATE(MIF_CLK_LPDDR3PHY_WRAP1, "clk_lpddr3phy_wrap1", "dout_clk2x_phy",
113162306a36Sopenharmony_ci			EN_IP_MIF, 13, CLK_IGNORE_UNUSED, 0),
113262306a36Sopenharmony_ci
113362306a36Sopenharmony_ci	GATE(MIF_CLK_MONOCNT, "clk_monocnt", "dout_aclk_bus_100",
113462306a36Sopenharmony_ci			EN_IP_MIF_SECURE_MONOCNT, 22,
113562306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
113662306a36Sopenharmony_ci
113762306a36Sopenharmony_ci	GATE(MIF_CLK_MIF_RTC, "clk_mif_rtc", "dout_aclk_bus_100",
113862306a36Sopenharmony_ci			EN_IP_MIF_SECURE_RTC_APBIF, 23,
113962306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
114062306a36Sopenharmony_ci
114162306a36Sopenharmony_ci	GATE(MIF_CLK_DREX1, "clk_drex1", "dout_aclk_mif_466",
114262306a36Sopenharmony_ci			EN_IP_MIF_SECURE_DREX1_TZ, 9,
114362306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
114462306a36Sopenharmony_ci
114562306a36Sopenharmony_ci	GATE(MIF_CLK_DREX0, "clk_drex0", "dout_aclk_mif_466",
114662306a36Sopenharmony_ci			EN_IP_MIF_SECURE_DREX0_TZ, 9,
114762306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
114862306a36Sopenharmony_ci
114962306a36Sopenharmony_ci	GATE(MIF_CLK_INTMEM, "clk_intmem", "dout_aclk_bus_200",
115062306a36Sopenharmony_ci			EN_IP_MIF_SECURE_INTEMEM, 11,
115162306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
115262306a36Sopenharmony_ci
115362306a36Sopenharmony_ci	GATE(MIF_SCLK_LPDDR3PHY_WRAP_U0, "sclk_lpddr3phy_wrap_u0",
115462306a36Sopenharmony_ci			"dout_clkm_phy", EN_SCLK_MIF, 0,
115562306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
115662306a36Sopenharmony_ci	GATE(MIF_SCLK_LPDDR3PHY_WRAP_U1, "sclk_lpddr3phy_wrap_u1",
115762306a36Sopenharmony_ci			"dout_clkm_phy", EN_SCLK_MIF, 1,
115862306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
115962306a36Sopenharmony_ci};
116062306a36Sopenharmony_ci
116162306a36Sopenharmony_cistatic const struct samsung_pll_clock mif_pll_clks[] __initconst = {
116262306a36Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_MEM_PLL, "fout_mem_pll", "fin_pll",
116362306a36Sopenharmony_ci		MEM_PLL_LOCK, MEM_PLL_CON0,
116462306a36Sopenharmony_ci		pll2550_24mhz_tbl),
116562306a36Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_BUS_PLL, "fout_bus_pll", "fin_pll",
116662306a36Sopenharmony_ci		BUS_PLL_LOCK, BUS_PLL_CON0,
116762306a36Sopenharmony_ci		pll2550_24mhz_tbl),
116862306a36Sopenharmony_ci	PLL(pll_2550xx, MIF_FOUT_MEDIA_PLL, "fout_media_pll", "fin_pll",
116962306a36Sopenharmony_ci		MEDIA_PLL_LOCK, MEDIA_PLL_CON0,
117062306a36Sopenharmony_ci		pll2550_24mhz_tbl),
117162306a36Sopenharmony_ci};
117262306a36Sopenharmony_ci
117362306a36Sopenharmony_cistatic const struct samsung_cmu_info mif_cmu __initconst = {
117462306a36Sopenharmony_ci	.pll_clks	= mif_pll_clks,
117562306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(mif_pll_clks),
117662306a36Sopenharmony_ci	.mux_clks	= mif_mux_clks,
117762306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(mif_mux_clks),
117862306a36Sopenharmony_ci	.div_clks	= mif_div_clks,
117962306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(mif_div_clks),
118062306a36Sopenharmony_ci	.gate_clks	= mif_gate_clks,
118162306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(mif_gate_clks),
118262306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_MIF,
118362306a36Sopenharmony_ci	.clk_regs	= mif_clk_regs,
118462306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(mif_clk_regs),
118562306a36Sopenharmony_ci};
118662306a36Sopenharmony_ci
118762306a36Sopenharmony_cistatic void __init exynos5260_clk_mif_init(struct device_node *np)
118862306a36Sopenharmony_ci{
118962306a36Sopenharmony_ci	samsung_cmu_register_one(np, &mif_cmu);
119062306a36Sopenharmony_ci}
119162306a36Sopenharmony_ci
119262306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_mif, "samsung,exynos5260-clock-mif",
119362306a36Sopenharmony_ci		exynos5260_clk_mif_init);
119462306a36Sopenharmony_ci
119562306a36Sopenharmony_ci
119662306a36Sopenharmony_ci/* CMU_PERI */
119762306a36Sopenharmony_ci
119862306a36Sopenharmony_cistatic const unsigned long peri_clk_regs[] __initconst = {
119962306a36Sopenharmony_ci	MUX_SEL_PERI,
120062306a36Sopenharmony_ci	MUX_SEL_PERI1,
120162306a36Sopenharmony_ci	DIV_PERI,
120262306a36Sopenharmony_ci	EN_PCLK_PERI0,
120362306a36Sopenharmony_ci	EN_PCLK_PERI1,
120462306a36Sopenharmony_ci	EN_PCLK_PERI2,
120562306a36Sopenharmony_ci	EN_PCLK_PERI3,
120662306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_CHIPID,
120762306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_PROVKEY0,
120862306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_PROVKEY1,
120962306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_SECKEY,
121062306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_ANTIRBKCNT,
121162306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_TOP_RTC,
121262306a36Sopenharmony_ci	EN_PCLK_PERI_SECURE_TZPC,
121362306a36Sopenharmony_ci	EN_SCLK_PERI,
121462306a36Sopenharmony_ci	EN_SCLK_PERI_SECURE_TOP_RTC,
121562306a36Sopenharmony_ci	EN_IP_PERI0,
121662306a36Sopenharmony_ci	EN_IP_PERI1,
121762306a36Sopenharmony_ci	EN_IP_PERI2,
121862306a36Sopenharmony_ci	EN_IP_PERI_SECURE_CHIPID,
121962306a36Sopenharmony_ci	EN_IP_PERI_SECURE_PROVKEY0,
122062306a36Sopenharmony_ci	EN_IP_PERI_SECURE_PROVKEY1,
122162306a36Sopenharmony_ci	EN_IP_PERI_SECURE_SECKEY,
122262306a36Sopenharmony_ci	EN_IP_PERI_SECURE_ANTIRBKCNT,
122362306a36Sopenharmony_ci	EN_IP_PERI_SECURE_TOP_RTC,
122462306a36Sopenharmony_ci	EN_IP_PERI_SECURE_TZPC,
122562306a36Sopenharmony_ci};
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_ciPNAME(mout_sclk_pcm_p) = {"ioclk_pcm_extclk", "fin_pll", "dout_aclk_peri_aud",
122862306a36Sopenharmony_ci			"phyclk_hdmi_phy_ref_cko"};
122962306a36Sopenharmony_ciPNAME(mout_sclk_i2scod_p) = {"ioclk_i2s_cdclk", "fin_pll", "dout_aclk_peri_aud",
123062306a36Sopenharmony_ci			"phyclk_hdmi_phy_ref_cko"};
123162306a36Sopenharmony_ciPNAME(mout_sclk_spdif_p) = {"ioclk_spdif_extclk", "fin_pll",
123262306a36Sopenharmony_ci			"dout_aclk_peri_aud", "phyclk_hdmi_phy_ref_cko"};
123362306a36Sopenharmony_ci
123462306a36Sopenharmony_cistatic const struct samsung_mux_clock peri_mux_clks[] __initconst = {
123562306a36Sopenharmony_ci	MUX(PERI_MOUT_SCLK_PCM, "mout_sclk_pcm", mout_sclk_pcm_p,
123662306a36Sopenharmony_ci			MUX_SEL_PERI1, 4, 2),
123762306a36Sopenharmony_ci	MUX(PERI_MOUT_SCLK_I2SCOD, "mout_sclk_i2scod", mout_sclk_i2scod_p,
123862306a36Sopenharmony_ci			MUX_SEL_PERI1, 12, 2),
123962306a36Sopenharmony_ci	MUX(PERI_MOUT_SCLK_SPDIF, "mout_sclk_spdif", mout_sclk_spdif_p,
124062306a36Sopenharmony_ci			MUX_SEL_PERI1, 20, 2),
124162306a36Sopenharmony_ci};
124262306a36Sopenharmony_ci
124362306a36Sopenharmony_cistatic const struct samsung_div_clock peri_div_clks[] __initconst = {
124462306a36Sopenharmony_ci	DIV(PERI_DOUT_PCM, "dout_pcm", "mout_sclk_pcm", DIV_PERI, 0, 8),
124562306a36Sopenharmony_ci	DIV(PERI_DOUT_I2S, "dout_i2s", "mout_sclk_i2scod", DIV_PERI, 8, 6),
124662306a36Sopenharmony_ci};
124762306a36Sopenharmony_ci
124862306a36Sopenharmony_cistatic const struct samsung_gate_clock peri_gate_clks[] __initconst = {
124962306a36Sopenharmony_ci	GATE(PERI_SCLK_PCM1, "sclk_pcm1", "dout_pcm", EN_SCLK_PERI, 0,
125062306a36Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
125162306a36Sopenharmony_ci	GATE(PERI_SCLK_I2S, "sclk_i2s", "dout_i2s", EN_SCLK_PERI, 1,
125262306a36Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
125362306a36Sopenharmony_ci	GATE(PERI_SCLK_SPDIF, "sclk_spdif", "dout_sclk_peri_spi0_b",
125462306a36Sopenharmony_ci			EN_SCLK_PERI, 2, CLK_SET_RATE_PARENT, 0),
125562306a36Sopenharmony_ci	GATE(PERI_SCLK_SPI0, "sclk_spi0", "dout_sclk_peri_spi0_b",
125662306a36Sopenharmony_ci			EN_SCLK_PERI, 7, CLK_SET_RATE_PARENT, 0),
125762306a36Sopenharmony_ci	GATE(PERI_SCLK_SPI1, "sclk_spi1", "dout_sclk_peri_spi1_b",
125862306a36Sopenharmony_ci			EN_SCLK_PERI, 8, CLK_SET_RATE_PARENT, 0),
125962306a36Sopenharmony_ci	GATE(PERI_SCLK_SPI2, "sclk_spi2", "dout_sclk_peri_spi2_b",
126062306a36Sopenharmony_ci			EN_SCLK_PERI, 9, CLK_SET_RATE_PARENT, 0),
126162306a36Sopenharmony_ci	GATE(PERI_SCLK_UART0, "sclk_uart0", "dout_sclk_peri_uart0",
126262306a36Sopenharmony_ci			EN_SCLK_PERI, 10, CLK_SET_RATE_PARENT, 0),
126362306a36Sopenharmony_ci	GATE(PERI_SCLK_UART1, "sclk_uart1", "dout_sclk_peri_uart1",
126462306a36Sopenharmony_ci			EN_SCLK_PERI, 11, CLK_SET_RATE_PARENT, 0),
126562306a36Sopenharmony_ci	GATE(PERI_SCLK_UART2, "sclk_uart2", "dout_sclk_peri_uart2",
126662306a36Sopenharmony_ci			EN_SCLK_PERI, 12, CLK_SET_RATE_PARENT, 0),
126762306a36Sopenharmony_ci
126862306a36Sopenharmony_ci	GATE(PERI_CLK_ABB, "clk_abb", "dout_aclk_peri_66",
126962306a36Sopenharmony_ci		EN_IP_PERI0, 1, 0, 0),
127062306a36Sopenharmony_ci	GATE(PERI_CLK_EFUSE_WRITER, "clk_efuse_writer", "dout_aclk_peri_66",
127162306a36Sopenharmony_ci		EN_IP_PERI0, 5, 0, 0),
127262306a36Sopenharmony_ci	GATE(PERI_CLK_HDMICEC, "clk_hdmicec", "dout_aclk_peri_66",
127362306a36Sopenharmony_ci		EN_IP_PERI0, 6, 0, 0),
127462306a36Sopenharmony_ci	GATE(PERI_CLK_I2C10, "clk_i2c10", "dout_aclk_peri_66",
127562306a36Sopenharmony_ci		EN_IP_PERI0, 7, 0, 0),
127662306a36Sopenharmony_ci	GATE(PERI_CLK_I2C11, "clk_i2c11", "dout_aclk_peri_66",
127762306a36Sopenharmony_ci		EN_IP_PERI0, 8, 0, 0),
127862306a36Sopenharmony_ci	GATE(PERI_CLK_I2C8, "clk_i2c8", "dout_aclk_peri_66",
127962306a36Sopenharmony_ci		EN_IP_PERI0, 9, 0, 0),
128062306a36Sopenharmony_ci	GATE(PERI_CLK_I2C9, "clk_i2c9", "dout_aclk_peri_66",
128162306a36Sopenharmony_ci		EN_IP_PERI0, 10, 0, 0),
128262306a36Sopenharmony_ci	GATE(PERI_CLK_I2C4, "clk_i2c4", "dout_aclk_peri_66",
128362306a36Sopenharmony_ci		EN_IP_PERI0, 11, 0, 0),
128462306a36Sopenharmony_ci	GATE(PERI_CLK_I2C5, "clk_i2c5", "dout_aclk_peri_66",
128562306a36Sopenharmony_ci		EN_IP_PERI0, 12, 0, 0),
128662306a36Sopenharmony_ci	GATE(PERI_CLK_I2C6, "clk_i2c6", "dout_aclk_peri_66",
128762306a36Sopenharmony_ci		EN_IP_PERI0, 13, 0, 0),
128862306a36Sopenharmony_ci	GATE(PERI_CLK_I2C7, "clk_i2c7", "dout_aclk_peri_66",
128962306a36Sopenharmony_ci		EN_IP_PERI0, 14, 0, 0),
129062306a36Sopenharmony_ci	GATE(PERI_CLK_I2CHDMI, "clk_i2chdmi", "dout_aclk_peri_66",
129162306a36Sopenharmony_ci		EN_IP_PERI0, 15, 0, 0),
129262306a36Sopenharmony_ci	GATE(PERI_CLK_I2S, "clk_peri_i2s", "dout_aclk_peri_66",
129362306a36Sopenharmony_ci		EN_IP_PERI0, 16, 0, 0),
129462306a36Sopenharmony_ci	GATE(PERI_CLK_MCT, "clk_mct", "dout_aclk_peri_66",
129562306a36Sopenharmony_ci		EN_IP_PERI0, 17, 0, 0),
129662306a36Sopenharmony_ci	GATE(PERI_CLK_PCM, "clk_peri_pcm", "dout_aclk_peri_66",
129762306a36Sopenharmony_ci		EN_IP_PERI0, 18, 0, 0),
129862306a36Sopenharmony_ci	GATE(PERI_CLK_HSIC0, "clk_hsic0", "dout_aclk_peri_66",
129962306a36Sopenharmony_ci		EN_IP_PERI0, 20, 0, 0),
130062306a36Sopenharmony_ci	GATE(PERI_CLK_HSIC1, "clk_hsic1", "dout_aclk_peri_66",
130162306a36Sopenharmony_ci		EN_IP_PERI0, 21, 0, 0),
130262306a36Sopenharmony_ci	GATE(PERI_CLK_HSIC2, "clk_hsic2", "dout_aclk_peri_66",
130362306a36Sopenharmony_ci		EN_IP_PERI0, 22, 0, 0),
130462306a36Sopenharmony_ci	GATE(PERI_CLK_HSIC3, "clk_hsic3", "dout_aclk_peri_66",
130562306a36Sopenharmony_ci		EN_IP_PERI0, 23, 0, 0),
130662306a36Sopenharmony_ci	GATE(PERI_CLK_WDT_EGL, "clk_wdt_egl", "dout_aclk_peri_66",
130762306a36Sopenharmony_ci		EN_IP_PERI0, 24, 0, 0),
130862306a36Sopenharmony_ci	GATE(PERI_CLK_WDT_KFC, "clk_wdt_kfc", "dout_aclk_peri_66",
130962306a36Sopenharmony_ci		EN_IP_PERI0, 25, 0, 0),
131062306a36Sopenharmony_ci
131162306a36Sopenharmony_ci	GATE(PERI_CLK_UART4, "clk_uart4", "dout_aclk_peri_66",
131262306a36Sopenharmony_ci		EN_IP_PERI2, 0, 0, 0),
131362306a36Sopenharmony_ci	GATE(PERI_CLK_PWM, "clk_pwm", "dout_aclk_peri_66",
131462306a36Sopenharmony_ci		EN_IP_PERI2, 3, 0, 0),
131562306a36Sopenharmony_ci	GATE(PERI_CLK_SPDIF, "clk_spdif", "dout_aclk_peri_66",
131662306a36Sopenharmony_ci		EN_IP_PERI2, 6, 0, 0),
131762306a36Sopenharmony_ci	GATE(PERI_CLK_SPI0, "clk_spi0", "dout_aclk_peri_66",
131862306a36Sopenharmony_ci		EN_IP_PERI2, 7, 0, 0),
131962306a36Sopenharmony_ci	GATE(PERI_CLK_SPI1, "clk_spi1", "dout_aclk_peri_66",
132062306a36Sopenharmony_ci		EN_IP_PERI2, 8, 0, 0),
132162306a36Sopenharmony_ci	GATE(PERI_CLK_SPI2, "clk_spi2", "dout_aclk_peri_66",
132262306a36Sopenharmony_ci		EN_IP_PERI2, 9, 0, 0),
132362306a36Sopenharmony_ci	GATE(PERI_CLK_TMU0, "clk_tmu0", "dout_aclk_peri_66",
132462306a36Sopenharmony_ci		EN_IP_PERI2, 10, 0, 0),
132562306a36Sopenharmony_ci	GATE(PERI_CLK_TMU1, "clk_tmu1", "dout_aclk_peri_66",
132662306a36Sopenharmony_ci		EN_IP_PERI2, 11, 0, 0),
132762306a36Sopenharmony_ci	GATE(PERI_CLK_TMU2, "clk_tmu2", "dout_aclk_peri_66",
132862306a36Sopenharmony_ci		EN_IP_PERI2, 12, 0, 0),
132962306a36Sopenharmony_ci	GATE(PERI_CLK_TMU3, "clk_tmu3", "dout_aclk_peri_66",
133062306a36Sopenharmony_ci		EN_IP_PERI2, 13, 0, 0),
133162306a36Sopenharmony_ci	GATE(PERI_CLK_TMU4, "clk_tmu4", "dout_aclk_peri_66",
133262306a36Sopenharmony_ci		EN_IP_PERI2, 14, 0, 0),
133362306a36Sopenharmony_ci	GATE(PERI_CLK_ADC, "clk_adc", "dout_aclk_peri_66",
133462306a36Sopenharmony_ci		EN_IP_PERI2, 18, 0, 0),
133562306a36Sopenharmony_ci	GATE(PERI_CLK_UART0, "clk_uart0", "dout_aclk_peri_66",
133662306a36Sopenharmony_ci		EN_IP_PERI2, 19, 0, 0),
133762306a36Sopenharmony_ci	GATE(PERI_CLK_UART1, "clk_uart1", "dout_aclk_peri_66",
133862306a36Sopenharmony_ci		EN_IP_PERI2, 20, 0, 0),
133962306a36Sopenharmony_ci	GATE(PERI_CLK_UART2, "clk_uart2", "dout_aclk_peri_66",
134062306a36Sopenharmony_ci		EN_IP_PERI2, 21, 0, 0),
134162306a36Sopenharmony_ci
134262306a36Sopenharmony_ci	GATE(PERI_CLK_CHIPID, "clk_chipid", "dout_aclk_peri_66",
134362306a36Sopenharmony_ci		EN_IP_PERI_SECURE_CHIPID, 2, 0, 0),
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ci	GATE(PERI_CLK_PROVKEY0, "clk_provkey0", "dout_aclk_peri_66",
134662306a36Sopenharmony_ci		EN_IP_PERI_SECURE_PROVKEY0, 1, 0, 0),
134762306a36Sopenharmony_ci
134862306a36Sopenharmony_ci	GATE(PERI_CLK_PROVKEY1, "clk_provkey1", "dout_aclk_peri_66",
134962306a36Sopenharmony_ci		EN_IP_PERI_SECURE_PROVKEY1, 2, 0, 0),
135062306a36Sopenharmony_ci
135162306a36Sopenharmony_ci	GATE(PERI_CLK_SECKEY, "clk_seckey", "dout_aclk_peri_66",
135262306a36Sopenharmony_ci		EN_IP_PERI_SECURE_SECKEY, 5, 0, 0),
135362306a36Sopenharmony_ci
135462306a36Sopenharmony_ci	GATE(PERI_CLK_TOP_RTC, "clk_top_rtc", "dout_aclk_peri_66",
135562306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TOP_RTC, 5, 0, 0),
135662306a36Sopenharmony_ci
135762306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC0, "clk_tzpc0", "dout_aclk_peri_66",
135862306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 10, 0, 0),
135962306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC1, "clk_tzpc1", "dout_aclk_peri_66",
136062306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 11, 0, 0),
136162306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC2, "clk_tzpc2", "dout_aclk_peri_66",
136262306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 12, 0, 0),
136362306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC3, "clk_tzpc3", "dout_aclk_peri_66",
136462306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 13, 0, 0),
136562306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC4, "clk_tzpc4", "dout_aclk_peri_66",
136662306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 14, 0, 0),
136762306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC5, "clk_tzpc5", "dout_aclk_peri_66",
136862306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 15, 0, 0),
136962306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC6, "clk_tzpc6", "dout_aclk_peri_66",
137062306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 16, 0, 0),
137162306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC7, "clk_tzpc7", "dout_aclk_peri_66",
137262306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 17, 0, 0),
137362306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC8, "clk_tzpc8", "dout_aclk_peri_66",
137462306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 18, 0, 0),
137562306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC9, "clk_tzpc9", "dout_aclk_peri_66",
137662306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 19, 0, 0),
137762306a36Sopenharmony_ci	GATE(PERI_CLK_TZPC10, "clk_tzpc10", "dout_aclk_peri_66",
137862306a36Sopenharmony_ci		EN_IP_PERI_SECURE_TZPC, 20, 0, 0),
137962306a36Sopenharmony_ci};
138062306a36Sopenharmony_ci
138162306a36Sopenharmony_cistatic const struct samsung_cmu_info peri_cmu __initconst = {
138262306a36Sopenharmony_ci	.mux_clks	= peri_mux_clks,
138362306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(peri_mux_clks),
138462306a36Sopenharmony_ci	.div_clks	= peri_div_clks,
138562306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(peri_div_clks),
138662306a36Sopenharmony_ci	.gate_clks	= peri_gate_clks,
138762306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(peri_gate_clks),
138862306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_PERI,
138962306a36Sopenharmony_ci	.clk_regs	= peri_clk_regs,
139062306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(peri_clk_regs),
139162306a36Sopenharmony_ci};
139262306a36Sopenharmony_ci
139362306a36Sopenharmony_cistatic void __init exynos5260_clk_peri_init(struct device_node *np)
139462306a36Sopenharmony_ci{
139562306a36Sopenharmony_ci	samsung_cmu_register_one(np, &peri_cmu);
139662306a36Sopenharmony_ci}
139762306a36Sopenharmony_ci
139862306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_peri, "samsung,exynos5260-clock-peri",
139962306a36Sopenharmony_ci		exynos5260_clk_peri_init);
140062306a36Sopenharmony_ci
140162306a36Sopenharmony_ci
140262306a36Sopenharmony_ci/* CMU_TOP */
140362306a36Sopenharmony_ci
140462306a36Sopenharmony_cistatic const unsigned long top_clk_regs[] __initconst = {
140562306a36Sopenharmony_ci	DISP_PLL_LOCK,
140662306a36Sopenharmony_ci	AUD_PLL_LOCK,
140762306a36Sopenharmony_ci	DISP_PLL_CON0,
140862306a36Sopenharmony_ci	DISP_PLL_CON1,
140962306a36Sopenharmony_ci	DISP_PLL_FDET,
141062306a36Sopenharmony_ci	AUD_PLL_CON0,
141162306a36Sopenharmony_ci	AUD_PLL_CON1,
141262306a36Sopenharmony_ci	AUD_PLL_CON2,
141362306a36Sopenharmony_ci	AUD_PLL_FDET,
141462306a36Sopenharmony_ci	MUX_SEL_TOP_PLL0,
141562306a36Sopenharmony_ci	MUX_SEL_TOP_MFC,
141662306a36Sopenharmony_ci	MUX_SEL_TOP_G2D,
141762306a36Sopenharmony_ci	MUX_SEL_TOP_GSCL,
141862306a36Sopenharmony_ci	MUX_SEL_TOP_ISP10,
141962306a36Sopenharmony_ci	MUX_SEL_TOP_ISP11,
142062306a36Sopenharmony_ci	MUX_SEL_TOP_DISP0,
142162306a36Sopenharmony_ci	MUX_SEL_TOP_DISP1,
142262306a36Sopenharmony_ci	MUX_SEL_TOP_BUS,
142362306a36Sopenharmony_ci	MUX_SEL_TOP_PERI0,
142462306a36Sopenharmony_ci	MUX_SEL_TOP_PERI1,
142562306a36Sopenharmony_ci	MUX_SEL_TOP_FSYS,
142662306a36Sopenharmony_ci	DIV_TOP_G2D_MFC,
142762306a36Sopenharmony_ci	DIV_TOP_GSCL_ISP0,
142862306a36Sopenharmony_ci	DIV_TOP_ISP10,
142962306a36Sopenharmony_ci	DIV_TOP_ISP11,
143062306a36Sopenharmony_ci	DIV_TOP_DISP,
143162306a36Sopenharmony_ci	DIV_TOP_BUS,
143262306a36Sopenharmony_ci	DIV_TOP_PERI0,
143362306a36Sopenharmony_ci	DIV_TOP_PERI1,
143462306a36Sopenharmony_ci	DIV_TOP_PERI2,
143562306a36Sopenharmony_ci	DIV_TOP_FSYS0,
143662306a36Sopenharmony_ci	DIV_TOP_FSYS1,
143762306a36Sopenharmony_ci	DIV_TOP_HPM,
143862306a36Sopenharmony_ci	DIV_TOP_PLL_FDET,
143962306a36Sopenharmony_ci	EN_ACLK_TOP,
144062306a36Sopenharmony_ci	EN_SCLK_TOP,
144162306a36Sopenharmony_ci	EN_IP_TOP,
144262306a36Sopenharmony_ci};
144362306a36Sopenharmony_ci
144462306a36Sopenharmony_ci/* fixed rate clocks generated inside the soc */
144562306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock fixed_rate_clks[] __initconst = {
144662306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH3_TXD_CLK, "phyclk_dptx_phy_ch3_txd_clk", NULL,
144762306a36Sopenharmony_ci			0, 270000000),
144862306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH2_TXD_CLK, "phyclk_dptx_phy_ch2_txd_clk", NULL,
144962306a36Sopenharmony_ci			0, 270000000),
145062306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH1_TXD_CLK, "phyclk_dptx_phy_ch1_txd_clk", NULL,
145162306a36Sopenharmony_ci			0, 270000000),
145262306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CH0_TXD_CLK, "phyclk_dptx_phy_ch0_txd_clk", NULL,
145362306a36Sopenharmony_ci			0, 270000000),
145462306a36Sopenharmony_ci	FRATE(phyclk_hdmi_phy_tmds_clko, "phyclk_hdmi_phy_tmds_clko", NULL,
145562306a36Sopenharmony_ci			0, 250000000),
145662306a36Sopenharmony_ci	FRATE(PHYCLK_HDMI_PHY_PIXEL_CLKO, "phyclk_hdmi_phy_pixel_clko", NULL,
145762306a36Sopenharmony_ci			0, 1660000000),
145862306a36Sopenharmony_ci	FRATE(PHYCLK_HDMI_LINK_O_TMDS_CLKHI, "phyclk_hdmi_link_o_tmds_clkhi",
145962306a36Sopenharmony_ci			NULL, 0, 125000000),
146062306a36Sopenharmony_ci	FRATE(PHYCLK_MIPI_DPHY_4L_M_TXBYTECLKHS,
146162306a36Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_txbyte_clkhs" , NULL,
146262306a36Sopenharmony_ci			0, 187500000),
146362306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_O_REF_CLK_24M, "phyclk_dptx_phy_o_ref_clk_24m",
146462306a36Sopenharmony_ci			NULL, 0, 24000000),
146562306a36Sopenharmony_ci	FRATE(PHYCLK_DPTX_PHY_CLK_DIV2, "phyclk_dptx_phy_clk_div2", NULL,
146662306a36Sopenharmony_ci			0, 135000000),
146762306a36Sopenharmony_ci	FRATE(PHYCLK_MIPI_DPHY_4L_M_RXCLKESC0,
146862306a36Sopenharmony_ci			"phyclk_mipi_dphy_4l_m_rxclkesc0", NULL, 0, 20000000),
146962306a36Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_PHYCLOCK, "phyclk_usbhost20_phy_phyclock",
147062306a36Sopenharmony_ci			NULL, 0, 60000000),
147162306a36Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_FREECLK, "phyclk_usbhost20_phy_freeclk",
147262306a36Sopenharmony_ci			NULL, 0, 60000000),
147362306a36Sopenharmony_ci	FRATE(PHYCLK_USBHOST20_PHY_CLK48MOHCI,
147462306a36Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci", NULL, 0, 48000000),
147562306a36Sopenharmony_ci	FRATE(PHYCLK_USBDRD30_UDRD30_PIPE_PCLK,
147662306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk", NULL, 0, 125000000),
147762306a36Sopenharmony_ci	FRATE(PHYCLK_USBDRD30_UDRD30_PHYCLOCK,
147862306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock", NULL, 0, 60000000),
147962306a36Sopenharmony_ci};
148062306a36Sopenharmony_ci
148162306a36Sopenharmony_ciPNAME(mout_memtop_pll_user_p) = {"fin_pll", "dout_mem_pll"};
148262306a36Sopenharmony_ciPNAME(mout_bustop_pll_user_p) = {"fin_pll", "dout_bus_pll"};
148362306a36Sopenharmony_ciPNAME(mout_mediatop_pll_user_p) = {"fin_pll", "dout_media_pll"};
148462306a36Sopenharmony_ciPNAME(mout_audtop_pll_user_p) = {"fin_pll", "mout_aud_pll"};
148562306a36Sopenharmony_ciPNAME(mout_aud_pll_p) = {"fin_pll", "fout_aud_pll"};
148662306a36Sopenharmony_ciPNAME(mout_disp_pll_p) = {"fin_pll", "fout_disp_pll"};
148762306a36Sopenharmony_ciPNAME(mout_mfc_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
148862306a36Sopenharmony_ciPNAME(mout_aclk_mfc_333_p) = {"mout_mediatop_pll_user", "mout_mfc_bustop_333"};
148962306a36Sopenharmony_ciPNAME(mout_g2d_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
149062306a36Sopenharmony_ciPNAME(mout_aclk_g2d_333_p) = {"mout_mediatop_pll_user", "mout_g2d_bustop_333"};
149162306a36Sopenharmony_ciPNAME(mout_gscl_bustop_333_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
149262306a36Sopenharmony_ciPNAME(mout_aclk_gscl_333_p) = {"mout_mediatop_pll_user",
149362306a36Sopenharmony_ci			"mout_gscl_bustop_333"};
149462306a36Sopenharmony_ciPNAME(mout_m2m_mediatop_400_p) = {"mout_mediatop_pll_user", "mout_disp_pll"};
149562306a36Sopenharmony_ciPNAME(mout_aclk_gscl_400_p) = {"mout_bustop_pll_user",
149662306a36Sopenharmony_ci			"mout_m2m_mediatop_400"};
149762306a36Sopenharmony_ciPNAME(mout_gscl_bustop_fimc_p) = {"mout_bustop_pll_user", "mout_disp_pll"};
149862306a36Sopenharmony_ciPNAME(mout_aclk_gscl_fimc_p) = {"mout_mediatop_pll_user",
149962306a36Sopenharmony_ci			"mout_gscl_bustop_fimc"};
150062306a36Sopenharmony_ciPNAME(mout_isp1_media_266_p) = {"mout_mediatop_pll_user",
150162306a36Sopenharmony_ci			"mout_memtop_pll_user"};
150262306a36Sopenharmony_ciPNAME(mout_aclk_isp1_266_p) = {"mout_bustop_pll_user", "mout_isp1_media_266"};
150362306a36Sopenharmony_ciPNAME(mout_isp1_media_400_p) = {"mout_mediatop_pll_user", "mout_disp_pll"};
150462306a36Sopenharmony_ciPNAME(mout_aclk_isp1_400_p) = {"mout_bustop_pll_user", "mout_isp1_media_400"};
150562306a36Sopenharmony_ciPNAME(mout_sclk_isp_spi_p) = {"fin_pll", "mout_bustop_pll_user"};
150662306a36Sopenharmony_ciPNAME(mout_sclk_isp_uart_p) = {"fin_pll", "mout_bustop_pll_user"};
150762306a36Sopenharmony_ciPNAME(mout_sclk_isp_sensor_p) = {"fin_pll", "mout_bustop_pll_user"};
150862306a36Sopenharmony_ciPNAME(mout_disp_disp_333_p) = {"mout_disp_pll", "mout_bustop_pll_user"};
150962306a36Sopenharmony_ciPNAME(mout_aclk_disp_333_p) = {"mout_mediatop_pll_user", "mout_disp_disp_333"};
151062306a36Sopenharmony_ciPNAME(mout_disp_disp_222_p) = {"mout_disp_pll", "mout_bustop_pll_user"};
151162306a36Sopenharmony_ciPNAME(mout_aclk_disp_222_p) = {"mout_mediatop_pll_user", "mout_disp_disp_222"};
151262306a36Sopenharmony_ciPNAME(mout_disp_media_pixel_p) = {"mout_mediatop_pll_user",
151362306a36Sopenharmony_ci			"mout_bustop_pll_user"};
151462306a36Sopenharmony_ciPNAME(mout_sclk_disp_pixel_p) = {"mout_disp_pll", "mout_disp_media_pixel"};
151562306a36Sopenharmony_ciPNAME(mout_bus_bustop_400_p) = {"mout_bustop_pll_user", "mout_memtop_pll_user"};
151662306a36Sopenharmony_ciPNAME(mout_bus_bustop_100_p) = {"mout_bustop_pll_user", "mout_memtop_pll_user"};
151762306a36Sopenharmony_ciPNAME(mout_sclk_peri_spi_clk_p) = {"fin_pll", "mout_bustop_pll_user"};
151862306a36Sopenharmony_ciPNAME(mout_sclk_peri_uart_uclk_p) = {"fin_pll", "mout_bustop_pll_user"};
151962306a36Sopenharmony_ciPNAME(mout_sclk_fsys_usb_p) = {"fin_pll", "mout_bustop_pll_user"};
152062306a36Sopenharmony_ciPNAME(mout_sclk_fsys_mmc_sdclkin_a_p) = {"fin_pll", "mout_bustop_pll_user"};
152162306a36Sopenharmony_ciPNAME(mout_sclk_fsys_mmc0_sdclkin_b_p) = {"mout_sclk_fsys_mmc0_sdclkin_a",
152262306a36Sopenharmony_ci			"mout_mediatop_pll_user"};
152362306a36Sopenharmony_ciPNAME(mout_sclk_fsys_mmc1_sdclkin_b_p) = {"mout_sclk_fsys_mmc1_sdclkin_a",
152462306a36Sopenharmony_ci			"mout_mediatop_pll_user"};
152562306a36Sopenharmony_ciPNAME(mout_sclk_fsys_mmc2_sdclkin_b_p) = {"mout_sclk_fsys_mmc2_sdclkin_a",
152662306a36Sopenharmony_ci			"mout_mediatop_pll_user"};
152762306a36Sopenharmony_ci
152862306a36Sopenharmony_cistatic const struct samsung_mux_clock top_mux_clks[] __initconst = {
152962306a36Sopenharmony_ci	MUX(TOP_MOUT_MEDIATOP_PLL_USER, "mout_mediatop_pll_user",
153062306a36Sopenharmony_ci			mout_mediatop_pll_user_p,
153162306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 0, 1),
153262306a36Sopenharmony_ci	MUX(TOP_MOUT_MEMTOP_PLL_USER, "mout_memtop_pll_user",
153362306a36Sopenharmony_ci			mout_memtop_pll_user_p,
153462306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 4, 1),
153562306a36Sopenharmony_ci	MUX(TOP_MOUT_BUSTOP_PLL_USER, "mout_bustop_pll_user",
153662306a36Sopenharmony_ci			mout_bustop_pll_user_p,
153762306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 8, 1),
153862306a36Sopenharmony_ci	MUX(TOP_MOUT_DISP_PLL, "mout_disp_pll", mout_disp_pll_p,
153962306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 12, 1),
154062306a36Sopenharmony_ci	MUX(TOP_MOUT_AUD_PLL, "mout_aud_pll", mout_aud_pll_p,
154162306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 16, 1),
154262306a36Sopenharmony_ci	MUX(TOP_MOUT_AUDTOP_PLL_USER, "mout_audtop_pll_user",
154362306a36Sopenharmony_ci			mout_audtop_pll_user_p,
154462306a36Sopenharmony_ci			MUX_SEL_TOP_PLL0, 24, 1),
154562306a36Sopenharmony_ci
154662306a36Sopenharmony_ci	MUX(TOP_MOUT_DISP_DISP_333, "mout_disp_disp_333", mout_disp_disp_333_p,
154762306a36Sopenharmony_ci			MUX_SEL_TOP_DISP0, 0, 1),
154862306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_DISP_333, "mout_aclk_disp_333", mout_aclk_disp_333_p,
154962306a36Sopenharmony_ci			MUX_SEL_TOP_DISP0, 8, 1),
155062306a36Sopenharmony_ci	MUX(TOP_MOUT_DISP_DISP_222, "mout_disp_disp_222", mout_disp_disp_222_p,
155162306a36Sopenharmony_ci			MUX_SEL_TOP_DISP0, 12, 1),
155262306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_DISP_222, "mout_aclk_disp_222", mout_aclk_disp_222_p,
155362306a36Sopenharmony_ci			MUX_SEL_TOP_DISP0, 20, 1),
155462306a36Sopenharmony_ci
155562306a36Sopenharmony_ci	MUX(TOP_MOUT_FIMD1, "mout_sclk_disp_pixel", mout_sclk_disp_pixel_p,
155662306a36Sopenharmony_ci			MUX_SEL_TOP_DISP1, 0, 1),
155762306a36Sopenharmony_ci	MUX(TOP_MOUT_DISP_MEDIA_PIXEL, "mout_disp_media_pixel",
155862306a36Sopenharmony_ci			mout_disp_media_pixel_p,
155962306a36Sopenharmony_ci			MUX_SEL_TOP_DISP1, 8, 1),
156062306a36Sopenharmony_ci
156162306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI2_CLK, "mout_sclk_peri_spi2_clk",
156262306a36Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
156362306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 0, 1),
156462306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI1_CLK, "mout_sclk_peri_spi1_clk",
156562306a36Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
156662306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 4, 1),
156762306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_SPI0_CLK, "mout_sclk_peri_spi0_clk",
156862306a36Sopenharmony_ci			mout_sclk_peri_spi_clk_p,
156962306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 8, 1),
157062306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART1_UCLK, "mout_sclk_peri_uart1_uclk",
157162306a36Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
157262306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 12, 1),
157362306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART2_UCLK, "mout_sclk_peri_uart2_uclk",
157462306a36Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
157562306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 16, 1),
157662306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_PERI_UART0_UCLK, "mout_sclk_peri_uart0_uclk",
157762306a36Sopenharmony_ci			mout_sclk_peri_uart_uclk_p,
157862306a36Sopenharmony_ci			MUX_SEL_TOP_PERI1, 20, 1),
157962306a36Sopenharmony_ci
158062306a36Sopenharmony_ci
158162306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS1_BUSTOP_400, "mout_bus1_bustop_400",
158262306a36Sopenharmony_ci			mout_bus_bustop_400_p,
158362306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 0, 1),
158462306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS1_BUSTOP_100, "mout_bus1_bustop_100",
158562306a36Sopenharmony_ci			mout_bus_bustop_100_p,
158662306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 4, 1),
158762306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS2_BUSTOP_100, "mout_bus2_bustop_100",
158862306a36Sopenharmony_ci			mout_bus_bustop_100_p,
158962306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 8, 1),
159062306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS2_BUSTOP_400, "mout_bus2_bustop_400",
159162306a36Sopenharmony_ci			mout_bus_bustop_400_p,
159262306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 12, 1),
159362306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS3_BUSTOP_400, "mout_bus3_bustop_400",
159462306a36Sopenharmony_ci			mout_bus_bustop_400_p,
159562306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 16, 1),
159662306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS3_BUSTOP_100, "mout_bus3_bustop_100",
159762306a36Sopenharmony_ci			mout_bus_bustop_100_p,
159862306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 20, 1),
159962306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS4_BUSTOP_400, "mout_bus4_bustop_400",
160062306a36Sopenharmony_ci			mout_bus_bustop_400_p,
160162306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 24, 1),
160262306a36Sopenharmony_ci	MUX(TOP_MOUT_BUS4_BUSTOP_100, "mout_bus4_bustop_100",
160362306a36Sopenharmony_ci			mout_bus_bustop_100_p,
160462306a36Sopenharmony_ci			MUX_SEL_TOP_BUS, 28, 1),
160562306a36Sopenharmony_ci
160662306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_USB, "mout_sclk_fsys_usb",
160762306a36Sopenharmony_ci			mout_sclk_fsys_usb_p,
160862306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 0, 1),
160962306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_A, "mout_sclk_fsys_mmc2_sdclkin_a",
161062306a36Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
161162306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 4, 1),
161262306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC2_SDCLKIN_B, "mout_sclk_fsys_mmc2_sdclkin_b",
161362306a36Sopenharmony_ci			mout_sclk_fsys_mmc2_sdclkin_b_p,
161462306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 8, 1),
161562306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_A, "mout_sclk_fsys_mmc1_sdclkin_a",
161662306a36Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
161762306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 12, 1),
161862306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC1_SDCLKIN_B, "mout_sclk_fsys_mmc1_sdclkin_b",
161962306a36Sopenharmony_ci			mout_sclk_fsys_mmc1_sdclkin_b_p,
162062306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 16, 1),
162162306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_A, "mout_sclk_fsys_mmc0_sdclkin_a",
162262306a36Sopenharmony_ci			mout_sclk_fsys_mmc_sdclkin_a_p,
162362306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 20, 1),
162462306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_FSYS_MMC0_SDCLKIN_B, "mout_sclk_fsys_mmc0_sdclkin_b",
162562306a36Sopenharmony_ci			mout_sclk_fsys_mmc0_sdclkin_b_p,
162662306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS, 24, 1),
162762306a36Sopenharmony_ci
162862306a36Sopenharmony_ci	MUX(TOP_MOUT_ISP1_MEDIA_400, "mout_isp1_media_400",
162962306a36Sopenharmony_ci			mout_isp1_media_400_p,
163062306a36Sopenharmony_ci			MUX_SEL_TOP_ISP10, 4, 1),
163162306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_ISP1_400, "mout_aclk_isp1_400", mout_aclk_isp1_400_p,
163262306a36Sopenharmony_ci			MUX_SEL_TOP_ISP10, 8 , 1),
163362306a36Sopenharmony_ci	MUX(TOP_MOUT_ISP1_MEDIA_266, "mout_isp1_media_266",
163462306a36Sopenharmony_ci			mout_isp1_media_266_p,
163562306a36Sopenharmony_ci			MUX_SEL_TOP_ISP10, 16, 1),
163662306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_ISP1_266, "mout_aclk_isp1_266", mout_aclk_isp1_266_p,
163762306a36Sopenharmony_ci			MUX_SEL_TOP_ISP10, 20, 1),
163862306a36Sopenharmony_ci
163962306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SPI0, "mout_sclk_isp1_spi0", mout_sclk_isp_spi_p,
164062306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 4, 1),
164162306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SPI1, "mout_sclk_isp1_spi1", mout_sclk_isp_spi_p,
164262306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 8, 1),
164362306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_UART, "mout_sclk_isp1_uart",
164462306a36Sopenharmony_ci			mout_sclk_isp_uart_p,
164562306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 12, 1),
164662306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR0, "mout_sclk_isp1_sensor0",
164762306a36Sopenharmony_ci			mout_sclk_isp_sensor_p,
164862306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 16, 1),
164962306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR1, "mout_sclk_isp1_sensor1",
165062306a36Sopenharmony_ci			mout_sclk_isp_sensor_p,
165162306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 20, 1),
165262306a36Sopenharmony_ci	MUX(TOP_MOUT_SCLK_ISP1_SENSOR2, "mout_sclk_isp1_sensor2",
165362306a36Sopenharmony_ci			mout_sclk_isp_sensor_p,
165462306a36Sopenharmony_ci			MUX_SEL_TOP_ISP11, 24, 1),
165562306a36Sopenharmony_ci
165662306a36Sopenharmony_ci	MUX(TOP_MOUT_MFC_BUSTOP_333, "mout_mfc_bustop_333",
165762306a36Sopenharmony_ci			mout_mfc_bustop_333_p,
165862306a36Sopenharmony_ci			MUX_SEL_TOP_MFC, 4, 1),
165962306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_MFC_333, "mout_aclk_mfc_333", mout_aclk_mfc_333_p,
166062306a36Sopenharmony_ci			MUX_SEL_TOP_MFC, 8, 1),
166162306a36Sopenharmony_ci
166262306a36Sopenharmony_ci	MUX(TOP_MOUT_G2D_BUSTOP_333, "mout_g2d_bustop_333",
166362306a36Sopenharmony_ci			mout_g2d_bustop_333_p,
166462306a36Sopenharmony_ci			MUX_SEL_TOP_G2D, 4, 1),
166562306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_G2D_333, "mout_aclk_g2d_333", mout_aclk_g2d_333_p,
166662306a36Sopenharmony_ci			MUX_SEL_TOP_G2D, 8, 1),
166762306a36Sopenharmony_ci
166862306a36Sopenharmony_ci	MUX(TOP_MOUT_M2M_MEDIATOP_400, "mout_m2m_mediatop_400",
166962306a36Sopenharmony_ci			mout_m2m_mediatop_400_p,
167062306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 0, 1),
167162306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_400, "mout_aclk_gscl_400",
167262306a36Sopenharmony_ci			mout_aclk_gscl_400_p,
167362306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 4, 1),
167462306a36Sopenharmony_ci	MUX(TOP_MOUT_GSCL_BUSTOP_333, "mout_gscl_bustop_333",
167562306a36Sopenharmony_ci			mout_gscl_bustop_333_p,
167662306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 8, 1),
167762306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_333, "mout_aclk_gscl_333",
167862306a36Sopenharmony_ci			mout_aclk_gscl_333_p,
167962306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 12, 1),
168062306a36Sopenharmony_ci	MUX(TOP_MOUT_GSCL_BUSTOP_FIMC, "mout_gscl_bustop_fimc",
168162306a36Sopenharmony_ci			mout_gscl_bustop_fimc_p,
168262306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 16, 1),
168362306a36Sopenharmony_ci	MUX(TOP_MOUT_ACLK_GSCL_FIMC, "mout_aclk_gscl_fimc",
168462306a36Sopenharmony_ci			mout_aclk_gscl_fimc_p,
168562306a36Sopenharmony_ci			MUX_SEL_TOP_GSCL, 20, 1),
168662306a36Sopenharmony_ci};
168762306a36Sopenharmony_ci
168862306a36Sopenharmony_cistatic const struct samsung_div_clock top_div_clks[] __initconst = {
168962306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_G2D_333, "dout_aclk_g2d_333", "mout_aclk_g2d_333",
169062306a36Sopenharmony_ci			DIV_TOP_G2D_MFC, 0, 3),
169162306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_MFC_333, "dout_aclk_mfc_333", "mout_aclk_mfc_333",
169262306a36Sopenharmony_ci			DIV_TOP_G2D_MFC, 4, 3),
169362306a36Sopenharmony_ci
169462306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_333, "dout_aclk_gscl_333", "mout_aclk_gscl_333",
169562306a36Sopenharmony_ci			DIV_TOP_GSCL_ISP0, 0, 3),
169662306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_400, "dout_aclk_gscl_400", "mout_aclk_gscl_400",
169762306a36Sopenharmony_ci			DIV_TOP_GSCL_ISP0, 4, 3),
169862306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_GSCL_FIMC, "dout_aclk_gscl_fimc",
169962306a36Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 8, 3),
170062306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR0_A, "dout_sclk_isp1_sensor0_a",
170162306a36Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 16, 4),
170262306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR1_A, "dout_sclk_isp1_sensor1_a",
170362306a36Sopenharmony_ci			"mout_aclk_gscl_400", DIV_TOP_GSCL_ISP0, 20, 4),
170462306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR2_A, "dout_sclk_isp1_sensor2_a",
170562306a36Sopenharmony_ci			"mout_aclk_gscl_fimc", DIV_TOP_GSCL_ISP0, 24, 4),
170662306a36Sopenharmony_ci
170762306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_ISP1_266, "dout_aclk_isp1_266", "mout_aclk_isp1_266",
170862306a36Sopenharmony_ci			DIV_TOP_ISP10, 0, 3),
170962306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_ISP1_400, "dout_aclk_isp1_400", "mout_aclk_isp1_400",
171062306a36Sopenharmony_ci			DIV_TOP_ISP10, 4, 3),
171162306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI0_A, "dout_sclk_isp1_spi0_a",
171262306a36Sopenharmony_ci			"mout_sclk_isp1_spi0", DIV_TOP_ISP10, 12, 4),
171362306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI0_B, "dout_sclk_isp1_spi0_b",
171462306a36Sopenharmony_ci			"dout_sclk_isp1_spi0_a", DIV_TOP_ISP10, 16, 8),
171562306a36Sopenharmony_ci
171662306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI1_A, "dout_sclk_isp1_spi1_a",
171762306a36Sopenharmony_ci			"mout_sclk_isp1_spi1", DIV_TOP_ISP11, 0, 4),
171862306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SPI1_B, "dout_sclk_isp1_spi1_b",
171962306a36Sopenharmony_ci			"dout_sclk_isp1_spi1_a", DIV_TOP_ISP11, 4, 8),
172062306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_UART, "dout_sclk_isp1_uart",
172162306a36Sopenharmony_ci			"mout_sclk_isp1_uart", DIV_TOP_ISP11, 12, 4),
172262306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR0_B, "dout_sclk_isp1_sensor0_b",
172362306a36Sopenharmony_ci			"dout_sclk_isp1_sensor0_a", DIV_TOP_ISP11, 16, 4),
172462306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR1_B, "dout_sclk_isp1_sensor1_b",
172562306a36Sopenharmony_ci			"dout_sclk_isp1_sensor1_a", DIV_TOP_ISP11, 20, 4),
172662306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_ISP1_SENSOR2_B, "dout_sclk_isp1_sensor2_b",
172762306a36Sopenharmony_ci			"dout_sclk_isp1_sensor2_a", DIV_TOP_ISP11, 24, 4),
172862306a36Sopenharmony_ci
172962306a36Sopenharmony_ci	DIV(TOP_DOUTTOP__SCLK_HPM_TARGETCLK, "dout_sclk_hpm_targetclk",
173062306a36Sopenharmony_ci			"mout_bustop_pll_user", DIV_TOP_HPM, 0, 3),
173162306a36Sopenharmony_ci
173262306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_DISP_333, "dout_aclk_disp_333", "mout_aclk_disp_333",
173362306a36Sopenharmony_ci			DIV_TOP_DISP, 0, 3),
173462306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_DISP_222, "dout_aclk_disp_222", "mout_aclk_disp_222",
173562306a36Sopenharmony_ci			DIV_TOP_DISP, 4, 3),
173662306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_DISP_PIXEL, "dout_sclk_disp_pixel",
173762306a36Sopenharmony_ci			"mout_sclk_disp_pixel",	DIV_TOP_DISP, 8, 3),
173862306a36Sopenharmony_ci
173962306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS1_400, "dout_aclk_bus1_400",
174062306a36Sopenharmony_ci			"mout_bus1_bustop_400",	DIV_TOP_BUS, 0, 3),
174162306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS1_100, "dout_aclk_bus1_100",
174262306a36Sopenharmony_ci			"mout_bus1_bustop_100",	DIV_TOP_BUS, 4, 4),
174362306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS2_400, "dout_aclk_bus2_400",
174462306a36Sopenharmony_ci			"mout_bus2_bustop_400",	DIV_TOP_BUS, 8, 3),
174562306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS2_100, "dout_aclk_bus2_100",
174662306a36Sopenharmony_ci			"mout_bus2_bustop_100",	DIV_TOP_BUS, 12, 4),
174762306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS3_400, "dout_aclk_bus3_400",
174862306a36Sopenharmony_ci			"mout_bus3_bustop_400", DIV_TOP_BUS, 16, 3),
174962306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS3_100, "dout_aclk_bus3_100",
175062306a36Sopenharmony_ci			"mout_bus3_bustop_100",	DIV_TOP_BUS, 20, 4),
175162306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS4_400, "dout_aclk_bus4_400",
175262306a36Sopenharmony_ci			"mout_bus4_bustop_400",	DIV_TOP_BUS, 24, 3),
175362306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_BUS4_100, "dout_aclk_bus4_100",
175462306a36Sopenharmony_ci			"mout_bus4_bustop_100",	DIV_TOP_BUS, 28, 4),
175562306a36Sopenharmony_ci
175662306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI0_A, "dout_sclk_peri_spi0_a",
175762306a36Sopenharmony_ci			"mout_sclk_peri_spi0_clk", DIV_TOP_PERI0, 4, 4),
175862306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI0_B, "dout_sclk_peri_spi0_b",
175962306a36Sopenharmony_ci			"dout_sclk_peri_spi0_a", DIV_TOP_PERI0, 8, 8),
176062306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI1_A, "dout_sclk_peri_spi1_a",
176162306a36Sopenharmony_ci			"mout_sclk_peri_spi1_clk", DIV_TOP_PERI0, 16, 4),
176262306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI1_B, "dout_sclk_peri_spi1_b",
176362306a36Sopenharmony_ci			"dout_sclk_peri_spi1_a", DIV_TOP_PERI0, 20, 8),
176462306a36Sopenharmony_ci
176562306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI2_A, "dout_sclk_peri_spi2_a",
176662306a36Sopenharmony_ci			"mout_sclk_peri_spi2_clk", DIV_TOP_PERI1, 0, 4),
176762306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_SPI2_B, "dout_sclk_peri_spi2_b",
176862306a36Sopenharmony_ci			"dout_sclk_peri_spi2_a", DIV_TOP_PERI1, 4, 8),
176962306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART1, "dout_sclk_peri_uart1",
177062306a36Sopenharmony_ci			"mout_sclk_peri_uart1_uclk", DIV_TOP_PERI1, 16, 4),
177162306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART2, "dout_sclk_peri_uart2",
177262306a36Sopenharmony_ci			"mout_sclk_peri_uart2_uclk", DIV_TOP_PERI1, 20, 4),
177362306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_PERI_UART0, "dout_sclk_peri_uart0",
177462306a36Sopenharmony_ci			"mout_sclk_peri_uart0_uclk", DIV_TOP_PERI1, 24, 4),
177562306a36Sopenharmony_ci
177662306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_PERI_66, "dout_aclk_peri_66", "mout_bustop_pll_user",
177762306a36Sopenharmony_ci			DIV_TOP_PERI2, 20, 4),
177862306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_PERI_AUD, "dout_aclk_peri_aud",
177962306a36Sopenharmony_ci			"mout_audtop_pll_user", DIV_TOP_PERI2, 24, 3),
178062306a36Sopenharmony_ci
178162306a36Sopenharmony_ci	DIV(TOP_DOUT_ACLK_FSYS_200, "dout_aclk_fsys_200",
178262306a36Sopenharmony_ci			"mout_bustop_pll_user", DIV_TOP_FSYS0, 0, 3),
178362306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_USBDRD30_SUSPEND_CLK,
178462306a36Sopenharmony_ci			"dout_sclk_fsys_usbdrd30_suspend_clk",
178562306a36Sopenharmony_ci			"mout_sclk_fsys_usb", DIV_TOP_FSYS0, 4, 4),
178662306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC0_SDCLKIN_A, "dout_sclk_fsys_mmc0_sdclkin_a",
178762306a36Sopenharmony_ci			"mout_sclk_fsys_mmc0_sdclkin_b",
178862306a36Sopenharmony_ci			DIV_TOP_FSYS0, 12, 4),
178962306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC0_SDCLKIN_B, "dout_sclk_fsys_mmc0_sdclkin_b",
179062306a36Sopenharmony_ci			"dout_sclk_fsys_mmc0_sdclkin_a",
179162306a36Sopenharmony_ci			DIV_TOP_FSYS0, 16, 8),
179262306a36Sopenharmony_ci
179362306a36Sopenharmony_ci
179462306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC1_SDCLKIN_A, "dout_sclk_fsys_mmc1_sdclkin_a",
179562306a36Sopenharmony_ci			"mout_sclk_fsys_mmc1_sdclkin_b",
179662306a36Sopenharmony_ci			DIV_TOP_FSYS1, 0, 4),
179762306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC1_SDCLKIN_B, "dout_sclk_fsys_mmc1_sdclkin_b",
179862306a36Sopenharmony_ci			"dout_sclk_fsys_mmc1_sdclkin_a",
179962306a36Sopenharmony_ci			DIV_TOP_FSYS1, 4, 8),
180062306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC2_SDCLKIN_A, "dout_sclk_fsys_mmc2_sdclkin_a",
180162306a36Sopenharmony_ci			"mout_sclk_fsys_mmc2_sdclkin_b",
180262306a36Sopenharmony_ci			DIV_TOP_FSYS1, 12, 4),
180362306a36Sopenharmony_ci	DIV(TOP_DOUT_SCLK_FSYS_MMC2_SDCLKIN_B, "dout_sclk_fsys_mmc2_sdclkin_b",
180462306a36Sopenharmony_ci			"dout_sclk_fsys_mmc2_sdclkin_a",
180562306a36Sopenharmony_ci			DIV_TOP_FSYS1, 16, 8),
180662306a36Sopenharmony_ci
180762306a36Sopenharmony_ci};
180862306a36Sopenharmony_ci
180962306a36Sopenharmony_cistatic const struct samsung_gate_clock top_gate_clks[] __initconst = {
181062306a36Sopenharmony_ci	GATE(TOP_SCLK_MMC0, "sclk_fsys_mmc0_sdclkin",
181162306a36Sopenharmony_ci			"dout_sclk_fsys_mmc0_sdclkin_b",
181262306a36Sopenharmony_ci			EN_SCLK_TOP, 7, CLK_SET_RATE_PARENT, 0),
181362306a36Sopenharmony_ci	GATE(TOP_SCLK_MMC1, "sclk_fsys_mmc1_sdclkin",
181462306a36Sopenharmony_ci			"dout_sclk_fsys_mmc1_sdclkin_b",
181562306a36Sopenharmony_ci			EN_SCLK_TOP, 8, CLK_SET_RATE_PARENT, 0),
181662306a36Sopenharmony_ci	GATE(TOP_SCLK_MMC2, "sclk_fsys_mmc2_sdclkin",
181762306a36Sopenharmony_ci			"dout_sclk_fsys_mmc2_sdclkin_b",
181862306a36Sopenharmony_ci			EN_SCLK_TOP, 9, CLK_SET_RATE_PARENT, 0),
181962306a36Sopenharmony_ci	GATE(TOP_SCLK_FIMD1, "sclk_disp_pixel", "dout_sclk_disp_pixel",
182062306a36Sopenharmony_ci			EN_ACLK_TOP, 10, CLK_IGNORE_UNUSED |
182162306a36Sopenharmony_ci			CLK_SET_RATE_PARENT, 0),
182262306a36Sopenharmony_ci};
182362306a36Sopenharmony_ci
182462306a36Sopenharmony_cistatic const struct samsung_pll_clock top_pll_clks[] __initconst = {
182562306a36Sopenharmony_ci	PLL(pll_2550xx, TOP_FOUT_DISP_PLL, "fout_disp_pll", "fin_pll",
182662306a36Sopenharmony_ci		DISP_PLL_LOCK, DISP_PLL_CON0,
182762306a36Sopenharmony_ci		pll2550_24mhz_tbl),
182862306a36Sopenharmony_ci	PLL(pll_2650xx, TOP_FOUT_AUD_PLL, "fout_aud_pll", "fin_pll",
182962306a36Sopenharmony_ci		AUD_PLL_LOCK, AUD_PLL_CON0,
183062306a36Sopenharmony_ci		pll2650_24mhz_tbl),
183162306a36Sopenharmony_ci};
183262306a36Sopenharmony_ci
183362306a36Sopenharmony_cistatic const struct samsung_cmu_info top_cmu __initconst = {
183462306a36Sopenharmony_ci	.pll_clks	= top_pll_clks,
183562306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(top_pll_clks),
183662306a36Sopenharmony_ci	.mux_clks	= top_mux_clks,
183762306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(top_mux_clks),
183862306a36Sopenharmony_ci	.div_clks	= top_div_clks,
183962306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(top_div_clks),
184062306a36Sopenharmony_ci	.gate_clks	= top_gate_clks,
184162306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(top_gate_clks),
184262306a36Sopenharmony_ci	.fixed_clks	= fixed_rate_clks,
184362306a36Sopenharmony_ci	.nr_fixed_clks	= ARRAY_SIZE(fixed_rate_clks),
184462306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_TOP,
184562306a36Sopenharmony_ci	.clk_regs	= top_clk_regs,
184662306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(top_clk_regs),
184762306a36Sopenharmony_ci};
184862306a36Sopenharmony_ci
184962306a36Sopenharmony_cistatic void __init exynos5260_clk_top_init(struct device_node *np)
185062306a36Sopenharmony_ci{
185162306a36Sopenharmony_ci	samsung_cmu_register_one(np, &top_cmu);
185262306a36Sopenharmony_ci}
185362306a36Sopenharmony_ci
185462306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5260_clk_top, "samsung,exynos5260-clock-top",
185562306a36Sopenharmony_ci		exynos5260_clk_top_init);
1856