162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (c) 2014 Samsung Electronics Co., Ltd.
462306a36Sopenharmony_ci * Author: Chanwoo Choi <cw00.choi@samsung.com>
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Common Clock Framework support for Exynos5433 SoC.
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/clk.h>
1062306a36Sopenharmony_ci#include <linux/clk-provider.h>
1162306a36Sopenharmony_ci#include <linux/of.h>
1262306a36Sopenharmony_ci#include <linux/of_address.h>
1362306a36Sopenharmony_ci#include <linux/platform_device.h>
1462306a36Sopenharmony_ci#include <linux/pm_runtime.h>
1562306a36Sopenharmony_ci#include <linux/slab.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#include <dt-bindings/clock/exynos5433.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "clk.h"
2062306a36Sopenharmony_ci#include "clk-cpu.h"
2162306a36Sopenharmony_ci#include "clk-exynos-arm64.h"
2262306a36Sopenharmony_ci#include "clk-pll.h"
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/* NOTE: Must be equal to the last clock ID increased by one */
2562306a36Sopenharmony_ci#define CLKS_NR_TOP			(CLK_SCLK_HDMI_SPDIF_DISP + 1)
2662306a36Sopenharmony_ci#define CLKS_NR_CPIF			(CLK_SCLK_UFS_MPHY + 1)
2762306a36Sopenharmony_ci#define CLKS_NR_MIF			(CLK_SCLK_BUS_PLL_ATLAS + 1)
2862306a36Sopenharmony_ci#define CLKS_NR_PERIC			(CLK_DIV_SCLK_SC_IN + 1)
2962306a36Sopenharmony_ci#define CLKS_NR_PERIS			(CLK_SCLK_OTP_CON + 1)
3062306a36Sopenharmony_ci#define CLKS_NR_FSYS			(CLK_PCIE + 1)
3162306a36Sopenharmony_ci#define CLKS_NR_G2D			(CLK_PCLK_SMMU_G2D + 1)
3262306a36Sopenharmony_ci#define CLKS_NR_DISP			(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY + 1)
3362306a36Sopenharmony_ci#define CLKS_NR_AUD			(CLK_SCLK_AUD_I2S + 1)
3462306a36Sopenharmony_ci#define CLKS_NR_BUSX			(CLK_ACLK_BUS2RTND_400 + 1)
3562306a36Sopenharmony_ci#define CLKS_NR_G3D			(CLK_SCLK_HPM_G3D + 1)
3662306a36Sopenharmony_ci#define CLKS_NR_GSCL			(CLK_PCLK_SMMU_GSCL2 + 1)
3762306a36Sopenharmony_ci#define CLKS_NR_APOLLO			(CLK_SCLK_APOLLO + 1)
3862306a36Sopenharmony_ci#define CLKS_NR_ATLAS			(CLK_SCLK_ATLAS + 1)
3962306a36Sopenharmony_ci#define CLKS_NR_MSCL			(CLK_SCLK_JPEG + 1)
4062306a36Sopenharmony_ci#define CLKS_NR_MFC			(CLK_PCLK_SMMU_MFC_0 + 1)
4162306a36Sopenharmony_ci#define CLKS_NR_HEVC			(CLK_PCLK_SMMU_HEVC_0 + 1)
4262306a36Sopenharmony_ci#define CLKS_NR_ISP			(CLK_SCLK_PIXELASYNCM_ISPC + 1)
4362306a36Sopenharmony_ci#define CLKS_NR_CAM0			(CLK_SCLK_PIXELASYNCS_LITE_C_INIT + 1)
4462306a36Sopenharmony_ci#define CLKS_NR_CAM1			(CLK_SCLK_ISP_CA5 + 1)
4562306a36Sopenharmony_ci#define CLKS_NR_IMEM			(CLK_PCLK_SLIMSSS + 1)
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci/*
4862306a36Sopenharmony_ci * Register offset definitions for CMU_TOP
4962306a36Sopenharmony_ci */
5062306a36Sopenharmony_ci#define ISP_PLL_LOCK			0x0000
5162306a36Sopenharmony_ci#define AUD_PLL_LOCK			0x0004
5262306a36Sopenharmony_ci#define ISP_PLL_CON0			0x0100
5362306a36Sopenharmony_ci#define ISP_PLL_CON1			0x0104
5462306a36Sopenharmony_ci#define ISP_PLL_FREQ_DET		0x0108
5562306a36Sopenharmony_ci#define AUD_PLL_CON0			0x0110
5662306a36Sopenharmony_ci#define AUD_PLL_CON1			0x0114
5762306a36Sopenharmony_ci#define AUD_PLL_CON2			0x0118
5862306a36Sopenharmony_ci#define AUD_PLL_FREQ_DET		0x011c
5962306a36Sopenharmony_ci#define MUX_SEL_TOP0			0x0200
6062306a36Sopenharmony_ci#define MUX_SEL_TOP1			0x0204
6162306a36Sopenharmony_ci#define MUX_SEL_TOP2			0x0208
6262306a36Sopenharmony_ci#define MUX_SEL_TOP3			0x020c
6362306a36Sopenharmony_ci#define MUX_SEL_TOP4			0x0210
6462306a36Sopenharmony_ci#define MUX_SEL_TOP_MSCL		0x0220
6562306a36Sopenharmony_ci#define MUX_SEL_TOP_CAM1		0x0224
6662306a36Sopenharmony_ci#define MUX_SEL_TOP_DISP		0x0228
6762306a36Sopenharmony_ci#define MUX_SEL_TOP_FSYS0		0x0230
6862306a36Sopenharmony_ci#define MUX_SEL_TOP_FSYS1		0x0234
6962306a36Sopenharmony_ci#define MUX_SEL_TOP_PERIC0		0x0238
7062306a36Sopenharmony_ci#define MUX_SEL_TOP_PERIC1		0x023c
7162306a36Sopenharmony_ci#define MUX_ENABLE_TOP0			0x0300
7262306a36Sopenharmony_ci#define MUX_ENABLE_TOP1			0x0304
7362306a36Sopenharmony_ci#define MUX_ENABLE_TOP2			0x0308
7462306a36Sopenharmony_ci#define MUX_ENABLE_TOP3			0x030c
7562306a36Sopenharmony_ci#define MUX_ENABLE_TOP4			0x0310
7662306a36Sopenharmony_ci#define MUX_ENABLE_TOP_MSCL		0x0320
7762306a36Sopenharmony_ci#define MUX_ENABLE_TOP_CAM1		0x0324
7862306a36Sopenharmony_ci#define MUX_ENABLE_TOP_DISP		0x0328
7962306a36Sopenharmony_ci#define MUX_ENABLE_TOP_FSYS0		0x0330
8062306a36Sopenharmony_ci#define MUX_ENABLE_TOP_FSYS1		0x0334
8162306a36Sopenharmony_ci#define MUX_ENABLE_TOP_PERIC0		0x0338
8262306a36Sopenharmony_ci#define MUX_ENABLE_TOP_PERIC1		0x033c
8362306a36Sopenharmony_ci#define MUX_STAT_TOP0			0x0400
8462306a36Sopenharmony_ci#define MUX_STAT_TOP1			0x0404
8562306a36Sopenharmony_ci#define MUX_STAT_TOP2			0x0408
8662306a36Sopenharmony_ci#define MUX_STAT_TOP3			0x040c
8762306a36Sopenharmony_ci#define MUX_STAT_TOP4			0x0410
8862306a36Sopenharmony_ci#define MUX_STAT_TOP_MSCL		0x0420
8962306a36Sopenharmony_ci#define MUX_STAT_TOP_CAM1		0x0424
9062306a36Sopenharmony_ci#define MUX_STAT_TOP_FSYS0		0x0430
9162306a36Sopenharmony_ci#define MUX_STAT_TOP_FSYS1		0x0434
9262306a36Sopenharmony_ci#define MUX_STAT_TOP_PERIC0		0x0438
9362306a36Sopenharmony_ci#define MUX_STAT_TOP_PERIC1		0x043c
9462306a36Sopenharmony_ci#define DIV_TOP0			0x0600
9562306a36Sopenharmony_ci#define DIV_TOP1			0x0604
9662306a36Sopenharmony_ci#define DIV_TOP2			0x0608
9762306a36Sopenharmony_ci#define DIV_TOP3			0x060c
9862306a36Sopenharmony_ci#define DIV_TOP4			0x0610
9962306a36Sopenharmony_ci#define DIV_TOP_MSCL			0x0618
10062306a36Sopenharmony_ci#define DIV_TOP_CAM10			0x061c
10162306a36Sopenharmony_ci#define DIV_TOP_CAM11			0x0620
10262306a36Sopenharmony_ci#define DIV_TOP_FSYS0			0x062c
10362306a36Sopenharmony_ci#define DIV_TOP_FSYS1			0x0630
10462306a36Sopenharmony_ci#define DIV_TOP_FSYS2			0x0634
10562306a36Sopenharmony_ci#define DIV_TOP_PERIC0			0x0638
10662306a36Sopenharmony_ci#define DIV_TOP_PERIC1			0x063c
10762306a36Sopenharmony_ci#define DIV_TOP_PERIC2			0x0640
10862306a36Sopenharmony_ci#define DIV_TOP_PERIC3			0x0644
10962306a36Sopenharmony_ci#define DIV_TOP_PERIC4			0x0648
11062306a36Sopenharmony_ci#define DIV_TOP_PLL_FREQ_DET		0x064c
11162306a36Sopenharmony_ci#define DIV_STAT_TOP0			0x0700
11262306a36Sopenharmony_ci#define DIV_STAT_TOP1			0x0704
11362306a36Sopenharmony_ci#define DIV_STAT_TOP2			0x0708
11462306a36Sopenharmony_ci#define DIV_STAT_TOP3			0x070c
11562306a36Sopenharmony_ci#define DIV_STAT_TOP4			0x0710
11662306a36Sopenharmony_ci#define DIV_STAT_TOP_MSCL		0x0718
11762306a36Sopenharmony_ci#define DIV_STAT_TOP_CAM10		0x071c
11862306a36Sopenharmony_ci#define DIV_STAT_TOP_CAM11		0x0720
11962306a36Sopenharmony_ci#define DIV_STAT_TOP_FSYS0		0x072c
12062306a36Sopenharmony_ci#define DIV_STAT_TOP_FSYS1		0x0730
12162306a36Sopenharmony_ci#define DIV_STAT_TOP_FSYS2		0x0734
12262306a36Sopenharmony_ci#define DIV_STAT_TOP_PERIC0		0x0738
12362306a36Sopenharmony_ci#define DIV_STAT_TOP_PERIC1		0x073c
12462306a36Sopenharmony_ci#define DIV_STAT_TOP_PERIC2		0x0740
12562306a36Sopenharmony_ci#define DIV_STAT_TOP_PERIC3		0x0744
12662306a36Sopenharmony_ci#define DIV_STAT_TOP_PLL_FREQ_DET	0x074c
12762306a36Sopenharmony_ci#define ENABLE_ACLK_TOP			0x0800
12862306a36Sopenharmony_ci#define ENABLE_SCLK_TOP			0x0a00
12962306a36Sopenharmony_ci#define ENABLE_SCLK_TOP_MSCL		0x0a04
13062306a36Sopenharmony_ci#define ENABLE_SCLK_TOP_CAM1		0x0a08
13162306a36Sopenharmony_ci#define ENABLE_SCLK_TOP_DISP		0x0a0c
13262306a36Sopenharmony_ci#define ENABLE_SCLK_TOP_FSYS		0x0a10
13362306a36Sopenharmony_ci#define ENABLE_SCLK_TOP_PERIC		0x0a14
13462306a36Sopenharmony_ci#define ENABLE_IP_TOP			0x0b00
13562306a36Sopenharmony_ci#define ENABLE_CMU_TOP			0x0c00
13662306a36Sopenharmony_ci#define ENABLE_CMU_TOP_DIV_STAT		0x0c04
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_cistatic const unsigned long top_clk_regs[] __initconst = {
13962306a36Sopenharmony_ci	ISP_PLL_LOCK,
14062306a36Sopenharmony_ci	AUD_PLL_LOCK,
14162306a36Sopenharmony_ci	ISP_PLL_CON0,
14262306a36Sopenharmony_ci	ISP_PLL_CON1,
14362306a36Sopenharmony_ci	ISP_PLL_FREQ_DET,
14462306a36Sopenharmony_ci	AUD_PLL_CON0,
14562306a36Sopenharmony_ci	AUD_PLL_CON1,
14662306a36Sopenharmony_ci	AUD_PLL_CON2,
14762306a36Sopenharmony_ci	AUD_PLL_FREQ_DET,
14862306a36Sopenharmony_ci	MUX_SEL_TOP0,
14962306a36Sopenharmony_ci	MUX_SEL_TOP1,
15062306a36Sopenharmony_ci	MUX_SEL_TOP2,
15162306a36Sopenharmony_ci	MUX_SEL_TOP3,
15262306a36Sopenharmony_ci	MUX_SEL_TOP4,
15362306a36Sopenharmony_ci	MUX_SEL_TOP_MSCL,
15462306a36Sopenharmony_ci	MUX_SEL_TOP_CAM1,
15562306a36Sopenharmony_ci	MUX_SEL_TOP_DISP,
15662306a36Sopenharmony_ci	MUX_SEL_TOP_FSYS0,
15762306a36Sopenharmony_ci	MUX_SEL_TOP_FSYS1,
15862306a36Sopenharmony_ci	MUX_SEL_TOP_PERIC0,
15962306a36Sopenharmony_ci	MUX_SEL_TOP_PERIC1,
16062306a36Sopenharmony_ci	MUX_ENABLE_TOP0,
16162306a36Sopenharmony_ci	MUX_ENABLE_TOP1,
16262306a36Sopenharmony_ci	MUX_ENABLE_TOP2,
16362306a36Sopenharmony_ci	MUX_ENABLE_TOP3,
16462306a36Sopenharmony_ci	MUX_ENABLE_TOP4,
16562306a36Sopenharmony_ci	MUX_ENABLE_TOP_MSCL,
16662306a36Sopenharmony_ci	MUX_ENABLE_TOP_CAM1,
16762306a36Sopenharmony_ci	MUX_ENABLE_TOP_DISP,
16862306a36Sopenharmony_ci	MUX_ENABLE_TOP_FSYS0,
16962306a36Sopenharmony_ci	MUX_ENABLE_TOP_FSYS1,
17062306a36Sopenharmony_ci	MUX_ENABLE_TOP_PERIC0,
17162306a36Sopenharmony_ci	MUX_ENABLE_TOP_PERIC1,
17262306a36Sopenharmony_ci	DIV_TOP0,
17362306a36Sopenharmony_ci	DIV_TOP1,
17462306a36Sopenharmony_ci	DIV_TOP2,
17562306a36Sopenharmony_ci	DIV_TOP3,
17662306a36Sopenharmony_ci	DIV_TOP4,
17762306a36Sopenharmony_ci	DIV_TOP_MSCL,
17862306a36Sopenharmony_ci	DIV_TOP_CAM10,
17962306a36Sopenharmony_ci	DIV_TOP_CAM11,
18062306a36Sopenharmony_ci	DIV_TOP_FSYS0,
18162306a36Sopenharmony_ci	DIV_TOP_FSYS1,
18262306a36Sopenharmony_ci	DIV_TOP_FSYS2,
18362306a36Sopenharmony_ci	DIV_TOP_PERIC0,
18462306a36Sopenharmony_ci	DIV_TOP_PERIC1,
18562306a36Sopenharmony_ci	DIV_TOP_PERIC2,
18662306a36Sopenharmony_ci	DIV_TOP_PERIC3,
18762306a36Sopenharmony_ci	DIV_TOP_PERIC4,
18862306a36Sopenharmony_ci	DIV_TOP_PLL_FREQ_DET,
18962306a36Sopenharmony_ci	ENABLE_ACLK_TOP,
19062306a36Sopenharmony_ci	ENABLE_SCLK_TOP,
19162306a36Sopenharmony_ci	ENABLE_SCLK_TOP_MSCL,
19262306a36Sopenharmony_ci	ENABLE_SCLK_TOP_CAM1,
19362306a36Sopenharmony_ci	ENABLE_SCLK_TOP_DISP,
19462306a36Sopenharmony_ci	ENABLE_SCLK_TOP_FSYS,
19562306a36Sopenharmony_ci	ENABLE_SCLK_TOP_PERIC,
19662306a36Sopenharmony_ci	ENABLE_IP_TOP,
19762306a36Sopenharmony_ci	ENABLE_CMU_TOP,
19862306a36Sopenharmony_ci	ENABLE_CMU_TOP_DIV_STAT,
19962306a36Sopenharmony_ci};
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump top_suspend_regs[] = {
20262306a36Sopenharmony_ci	/* force all aclk clocks enabled */
20362306a36Sopenharmony_ci	{ ENABLE_ACLK_TOP, 0x67ecffed },
20462306a36Sopenharmony_ci	/* force all sclk_uart clocks enabled */
20562306a36Sopenharmony_ci	{ ENABLE_SCLK_TOP_PERIC, 0x38 },
20662306a36Sopenharmony_ci	/* ISP PLL has to be enabled for suspend: reset value + ENABLE bit */
20762306a36Sopenharmony_ci	{ ISP_PLL_CON0, 0x85cc0502 },
20862306a36Sopenharmony_ci	/* ISP PLL has to be enabled for suspend: reset value + ENABLE bit */
20962306a36Sopenharmony_ci	{ AUD_PLL_CON0, 0x84830202 },
21062306a36Sopenharmony_ci};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci/* list of all parent clock list */
21362306a36Sopenharmony_ciPNAME(mout_aud_pll_p)		= { "oscclk", "fout_aud_pll", };
21462306a36Sopenharmony_ciPNAME(mout_isp_pll_p)		= { "oscclk", "fout_isp_pll", };
21562306a36Sopenharmony_ciPNAME(mout_aud_pll_user_p)	= { "oscclk", "mout_aud_pll", };
21662306a36Sopenharmony_ciPNAME(mout_mphy_pll_user_p)	= { "oscclk", "sclk_mphy_pll", };
21762306a36Sopenharmony_ciPNAME(mout_mfc_pll_user_p)	= { "oscclk", "sclk_mfc_pll", };
21862306a36Sopenharmony_ciPNAME(mout_bus_pll_user_p)	= { "oscclk", "sclk_bus_pll", };
21962306a36Sopenharmony_ciPNAME(mout_bus_pll_user_t_p)	= { "oscclk", "mout_bus_pll_user", };
22062306a36Sopenharmony_ciPNAME(mout_mphy_pll_user_t_p)	= { "oscclk", "mout_mphy_pll_user", };
22162306a36Sopenharmony_ci
22262306a36Sopenharmony_ciPNAME(mout_bus_mfc_pll_user_p)	= { "mout_bus_pll_user", "mout_mfc_pll_user",};
22362306a36Sopenharmony_ciPNAME(mout_mfc_bus_pll_user_p)	= { "mout_mfc_pll_user", "mout_bus_pll_user",};
22462306a36Sopenharmony_ciPNAME(mout_aclk_cam1_552_b_p)	= { "mout_aclk_cam1_552_a",
22562306a36Sopenharmony_ci				    "mout_mfc_pll_user", };
22662306a36Sopenharmony_ciPNAME(mout_aclk_cam1_552_a_p)	= { "mout_isp_pll", "mout_bus_pll_user", };
22762306a36Sopenharmony_ci
22862306a36Sopenharmony_ciPNAME(mout_aclk_mfc_400_c_p)	= { "mout_aclk_mfc_400_b",
22962306a36Sopenharmony_ci				    "mout_mphy_pll_user", };
23062306a36Sopenharmony_ciPNAME(mout_aclk_mfc_400_b_p)	= { "mout_aclk_mfc_400_a",
23162306a36Sopenharmony_ci				    "mout_bus_pll_user", };
23262306a36Sopenharmony_ciPNAME(mout_aclk_mfc_400_a_p)	= { "mout_mfc_pll_user", "mout_isp_pll", };
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ciPNAME(mout_bus_mphy_pll_user_p)	= { "mout_bus_pll_user",
23562306a36Sopenharmony_ci				    "mout_mphy_pll_user", };
23662306a36Sopenharmony_ciPNAME(mout_aclk_mscl_b_p)	= { "mout_aclk_mscl_400_a",
23762306a36Sopenharmony_ci				    "mout_mphy_pll_user", };
23862306a36Sopenharmony_ciPNAME(mout_aclk_g2d_400_b_p)	= { "mout_aclk_g2d_400_a",
23962306a36Sopenharmony_ci				    "mout_mphy_pll_user", };
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ciPNAME(mout_sclk_jpeg_c_p)	= { "mout_sclk_jpeg_b", "mout_mphy_pll_user",};
24262306a36Sopenharmony_ciPNAME(mout_sclk_jpeg_b_p)	= { "mout_sclk_jpeg_a", "mout_mfc_pll_user", };
24362306a36Sopenharmony_ci
24462306a36Sopenharmony_ciPNAME(mout_sclk_mmc2_b_p)	= { "mout_sclk_mmc2_a", "mout_mfc_pll_user",};
24562306a36Sopenharmony_ciPNAME(mout_sclk_mmc1_b_p)	= { "mout_sclk_mmc1_a", "mout_mfc_pll_user",};
24662306a36Sopenharmony_ciPNAME(mout_sclk_mmc0_d_p)	= { "mout_sclk_mmc0_c", "mout_isp_pll", };
24762306a36Sopenharmony_ciPNAME(mout_sclk_mmc0_c_p)	= { "mout_sclk_mmc0_b", "mout_mphy_pll_user",};
24862306a36Sopenharmony_ciPNAME(mout_sclk_mmc0_b_p)	= { "mout_sclk_mmc0_a", "mout_mfc_pll_user", };
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ciPNAME(mout_sclk_spdif_p)	= { "sclk_audio0", "sclk_audio1",
25162306a36Sopenharmony_ci				    "oscclk", "ioclk_spdif_extclk", };
25262306a36Sopenharmony_ciPNAME(mout_sclk_audio1_p)	= { "ioclk_audiocdclk1", "oscclk",
25362306a36Sopenharmony_ci				    "mout_aud_pll_user_t",};
25462306a36Sopenharmony_ciPNAME(mout_sclk_audio0_p)	= { "ioclk_audiocdclk0", "oscclk",
25562306a36Sopenharmony_ci				    "mout_aud_pll_user_t",};
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ciPNAME(mout_sclk_hdmi_spdif_p)	= { "sclk_audio1", "ioclk_spdif_extclk", };
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_cistatic const struct samsung_fixed_factor_clock top_fixed_factor_clks[] __initconst = {
26062306a36Sopenharmony_ci	FFACTOR(0, "oscclk_efuse_common", "oscclk", 1, 1, 0),
26162306a36Sopenharmony_ci};
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock top_fixed_clks[] __initconst = {
26462306a36Sopenharmony_ci	/* Xi2s{0|1}CDCLK input clock for I2S/PCM */
26562306a36Sopenharmony_ci	FRATE(0, "ioclk_audiocdclk1", NULL, 0, 100000000),
26662306a36Sopenharmony_ci	FRATE(0, "ioclk_audiocdclk0", NULL, 0, 100000000),
26762306a36Sopenharmony_ci	/* Xi2s1SDI input clock for SPDIF */
26862306a36Sopenharmony_ci	FRATE(0, "ioclk_spdif_extclk", NULL, 0, 100000000),
26962306a36Sopenharmony_ci	/* XspiCLK[4:0] input clock for SPI */
27062306a36Sopenharmony_ci	FRATE(0, "ioclk_spi4_clk_in", NULL, 0, 50000000),
27162306a36Sopenharmony_ci	FRATE(0, "ioclk_spi3_clk_in", NULL, 0, 50000000),
27262306a36Sopenharmony_ci	FRATE(0, "ioclk_spi2_clk_in", NULL, 0, 50000000),
27362306a36Sopenharmony_ci	FRATE(0, "ioclk_spi1_clk_in", NULL, 0, 50000000),
27462306a36Sopenharmony_ci	FRATE(0, "ioclk_spi0_clk_in", NULL, 0, 50000000),
27562306a36Sopenharmony_ci	/* Xi2s1SCLK input clock for I2S1_BCLK */
27662306a36Sopenharmony_ci	FRATE(0, "ioclk_i2s1_bclk_in", NULL, 0, 12288000),
27762306a36Sopenharmony_ci};
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_cistatic const struct samsung_mux_clock top_mux_clks[] __initconst = {
28062306a36Sopenharmony_ci	/* MUX_SEL_TOP0 */
28162306a36Sopenharmony_ci	MUX(CLK_MOUT_AUD_PLL, "mout_aud_pll", mout_aud_pll_p, MUX_SEL_TOP0,
28262306a36Sopenharmony_ci			4, 1),
28362306a36Sopenharmony_ci	MUX(CLK_MOUT_ISP_PLL, "mout_isp_pll", mout_isp_pll_p, MUX_SEL_TOP0,
28462306a36Sopenharmony_ci			0, 1),
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci	/* MUX_SEL_TOP1 */
28762306a36Sopenharmony_ci	MUX(CLK_MOUT_AUD_PLL_USER_T, "mout_aud_pll_user_t",
28862306a36Sopenharmony_ci			mout_aud_pll_user_p, MUX_SEL_TOP1, 12, 1),
28962306a36Sopenharmony_ci	MUX(CLK_MOUT_MPHY_PLL_USER, "mout_mphy_pll_user", mout_mphy_pll_user_p,
29062306a36Sopenharmony_ci			MUX_SEL_TOP1, 8, 1),
29162306a36Sopenharmony_ci	MUX(CLK_MOUT_MFC_PLL_USER, "mout_mfc_pll_user", mout_mfc_pll_user_p,
29262306a36Sopenharmony_ci			MUX_SEL_TOP1, 4, 1),
29362306a36Sopenharmony_ci	MUX(CLK_MOUT_BUS_PLL_USER, "mout_bus_pll_user", mout_bus_pll_user_p,
29462306a36Sopenharmony_ci			MUX_SEL_TOP1, 0, 1),
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci	/* MUX_SEL_TOP2 */
29762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_HEVC_400, "mout_aclk_hevc_400",
29862306a36Sopenharmony_ci			mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 28, 1),
29962306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_333, "mout_aclk_cam1_333",
30062306a36Sopenharmony_ci			mout_mfc_bus_pll_user_p, MUX_SEL_TOP2, 16, 1),
30162306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_552_B, "mout_aclk_cam1_552_b",
30262306a36Sopenharmony_ci			mout_aclk_cam1_552_b_p, MUX_SEL_TOP2, 12, 1),
30362306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_552_A, "mout_aclk_cam1_552_a",
30462306a36Sopenharmony_ci			mout_aclk_cam1_552_a_p, MUX_SEL_TOP2, 8, 1),
30562306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_ISP_DIS_400, "mout_aclk_isp_dis_400",
30662306a36Sopenharmony_ci			mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 4, 1),
30762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_ISP_400, "mout_aclk_isp_400",
30862306a36Sopenharmony_ci			mout_bus_mfc_pll_user_p, MUX_SEL_TOP2, 0, 1),
30962306a36Sopenharmony_ci
31062306a36Sopenharmony_ci	/* MUX_SEL_TOP3 */
31162306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_BUS0_400, "mout_aclk_bus0_400",
31262306a36Sopenharmony_ci			mout_bus_mphy_pll_user_p, MUX_SEL_TOP3, 20, 1),
31362306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MSCL_400_B, "mout_aclk_mscl_400_b",
31462306a36Sopenharmony_ci			mout_aclk_mscl_b_p, MUX_SEL_TOP3, 16, 1),
31562306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MSCL_400_A, "mout_aclk_mscl_400_a",
31662306a36Sopenharmony_ci			mout_bus_mfc_pll_user_p, MUX_SEL_TOP3, 12, 1),
31762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_GSCL_333, "mout_aclk_gscl_333",
31862306a36Sopenharmony_ci			mout_mfc_bus_pll_user_p, MUX_SEL_TOP3, 8, 1),
31962306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_G2D_400_B, "mout_aclk_g2d_400_b",
32062306a36Sopenharmony_ci			mout_aclk_g2d_400_b_p, MUX_SEL_TOP3, 4, 1),
32162306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_G2D_400_A, "mout_aclk_g2d_400_a",
32262306a36Sopenharmony_ci			mout_bus_mfc_pll_user_p, MUX_SEL_TOP3, 0, 1),
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci	/* MUX_SEL_TOP4 */
32562306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MFC_400_C, "mout_aclk_mfc_400_c",
32662306a36Sopenharmony_ci			mout_aclk_mfc_400_c_p, MUX_SEL_TOP4, 8, 1),
32762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MFC_400_B, "mout_aclk_mfc_400_b",
32862306a36Sopenharmony_ci			mout_aclk_mfc_400_b_p, MUX_SEL_TOP4, 4, 1),
32962306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MFC_400_A, "mout_aclk_mfc_400_a",
33062306a36Sopenharmony_ci			mout_aclk_mfc_400_a_p, MUX_SEL_TOP4, 0, 1),
33162306a36Sopenharmony_ci
33262306a36Sopenharmony_ci	/* MUX_SEL_TOP_MSCL */
33362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_JPEG_C, "mout_sclk_jpeg_c", mout_sclk_jpeg_c_p,
33462306a36Sopenharmony_ci			MUX_SEL_TOP_MSCL, 8, 1),
33562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_JPEG_B, "mout_sclk_jpeg_b", mout_sclk_jpeg_b_p,
33662306a36Sopenharmony_ci			MUX_SEL_TOP_MSCL, 4, 1),
33762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_JPEG_A, "mout_sclk_jpeg_a", mout_bus_pll_user_t_p,
33862306a36Sopenharmony_ci			MUX_SEL_TOP_MSCL, 0, 1),
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci	/* MUX_SEL_TOP_CAM1 */
34162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SENSOR2, "mout_sclk_isp_sensor2",
34262306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 24, 1),
34362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SENSOR1, "mout_sclk_isp_sensor1",
34462306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 20, 1),
34562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SENSOR0, "mout_sclk_isp_sensor0",
34662306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 16, 1),
34762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_UART, "mout_sclk_isp_uart",
34862306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 8, 1),
34962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SPI1, "mout_sclk_isp_spi1",
35062306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 4, 1),
35162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SPI0, "mout_sclk_isp_spi0",
35262306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_CAM1, 0, 1),
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci	/* MUX_SEL_TOP_FSYS0 */
35562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC2_B, "mout_sclk_mmc2_b", mout_sclk_mmc2_b_p,
35662306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 28, 1),
35762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC2_A, "mout_sclk_mmc2_a", mout_bus_pll_user_t_p,
35862306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 24, 1),
35962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC1_B, "mout_sclk_mmc1_b", mout_sclk_mmc1_b_p,
36062306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 20, 1),
36162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC1_A, "mout_sclk_mmc1_a", mout_bus_pll_user_t_p,
36262306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 16, 1),
36362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC0_D, "mout_sclk_mmc0_d", mout_sclk_mmc0_d_p,
36462306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 12, 1),
36562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC0_C, "mout_sclk_mmc0_c", mout_sclk_mmc0_c_p,
36662306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 8, 1),
36762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC0_B, "mout_sclk_mmc0_b", mout_sclk_mmc0_b_p,
36862306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 4, 1),
36962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC0_A, "mout_sclk_mmc0_a", mout_bus_pll_user_t_p,
37062306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS0, 0, 1),
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci	/* MUX_SEL_TOP_FSYS1 */
37362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PCIE_100, "mout_sclk_pcie_100", mout_bus_pll_user_t_p,
37462306a36Sopenharmony_ci			MUX_SEL_TOP_FSYS1, 12, 1),
37562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UFSUNIPRO, "mout_sclk_ufsunipro",
37662306a36Sopenharmony_ci			mout_mphy_pll_user_t_p, MUX_SEL_TOP_FSYS1, 8, 1),
37762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_USBHOST30, "mout_sclk_usbhost30",
37862306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_FSYS1, 4, 1),
37962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_USBDRD30, "mout_sclk_usbdrd30",
38062306a36Sopenharmony_ci			mout_bus_pll_user_t_p, MUX_SEL_TOP_FSYS1, 0, 1),
38162306a36Sopenharmony_ci
38262306a36Sopenharmony_ci	/* MUX_SEL_TOP_PERIC0 */
38362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPI4, "mout_sclk_spi4", mout_bus_pll_user_t_p,
38462306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 28, 1),
38562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPI3, "mout_sclk_spi3", mout_bus_pll_user_t_p,
38662306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 24, 1),
38762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UART2, "mout_sclk_uart2", mout_bus_pll_user_t_p,
38862306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 20, 1),
38962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UART1, "mout_sclk_uart1", mout_bus_pll_user_t_p,
39062306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 16, 1),
39162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UART0, "mout_sclk_uart0", mout_bus_pll_user_t_p,
39262306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 12, 1),
39362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPI2, "mout_sclk_spi2", mout_bus_pll_user_t_p,
39462306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 8, 1),
39562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPI1, "mout_sclk_spi1", mout_bus_pll_user_t_p,
39662306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 4, 1),
39762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPI0, "mout_sclk_spi0", mout_bus_pll_user_t_p,
39862306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC0, 0, 1),
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ci	/* MUX_SEL_TOP_PERIC1 */
40162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SLIMBUS, "mout_sclk_slimbus", mout_aud_pll_user_p,
40262306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC1, 16, 1),
40362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_SPDIF, "mout_sclk_spdif", mout_sclk_spdif_p,
40462306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC1, 12, 2),
40562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_AUDIO1, "mout_sclk_audio1", mout_sclk_audio1_p,
40662306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC1, 4, 2),
40762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_AUDIO0, "mout_sclk_audio0", mout_sclk_audio0_p,
40862306a36Sopenharmony_ci			MUX_SEL_TOP_PERIC1, 0, 2),
40962306a36Sopenharmony_ci
41062306a36Sopenharmony_ci	/* MUX_SEL_TOP_DISP */
41162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_HDMI_SPDIF, "mout_sclk_hdmi_spdif",
41262306a36Sopenharmony_ci			mout_sclk_hdmi_spdif_p, MUX_SEL_TOP_DISP, 0, 1),
41362306a36Sopenharmony_ci};
41462306a36Sopenharmony_ci
41562306a36Sopenharmony_cistatic const struct samsung_div_clock top_div_clks[] __initconst = {
41662306a36Sopenharmony_ci	/* DIV_TOP0 */
41762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM1_333, "div_aclk_cam1_333", "mout_aclk_cam1_333",
41862306a36Sopenharmony_ci			DIV_TOP0, 28, 3),
41962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM1_400, "div_aclk_cam1_400", "mout_bus_pll_user",
42062306a36Sopenharmony_ci			DIV_TOP0, 24, 3),
42162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM1_552, "div_aclk_cam1_552", "mout_aclk_cam1_552_b",
42262306a36Sopenharmony_ci			DIV_TOP0, 20, 3),
42362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM0_333, "div_aclk_cam0_333", "mout_mfc_pll_user",
42462306a36Sopenharmony_ci			DIV_TOP0, 16, 3),
42562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM0_400, "div_aclk_cam0_400", "mout_bus_pll_user",
42662306a36Sopenharmony_ci			DIV_TOP0, 12, 3),
42762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM0_552, "div_aclk_cam0_552", "mout_isp_pll",
42862306a36Sopenharmony_ci			DIV_TOP0, 8, 3),
42962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_ISP_DIS_400, "div_aclk_isp_dis_400",
43062306a36Sopenharmony_ci			"mout_aclk_isp_dis_400", DIV_TOP0, 4, 4),
43162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_ISP_400, "div_aclk_isp_400",
43262306a36Sopenharmony_ci			"mout_aclk_isp_400", DIV_TOP0, 0, 4),
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ci	/* DIV_TOP1 */
43562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_GSCL_111, "div_aclk_gscl_111", "mout_aclk_gscl_333",
43662306a36Sopenharmony_ci			DIV_TOP1, 28, 3),
43762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_GSCL_333, "div_aclk_gscl_333", "mout_aclk_gscl_333",
43862306a36Sopenharmony_ci			DIV_TOP1, 24, 3),
43962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_HEVC_400, "div_aclk_hevc_400", "mout_aclk_hevc_400",
44062306a36Sopenharmony_ci			DIV_TOP1, 20, 3),
44162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MFC_400, "div_aclk_mfc_400", "mout_aclk_mfc_400_c",
44262306a36Sopenharmony_ci			DIV_TOP1, 12, 3),
44362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_G2D_266, "div_aclk_g2d_266", "mout_bus_pll_user",
44462306a36Sopenharmony_ci			DIV_TOP1, 8, 3),
44562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_G2D_400, "div_aclk_g2d_400", "mout_aclk_g2d_400_b",
44662306a36Sopenharmony_ci			DIV_TOP1, 0, 3),
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ci	/* DIV_TOP2 */
44962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MSCL_400, "div_aclk_mscl_400", "mout_aclk_mscl_400_b",
45062306a36Sopenharmony_ci			DIV_TOP2, 4, 3),
45162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_FSYS_200, "div_aclk_fsys_200", "mout_bus_pll_user",
45262306a36Sopenharmony_ci			DIV_TOP2, 0, 3),
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ci	/* DIV_TOP3 */
45562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_IMEM_SSSX_266, "div_aclk_imem_sssx_266",
45662306a36Sopenharmony_ci			"mout_bus_pll_user", DIV_TOP3, 24, 3),
45762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_IMEM_200, "div_aclk_imem_200",
45862306a36Sopenharmony_ci			"mout_bus_pll_user", DIV_TOP3, 20, 3),
45962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_IMEM_266, "div_aclk_imem_266",
46062306a36Sopenharmony_ci			"mout_bus_pll_user", DIV_TOP3, 16, 3),
46162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_PERIC_66_B, "div_aclk_peric_66_b",
46262306a36Sopenharmony_ci			"div_aclk_peric_66_a", DIV_TOP3, 12, 3),
46362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_PERIC_66_A, "div_aclk_peric_66_a",
46462306a36Sopenharmony_ci			"mout_bus_pll_user", DIV_TOP3, 8, 3),
46562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_PERIS_66_B, "div_aclk_peris_66_b",
46662306a36Sopenharmony_ci			"div_aclk_peris_66_a", DIV_TOP3, 4, 3),
46762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_PERIS_66_A, "div_aclk_peris_66_a",
46862306a36Sopenharmony_ci			"mout_bus_pll_user", DIV_TOP3, 0, 3),
46962306a36Sopenharmony_ci
47062306a36Sopenharmony_ci	/* DIV_TOP4 */
47162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_G3D_400, "div_aclk_g3d_400", "mout_bus_pll_user",
47262306a36Sopenharmony_ci			DIV_TOP4, 8, 3),
47362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_BUS0_400, "div_aclk_bus0_400", "mout_aclk_bus0_400",
47462306a36Sopenharmony_ci			DIV_TOP4, 4, 3),
47562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_BUS1_400, "div_aclk_bus1_400", "mout_bus_pll_user",
47662306a36Sopenharmony_ci			DIV_TOP4, 0, 3),
47762306a36Sopenharmony_ci
47862306a36Sopenharmony_ci	/* DIV_TOP_MSCL */
47962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_JPEG, "div_sclk_jpeg", "mout_sclk_jpeg_c",
48062306a36Sopenharmony_ci			DIV_TOP_MSCL, 0, 4),
48162306a36Sopenharmony_ci
48262306a36Sopenharmony_ci	/* DIV_TOP_CAM10 */
48362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_UART, "div_sclk_isp_uart", "mout_sclk_isp_uart",
48462306a36Sopenharmony_ci			DIV_TOP_CAM10, 24, 5),
48562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SPI1_B, "div_sclk_isp_spi1_b",
48662306a36Sopenharmony_ci			"div_sclk_isp_spi1_a", DIV_TOP_CAM10, 16, 8),
48762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SPI1_A, "div_sclk_isp_spi1_a",
48862306a36Sopenharmony_ci			"mout_sclk_isp_spi1", DIV_TOP_CAM10, 12, 4),
48962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SPI0_B, "div_sclk_isp_spi0_b",
49062306a36Sopenharmony_ci			"div_sclk_isp_spi0_a", DIV_TOP_CAM10, 4, 8),
49162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SPI0_A, "div_sclk_isp_spi0_a",
49262306a36Sopenharmony_ci			"mout_sclk_isp_spi0", DIV_TOP_CAM10, 0, 4),
49362306a36Sopenharmony_ci
49462306a36Sopenharmony_ci	/* DIV_TOP_CAM11 */
49562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR2_B, "div_sclk_isp_sensor2_b",
49662306a36Sopenharmony_ci			"div_sclk_isp_sensor2_a", DIV_TOP_CAM11, 20, 4),
49762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR2_A, "div_sclk_isp_sensor2_a",
49862306a36Sopenharmony_ci			"mout_sclk_isp_sensor2", DIV_TOP_CAM11, 16, 4),
49962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR1_B, "div_sclk_isp_sensor1_b",
50062306a36Sopenharmony_ci			"div_sclk_isp_sensor1_a", DIV_TOP_CAM11, 12, 4),
50162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR1_A, "div_sclk_isp_sensor1_a",
50262306a36Sopenharmony_ci			"mout_sclk_isp_sensor1", DIV_TOP_CAM11, 8, 4),
50362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR0_B, "div_sclk_isp_sensor0_b",
50462306a36Sopenharmony_ci			"div_sclk_isp_sensor0_a", DIV_TOP_CAM11, 4, 4),
50562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_SENSOR0_A, "div_sclk_isp_sensor0_a",
50662306a36Sopenharmony_ci			"mout_sclk_isp_sensor0", DIV_TOP_CAM11, 0, 4),
50762306a36Sopenharmony_ci
50862306a36Sopenharmony_ci	/* DIV_TOP_FSYS0 */
50962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_MMC1_B, "div_sclk_mmc1_b", "div_sclk_mmc1_a",
51062306a36Sopenharmony_ci			DIV_TOP_FSYS0, 16, 8),
51162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_MMC1_A, "div_sclk_mmc1_a", "mout_sclk_mmc1_b",
51262306a36Sopenharmony_ci			DIV_TOP_FSYS0, 12, 4),
51362306a36Sopenharmony_ci	DIV_F(CLK_DIV_SCLK_MMC0_B, "div_sclk_mmc0_b", "div_sclk_mmc0_a",
51462306a36Sopenharmony_ci			DIV_TOP_FSYS0, 4, 8, CLK_SET_RATE_PARENT, 0),
51562306a36Sopenharmony_ci	DIV_F(CLK_DIV_SCLK_MMC0_A, "div_sclk_mmc0_a", "mout_sclk_mmc0_d",
51662306a36Sopenharmony_ci			DIV_TOP_FSYS0, 0, 4, CLK_SET_RATE_PARENT, 0),
51762306a36Sopenharmony_ci
51862306a36Sopenharmony_ci	/* DIV_TOP_FSYS1 */
51962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_MMC2_B, "div_sclk_mmc2_b", "div_sclk_mmc2_a",
52062306a36Sopenharmony_ci			DIV_TOP_FSYS1, 4, 8),
52162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_MMC2_A, "div_sclk_mmc2_a", "mout_sclk_mmc2_b",
52262306a36Sopenharmony_ci			DIV_TOP_FSYS1, 0, 4),
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_ci	/* DIV_TOP_FSYS2 */
52562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_PCIE_100, "div_sclk_pcie_100", "mout_sclk_pcie_100",
52662306a36Sopenharmony_ci			DIV_TOP_FSYS2, 12, 3),
52762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_USBHOST30, "div_sclk_usbhost30",
52862306a36Sopenharmony_ci			"mout_sclk_usbhost30", DIV_TOP_FSYS2, 8, 4),
52962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_UFSUNIPRO, "div_sclk_ufsunipro",
53062306a36Sopenharmony_ci			"mout_sclk_ufsunipro", DIV_TOP_FSYS2, 4, 4),
53162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_USBDRD30, "div_sclk_usbdrd30", "mout_sclk_usbdrd30",
53262306a36Sopenharmony_ci			DIV_TOP_FSYS2, 0, 4),
53362306a36Sopenharmony_ci
53462306a36Sopenharmony_ci	/* DIV_TOP_PERIC0 */
53562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI1_B, "div_sclk_spi1_b", "div_sclk_spi1_a",
53662306a36Sopenharmony_ci			DIV_TOP_PERIC0, 16, 8),
53762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI1_A, "div_sclk_spi1_a", "mout_sclk_spi1",
53862306a36Sopenharmony_ci			DIV_TOP_PERIC0, 12, 4),
53962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI0_B, "div_sclk_spi0_b", "div_sclk_spi0_a",
54062306a36Sopenharmony_ci			DIV_TOP_PERIC0, 4, 8),
54162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI0_A, "div_sclk_spi0_a", "mout_sclk_spi0",
54262306a36Sopenharmony_ci			DIV_TOP_PERIC0, 0, 4),
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci	/* DIV_TOP_PERIC1 */
54562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI2_B, "div_sclk_spi2_b", "div_sclk_spi2_a",
54662306a36Sopenharmony_ci			DIV_TOP_PERIC1, 4, 8),
54762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI2_A, "div_sclk_spi2_a", "mout_sclk_spi2",
54862306a36Sopenharmony_ci			DIV_TOP_PERIC1, 0, 4),
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci	/* DIV_TOP_PERIC2 */
55162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_UART2, "div_sclk_uart2", "mout_sclk_uart2",
55262306a36Sopenharmony_ci			DIV_TOP_PERIC2, 8, 4),
55362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_UART1, "div_sclk_uart1", "mout_sclk_uart0",
55462306a36Sopenharmony_ci			DIV_TOP_PERIC2, 4, 4),
55562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_UART0, "div_sclk_uart0", "mout_sclk_uart1",
55662306a36Sopenharmony_ci			DIV_TOP_PERIC2, 0, 4),
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_ci	/* DIV_TOP_PERIC3 */
55962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_I2S1, "div_sclk_i2s1", "sclk_audio1",
56062306a36Sopenharmony_ci			DIV_TOP_PERIC3, 16, 6),
56162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_PCM1, "div_sclk_pcm1", "sclk_audio1",
56262306a36Sopenharmony_ci			DIV_TOP_PERIC3, 8, 8),
56362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUDIO1, "div_sclk_audio1", "mout_sclk_audio1",
56462306a36Sopenharmony_ci			DIV_TOP_PERIC3, 4, 4),
56562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUDIO0, "div_sclk_audio0", "mout_sclk_audio0",
56662306a36Sopenharmony_ci			DIV_TOP_PERIC3, 0, 4),
56762306a36Sopenharmony_ci
56862306a36Sopenharmony_ci	/* DIV_TOP_PERIC4 */
56962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI4_B, "div_sclk_spi4_b", "div_sclk_spi4_a",
57062306a36Sopenharmony_ci			DIV_TOP_PERIC4, 16, 8),
57162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI4_A, "div_sclk_spi4_a", "mout_sclk_spi4",
57262306a36Sopenharmony_ci			DIV_TOP_PERIC4, 12, 4),
57362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI3_B, "div_sclk_spi3_b", "div_sclk_spi3_a",
57462306a36Sopenharmony_ci			DIV_TOP_PERIC4, 4, 8),
57562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SPI3_A, "div_sclk_spi3_a", "mout_sclk_spi3",
57662306a36Sopenharmony_ci			DIV_TOP_PERIC4, 0, 4),
57762306a36Sopenharmony_ci};
57862306a36Sopenharmony_ci
57962306a36Sopenharmony_cistatic const struct samsung_gate_clock top_gate_clks[] __initconst = {
58062306a36Sopenharmony_ci	/* ENABLE_ACLK_TOP */
58162306a36Sopenharmony_ci	GATE(CLK_ACLK_G3D_400, "aclk_g3d_400", "div_aclk_g3d_400",
58262306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 30, CLK_IS_CRITICAL, 0),
58362306a36Sopenharmony_ci	GATE(CLK_ACLK_IMEM_SSSX_266, "aclk_imem_sssx_266",
58462306a36Sopenharmony_ci			"div_aclk_imem_sssx_266", ENABLE_ACLK_TOP,
58562306a36Sopenharmony_ci			29, CLK_IGNORE_UNUSED, 0),
58662306a36Sopenharmony_ci	GATE(CLK_ACLK_BUS0_400, "aclk_bus0_400", "div_aclk_bus0_400",
58762306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 26,
58862306a36Sopenharmony_ci			CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
58962306a36Sopenharmony_ci	GATE(CLK_ACLK_BUS1_400, "aclk_bus1_400", "div_aclk_bus1_400",
59062306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 25,
59162306a36Sopenharmony_ci			CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
59262306a36Sopenharmony_ci	GATE(CLK_ACLK_IMEM_200, "aclk_imem_200", "div_aclk_imem_200",
59362306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 24,
59462306a36Sopenharmony_ci			CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
59562306a36Sopenharmony_ci	GATE(CLK_ACLK_IMEM_266, "aclk_imem_266", "div_aclk_imem_266",
59662306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 23,
59762306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
59862306a36Sopenharmony_ci	GATE(CLK_ACLK_PERIC_66, "aclk_peric_66", "div_aclk_peric_66_b",
59962306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 22,
60062306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
60162306a36Sopenharmony_ci	GATE(CLK_ACLK_PERIS_66, "aclk_peris_66", "div_aclk_peris_66_b",
60262306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 21,
60362306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
60462306a36Sopenharmony_ci	GATE(CLK_ACLK_MSCL_400, "aclk_mscl_400", "div_aclk_mscl_400",
60562306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 19,
60662306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
60762306a36Sopenharmony_ci	GATE(CLK_ACLK_FSYS_200, "aclk_fsys_200", "div_aclk_fsys_200",
60862306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 18,
60962306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
61062306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCL_111, "aclk_gscl_111", "div_aclk_gscl_111",
61162306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 15,
61262306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
61362306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCL_333, "aclk_gscl_333", "div_aclk_gscl_333",
61462306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 14,
61562306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
61662306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM1_333, "aclk_cam1_333", "div_aclk_cam1_333",
61762306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 13,
61862306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
61962306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM1_400, "aclk_cam1_400", "div_aclk_cam1_400",
62062306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 12,
62162306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
62262306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM1_552, "aclk_cam1_552", "div_aclk_cam1_552",
62362306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 11,
62462306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
62562306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM0_333, "aclk_cam0_333", "div_aclk_cam0_333",
62662306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 10,
62762306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
62862306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM0_400, "aclk_cam0_400", "div_aclk_cam0_400",
62962306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 9,
63062306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
63162306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM0_552, "aclk_cam0_552", "div_aclk_cam0_552",
63262306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 8,
63362306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
63462306a36Sopenharmony_ci	GATE(CLK_ACLK_ISP_DIS_400, "aclk_isp_dis_400", "div_aclk_isp_dis_400",
63562306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 7,
63662306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
63762306a36Sopenharmony_ci	GATE(CLK_ACLK_ISP_400, "aclk_isp_400", "div_aclk_isp_400",
63862306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 6,
63962306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
64062306a36Sopenharmony_ci	GATE(CLK_ACLK_HEVC_400, "aclk_hevc_400", "div_aclk_hevc_400",
64162306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 5,
64262306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
64362306a36Sopenharmony_ci	GATE(CLK_ACLK_MFC_400, "aclk_mfc_400", "div_aclk_mfc_400",
64462306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 3,
64562306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
64662306a36Sopenharmony_ci	GATE(CLK_ACLK_G2D_266, "aclk_g2d_266", "div_aclk_g2d_266",
64762306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 2,
64862306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
64962306a36Sopenharmony_ci	GATE(CLK_ACLK_G2D_400, "aclk_g2d_400", "div_aclk_g2d_400",
65062306a36Sopenharmony_ci			ENABLE_ACLK_TOP, 0,
65162306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IS_CRITICAL, 0),
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ci	/* ENABLE_SCLK_TOP_MSCL */
65462306a36Sopenharmony_ci	GATE(CLK_SCLK_JPEG_MSCL, "sclk_jpeg_mscl", "div_sclk_jpeg",
65562306a36Sopenharmony_ci			ENABLE_SCLK_TOP_MSCL, 0, CLK_SET_RATE_PARENT, 0),
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci	/* ENABLE_SCLK_TOP_CAM1 */
65862306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SENSOR2, "sclk_isp_sensor2", "div_sclk_isp_sensor2_b",
65962306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 7, 0, 0),
66062306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SENSOR1, "sclk_isp_sensor1", "div_sclk_isp_sensor1_b",
66162306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 6, 0, 0),
66262306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SENSOR0, "sclk_isp_sensor0", "div_sclk_isp_sensor0_b",
66362306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 5, 0, 0),
66462306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_MCTADC_CAM1, "sclk_isp_mctadc_cam1", "oscclk",
66562306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 4, 0, 0),
66662306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_UART_CAM1, "sclk_isp_uart_cam1", "div_sclk_isp_uart",
66762306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 2, 0, 0),
66862306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SPI1_CAM1, "sclk_isp_spi1_cam1", "div_sclk_isp_spi1_b",
66962306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 1, 0, 0),
67062306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SPI0_CAM1, "sclk_isp_spi0_cam1", "div_sclk_isp_spi0_b",
67162306a36Sopenharmony_ci			ENABLE_SCLK_TOP_CAM1, 0, 0, 0),
67262306a36Sopenharmony_ci
67362306a36Sopenharmony_ci	/* ENABLE_SCLK_TOP_DISP */
67462306a36Sopenharmony_ci	GATE(CLK_SCLK_HDMI_SPDIF_DISP, "sclk_hdmi_spdif_disp",
67562306a36Sopenharmony_ci			"mout_sclk_hdmi_spdif", ENABLE_SCLK_TOP_DISP, 0,
67662306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
67762306a36Sopenharmony_ci
67862306a36Sopenharmony_ci	/* ENABLE_SCLK_TOP_FSYS */
67962306a36Sopenharmony_ci	GATE(CLK_SCLK_PCIE_100_FSYS, "sclk_pcie_100_fsys", "div_sclk_pcie_100",
68062306a36Sopenharmony_ci			ENABLE_SCLK_TOP_FSYS, 7, CLK_IGNORE_UNUSED, 0),
68162306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC2_FSYS, "sclk_mmc2_fsys", "div_sclk_mmc2_b",
68262306a36Sopenharmony_ci			ENABLE_SCLK_TOP_FSYS, 6, CLK_SET_RATE_PARENT, 0),
68362306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC1_FSYS, "sclk_mmc1_fsys", "div_sclk_mmc1_b",
68462306a36Sopenharmony_ci			ENABLE_SCLK_TOP_FSYS, 5, CLK_SET_RATE_PARENT, 0),
68562306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC0_FSYS, "sclk_mmc0_fsys", "div_sclk_mmc0_b",
68662306a36Sopenharmony_ci			ENABLE_SCLK_TOP_FSYS, 4, CLK_SET_RATE_PARENT, 0),
68762306a36Sopenharmony_ci	GATE(CLK_SCLK_UFSUNIPRO_FSYS, "sclk_ufsunipro_fsys",
68862306a36Sopenharmony_ci			"div_sclk_ufsunipro", ENABLE_SCLK_TOP_FSYS,
68962306a36Sopenharmony_ci			3, CLK_SET_RATE_PARENT, 0),
69062306a36Sopenharmony_ci	GATE(CLK_SCLK_USBHOST30_FSYS, "sclk_usbhost30_fsys",
69162306a36Sopenharmony_ci			"div_sclk_usbhost30", ENABLE_SCLK_TOP_FSYS,
69262306a36Sopenharmony_ci			1, CLK_SET_RATE_PARENT, 0),
69362306a36Sopenharmony_ci	GATE(CLK_SCLK_USBDRD30_FSYS, "sclk_usbdrd30_fsys",
69462306a36Sopenharmony_ci			"div_sclk_usbdrd30", ENABLE_SCLK_TOP_FSYS,
69562306a36Sopenharmony_ci			0, CLK_SET_RATE_PARENT, 0),
69662306a36Sopenharmony_ci
69762306a36Sopenharmony_ci	/* ENABLE_SCLK_TOP_PERIC */
69862306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI4_PERIC, "sclk_spi4_peric", "div_sclk_spi4_b",
69962306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 12, CLK_SET_RATE_PARENT, 0),
70062306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI3_PERIC, "sclk_spi3_peric", "div_sclk_spi3_b",
70162306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 11, CLK_SET_RATE_PARENT, 0),
70262306a36Sopenharmony_ci	GATE(CLK_SCLK_SPDIF_PERIC, "sclk_spdif_peric", "mout_sclk_spdif",
70362306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 9, CLK_SET_RATE_PARENT, 0),
70462306a36Sopenharmony_ci	GATE(CLK_SCLK_I2S1_PERIC, "sclk_i2s1_peric", "div_sclk_i2s1",
70562306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 8, CLK_SET_RATE_PARENT, 0),
70662306a36Sopenharmony_ci	GATE(CLK_SCLK_PCM1_PERIC, "sclk_pcm1_peric", "div_sclk_pcm1",
70762306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 7, CLK_SET_RATE_PARENT, 0),
70862306a36Sopenharmony_ci	GATE(CLK_SCLK_UART2_PERIC, "sclk_uart2_peric", "div_sclk_uart2",
70962306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 5, CLK_SET_RATE_PARENT |
71062306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
71162306a36Sopenharmony_ci	GATE(CLK_SCLK_UART1_PERIC, "sclk_uart1_peric", "div_sclk_uart1",
71262306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 4, CLK_SET_RATE_PARENT |
71362306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
71462306a36Sopenharmony_ci	GATE(CLK_SCLK_UART0_PERIC, "sclk_uart0_peric", "div_sclk_uart0",
71562306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 3, CLK_SET_RATE_PARENT |
71662306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
71762306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI2_PERIC, "sclk_spi2_peric", "div_sclk_spi2_b",
71862306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 2, CLK_SET_RATE_PARENT, 0),
71962306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI1_PERIC, "sclk_spi1_peric", "div_sclk_spi1_b",
72062306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 1, CLK_SET_RATE_PARENT, 0),
72162306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI0_PERIC, "sclk_spi0_peric", "div_sclk_spi0_b",
72262306a36Sopenharmony_ci			ENABLE_SCLK_TOP_PERIC, 0, CLK_SET_RATE_PARENT, 0),
72362306a36Sopenharmony_ci
72462306a36Sopenharmony_ci	/* MUX_ENABLE_TOP_PERIC1 */
72562306a36Sopenharmony_ci	GATE(CLK_SCLK_SLIMBUS, "sclk_slimbus", "mout_sclk_slimbus",
72662306a36Sopenharmony_ci			MUX_ENABLE_TOP_PERIC1, 16, 0, 0),
72762306a36Sopenharmony_ci	GATE(CLK_SCLK_AUDIO1, "sclk_audio1", "div_sclk_audio1",
72862306a36Sopenharmony_ci			MUX_ENABLE_TOP_PERIC1, 4, 0, 0),
72962306a36Sopenharmony_ci	GATE(CLK_SCLK_AUDIO0, "sclk_audio0", "div_sclk_audio0",
73062306a36Sopenharmony_ci			MUX_ENABLE_TOP_PERIC1, 0, 0, 0),
73162306a36Sopenharmony_ci};
73262306a36Sopenharmony_ci
73362306a36Sopenharmony_ci/*
73462306a36Sopenharmony_ci * ATLAS_PLL & APOLLO_PLL & MEM0_PLL & MEM1_PLL & BUS_PLL & MFC_PLL
73562306a36Sopenharmony_ci * & MPHY_PLL & G3D_PLL & DISP_PLL & ISP_PLL
73662306a36Sopenharmony_ci */
73762306a36Sopenharmony_cistatic const struct samsung_pll_rate_table exynos5433_pll_rates[] __initconst = {
73862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2500000000U, 625, 6,  0),
73962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2400000000U, 500, 5,  0),
74062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2300000000U, 575, 6,  0),
74162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2200000000U, 550, 6,  0),
74262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2100000000U, 350, 4,  0),
74362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 2000000000U, 500, 6,  0),
74462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1900000000U, 475, 6,  0),
74562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1800000000U, 375, 5,  0),
74662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1700000000U, 425, 6,  0),
74762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1600000000U, 400, 6,  0),
74862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1500000000U, 250, 4,  0),
74962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1400000000U, 350, 6,  0),
75062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1332000000U, 222, 4,  0),
75162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1300000000U, 325, 6,  0),
75262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1200000000U, 500, 5,  1),
75362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1100000000U, 550, 6,  1),
75462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1086000000U, 362, 4,  1),
75562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1066000000U, 533, 6,  1),
75662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 1000000000U, 500, 6,  1),
75762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 933000000U,  311, 4,  1),
75862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 921000000U,  307, 4,  1),
75962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 900000000U,  375, 5,  1),
76062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 825000000U,  275, 4,  1),
76162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 800000000U,  400, 6,  1),
76262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 733000000U,  733, 12, 1),
76362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 700000000U,  175, 3,  1),
76462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 666000000U,  222, 4,  1),
76562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 633000000U,  211, 4,  1),
76662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 600000000U,  500, 5,  2),
76762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 552000000U,  460, 5,  2),
76862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 550000000U,  550, 6,  2),
76962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 543000000U,  362, 4,  2),
77062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 533000000U,  533, 6,  2),
77162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 500000000U,  500, 6,  2),
77262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 444000000U,  370, 5,  2),
77362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 420000000U,  350, 5,  2),
77462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 400000000U,  400, 6,  2),
77562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 350000000U,  350, 6,  2),
77662306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 333000000U,  222, 4,  2),
77762306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 300000000U,  500, 5,  3),
77862306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 278000000U,  556, 6,  3),
77962306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 266000000U,  532, 6,  3),
78062306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 250000000U,  500, 6,  3),
78162306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 200000000U,  400, 6,  3),
78262306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 166000000U,  332, 6,  3),
78362306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 160000000U,  320, 6,  3),
78462306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 133000000U,  532, 6,  4),
78562306a36Sopenharmony_ci	PLL_35XX_RATE(24 * MHZ, 100000000U,  400, 6,  4),
78662306a36Sopenharmony_ci	{ /* sentinel */ }
78762306a36Sopenharmony_ci};
78862306a36Sopenharmony_ci
78962306a36Sopenharmony_ci/* AUD_PLL */
79062306a36Sopenharmony_cistatic const struct samsung_pll_rate_table exynos5433_aud_pll_rates[] __initconst = {
79162306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 400000000U, 200, 3, 2,      0),
79262306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 393216003U, 197, 3, 2, -25690),
79362306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 384000000U, 128, 2, 2,      0),
79462306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 368639991U, 246, 4, 2, -15729),
79562306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 361507202U, 181, 3, 2, -16148),
79662306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 338687988U, 113, 2, 2,  -6816),
79762306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 294912002U,  98, 1, 3,  19923),
79862306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 288000000U,  96, 1, 3,      0),
79962306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 252000000U,  84, 1, 3,      0),
80062306a36Sopenharmony_ci	PLL_36XX_RATE(24 * MHZ, 196608001U, 197, 3, 3, -25690),
80162306a36Sopenharmony_ci	{ /* sentinel */ }
80262306a36Sopenharmony_ci};
80362306a36Sopenharmony_ci
80462306a36Sopenharmony_cistatic const struct samsung_pll_clock top_pll_clks[] __initconst = {
80562306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_ISP_PLL, "fout_isp_pll", "oscclk",
80662306a36Sopenharmony_ci		ISP_PLL_LOCK, ISP_PLL_CON0, exynos5433_pll_rates),
80762306a36Sopenharmony_ci	PLL(pll_36xx, CLK_FOUT_AUD_PLL, "fout_aud_pll", "oscclk",
80862306a36Sopenharmony_ci		AUD_PLL_LOCK, AUD_PLL_CON0, exynos5433_aud_pll_rates),
80962306a36Sopenharmony_ci};
81062306a36Sopenharmony_ci
81162306a36Sopenharmony_cistatic const struct samsung_cmu_info top_cmu_info __initconst = {
81262306a36Sopenharmony_ci	.pll_clks		= top_pll_clks,
81362306a36Sopenharmony_ci	.nr_pll_clks		= ARRAY_SIZE(top_pll_clks),
81462306a36Sopenharmony_ci	.mux_clks		= top_mux_clks,
81562306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(top_mux_clks),
81662306a36Sopenharmony_ci	.div_clks		= top_div_clks,
81762306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(top_div_clks),
81862306a36Sopenharmony_ci	.gate_clks		= top_gate_clks,
81962306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(top_gate_clks),
82062306a36Sopenharmony_ci	.fixed_clks		= top_fixed_clks,
82162306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(top_fixed_clks),
82262306a36Sopenharmony_ci	.fixed_factor_clks	= top_fixed_factor_clks,
82362306a36Sopenharmony_ci	.nr_fixed_factor_clks	= ARRAY_SIZE(top_fixed_factor_clks),
82462306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_TOP,
82562306a36Sopenharmony_ci	.clk_regs		= top_clk_regs,
82662306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(top_clk_regs),
82762306a36Sopenharmony_ci	.suspend_regs		= top_suspend_regs,
82862306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(top_suspend_regs),
82962306a36Sopenharmony_ci};
83062306a36Sopenharmony_ci
83162306a36Sopenharmony_cistatic void __init exynos5433_cmu_top_init(struct device_node *np)
83262306a36Sopenharmony_ci{
83362306a36Sopenharmony_ci	samsung_cmu_register_one(np, &top_cmu_info);
83462306a36Sopenharmony_ci}
83562306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_top, "samsung,exynos5433-cmu-top",
83662306a36Sopenharmony_ci		exynos5433_cmu_top_init);
83762306a36Sopenharmony_ci
83862306a36Sopenharmony_ci/*
83962306a36Sopenharmony_ci * Register offset definitions for CMU_CPIF
84062306a36Sopenharmony_ci */
84162306a36Sopenharmony_ci#define MPHY_PLL_LOCK		0x0000
84262306a36Sopenharmony_ci#define MPHY_PLL_CON0		0x0100
84362306a36Sopenharmony_ci#define MPHY_PLL_CON1		0x0104
84462306a36Sopenharmony_ci#define MPHY_PLL_FREQ_DET	0x010c
84562306a36Sopenharmony_ci#define MUX_SEL_CPIF0		0x0200
84662306a36Sopenharmony_ci#define DIV_CPIF		0x0600
84762306a36Sopenharmony_ci#define ENABLE_SCLK_CPIF	0x0a00
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_cistatic const unsigned long cpif_clk_regs[] __initconst = {
85062306a36Sopenharmony_ci	MPHY_PLL_LOCK,
85162306a36Sopenharmony_ci	MPHY_PLL_CON0,
85262306a36Sopenharmony_ci	MPHY_PLL_CON1,
85362306a36Sopenharmony_ci	MPHY_PLL_FREQ_DET,
85462306a36Sopenharmony_ci	MUX_SEL_CPIF0,
85562306a36Sopenharmony_ci	DIV_CPIF,
85662306a36Sopenharmony_ci	ENABLE_SCLK_CPIF,
85762306a36Sopenharmony_ci};
85862306a36Sopenharmony_ci
85962306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump cpif_suspend_regs[] = {
86062306a36Sopenharmony_ci	/* force all sclk clocks enabled */
86162306a36Sopenharmony_ci	{ ENABLE_SCLK_CPIF, 0x3ff },
86262306a36Sopenharmony_ci	/* MPHY PLL has to be enabled for suspend: reset value + ENABLE bit */
86362306a36Sopenharmony_ci	{ MPHY_PLL_CON0, 0x81c70601 },
86462306a36Sopenharmony_ci};
86562306a36Sopenharmony_ci
86662306a36Sopenharmony_ci/* list of all parent clock list */
86762306a36Sopenharmony_ciPNAME(mout_mphy_pll_p)		= { "oscclk", "fout_mphy_pll", };
86862306a36Sopenharmony_ci
86962306a36Sopenharmony_cistatic const struct samsung_pll_clock cpif_pll_clks[] __initconst = {
87062306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_MPHY_PLL, "fout_mphy_pll", "oscclk",
87162306a36Sopenharmony_ci		MPHY_PLL_LOCK, MPHY_PLL_CON0, exynos5433_pll_rates),
87262306a36Sopenharmony_ci};
87362306a36Sopenharmony_ci
87462306a36Sopenharmony_cistatic const struct samsung_mux_clock cpif_mux_clks[] __initconst = {
87562306a36Sopenharmony_ci	/* MUX_SEL_CPIF0 */
87662306a36Sopenharmony_ci	MUX(CLK_MOUT_MPHY_PLL, "mout_mphy_pll", mout_mphy_pll_p, MUX_SEL_CPIF0,
87762306a36Sopenharmony_ci			0, 1),
87862306a36Sopenharmony_ci};
87962306a36Sopenharmony_ci
88062306a36Sopenharmony_cistatic const struct samsung_div_clock cpif_div_clks[] __initconst = {
88162306a36Sopenharmony_ci	/* DIV_CPIF */
88262306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_MPHY, "div_sclk_mphy", "mout_mphy_pll", DIV_CPIF,
88362306a36Sopenharmony_ci			0, 6),
88462306a36Sopenharmony_ci};
88562306a36Sopenharmony_ci
88662306a36Sopenharmony_cistatic const struct samsung_gate_clock cpif_gate_clks[] __initconst = {
88762306a36Sopenharmony_ci	/* ENABLE_SCLK_CPIF */
88862306a36Sopenharmony_ci	GATE(CLK_SCLK_MPHY_PLL, "sclk_mphy_pll", "mout_mphy_pll",
88962306a36Sopenharmony_ci			ENABLE_SCLK_CPIF, 9, CLK_IGNORE_UNUSED, 0),
89062306a36Sopenharmony_ci	GATE(CLK_SCLK_UFS_MPHY, "sclk_ufs_mphy", "div_sclk_mphy",
89162306a36Sopenharmony_ci			ENABLE_SCLK_CPIF, 4, 0, 0),
89262306a36Sopenharmony_ci};
89362306a36Sopenharmony_ci
89462306a36Sopenharmony_cistatic const struct samsung_cmu_info cpif_cmu_info __initconst = {
89562306a36Sopenharmony_ci	.pll_clks		= cpif_pll_clks,
89662306a36Sopenharmony_ci	.nr_pll_clks		= ARRAY_SIZE(cpif_pll_clks),
89762306a36Sopenharmony_ci	.mux_clks		= cpif_mux_clks,
89862306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(cpif_mux_clks),
89962306a36Sopenharmony_ci	.div_clks		= cpif_div_clks,
90062306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(cpif_div_clks),
90162306a36Sopenharmony_ci	.gate_clks		= cpif_gate_clks,
90262306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(cpif_gate_clks),
90362306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_CPIF,
90462306a36Sopenharmony_ci	.clk_regs		= cpif_clk_regs,
90562306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(cpif_clk_regs),
90662306a36Sopenharmony_ci	.suspend_regs		= cpif_suspend_regs,
90762306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(cpif_suspend_regs),
90862306a36Sopenharmony_ci};
90962306a36Sopenharmony_ci
91062306a36Sopenharmony_cistatic void __init exynos5433_cmu_cpif_init(struct device_node *np)
91162306a36Sopenharmony_ci{
91262306a36Sopenharmony_ci	samsung_cmu_register_one(np, &cpif_cmu_info);
91362306a36Sopenharmony_ci}
91462306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_cpif, "samsung,exynos5433-cmu-cpif",
91562306a36Sopenharmony_ci		exynos5433_cmu_cpif_init);
91662306a36Sopenharmony_ci
91762306a36Sopenharmony_ci/*
91862306a36Sopenharmony_ci * Register offset definitions for CMU_MIF
91962306a36Sopenharmony_ci */
92062306a36Sopenharmony_ci#define MEM0_PLL_LOCK			0x0000
92162306a36Sopenharmony_ci#define MEM1_PLL_LOCK			0x0004
92262306a36Sopenharmony_ci#define BUS_PLL_LOCK			0x0008
92362306a36Sopenharmony_ci#define MFC_PLL_LOCK			0x000c
92462306a36Sopenharmony_ci#define MEM0_PLL_CON0			0x0100
92562306a36Sopenharmony_ci#define MEM0_PLL_CON1			0x0104
92662306a36Sopenharmony_ci#define MEM0_PLL_FREQ_DET		0x010c
92762306a36Sopenharmony_ci#define MEM1_PLL_CON0			0x0110
92862306a36Sopenharmony_ci#define MEM1_PLL_CON1			0x0114
92962306a36Sopenharmony_ci#define MEM1_PLL_FREQ_DET		0x011c
93062306a36Sopenharmony_ci#define BUS_PLL_CON0			0x0120
93162306a36Sopenharmony_ci#define BUS_PLL_CON1			0x0124
93262306a36Sopenharmony_ci#define BUS_PLL_FREQ_DET		0x012c
93362306a36Sopenharmony_ci#define MFC_PLL_CON0			0x0130
93462306a36Sopenharmony_ci#define MFC_PLL_CON1			0x0134
93562306a36Sopenharmony_ci#define MFC_PLL_FREQ_DET		0x013c
93662306a36Sopenharmony_ci#define MUX_SEL_MIF0			0x0200
93762306a36Sopenharmony_ci#define MUX_SEL_MIF1			0x0204
93862306a36Sopenharmony_ci#define MUX_SEL_MIF2			0x0208
93962306a36Sopenharmony_ci#define MUX_SEL_MIF3			0x020c
94062306a36Sopenharmony_ci#define MUX_SEL_MIF4			0x0210
94162306a36Sopenharmony_ci#define MUX_SEL_MIF5			0x0214
94262306a36Sopenharmony_ci#define MUX_SEL_MIF6			0x0218
94362306a36Sopenharmony_ci#define MUX_SEL_MIF7			0x021c
94462306a36Sopenharmony_ci#define MUX_ENABLE_MIF0			0x0300
94562306a36Sopenharmony_ci#define MUX_ENABLE_MIF1			0x0304
94662306a36Sopenharmony_ci#define MUX_ENABLE_MIF2			0x0308
94762306a36Sopenharmony_ci#define MUX_ENABLE_MIF3			0x030c
94862306a36Sopenharmony_ci#define MUX_ENABLE_MIF4			0x0310
94962306a36Sopenharmony_ci#define MUX_ENABLE_MIF5			0x0314
95062306a36Sopenharmony_ci#define MUX_ENABLE_MIF6			0x0318
95162306a36Sopenharmony_ci#define MUX_ENABLE_MIF7			0x031c
95262306a36Sopenharmony_ci#define MUX_STAT_MIF0			0x0400
95362306a36Sopenharmony_ci#define MUX_STAT_MIF1			0x0404
95462306a36Sopenharmony_ci#define MUX_STAT_MIF2			0x0408
95562306a36Sopenharmony_ci#define MUX_STAT_MIF3			0x040c
95662306a36Sopenharmony_ci#define MUX_STAT_MIF4			0x0410
95762306a36Sopenharmony_ci#define MUX_STAT_MIF5			0x0414
95862306a36Sopenharmony_ci#define MUX_STAT_MIF6			0x0418
95962306a36Sopenharmony_ci#define MUX_STAT_MIF7			0x041c
96062306a36Sopenharmony_ci#define DIV_MIF1			0x0604
96162306a36Sopenharmony_ci#define DIV_MIF2			0x0608
96262306a36Sopenharmony_ci#define DIV_MIF3			0x060c
96362306a36Sopenharmony_ci#define DIV_MIF4			0x0610
96462306a36Sopenharmony_ci#define DIV_MIF5			0x0614
96562306a36Sopenharmony_ci#define DIV_MIF_PLL_FREQ_DET		0x0618
96662306a36Sopenharmony_ci#define DIV_STAT_MIF1			0x0704
96762306a36Sopenharmony_ci#define DIV_STAT_MIF2			0x0708
96862306a36Sopenharmony_ci#define DIV_STAT_MIF3			0x070c
96962306a36Sopenharmony_ci#define DIV_STAT_MIF4			0x0710
97062306a36Sopenharmony_ci#define DIV_STAT_MIF5			0x0714
97162306a36Sopenharmony_ci#define DIV_STAT_MIF_PLL_FREQ_DET	0x0718
97262306a36Sopenharmony_ci#define ENABLE_ACLK_MIF0		0x0800
97362306a36Sopenharmony_ci#define ENABLE_ACLK_MIF1		0x0804
97462306a36Sopenharmony_ci#define ENABLE_ACLK_MIF2		0x0808
97562306a36Sopenharmony_ci#define ENABLE_ACLK_MIF3		0x080c
97662306a36Sopenharmony_ci#define ENABLE_PCLK_MIF			0x0900
97762306a36Sopenharmony_ci#define ENABLE_PCLK_MIF_SECURE_DREX0_TZ	0x0904
97862306a36Sopenharmony_ci#define ENABLE_PCLK_MIF_SECURE_DREX1_TZ	0x0908
97962306a36Sopenharmony_ci#define ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT	0x090c
98062306a36Sopenharmony_ci#define ENABLE_PCLK_MIF_SECURE_RTC	0x0910
98162306a36Sopenharmony_ci#define ENABLE_SCLK_MIF			0x0a00
98262306a36Sopenharmony_ci#define ENABLE_IP_MIF0			0x0b00
98362306a36Sopenharmony_ci#define ENABLE_IP_MIF1			0x0b04
98462306a36Sopenharmony_ci#define ENABLE_IP_MIF2			0x0b08
98562306a36Sopenharmony_ci#define ENABLE_IP_MIF3			0x0b0c
98662306a36Sopenharmony_ci#define ENABLE_IP_MIF_SECURE_DREX0_TZ	0x0b10
98762306a36Sopenharmony_ci#define ENABLE_IP_MIF_SECURE_DREX1_TZ	0x0b14
98862306a36Sopenharmony_ci#define ENABLE_IP_MIF_SECURE_MONOTONIC_CNT	0x0b18
98962306a36Sopenharmony_ci#define ENABLE_IP_MIF_SECURE_RTC	0x0b1c
99062306a36Sopenharmony_ci#define CLKOUT_CMU_MIF			0x0c00
99162306a36Sopenharmony_ci#define CLKOUT_CMU_MIF_DIV_STAT		0x0c04
99262306a36Sopenharmony_ci#define DREX_FREQ_CTRL0			0x1000
99362306a36Sopenharmony_ci#define DREX_FREQ_CTRL1			0x1004
99462306a36Sopenharmony_ci#define PAUSE				0x1008
99562306a36Sopenharmony_ci#define DDRPHY_LOCK_CTRL		0x100c
99662306a36Sopenharmony_ci
99762306a36Sopenharmony_cistatic const unsigned long mif_clk_regs[] __initconst = {
99862306a36Sopenharmony_ci	MEM0_PLL_LOCK,
99962306a36Sopenharmony_ci	MEM1_PLL_LOCK,
100062306a36Sopenharmony_ci	BUS_PLL_LOCK,
100162306a36Sopenharmony_ci	MFC_PLL_LOCK,
100262306a36Sopenharmony_ci	MEM0_PLL_CON0,
100362306a36Sopenharmony_ci	MEM0_PLL_CON1,
100462306a36Sopenharmony_ci	MEM0_PLL_FREQ_DET,
100562306a36Sopenharmony_ci	MEM1_PLL_CON0,
100662306a36Sopenharmony_ci	MEM1_PLL_CON1,
100762306a36Sopenharmony_ci	MEM1_PLL_FREQ_DET,
100862306a36Sopenharmony_ci	BUS_PLL_CON0,
100962306a36Sopenharmony_ci	BUS_PLL_CON1,
101062306a36Sopenharmony_ci	BUS_PLL_FREQ_DET,
101162306a36Sopenharmony_ci	MFC_PLL_CON0,
101262306a36Sopenharmony_ci	MFC_PLL_CON1,
101362306a36Sopenharmony_ci	MFC_PLL_FREQ_DET,
101462306a36Sopenharmony_ci	MUX_SEL_MIF0,
101562306a36Sopenharmony_ci	MUX_SEL_MIF1,
101662306a36Sopenharmony_ci	MUX_SEL_MIF2,
101762306a36Sopenharmony_ci	MUX_SEL_MIF3,
101862306a36Sopenharmony_ci	MUX_SEL_MIF4,
101962306a36Sopenharmony_ci	MUX_SEL_MIF5,
102062306a36Sopenharmony_ci	MUX_SEL_MIF6,
102162306a36Sopenharmony_ci	MUX_SEL_MIF7,
102262306a36Sopenharmony_ci	MUX_ENABLE_MIF0,
102362306a36Sopenharmony_ci	MUX_ENABLE_MIF1,
102462306a36Sopenharmony_ci	MUX_ENABLE_MIF2,
102562306a36Sopenharmony_ci	MUX_ENABLE_MIF3,
102662306a36Sopenharmony_ci	MUX_ENABLE_MIF4,
102762306a36Sopenharmony_ci	MUX_ENABLE_MIF5,
102862306a36Sopenharmony_ci	MUX_ENABLE_MIF6,
102962306a36Sopenharmony_ci	MUX_ENABLE_MIF7,
103062306a36Sopenharmony_ci	DIV_MIF1,
103162306a36Sopenharmony_ci	DIV_MIF2,
103262306a36Sopenharmony_ci	DIV_MIF3,
103362306a36Sopenharmony_ci	DIV_MIF4,
103462306a36Sopenharmony_ci	DIV_MIF5,
103562306a36Sopenharmony_ci	DIV_MIF_PLL_FREQ_DET,
103662306a36Sopenharmony_ci	ENABLE_ACLK_MIF0,
103762306a36Sopenharmony_ci	ENABLE_ACLK_MIF1,
103862306a36Sopenharmony_ci	ENABLE_ACLK_MIF2,
103962306a36Sopenharmony_ci	ENABLE_ACLK_MIF3,
104062306a36Sopenharmony_ci	ENABLE_PCLK_MIF,
104162306a36Sopenharmony_ci	ENABLE_PCLK_MIF_SECURE_DREX0_TZ,
104262306a36Sopenharmony_ci	ENABLE_PCLK_MIF_SECURE_DREX1_TZ,
104362306a36Sopenharmony_ci	ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT,
104462306a36Sopenharmony_ci	ENABLE_PCLK_MIF_SECURE_RTC,
104562306a36Sopenharmony_ci	ENABLE_SCLK_MIF,
104662306a36Sopenharmony_ci	ENABLE_IP_MIF0,
104762306a36Sopenharmony_ci	ENABLE_IP_MIF1,
104862306a36Sopenharmony_ci	ENABLE_IP_MIF2,
104962306a36Sopenharmony_ci	ENABLE_IP_MIF3,
105062306a36Sopenharmony_ci	ENABLE_IP_MIF_SECURE_DREX0_TZ,
105162306a36Sopenharmony_ci	ENABLE_IP_MIF_SECURE_DREX1_TZ,
105262306a36Sopenharmony_ci	ENABLE_IP_MIF_SECURE_MONOTONIC_CNT,
105362306a36Sopenharmony_ci	ENABLE_IP_MIF_SECURE_RTC,
105462306a36Sopenharmony_ci	CLKOUT_CMU_MIF,
105562306a36Sopenharmony_ci	CLKOUT_CMU_MIF_DIV_STAT,
105662306a36Sopenharmony_ci	DREX_FREQ_CTRL0,
105762306a36Sopenharmony_ci	DREX_FREQ_CTRL1,
105862306a36Sopenharmony_ci	PAUSE,
105962306a36Sopenharmony_ci	DDRPHY_LOCK_CTRL,
106062306a36Sopenharmony_ci};
106162306a36Sopenharmony_ci
106262306a36Sopenharmony_cistatic const struct samsung_pll_clock mif_pll_clks[] __initconst = {
106362306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_MEM0_PLL, "fout_mem0_pll", "oscclk",
106462306a36Sopenharmony_ci		MEM0_PLL_LOCK, MEM0_PLL_CON0, exynos5433_pll_rates),
106562306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_MEM1_PLL, "fout_mem1_pll", "oscclk",
106662306a36Sopenharmony_ci		MEM1_PLL_LOCK, MEM1_PLL_CON0, exynos5433_pll_rates),
106762306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_BUS_PLL, "fout_bus_pll", "oscclk",
106862306a36Sopenharmony_ci		BUS_PLL_LOCK, BUS_PLL_CON0, exynos5433_pll_rates),
106962306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_MFC_PLL, "fout_mfc_pll", "oscclk",
107062306a36Sopenharmony_ci		MFC_PLL_LOCK, MFC_PLL_CON0, exynos5433_pll_rates),
107162306a36Sopenharmony_ci};
107262306a36Sopenharmony_ci
107362306a36Sopenharmony_ci/* list of all parent clock list */
107462306a36Sopenharmony_ciPNAME(mout_mfc_pll_div2_p)	= { "mout_mfc_pll", "dout_mfc_pll", };
107562306a36Sopenharmony_ciPNAME(mout_bus_pll_div2_p)	= { "mout_bus_pll", "dout_bus_pll", };
107662306a36Sopenharmony_ciPNAME(mout_mem1_pll_div2_p)	= { "mout_mem1_pll", "dout_mem1_pll", };
107762306a36Sopenharmony_ciPNAME(mout_mem0_pll_div2_p)	= { "mout_mem0_pll", "dout_mem0_pll", };
107862306a36Sopenharmony_ciPNAME(mout_mfc_pll_p)		= { "oscclk", "fout_mfc_pll", };
107962306a36Sopenharmony_ciPNAME(mout_bus_pll_p)		= { "oscclk", "fout_bus_pll", };
108062306a36Sopenharmony_ciPNAME(mout_mem1_pll_p)		= { "oscclk", "fout_mem1_pll", };
108162306a36Sopenharmony_ciPNAME(mout_mem0_pll_p)		= { "oscclk", "fout_mem0_pll", };
108262306a36Sopenharmony_ci
108362306a36Sopenharmony_ciPNAME(mout_clk2x_phy_c_p)	= { "mout_mem0_pll_div2", "mout_clkm_phy_b", };
108462306a36Sopenharmony_ciPNAME(mout_clk2x_phy_b_p)	= { "mout_bus_pll_div2", "mout_clkm_phy_a", };
108562306a36Sopenharmony_ciPNAME(mout_clk2x_phy_a_p)	= { "mout_bus_pll_div2", "mout_mfc_pll_div2", };
108662306a36Sopenharmony_ciPNAME(mout_clkm_phy_b_p)	= { "mout_mem1_pll_div2", "mout_clkm_phy_a", };
108762306a36Sopenharmony_ci
108862306a36Sopenharmony_ciPNAME(mout_aclk_mifnm_200_p)	= { "mout_mem0_pll_div2", "div_mif_pre", };
108962306a36Sopenharmony_ciPNAME(mout_aclk_mifnm_400_p)	= { "mout_mem1_pll_div2", "mout_bus_pll_div2",};
109062306a36Sopenharmony_ci
109162306a36Sopenharmony_ciPNAME(mout_aclk_disp_333_b_p)	= { "mout_aclk_disp_333_a",
109262306a36Sopenharmony_ci				    "mout_bus_pll_div2", };
109362306a36Sopenharmony_ciPNAME(mout_aclk_disp_333_a_p)	= { "mout_mfc_pll_div2", "sclk_mphy_pll", };
109462306a36Sopenharmony_ci
109562306a36Sopenharmony_ciPNAME(mout_sclk_decon_vclk_c_p)	= { "mout_sclk_decon_vclk_b",
109662306a36Sopenharmony_ci				    "sclk_mphy_pll", };
109762306a36Sopenharmony_ciPNAME(mout_sclk_decon_vclk_b_p)	= { "mout_sclk_decon_vclk_a",
109862306a36Sopenharmony_ci				    "mout_mfc_pll_div2", };
109962306a36Sopenharmony_ciPNAME(mout_sclk_decon_p)	= { "oscclk", "mout_bus_pll_div2", };
110062306a36Sopenharmony_ciPNAME(mout_sclk_decon_eclk_c_p)	= { "mout_sclk_decon_eclk_b",
110162306a36Sopenharmony_ci				    "sclk_mphy_pll", };
110262306a36Sopenharmony_ciPNAME(mout_sclk_decon_eclk_b_p)	= { "mout_sclk_decon_eclk_a",
110362306a36Sopenharmony_ci				    "mout_mfc_pll_div2", };
110462306a36Sopenharmony_ci
110562306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_eclk_c_p) = { "mout_sclk_decon_tv_eclk_b",
110662306a36Sopenharmony_ci				       "sclk_mphy_pll", };
110762306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_eclk_b_p) = { "mout_sclk_decon_tv_eclk_a",
110862306a36Sopenharmony_ci				       "mout_mfc_pll_div2", };
110962306a36Sopenharmony_ciPNAME(mout_sclk_dsd_c_p)	= { "mout_sclk_dsd_b", "mout_bus_pll_div2", };
111062306a36Sopenharmony_ciPNAME(mout_sclk_dsd_b_p)	= { "mout_sclk_dsd_a", "sclk_mphy_pll", };
111162306a36Sopenharmony_ciPNAME(mout_sclk_dsd_a_p)	= { "oscclk", "mout_mfc_pll_div2", };
111262306a36Sopenharmony_ci
111362306a36Sopenharmony_ciPNAME(mout_sclk_dsim0_c_p)	= { "mout_sclk_dsim0_b", "sclk_mphy_pll", };
111462306a36Sopenharmony_ciPNAME(mout_sclk_dsim0_b_p)	= { "mout_sclk_dsim0_a", "mout_mfc_pll_div2" };
111562306a36Sopenharmony_ci
111662306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_vclk_c_p) = { "mout_sclk_decon_tv_vclk_b",
111762306a36Sopenharmony_ci				       "sclk_mphy_pll", };
111862306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_vclk_b_p) = { "mout_sclk_decon_tv_vclk_a",
111962306a36Sopenharmony_ci				       "mout_mfc_pll_div2", };
112062306a36Sopenharmony_ciPNAME(mout_sclk_dsim1_c_p)	= { "mout_sclk_dsim1_b", "sclk_mphy_pll", };
112162306a36Sopenharmony_ciPNAME(mout_sclk_dsim1_b_p)	= { "mout_sclk_dsim1_a", "mout_mfc_pll_div2",};
112262306a36Sopenharmony_ci
112362306a36Sopenharmony_cistatic const struct samsung_fixed_factor_clock mif_fixed_factor_clks[] __initconst = {
112462306a36Sopenharmony_ci	/* dout_{mfc|bus|mem1|mem0}_pll is half fixed rate from parent mux */
112562306a36Sopenharmony_ci	FFACTOR(CLK_DOUT_MFC_PLL, "dout_mfc_pll", "mout_mfc_pll", 1, 1, 0),
112662306a36Sopenharmony_ci	FFACTOR(CLK_DOUT_BUS_PLL, "dout_bus_pll", "mout_bus_pll", 1, 1, 0),
112762306a36Sopenharmony_ci	FFACTOR(CLK_DOUT_MEM1_PLL, "dout_mem1_pll", "mout_mem1_pll", 1, 1, 0),
112862306a36Sopenharmony_ci	FFACTOR(CLK_DOUT_MEM0_PLL, "dout_mem0_pll", "mout_mem0_pll", 1, 1, 0),
112962306a36Sopenharmony_ci};
113062306a36Sopenharmony_ci
113162306a36Sopenharmony_cistatic const struct samsung_mux_clock mif_mux_clks[] __initconst = {
113262306a36Sopenharmony_ci	/* MUX_SEL_MIF0 */
113362306a36Sopenharmony_ci	MUX(CLK_MOUT_MFC_PLL_DIV2, "mout_mfc_pll_div2", mout_mfc_pll_div2_p,
113462306a36Sopenharmony_ci			MUX_SEL_MIF0, 28, 1),
113562306a36Sopenharmony_ci	MUX(CLK_MOUT_BUS_PLL_DIV2, "mout_bus_pll_div2", mout_bus_pll_div2_p,
113662306a36Sopenharmony_ci			MUX_SEL_MIF0, 24, 1),
113762306a36Sopenharmony_ci	MUX(CLK_MOUT_MEM1_PLL_DIV2, "mout_mem1_pll_div2", mout_mem1_pll_div2_p,
113862306a36Sopenharmony_ci			MUX_SEL_MIF0, 20, 1),
113962306a36Sopenharmony_ci	MUX(CLK_MOUT_MEM0_PLL_DIV2, "mout_mem0_pll_div2", mout_mem0_pll_div2_p,
114062306a36Sopenharmony_ci			MUX_SEL_MIF0, 16, 1),
114162306a36Sopenharmony_ci	MUX(CLK_MOUT_MFC_PLL, "mout_mfc_pll", mout_mfc_pll_p, MUX_SEL_MIF0,
114262306a36Sopenharmony_ci			12, 1),
114362306a36Sopenharmony_ci	MUX(CLK_MOUT_BUS_PLL, "mout_bus_pll", mout_bus_pll_p, MUX_SEL_MIF0,
114462306a36Sopenharmony_ci			8, 1),
114562306a36Sopenharmony_ci	MUX(CLK_MOUT_MEM1_PLL, "mout_mem1_pll", mout_mem1_pll_p, MUX_SEL_MIF0,
114662306a36Sopenharmony_ci			4, 1),
114762306a36Sopenharmony_ci	MUX(CLK_MOUT_MEM0_PLL, "mout_mem0_pll", mout_mem0_pll_p, MUX_SEL_MIF0,
114862306a36Sopenharmony_ci			0, 1),
114962306a36Sopenharmony_ci
115062306a36Sopenharmony_ci	/* MUX_SEL_MIF1 */
115162306a36Sopenharmony_ci	MUX(CLK_MOUT_CLK2X_PHY_C, "mout_clk2x_phy_c", mout_clk2x_phy_c_p,
115262306a36Sopenharmony_ci			MUX_SEL_MIF1, 24, 1),
115362306a36Sopenharmony_ci	MUX(CLK_MOUT_CLK2X_PHY_B, "mout_clk2x_phy_b", mout_clk2x_phy_b_p,
115462306a36Sopenharmony_ci			MUX_SEL_MIF1, 20, 1),
115562306a36Sopenharmony_ci	MUX(CLK_MOUT_CLK2X_PHY_A, "mout_clk2x_phy_a", mout_clk2x_phy_a_p,
115662306a36Sopenharmony_ci			MUX_SEL_MIF1, 16, 1),
115762306a36Sopenharmony_ci	MUX(CLK_MOUT_CLKM_PHY_C, "mout_clkm_phy_c", mout_clk2x_phy_c_p,
115862306a36Sopenharmony_ci			MUX_SEL_MIF1, 12, 1),
115962306a36Sopenharmony_ci	MUX(CLK_MOUT_CLKM_PHY_B, "mout_clkm_phy_b", mout_clkm_phy_b_p,
116062306a36Sopenharmony_ci			MUX_SEL_MIF1, 8, 1),
116162306a36Sopenharmony_ci	MUX(CLK_MOUT_CLKM_PHY_A, "mout_clkm_phy_a", mout_clk2x_phy_a_p,
116262306a36Sopenharmony_ci			MUX_SEL_MIF1, 4, 1),
116362306a36Sopenharmony_ci
116462306a36Sopenharmony_ci	/* MUX_SEL_MIF2 */
116562306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MIFNM_200, "mout_aclk_mifnm_200",
116662306a36Sopenharmony_ci			mout_aclk_mifnm_200_p, MUX_SEL_MIF2, 8, 1),
116762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MIFNM_400, "mout_aclk_mifnm_400",
116862306a36Sopenharmony_ci			mout_aclk_mifnm_400_p, MUX_SEL_MIF2, 0, 1),
116962306a36Sopenharmony_ci
117062306a36Sopenharmony_ci	/* MUX_SEL_MIF3 */
117162306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_DISP_333_B, "mout_aclk_disp_333_b",
117262306a36Sopenharmony_ci			mout_aclk_disp_333_b_p, MUX_SEL_MIF3, 4, 1),
117362306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_DISP_333_A, "mout_aclk_disp_333_a",
117462306a36Sopenharmony_ci			mout_aclk_disp_333_a_p, MUX_SEL_MIF3, 0, 1),
117562306a36Sopenharmony_ci
117662306a36Sopenharmony_ci	/* MUX_SEL_MIF4 */
117762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_VCLK_C, "mout_sclk_decon_vclk_c",
117862306a36Sopenharmony_ci			mout_sclk_decon_vclk_c_p, MUX_SEL_MIF4, 24, 1),
117962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_VCLK_B, "mout_sclk_decon_vclk_b",
118062306a36Sopenharmony_ci			mout_sclk_decon_vclk_b_p, MUX_SEL_MIF4, 20, 1),
118162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_VCLK_A, "mout_sclk_decon_vclk_a",
118262306a36Sopenharmony_ci			mout_sclk_decon_p, MUX_SEL_MIF4, 16, 1),
118362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_ECLK_C, "mout_sclk_decon_eclk_c",
118462306a36Sopenharmony_ci			mout_sclk_decon_eclk_c_p, MUX_SEL_MIF4, 8, 1),
118562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_ECLK_B, "mout_sclk_decon_eclk_b",
118662306a36Sopenharmony_ci			mout_sclk_decon_eclk_b_p, MUX_SEL_MIF4, 4, 1),
118762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_ECLK_A, "mout_sclk_decon_eclk_a",
118862306a36Sopenharmony_ci			mout_sclk_decon_p, MUX_SEL_MIF4, 0, 1),
118962306a36Sopenharmony_ci
119062306a36Sopenharmony_ci	/* MUX_SEL_MIF5 */
119162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_C, "mout_sclk_decon_tv_eclk_c",
119262306a36Sopenharmony_ci			mout_sclk_decon_tv_eclk_c_p, MUX_SEL_MIF5, 24, 1),
119362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_B, "mout_sclk_decon_tv_eclk_b",
119462306a36Sopenharmony_ci			mout_sclk_decon_tv_eclk_b_p, MUX_SEL_MIF5, 20, 1),
119562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_A, "mout_sclk_decon_tv_eclk_a",
119662306a36Sopenharmony_ci			mout_sclk_decon_p, MUX_SEL_MIF5, 16, 1),
119762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSD_C, "mout_sclk_dsd_c", mout_sclk_dsd_c_p,
119862306a36Sopenharmony_ci			MUX_SEL_MIF5, 8, 1),
119962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSD_B, "mout_sclk_dsd_b", mout_sclk_dsd_b_p,
120062306a36Sopenharmony_ci			MUX_SEL_MIF5, 4, 1),
120162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSD_A, "mout_sclk_dsd_a", mout_sclk_dsd_a_p,
120262306a36Sopenharmony_ci			MUX_SEL_MIF5, 0, 1),
120362306a36Sopenharmony_ci
120462306a36Sopenharmony_ci	/* MUX_SEL_MIF6 */
120562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM0_C, "mout_sclk_dsim0_c", mout_sclk_dsim0_c_p,
120662306a36Sopenharmony_ci			MUX_SEL_MIF6, 8, 1),
120762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM0_B, "mout_sclk_dsim0_b", mout_sclk_dsim0_b_p,
120862306a36Sopenharmony_ci			MUX_SEL_MIF6, 4, 1),
120962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM0_A, "mout_sclk_dsim0_a", mout_sclk_decon_p,
121062306a36Sopenharmony_ci			MUX_SEL_MIF6, 0, 1),
121162306a36Sopenharmony_ci
121262306a36Sopenharmony_ci	/* MUX_SEL_MIF7 */
121362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_C, "mout_sclk_decon_tv_vclk_c",
121462306a36Sopenharmony_ci			mout_sclk_decon_tv_vclk_c_p, MUX_SEL_MIF7, 24, 1),
121562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_B, "mout_sclk_decon_tv_vclk_b",
121662306a36Sopenharmony_ci			mout_sclk_decon_tv_vclk_b_p, MUX_SEL_MIF7, 20, 1),
121762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_A, "mout_sclk_decon_tv_vclk_a",
121862306a36Sopenharmony_ci			mout_sclk_decon_p, MUX_SEL_MIF7, 16, 1),
121962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_C, "mout_sclk_dsim1_c", mout_sclk_dsim1_c_p,
122062306a36Sopenharmony_ci			MUX_SEL_MIF7, 8, 1),
122162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_B, "mout_sclk_dsim1_b", mout_sclk_dsim1_b_p,
122262306a36Sopenharmony_ci			MUX_SEL_MIF7, 4, 1),
122362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_A, "mout_sclk_dsim1_a", mout_sclk_decon_p,
122462306a36Sopenharmony_ci			MUX_SEL_MIF7, 0, 1),
122562306a36Sopenharmony_ci};
122662306a36Sopenharmony_ci
122762306a36Sopenharmony_cistatic const struct samsung_div_clock mif_div_clks[] __initconst = {
122862306a36Sopenharmony_ci	/* DIV_MIF1 */
122962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_HPM_MIF, "div_sclk_hpm_mif", "div_clk2x_phy",
123062306a36Sopenharmony_ci			DIV_MIF1, 16, 2),
123162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_DREX1, "div_aclk_drex1", "div_clk2x_phy", DIV_MIF1,
123262306a36Sopenharmony_ci			12, 2),
123362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_DREX0, "div_aclk_drex0", "div_clk2x_phy", DIV_MIF1,
123462306a36Sopenharmony_ci			8, 2),
123562306a36Sopenharmony_ci	DIV(CLK_DIV_CLK2XPHY, "div_clk2x_phy", "mout_clk2x_phy_c", DIV_MIF1,
123662306a36Sopenharmony_ci			4, 4),
123762306a36Sopenharmony_ci
123862306a36Sopenharmony_ci	/* DIV_MIF2 */
123962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIF_266, "div_aclk_mif_266", "mout_bus_pll_div2",
124062306a36Sopenharmony_ci			DIV_MIF2, 20, 3),
124162306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIFND_133, "div_aclk_mifnd_133", "div_mif_pre",
124262306a36Sopenharmony_ci			DIV_MIF2, 16, 4),
124362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIF_133, "div_aclk_mif_133", "div_mif_pre",
124462306a36Sopenharmony_ci			DIV_MIF2, 12, 4),
124562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIFNM_200, "div_aclk_mifnm_200",
124662306a36Sopenharmony_ci			"mout_aclk_mifnm_200", DIV_MIF2, 8, 3),
124762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIF_200, "div_aclk_mif_200", "div_aclk_mif_400",
124862306a36Sopenharmony_ci			DIV_MIF2, 4, 2),
124962306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_MIF_400, "div_aclk_mif_400", "mout_aclk_mifnm_400",
125062306a36Sopenharmony_ci			DIV_MIF2, 0, 3),
125162306a36Sopenharmony_ci
125262306a36Sopenharmony_ci	/* DIV_MIF3 */
125362306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_BUS2_400, "div_aclk_bus2_400", "div_mif_pre",
125462306a36Sopenharmony_ci			DIV_MIF3, 16, 4),
125562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_DISP_333, "div_aclk_disp_333", "mout_aclk_disp_333_b",
125662306a36Sopenharmony_ci			DIV_MIF3, 4, 3),
125762306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CPIF_200, "div_aclk_cpif_200", "mout_aclk_mifnm_200",
125862306a36Sopenharmony_ci			DIV_MIF3, 0, 3),
125962306a36Sopenharmony_ci
126062306a36Sopenharmony_ci	/* DIV_MIF4 */
126162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DSIM1, "div_sclk_dsim1", "mout_sclk_dsim1_c",
126262306a36Sopenharmony_ci			DIV_MIF4, 24, 4),
126362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_TV_VCLK, "div_sclk_decon_tv_vclk",
126462306a36Sopenharmony_ci			"mout_sclk_decon_tv_vclk_c", DIV_MIF4, 20, 4),
126562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DSIM0, "div_sclk_dsim0", "mout_sclk_dsim0_c",
126662306a36Sopenharmony_ci			DIV_MIF4, 16, 4),
126762306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DSD, "div_sclk_dsd", "mout_sclk_dsd_c",
126862306a36Sopenharmony_ci			DIV_MIF4, 12, 4),
126962306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_TV_ECLK, "div_sclk_decon_tv_eclk",
127062306a36Sopenharmony_ci			"mout_sclk_decon_tv_eclk_c", DIV_MIF4, 8, 4),
127162306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_VCLK, "div_sclk_decon_vclk",
127262306a36Sopenharmony_ci			"mout_sclk_decon_vclk_c", DIV_MIF4, 4, 4),
127362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_ECLK, "div_sclk_decon_eclk",
127462306a36Sopenharmony_ci			"mout_sclk_decon_eclk_c", DIV_MIF4, 0, 4),
127562306a36Sopenharmony_ci
127662306a36Sopenharmony_ci	/* DIV_MIF5 */
127762306a36Sopenharmony_ci	DIV(CLK_DIV_MIF_PRE, "div_mif_pre", "mout_bus_pll_div2", DIV_MIF5,
127862306a36Sopenharmony_ci			0, 3),
127962306a36Sopenharmony_ci};
128062306a36Sopenharmony_ci
128162306a36Sopenharmony_cistatic const struct samsung_gate_clock mif_gate_clks[] __initconst = {
128262306a36Sopenharmony_ci	/* ENABLE_ACLK_MIF0 */
128362306a36Sopenharmony_ci	GATE(CLK_CLK2X_PHY1, "clk2k_phy1", "div_clk2x_phy", ENABLE_ACLK_MIF0,
128462306a36Sopenharmony_ci			19, CLK_IGNORE_UNUSED, 0),
128562306a36Sopenharmony_ci	GATE(CLK_CLK2X_PHY0, "clk2x_phy0", "div_clk2x_phy", ENABLE_ACLK_MIF0,
128662306a36Sopenharmony_ci			18, CLK_IGNORE_UNUSED, 0),
128762306a36Sopenharmony_ci	GATE(CLK_CLKM_PHY1, "clkm_phy1", "mout_clkm_phy_c", ENABLE_ACLK_MIF0,
128862306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
128962306a36Sopenharmony_ci	GATE(CLK_CLKM_PHY0, "clkm_phy0", "mout_clkm_phy_c", ENABLE_ACLK_MIF0,
129062306a36Sopenharmony_ci			16, CLK_IGNORE_UNUSED, 0),
129162306a36Sopenharmony_ci	GATE(CLK_RCLK_DREX1, "rclk_drex1", "oscclk", ENABLE_ACLK_MIF0,
129262306a36Sopenharmony_ci			15, CLK_IGNORE_UNUSED, 0),
129362306a36Sopenharmony_ci	GATE(CLK_RCLK_DREX0, "rclk_drex0", "oscclk", ENABLE_ACLK_MIF0,
129462306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
129562306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_TZ, "aclk_drex1_tz", "div_aclk_drex1",
129662306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 13, CLK_IGNORE_UNUSED, 0),
129762306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_TZ, "aclk_drex0_tz", "div_aclk_drex0",
129862306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 12, CLK_IGNORE_UNUSED, 0),
129962306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_PEREV, "aclk_drex1_perev", "div_aclk_drex1",
130062306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 11, CLK_IGNORE_UNUSED, 0),
130162306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_PEREV, "aclk_drex0_perev", "div_aclk_drex0",
130262306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 10, CLK_IGNORE_UNUSED, 0),
130362306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_MEMIF, "aclk_drex1_memif", "div_aclk_drex1",
130462306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 9, CLK_IGNORE_UNUSED, 0),
130562306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_MEMIF, "aclk_drex0_memif", "div_aclk_drex0",
130662306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 8, CLK_IGNORE_UNUSED, 0),
130762306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_SCH, "aclk_drex1_sch", "div_aclk_drex1",
130862306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 7, CLK_IGNORE_UNUSED, 0),
130962306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_SCH, "aclk_drex0_sch", "div_aclk_drex0",
131062306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 6, CLK_IGNORE_UNUSED, 0),
131162306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_BUSIF, "aclk_drex1_busif", "div_aclk_drex1",
131262306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 5, CLK_IGNORE_UNUSED, 0),
131362306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_BUSIF, "aclk_drex0_busif", "div_aclk_drex0",
131462306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 4, CLK_IGNORE_UNUSED, 0),
131562306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1_BUSIF_RD, "aclk_drex1_busif_rd", "div_aclk_drex1",
131662306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 3, CLK_IGNORE_UNUSED, 0),
131762306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0_BUSIF_RD, "aclk_drex0_busif_rd", "div_aclk_drex0",
131862306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 2, CLK_IGNORE_UNUSED, 0),
131962306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX1, "aclk_drex1", "div_aclk_drex1",
132062306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 2, CLK_IGNORE_UNUSED, 0),
132162306a36Sopenharmony_ci	GATE(CLK_ACLK_DREX0, "aclk_drex0", "div_aclk_drex0",
132262306a36Sopenharmony_ci			ENABLE_ACLK_MIF0, 1, CLK_IGNORE_UNUSED, 0),
132362306a36Sopenharmony_ci
132462306a36Sopenharmony_ci	/* ENABLE_ACLK_MIF1 */
132562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_MIF_IMEM, "aclk_asyncaxis_mif_imem",
132662306a36Sopenharmony_ci			"div_aclk_mif_200", ENABLE_ACLK_MIF1, 28,
132762306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
132862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_NOC_P_CCI, "aclk_asyncaxis_noc_p_cci",
132962306a36Sopenharmony_ci			"div_aclk_mif_200", ENABLE_ACLK_MIF1,
133062306a36Sopenharmony_ci			27, CLK_IGNORE_UNUSED, 0),
133162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_NOC_P_CCI, "aclk_asyncaxim_noc_p_cci",
133262306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
133362306a36Sopenharmony_ci			26, CLK_IGNORE_UNUSED, 0),
133462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_CP1, "aclk_asyncaxis_cp1",
133562306a36Sopenharmony_ci			"div_aclk_mifnm_200", ENABLE_ACLK_MIF1,
133662306a36Sopenharmony_ci			25, CLK_IGNORE_UNUSED, 0),
133762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_CP1, "aclk_asyncaxim_cp1",
133862306a36Sopenharmony_ci			"div_aclk_drex1", ENABLE_ACLK_MIF1,
133962306a36Sopenharmony_ci			24, CLK_IGNORE_UNUSED, 0),
134062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_CP0, "aclk_asyncaxis_cp0",
134162306a36Sopenharmony_ci			"div_aclk_mifnm_200", ENABLE_ACLK_MIF1,
134262306a36Sopenharmony_ci			23, CLK_IGNORE_UNUSED, 0),
134362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_CP0, "aclk_asyncaxim_cp0",
134462306a36Sopenharmony_ci			"div_aclk_drex0", ENABLE_ACLK_MIF1,
134562306a36Sopenharmony_ci			22, CLK_IGNORE_UNUSED, 0),
134662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX1_3, "aclk_asyncaxis_drex1_3",
134762306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
134862306a36Sopenharmony_ci			21, CLK_IGNORE_UNUSED, 0),
134962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX1_3, "aclk_asyncaxim_drex1_3",
135062306a36Sopenharmony_ci			"div_aclk_drex1", ENABLE_ACLK_MIF1,
135162306a36Sopenharmony_ci			20, CLK_IGNORE_UNUSED, 0),
135262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX1_1, "aclk_asyncaxis_drex1_1",
135362306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
135462306a36Sopenharmony_ci			19, CLK_IGNORE_UNUSED, 0),
135562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX1_1, "aclk_asyncaxim_drex1_1",
135662306a36Sopenharmony_ci			"div_aclk_drex1", ENABLE_ACLK_MIF1,
135762306a36Sopenharmony_ci			18, CLK_IGNORE_UNUSED, 0),
135862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX1_0, "aclk_asyncaxis_drex1_0",
135962306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
136062306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
136162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX1_0, "aclk_asyncaxim_drex1_0",
136262306a36Sopenharmony_ci			"div_aclk_drex1", ENABLE_ACLK_MIF1,
136362306a36Sopenharmony_ci			16, CLK_IGNORE_UNUSED, 0),
136462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX0_3, "aclk_asyncaxis_drex0_3",
136562306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
136662306a36Sopenharmony_ci			15, CLK_IGNORE_UNUSED, 0),
136762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX0_3, "aclk_asyncaxim_drex0_3",
136862306a36Sopenharmony_ci			"div_aclk_drex0", ENABLE_ACLK_MIF1,
136962306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
137062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX0_1, "aclk_asyncaxis_drex0_1",
137162306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
137262306a36Sopenharmony_ci			13, CLK_IGNORE_UNUSED, 0),
137362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX0_1, "aclk_asyncaxim_drex0_1",
137462306a36Sopenharmony_ci			"div_aclk_drex0", ENABLE_ACLK_MIF1,
137562306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
137662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DREX0_0, "aclk_asyncaxis_drex0_0",
137762306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_ACLK_MIF1,
137862306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
137962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DREX0_0, "aclk_asyncaxim_drex0_0",
138062306a36Sopenharmony_ci			"div_aclk_drex0", ENABLE_ACLK_MIF1,
138162306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
138262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_MIF2P, "aclk_ahb2apb_mif2p", "div_aclk_mif_133",
138362306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 9, CLK_IGNORE_UNUSED, 0),
138462306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_MIF1P, "aclk_ahb2apb_mif1p", "div_aclk_mif_133",
138562306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 8, CLK_IGNORE_UNUSED, 0),
138662306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_MIF0P, "aclk_ahb2apb_mif0p", "div_aclk_mif_133",
138762306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 7, CLK_IGNORE_UNUSED, 0),
138862306a36Sopenharmony_ci	GATE(CLK_ACLK_IXIU_CCI, "aclk_ixiu_cci", "div_aclk_mif_400",
138962306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 6, CLK_IGNORE_UNUSED, 0),
139062306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_MIFSFRX, "aclk_xiu_mifsfrx", "div_aclk_mif_200",
139162306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 5, CLK_IGNORE_UNUSED, 0),
139262306a36Sopenharmony_ci	GATE(CLK_ACLK_MIFNP_133, "aclk_mifnp_133", "div_aclk_mif_133",
139362306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 4, CLK_IGNORE_UNUSED, 0),
139462306a36Sopenharmony_ci	GATE(CLK_ACLK_MIFNM_200, "aclk_mifnm_200", "div_aclk_mifnm_200",
139562306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 3, CLK_IGNORE_UNUSED, 0),
139662306a36Sopenharmony_ci	GATE(CLK_ACLK_MIFND_133, "aclk_mifnd_133", "div_aclk_mifnd_133",
139762306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 2, CLK_IGNORE_UNUSED, 0),
139862306a36Sopenharmony_ci	GATE(CLK_ACLK_MIFND_400, "aclk_mifnd_400", "div_aclk_mif_400",
139962306a36Sopenharmony_ci			ENABLE_ACLK_MIF1, 1, CLK_IGNORE_UNUSED, 0),
140062306a36Sopenharmony_ci	GATE(CLK_ACLK_CCI, "aclk_cci", "div_aclk_mif_400", ENABLE_ACLK_MIF1,
140162306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
140262306a36Sopenharmony_ci
140362306a36Sopenharmony_ci	/* ENABLE_ACLK_MIF2 */
140462306a36Sopenharmony_ci	GATE(CLK_ACLK_MIFND_266, "aclk_mifnd_266", "div_aclk_mif_266",
140562306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 20, CLK_IGNORE_UNUSED, 0),
140662306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX1S3, "aclk_ppmu_drex1s3", "div_aclk_drex1",
140762306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 17, CLK_IGNORE_UNUSED, 0),
140862306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX1S1, "aclk_ppmu_drex1s1", "div_aclk_drex1",
140962306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 16, CLK_IGNORE_UNUSED, 0),
141062306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX1S0, "aclk_ppmu_drex1s0", "div_aclk_drex1",
141162306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 15, CLK_IGNORE_UNUSED, 0),
141262306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX0S3, "aclk_ppmu_drex0s3", "div_aclk_drex0",
141362306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 14, CLK_IGNORE_UNUSED, 0),
141462306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX0S1, "aclk_ppmu_drex0s1", "div_aclk_drex0",
141562306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 13, CLK_IGNORE_UNUSED, 0),
141662306a36Sopenharmony_ci	GATE(CLK_ACLK_PPMU_DREX0S0, "aclk_ppmu_drex0s0", "div_aclk_drex0",
141762306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 12, CLK_IGNORE_UNUSED, 0),
141862306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIDS_CCI_MIFSFRX, "aclk_axids_cci_mifsfrx",
141962306a36Sopenharmony_ci			"div_aclk_mif_200", ENABLE_ACLK_MIF2, 7,
142062306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
142162306a36Sopenharmony_ci	GATE(CLK_ACLK_AXISYNCDNS_CCI, "aclk_axisyncdns_cci",
142262306a36Sopenharmony_ci			"div_aclk_mif_400", ENABLE_ACLK_MIF2,
142362306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
142462306a36Sopenharmony_ci	GATE(CLK_ACLK_AXISYNCDN_CCI, "aclk_axisyncdn_cci", "div_aclk_mif_400",
142562306a36Sopenharmony_ci			ENABLE_ACLK_MIF2, 4, CLK_IGNORE_UNUSED, 0),
142662306a36Sopenharmony_ci	GATE(CLK_ACLK_AXISYNCDN_NOC_D, "aclk_axisyncdn_noc_d",
142762306a36Sopenharmony_ci			"div_aclk_mif_200", ENABLE_ACLK_MIF2,
142862306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
142962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_MIF_CSSYS, "aclk_asyncapbs_mif_cssys",
143062306a36Sopenharmony_ci			"div_aclk_mifnd_133", ENABLE_ACLK_MIF2, 0, 0, 0),
143162306a36Sopenharmony_ci
143262306a36Sopenharmony_ci	/* ENABLE_ACLK_MIF3 */
143362306a36Sopenharmony_ci	GATE(CLK_ACLK_BUS2_400, "aclk_bus2_400", "div_aclk_bus2_400",
143462306a36Sopenharmony_ci			ENABLE_ACLK_MIF3, 4,
143562306a36Sopenharmony_ci			CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
143662306a36Sopenharmony_ci	GATE(CLK_ACLK_DISP_333, "aclk_disp_333", "div_aclk_disp_333",
143762306a36Sopenharmony_ci			ENABLE_ACLK_MIF3, 1,
143862306a36Sopenharmony_ci			CLK_IS_CRITICAL | CLK_SET_RATE_PARENT, 0),
143962306a36Sopenharmony_ci	GATE(CLK_ACLK_CPIF_200, "aclk_cpif_200", "div_aclk_cpif_200",
144062306a36Sopenharmony_ci			ENABLE_ACLK_MIF3, 0,
144162306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
144262306a36Sopenharmony_ci
144362306a36Sopenharmony_ci	/* ENABLE_PCLK_MIF */
144462306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX1S3, "pclk_ppmu_drex1s3", "div_aclk_drex1",
144562306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 29, CLK_IGNORE_UNUSED, 0),
144662306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX1S1, "pclk_ppmu_drex1s1", "div_aclk_drex1",
144762306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 28, CLK_IGNORE_UNUSED, 0),
144862306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX1S0, "pclk_ppmu_drex1s0", "div_aclk_drex1",
144962306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 27, CLK_IGNORE_UNUSED, 0),
145062306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX0S3, "pclk_ppmu_drex0s3", "div_aclk_drex0",
145162306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 26, CLK_IGNORE_UNUSED, 0),
145262306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX0S1, "pclk_ppmu_drex0s1", "div_aclk_drex0",
145362306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 25, CLK_IGNORE_UNUSED, 0),
145462306a36Sopenharmony_ci	GATE(CLK_PCLK_PPMU_DREX0S0, "pclk_ppmu_drex0s0", "div_aclk_drex0",
145562306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 24, CLK_IGNORE_UNUSED, 0),
145662306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_NOC_P_CCI, "pclk_asyncaxi_noc_p_cci",
145762306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 21,
145862306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
145962306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_CP1, "pclk_asyncaxi_cp1", "div_aclk_mif_133",
146062306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 19, 0, 0),
146162306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_CP0, "pclk_asyncaxi_cp0", "div_aclk_mif_133",
146262306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 18, 0, 0),
146362306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX1_3, "pclk_asyncaxi_drex1_3",
146462306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 17, 0, 0),
146562306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX1_1, "pclk_asyncaxi_drex1_1",
146662306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 16, 0, 0),
146762306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX1_0, "pclk_asyncaxi_drex1_0",
146862306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 15, 0, 0),
146962306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX0_3, "pclk_asyncaxi_drex0_3",
147062306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 14, 0, 0),
147162306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX0_1, "pclk_asyncaxi_drex0_1",
147262306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 13, 0, 0),
147362306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DREX0_0, "pclk_asyncaxi_drex0_0",
147462306a36Sopenharmony_ci			"div_aclk_mif_133", ENABLE_PCLK_MIF, 12, 0, 0),
147562306a36Sopenharmony_ci	GATE(CLK_PCLK_MIFSRVND_133, "pclk_mifsrvnd_133", "div_aclk_mif_133",
147662306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 11, 0, 0),
147762306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_MIF, "pclk_pmu_mif", "div_aclk_mif_133",
147862306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 10, CLK_IGNORE_UNUSED, 0),
147962306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_MIF, "pclk_sysreg_mif", "div_aclk_mif_133",
148062306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 9, CLK_IGNORE_UNUSED, 0),
148162306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_ALIVE, "pclk_gpio_alive", "div_aclk_mif_133",
148262306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 8, CLK_IGNORE_UNUSED, 0),
148362306a36Sopenharmony_ci	GATE(CLK_PCLK_ABB, "pclk_abb", "div_aclk_mif_133",
148462306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 7, 0, 0),
148562306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_APBIF, "pclk_pmu_apbif", "div_aclk_mif_133",
148662306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 6, CLK_IGNORE_UNUSED, 0),
148762306a36Sopenharmony_ci	GATE(CLK_PCLK_DDR_PHY1, "pclk_ddr_phy1", "div_aclk_mif_133",
148862306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 5, 0, 0),
148962306a36Sopenharmony_ci	GATE(CLK_PCLK_DREX1, "pclk_drex1", "div_aclk_mif_133",
149062306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 3, CLK_IGNORE_UNUSED, 0),
149162306a36Sopenharmony_ci	GATE(CLK_PCLK_DDR_PHY0, "pclk_ddr_phy0", "div_aclk_mif_133",
149262306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 2, 0, 0),
149362306a36Sopenharmony_ci	GATE(CLK_PCLK_DREX0, "pclk_drex0", "div_aclk_mif_133",
149462306a36Sopenharmony_ci			ENABLE_PCLK_MIF, 0, CLK_IGNORE_UNUSED, 0),
149562306a36Sopenharmony_ci
149662306a36Sopenharmony_ci	/* ENABLE_PCLK_MIF_SECURE_DREX0_TZ */
149762306a36Sopenharmony_ci	GATE(CLK_PCLK_DREX0_TZ, "pclk_drex0_tz", "div_aclk_mif_133",
149862306a36Sopenharmony_ci			ENABLE_PCLK_MIF_SECURE_DREX0_TZ, 0,
149962306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
150062306a36Sopenharmony_ci
150162306a36Sopenharmony_ci	/* ENABLE_PCLK_MIF_SECURE_DREX1_TZ */
150262306a36Sopenharmony_ci	GATE(CLK_PCLK_DREX1_TZ, "pclk_drex1_tz", "div_aclk_mif_133",
150362306a36Sopenharmony_ci			ENABLE_PCLK_MIF_SECURE_DREX1_TZ, 0,
150462306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
150562306a36Sopenharmony_ci
150662306a36Sopenharmony_ci	/* ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT */
150762306a36Sopenharmony_ci	GATE(CLK_PCLK_MONOTONIC_CNT, "pclk_monotonic_cnt", "div_aclk_mif_133",
150862306a36Sopenharmony_ci			ENABLE_PCLK_MIF_SECURE_MONOTONIC_CNT, 0, 0, 0),
150962306a36Sopenharmony_ci
151062306a36Sopenharmony_ci	/* ENABLE_PCLK_MIF_SECURE_RTC */
151162306a36Sopenharmony_ci	GATE(CLK_PCLK_RTC, "pclk_rtc", "div_aclk_mif_133",
151262306a36Sopenharmony_ci			ENABLE_PCLK_MIF_SECURE_RTC, 0, 0, 0),
151362306a36Sopenharmony_ci
151462306a36Sopenharmony_ci	/* ENABLE_SCLK_MIF */
151562306a36Sopenharmony_ci	GATE(CLK_SCLK_DSIM1_DISP, "sclk_dsim1_disp", "div_sclk_dsim1",
151662306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 15, CLK_IGNORE_UNUSED, 0),
151762306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_TV_VCLK_DISP, "sclk_decon_tv_vclk_disp",
151862306a36Sopenharmony_ci			"div_sclk_decon_tv_vclk", ENABLE_SCLK_MIF,
151962306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
152062306a36Sopenharmony_ci	GATE(CLK_SCLK_DSIM0_DISP, "sclk_dsim0_disp", "div_sclk_dsim0",
152162306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 9, CLK_IGNORE_UNUSED, 0),
152262306a36Sopenharmony_ci	GATE(CLK_SCLK_DSD_DISP, "sclk_dsd_disp", "div_sclk_dsd",
152362306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 8, CLK_IGNORE_UNUSED, 0),
152462306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_TV_ECLK_DISP, "sclk_decon_tv_eclk_disp",
152562306a36Sopenharmony_ci			"div_sclk_decon_tv_eclk", ENABLE_SCLK_MIF,
152662306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
152762306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_VCLK_DISP, "sclk_decon_vclk_disp",
152862306a36Sopenharmony_ci			"div_sclk_decon_vclk", ENABLE_SCLK_MIF,
152962306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
153062306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_ECLK_DISP, "sclk_decon_eclk_disp",
153162306a36Sopenharmony_ci			"div_sclk_decon_eclk", ENABLE_SCLK_MIF,
153262306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
153362306a36Sopenharmony_ci	GATE(CLK_SCLK_HPM_MIF, "sclk_hpm_mif", "div_sclk_hpm_mif",
153462306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 4,
153562306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
153662306a36Sopenharmony_ci	GATE(CLK_SCLK_MFC_PLL, "sclk_mfc_pll", "mout_mfc_pll_div2",
153762306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 3, CLK_IGNORE_UNUSED, 0),
153862306a36Sopenharmony_ci	GATE(CLK_SCLK_BUS_PLL, "sclk_bus_pll", "mout_bus_pll_div2",
153962306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 2, CLK_IGNORE_UNUSED, 0),
154062306a36Sopenharmony_ci	GATE(CLK_SCLK_BUS_PLL_APOLLO, "sclk_bus_pll_apollo", "sclk_bus_pll",
154162306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 1, CLK_IGNORE_UNUSED, 0),
154262306a36Sopenharmony_ci	GATE(CLK_SCLK_BUS_PLL_ATLAS, "sclk_bus_pll_atlas", "sclk_bus_pll",
154362306a36Sopenharmony_ci			ENABLE_SCLK_MIF, 0, CLK_IGNORE_UNUSED, 0),
154462306a36Sopenharmony_ci};
154562306a36Sopenharmony_ci
154662306a36Sopenharmony_cistatic const struct samsung_cmu_info mif_cmu_info __initconst = {
154762306a36Sopenharmony_ci	.pll_clks		= mif_pll_clks,
154862306a36Sopenharmony_ci	.nr_pll_clks		= ARRAY_SIZE(mif_pll_clks),
154962306a36Sopenharmony_ci	.mux_clks		= mif_mux_clks,
155062306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(mif_mux_clks),
155162306a36Sopenharmony_ci	.div_clks		= mif_div_clks,
155262306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(mif_div_clks),
155362306a36Sopenharmony_ci	.gate_clks		= mif_gate_clks,
155462306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(mif_gate_clks),
155562306a36Sopenharmony_ci	.fixed_factor_clks	= mif_fixed_factor_clks,
155662306a36Sopenharmony_ci	.nr_fixed_factor_clks	= ARRAY_SIZE(mif_fixed_factor_clks),
155762306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_MIF,
155862306a36Sopenharmony_ci	.clk_regs		= mif_clk_regs,
155962306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(mif_clk_regs),
156062306a36Sopenharmony_ci};
156162306a36Sopenharmony_ci
156262306a36Sopenharmony_cistatic void __init exynos5433_cmu_mif_init(struct device_node *np)
156362306a36Sopenharmony_ci{
156462306a36Sopenharmony_ci	samsung_cmu_register_one(np, &mif_cmu_info);
156562306a36Sopenharmony_ci}
156662306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_mif, "samsung,exynos5433-cmu-mif",
156762306a36Sopenharmony_ci		exynos5433_cmu_mif_init);
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci/*
157062306a36Sopenharmony_ci * Register offset definitions for CMU_PERIC
157162306a36Sopenharmony_ci */
157262306a36Sopenharmony_ci#define DIV_PERIC			0x0600
157362306a36Sopenharmony_ci#define DIV_STAT_PERIC			0x0700
157462306a36Sopenharmony_ci#define ENABLE_ACLK_PERIC		0x0800
157562306a36Sopenharmony_ci#define ENABLE_PCLK_PERIC0		0x0900
157662306a36Sopenharmony_ci#define ENABLE_PCLK_PERIC1		0x0904
157762306a36Sopenharmony_ci#define ENABLE_SCLK_PERIC		0x0A00
157862306a36Sopenharmony_ci#define ENABLE_IP_PERIC0		0x0B00
157962306a36Sopenharmony_ci#define ENABLE_IP_PERIC1		0x0B04
158062306a36Sopenharmony_ci#define ENABLE_IP_PERIC2		0x0B08
158162306a36Sopenharmony_ci
158262306a36Sopenharmony_cistatic const unsigned long peric_clk_regs[] __initconst = {
158362306a36Sopenharmony_ci	DIV_PERIC,
158462306a36Sopenharmony_ci	ENABLE_ACLK_PERIC,
158562306a36Sopenharmony_ci	ENABLE_PCLK_PERIC0,
158662306a36Sopenharmony_ci	ENABLE_PCLK_PERIC1,
158762306a36Sopenharmony_ci	ENABLE_SCLK_PERIC,
158862306a36Sopenharmony_ci	ENABLE_IP_PERIC0,
158962306a36Sopenharmony_ci	ENABLE_IP_PERIC1,
159062306a36Sopenharmony_ci	ENABLE_IP_PERIC2,
159162306a36Sopenharmony_ci};
159262306a36Sopenharmony_ci
159362306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump peric_suspend_regs[] = {
159462306a36Sopenharmony_ci	/* pclk: sci, pmu, sysreg, gpio_{finger, ese, touch, nfc}, uart2-0 */
159562306a36Sopenharmony_ci	{ ENABLE_PCLK_PERIC0, 0xe00ff000 },
159662306a36Sopenharmony_ci	/* sclk: uart2-0 */
159762306a36Sopenharmony_ci	{ ENABLE_SCLK_PERIC, 0x7 },
159862306a36Sopenharmony_ci};
159962306a36Sopenharmony_ci
160062306a36Sopenharmony_cistatic const struct samsung_div_clock peric_div_clks[] __initconst = {
160162306a36Sopenharmony_ci	/* DIV_PERIC */
160262306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SCI, "div_sclk_sci", "oscclk", DIV_PERIC, 4, 4),
160362306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_SC_IN, "div_sclk_sc_in", "oscclk", DIV_PERIC, 0, 4),
160462306a36Sopenharmony_ci};
160562306a36Sopenharmony_ci
160662306a36Sopenharmony_cistatic const struct samsung_gate_clock peric_gate_clks[] __initconst = {
160762306a36Sopenharmony_ci	/* ENABLE_ACLK_PERIC */
160862306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_PERIC2P, "aclk_ahb2apb_peric2p", "aclk_peric_66",
160962306a36Sopenharmony_ci			ENABLE_ACLK_PERIC, 3, CLK_IGNORE_UNUSED, 0),
161062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_PERIC1P, "aclk_ahb2apb_peric1p", "aclk_peric_66",
161162306a36Sopenharmony_ci			ENABLE_ACLK_PERIC, 2, CLK_IGNORE_UNUSED, 0),
161262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_PERIC0P, "aclk_ahb2apb_peric0p", "aclk_peric_66",
161362306a36Sopenharmony_ci			ENABLE_ACLK_PERIC, 1, CLK_IGNORE_UNUSED, 0),
161462306a36Sopenharmony_ci	GATE(CLK_ACLK_PERICNP_66, "aclk_pericnp_66", "aclk_peric_66",
161562306a36Sopenharmony_ci			ENABLE_ACLK_PERIC, 0, CLK_IGNORE_UNUSED, 0),
161662306a36Sopenharmony_ci
161762306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIC0 */
161862306a36Sopenharmony_ci	GATE(CLK_PCLK_SCI, "pclk_sci", "aclk_peric_66", ENABLE_PCLK_PERIC0,
161962306a36Sopenharmony_ci			31, CLK_SET_RATE_PARENT, 0),
162062306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_FINGER, "pclk_gpio_finger", "aclk_peric_66",
162162306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 30, CLK_IGNORE_UNUSED, 0),
162262306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_ESE, "pclk_gpio_ese", "aclk_peric_66",
162362306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 29, CLK_IGNORE_UNUSED, 0),
162462306a36Sopenharmony_ci	GATE(CLK_PCLK_PWM, "pclk_pwm", "aclk_peric_66", ENABLE_PCLK_PERIC0,
162562306a36Sopenharmony_ci			28, CLK_SET_RATE_PARENT, 0),
162662306a36Sopenharmony_ci	GATE(CLK_PCLK_SPDIF, "pclk_spdif", "aclk_peric_66", ENABLE_PCLK_PERIC0,
162762306a36Sopenharmony_ci			26, CLK_SET_RATE_PARENT, 0),
162862306a36Sopenharmony_ci	GATE(CLK_PCLK_PCM1, "pclk_pcm1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
162962306a36Sopenharmony_ci			25, CLK_SET_RATE_PARENT, 0),
163062306a36Sopenharmony_ci	GATE(CLK_PCLK_I2S1, "pclk_i2s", "aclk_peric_66", ENABLE_PCLK_PERIC0,
163162306a36Sopenharmony_ci			24, CLK_SET_RATE_PARENT, 0),
163262306a36Sopenharmony_ci	GATE(CLK_PCLK_SPI2, "pclk_spi2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
163362306a36Sopenharmony_ci			23, CLK_SET_RATE_PARENT, 0),
163462306a36Sopenharmony_ci	GATE(CLK_PCLK_SPI1, "pclk_spi1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
163562306a36Sopenharmony_ci			22, CLK_SET_RATE_PARENT, 0),
163662306a36Sopenharmony_ci	GATE(CLK_PCLK_SPI0, "pclk_spi0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
163762306a36Sopenharmony_ci			21, CLK_SET_RATE_PARENT, 0),
163862306a36Sopenharmony_ci	GATE(CLK_PCLK_ADCIF, "pclk_adcif", "aclk_peric_66", ENABLE_PCLK_PERIC0,
163962306a36Sopenharmony_ci			20, CLK_SET_RATE_PARENT, 0),
164062306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_TOUCH, "pclk_gpio_touch", "aclk_peric_66",
164162306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 19, CLK_IGNORE_UNUSED, 0),
164262306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_NFC, "pclk_gpio_nfc", "aclk_peric_66",
164362306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 18, CLK_IGNORE_UNUSED, 0),
164462306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_PERIC, "pclk_gpio_peric", "aclk_peric_66",
164562306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 17, CLK_IGNORE_UNUSED, 0),
164662306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_PERIC, "pclk_pmu_peric", "aclk_peric_66",
164762306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 16, CLK_SET_RATE_PARENT, 0),
164862306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_PERIC, "pclk_sysreg_peric", "aclk_peric_66",
164962306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 15,
165062306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
165162306a36Sopenharmony_ci	GATE(CLK_PCLK_UART2, "pclk_uart2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
165262306a36Sopenharmony_ci			14, CLK_SET_RATE_PARENT, 0),
165362306a36Sopenharmony_ci	GATE(CLK_PCLK_UART1, "pclk_uart1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
165462306a36Sopenharmony_ci			13, CLK_SET_RATE_PARENT, 0),
165562306a36Sopenharmony_ci	GATE(CLK_PCLK_UART0, "pclk_uart0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
165662306a36Sopenharmony_ci			12, CLK_SET_RATE_PARENT, 0),
165762306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C3, "pclk_hsi2c3", "aclk_peric_66",
165862306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 11, CLK_SET_RATE_PARENT, 0),
165962306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C2, "pclk_hsi2c2", "aclk_peric_66",
166062306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 10, CLK_SET_RATE_PARENT, 0),
166162306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C1, "pclk_hsi2c1", "aclk_peric_66",
166262306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 9, CLK_SET_RATE_PARENT, 0),
166362306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C0, "pclk_hsi2c0", "aclk_peric_66",
166462306a36Sopenharmony_ci			ENABLE_PCLK_PERIC0, 8, CLK_SET_RATE_PARENT, 0),
166562306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C7, "pclk_i2c7", "aclk_peric_66", ENABLE_PCLK_PERIC0,
166662306a36Sopenharmony_ci			7, CLK_SET_RATE_PARENT, 0),
166762306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C6, "pclk_i2c6", "aclk_peric_66", ENABLE_PCLK_PERIC0,
166862306a36Sopenharmony_ci			6, CLK_SET_RATE_PARENT, 0),
166962306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C5, "pclk_i2c5", "aclk_peric_66", ENABLE_PCLK_PERIC0,
167062306a36Sopenharmony_ci			5, CLK_SET_RATE_PARENT, 0),
167162306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C4, "pclk_i2c4", "aclk_peric_66", ENABLE_PCLK_PERIC0,
167262306a36Sopenharmony_ci			4, CLK_SET_RATE_PARENT, 0),
167362306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C3, "pclk_i2c3", "aclk_peric_66", ENABLE_PCLK_PERIC0,
167462306a36Sopenharmony_ci			3, CLK_SET_RATE_PARENT, 0),
167562306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C2, "pclk_i2c2", "aclk_peric_66", ENABLE_PCLK_PERIC0,
167662306a36Sopenharmony_ci			2, CLK_SET_RATE_PARENT, 0),
167762306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C1, "pclk_i2c1", "aclk_peric_66", ENABLE_PCLK_PERIC0,
167862306a36Sopenharmony_ci			1, CLK_SET_RATE_PARENT, 0),
167962306a36Sopenharmony_ci	GATE(CLK_PCLK_I2C0, "pclk_i2c0", "aclk_peric_66", ENABLE_PCLK_PERIC0,
168062306a36Sopenharmony_ci			0, CLK_SET_RATE_PARENT, 0),
168162306a36Sopenharmony_ci
168262306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIC1 */
168362306a36Sopenharmony_ci	GATE(CLK_PCLK_SPI4, "pclk_spi4", "aclk_peric_66", ENABLE_PCLK_PERIC1,
168462306a36Sopenharmony_ci			9, CLK_SET_RATE_PARENT, 0),
168562306a36Sopenharmony_ci	GATE(CLK_PCLK_SPI3, "pclk_spi3", "aclk_peric_66", ENABLE_PCLK_PERIC1,
168662306a36Sopenharmony_ci			8, CLK_SET_RATE_PARENT, 0),
168762306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C11, "pclk_hsi2c11", "aclk_peric_66",
168862306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 7, CLK_SET_RATE_PARENT, 0),
168962306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C10, "pclk_hsi2c10", "aclk_peric_66",
169062306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 6, CLK_SET_RATE_PARENT, 0),
169162306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C9, "pclk_hsi2c9", "aclk_peric_66",
169262306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 5, CLK_SET_RATE_PARENT, 0),
169362306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C8, "pclk_hsi2c8", "aclk_peric_66",
169462306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 4, CLK_SET_RATE_PARENT, 0),
169562306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C7, "pclk_hsi2c7", "aclk_peric_66",
169662306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 3, CLK_SET_RATE_PARENT, 0),
169762306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C6, "pclk_hsi2c6", "aclk_peric_66",
169862306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 2, CLK_SET_RATE_PARENT, 0),
169962306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C5, "pclk_hsi2c5", "aclk_peric_66",
170062306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 1, CLK_SET_RATE_PARENT, 0),
170162306a36Sopenharmony_ci	GATE(CLK_PCLK_HSI2C4, "pclk_hsi2c4", "aclk_peric_66",
170262306a36Sopenharmony_ci			ENABLE_PCLK_PERIC1, 0, CLK_SET_RATE_PARENT, 0),
170362306a36Sopenharmony_ci
170462306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIC */
170562306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_SPI4, "sclk_ioclk_spi4", "ioclk_spi4_clk_in",
170662306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 21, CLK_SET_RATE_PARENT, 0),
170762306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_SPI3, "sclk_ioclk_spi3", "ioclk_spi3_clk_in",
170862306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 20, CLK_SET_RATE_PARENT, 0),
170962306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI4, "sclk_spi4", "sclk_spi4_peric", ENABLE_SCLK_PERIC,
171062306a36Sopenharmony_ci			19, CLK_SET_RATE_PARENT, 0),
171162306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI3, "sclk_spi3", "sclk_spi3_peric", ENABLE_SCLK_PERIC,
171262306a36Sopenharmony_ci			18, CLK_SET_RATE_PARENT, 0),
171362306a36Sopenharmony_ci	GATE(CLK_SCLK_SCI, "sclk_sci", "div_sclk_sci", ENABLE_SCLK_PERIC,
171462306a36Sopenharmony_ci			17, 0, 0),
171562306a36Sopenharmony_ci	GATE(CLK_SCLK_SC_IN, "sclk_sc_in", "div_sclk_sc_in", ENABLE_SCLK_PERIC,
171662306a36Sopenharmony_ci			16, 0, 0),
171762306a36Sopenharmony_ci	GATE(CLK_SCLK_PWM, "sclk_pwm", "oscclk", ENABLE_SCLK_PERIC, 15, 0, 0),
171862306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_SPI2, "sclk_ioclk_spi2", "ioclk_spi2_clk_in",
171962306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 13, CLK_SET_RATE_PARENT, 0),
172062306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_SPI1, "sclk_ioclk_spi1", "ioclk_spi1_clk_in",
172162306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 12, CLK_SET_RATE_PARENT, 0),
172262306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_SPI0, "sclk_ioclk_spi0", "ioclk_spi0_clk_in",
172362306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 11, CLK_SET_RATE_PARENT, 0),
172462306a36Sopenharmony_ci	GATE(CLK_SCLK_IOCLK_I2S1_BCLK, "sclk_ioclk_i2s1_bclk",
172562306a36Sopenharmony_ci			"ioclk_i2s1_bclk_in", ENABLE_SCLK_PERIC, 10,
172662306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
172762306a36Sopenharmony_ci	GATE(CLK_SCLK_SPDIF, "sclk_spdif", "sclk_spdif_peric",
172862306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 8, CLK_SET_RATE_PARENT, 0),
172962306a36Sopenharmony_ci	GATE(CLK_SCLK_PCM1, "sclk_pcm1", "sclk_pcm1_peric",
173062306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 7, CLK_SET_RATE_PARENT, 0),
173162306a36Sopenharmony_ci	GATE(CLK_SCLK_I2S1, "sclk_i2s1", "sclk_i2s1_peric",
173262306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 6,
173362306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
173462306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI2, "sclk_spi2", "sclk_spi2_peric", ENABLE_SCLK_PERIC,
173562306a36Sopenharmony_ci			5, CLK_SET_RATE_PARENT, 0),
173662306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI1, "sclk_spi1", "sclk_spi1_peric", ENABLE_SCLK_PERIC,
173762306a36Sopenharmony_ci			4, CLK_SET_RATE_PARENT, 0),
173862306a36Sopenharmony_ci	GATE(CLK_SCLK_SPI0, "sclk_spi0", "sclk_spi0_peric", ENABLE_SCLK_PERIC,
173962306a36Sopenharmony_ci			3, CLK_SET_RATE_PARENT, 0),
174062306a36Sopenharmony_ci	GATE(CLK_SCLK_UART2, "sclk_uart2", "sclk_uart2_peric",
174162306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 2,
174262306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
174362306a36Sopenharmony_ci	GATE(CLK_SCLK_UART1, "sclk_uart1", "sclk_uart1_peric",
174462306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 1,
174562306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
174662306a36Sopenharmony_ci	GATE(CLK_SCLK_UART0, "sclk_uart0", "sclk_uart0_peric",
174762306a36Sopenharmony_ci			ENABLE_SCLK_PERIC, 0,
174862306a36Sopenharmony_ci			CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED, 0),
174962306a36Sopenharmony_ci};
175062306a36Sopenharmony_ci
175162306a36Sopenharmony_cistatic const struct samsung_cmu_info peric_cmu_info __initconst = {
175262306a36Sopenharmony_ci	.div_clks		= peric_div_clks,
175362306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(peric_div_clks),
175462306a36Sopenharmony_ci	.gate_clks		= peric_gate_clks,
175562306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(peric_gate_clks),
175662306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_PERIC,
175762306a36Sopenharmony_ci	.clk_regs		= peric_clk_regs,
175862306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(peric_clk_regs),
175962306a36Sopenharmony_ci	.suspend_regs		= peric_suspend_regs,
176062306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(peric_suspend_regs),
176162306a36Sopenharmony_ci};
176262306a36Sopenharmony_ci
176362306a36Sopenharmony_cistatic void __init exynos5433_cmu_peric_init(struct device_node *np)
176462306a36Sopenharmony_ci{
176562306a36Sopenharmony_ci	samsung_cmu_register_one(np, &peric_cmu_info);
176662306a36Sopenharmony_ci}
176762306a36Sopenharmony_ci
176862306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_peric, "samsung,exynos5433-cmu-peric",
176962306a36Sopenharmony_ci		exynos5433_cmu_peric_init);
177062306a36Sopenharmony_ci
177162306a36Sopenharmony_ci/*
177262306a36Sopenharmony_ci * Register offset definitions for CMU_PERIS
177362306a36Sopenharmony_ci */
177462306a36Sopenharmony_ci#define ENABLE_ACLK_PERIS				0x0800
177562306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS				0x0900
177662306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_TZPC			0x0904
177762306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF		0x0908
177862306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF		0x090c
177962306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_TOPRTC			0x0910
178062306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF	0x0914
178162306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF	0x0918
178262306a36Sopenharmony_ci#define ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF		0x091c
178362306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS				0x0a00
178462306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_SECKEY			0x0a04
178562306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_CHIPID			0x0a08
178662306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_TOPRTC			0x0a0c
178762306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE		0x0a10
178862306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT		0x0a14
178962306a36Sopenharmony_ci#define ENABLE_SCLK_PERIS_SECURE_OTP_CON		0x0a18
179062306a36Sopenharmony_ci#define ENABLE_IP_PERIS0				0x0b00
179162306a36Sopenharmony_ci#define ENABLE_IP_PERIS1				0x0b04
179262306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_TZPC			0x0b08
179362306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_SECKEY			0x0b0c
179462306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_CHIPID			0x0b10
179562306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_TOPRTC			0x0b14
179662306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_CUSTOM_EFUSE		0x0b18
179762306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_ANTIBRK_CNT		0x0b1c
179862306a36Sopenharmony_ci#define ENABLE_IP_PERIS_SECURE_OTP_CON			0x0b20
179962306a36Sopenharmony_ci
180062306a36Sopenharmony_cistatic const unsigned long peris_clk_regs[] __initconst = {
180162306a36Sopenharmony_ci	ENABLE_ACLK_PERIS,
180262306a36Sopenharmony_ci	ENABLE_PCLK_PERIS,
180362306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_TZPC,
180462306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF,
180562306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF,
180662306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_TOPRTC,
180762306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF,
180862306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF,
180962306a36Sopenharmony_ci	ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF,
181062306a36Sopenharmony_ci	ENABLE_SCLK_PERIS,
181162306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_SECKEY,
181262306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_CHIPID,
181362306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_TOPRTC,
181462306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE,
181562306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT,
181662306a36Sopenharmony_ci	ENABLE_SCLK_PERIS_SECURE_OTP_CON,
181762306a36Sopenharmony_ci	ENABLE_IP_PERIS0,
181862306a36Sopenharmony_ci	ENABLE_IP_PERIS1,
181962306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_TZPC,
182062306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_SECKEY,
182162306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_CHIPID,
182262306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_TOPRTC,
182362306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_CUSTOM_EFUSE,
182462306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_ANTIBRK_CNT,
182562306a36Sopenharmony_ci	ENABLE_IP_PERIS_SECURE_OTP_CON,
182662306a36Sopenharmony_ci};
182762306a36Sopenharmony_ci
182862306a36Sopenharmony_cistatic const struct samsung_gate_clock peris_gate_clks[] __initconst = {
182962306a36Sopenharmony_ci	/* ENABLE_ACLK_PERIS */
183062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_PERIS1P, "aclk_ahb2apb_peris1p", "aclk_peris_66",
183162306a36Sopenharmony_ci			ENABLE_ACLK_PERIS, 2, CLK_IGNORE_UNUSED, 0),
183262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_PERIS0P, "aclk_ahb2apb_peris0p", "aclk_peris_66",
183362306a36Sopenharmony_ci			ENABLE_ACLK_PERIS, 1, CLK_IGNORE_UNUSED, 0),
183462306a36Sopenharmony_ci	GATE(CLK_ACLK_PERISNP_66, "aclk_perisnp_66", "aclk_peris_66",
183562306a36Sopenharmony_ci			ENABLE_ACLK_PERIS, 0, CLK_IGNORE_UNUSED, 0),
183662306a36Sopenharmony_ci
183762306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS */
183862306a36Sopenharmony_ci	GATE(CLK_PCLK_HPM_APBIF, "pclk_hpm_apbif", "aclk_peris_66",
183962306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 30, CLK_IGNORE_UNUSED, 0),
184062306a36Sopenharmony_ci	GATE(CLK_PCLK_TMU1_APBIF, "pclk_tmu1_apbif", "aclk_peris_66",
184162306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 24, CLK_IGNORE_UNUSED, 0),
184262306a36Sopenharmony_ci	GATE(CLK_PCLK_TMU0_APBIF, "pclk_tmu0_apbif", "aclk_peris_66",
184362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 23, CLK_IGNORE_UNUSED, 0),
184462306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_PERIS, "pclk_pmu_peris", "aclk_peris_66",
184562306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 22, CLK_IGNORE_UNUSED, 0),
184662306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_PERIS, "pclk_sysreg_peris", "aclk_peris_66",
184762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 21, CLK_IGNORE_UNUSED, 0),
184862306a36Sopenharmony_ci	GATE(CLK_PCLK_CMU_TOP_APBIF, "pclk_cmu_top_apbif", "aclk_peris_66",
184962306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 20, CLK_IGNORE_UNUSED, 0),
185062306a36Sopenharmony_ci	GATE(CLK_PCLK_WDT_APOLLO, "pclk_wdt_apollo", "aclk_peris_66",
185162306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 17, CLK_IGNORE_UNUSED, 0),
185262306a36Sopenharmony_ci	GATE(CLK_PCLK_WDT_ATLAS, "pclk_wdt_atlas", "aclk_peris_66",
185362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 16, CLK_IGNORE_UNUSED, 0),
185462306a36Sopenharmony_ci	GATE(CLK_PCLK_MCT, "pclk_mct", "aclk_peris_66",
185562306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 15, CLK_IGNORE_UNUSED, 0),
185662306a36Sopenharmony_ci	GATE(CLK_PCLK_HDMI_CEC, "pclk_hdmi_cec", "aclk_peris_66",
185762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS, 14, CLK_IGNORE_UNUSED, 0),
185862306a36Sopenharmony_ci
185962306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_TZPC */
186062306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC12, "pclk_tzpc12", "aclk_peris_66",
186162306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 12, CLK_IGNORE_UNUSED, 0),
186262306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC11, "pclk_tzpc11", "aclk_peris_66",
186362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 11, CLK_IGNORE_UNUSED, 0),
186462306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC10, "pclk_tzpc10", "aclk_peris_66",
186562306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 10, CLK_IGNORE_UNUSED, 0),
186662306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC9, "pclk_tzpc9", "aclk_peris_66",
186762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 9, CLK_IGNORE_UNUSED, 0),
186862306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC8, "pclk_tzpc8", "aclk_peris_66",
186962306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 8, CLK_IGNORE_UNUSED, 0),
187062306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC7, "pclk_tzpc7", "aclk_peris_66",
187162306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 7, CLK_IGNORE_UNUSED, 0),
187262306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC6, "pclk_tzpc6", "aclk_peris_66",
187362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 6, CLK_IGNORE_UNUSED, 0),
187462306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC5, "pclk_tzpc5", "aclk_peris_66",
187562306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 5, CLK_IGNORE_UNUSED, 0),
187662306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC4, "pclk_tzpc4", "aclk_peris_66",
187762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 4, CLK_IGNORE_UNUSED, 0),
187862306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC3, "pclk_tzpc3", "aclk_peris_66",
187962306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 3, CLK_IGNORE_UNUSED, 0),
188062306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC2, "pclk_tzpc2", "aclk_peris_66",
188162306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 2, CLK_IGNORE_UNUSED, 0),
188262306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC1, "pclk_tzpc1", "aclk_peris_66",
188362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 1, CLK_IGNORE_UNUSED, 0),
188462306a36Sopenharmony_ci	GATE(CLK_PCLK_TZPC0, "pclk_tzpc0", "aclk_peris_66",
188562306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TZPC, 0, CLK_IGNORE_UNUSED, 0),
188662306a36Sopenharmony_ci
188762306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF */
188862306a36Sopenharmony_ci	GATE(CLK_PCLK_SECKEY_APBIF, "pclk_seckey_apbif", "aclk_peris_66",
188962306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_SECKEY_APBIF, 0, CLK_IGNORE_UNUSED, 0),
189062306a36Sopenharmony_ci
189162306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF */
189262306a36Sopenharmony_ci	GATE(CLK_PCLK_CHIPID_APBIF, "pclk_chipid_apbif", "aclk_peris_66",
189362306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_CHIPID_APBIF, 0, CLK_IGNORE_UNUSED, 0),
189462306a36Sopenharmony_ci
189562306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_TOPRTC */
189662306a36Sopenharmony_ci	GATE(CLK_PCLK_TOPRTC, "pclk_toprtc", "aclk_peris_66",
189762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_TOPRTC, 0, 0, 0),
189862306a36Sopenharmony_ci
189962306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF */
190062306a36Sopenharmony_ci	GATE(CLK_PCLK_CUSTOM_EFUSE_APBIF, "pclk_custom_efuse_apbif",
190162306a36Sopenharmony_ci			"aclk_peris_66",
190262306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_CUSTOM_EFUSE_APBIF, 0, 0, 0),
190362306a36Sopenharmony_ci
190462306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF */
190562306a36Sopenharmony_ci	GATE(CLK_PCLK_ANTIRBK_CNT_APBIF, "pclk_antirbk_cnt_apbif",
190662306a36Sopenharmony_ci			"aclk_peris_66",
190762306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_ANTIRBK_CNT_APBIF, 0, 0, 0),
190862306a36Sopenharmony_ci
190962306a36Sopenharmony_ci	/* ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF */
191062306a36Sopenharmony_ci	GATE(CLK_PCLK_OTP_CON_APBIF, "pclk_otp_con_apbif",
191162306a36Sopenharmony_ci			"aclk_peris_66",
191262306a36Sopenharmony_ci			ENABLE_PCLK_PERIS_SECURE_OTP_CON_APBIF, 0, 0, 0),
191362306a36Sopenharmony_ci
191462306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS */
191562306a36Sopenharmony_ci	GATE(CLK_SCLK_ASV_TB, "sclk_asv_tb", "oscclk_efuse_common",
191662306a36Sopenharmony_ci			ENABLE_SCLK_PERIS, 10, 0, 0),
191762306a36Sopenharmony_ci	GATE(CLK_SCLK_TMU1, "sclk_tmu1", "oscclk_efuse_common",
191862306a36Sopenharmony_ci			ENABLE_SCLK_PERIS, 4, 0, 0),
191962306a36Sopenharmony_ci	GATE(CLK_SCLK_TMU0, "sclk_tmu0", "oscclk_efuse_common",
192062306a36Sopenharmony_ci			ENABLE_SCLK_PERIS, 3, 0, 0),
192162306a36Sopenharmony_ci
192262306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_SECKEY */
192362306a36Sopenharmony_ci	GATE(CLK_SCLK_SECKEY, "sclk_seckey", "oscclk_efuse_common",
192462306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_SECKEY, 0, CLK_IGNORE_UNUSED, 0),
192562306a36Sopenharmony_ci
192662306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_CHIPID */
192762306a36Sopenharmony_ci	GATE(CLK_SCLK_CHIPID, "sclk_chipid", "oscclk_efuse_common",
192862306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_CHIPID, 0, CLK_IGNORE_UNUSED, 0),
192962306a36Sopenharmony_ci
193062306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_TOPRTC */
193162306a36Sopenharmony_ci	GATE(CLK_SCLK_TOPRTC, "sclk_toprtc", "oscclk_efuse_common",
193262306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_TOPRTC, 0, 0, 0),
193362306a36Sopenharmony_ci
193462306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE */
193562306a36Sopenharmony_ci	GATE(CLK_SCLK_CUSTOM_EFUSE, "sclk_custom_efuse", "oscclk_efuse_common",
193662306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_CUSTOM_EFUSE, 0, 0, 0),
193762306a36Sopenharmony_ci
193862306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT */
193962306a36Sopenharmony_ci	GATE(CLK_SCLK_ANTIRBK_CNT, "sclk_antirbk_cnt", "oscclk_efuse_common",
194062306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_ANTIRBK_CNT, 0, 0, 0),
194162306a36Sopenharmony_ci
194262306a36Sopenharmony_ci	/* ENABLE_SCLK_PERIS_SECURE_OTP_CON */
194362306a36Sopenharmony_ci	GATE(CLK_SCLK_OTP_CON, "sclk_otp_con", "oscclk_efuse_common",
194462306a36Sopenharmony_ci			ENABLE_SCLK_PERIS_SECURE_OTP_CON, 0, 0, 0),
194562306a36Sopenharmony_ci};
194662306a36Sopenharmony_ci
194762306a36Sopenharmony_cistatic const struct samsung_cmu_info peris_cmu_info __initconst = {
194862306a36Sopenharmony_ci	.gate_clks		= peris_gate_clks,
194962306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(peris_gate_clks),
195062306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_PERIS,
195162306a36Sopenharmony_ci	.clk_regs		= peris_clk_regs,
195262306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(peris_clk_regs),
195362306a36Sopenharmony_ci};
195462306a36Sopenharmony_ci
195562306a36Sopenharmony_cistatic void __init exynos5433_cmu_peris_init(struct device_node *np)
195662306a36Sopenharmony_ci{
195762306a36Sopenharmony_ci	samsung_cmu_register_one(np, &peris_cmu_info);
195862306a36Sopenharmony_ci}
195962306a36Sopenharmony_ci
196062306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_peris, "samsung,exynos5433-cmu-peris",
196162306a36Sopenharmony_ci		exynos5433_cmu_peris_init);
196262306a36Sopenharmony_ci
196362306a36Sopenharmony_ci/*
196462306a36Sopenharmony_ci * Register offset definitions for CMU_FSYS
196562306a36Sopenharmony_ci */
196662306a36Sopenharmony_ci#define MUX_SEL_FSYS0			0x0200
196762306a36Sopenharmony_ci#define MUX_SEL_FSYS1			0x0204
196862306a36Sopenharmony_ci#define MUX_SEL_FSYS2			0x0208
196962306a36Sopenharmony_ci#define MUX_SEL_FSYS3			0x020c
197062306a36Sopenharmony_ci#define MUX_SEL_FSYS4			0x0210
197162306a36Sopenharmony_ci#define MUX_ENABLE_FSYS0		0x0300
197262306a36Sopenharmony_ci#define MUX_ENABLE_FSYS1		0x0304
197362306a36Sopenharmony_ci#define MUX_ENABLE_FSYS2		0x0308
197462306a36Sopenharmony_ci#define MUX_ENABLE_FSYS3		0x030c
197562306a36Sopenharmony_ci#define MUX_ENABLE_FSYS4		0x0310
197662306a36Sopenharmony_ci#define MUX_STAT_FSYS0			0x0400
197762306a36Sopenharmony_ci#define MUX_STAT_FSYS1			0x0404
197862306a36Sopenharmony_ci#define MUX_STAT_FSYS2			0x0408
197962306a36Sopenharmony_ci#define MUX_STAT_FSYS3			0x040c
198062306a36Sopenharmony_ci#define MUX_STAT_FSYS4			0x0410
198162306a36Sopenharmony_ci#define MUX_IGNORE_FSYS2		0x0508
198262306a36Sopenharmony_ci#define MUX_IGNORE_FSYS3		0x050c
198362306a36Sopenharmony_ci#define ENABLE_ACLK_FSYS0		0x0800
198462306a36Sopenharmony_ci#define ENABLE_ACLK_FSYS1		0x0804
198562306a36Sopenharmony_ci#define ENABLE_PCLK_FSYS		0x0900
198662306a36Sopenharmony_ci#define ENABLE_SCLK_FSYS		0x0a00
198762306a36Sopenharmony_ci#define ENABLE_IP_FSYS0			0x0b00
198862306a36Sopenharmony_ci#define ENABLE_IP_FSYS1			0x0b04
198962306a36Sopenharmony_ci
199062306a36Sopenharmony_ci/* list of all parent clock list */
199162306a36Sopenharmony_ciPNAME(mout_sclk_ufs_mphy_user_p)	= { "oscclk", "sclk_ufs_mphy", };
199262306a36Sopenharmony_ciPNAME(mout_aclk_fsys_200_user_p)	= { "oscclk", "aclk_fsys_200", };
199362306a36Sopenharmony_ciPNAME(mout_sclk_pcie_100_user_p)	= { "oscclk", "sclk_pcie_100_fsys",};
199462306a36Sopenharmony_ciPNAME(mout_sclk_ufsunipro_user_p)	= { "oscclk", "sclk_ufsunipro_fsys",};
199562306a36Sopenharmony_ciPNAME(mout_sclk_mmc2_user_p)		= { "oscclk", "sclk_mmc2_fsys", };
199662306a36Sopenharmony_ciPNAME(mout_sclk_mmc1_user_p)		= { "oscclk", "sclk_mmc1_fsys", };
199762306a36Sopenharmony_ciPNAME(mout_sclk_mmc0_user_p)		= { "oscclk", "sclk_mmc0_fsys", };
199862306a36Sopenharmony_ciPNAME(mout_sclk_usbhost30_user_p)	= { "oscclk", "sclk_usbhost30_fsys",};
199962306a36Sopenharmony_ciPNAME(mout_sclk_usbdrd30_user_p)	= { "oscclk", "sclk_usbdrd30_fsys", };
200062306a36Sopenharmony_ci
200162306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost30_uhost30_pipe_pclk_user_p)
200262306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost30_uhost30_pipe_pclk_phy", };
200362306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost30_uhost30_phyclock_user_p)
200462306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost30_uhost30_phyclock_phy", };
200562306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phy_hsic1_p)
200662306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost20_phy_hsic1_phy", };
200762306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phy_clk48mohci_user_p)
200862306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost20_phy_clk48mohci_phy", };
200962306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phy_phyclock_user_p)
201062306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost20_phy_phyclock_phy", };
201162306a36Sopenharmony_ciPNAME(mout_phyclk_usbhost20_phy_freeclk_user_p)
201262306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbhost20_phy_freeclk_phy", };
201362306a36Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_udrd30_pipe_pclk_p)
201462306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbdrd30_udrd30_pipe_pclk_phy", };
201562306a36Sopenharmony_ciPNAME(mout_phyclk_usbdrd30_udrd30_phyclock_user_p)
201662306a36Sopenharmony_ci		= { "oscclk", "phyclk_usbdrd30_udrd30_phyclock_phy", };
201762306a36Sopenharmony_ciPNAME(mout_phyclk_ufs_rx1_symbol_user_p)
201862306a36Sopenharmony_ci		= { "oscclk", "phyclk_ufs_rx1_symbol_phy", };
201962306a36Sopenharmony_ciPNAME(mout_phyclk_ufs_rx0_symbol_user_p)
202062306a36Sopenharmony_ci		= { "oscclk", "phyclk_ufs_rx0_symbol_phy", };
202162306a36Sopenharmony_ciPNAME(mout_phyclk_ufs_tx1_symbol_user_p)
202262306a36Sopenharmony_ci		= { "oscclk", "phyclk_ufs_tx1_symbol_phy", };
202362306a36Sopenharmony_ciPNAME(mout_phyclk_ufs_tx0_symbol_user_p)
202462306a36Sopenharmony_ci		= { "oscclk", "phyclk_ufs_tx0_symbol_phy", };
202562306a36Sopenharmony_ciPNAME(mout_phyclk_lli_mphy_to_ufs_user_p)
202662306a36Sopenharmony_ci		= { "oscclk", "phyclk_lli_mphy_to_ufs_phy", };
202762306a36Sopenharmony_ciPNAME(mout_sclk_mphy_p)
202862306a36Sopenharmony_ci		= { "mout_sclk_ufs_mphy_user",
202962306a36Sopenharmony_ci			    "mout_phyclk_lli_mphy_to_ufs_user", };
203062306a36Sopenharmony_ci
203162306a36Sopenharmony_cistatic const unsigned long fsys_clk_regs[] __initconst = {
203262306a36Sopenharmony_ci	MUX_SEL_FSYS0,
203362306a36Sopenharmony_ci	MUX_SEL_FSYS1,
203462306a36Sopenharmony_ci	MUX_SEL_FSYS2,
203562306a36Sopenharmony_ci	MUX_SEL_FSYS3,
203662306a36Sopenharmony_ci	MUX_SEL_FSYS4,
203762306a36Sopenharmony_ci	MUX_ENABLE_FSYS0,
203862306a36Sopenharmony_ci	MUX_ENABLE_FSYS1,
203962306a36Sopenharmony_ci	MUX_ENABLE_FSYS2,
204062306a36Sopenharmony_ci	MUX_ENABLE_FSYS3,
204162306a36Sopenharmony_ci	MUX_ENABLE_FSYS4,
204262306a36Sopenharmony_ci	MUX_IGNORE_FSYS2,
204362306a36Sopenharmony_ci	MUX_IGNORE_FSYS3,
204462306a36Sopenharmony_ci	ENABLE_ACLK_FSYS0,
204562306a36Sopenharmony_ci	ENABLE_ACLK_FSYS1,
204662306a36Sopenharmony_ci	ENABLE_PCLK_FSYS,
204762306a36Sopenharmony_ci	ENABLE_SCLK_FSYS,
204862306a36Sopenharmony_ci	ENABLE_IP_FSYS0,
204962306a36Sopenharmony_ci	ENABLE_IP_FSYS1,
205062306a36Sopenharmony_ci};
205162306a36Sopenharmony_ci
205262306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump fsys_suspend_regs[] = {
205362306a36Sopenharmony_ci	{ MUX_SEL_FSYS0, 0 },
205462306a36Sopenharmony_ci	{ MUX_SEL_FSYS1, 0 },
205562306a36Sopenharmony_ci	{ MUX_SEL_FSYS2, 0 },
205662306a36Sopenharmony_ci	{ MUX_SEL_FSYS3, 0 },
205762306a36Sopenharmony_ci	{ MUX_SEL_FSYS4, 0 },
205862306a36Sopenharmony_ci};
205962306a36Sopenharmony_ci
206062306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock fsys_fixed_clks[] __initconst = {
206162306a36Sopenharmony_ci	/* PHY clocks from USBDRD30_PHY */
206262306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_PHY,
206362306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock_phy", NULL,
206462306a36Sopenharmony_ci			0, 60000000),
206562306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_PHY,
206662306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk_phy", NULL,
206762306a36Sopenharmony_ci			0, 125000000),
206862306a36Sopenharmony_ci	/* PHY clocks from USBHOST30_PHY */
206962306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_PHY,
207062306a36Sopenharmony_ci			"phyclk_usbhost30_uhost30_phyclock_phy", NULL,
207162306a36Sopenharmony_ci			0, 60000000),
207262306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_PHY,
207362306a36Sopenharmony_ci			"phyclk_usbhost30_uhost30_pipe_pclk_phy", NULL,
207462306a36Sopenharmony_ci			0, 125000000),
207562306a36Sopenharmony_ci	/* PHY clocks from USBHOST20_PHY */
207662306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST20_PHY_FREECLK_PHY,
207762306a36Sopenharmony_ci			"phyclk_usbhost20_phy_freeclk_phy", NULL, 0, 60000000),
207862306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST20_PHY_PHYCLOCK_PHY,
207962306a36Sopenharmony_ci			"phyclk_usbhost20_phy_phyclock_phy", NULL, 0, 60000000),
208062306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST20_PHY_CLK48MOHCI_PHY,
208162306a36Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci_phy", NULL,
208262306a36Sopenharmony_ci			0, 48000000),
208362306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_USBHOST20_PHY_HSIC1_PHY,
208462306a36Sopenharmony_ci			"phyclk_usbhost20_phy_hsic1_phy", NULL, 0,
208562306a36Sopenharmony_ci			60000000),
208662306a36Sopenharmony_ci	/* PHY clocks from UFS_PHY */
208762306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_UFS_TX0_SYMBOL_PHY, "phyclk_ufs_tx0_symbol_phy",
208862306a36Sopenharmony_ci			NULL, 0, 300000000),
208962306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_UFS_RX0_SYMBOL_PHY, "phyclk_ufs_rx0_symbol_phy",
209062306a36Sopenharmony_ci			NULL, 0, 300000000),
209162306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_UFS_TX1_SYMBOL_PHY, "phyclk_ufs_tx1_symbol_phy",
209262306a36Sopenharmony_ci			NULL, 0, 300000000),
209362306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_UFS_RX1_SYMBOL_PHY, "phyclk_ufs_rx1_symbol_phy",
209462306a36Sopenharmony_ci			NULL, 0, 300000000),
209562306a36Sopenharmony_ci	/* PHY clocks from LLI_PHY */
209662306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_LLI_MPHY_TO_UFS_PHY, "phyclk_lli_mphy_to_ufs_phy",
209762306a36Sopenharmony_ci			NULL, 0, 26000000),
209862306a36Sopenharmony_ci};
209962306a36Sopenharmony_ci
210062306a36Sopenharmony_cistatic const struct samsung_mux_clock fsys_mux_clks[] __initconst = {
210162306a36Sopenharmony_ci	/* MUX_SEL_FSYS0 */
210262306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UFS_MPHY_USER, "mout_sclk_ufs_mphy_user",
210362306a36Sopenharmony_ci			mout_sclk_ufs_mphy_user_p, MUX_SEL_FSYS0, 4, 1),
210462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_FSYS_200_USER, "mout_aclk_fsys_200_user",
210562306a36Sopenharmony_ci			mout_aclk_fsys_200_user_p, MUX_SEL_FSYS0, 0, 1),
210662306a36Sopenharmony_ci
210762306a36Sopenharmony_ci	/* MUX_SEL_FSYS1 */
210862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PCIE_100_USER, "mout_sclk_pcie_100_user",
210962306a36Sopenharmony_ci			mout_sclk_pcie_100_user_p, MUX_SEL_FSYS1, 28, 1),
211062306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_UFSUNIPRO_USER, "mout_sclk_ufsunipro_user",
211162306a36Sopenharmony_ci			mout_sclk_ufsunipro_user_p, MUX_SEL_FSYS1, 24, 1),
211262306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC2_USER, "mout_sclk_mmc2_user",
211362306a36Sopenharmony_ci			mout_sclk_mmc2_user_p, MUX_SEL_FSYS1, 20, 1),
211462306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC1_USER, "mout_sclk_mmc1_user",
211562306a36Sopenharmony_ci			mout_sclk_mmc1_user_p, MUX_SEL_FSYS1, 16, 1),
211662306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MMC0_USER, "mout_sclk_mmc0_user",
211762306a36Sopenharmony_ci			mout_sclk_mmc0_user_p, MUX_SEL_FSYS1, 12, 1),
211862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_USBHOST30_USER, "mout_sclk_usbhost30_user",
211962306a36Sopenharmony_ci			mout_sclk_usbhost30_user_p, MUX_SEL_FSYS1, 4, 1),
212062306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_USBDRD30_USER, "mout_sclk_usbdrd30_user",
212162306a36Sopenharmony_ci			mout_sclk_usbdrd30_user_p, MUX_SEL_FSYS1, 0, 1),
212262306a36Sopenharmony_ci
212362306a36Sopenharmony_ci	/* MUX_SEL_FSYS2 */
212462306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_USER,
212562306a36Sopenharmony_ci			"mout_phyclk_usbhost30_uhost30_pipe_pclk_user",
212662306a36Sopenharmony_ci			mout_phyclk_usbhost30_uhost30_pipe_pclk_user_p,
212762306a36Sopenharmony_ci			MUX_SEL_FSYS2, 28, 1),
212862306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_USER,
212962306a36Sopenharmony_ci			"mout_phyclk_usbhost30_uhost30_phyclock_user",
213062306a36Sopenharmony_ci			mout_phyclk_usbhost30_uhost30_phyclock_user_p,
213162306a36Sopenharmony_ci			MUX_SEL_FSYS2, 24, 1),
213262306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_HSIC1_USER,
213362306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_hsic1",
213462306a36Sopenharmony_ci			mout_phyclk_usbhost20_phy_hsic1_p,
213562306a36Sopenharmony_ci			MUX_SEL_FSYS2, 20, 1),
213662306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_CLK48MOHCI_USER,
213762306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_clk48mohci_user",
213862306a36Sopenharmony_ci			mout_phyclk_usbhost20_phy_clk48mohci_user_p,
213962306a36Sopenharmony_ci			MUX_SEL_FSYS2, 16, 1),
214062306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_PHYCLOCK_USER,
214162306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_phyclock_user",
214262306a36Sopenharmony_ci			mout_phyclk_usbhost20_phy_phyclock_user_p,
214362306a36Sopenharmony_ci			MUX_SEL_FSYS2, 12, 1),
214462306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBHOST20_PHY_PHY_FREECLK_USER,
214562306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_freeclk_user",
214662306a36Sopenharmony_ci			mout_phyclk_usbhost20_phy_freeclk_user_p,
214762306a36Sopenharmony_ci			MUX_SEL_FSYS2, 8, 1),
214862306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_USER,
214962306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_udrd30_pipe_pclk_user",
215062306a36Sopenharmony_ci			mout_phyclk_usbdrd30_udrd30_pipe_pclk_p,
215162306a36Sopenharmony_ci			MUX_SEL_FSYS2, 4, 1),
215262306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_USER,
215362306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_udrd30_phyclock_user",
215462306a36Sopenharmony_ci			mout_phyclk_usbdrd30_udrd30_phyclock_user_p,
215562306a36Sopenharmony_ci			MUX_SEL_FSYS2, 0, 1),
215662306a36Sopenharmony_ci
215762306a36Sopenharmony_ci	/* MUX_SEL_FSYS3 */
215862306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_UFS_RX1_SYMBOL_USER,
215962306a36Sopenharmony_ci			"mout_phyclk_ufs_rx1_symbol_user",
216062306a36Sopenharmony_ci			mout_phyclk_ufs_rx1_symbol_user_p,
216162306a36Sopenharmony_ci			MUX_SEL_FSYS3, 16, 1),
216262306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_UFS_RX0_SYMBOL_USER,
216362306a36Sopenharmony_ci			"mout_phyclk_ufs_rx0_symbol_user",
216462306a36Sopenharmony_ci			mout_phyclk_ufs_rx0_symbol_user_p,
216562306a36Sopenharmony_ci			MUX_SEL_FSYS3, 12, 1),
216662306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_UFS_TX1_SYMBOL_USER,
216762306a36Sopenharmony_ci			"mout_phyclk_ufs_tx1_symbol_user",
216862306a36Sopenharmony_ci			mout_phyclk_ufs_tx1_symbol_user_p,
216962306a36Sopenharmony_ci			MUX_SEL_FSYS3, 8, 1),
217062306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_UFS_TX0_SYMBOL_USER,
217162306a36Sopenharmony_ci			"mout_phyclk_ufs_tx0_symbol_user",
217262306a36Sopenharmony_ci			mout_phyclk_ufs_tx0_symbol_user_p,
217362306a36Sopenharmony_ci			MUX_SEL_FSYS3, 4, 1),
217462306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_LLI_MPHY_TO_UFS_USER,
217562306a36Sopenharmony_ci			"mout_phyclk_lli_mphy_to_ufs_user",
217662306a36Sopenharmony_ci			mout_phyclk_lli_mphy_to_ufs_user_p,
217762306a36Sopenharmony_ci			MUX_SEL_FSYS3, 0, 1),
217862306a36Sopenharmony_ci
217962306a36Sopenharmony_ci	/* MUX_SEL_FSYS4 */
218062306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_MPHY, "mout_sclk_mphy", mout_sclk_mphy_p,
218162306a36Sopenharmony_ci			MUX_SEL_FSYS4, 0, 1),
218262306a36Sopenharmony_ci};
218362306a36Sopenharmony_ci
218462306a36Sopenharmony_cistatic const struct samsung_gate_clock fsys_gate_clks[] __initconst = {
218562306a36Sopenharmony_ci	/* ENABLE_ACLK_FSYS0 */
218662306a36Sopenharmony_ci	GATE(CLK_ACLK_PCIE, "aclk_pcie", "mout_aclk_fsys_200_user",
218762306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 13, CLK_IGNORE_UNUSED, 0),
218862306a36Sopenharmony_ci	GATE(CLK_ACLK_PDMA1, "aclk_pdma1", "mout_aclk_fsys_200_user",
218962306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 11, CLK_IGNORE_UNUSED, 0),
219062306a36Sopenharmony_ci	GATE(CLK_ACLK_TSI, "aclk_tsi", "mout_aclk_fsys_200_user",
219162306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 10, CLK_IGNORE_UNUSED, 0),
219262306a36Sopenharmony_ci	GATE(CLK_ACLK_MMC2, "aclk_mmc2", "mout_aclk_fsys_200_user",
219362306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 8, CLK_IGNORE_UNUSED, 0),
219462306a36Sopenharmony_ci	GATE(CLK_ACLK_MMC1, "aclk_mmc1", "mout_aclk_fsys_200_user",
219562306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 7, CLK_IGNORE_UNUSED, 0),
219662306a36Sopenharmony_ci	GATE(CLK_ACLK_MMC0, "aclk_mmc0", "mout_aclk_fsys_200_user",
219762306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 6, CLK_IGNORE_UNUSED, 0),
219862306a36Sopenharmony_ci	GATE(CLK_ACLK_UFS, "aclk_ufs", "mout_aclk_fsys_200_user",
219962306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 5, CLK_IGNORE_UNUSED, 0),
220062306a36Sopenharmony_ci	GATE(CLK_ACLK_USBHOST20, "aclk_usbhost20", "mout_aclk_fsys_200_user",
220162306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 3, CLK_IGNORE_UNUSED, 0),
220262306a36Sopenharmony_ci	GATE(CLK_ACLK_USBHOST30, "aclk_usbhost30", "mout_aclk_fsys_200_user",
220362306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 2, CLK_IGNORE_UNUSED, 0),
220462306a36Sopenharmony_ci	GATE(CLK_ACLK_USBDRD30, "aclk_usbdrd30", "mout_aclk_fsys_200_user",
220562306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 1, CLK_IGNORE_UNUSED, 0),
220662306a36Sopenharmony_ci	GATE(CLK_ACLK_PDMA0, "aclk_pdma0", "mout_aclk_fsys_200_user",
220762306a36Sopenharmony_ci			ENABLE_ACLK_FSYS0, 0, CLK_IGNORE_UNUSED, 0),
220862306a36Sopenharmony_ci
220962306a36Sopenharmony_ci	/* ENABLE_ACLK_FSYS1 */
221062306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_FSYSPX, "aclk_xiu_fsyspx", "mout_aclk_fsys_200_user",
221162306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 27, CLK_IGNORE_UNUSED, 0),
221262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_USBLINKH1, "aclk_ahb_usblinkh1",
221362306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
221462306a36Sopenharmony_ci			26, CLK_IGNORE_UNUSED, 0),
221562306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_PDMA1, "aclk_smmu_pdma1", "mout_aclk_fsys_200_user",
221662306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 25, CLK_IGNORE_UNUSED, 0),
221762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_PCIE, "aclk_bts_pcie", "mout_aclk_fsys_200_user",
221862306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 24, CLK_IGNORE_UNUSED, 0),
221962306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_PDMA1, "aclk_axius_pdma1",
222062306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
222162306a36Sopenharmony_ci			22, CLK_IGNORE_UNUSED, 0),
222262306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_PDMA0, "aclk_smmu_pdma0", "mout_aclk_fsys_200_user",
222362306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 17, CLK_IGNORE_UNUSED, 0),
222462306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_UFS, "aclk_bts_ufs", "mout_aclk_fsys_200_user",
222562306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 14, CLK_IGNORE_UNUSED, 0),
222662306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_USBHOST30, "aclk_bts_usbhost30",
222762306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
222862306a36Sopenharmony_ci			13, 0, 0),
222962306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_USBDRD30, "aclk_bts_usbdrd30",
223062306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
223162306a36Sopenharmony_ci			12, 0, 0),
223262306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_PDMA0, "aclk_axius_pdma0",
223362306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
223462306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
223562306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_USBHS, "aclk_axius_usbhs",
223662306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
223762306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
223862306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_FSYSSX, "aclk_axius_fsyssx",
223962306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
224062306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
224162306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_FSYSP, "aclk_ahb2apb_fsysp",
224262306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
224362306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
224462306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2AXI_USBHS, "aclk_ahb2axi_usbhs",
224562306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
224662306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
224762306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_USBLINKH0, "aclk_ahb_usblinkh0",
224862306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_ACLK_FSYS1,
224962306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
225062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_USBHS, "aclk_ahb_usbhs", "mout_aclk_fsys_200_user",
225162306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 5, CLK_IGNORE_UNUSED, 0),
225262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_FSYSH, "aclk_ahb_fsysh", "mout_aclk_fsys_200_user",
225362306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 4, CLK_IGNORE_UNUSED, 0),
225462306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_FSYSX, "aclk_xiu_fsysx", "mout_aclk_fsys_200_user",
225562306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 3, CLK_IGNORE_UNUSED, 0),
225662306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_FSYSSX, "aclk_xiu_fsyssx", "mout_aclk_fsys_200_user",
225762306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 2, CLK_IGNORE_UNUSED, 0),
225862306a36Sopenharmony_ci	GATE(CLK_ACLK_FSYSNP_200, "aclk_fsysnp_200", "mout_aclk_fsys_200_user",
225962306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 1, CLK_IGNORE_UNUSED, 0),
226062306a36Sopenharmony_ci	GATE(CLK_ACLK_FSYSND_200, "aclk_fsysnd_200", "mout_aclk_fsys_200_user",
226162306a36Sopenharmony_ci			ENABLE_ACLK_FSYS1, 0, CLK_IGNORE_UNUSED, 0),
226262306a36Sopenharmony_ci
226362306a36Sopenharmony_ci	/* ENABLE_PCLK_FSYS */
226462306a36Sopenharmony_ci	GATE(CLK_PCLK_PCIE_CTRL, "pclk_pcie_ctrl", "mout_aclk_fsys_200_user",
226562306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 17, CLK_IGNORE_UNUSED, 0),
226662306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_PDMA1, "pclk_smmu_pdma1", "mout_aclk_fsys_200_user",
226762306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 16, CLK_IGNORE_UNUSED, 0),
226862306a36Sopenharmony_ci	GATE(CLK_PCLK_PCIE_PHY, "pclk_pcie_phy", "mout_aclk_fsys_200_user",
226962306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 14, CLK_IGNORE_UNUSED, 0),
227062306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_PCIE, "pclk_bts_pcie", "mout_aclk_fsys_200_user",
227162306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 13, CLK_IGNORE_UNUSED, 0),
227262306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_PDMA0, "pclk_smmu_pdma0", "mout_aclk_fsys_200_user",
227362306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 8, CLK_IGNORE_UNUSED, 0),
227462306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_UFS, "pclk_bts_ufs", "mout_aclk_fsys_200_user",
227562306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 5, 0, 0),
227662306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_USBHOST30, "pclk_bts_usbhost30",
227762306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS, 4, 0, 0),
227862306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_USBDRD30, "pclk_bts_usbdrd30",
227962306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS, 3, 0, 0),
228062306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_FSYS, "pclk_gpio_fsys", "mout_aclk_fsys_200_user",
228162306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 2, CLK_IGNORE_UNUSED, 0),
228262306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_FSYS, "pclk_pmu_fsys", "mout_aclk_fsys_200_user",
228362306a36Sopenharmony_ci			ENABLE_PCLK_FSYS, 1, CLK_IGNORE_UNUSED, 0),
228462306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_FSYS, "pclk_sysreg_fsys",
228562306a36Sopenharmony_ci			"mout_aclk_fsys_200_user", ENABLE_PCLK_FSYS,
228662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
228762306a36Sopenharmony_ci
228862306a36Sopenharmony_ci	/* ENABLE_SCLK_FSYS */
228962306a36Sopenharmony_ci	GATE(CLK_SCLK_PCIE_100, "sclk_pcie_100", "mout_sclk_pcie_100_user",
229062306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 21, 0, 0),
229162306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK,
229262306a36Sopenharmony_ci			"phyclk_usbhost30_uhost30_pipe_pclk",
229362306a36Sopenharmony_ci			"mout_phyclk_usbhost30_uhost30_pipe_pclk_user",
229462306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 18, 0, 0),
229562306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK,
229662306a36Sopenharmony_ci			"phyclk_usbhost30_uhost30_phyclock",
229762306a36Sopenharmony_ci			"mout_phyclk_usbhost30_uhost30_phyclock_user",
229862306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 17, 0, 0),
229962306a36Sopenharmony_ci	GATE(CLK_PHYCLK_UFS_RX1_SYMBOL, "phyclk_ufs_rx1_symbol",
230062306a36Sopenharmony_ci			"mout_phyclk_ufs_rx1_symbol_user", ENABLE_SCLK_FSYS,
230162306a36Sopenharmony_ci			16, 0, 0),
230262306a36Sopenharmony_ci	GATE(CLK_PHYCLK_UFS_RX0_SYMBOL, "phyclk_ufs_rx0_symbol",
230362306a36Sopenharmony_ci			"mout_phyclk_ufs_rx0_symbol_user", ENABLE_SCLK_FSYS,
230462306a36Sopenharmony_ci			15, 0, 0),
230562306a36Sopenharmony_ci	GATE(CLK_PHYCLK_UFS_TX1_SYMBOL, "phyclk_ufs_tx1_symbol",
230662306a36Sopenharmony_ci			"mout_phyclk_ufs_tx1_symbol_user", ENABLE_SCLK_FSYS,
230762306a36Sopenharmony_ci			14, 0, 0),
230862306a36Sopenharmony_ci	GATE(CLK_PHYCLK_UFS_TX0_SYMBOL, "phyclk_ufs_tx0_symbol",
230962306a36Sopenharmony_ci			"mout_phyclk_ufs_tx0_symbol_user", ENABLE_SCLK_FSYS,
231062306a36Sopenharmony_ci			13, 0, 0),
231162306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST20_PHY_HSIC1, "phyclk_usbhost20_phy_hsic1",
231262306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_hsic1", ENABLE_SCLK_FSYS,
231362306a36Sopenharmony_ci			12, 0, 0),
231462306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST20_PHY_CLK48MOHCI,
231562306a36Sopenharmony_ci			"phyclk_usbhost20_phy_clk48mohci",
231662306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_clk48mohci_user",
231762306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 11, 0, 0),
231862306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST20_PHY_PHYCLOCK,
231962306a36Sopenharmony_ci			"phyclk_usbhost20_phy_phyclock",
232062306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_phyclock_user",
232162306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 10, 0, 0),
232262306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBHOST20_PHY_FREECLK,
232362306a36Sopenharmony_ci			"phyclk_usbhost20_phy_freeclk",
232462306a36Sopenharmony_ci			"mout_phyclk_usbhost20_phy_freeclk_user",
232562306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 9, 0, 0),
232662306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK,
232762306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_pipe_pclk",
232862306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_udrd30_pipe_pclk_user",
232962306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 8, 0, 0),
233062306a36Sopenharmony_ci	GATE(CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK,
233162306a36Sopenharmony_ci			"phyclk_usbdrd30_udrd30_phyclock",
233262306a36Sopenharmony_ci			"mout_phyclk_usbdrd30_udrd30_phyclock_user",
233362306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 7, 0, 0),
233462306a36Sopenharmony_ci	GATE(CLK_SCLK_MPHY, "sclk_mphy", "mout_sclk_mphy",
233562306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 6, 0, 0),
233662306a36Sopenharmony_ci	GATE(CLK_SCLK_UFSUNIPRO, "sclk_ufsunipro", "mout_sclk_ufsunipro_user",
233762306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 5, 0, 0),
233862306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC2, "sclk_mmc2", "mout_sclk_mmc2_user",
233962306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 4, CLK_SET_RATE_PARENT, 0),
234062306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC1, "sclk_mmc1", "mout_sclk_mmc1_user",
234162306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 3, CLK_SET_RATE_PARENT, 0),
234262306a36Sopenharmony_ci	GATE(CLK_SCLK_MMC0, "sclk_mmc0", "mout_sclk_mmc0_user",
234362306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 2, CLK_SET_RATE_PARENT, 0),
234462306a36Sopenharmony_ci	GATE(CLK_SCLK_USBHOST30, "sclk_usbhost30", "mout_sclk_usbhost30_user",
234562306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 1, 0, 0),
234662306a36Sopenharmony_ci	GATE(CLK_SCLK_USBDRD30, "sclk_usbdrd30", "mout_sclk_usbdrd30_user",
234762306a36Sopenharmony_ci			ENABLE_SCLK_FSYS, 0, 0, 0),
234862306a36Sopenharmony_ci
234962306a36Sopenharmony_ci	/* ENABLE_IP_FSYS0 */
235062306a36Sopenharmony_ci	GATE(CLK_PCIE, "pcie", "sclk_pcie_100", ENABLE_IP_FSYS0, 17, 0, 0),
235162306a36Sopenharmony_ci	GATE(CLK_PDMA1, "pdma1", "aclk_pdma1", ENABLE_IP_FSYS0, 15, 0, 0),
235262306a36Sopenharmony_ci	GATE(CLK_PDMA0, "pdma0", "aclk_pdma0", ENABLE_IP_FSYS0, 0, 0, 0),
235362306a36Sopenharmony_ci};
235462306a36Sopenharmony_ci
235562306a36Sopenharmony_cistatic const struct samsung_cmu_info fsys_cmu_info __initconst = {
235662306a36Sopenharmony_ci	.mux_clks		= fsys_mux_clks,
235762306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(fsys_mux_clks),
235862306a36Sopenharmony_ci	.gate_clks		= fsys_gate_clks,
235962306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(fsys_gate_clks),
236062306a36Sopenharmony_ci	.fixed_clks		= fsys_fixed_clks,
236162306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(fsys_fixed_clks),
236262306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_FSYS,
236362306a36Sopenharmony_ci	.clk_regs		= fsys_clk_regs,
236462306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(fsys_clk_regs),
236562306a36Sopenharmony_ci	.suspend_regs		= fsys_suspend_regs,
236662306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(fsys_suspend_regs),
236762306a36Sopenharmony_ci	.clk_name		= "aclk_fsys_200",
236862306a36Sopenharmony_ci};
236962306a36Sopenharmony_ci
237062306a36Sopenharmony_ci/*
237162306a36Sopenharmony_ci * Register offset definitions for CMU_G2D
237262306a36Sopenharmony_ci */
237362306a36Sopenharmony_ci#define MUX_SEL_G2D0				0x0200
237462306a36Sopenharmony_ci#define MUX_SEL_ENABLE_G2D0			0x0300
237562306a36Sopenharmony_ci#define MUX_SEL_STAT_G2D0			0x0400
237662306a36Sopenharmony_ci#define DIV_G2D					0x0600
237762306a36Sopenharmony_ci#define DIV_STAT_G2D				0x0700
237862306a36Sopenharmony_ci#define DIV_ENABLE_ACLK_G2D			0x0800
237962306a36Sopenharmony_ci#define DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D	0x0804
238062306a36Sopenharmony_ci#define DIV_ENABLE_PCLK_G2D			0x0900
238162306a36Sopenharmony_ci#define DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D	0x0904
238262306a36Sopenharmony_ci#define DIV_ENABLE_IP_G2D0			0x0b00
238362306a36Sopenharmony_ci#define DIV_ENABLE_IP_G2D1			0x0b04
238462306a36Sopenharmony_ci#define DIV_ENABLE_IP_G2D_SECURE_SMMU_G2D	0x0b08
238562306a36Sopenharmony_ci
238662306a36Sopenharmony_cistatic const unsigned long g2d_clk_regs[] __initconst = {
238762306a36Sopenharmony_ci	MUX_SEL_G2D0,
238862306a36Sopenharmony_ci	MUX_SEL_ENABLE_G2D0,
238962306a36Sopenharmony_ci	DIV_G2D,
239062306a36Sopenharmony_ci	DIV_ENABLE_ACLK_G2D,
239162306a36Sopenharmony_ci	DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D,
239262306a36Sopenharmony_ci	DIV_ENABLE_PCLK_G2D,
239362306a36Sopenharmony_ci	DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D,
239462306a36Sopenharmony_ci	DIV_ENABLE_IP_G2D0,
239562306a36Sopenharmony_ci	DIV_ENABLE_IP_G2D1,
239662306a36Sopenharmony_ci	DIV_ENABLE_IP_G2D_SECURE_SMMU_G2D,
239762306a36Sopenharmony_ci};
239862306a36Sopenharmony_ci
239962306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump g2d_suspend_regs[] = {
240062306a36Sopenharmony_ci	{ MUX_SEL_G2D0, 0 },
240162306a36Sopenharmony_ci};
240262306a36Sopenharmony_ci
240362306a36Sopenharmony_ci/* list of all parent clock list */
240462306a36Sopenharmony_ciPNAME(mout_aclk_g2d_266_user_p)		= { "oscclk", "aclk_g2d_266", };
240562306a36Sopenharmony_ciPNAME(mout_aclk_g2d_400_user_p)		= { "oscclk", "aclk_g2d_400", };
240662306a36Sopenharmony_ci
240762306a36Sopenharmony_cistatic const struct samsung_mux_clock g2d_mux_clks[] __initconst = {
240862306a36Sopenharmony_ci	/* MUX_SEL_G2D0 */
240962306a36Sopenharmony_ci	MUX(CLK_MUX_ACLK_G2D_266_USER, "mout_aclk_g2d_266_user",
241062306a36Sopenharmony_ci			mout_aclk_g2d_266_user_p, MUX_SEL_G2D0, 4, 1),
241162306a36Sopenharmony_ci	MUX(CLK_MUX_ACLK_G2D_400_USER, "mout_aclk_g2d_400_user",
241262306a36Sopenharmony_ci			mout_aclk_g2d_400_user_p, MUX_SEL_G2D0, 0, 1),
241362306a36Sopenharmony_ci};
241462306a36Sopenharmony_ci
241562306a36Sopenharmony_cistatic const struct samsung_div_clock g2d_div_clks[] __initconst = {
241662306a36Sopenharmony_ci	/* DIV_G2D */
241762306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_G2D, "div_pclk_g2d", "mout_aclk_g2d_266_user",
241862306a36Sopenharmony_ci			DIV_G2D, 0, 2),
241962306a36Sopenharmony_ci};
242062306a36Sopenharmony_ci
242162306a36Sopenharmony_cistatic const struct samsung_gate_clock g2d_gate_clks[] __initconst = {
242262306a36Sopenharmony_ci	/* DIV_ENABLE_ACLK_G2D */
242362306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_MDMA1, "aclk_smmu_mdma1", "mout_aclk_g2d_266_user",
242462306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 12, 0, 0),
242562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_MDMA1, "aclk_bts_mdam1", "mout_aclk_g2d_266_user",
242662306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 11, 0, 0),
242762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_G2D, "aclk_bts_g2d", "mout_aclk_g2d_400_user",
242862306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 10, 0, 0),
242962306a36Sopenharmony_ci	GATE(CLK_ACLK_ALB_G2D, "aclk_alb_g2d", "mout_aclk_g2d_400_user",
243062306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 9, 0, 0),
243162306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_G2DX, "aclk_axius_g2dx", "mout_aclk_g2d_400_user",
243262306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 8, 0, 0),
243362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXI_SYSX, "aclk_asyncaxi_sysx",
243462306a36Sopenharmony_ci			"mout_aclk_g2d_400_user", DIV_ENABLE_ACLK_G2D,
243562306a36Sopenharmony_ci			7, 0, 0),
243662306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_G2D1P, "aclk_ahb2apb_g2d1p", "div_pclk_g2d",
243762306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 6, CLK_IGNORE_UNUSED, 0),
243862306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_G2D0P, "aclk_ahb2apb_g2d0p", "div_pclk_g2d",
243962306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 5, CLK_IGNORE_UNUSED, 0),
244062306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_G2DX, "aclk_xiu_g2dx", "mout_aclk_g2d_400_user",
244162306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 4, CLK_IGNORE_UNUSED, 0),
244262306a36Sopenharmony_ci	GATE(CLK_ACLK_G2DNP_133, "aclk_g2dnp_133", "div_pclk_g2d",
244362306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 3, CLK_IGNORE_UNUSED, 0),
244462306a36Sopenharmony_ci	GATE(CLK_ACLK_G2DND_400, "aclk_g2dnd_400", "mout_aclk_g2d_400_user",
244562306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 2, CLK_IGNORE_UNUSED, 0),
244662306a36Sopenharmony_ci	GATE(CLK_ACLK_MDMA1, "aclk_mdma1", "mout_aclk_g2d_266_user",
244762306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 1, 0, 0),
244862306a36Sopenharmony_ci	GATE(CLK_ACLK_G2D, "aclk_g2d", "mout_aclk_g2d_400_user",
244962306a36Sopenharmony_ci			DIV_ENABLE_ACLK_G2D, 0, 0, 0),
245062306a36Sopenharmony_ci
245162306a36Sopenharmony_ci	/* DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D */
245262306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_G2D, "aclk_smmu_g2d", "mout_aclk_g2d_400_user",
245362306a36Sopenharmony_ci		DIV_ENABLE_ACLK_G2D_SECURE_SMMU_G2D, 0, 0, 0),
245462306a36Sopenharmony_ci
245562306a36Sopenharmony_ci	/* DIV_ENABLE_PCLK_G2D */
245662306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_MDMA1, "pclk_smmu_mdma1", "div_pclk_g2d",
245762306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 7, 0, 0),
245862306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_MDMA1, "pclk_bts_mdam1", "div_pclk_g2d",
245962306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 6, 0, 0),
246062306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_G2D, "pclk_bts_g2d", "div_pclk_g2d",
246162306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 5, 0, 0),
246262306a36Sopenharmony_ci	GATE(CLK_PCLK_ALB_G2D, "pclk_alb_g2d", "div_pclk_g2d",
246362306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 4, 0, 0),
246462306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_SYSX, "pclk_asyncaxi_sysx", "div_pclk_g2d",
246562306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 3, 0, 0),
246662306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_G2D, "pclk_pmu_g2d", "div_pclk_g2d",
246762306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 2, CLK_IGNORE_UNUSED, 0),
246862306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_G2D, "pclk_sysreg_g2d", "div_pclk_g2d",
246962306a36Sopenharmony_ci			DIV_ENABLE_PCLK_G2D, 1, CLK_IGNORE_UNUSED, 0),
247062306a36Sopenharmony_ci	GATE(CLK_PCLK_G2D, "pclk_g2d", "div_pclk_g2d", DIV_ENABLE_PCLK_G2D,
247162306a36Sopenharmony_ci			0, 0, 0),
247262306a36Sopenharmony_ci
247362306a36Sopenharmony_ci	/* DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D */
247462306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_G2D, "pclk_smmu_g2d", "div_pclk_g2d",
247562306a36Sopenharmony_ci		DIV_ENABLE_PCLK_G2D_SECURE_SMMU_G2D, 0, 0, 0),
247662306a36Sopenharmony_ci};
247762306a36Sopenharmony_ci
247862306a36Sopenharmony_cistatic const struct samsung_cmu_info g2d_cmu_info __initconst = {
247962306a36Sopenharmony_ci	.mux_clks		= g2d_mux_clks,
248062306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(g2d_mux_clks),
248162306a36Sopenharmony_ci	.div_clks		= g2d_div_clks,
248262306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(g2d_div_clks),
248362306a36Sopenharmony_ci	.gate_clks		= g2d_gate_clks,
248462306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(g2d_gate_clks),
248562306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_G2D,
248662306a36Sopenharmony_ci	.clk_regs		= g2d_clk_regs,
248762306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(g2d_clk_regs),
248862306a36Sopenharmony_ci	.suspend_regs		= g2d_suspend_regs,
248962306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(g2d_suspend_regs),
249062306a36Sopenharmony_ci	.clk_name		= "aclk_g2d_400",
249162306a36Sopenharmony_ci};
249262306a36Sopenharmony_ci
249362306a36Sopenharmony_ci/*
249462306a36Sopenharmony_ci * Register offset definitions for CMU_DISP
249562306a36Sopenharmony_ci */
249662306a36Sopenharmony_ci#define DISP_PLL_LOCK			0x0000
249762306a36Sopenharmony_ci#define DISP_PLL_CON0			0x0100
249862306a36Sopenharmony_ci#define DISP_PLL_CON1			0x0104
249962306a36Sopenharmony_ci#define DISP_PLL_FREQ_DET		0x0108
250062306a36Sopenharmony_ci#define MUX_SEL_DISP0			0x0200
250162306a36Sopenharmony_ci#define MUX_SEL_DISP1			0x0204
250262306a36Sopenharmony_ci#define MUX_SEL_DISP2			0x0208
250362306a36Sopenharmony_ci#define MUX_SEL_DISP3			0x020c
250462306a36Sopenharmony_ci#define MUX_SEL_DISP4			0x0210
250562306a36Sopenharmony_ci#define MUX_ENABLE_DISP0		0x0300
250662306a36Sopenharmony_ci#define MUX_ENABLE_DISP1		0x0304
250762306a36Sopenharmony_ci#define MUX_ENABLE_DISP2		0x0308
250862306a36Sopenharmony_ci#define MUX_ENABLE_DISP3		0x030c
250962306a36Sopenharmony_ci#define MUX_ENABLE_DISP4		0x0310
251062306a36Sopenharmony_ci#define MUX_STAT_DISP0			0x0400
251162306a36Sopenharmony_ci#define MUX_STAT_DISP1			0x0404
251262306a36Sopenharmony_ci#define MUX_STAT_DISP2			0x0408
251362306a36Sopenharmony_ci#define MUX_STAT_DISP3			0x040c
251462306a36Sopenharmony_ci#define MUX_STAT_DISP4			0x0410
251562306a36Sopenharmony_ci#define MUX_IGNORE_DISP2		0x0508
251662306a36Sopenharmony_ci#define DIV_DISP			0x0600
251762306a36Sopenharmony_ci#define DIV_DISP_PLL_FREQ_DET		0x0604
251862306a36Sopenharmony_ci#define DIV_STAT_DISP			0x0700
251962306a36Sopenharmony_ci#define DIV_STAT_DISP_PLL_FREQ_DET	0x0704
252062306a36Sopenharmony_ci#define ENABLE_ACLK_DISP0		0x0800
252162306a36Sopenharmony_ci#define ENABLE_ACLK_DISP1		0x0804
252262306a36Sopenharmony_ci#define ENABLE_PCLK_DISP		0x0900
252362306a36Sopenharmony_ci#define ENABLE_SCLK_DISP		0x0a00
252462306a36Sopenharmony_ci#define ENABLE_IP_DISP0			0x0b00
252562306a36Sopenharmony_ci#define ENABLE_IP_DISP1			0x0b04
252662306a36Sopenharmony_ci#define CLKOUT_CMU_DISP			0x0c00
252762306a36Sopenharmony_ci#define CLKOUT_CMU_DISP_DIV_STAT	0x0c04
252862306a36Sopenharmony_ci
252962306a36Sopenharmony_cistatic const unsigned long disp_clk_regs[] __initconst = {
253062306a36Sopenharmony_ci	DISP_PLL_LOCK,
253162306a36Sopenharmony_ci	DISP_PLL_CON0,
253262306a36Sopenharmony_ci	DISP_PLL_CON1,
253362306a36Sopenharmony_ci	DISP_PLL_FREQ_DET,
253462306a36Sopenharmony_ci	MUX_SEL_DISP0,
253562306a36Sopenharmony_ci	MUX_SEL_DISP1,
253662306a36Sopenharmony_ci	MUX_SEL_DISP2,
253762306a36Sopenharmony_ci	MUX_SEL_DISP3,
253862306a36Sopenharmony_ci	MUX_SEL_DISP4,
253962306a36Sopenharmony_ci	MUX_ENABLE_DISP0,
254062306a36Sopenharmony_ci	MUX_ENABLE_DISP1,
254162306a36Sopenharmony_ci	MUX_ENABLE_DISP2,
254262306a36Sopenharmony_ci	MUX_ENABLE_DISP3,
254362306a36Sopenharmony_ci	MUX_ENABLE_DISP4,
254462306a36Sopenharmony_ci	MUX_IGNORE_DISP2,
254562306a36Sopenharmony_ci	DIV_DISP,
254662306a36Sopenharmony_ci	DIV_DISP_PLL_FREQ_DET,
254762306a36Sopenharmony_ci	ENABLE_ACLK_DISP0,
254862306a36Sopenharmony_ci	ENABLE_ACLK_DISP1,
254962306a36Sopenharmony_ci	ENABLE_PCLK_DISP,
255062306a36Sopenharmony_ci	ENABLE_SCLK_DISP,
255162306a36Sopenharmony_ci	ENABLE_IP_DISP0,
255262306a36Sopenharmony_ci	ENABLE_IP_DISP1,
255362306a36Sopenharmony_ci	CLKOUT_CMU_DISP,
255462306a36Sopenharmony_ci	CLKOUT_CMU_DISP_DIV_STAT,
255562306a36Sopenharmony_ci};
255662306a36Sopenharmony_ci
255762306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump disp_suspend_regs[] = {
255862306a36Sopenharmony_ci	/* PLL has to be enabled for suspend */
255962306a36Sopenharmony_ci	{ DISP_PLL_CON0, 0x85f40502 },
256062306a36Sopenharmony_ci	/* ignore status of external PHY muxes during suspend to avoid hangs */
256162306a36Sopenharmony_ci	{ MUX_IGNORE_DISP2, 0x00111111 },
256262306a36Sopenharmony_ci	{ MUX_SEL_DISP0, 0 },
256362306a36Sopenharmony_ci	{ MUX_SEL_DISP1, 0 },
256462306a36Sopenharmony_ci	{ MUX_SEL_DISP2, 0 },
256562306a36Sopenharmony_ci	{ MUX_SEL_DISP3, 0 },
256662306a36Sopenharmony_ci	{ MUX_SEL_DISP4, 0 },
256762306a36Sopenharmony_ci};
256862306a36Sopenharmony_ci
256962306a36Sopenharmony_ci/* list of all parent clock list */
257062306a36Sopenharmony_ciPNAME(mout_disp_pll_p)			= { "oscclk", "fout_disp_pll", };
257162306a36Sopenharmony_ciPNAME(mout_sclk_dsim1_user_p)		= { "oscclk", "sclk_dsim1_disp", };
257262306a36Sopenharmony_ciPNAME(mout_sclk_dsim0_user_p)		= { "oscclk", "sclk_dsim0_disp", };
257362306a36Sopenharmony_ciPNAME(mout_sclk_dsd_user_p)		= { "oscclk", "sclk_dsd_disp", };
257462306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_eclk_user_p)	= { "oscclk",
257562306a36Sopenharmony_ci					    "sclk_decon_tv_eclk_disp", };
257662306a36Sopenharmony_ciPNAME(mout_sclk_decon_vclk_user_p)	= { "oscclk",
257762306a36Sopenharmony_ci					    "sclk_decon_vclk_disp", };
257862306a36Sopenharmony_ciPNAME(mout_sclk_decon_eclk_user_p)	= { "oscclk",
257962306a36Sopenharmony_ci					    "sclk_decon_eclk_disp", };
258062306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_vlkc_user_p)	= { "oscclk",
258162306a36Sopenharmony_ci					    "sclk_decon_tv_vclk_disp", };
258262306a36Sopenharmony_ciPNAME(mout_aclk_disp_333_user_p)	= { "oscclk", "aclk_disp_333", };
258362306a36Sopenharmony_ci
258462306a36Sopenharmony_ciPNAME(mout_phyclk_mipidphy1_bitclkdiv8_user_p)	= { "oscclk",
258562306a36Sopenharmony_ci					"phyclk_mipidphy1_bitclkdiv8_phy", };
258662306a36Sopenharmony_ciPNAME(mout_phyclk_mipidphy1_rxclkesc0_user_p)	= { "oscclk",
258762306a36Sopenharmony_ci					"phyclk_mipidphy1_rxclkesc0_phy", };
258862306a36Sopenharmony_ciPNAME(mout_phyclk_mipidphy0_bitclkdiv8_user_p)	= { "oscclk",
258962306a36Sopenharmony_ci					"phyclk_mipidphy0_bitclkdiv8_phy", };
259062306a36Sopenharmony_ciPNAME(mout_phyclk_mipidphy0_rxclkesc0_user_p)	= { "oscclk",
259162306a36Sopenharmony_ci					"phyclk_mipidphy0_rxclkesc0_phy", };
259262306a36Sopenharmony_ciPNAME(mout_phyclk_hdmiphy_tmds_clko_user_p)	= { "oscclk",
259362306a36Sopenharmony_ci					"phyclk_hdmiphy_tmds_clko_phy", };
259462306a36Sopenharmony_ciPNAME(mout_phyclk_hdmiphy_pixel_clko_user_p)	= { "oscclk",
259562306a36Sopenharmony_ci					"phyclk_hdmiphy_pixel_clko_phy", };
259662306a36Sopenharmony_ci
259762306a36Sopenharmony_ciPNAME(mout_sclk_dsim0_p)		= { "mout_disp_pll",
259862306a36Sopenharmony_ci					    "mout_sclk_dsim0_user", };
259962306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_eclk_p)	= { "mout_disp_pll",
260062306a36Sopenharmony_ci					    "mout_sclk_decon_tv_eclk_user", };
260162306a36Sopenharmony_ciPNAME(mout_sclk_decon_vclk_p)		= { "mout_disp_pll",
260262306a36Sopenharmony_ci					    "mout_sclk_decon_vclk_user", };
260362306a36Sopenharmony_ciPNAME(mout_sclk_decon_eclk_p)		= { "mout_disp_pll",
260462306a36Sopenharmony_ci					    "mout_sclk_decon_eclk_user", };
260562306a36Sopenharmony_ci
260662306a36Sopenharmony_ciPNAME(mout_sclk_dsim1_b_disp_p)		= { "mout_sclk_dsim1_a_disp",
260762306a36Sopenharmony_ci					    "mout_sclk_dsim1_user", };
260862306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_vclk_c_disp_p)	= {
260962306a36Sopenharmony_ci				"mout_phyclk_hdmiphy_pixel_clko_user",
261062306a36Sopenharmony_ci				"mout_sclk_decon_tv_vclk_b_disp", };
261162306a36Sopenharmony_ciPNAME(mout_sclk_decon_tv_vclk_b_disp_p)	= { "mout_sclk_decon_tv_vclk_a_disp",
261262306a36Sopenharmony_ci					    "mout_sclk_decon_tv_vclk_user", };
261362306a36Sopenharmony_ci
261462306a36Sopenharmony_cistatic const struct samsung_pll_clock disp_pll_clks[] __initconst = {
261562306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_DISP_PLL, "fout_disp_pll", "oscclk",
261662306a36Sopenharmony_ci		DISP_PLL_LOCK, DISP_PLL_CON0, exynos5433_pll_rates),
261762306a36Sopenharmony_ci};
261862306a36Sopenharmony_ci
261962306a36Sopenharmony_cistatic const struct samsung_fixed_factor_clock disp_fixed_factor_clks[] __initconst = {
262062306a36Sopenharmony_ci	/*
262162306a36Sopenharmony_ci	 * sclk_rgb_{vclk|tv_vclk} is half clock of sclk_decon_{vclk|tv_vclk}.
262262306a36Sopenharmony_ci	 * The divider has fixed value (2) between sclk_rgb_{vclk|tv_vclk}
262362306a36Sopenharmony_ci	 * and sclk_decon_{vclk|tv_vclk}.
262462306a36Sopenharmony_ci	 */
262562306a36Sopenharmony_ci	FFACTOR(CLK_SCLK_RGB_VCLK, "sclk_rgb_vclk", "sclk_decon_vclk",
262662306a36Sopenharmony_ci			1, 2, 0),
262762306a36Sopenharmony_ci	FFACTOR(CLK_SCLK_RGB_TV_VCLK, "sclk_rgb_tv_vclk", "sclk_decon_tv_vclk",
262862306a36Sopenharmony_ci			1, 2, 0),
262962306a36Sopenharmony_ci};
263062306a36Sopenharmony_ci
263162306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock disp_fixed_clks[] __initconst = {
263262306a36Sopenharmony_ci	/* PHY clocks from MIPI_DPHY1 */
263362306a36Sopenharmony_ci	FRATE(0, "phyclk_mipidphy1_bitclkdiv8_phy", NULL, 0, 188000000),
263462306a36Sopenharmony_ci	FRATE(0, "phyclk_mipidphy1_rxclkesc0_phy", NULL, 0, 100000000),
263562306a36Sopenharmony_ci	/* PHY clocks from MIPI_DPHY0 */
263662306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8_PHY, "phyclk_mipidphy0_bitclkdiv8_phy",
263762306a36Sopenharmony_ci			NULL, 0, 188000000),
263862306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0_PHY, "phyclk_mipidphy0_rxclkesc0_phy",
263962306a36Sopenharmony_ci			NULL, 0, 100000000),
264062306a36Sopenharmony_ci	/* PHY clocks from HDMI_PHY */
264162306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_HDMIPHY_TMDS_CLKO_PHY, "phyclk_hdmiphy_tmds_clko_phy",
264262306a36Sopenharmony_ci			NULL, 0, 300000000),
264362306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_HDMIPHY_PIXEL_CLKO_PHY, "phyclk_hdmiphy_pixel_clko_phy",
264462306a36Sopenharmony_ci			NULL, 0, 166000000),
264562306a36Sopenharmony_ci};
264662306a36Sopenharmony_ci
264762306a36Sopenharmony_cistatic const struct samsung_mux_clock disp_mux_clks[] __initconst = {
264862306a36Sopenharmony_ci	/* MUX_SEL_DISP0 */
264962306a36Sopenharmony_ci	MUX(CLK_MOUT_DISP_PLL, "mout_disp_pll", mout_disp_pll_p, MUX_SEL_DISP0,
265062306a36Sopenharmony_ci			0, 1),
265162306a36Sopenharmony_ci
265262306a36Sopenharmony_ci	/* MUX_SEL_DISP1 */
265362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_USER, "mout_sclk_dsim1_user",
265462306a36Sopenharmony_ci			mout_sclk_dsim1_user_p, MUX_SEL_DISP1, 28, 1),
265562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM0_USER, "mout_sclk_dsim0_user",
265662306a36Sopenharmony_ci			mout_sclk_dsim0_user_p, MUX_SEL_DISP1, 24, 1),
265762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSD_USER, "mout_sclk_dsd_user", mout_sclk_dsd_user_p,
265862306a36Sopenharmony_ci			MUX_SEL_DISP1, 20, 1),
265962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_ECLK_USER, "mout_sclk_decon_tv_eclk_user",
266062306a36Sopenharmony_ci			mout_sclk_decon_tv_eclk_user_p, MUX_SEL_DISP1, 16, 1),
266162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_VCLK_USER, "mout_sclk_decon_vclk_user",
266262306a36Sopenharmony_ci			mout_sclk_decon_vclk_user_p, MUX_SEL_DISP1, 12, 1),
266362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_ECLK_USER, "mout_sclk_decon_eclk_user",
266462306a36Sopenharmony_ci			mout_sclk_decon_eclk_user_p, MUX_SEL_DISP1, 8, 1),
266562306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_USER, "mout_sclk_decon_tv_vclk_user",
266662306a36Sopenharmony_ci			mout_sclk_decon_tv_vlkc_user_p, MUX_SEL_DISP1, 4, 1),
266762306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_DISP_333_USER, "mout_aclk_disp_333_user",
266862306a36Sopenharmony_ci			mout_aclk_disp_333_user_p, MUX_SEL_DISP1, 0, 1),
266962306a36Sopenharmony_ci
267062306a36Sopenharmony_ci	/* MUX_SEL_DISP2 */
267162306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_MIPIDPHY1_BITCLKDIV8_USER,
267262306a36Sopenharmony_ci			"mout_phyclk_mipidphy1_bitclkdiv8_user",
267362306a36Sopenharmony_ci			mout_phyclk_mipidphy1_bitclkdiv8_user_p, MUX_SEL_DISP2,
267462306a36Sopenharmony_ci			20, 1),
267562306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_MIPIDPHY1_RXCLKESC0_USER,
267662306a36Sopenharmony_ci			"mout_phyclk_mipidphy1_rxclkesc0_user",
267762306a36Sopenharmony_ci			mout_phyclk_mipidphy1_rxclkesc0_user_p, MUX_SEL_DISP2,
267862306a36Sopenharmony_ci			16, 1),
267962306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_MIPIDPHY0_BITCLKDIV8_USER,
268062306a36Sopenharmony_ci			"mout_phyclk_mipidphy0_bitclkdiv8_user",
268162306a36Sopenharmony_ci			mout_phyclk_mipidphy0_bitclkdiv8_user_p, MUX_SEL_DISP2,
268262306a36Sopenharmony_ci			12, 1),
268362306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_MIPIDPHY0_RXCLKESC0_USER,
268462306a36Sopenharmony_ci			"mout_phyclk_mipidphy0_rxclkesc0_user",
268562306a36Sopenharmony_ci			mout_phyclk_mipidphy0_rxclkesc0_user_p, MUX_SEL_DISP2,
268662306a36Sopenharmony_ci			8, 1),
268762306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_HDMIPHY_TMDS_CLKO_USER,
268862306a36Sopenharmony_ci			"mout_phyclk_hdmiphy_tmds_clko_user",
268962306a36Sopenharmony_ci			mout_phyclk_hdmiphy_tmds_clko_user_p, MUX_SEL_DISP2,
269062306a36Sopenharmony_ci			4, 1),
269162306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_HDMIPHY_PIXEL_CLKO_USER,
269262306a36Sopenharmony_ci			"mout_phyclk_hdmiphy_pixel_clko_user",
269362306a36Sopenharmony_ci			mout_phyclk_hdmiphy_pixel_clko_user_p, MUX_SEL_DISP2,
269462306a36Sopenharmony_ci			0, 1),
269562306a36Sopenharmony_ci
269662306a36Sopenharmony_ci	/* MUX_SEL_DISP3 */
269762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM0, "mout_sclk_dsim0", mout_sclk_dsim0_p,
269862306a36Sopenharmony_ci			MUX_SEL_DISP3, 12, 1),
269962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_ECLK, "mout_sclk_decon_tv_eclk",
270062306a36Sopenharmony_ci			mout_sclk_decon_tv_eclk_p, MUX_SEL_DISP3, 8, 1),
270162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_VCLK, "mout_sclk_decon_vclk",
270262306a36Sopenharmony_ci			mout_sclk_decon_vclk_p, MUX_SEL_DISP3, 4, 1),
270362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_ECLK, "mout_sclk_decon_eclk",
270462306a36Sopenharmony_ci			mout_sclk_decon_eclk_p, MUX_SEL_DISP3, 0, 1),
270562306a36Sopenharmony_ci
270662306a36Sopenharmony_ci	/* MUX_SEL_DISP4 */
270762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_B_DISP, "mout_sclk_dsim1_b_disp",
270862306a36Sopenharmony_ci			mout_sclk_dsim1_b_disp_p, MUX_SEL_DISP4, 16, 1),
270962306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DSIM1_A_DISP, "mout_sclk_dsim1_a_disp",
271062306a36Sopenharmony_ci			mout_sclk_dsim0_p, MUX_SEL_DISP4, 12, 1),
271162306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_C_DISP,
271262306a36Sopenharmony_ci			"mout_sclk_decon_tv_vclk_c_disp",
271362306a36Sopenharmony_ci			mout_sclk_decon_tv_vclk_c_disp_p, MUX_SEL_DISP4, 8, 1),
271462306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_B_DISP,
271562306a36Sopenharmony_ci			"mout_sclk_decon_tv_vclk_b_disp",
271662306a36Sopenharmony_ci			mout_sclk_decon_tv_vclk_b_disp_p, MUX_SEL_DISP4, 4, 1),
271762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_DECON_TV_VCLK_A_DISP,
271862306a36Sopenharmony_ci			"mout_sclk_decon_tv_vclk_a_disp",
271962306a36Sopenharmony_ci			mout_sclk_decon_vclk_p, MUX_SEL_DISP4, 0, 1),
272062306a36Sopenharmony_ci};
272162306a36Sopenharmony_ci
272262306a36Sopenharmony_cistatic const struct samsung_div_clock disp_div_clks[] __initconst = {
272362306a36Sopenharmony_ci	/* DIV_DISP */
272462306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DSIM1_DISP, "div_sclk_dsim1_disp",
272562306a36Sopenharmony_ci			"mout_sclk_dsim1_b_disp", DIV_DISP, 24, 3),
272662306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_TV_VCLK_DISP, "div_sclk_decon_tv_vclk_disp",
272762306a36Sopenharmony_ci			"mout_sclk_decon_tv_vclk_c_disp", DIV_DISP, 20, 3),
272862306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DSIM0_DISP, "div_sclk_dsim0_disp", "mout_sclk_dsim0",
272962306a36Sopenharmony_ci			DIV_DISP, 16, 3),
273062306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_TV_ECLK_DISP, "div_sclk_decon_tv_eclk_disp",
273162306a36Sopenharmony_ci			"mout_sclk_decon_tv_eclk", DIV_DISP, 12, 3),
273262306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_VCLK_DISP, "div_sclk_decon_vclk_disp",
273362306a36Sopenharmony_ci			"mout_sclk_decon_vclk", DIV_DISP, 8, 3),
273462306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_DECON_ECLK_DISP, "div_sclk_decon_eclk_disp",
273562306a36Sopenharmony_ci			"mout_sclk_decon_eclk", DIV_DISP, 4, 3),
273662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_DISP, "div_pclk_disp", "mout_aclk_disp_333_user",
273762306a36Sopenharmony_ci			DIV_DISP, 0, 2),
273862306a36Sopenharmony_ci};
273962306a36Sopenharmony_ci
274062306a36Sopenharmony_cistatic const struct samsung_gate_clock disp_gate_clks[] __initconst = {
274162306a36Sopenharmony_ci	/* ENABLE_ACLK_DISP0 */
274262306a36Sopenharmony_ci	GATE(CLK_ACLK_DECON_TV, "aclk_decon_tv", "mout_aclk_disp_333_user",
274362306a36Sopenharmony_ci			ENABLE_ACLK_DISP0, 2, 0, 0),
274462306a36Sopenharmony_ci	GATE(CLK_ACLK_DECON, "aclk_decon", "mout_aclk_disp_333_user",
274562306a36Sopenharmony_ci			ENABLE_ACLK_DISP0, 0, 0, 0),
274662306a36Sopenharmony_ci
274762306a36Sopenharmony_ci	/* ENABLE_ACLK_DISP1 */
274862306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_TV1X, "aclk_smmu_tv1x", "mout_aclk_disp_333_user",
274962306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 25, 0, 0),
275062306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_TV0X, "aclk_smmu_tv0x", "mout_aclk_disp_333_user",
275162306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 24, 0, 0),
275262306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_DECON1X, "aclk_smmu_decon1x",
275362306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 23, 0, 0),
275462306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_DECON0X, "aclk_smmu_decon0x",
275562306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 22, 0, 0),
275662306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_TV_M3, "aclk_bts_decon_tv_m3",
275762306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 21, 0, 0),
275862306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_TV_M2, "aclk_bts_decon_tv_m2",
275962306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 20, 0, 0),
276062306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_TV_M1, "aclk_bts_decon_tv_m1",
276162306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 19, 0, 0),
276262306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_TV_M0, "aclk-bts_decon_tv_m0",
276362306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 18, 0, 0),
276462306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_NM4, "aclk_bts_decon_nm4",
276562306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 17, 0, 0),
276662306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_NM3, "aclk_bts_decon_nm3",
276762306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 16, 0, 0),
276862306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_NM2, "aclk_bts_decon_nm2",
276962306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 15, 0, 0),
277062306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_NM1, "aclk_bts_decon_nm1",
277162306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 14, 0, 0),
277262306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DECON_NM0, "aclk_bts_decon_nm0",
277362306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 13, 0, 0),
277462306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_DISPSFR2P, "aclk_ahb2apb_dispsfr2p",
277562306a36Sopenharmony_ci			"div_pclk_disp", ENABLE_ACLK_DISP1,
277662306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
277762306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_DISPSFR1P, "aclk_ahb2apb_dispsfr1p",
277862306a36Sopenharmony_ci			"div_pclk_disp", ENABLE_ACLK_DISP1,
277962306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
278062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_DISPSFR0P, "aclk_ahb2apb_dispsfr0p",
278162306a36Sopenharmony_ci			"div_pclk_disp", ENABLE_ACLK_DISP1,
278262306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
278362306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_DISPH, "aclk_ahb_disph", "div_pclk_disp",
278462306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 8, CLK_IGNORE_UNUSED, 0),
278562306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_TV1X, "aclk_xiu_tv1x", "mout_aclk_disp_333_user",
278662306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 7, 0, 0),
278762306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_TV0X, "aclk_xiu_tv0x", "mout_aclk_disp_333_user",
278862306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 6, 0, 0),
278962306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_DECON1X, "aclk_xiu_decon1x",
279062306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 5, 0, 0),
279162306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_DECON0X, "aclk_xiu_decon0x",
279262306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 4, 0, 0),
279362306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_DISP1X, "aclk_xiu_disp1x", "mout_aclk_disp_333_user",
279462306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 3, CLK_IGNORE_UNUSED, 0),
279562306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_DISPNP_100, "aclk_xiu_dispnp_100", "div_pclk_disp",
279662306a36Sopenharmony_ci			ENABLE_ACLK_DISP1, 2, CLK_IGNORE_UNUSED, 0),
279762306a36Sopenharmony_ci	GATE(CLK_ACLK_DISP1ND_333, "aclk_disp1nd_333",
279862306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1, 1,
279962306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
280062306a36Sopenharmony_ci	GATE(CLK_ACLK_DISP0ND_333, "aclk_disp0nd_333",
280162306a36Sopenharmony_ci			"mout_aclk_disp_333_user", ENABLE_ACLK_DISP1,
280262306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
280362306a36Sopenharmony_ci
280462306a36Sopenharmony_ci	/* ENABLE_PCLK_DISP */
280562306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_TV1X, "pclk_smmu_tv1x", "div_pclk_disp",
280662306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 23, 0, 0),
280762306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_TV0X, "pclk_smmu_tv0x", "div_pclk_disp",
280862306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 22, 0, 0),
280962306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_DECON1X, "pclk_smmu_decon1x", "div_pclk_disp",
281062306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 21, 0, 0),
281162306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_DECON0X, "pclk_smmu_decon0x", "div_pclk_disp",
281262306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 20, 0, 0),
281362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECON_TV_M3, "pclk_bts_decon_tv_m3", "div_pclk_disp",
281462306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 19, 0, 0),
281562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECON_TV_M2, "pclk_bts_decon_tv_m2", "div_pclk_disp",
281662306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 18, 0, 0),
281762306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECON_TV_M1, "pclk_bts_decon_tv_m1", "div_pclk_disp",
281862306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 17, 0, 0),
281962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECON_TV_M0, "pclk_bts_decon_tv_m0", "div_pclk_disp",
282062306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 16, 0, 0),
282162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECONM4, "pclk_bts_deconm4", "div_pclk_disp",
282262306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 15, 0, 0),
282362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECONM3, "pclk_bts_deconm3", "div_pclk_disp",
282462306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 14, 0, 0),
282562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECONM2, "pclk_bts_deconm2", "div_pclk_disp",
282662306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 13, 0, 0),
282762306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECONM1, "pclk_bts_deconm1", "div_pclk_disp",
282862306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 12, 0, 0),
282962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DECONM0, "pclk_bts_deconm0", "div_pclk_disp",
283062306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 11, 0, 0),
283162306a36Sopenharmony_ci	GATE(CLK_PCLK_MIC1, "pclk_mic1", "div_pclk_disp",
283262306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 10, 0, 0),
283362306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_DISP, "pclk_pmu_disp", "div_pclk_disp",
283462306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 9, CLK_IGNORE_UNUSED, 0),
283562306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_DISP, "pclk_sysreg_disp", "div_pclk_disp",
283662306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 8, CLK_IGNORE_UNUSED, 0),
283762306a36Sopenharmony_ci	GATE(CLK_PCLK_HDMIPHY, "pclk_hdmiphy", "div_pclk_disp",
283862306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 7, 0, 0),
283962306a36Sopenharmony_ci	GATE(CLK_PCLK_HDMI, "pclk_hdmi", "div_pclk_disp",
284062306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 6, 0, 0),
284162306a36Sopenharmony_ci	GATE(CLK_PCLK_MIC0, "pclk_mic0", "div_pclk_disp",
284262306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 5, 0, 0),
284362306a36Sopenharmony_ci	GATE(CLK_PCLK_DSIM1, "pclk_dsim1", "div_pclk_disp",
284462306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 3, 0, 0),
284562306a36Sopenharmony_ci	GATE(CLK_PCLK_DSIM0, "pclk_dsim0", "div_pclk_disp",
284662306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 2, 0, 0),
284762306a36Sopenharmony_ci	GATE(CLK_PCLK_DECON_TV, "pclk_decon_tv", "div_pclk_disp",
284862306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 1, 0, 0),
284962306a36Sopenharmony_ci	GATE(CLK_PCLK_DECON, "pclk_decon", "div_pclk_disp",
285062306a36Sopenharmony_ci			ENABLE_PCLK_DISP, 0, 0, 0),
285162306a36Sopenharmony_ci
285262306a36Sopenharmony_ci	/* ENABLE_SCLK_DISP */
285362306a36Sopenharmony_ci	GATE(CLK_PHYCLK_MIPIDPHY1_BITCLKDIV8, "phyclk_mipidphy1_bitclkdiv8",
285462306a36Sopenharmony_ci			"mout_phyclk_mipidphy1_bitclkdiv8_user",
285562306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 26, 0, 0),
285662306a36Sopenharmony_ci	GATE(CLK_PHYCLK_MIPIDPHY1_RXCLKESC0, "phyclk_mipidphy1_rxclkesc0",
285762306a36Sopenharmony_ci			"mout_phyclk_mipidphy1_rxclkesc0_user",
285862306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 25, 0, 0),
285962306a36Sopenharmony_ci	GATE(CLK_SCLK_RGB_TV_VCLK_TO_DSIM1, "sclk_rgb_tv_vclk_to_dsim1",
286062306a36Sopenharmony_ci			"sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 24, 0, 0),
286162306a36Sopenharmony_ci	GATE(CLK_SCLK_RGB_TV_VCLK_TO_MIC1, "sclk_rgb_tv_vclk_to_mic1",
286262306a36Sopenharmony_ci			"sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 23, 0, 0),
286362306a36Sopenharmony_ci	GATE(CLK_SCLK_DSIM1, "sclk_dsim1", "div_sclk_dsim1_disp",
286462306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 22, 0, 0),
286562306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_TV_VCLK, "sclk_decon_tv_vclk",
286662306a36Sopenharmony_ci			"div_sclk_decon_tv_vclk_disp",
286762306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 21, 0, 0),
286862306a36Sopenharmony_ci	GATE(CLK_PHYCLK_MIPIDPHY0_BITCLKDIV8, "phyclk_mipidphy0_bitclkdiv8",
286962306a36Sopenharmony_ci			"mout_phyclk_mipidphy0_bitclkdiv8_user",
287062306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 15, 0, 0),
287162306a36Sopenharmony_ci	GATE(CLK_PHYCLK_MIPIDPHY0_RXCLKESC0, "phyclk_mipidphy0_rxclkesc0",
287262306a36Sopenharmony_ci			"mout_phyclk_mipidphy0_rxclkesc0_user",
287362306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 14, 0, 0),
287462306a36Sopenharmony_ci	GATE(CLK_PHYCLK_HDMIPHY_TMDS_CLKO, "phyclk_hdmiphy_tmds_clko",
287562306a36Sopenharmony_ci			"mout_phyclk_hdmiphy_tmds_clko_user",
287662306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 13, 0, 0),
287762306a36Sopenharmony_ci	GATE(CLK_PHYCLK_HDMI_PIXEL, "phyclk_hdmi_pixel",
287862306a36Sopenharmony_ci			"sclk_rgb_tv_vclk", ENABLE_SCLK_DISP, 12, 0, 0),
287962306a36Sopenharmony_ci	GATE(CLK_SCLK_RGB_VCLK_TO_SMIES, "sclk_rgb_vclk_to_smies",
288062306a36Sopenharmony_ci			"sclk_rgb_vclk", ENABLE_SCLK_DISP, 11, 0, 0),
288162306a36Sopenharmony_ci	GATE(CLK_SCLK_RGB_VCLK_TO_DSIM0, "sclk_rgb_vclk_to_dsim0",
288262306a36Sopenharmony_ci			"sclk_rgb_vclk", ENABLE_SCLK_DISP, 9, 0, 0),
288362306a36Sopenharmony_ci	GATE(CLK_SCLK_RGB_VCLK_TO_MIC0, "sclk_rgb_vclk_to_mic0",
288462306a36Sopenharmony_ci			"sclk_rgb_vclk", ENABLE_SCLK_DISP, 8, 0, 0),
288562306a36Sopenharmony_ci	GATE(CLK_SCLK_DSD, "sclk_dsd", "mout_sclk_dsd_user",
288662306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 7, 0, 0),
288762306a36Sopenharmony_ci	GATE(CLK_SCLK_HDMI_SPDIF, "sclk_hdmi_spdif", "sclk_hdmi_spdif_disp",
288862306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 6, 0, 0),
288962306a36Sopenharmony_ci	GATE(CLK_SCLK_DSIM0, "sclk_dsim0", "div_sclk_dsim0_disp",
289062306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 5, 0, 0),
289162306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_TV_ECLK, "sclk_decon_tv_eclk",
289262306a36Sopenharmony_ci			"div_sclk_decon_tv_eclk_disp",
289362306a36Sopenharmony_ci			ENABLE_SCLK_DISP, 4, 0, 0),
289462306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_VCLK, "sclk_decon_vclk",
289562306a36Sopenharmony_ci			"div_sclk_decon_vclk_disp", ENABLE_SCLK_DISP, 3, 0, 0),
289662306a36Sopenharmony_ci	GATE(CLK_SCLK_DECON_ECLK, "sclk_decon_eclk",
289762306a36Sopenharmony_ci			"div_sclk_decon_eclk_disp", ENABLE_SCLK_DISP, 2, 0, 0),
289862306a36Sopenharmony_ci};
289962306a36Sopenharmony_ci
290062306a36Sopenharmony_cistatic const struct samsung_cmu_info disp_cmu_info __initconst = {
290162306a36Sopenharmony_ci	.pll_clks		= disp_pll_clks,
290262306a36Sopenharmony_ci	.nr_pll_clks		= ARRAY_SIZE(disp_pll_clks),
290362306a36Sopenharmony_ci	.mux_clks		= disp_mux_clks,
290462306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(disp_mux_clks),
290562306a36Sopenharmony_ci	.div_clks		= disp_div_clks,
290662306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(disp_div_clks),
290762306a36Sopenharmony_ci	.gate_clks		= disp_gate_clks,
290862306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(disp_gate_clks),
290962306a36Sopenharmony_ci	.fixed_clks		= disp_fixed_clks,
291062306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(disp_fixed_clks),
291162306a36Sopenharmony_ci	.fixed_factor_clks	= disp_fixed_factor_clks,
291262306a36Sopenharmony_ci	.nr_fixed_factor_clks	= ARRAY_SIZE(disp_fixed_factor_clks),
291362306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_DISP,
291462306a36Sopenharmony_ci	.clk_regs		= disp_clk_regs,
291562306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(disp_clk_regs),
291662306a36Sopenharmony_ci	.suspend_regs		= disp_suspend_regs,
291762306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(disp_suspend_regs),
291862306a36Sopenharmony_ci	.clk_name		= "aclk_disp_333",
291962306a36Sopenharmony_ci};
292062306a36Sopenharmony_ci
292162306a36Sopenharmony_ci/*
292262306a36Sopenharmony_ci * Register offset definitions for CMU_AUD
292362306a36Sopenharmony_ci */
292462306a36Sopenharmony_ci#define MUX_SEL_AUD0			0x0200
292562306a36Sopenharmony_ci#define MUX_SEL_AUD1			0x0204
292662306a36Sopenharmony_ci#define MUX_ENABLE_AUD0			0x0300
292762306a36Sopenharmony_ci#define MUX_ENABLE_AUD1			0x0304
292862306a36Sopenharmony_ci#define MUX_STAT_AUD0			0x0400
292962306a36Sopenharmony_ci#define DIV_AUD0			0x0600
293062306a36Sopenharmony_ci#define DIV_AUD1			0x0604
293162306a36Sopenharmony_ci#define DIV_STAT_AUD0			0x0700
293262306a36Sopenharmony_ci#define DIV_STAT_AUD1			0x0704
293362306a36Sopenharmony_ci#define ENABLE_ACLK_AUD			0x0800
293462306a36Sopenharmony_ci#define ENABLE_PCLK_AUD			0x0900
293562306a36Sopenharmony_ci#define ENABLE_SCLK_AUD0		0x0a00
293662306a36Sopenharmony_ci#define ENABLE_SCLK_AUD1		0x0a04
293762306a36Sopenharmony_ci#define ENABLE_IP_AUD0			0x0b00
293862306a36Sopenharmony_ci#define ENABLE_IP_AUD1			0x0b04
293962306a36Sopenharmony_ci
294062306a36Sopenharmony_cistatic const unsigned long aud_clk_regs[] __initconst = {
294162306a36Sopenharmony_ci	MUX_SEL_AUD0,
294262306a36Sopenharmony_ci	MUX_SEL_AUD1,
294362306a36Sopenharmony_ci	MUX_ENABLE_AUD0,
294462306a36Sopenharmony_ci	MUX_ENABLE_AUD1,
294562306a36Sopenharmony_ci	DIV_AUD0,
294662306a36Sopenharmony_ci	DIV_AUD1,
294762306a36Sopenharmony_ci	ENABLE_ACLK_AUD,
294862306a36Sopenharmony_ci	ENABLE_PCLK_AUD,
294962306a36Sopenharmony_ci	ENABLE_SCLK_AUD0,
295062306a36Sopenharmony_ci	ENABLE_SCLK_AUD1,
295162306a36Sopenharmony_ci	ENABLE_IP_AUD0,
295262306a36Sopenharmony_ci	ENABLE_IP_AUD1,
295362306a36Sopenharmony_ci};
295462306a36Sopenharmony_ci
295562306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump aud_suspend_regs[] = {
295662306a36Sopenharmony_ci	{ MUX_SEL_AUD0, 0 },
295762306a36Sopenharmony_ci	{ MUX_SEL_AUD1, 0 },
295862306a36Sopenharmony_ci};
295962306a36Sopenharmony_ci
296062306a36Sopenharmony_ci/* list of all parent clock list */
296162306a36Sopenharmony_ciPNAME(mout_aud_pll_user_aud_p)	= { "oscclk", "fout_aud_pll", };
296262306a36Sopenharmony_ciPNAME(mout_sclk_aud_pcm_p)	= { "mout_aud_pll_user", "ioclk_audiocdclk0",};
296362306a36Sopenharmony_ci
296462306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock aud_fixed_clks[] __initconst = {
296562306a36Sopenharmony_ci	FRATE(0, "ioclk_jtag_tclk", NULL, 0, 33000000),
296662306a36Sopenharmony_ci	FRATE(0, "ioclk_slimbus_clk", NULL, 0, 25000000),
296762306a36Sopenharmony_ci	FRATE(0, "ioclk_i2s_bclk", NULL, 0, 50000000),
296862306a36Sopenharmony_ci};
296962306a36Sopenharmony_ci
297062306a36Sopenharmony_cistatic const struct samsung_mux_clock aud_mux_clks[] __initconst = {
297162306a36Sopenharmony_ci	/* MUX_SEL_AUD0 */
297262306a36Sopenharmony_ci	MUX(CLK_MOUT_AUD_PLL_USER, "mout_aud_pll_user",
297362306a36Sopenharmony_ci			mout_aud_pll_user_aud_p, MUX_SEL_AUD0, 0, 1),
297462306a36Sopenharmony_ci
297562306a36Sopenharmony_ci	/* MUX_SEL_AUD1 */
297662306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_AUD_PCM, "mout_sclk_aud_pcm", mout_sclk_aud_pcm_p,
297762306a36Sopenharmony_ci			MUX_SEL_AUD1, 8, 1),
297862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_AUD_I2S, "mout_sclk_aud_i2s", mout_sclk_aud_pcm_p,
297962306a36Sopenharmony_ci			MUX_SEL_AUD1, 0, 1),
298062306a36Sopenharmony_ci};
298162306a36Sopenharmony_ci
298262306a36Sopenharmony_cistatic const struct samsung_div_clock aud_div_clks[] __initconst = {
298362306a36Sopenharmony_ci	/* DIV_AUD0 */
298462306a36Sopenharmony_ci	DIV(CLK_DIV_ATCLK_AUD, "div_atclk_aud", "div_aud_ca5", DIV_AUD0,
298562306a36Sopenharmony_ci			12, 4),
298662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_DBG_AUD, "div_pclk_dbg_aud", "div_aud_ca5", DIV_AUD0,
298762306a36Sopenharmony_ci			8, 4),
298862306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_AUD, "div_aclk_aud", "div_aud_ca5", DIV_AUD0,
298962306a36Sopenharmony_ci			4, 4),
299062306a36Sopenharmony_ci	DIV(CLK_DIV_AUD_CA5, "div_aud_ca5", "mout_aud_pll_user", DIV_AUD0,
299162306a36Sopenharmony_ci			0, 4),
299262306a36Sopenharmony_ci
299362306a36Sopenharmony_ci	/* DIV_AUD1 */
299462306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUD_SLIMBUS, "div_sclk_aud_slimbus",
299562306a36Sopenharmony_ci			"mout_aud_pll_user", DIV_AUD1, 16, 5),
299662306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUD_UART, "div_sclk_aud_uart", "mout_aud_pll_user",
299762306a36Sopenharmony_ci			DIV_AUD1, 12, 4),
299862306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUD_PCM, "div_sclk_aud_pcm", "mout_sclk_aud_pcm",
299962306a36Sopenharmony_ci			DIV_AUD1, 4, 8),
300062306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_AUD_I2S, "div_sclk_aud_i2s",  "mout_sclk_aud_i2s",
300162306a36Sopenharmony_ci			DIV_AUD1, 0, 4),
300262306a36Sopenharmony_ci};
300362306a36Sopenharmony_ci
300462306a36Sopenharmony_cistatic const struct samsung_gate_clock aud_gate_clks[] __initconst = {
300562306a36Sopenharmony_ci	/* ENABLE_ACLK_AUD */
300662306a36Sopenharmony_ci	GATE(CLK_ACLK_INTR_CTRL, "aclk_intr_ctrl", "div_aclk_aud",
300762306a36Sopenharmony_ci			ENABLE_ACLK_AUD, 12, 0, 0),
300862306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_LPASSX, "aclk_smmu_lpassx", "div_aclk_aud",
300962306a36Sopenharmony_ci			ENABLE_ACLK_AUD, 7, 0, 0),
301062306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_LPASSX, "aclk_xiu_lpassx", "div_aclk_aud",
301162306a36Sopenharmony_ci			ENABLE_ACLK_AUD, 0, 4, 0),
301262306a36Sopenharmony_ci	GATE(CLK_ACLK_AUDNP_133, "aclk_audnp_133", "div_aclk_aud",
301362306a36Sopenharmony_ci			ENABLE_ACLK_AUD, 0, 3, 0),
301462306a36Sopenharmony_ci	GATE(CLK_ACLK_AUDND_133, "aclk_audnd_133", "div_aclk_aud",
301562306a36Sopenharmony_ci			ENABLE_ACLK_AUD, 0, 2, 0),
301662306a36Sopenharmony_ci	GATE(CLK_ACLK_SRAMC, "aclk_sramc", "div_aclk_aud", ENABLE_ACLK_AUD,
301762306a36Sopenharmony_ci			0, 1, 0),
301862306a36Sopenharmony_ci	GATE(CLK_ACLK_DMAC, "aclk_dmac",  "div_aclk_aud", ENABLE_ACLK_AUD,
301962306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
302062306a36Sopenharmony_ci
302162306a36Sopenharmony_ci	/* ENABLE_PCLK_AUD */
302262306a36Sopenharmony_ci	GATE(CLK_PCLK_WDT1, "pclk_wdt1", "div_aclk_aud", ENABLE_PCLK_AUD,
302362306a36Sopenharmony_ci			13, 0, 0),
302462306a36Sopenharmony_ci	GATE(CLK_PCLK_WDT0, "pclk_wdt0", "div_aclk_aud", ENABLE_PCLK_AUD,
302562306a36Sopenharmony_ci			12, 0, 0),
302662306a36Sopenharmony_ci	GATE(CLK_PCLK_SFR1, "pclk_sfr1", "div_aclk_aud", ENABLE_PCLK_AUD,
302762306a36Sopenharmony_ci			11, 0, 0),
302862306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_LPASSX, "pclk_smmu_lpassx", "div_aclk_aud",
302962306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 10, 0, 0),
303062306a36Sopenharmony_ci	GATE(CLK_PCLK_GPIO_AUD, "pclk_gpio_aud", "div_aclk_aud",
303162306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 9, CLK_IGNORE_UNUSED, 0),
303262306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_AUD, "pclk_pmu_aud", "div_aclk_aud",
303362306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 8, CLK_IGNORE_UNUSED, 0),
303462306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_AUD, "pclk_sysreg_aud", "div_aclk_aud",
303562306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 7, CLK_IGNORE_UNUSED, 0),
303662306a36Sopenharmony_ci	GATE(CLK_PCLK_AUD_SLIMBUS, "pclk_aud_slimbus", "div_aclk_aud",
303762306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 6, 0, 0),
303862306a36Sopenharmony_ci	GATE(CLK_PCLK_AUD_UART, "pclk_aud_uart", "div_aclk_aud",
303962306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 5, 0, 0),
304062306a36Sopenharmony_ci	GATE(CLK_PCLK_AUD_PCM, "pclk_aud_pcm", "div_aclk_aud",
304162306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 4, 0, 0),
304262306a36Sopenharmony_ci	GATE(CLK_PCLK_AUD_I2S, "pclk_aud_i2s", "div_aclk_aud",
304362306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 3, 0, 0),
304462306a36Sopenharmony_ci	GATE(CLK_PCLK_TIMER, "pclk_timer", "div_aclk_aud", ENABLE_PCLK_AUD,
304562306a36Sopenharmony_ci			2, 0, 0),
304662306a36Sopenharmony_ci	GATE(CLK_PCLK_SFR0_CTRL, "pclk_sfr0_ctrl", "div_aclk_aud",
304762306a36Sopenharmony_ci			ENABLE_PCLK_AUD, 0, 0, 0),
304862306a36Sopenharmony_ci
304962306a36Sopenharmony_ci	/* ENABLE_SCLK_AUD0 */
305062306a36Sopenharmony_ci	GATE(CLK_ATCLK_AUD, "atclk_aud", "div_atclk_aud", ENABLE_SCLK_AUD0,
305162306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
305262306a36Sopenharmony_ci	GATE(CLK_PCLK_DBG_AUD, "pclk_dbg_aud", "div_pclk_dbg_aud",
305362306a36Sopenharmony_ci			ENABLE_SCLK_AUD0, 1, 0, 0),
305462306a36Sopenharmony_ci	GATE(CLK_SCLK_AUD_CA5, "sclk_aud_ca5", "div_aud_ca5", ENABLE_SCLK_AUD0,
305562306a36Sopenharmony_ci			0, 0, 0),
305662306a36Sopenharmony_ci
305762306a36Sopenharmony_ci	/* ENABLE_SCLK_AUD1 */
305862306a36Sopenharmony_ci	GATE(CLK_SCLK_JTAG_TCK, "sclk_jtag_tck", "ioclk_jtag_tclk",
305962306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 6, 0, 0),
306062306a36Sopenharmony_ci	GATE(CLK_SCLK_SLIMBUS_CLKIN, "sclk_slimbus_clkin", "ioclk_slimbus_clk",
306162306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 5, 0, 0),
306262306a36Sopenharmony_ci	GATE(CLK_SCLK_AUD_SLIMBUS, "sclk_aud_slimbus", "div_sclk_aud_slimbus",
306362306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 4, 0, 0),
306462306a36Sopenharmony_ci	GATE(CLK_SCLK_AUD_UART, "sclk_aud_uart", "div_sclk_aud_uart",
306562306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 3, CLK_IGNORE_UNUSED, 0),
306662306a36Sopenharmony_ci	GATE(CLK_SCLK_AUD_PCM, "sclk_aud_pcm", "div_sclk_aud_pcm",
306762306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 2, 0, 0),
306862306a36Sopenharmony_ci	GATE(CLK_SCLK_I2S_BCLK, "sclk_i2s_bclk", "ioclk_i2s_bclk",
306962306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 1, CLK_IGNORE_UNUSED, 0),
307062306a36Sopenharmony_ci	GATE(CLK_SCLK_AUD_I2S, "sclk_aud_i2s", "div_sclk_aud_i2s",
307162306a36Sopenharmony_ci			ENABLE_SCLK_AUD1, 0, CLK_IGNORE_UNUSED, 0),
307262306a36Sopenharmony_ci};
307362306a36Sopenharmony_ci
307462306a36Sopenharmony_cistatic const struct samsung_cmu_info aud_cmu_info __initconst = {
307562306a36Sopenharmony_ci	.mux_clks		= aud_mux_clks,
307662306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(aud_mux_clks),
307762306a36Sopenharmony_ci	.div_clks		= aud_div_clks,
307862306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(aud_div_clks),
307962306a36Sopenharmony_ci	.gate_clks		= aud_gate_clks,
308062306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(aud_gate_clks),
308162306a36Sopenharmony_ci	.fixed_clks		= aud_fixed_clks,
308262306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(aud_fixed_clks),
308362306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_AUD,
308462306a36Sopenharmony_ci	.clk_regs		= aud_clk_regs,
308562306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(aud_clk_regs),
308662306a36Sopenharmony_ci	.suspend_regs		= aud_suspend_regs,
308762306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(aud_suspend_regs),
308862306a36Sopenharmony_ci	.clk_name		= "fout_aud_pll",
308962306a36Sopenharmony_ci};
309062306a36Sopenharmony_ci
309162306a36Sopenharmony_ci/*
309262306a36Sopenharmony_ci * Register offset definitions for CMU_BUS{0|1|2}
309362306a36Sopenharmony_ci */
309462306a36Sopenharmony_ci#define DIV_BUS				0x0600
309562306a36Sopenharmony_ci#define DIV_STAT_BUS			0x0700
309662306a36Sopenharmony_ci#define ENABLE_ACLK_BUS			0x0800
309762306a36Sopenharmony_ci#define ENABLE_PCLK_BUS			0x0900
309862306a36Sopenharmony_ci#define ENABLE_IP_BUS0			0x0b00
309962306a36Sopenharmony_ci#define ENABLE_IP_BUS1			0x0b04
310062306a36Sopenharmony_ci
310162306a36Sopenharmony_ci#define MUX_SEL_BUS2			0x0200	/* Only for CMU_BUS2 */
310262306a36Sopenharmony_ci#define MUX_ENABLE_BUS2			0x0300	/* Only for CMU_BUS2 */
310362306a36Sopenharmony_ci#define MUX_STAT_BUS2			0x0400	/* Only for CMU_BUS2 */
310462306a36Sopenharmony_ci
310562306a36Sopenharmony_ci/* list of all parent clock list */
310662306a36Sopenharmony_ciPNAME(mout_aclk_bus2_400_p)	= { "oscclk", "aclk_bus2_400", };
310762306a36Sopenharmony_ci
310862306a36Sopenharmony_ci#define CMU_BUS_COMMON_CLK_REGS	\
310962306a36Sopenharmony_ci	DIV_BUS,		\
311062306a36Sopenharmony_ci	ENABLE_ACLK_BUS,	\
311162306a36Sopenharmony_ci	ENABLE_PCLK_BUS,	\
311262306a36Sopenharmony_ci	ENABLE_IP_BUS0,		\
311362306a36Sopenharmony_ci	ENABLE_IP_BUS1
311462306a36Sopenharmony_ci
311562306a36Sopenharmony_cistatic const unsigned long bus01_clk_regs[] __initconst = {
311662306a36Sopenharmony_ci	CMU_BUS_COMMON_CLK_REGS,
311762306a36Sopenharmony_ci};
311862306a36Sopenharmony_ci
311962306a36Sopenharmony_cistatic const unsigned long bus2_clk_regs[] __initconst = {
312062306a36Sopenharmony_ci	MUX_SEL_BUS2,
312162306a36Sopenharmony_ci	MUX_ENABLE_BUS2,
312262306a36Sopenharmony_ci	CMU_BUS_COMMON_CLK_REGS,
312362306a36Sopenharmony_ci};
312462306a36Sopenharmony_ci
312562306a36Sopenharmony_cistatic const struct samsung_div_clock bus0_div_clks[] __initconst = {
312662306a36Sopenharmony_ci	/* DIV_BUS0 */
312762306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus0_133", "aclk_bus0_400",
312862306a36Sopenharmony_ci			DIV_BUS, 0, 3),
312962306a36Sopenharmony_ci};
313062306a36Sopenharmony_ci
313162306a36Sopenharmony_ci/* CMU_BUS0 clocks */
313262306a36Sopenharmony_cistatic const struct samsung_gate_clock bus0_gate_clks[] __initconst = {
313362306a36Sopenharmony_ci	/* ENABLE_ACLK_BUS0 */
313462306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus0p", "div_pclk_bus0_133",
313562306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 4, CLK_IGNORE_UNUSED, 0),
313662306a36Sopenharmony_ci	GATE(CLK_ACLK_BUSNP_133, "aclk_bus0np_133", "div_pclk_bus0_133",
313762306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
313862306a36Sopenharmony_ci	GATE(CLK_ACLK_BUSND_400, "aclk_bus0nd_400", "aclk_bus0_400",
313962306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
314062306a36Sopenharmony_ci
314162306a36Sopenharmony_ci	/* ENABLE_PCLK_BUS0 */
314262306a36Sopenharmony_ci	GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus0srvnd_133", "div_pclk_bus0_133",
314362306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 2, 0, 0),
314462306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus0", "div_pclk_bus0_133",
314562306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
314662306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus0", "div_pclk_bus0_133",
314762306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
314862306a36Sopenharmony_ci};
314962306a36Sopenharmony_ci
315062306a36Sopenharmony_ci/* CMU_BUS1 clocks */
315162306a36Sopenharmony_cistatic const struct samsung_div_clock bus1_div_clks[] __initconst = {
315262306a36Sopenharmony_ci	/* DIV_BUS1 */
315362306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus1_133", "aclk_bus1_400",
315462306a36Sopenharmony_ci			DIV_BUS, 0, 3),
315562306a36Sopenharmony_ci};
315662306a36Sopenharmony_ci
315762306a36Sopenharmony_cistatic const struct samsung_gate_clock bus1_gate_clks[] __initconst = {
315862306a36Sopenharmony_ci	/* ENABLE_ACLK_BUS1 */
315962306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus1p", "div_pclk_bus1_133",
316062306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 4, CLK_IGNORE_UNUSED, 0),
316162306a36Sopenharmony_ci	GATE(CLK_ACLK_BUSNP_133, "aclk_bus1np_133", "div_pclk_bus1_133",
316262306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
316362306a36Sopenharmony_ci	GATE(CLK_ACLK_BUSND_400, "aclk_bus1nd_400", "aclk_bus1_400",
316462306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
316562306a36Sopenharmony_ci
316662306a36Sopenharmony_ci	/* ENABLE_PCLK_BUS1 */
316762306a36Sopenharmony_ci	GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus1srvnd_133", "div_pclk_bus1_133",
316862306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 2, 0, 0),
316962306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus1", "div_pclk_bus1_133",
317062306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
317162306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus1", "div_pclk_bus1_133",
317262306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
317362306a36Sopenharmony_ci};
317462306a36Sopenharmony_ci
317562306a36Sopenharmony_ci/* CMU_BUS2 clocks */
317662306a36Sopenharmony_cistatic const struct samsung_mux_clock bus2_mux_clks[] __initconst = {
317762306a36Sopenharmony_ci	/* MUX_SEL_BUS2 */
317862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_BUS2_400_USER, "mout_aclk_bus2_400_user",
317962306a36Sopenharmony_ci			mout_aclk_bus2_400_p, MUX_SEL_BUS2, 0, 1),
318062306a36Sopenharmony_ci};
318162306a36Sopenharmony_ci
318262306a36Sopenharmony_cistatic const struct samsung_div_clock bus2_div_clks[] __initconst = {
318362306a36Sopenharmony_ci	/* DIV_BUS2 */
318462306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_BUS_133, "div_pclk_bus2_133",
318562306a36Sopenharmony_ci			"mout_aclk_bus2_400_user", DIV_BUS, 0, 3),
318662306a36Sopenharmony_ci};
318762306a36Sopenharmony_ci
318862306a36Sopenharmony_cistatic const struct samsung_gate_clock bus2_gate_clks[] __initconst = {
318962306a36Sopenharmony_ci	/* ENABLE_ACLK_BUS2 */
319062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_BUSP, "aclk_ahb2apb_bus2p", "div_pclk_bus2_133",
319162306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 3, CLK_IGNORE_UNUSED, 0),
319262306a36Sopenharmony_ci	GATE(CLK_ACLK_BUSNP_133, "aclk_bus2np_133", "div_pclk_bus2_133",
319362306a36Sopenharmony_ci			ENABLE_ACLK_BUS, 2, CLK_IGNORE_UNUSED, 0),
319462306a36Sopenharmony_ci	GATE(CLK_ACLK_BUS2BEND_400, "aclk_bus2bend_400",
319562306a36Sopenharmony_ci			"mout_aclk_bus2_400_user", ENABLE_ACLK_BUS,
319662306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
319762306a36Sopenharmony_ci	GATE(CLK_ACLK_BUS2RTND_400, "aclk_bus2rtnd_400",
319862306a36Sopenharmony_ci			"mout_aclk_bus2_400_user", ENABLE_ACLK_BUS,
319962306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
320062306a36Sopenharmony_ci
320162306a36Sopenharmony_ci	/* ENABLE_PCLK_BUS2 */
320262306a36Sopenharmony_ci	GATE(CLK_PCLK_BUSSRVND_133, "pclk_bus2srvnd_133", "div_pclk_bus2_133",
320362306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 2, 0, 0),
320462306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_BUS, "pclk_pmu_bus2", "div_pclk_bus2_133",
320562306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 1, CLK_IGNORE_UNUSED, 0),
320662306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_BUS, "pclk_sysreg_bus2", "div_pclk_bus2_133",
320762306a36Sopenharmony_ci			ENABLE_PCLK_BUS, 0, CLK_IGNORE_UNUSED, 0),
320862306a36Sopenharmony_ci};
320962306a36Sopenharmony_ci
321062306a36Sopenharmony_ci#define CMU_BUS_INFO_CLKS(id)						\
321162306a36Sopenharmony_ci	.div_clks		= bus##id##_div_clks,			\
321262306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(bus##id##_div_clks),	\
321362306a36Sopenharmony_ci	.gate_clks		= bus##id##_gate_clks,			\
321462306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(bus##id##_gate_clks),	\
321562306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_BUSX
321662306a36Sopenharmony_ci
321762306a36Sopenharmony_cistatic const struct samsung_cmu_info bus0_cmu_info __initconst = {
321862306a36Sopenharmony_ci	CMU_BUS_INFO_CLKS(0),
321962306a36Sopenharmony_ci	.clk_regs		= bus01_clk_regs,
322062306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(bus01_clk_regs),
322162306a36Sopenharmony_ci};
322262306a36Sopenharmony_ci
322362306a36Sopenharmony_cistatic const struct samsung_cmu_info bus1_cmu_info __initconst = {
322462306a36Sopenharmony_ci	CMU_BUS_INFO_CLKS(1),
322562306a36Sopenharmony_ci	.clk_regs		= bus01_clk_regs,
322662306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(bus01_clk_regs),
322762306a36Sopenharmony_ci};
322862306a36Sopenharmony_ci
322962306a36Sopenharmony_cistatic const struct samsung_cmu_info bus2_cmu_info __initconst = {
323062306a36Sopenharmony_ci	CMU_BUS_INFO_CLKS(2),
323162306a36Sopenharmony_ci	.mux_clks		= bus2_mux_clks,
323262306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(bus2_mux_clks),
323362306a36Sopenharmony_ci	.clk_regs		= bus2_clk_regs,
323462306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(bus2_clk_regs),
323562306a36Sopenharmony_ci};
323662306a36Sopenharmony_ci
323762306a36Sopenharmony_ci#define exynos5433_cmu_bus_init(id)					\
323862306a36Sopenharmony_cistatic void __init exynos5433_cmu_bus##id##_init(struct device_node *np)\
323962306a36Sopenharmony_ci{									\
324062306a36Sopenharmony_ci	samsung_cmu_register_one(np, &bus##id##_cmu_info);		\
324162306a36Sopenharmony_ci}									\
324262306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_bus##id,					\
324362306a36Sopenharmony_ci		"samsung,exynos5433-cmu-bus"#id,			\
324462306a36Sopenharmony_ci		exynos5433_cmu_bus##id##_init)
324562306a36Sopenharmony_ci
324662306a36Sopenharmony_ciexynos5433_cmu_bus_init(0);
324762306a36Sopenharmony_ciexynos5433_cmu_bus_init(1);
324862306a36Sopenharmony_ciexynos5433_cmu_bus_init(2);
324962306a36Sopenharmony_ci
325062306a36Sopenharmony_ci/*
325162306a36Sopenharmony_ci * Register offset definitions for CMU_G3D
325262306a36Sopenharmony_ci */
325362306a36Sopenharmony_ci#define G3D_PLL_LOCK			0x0000
325462306a36Sopenharmony_ci#define G3D_PLL_CON0			0x0100
325562306a36Sopenharmony_ci#define G3D_PLL_CON1			0x0104
325662306a36Sopenharmony_ci#define G3D_PLL_FREQ_DET		0x010c
325762306a36Sopenharmony_ci#define MUX_SEL_G3D			0x0200
325862306a36Sopenharmony_ci#define MUX_ENABLE_G3D			0x0300
325962306a36Sopenharmony_ci#define MUX_STAT_G3D			0x0400
326062306a36Sopenharmony_ci#define DIV_G3D				0x0600
326162306a36Sopenharmony_ci#define DIV_G3D_PLL_FREQ_DET		0x0604
326262306a36Sopenharmony_ci#define DIV_STAT_G3D			0x0700
326362306a36Sopenharmony_ci#define DIV_STAT_G3D_PLL_FREQ_DET	0x0704
326462306a36Sopenharmony_ci#define ENABLE_ACLK_G3D			0x0800
326562306a36Sopenharmony_ci#define ENABLE_PCLK_G3D			0x0900
326662306a36Sopenharmony_ci#define ENABLE_SCLK_G3D			0x0a00
326762306a36Sopenharmony_ci#define ENABLE_IP_G3D0			0x0b00
326862306a36Sopenharmony_ci#define ENABLE_IP_G3D1			0x0b04
326962306a36Sopenharmony_ci#define CLKOUT_CMU_G3D			0x0c00
327062306a36Sopenharmony_ci#define CLKOUT_CMU_G3D_DIV_STAT		0x0c04
327162306a36Sopenharmony_ci#define CLK_STOPCTRL			0x1000
327262306a36Sopenharmony_ci
327362306a36Sopenharmony_cistatic const unsigned long g3d_clk_regs[] __initconst = {
327462306a36Sopenharmony_ci	G3D_PLL_LOCK,
327562306a36Sopenharmony_ci	G3D_PLL_CON0,
327662306a36Sopenharmony_ci	G3D_PLL_CON1,
327762306a36Sopenharmony_ci	G3D_PLL_FREQ_DET,
327862306a36Sopenharmony_ci	MUX_SEL_G3D,
327962306a36Sopenharmony_ci	MUX_ENABLE_G3D,
328062306a36Sopenharmony_ci	DIV_G3D,
328162306a36Sopenharmony_ci	DIV_G3D_PLL_FREQ_DET,
328262306a36Sopenharmony_ci	ENABLE_ACLK_G3D,
328362306a36Sopenharmony_ci	ENABLE_PCLK_G3D,
328462306a36Sopenharmony_ci	ENABLE_SCLK_G3D,
328562306a36Sopenharmony_ci	ENABLE_IP_G3D0,
328662306a36Sopenharmony_ci	ENABLE_IP_G3D1,
328762306a36Sopenharmony_ci	CLKOUT_CMU_G3D,
328862306a36Sopenharmony_ci	CLKOUT_CMU_G3D_DIV_STAT,
328962306a36Sopenharmony_ci	CLK_STOPCTRL,
329062306a36Sopenharmony_ci};
329162306a36Sopenharmony_ci
329262306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump g3d_suspend_regs[] = {
329362306a36Sopenharmony_ci	{ MUX_SEL_G3D, 0 },
329462306a36Sopenharmony_ci};
329562306a36Sopenharmony_ci
329662306a36Sopenharmony_ci/* list of all parent clock list */
329762306a36Sopenharmony_ciPNAME(mout_aclk_g3d_400_p)	= { "mout_g3d_pll", "aclk_g3d_400", };
329862306a36Sopenharmony_ciPNAME(mout_g3d_pll_p)		= { "oscclk", "fout_g3d_pll", };
329962306a36Sopenharmony_ci
330062306a36Sopenharmony_cistatic const struct samsung_pll_clock g3d_pll_clks[] __initconst = {
330162306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_G3D_PLL, "fout_g3d_pll", "oscclk",
330262306a36Sopenharmony_ci		G3D_PLL_LOCK, G3D_PLL_CON0, exynos5433_pll_rates),
330362306a36Sopenharmony_ci};
330462306a36Sopenharmony_ci
330562306a36Sopenharmony_cistatic const struct samsung_mux_clock g3d_mux_clks[] __initconst = {
330662306a36Sopenharmony_ci	/* MUX_SEL_G3D */
330762306a36Sopenharmony_ci	MUX_F(CLK_MOUT_ACLK_G3D_400, "mout_aclk_g3d_400", mout_aclk_g3d_400_p,
330862306a36Sopenharmony_ci			MUX_SEL_G3D, 8, 1, CLK_SET_RATE_PARENT, 0),
330962306a36Sopenharmony_ci	MUX_F(CLK_MOUT_G3D_PLL, "mout_g3d_pll", mout_g3d_pll_p,
331062306a36Sopenharmony_ci			MUX_SEL_G3D, 0, 1, CLK_SET_RATE_PARENT, 0),
331162306a36Sopenharmony_ci};
331262306a36Sopenharmony_ci
331362306a36Sopenharmony_cistatic const struct samsung_div_clock g3d_div_clks[] __initconst = {
331462306a36Sopenharmony_ci	/* DIV_G3D */
331562306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_HPM_G3D, "div_sclk_hpm_g3d", "mout_g3d_pll", DIV_G3D,
331662306a36Sopenharmony_ci			8, 2),
331762306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_G3D, "div_pclk_g3d", "div_aclk_g3d", DIV_G3D,
331862306a36Sopenharmony_ci			4, 3),
331962306a36Sopenharmony_ci	DIV_F(CLK_DIV_ACLK_G3D, "div_aclk_g3d", "mout_aclk_g3d_400", DIV_G3D,
332062306a36Sopenharmony_ci			0, 3, CLK_SET_RATE_PARENT, 0),
332162306a36Sopenharmony_ci};
332262306a36Sopenharmony_ci
332362306a36Sopenharmony_cistatic const struct samsung_gate_clock g3d_gate_clks[] __initconst = {
332462306a36Sopenharmony_ci	/* ENABLE_ACLK_G3D */
332562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_G3D1, "aclk_bts_g3d1", "div_aclk_g3d",
332662306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 7, 0, 0),
332762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_G3D0, "aclk_bts_g3d0", "div_aclk_g3d",
332862306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 6, 0, 0),
332962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_G3D, "aclk_asyncapbs_g3d", "div_pclk_g3d",
333062306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 5, CLK_IGNORE_UNUSED, 0),
333162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_G3D, "aclk_asyncapbm_g3d", "div_aclk_g3d",
333262306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 4, CLK_IGNORE_UNUSED, 0),
333362306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_G3DP, "aclk_ahb2apb_g3dp", "div_pclk_g3d",
333462306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 3, CLK_IGNORE_UNUSED, 0),
333562306a36Sopenharmony_ci	GATE(CLK_ACLK_G3DNP_150, "aclk_g3dnp_150", "div_pclk_g3d",
333662306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 2, CLK_IGNORE_UNUSED, 0),
333762306a36Sopenharmony_ci	GATE(CLK_ACLK_G3DND_600, "aclk_g3dnd_600", "div_aclk_g3d",
333862306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 1, CLK_IGNORE_UNUSED, 0),
333962306a36Sopenharmony_ci	GATE(CLK_ACLK_G3D, "aclk_g3d", "div_aclk_g3d",
334062306a36Sopenharmony_ci			ENABLE_ACLK_G3D, 0, CLK_SET_RATE_PARENT, 0),
334162306a36Sopenharmony_ci
334262306a36Sopenharmony_ci	/* ENABLE_PCLK_G3D */
334362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_G3D1, "pclk_bts_g3d1", "div_pclk_g3d",
334462306a36Sopenharmony_ci			ENABLE_PCLK_G3D, 3, 0, 0),
334562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_G3D0, "pclk_bts_g3d0", "div_pclk_g3d",
334662306a36Sopenharmony_ci			ENABLE_PCLK_G3D, 2, 0, 0),
334762306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_G3D, "pclk_pmu_g3d", "div_pclk_g3d",
334862306a36Sopenharmony_ci			ENABLE_PCLK_G3D, 1, CLK_IGNORE_UNUSED, 0),
334962306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_G3D, "pclk_sysreg_g3d", "div_pclk_g3d",
335062306a36Sopenharmony_ci			ENABLE_PCLK_G3D, 0, CLK_IGNORE_UNUSED, 0),
335162306a36Sopenharmony_ci
335262306a36Sopenharmony_ci	/* ENABLE_SCLK_G3D */
335362306a36Sopenharmony_ci	GATE(CLK_SCLK_HPM_G3D, "sclk_hpm_g3d", "div_sclk_hpm_g3d",
335462306a36Sopenharmony_ci			ENABLE_SCLK_G3D, 0, 0, 0),
335562306a36Sopenharmony_ci};
335662306a36Sopenharmony_ci
335762306a36Sopenharmony_cistatic const struct samsung_cmu_info g3d_cmu_info __initconst = {
335862306a36Sopenharmony_ci	.pll_clks		= g3d_pll_clks,
335962306a36Sopenharmony_ci	.nr_pll_clks		= ARRAY_SIZE(g3d_pll_clks),
336062306a36Sopenharmony_ci	.mux_clks		= g3d_mux_clks,
336162306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(g3d_mux_clks),
336262306a36Sopenharmony_ci	.div_clks		= g3d_div_clks,
336362306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(g3d_div_clks),
336462306a36Sopenharmony_ci	.gate_clks		= g3d_gate_clks,
336562306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(g3d_gate_clks),
336662306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_G3D,
336762306a36Sopenharmony_ci	.clk_regs		= g3d_clk_regs,
336862306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(g3d_clk_regs),
336962306a36Sopenharmony_ci	.suspend_regs		= g3d_suspend_regs,
337062306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(g3d_suspend_regs),
337162306a36Sopenharmony_ci	.clk_name		= "aclk_g3d_400",
337262306a36Sopenharmony_ci};
337362306a36Sopenharmony_ci
337462306a36Sopenharmony_ci/*
337562306a36Sopenharmony_ci * Register offset definitions for CMU_GSCL
337662306a36Sopenharmony_ci */
337762306a36Sopenharmony_ci#define MUX_SEL_GSCL				0x0200
337862306a36Sopenharmony_ci#define MUX_ENABLE_GSCL				0x0300
337962306a36Sopenharmony_ci#define MUX_STAT_GSCL				0x0400
338062306a36Sopenharmony_ci#define ENABLE_ACLK_GSCL			0x0800
338162306a36Sopenharmony_ci#define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0	0x0804
338262306a36Sopenharmony_ci#define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1	0x0808
338362306a36Sopenharmony_ci#define ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2	0x080c
338462306a36Sopenharmony_ci#define ENABLE_PCLK_GSCL			0x0900
338562306a36Sopenharmony_ci#define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0	0x0904
338662306a36Sopenharmony_ci#define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1	0x0908
338762306a36Sopenharmony_ci#define ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2	0x090c
338862306a36Sopenharmony_ci#define ENABLE_IP_GSCL0				0x0b00
338962306a36Sopenharmony_ci#define ENABLE_IP_GSCL1				0x0b04
339062306a36Sopenharmony_ci#define ENABLE_IP_GSCL_SECURE_SMMU_GSCL0	0x0b08
339162306a36Sopenharmony_ci#define ENABLE_IP_GSCL_SECURE_SMMU_GSCL1	0x0b0c
339262306a36Sopenharmony_ci#define ENABLE_IP_GSCL_SECURE_SMMU_GSCL2	0x0b10
339362306a36Sopenharmony_ci
339462306a36Sopenharmony_cistatic const unsigned long gscl_clk_regs[] __initconst = {
339562306a36Sopenharmony_ci	MUX_SEL_GSCL,
339662306a36Sopenharmony_ci	MUX_ENABLE_GSCL,
339762306a36Sopenharmony_ci	ENABLE_ACLK_GSCL,
339862306a36Sopenharmony_ci	ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0,
339962306a36Sopenharmony_ci	ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1,
340062306a36Sopenharmony_ci	ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2,
340162306a36Sopenharmony_ci	ENABLE_PCLK_GSCL,
340262306a36Sopenharmony_ci	ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0,
340362306a36Sopenharmony_ci	ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1,
340462306a36Sopenharmony_ci	ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2,
340562306a36Sopenharmony_ci	ENABLE_IP_GSCL0,
340662306a36Sopenharmony_ci	ENABLE_IP_GSCL1,
340762306a36Sopenharmony_ci	ENABLE_IP_GSCL_SECURE_SMMU_GSCL0,
340862306a36Sopenharmony_ci	ENABLE_IP_GSCL_SECURE_SMMU_GSCL1,
340962306a36Sopenharmony_ci	ENABLE_IP_GSCL_SECURE_SMMU_GSCL2,
341062306a36Sopenharmony_ci};
341162306a36Sopenharmony_ci
341262306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump gscl_suspend_regs[] = {
341362306a36Sopenharmony_ci	{ MUX_SEL_GSCL, 0 },
341462306a36Sopenharmony_ci	{ ENABLE_ACLK_GSCL, 0xfff },
341562306a36Sopenharmony_ci	{ ENABLE_PCLK_GSCL, 0xff },
341662306a36Sopenharmony_ci};
341762306a36Sopenharmony_ci
341862306a36Sopenharmony_ci/* list of all parent clock list */
341962306a36Sopenharmony_ciPNAME(aclk_gscl_111_user_p)	= { "oscclk", "aclk_gscl_111", };
342062306a36Sopenharmony_ciPNAME(aclk_gscl_333_user_p)	= { "oscclk", "aclk_gscl_333", };
342162306a36Sopenharmony_ci
342262306a36Sopenharmony_cistatic const struct samsung_mux_clock gscl_mux_clks[] __initconst = {
342362306a36Sopenharmony_ci	/* MUX_SEL_GSCL */
342462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_GSCL_111_USER, "mout_aclk_gscl_111_user",
342562306a36Sopenharmony_ci			aclk_gscl_111_user_p, MUX_SEL_GSCL, 4, 1),
342662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_GSCL_333_USER, "mout_aclk_gscl_333_user",
342762306a36Sopenharmony_ci			aclk_gscl_333_user_p, MUX_SEL_GSCL, 0, 1),
342862306a36Sopenharmony_ci};
342962306a36Sopenharmony_ci
343062306a36Sopenharmony_cistatic const struct samsung_gate_clock gscl_gate_clks[] __initconst = {
343162306a36Sopenharmony_ci	/* ENABLE_ACLK_GSCL */
343262306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_GSCL2, "aclk_bts_gscl2", "mout_aclk_gscl_333_user",
343362306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 11, 0, 0),
343462306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_GSCL1, "aclk_bts_gscl1", "mout_aclk_gscl_333_user",
343562306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 10, 0, 0),
343662306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_GSCL0, "aclk_bts_gscl0", "mout_aclk_gscl_333_user",
343762306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 9, 0, 0),
343862306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_GSCLP, "aclk_ahb2apb_gsclp",
343962306a36Sopenharmony_ci			"mout_aclk_gscl_111_user", ENABLE_ACLK_GSCL,
344062306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
344162306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_GSCLX, "aclk_xiu_gsclx", "mout_aclk_gscl_333_user",
344262306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 7, 0, 0),
344362306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCLNP_111, "aclk_gsclnp_111", "mout_aclk_gscl_111_user",
344462306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 6, CLK_IGNORE_UNUSED, 0),
344562306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCLRTND_333, "aclk_gsclrtnd_333",
344662306a36Sopenharmony_ci			"mout_aclk_gscl_333_user", ENABLE_ACLK_GSCL, 5,
344762306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
344862306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCLBEND_333, "aclk_gsclbend_333",
344962306a36Sopenharmony_ci			"mout_aclk_gscl_333_user", ENABLE_ACLK_GSCL, 4,
345062306a36Sopenharmony_ci			CLK_IGNORE_UNUSED, 0),
345162306a36Sopenharmony_ci	GATE(CLK_ACLK_GSD, "aclk_gsd", "mout_aclk_gscl_333_user",
345262306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 3, 0, 0),
345362306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCL2, "aclk_gscl2", "mout_aclk_gscl_333_user",
345462306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 2, 0, 0),
345562306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCL1, "aclk_gscl1", "mout_aclk_gscl_333_user",
345662306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 1, 0, 0),
345762306a36Sopenharmony_ci	GATE(CLK_ACLK_GSCL0, "aclk_gscl0", "mout_aclk_gscl_333_user",
345862306a36Sopenharmony_ci			ENABLE_ACLK_GSCL, 0, 0, 0),
345962306a36Sopenharmony_ci
346062306a36Sopenharmony_ci	/* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0 */
346162306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_GSCL0, "aclk_smmu_gscl0", "mout_aclk_gscl_333_user",
346262306a36Sopenharmony_ci			ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL0, 0, 0, 0),
346362306a36Sopenharmony_ci
346462306a36Sopenharmony_ci	/* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1 */
346562306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_GSCL1, "aclk_smmu_gscl1", "mout_aclk_gscl_333_user",
346662306a36Sopenharmony_ci			ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL1, 0, 0, 0),
346762306a36Sopenharmony_ci
346862306a36Sopenharmony_ci	/* ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2 */
346962306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_GSCL2, "aclk_smmu_gscl2", "mout_aclk_gscl_333_user",
347062306a36Sopenharmony_ci			ENABLE_ACLK_GSCL_SECURE_SMMU_GSCL2, 0, 0, 0),
347162306a36Sopenharmony_ci
347262306a36Sopenharmony_ci	/* ENABLE_PCLK_GSCL */
347362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_GSCL2, "pclk_bts_gscl2", "mout_aclk_gscl_111_user",
347462306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 7, 0, 0),
347562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_GSCL1, "pclk_bts_gscl1", "mout_aclk_gscl_111_user",
347662306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 6, 0, 0),
347762306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_GSCL0, "pclk_bts_gscl0", "mout_aclk_gscl_111_user",
347862306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 5, 0, 0),
347962306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_GSCL, "pclk_pmu_gscl", "mout_aclk_gscl_111_user",
348062306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 4, CLK_IGNORE_UNUSED, 0),
348162306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_GSCL, "pclk_sysreg_gscl",
348262306a36Sopenharmony_ci			"mout_aclk_gscl_111_user", ENABLE_PCLK_GSCL,
348362306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
348462306a36Sopenharmony_ci	GATE(CLK_PCLK_GSCL2, "pclk_gscl2", "mout_aclk_gscl_111_user",
348562306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 2, 0, 0),
348662306a36Sopenharmony_ci	GATE(CLK_PCLK_GSCL1, "pclk_gscl1", "mout_aclk_gscl_111_user",
348762306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 1, 0, 0),
348862306a36Sopenharmony_ci	GATE(CLK_PCLK_GSCL0, "pclk_gscl0", "mout_aclk_gscl_111_user",
348962306a36Sopenharmony_ci			ENABLE_PCLK_GSCL, 0, 0, 0),
349062306a36Sopenharmony_ci
349162306a36Sopenharmony_ci	/* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0 */
349262306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_GSCL0, "pclk_smmu_gscl0", "mout_aclk_gscl_111_user",
349362306a36Sopenharmony_ci		ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL0, 0, 0, 0),
349462306a36Sopenharmony_ci
349562306a36Sopenharmony_ci	/* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1 */
349662306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_GSCL1, "pclk_smmu_gscl1", "mout_aclk_gscl_111_user",
349762306a36Sopenharmony_ci		ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL1, 0, 0, 0),
349862306a36Sopenharmony_ci
349962306a36Sopenharmony_ci	/* ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2 */
350062306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_GSCL2, "pclk_smmu_gscl2", "mout_aclk_gscl_111_user",
350162306a36Sopenharmony_ci		ENABLE_PCLK_GSCL_SECURE_SMMU_GSCL2, 0, 0, 0),
350262306a36Sopenharmony_ci};
350362306a36Sopenharmony_ci
350462306a36Sopenharmony_cistatic const struct samsung_cmu_info gscl_cmu_info __initconst = {
350562306a36Sopenharmony_ci	.mux_clks		= gscl_mux_clks,
350662306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(gscl_mux_clks),
350762306a36Sopenharmony_ci	.gate_clks		= gscl_gate_clks,
350862306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(gscl_gate_clks),
350962306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_GSCL,
351062306a36Sopenharmony_ci	.clk_regs		= gscl_clk_regs,
351162306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(gscl_clk_regs),
351262306a36Sopenharmony_ci	.suspend_regs		= gscl_suspend_regs,
351362306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(gscl_suspend_regs),
351462306a36Sopenharmony_ci	.clk_name		= "aclk_gscl_111",
351562306a36Sopenharmony_ci};
351662306a36Sopenharmony_ci
351762306a36Sopenharmony_ci/*
351862306a36Sopenharmony_ci * Register offset definitions for CMU_APOLLO
351962306a36Sopenharmony_ci */
352062306a36Sopenharmony_ci#define APOLLO_PLL_LOCK				0x0000
352162306a36Sopenharmony_ci#define APOLLO_PLL_CON0				0x0100
352262306a36Sopenharmony_ci#define APOLLO_PLL_CON1				0x0104
352362306a36Sopenharmony_ci#define APOLLO_PLL_FREQ_DET			0x010c
352462306a36Sopenharmony_ci#define MUX_SEL_APOLLO0				0x0200
352562306a36Sopenharmony_ci#define MUX_SEL_APOLLO1				0x0204
352662306a36Sopenharmony_ci#define MUX_SEL_APOLLO2				0x0208
352762306a36Sopenharmony_ci#define MUX_ENABLE_APOLLO0			0x0300
352862306a36Sopenharmony_ci#define MUX_ENABLE_APOLLO1			0x0304
352962306a36Sopenharmony_ci#define MUX_ENABLE_APOLLO2			0x0308
353062306a36Sopenharmony_ci#define MUX_STAT_APOLLO0			0x0400
353162306a36Sopenharmony_ci#define MUX_STAT_APOLLO1			0x0404
353262306a36Sopenharmony_ci#define MUX_STAT_APOLLO2			0x0408
353362306a36Sopenharmony_ci#define DIV_APOLLO0				0x0600
353462306a36Sopenharmony_ci#define DIV_APOLLO1				0x0604
353562306a36Sopenharmony_ci#define DIV_APOLLO_PLL_FREQ_DET			0x0608
353662306a36Sopenharmony_ci#define DIV_STAT_APOLLO0			0x0700
353762306a36Sopenharmony_ci#define DIV_STAT_APOLLO1			0x0704
353862306a36Sopenharmony_ci#define DIV_STAT_APOLLO_PLL_FREQ_DET		0x0708
353962306a36Sopenharmony_ci#define ENABLE_ACLK_APOLLO			0x0800
354062306a36Sopenharmony_ci#define ENABLE_PCLK_APOLLO			0x0900
354162306a36Sopenharmony_ci#define ENABLE_SCLK_APOLLO			0x0a00
354262306a36Sopenharmony_ci#define ENABLE_IP_APOLLO0			0x0b00
354362306a36Sopenharmony_ci#define ENABLE_IP_APOLLO1			0x0b04
354462306a36Sopenharmony_ci#define CLKOUT_CMU_APOLLO			0x0c00
354562306a36Sopenharmony_ci#define CLKOUT_CMU_APOLLO_DIV_STAT		0x0c04
354662306a36Sopenharmony_ci#define ARMCLK_STOPCTRL				0x1000
354762306a36Sopenharmony_ci#define APOLLO_PWR_CTRL				0x1020
354862306a36Sopenharmony_ci#define APOLLO_PWR_CTRL2			0x1024
354962306a36Sopenharmony_ci#define APOLLO_INTR_SPREAD_ENABLE		0x1080
355062306a36Sopenharmony_ci#define APOLLO_INTR_SPREAD_USE_STANDBYWFI	0x1084
355162306a36Sopenharmony_ci#define APOLLO_INTR_SPREAD_BLOCKING_DURATION	0x1088
355262306a36Sopenharmony_ci
355362306a36Sopenharmony_cistatic const unsigned long apollo_clk_regs[] __initconst = {
355462306a36Sopenharmony_ci	APOLLO_PLL_LOCK,
355562306a36Sopenharmony_ci	APOLLO_PLL_CON0,
355662306a36Sopenharmony_ci	APOLLO_PLL_CON1,
355762306a36Sopenharmony_ci	APOLLO_PLL_FREQ_DET,
355862306a36Sopenharmony_ci	MUX_SEL_APOLLO0,
355962306a36Sopenharmony_ci	MUX_SEL_APOLLO1,
356062306a36Sopenharmony_ci	MUX_SEL_APOLLO2,
356162306a36Sopenharmony_ci	MUX_ENABLE_APOLLO0,
356262306a36Sopenharmony_ci	MUX_ENABLE_APOLLO1,
356362306a36Sopenharmony_ci	MUX_ENABLE_APOLLO2,
356462306a36Sopenharmony_ci	DIV_APOLLO0,
356562306a36Sopenharmony_ci	DIV_APOLLO1,
356662306a36Sopenharmony_ci	DIV_APOLLO_PLL_FREQ_DET,
356762306a36Sopenharmony_ci	ENABLE_ACLK_APOLLO,
356862306a36Sopenharmony_ci	ENABLE_PCLK_APOLLO,
356962306a36Sopenharmony_ci	ENABLE_SCLK_APOLLO,
357062306a36Sopenharmony_ci	ENABLE_IP_APOLLO0,
357162306a36Sopenharmony_ci	ENABLE_IP_APOLLO1,
357262306a36Sopenharmony_ci	CLKOUT_CMU_APOLLO,
357362306a36Sopenharmony_ci	CLKOUT_CMU_APOLLO_DIV_STAT,
357462306a36Sopenharmony_ci	ARMCLK_STOPCTRL,
357562306a36Sopenharmony_ci	APOLLO_PWR_CTRL,
357662306a36Sopenharmony_ci	APOLLO_PWR_CTRL2,
357762306a36Sopenharmony_ci	APOLLO_INTR_SPREAD_ENABLE,
357862306a36Sopenharmony_ci	APOLLO_INTR_SPREAD_USE_STANDBYWFI,
357962306a36Sopenharmony_ci	APOLLO_INTR_SPREAD_BLOCKING_DURATION,
358062306a36Sopenharmony_ci};
358162306a36Sopenharmony_ci
358262306a36Sopenharmony_ci/* list of all parent clock list */
358362306a36Sopenharmony_ciPNAME(mout_apollo_pll_p)		= { "oscclk", "fout_apollo_pll", };
358462306a36Sopenharmony_ciPNAME(mout_bus_pll_apollo_user_p)	= { "oscclk", "sclk_bus_pll_apollo", };
358562306a36Sopenharmony_ciPNAME(mout_apollo_p)			= { "mout_apollo_pll",
358662306a36Sopenharmony_ci					    "mout_bus_pll_apollo_user", };
358762306a36Sopenharmony_ci
358862306a36Sopenharmony_cistatic const struct samsung_pll_clock apollo_pll_clks[] __initconst = {
358962306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_APOLLO_PLL, "fout_apollo_pll", "oscclk",
359062306a36Sopenharmony_ci		APOLLO_PLL_LOCK, APOLLO_PLL_CON0, exynos5433_pll_rates),
359162306a36Sopenharmony_ci};
359262306a36Sopenharmony_ci
359362306a36Sopenharmony_cistatic const struct samsung_mux_clock apollo_mux_clks[] __initconst = {
359462306a36Sopenharmony_ci	/* MUX_SEL_APOLLO0 */
359562306a36Sopenharmony_ci	MUX_F(CLK_MOUT_APOLLO_PLL, "mout_apollo_pll", mout_apollo_pll_p,
359662306a36Sopenharmony_ci			MUX_SEL_APOLLO0, 0, 1, CLK_SET_RATE_PARENT |
359762306a36Sopenharmony_ci			CLK_RECALC_NEW_RATES, 0),
359862306a36Sopenharmony_ci
359962306a36Sopenharmony_ci	/* MUX_SEL_APOLLO1 */
360062306a36Sopenharmony_ci	MUX(CLK_MOUT_BUS_PLL_APOLLO_USER, "mout_bus_pll_apollo_user",
360162306a36Sopenharmony_ci			mout_bus_pll_apollo_user_p, MUX_SEL_APOLLO1, 0, 1),
360262306a36Sopenharmony_ci
360362306a36Sopenharmony_ci	/* MUX_SEL_APOLLO2 */
360462306a36Sopenharmony_ci	MUX_F(CLK_MOUT_APOLLO, "mout_apollo", mout_apollo_p, MUX_SEL_APOLLO2,
360562306a36Sopenharmony_ci			0, 1, CLK_SET_RATE_PARENT, 0),
360662306a36Sopenharmony_ci};
360762306a36Sopenharmony_ci
360862306a36Sopenharmony_cistatic const struct samsung_div_clock apollo_div_clks[] __initconst = {
360962306a36Sopenharmony_ci	/* DIV_APOLLO0 */
361062306a36Sopenharmony_ci	DIV_F(CLK_DIV_CNTCLK_APOLLO, "div_cntclk_apollo", "div_apollo2",
361162306a36Sopenharmony_ci			DIV_APOLLO0, 24, 3, CLK_GET_RATE_NOCACHE,
361262306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
361362306a36Sopenharmony_ci	DIV_F(CLK_DIV_PCLK_DBG_APOLLO, "div_pclk_dbg_apollo", "div_apollo2",
361462306a36Sopenharmony_ci			DIV_APOLLO0, 20, 3, CLK_GET_RATE_NOCACHE,
361562306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
361662306a36Sopenharmony_ci	DIV_F(CLK_DIV_ATCLK_APOLLO, "div_atclk_apollo", "div_apollo2",
361762306a36Sopenharmony_ci			DIV_APOLLO0, 16, 3, CLK_GET_RATE_NOCACHE,
361862306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
361962306a36Sopenharmony_ci	DIV_F(CLK_DIV_PCLK_APOLLO, "div_pclk_apollo", "div_apollo2",
362062306a36Sopenharmony_ci			DIV_APOLLO0, 12, 3, CLK_GET_RATE_NOCACHE,
362162306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
362262306a36Sopenharmony_ci	DIV_F(CLK_DIV_ACLK_APOLLO, "div_aclk_apollo", "div_apollo2",
362362306a36Sopenharmony_ci			DIV_APOLLO0, 8, 3, CLK_GET_RATE_NOCACHE,
362462306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
362562306a36Sopenharmony_ci	DIV_F(CLK_DIV_APOLLO2, "div_apollo2", "div_apollo1",
362662306a36Sopenharmony_ci			DIV_APOLLO0, 4, 3, CLK_SET_RATE_PARENT, 0),
362762306a36Sopenharmony_ci	DIV_F(CLK_DIV_APOLLO1, "div_apollo1", "mout_apollo",
362862306a36Sopenharmony_ci			DIV_APOLLO0, 0, 3, CLK_SET_RATE_PARENT, 0),
362962306a36Sopenharmony_ci
363062306a36Sopenharmony_ci	/* DIV_APOLLO1 */
363162306a36Sopenharmony_ci	DIV_F(CLK_DIV_SCLK_HPM_APOLLO, "div_sclk_hpm_apollo", "mout_apollo",
363262306a36Sopenharmony_ci			DIV_APOLLO1, 4, 3, CLK_GET_RATE_NOCACHE,
363362306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
363462306a36Sopenharmony_ci	DIV_F(CLK_DIV_APOLLO_PLL, "div_apollo_pll", "mout_apollo",
363562306a36Sopenharmony_ci			DIV_APOLLO1, 0, 3, CLK_GET_RATE_NOCACHE,
363662306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
363762306a36Sopenharmony_ci};
363862306a36Sopenharmony_ci
363962306a36Sopenharmony_cistatic const struct samsung_gate_clock apollo_gate_clks[] __initconst = {
364062306a36Sopenharmony_ci	/* ENABLE_ACLK_APOLLO */
364162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASATBSLV_APOLLO_3_CSSYS, "aclk_asatbslv_apollo_3_cssys",
364262306a36Sopenharmony_ci			"div_atclk_apollo", ENABLE_ACLK_APOLLO,
364362306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
364462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASATBSLV_APOLLO_2_CSSYS, "aclk_asatbslv_apollo_2_cssys",
364562306a36Sopenharmony_ci			"div_atclk_apollo", ENABLE_ACLK_APOLLO,
364662306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
364762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASATBSLV_APOLLO_1_CSSYS, "aclk_asatbslv_apollo_1_cssys",
364862306a36Sopenharmony_ci			"div_atclk_apollo", ENABLE_ACLK_APOLLO,
364962306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
365062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASATBSLV_APOLLO_0_CSSYS, "aclk_asatbslv_apollo_0_cssys",
365162306a36Sopenharmony_ci			"div_atclk_apollo", ENABLE_ACLK_APOLLO,
365262306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
365362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCACES_APOLLO_CCI, "aclk_asyncaces_apollo_cci",
365462306a36Sopenharmony_ci			"div_aclk_apollo", ENABLE_ACLK_APOLLO,
365562306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
365662306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_APOLLOP, "aclk_ahb2apb_apollop",
365762306a36Sopenharmony_ci			"div_pclk_apollo", ENABLE_ACLK_APOLLO,
365862306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
365962306a36Sopenharmony_ci	GATE(CLK_ACLK_APOLLONP_200, "aclk_apollonp_200",
366062306a36Sopenharmony_ci			"div_pclk_apollo", ENABLE_ACLK_APOLLO,
366162306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
366262306a36Sopenharmony_ci
366362306a36Sopenharmony_ci	/* ENABLE_PCLK_APOLLO */
366462306a36Sopenharmony_ci	GATE(CLK_PCLK_ASAPBMST_CSSYS_APOLLO, "pclk_asapbmst_cssys_apollo",
366562306a36Sopenharmony_ci			"div_pclk_dbg_apollo", ENABLE_PCLK_APOLLO,
366662306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
366762306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_APOLLO, "pclk_pmu_apollo", "div_pclk_apollo",
366862306a36Sopenharmony_ci			ENABLE_PCLK_APOLLO, 1, CLK_IGNORE_UNUSED, 0),
366962306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_APOLLO, "pclk_sysreg_apollo",
367062306a36Sopenharmony_ci			"div_pclk_apollo", ENABLE_PCLK_APOLLO,
367162306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
367262306a36Sopenharmony_ci
367362306a36Sopenharmony_ci	/* ENABLE_SCLK_APOLLO */
367462306a36Sopenharmony_ci	GATE(CLK_CNTCLK_APOLLO, "cntclk_apollo", "div_cntclk_apollo",
367562306a36Sopenharmony_ci			ENABLE_SCLK_APOLLO, 3, CLK_IGNORE_UNUSED, 0),
367662306a36Sopenharmony_ci	GATE(CLK_SCLK_HPM_APOLLO, "sclk_hpm_apollo", "div_sclk_hpm_apollo",
367762306a36Sopenharmony_ci			ENABLE_SCLK_APOLLO, 1, CLK_IGNORE_UNUSED, 0),
367862306a36Sopenharmony_ci};
367962306a36Sopenharmony_ci
368062306a36Sopenharmony_ci#define E5433_APOLLO_DIV0(cntclk, pclk_dbg, atclk, pclk, aclk) \
368162306a36Sopenharmony_ci		(((cntclk) << 24) | ((pclk_dbg) << 20) | ((atclk) << 16) | \
368262306a36Sopenharmony_ci		 ((pclk) << 12) | ((aclk) << 8))
368362306a36Sopenharmony_ci
368462306a36Sopenharmony_ci#define E5433_APOLLO_DIV1(hpm, copy) \
368562306a36Sopenharmony_ci		(((hpm) << 4) | ((copy) << 0))
368662306a36Sopenharmony_ci
368762306a36Sopenharmony_cistatic const struct exynos_cpuclk_cfg_data exynos5433_apolloclk_d[] __initconst = {
368862306a36Sopenharmony_ci	{ 1300000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
368962306a36Sopenharmony_ci	{ 1200000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369062306a36Sopenharmony_ci	{ 1100000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369162306a36Sopenharmony_ci	{ 1000000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369262306a36Sopenharmony_ci	{  900000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369362306a36Sopenharmony_ci	{  800000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369462306a36Sopenharmony_ci	{  700000, E5433_APOLLO_DIV0(3, 7, 7, 7, 2), E5433_APOLLO_DIV1(7, 1), },
369562306a36Sopenharmony_ci	{  600000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
369662306a36Sopenharmony_ci	{  500000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
369762306a36Sopenharmony_ci	{  400000, E5433_APOLLO_DIV0(3, 7, 7, 7, 1), E5433_APOLLO_DIV1(7, 1), },
369862306a36Sopenharmony_ci	{  0 },
369962306a36Sopenharmony_ci};
370062306a36Sopenharmony_ci
370162306a36Sopenharmony_cistatic const struct samsung_cpu_clock apollo_cpu_clks[] __initconst = {
370262306a36Sopenharmony_ci	CPU_CLK(CLK_SCLK_APOLLO, "apolloclk", CLK_MOUT_APOLLO_PLL,
370362306a36Sopenharmony_ci			CLK_MOUT_BUS_PLL_APOLLO_USER,
370462306a36Sopenharmony_ci			CLK_CPU_HAS_E5433_REGS_LAYOUT, 0x200,
370562306a36Sopenharmony_ci			exynos5433_apolloclk_d),
370662306a36Sopenharmony_ci};
370762306a36Sopenharmony_ci
370862306a36Sopenharmony_cistatic const struct samsung_cmu_info apollo_cmu_info __initconst = {
370962306a36Sopenharmony_ci	.pll_clks	= apollo_pll_clks,
371062306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(apollo_pll_clks),
371162306a36Sopenharmony_ci	.mux_clks	= apollo_mux_clks,
371262306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(apollo_mux_clks),
371362306a36Sopenharmony_ci	.div_clks	= apollo_div_clks,
371462306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(apollo_div_clks),
371562306a36Sopenharmony_ci	.gate_clks	= apollo_gate_clks,
371662306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(apollo_gate_clks),
371762306a36Sopenharmony_ci	.cpu_clks	= apollo_cpu_clks,
371862306a36Sopenharmony_ci	.nr_cpu_clks	= ARRAY_SIZE(apollo_cpu_clks),
371962306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_APOLLO,
372062306a36Sopenharmony_ci	.clk_regs	= apollo_clk_regs,
372162306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(apollo_clk_regs),
372262306a36Sopenharmony_ci};
372362306a36Sopenharmony_ci
372462306a36Sopenharmony_cistatic void __init exynos5433_cmu_apollo_init(struct device_node *np)
372562306a36Sopenharmony_ci{
372662306a36Sopenharmony_ci	samsung_cmu_register_one(np, &apollo_cmu_info);
372762306a36Sopenharmony_ci}
372862306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_apollo, "samsung,exynos5433-cmu-apollo",
372962306a36Sopenharmony_ci		exynos5433_cmu_apollo_init);
373062306a36Sopenharmony_ci
373162306a36Sopenharmony_ci/*
373262306a36Sopenharmony_ci * Register offset definitions for CMU_ATLAS
373362306a36Sopenharmony_ci */
373462306a36Sopenharmony_ci#define ATLAS_PLL_LOCK				0x0000
373562306a36Sopenharmony_ci#define ATLAS_PLL_CON0				0x0100
373662306a36Sopenharmony_ci#define ATLAS_PLL_CON1				0x0104
373762306a36Sopenharmony_ci#define ATLAS_PLL_FREQ_DET			0x010c
373862306a36Sopenharmony_ci#define MUX_SEL_ATLAS0				0x0200
373962306a36Sopenharmony_ci#define MUX_SEL_ATLAS1				0x0204
374062306a36Sopenharmony_ci#define MUX_SEL_ATLAS2				0x0208
374162306a36Sopenharmony_ci#define MUX_ENABLE_ATLAS0			0x0300
374262306a36Sopenharmony_ci#define MUX_ENABLE_ATLAS1			0x0304
374362306a36Sopenharmony_ci#define MUX_ENABLE_ATLAS2			0x0308
374462306a36Sopenharmony_ci#define MUX_STAT_ATLAS0				0x0400
374562306a36Sopenharmony_ci#define MUX_STAT_ATLAS1				0x0404
374662306a36Sopenharmony_ci#define MUX_STAT_ATLAS2				0x0408
374762306a36Sopenharmony_ci#define DIV_ATLAS0				0x0600
374862306a36Sopenharmony_ci#define DIV_ATLAS1				0x0604
374962306a36Sopenharmony_ci#define DIV_ATLAS_PLL_FREQ_DET			0x0608
375062306a36Sopenharmony_ci#define DIV_STAT_ATLAS0				0x0700
375162306a36Sopenharmony_ci#define DIV_STAT_ATLAS1				0x0704
375262306a36Sopenharmony_ci#define DIV_STAT_ATLAS_PLL_FREQ_DET		0x0708
375362306a36Sopenharmony_ci#define ENABLE_ACLK_ATLAS			0x0800
375462306a36Sopenharmony_ci#define ENABLE_PCLK_ATLAS			0x0900
375562306a36Sopenharmony_ci#define ENABLE_SCLK_ATLAS			0x0a00
375662306a36Sopenharmony_ci#define ENABLE_IP_ATLAS0			0x0b00
375762306a36Sopenharmony_ci#define ENABLE_IP_ATLAS1			0x0b04
375862306a36Sopenharmony_ci#define CLKOUT_CMU_ATLAS			0x0c00
375962306a36Sopenharmony_ci#define CLKOUT_CMU_ATLAS_DIV_STAT		0x0c04
376062306a36Sopenharmony_ci#define ARMCLK_STOPCTRL				0x1000
376162306a36Sopenharmony_ci#define ATLAS_PWR_CTRL				0x1020
376262306a36Sopenharmony_ci#define ATLAS_PWR_CTRL2				0x1024
376362306a36Sopenharmony_ci#define ATLAS_INTR_SPREAD_ENABLE		0x1080
376462306a36Sopenharmony_ci#define ATLAS_INTR_SPREAD_USE_STANDBYWFI	0x1084
376562306a36Sopenharmony_ci#define ATLAS_INTR_SPREAD_BLOCKING_DURATION	0x1088
376662306a36Sopenharmony_ci
376762306a36Sopenharmony_cistatic const unsigned long atlas_clk_regs[] __initconst = {
376862306a36Sopenharmony_ci	ATLAS_PLL_LOCK,
376962306a36Sopenharmony_ci	ATLAS_PLL_CON0,
377062306a36Sopenharmony_ci	ATLAS_PLL_CON1,
377162306a36Sopenharmony_ci	ATLAS_PLL_FREQ_DET,
377262306a36Sopenharmony_ci	MUX_SEL_ATLAS0,
377362306a36Sopenharmony_ci	MUX_SEL_ATLAS1,
377462306a36Sopenharmony_ci	MUX_SEL_ATLAS2,
377562306a36Sopenharmony_ci	MUX_ENABLE_ATLAS0,
377662306a36Sopenharmony_ci	MUX_ENABLE_ATLAS1,
377762306a36Sopenharmony_ci	MUX_ENABLE_ATLAS2,
377862306a36Sopenharmony_ci	DIV_ATLAS0,
377962306a36Sopenharmony_ci	DIV_ATLAS1,
378062306a36Sopenharmony_ci	DIV_ATLAS_PLL_FREQ_DET,
378162306a36Sopenharmony_ci	ENABLE_ACLK_ATLAS,
378262306a36Sopenharmony_ci	ENABLE_PCLK_ATLAS,
378362306a36Sopenharmony_ci	ENABLE_SCLK_ATLAS,
378462306a36Sopenharmony_ci	ENABLE_IP_ATLAS0,
378562306a36Sopenharmony_ci	ENABLE_IP_ATLAS1,
378662306a36Sopenharmony_ci	CLKOUT_CMU_ATLAS,
378762306a36Sopenharmony_ci	CLKOUT_CMU_ATLAS_DIV_STAT,
378862306a36Sopenharmony_ci	ARMCLK_STOPCTRL,
378962306a36Sopenharmony_ci	ATLAS_PWR_CTRL,
379062306a36Sopenharmony_ci	ATLAS_PWR_CTRL2,
379162306a36Sopenharmony_ci	ATLAS_INTR_SPREAD_ENABLE,
379262306a36Sopenharmony_ci	ATLAS_INTR_SPREAD_USE_STANDBYWFI,
379362306a36Sopenharmony_ci	ATLAS_INTR_SPREAD_BLOCKING_DURATION,
379462306a36Sopenharmony_ci};
379562306a36Sopenharmony_ci
379662306a36Sopenharmony_ci/* list of all parent clock list */
379762306a36Sopenharmony_ciPNAME(mout_atlas_pll_p)			= { "oscclk", "fout_atlas_pll", };
379862306a36Sopenharmony_ciPNAME(mout_bus_pll_atlas_user_p)	= { "oscclk", "sclk_bus_pll_atlas", };
379962306a36Sopenharmony_ciPNAME(mout_atlas_p)			= { "mout_atlas_pll",
380062306a36Sopenharmony_ci					    "mout_bus_pll_atlas_user", };
380162306a36Sopenharmony_ci
380262306a36Sopenharmony_cistatic const struct samsung_pll_clock atlas_pll_clks[] __initconst = {
380362306a36Sopenharmony_ci	PLL(pll_35xx, CLK_FOUT_ATLAS_PLL, "fout_atlas_pll", "oscclk",
380462306a36Sopenharmony_ci		ATLAS_PLL_LOCK, ATLAS_PLL_CON0, exynos5433_pll_rates),
380562306a36Sopenharmony_ci};
380662306a36Sopenharmony_ci
380762306a36Sopenharmony_cistatic const struct samsung_mux_clock atlas_mux_clks[] __initconst = {
380862306a36Sopenharmony_ci	/* MUX_SEL_ATLAS0 */
380962306a36Sopenharmony_ci	MUX_F(CLK_MOUT_ATLAS_PLL, "mout_atlas_pll", mout_atlas_pll_p,
381062306a36Sopenharmony_ci			MUX_SEL_ATLAS0, 0, 1, CLK_SET_RATE_PARENT |
381162306a36Sopenharmony_ci			CLK_RECALC_NEW_RATES, 0),
381262306a36Sopenharmony_ci
381362306a36Sopenharmony_ci	/* MUX_SEL_ATLAS1 */
381462306a36Sopenharmony_ci	MUX(CLK_MOUT_BUS_PLL_ATLAS_USER, "mout_bus_pll_atlas_user",
381562306a36Sopenharmony_ci			mout_bus_pll_atlas_user_p, MUX_SEL_ATLAS1, 0, 1),
381662306a36Sopenharmony_ci
381762306a36Sopenharmony_ci	/* MUX_SEL_ATLAS2 */
381862306a36Sopenharmony_ci	MUX_F(CLK_MOUT_ATLAS, "mout_atlas", mout_atlas_p, MUX_SEL_ATLAS2,
381962306a36Sopenharmony_ci			0, 1, CLK_SET_RATE_PARENT, 0),
382062306a36Sopenharmony_ci};
382162306a36Sopenharmony_ci
382262306a36Sopenharmony_cistatic const struct samsung_div_clock atlas_div_clks[] __initconst = {
382362306a36Sopenharmony_ci	/* DIV_ATLAS0 */
382462306a36Sopenharmony_ci	DIV_F(CLK_DIV_CNTCLK_ATLAS, "div_cntclk_atlas", "div_atlas2",
382562306a36Sopenharmony_ci			DIV_ATLAS0, 24, 3, CLK_GET_RATE_NOCACHE,
382662306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
382762306a36Sopenharmony_ci	DIV_F(CLK_DIV_PCLK_DBG_ATLAS, "div_pclk_dbg_atlas", "div_atclk_atlas",
382862306a36Sopenharmony_ci			DIV_ATLAS0, 20, 3, CLK_GET_RATE_NOCACHE,
382962306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
383062306a36Sopenharmony_ci	DIV_F(CLK_DIV_ATCLK_ATLASO, "div_atclk_atlas", "div_atlas2",
383162306a36Sopenharmony_ci			DIV_ATLAS0, 16, 3, CLK_GET_RATE_NOCACHE,
383262306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
383362306a36Sopenharmony_ci	DIV_F(CLK_DIV_PCLK_ATLAS, "div_pclk_atlas", "div_atlas2",
383462306a36Sopenharmony_ci			DIV_ATLAS0, 12, 3, CLK_GET_RATE_NOCACHE,
383562306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
383662306a36Sopenharmony_ci	DIV_F(CLK_DIV_ACLK_ATLAS, "div_aclk_atlas", "div_atlas2",
383762306a36Sopenharmony_ci			DIV_ATLAS0, 8, 3, CLK_GET_RATE_NOCACHE,
383862306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
383962306a36Sopenharmony_ci	DIV_F(CLK_DIV_ATLAS2, "div_atlas2", "div_atlas1",
384062306a36Sopenharmony_ci			DIV_ATLAS0, 4, 3, CLK_SET_RATE_PARENT, 0),
384162306a36Sopenharmony_ci	DIV_F(CLK_DIV_ATLAS1, "div_atlas1", "mout_atlas",
384262306a36Sopenharmony_ci			DIV_ATLAS0, 0, 3, CLK_SET_RATE_PARENT, 0),
384362306a36Sopenharmony_ci
384462306a36Sopenharmony_ci	/* DIV_ATLAS1 */
384562306a36Sopenharmony_ci	DIV_F(CLK_DIV_SCLK_HPM_ATLAS, "div_sclk_hpm_atlas", "mout_atlas",
384662306a36Sopenharmony_ci			DIV_ATLAS1, 4, 3, CLK_GET_RATE_NOCACHE,
384762306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
384862306a36Sopenharmony_ci	DIV_F(CLK_DIV_ATLAS_PLL, "div_atlas_pll", "mout_atlas",
384962306a36Sopenharmony_ci			DIV_ATLAS1, 0, 3, CLK_GET_RATE_NOCACHE,
385062306a36Sopenharmony_ci			CLK_DIVIDER_READ_ONLY),
385162306a36Sopenharmony_ci};
385262306a36Sopenharmony_ci
385362306a36Sopenharmony_cistatic const struct samsung_gate_clock atlas_gate_clks[] __initconst = {
385462306a36Sopenharmony_ci	/* ENABLE_ACLK_ATLAS */
385562306a36Sopenharmony_ci	GATE(CLK_ACLK_ATB_AUD_CSSYS, "aclk_atb_aud_cssys",
385662306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
385762306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
385862306a36Sopenharmony_ci	GATE(CLK_ACLK_ATB_APOLLO3_CSSYS, "aclk_atb_apollo3_cssys",
385962306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
386062306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
386162306a36Sopenharmony_ci	GATE(CLK_ACLK_ATB_APOLLO2_CSSYS, "aclk_atb_apollo2_cssys",
386262306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
386362306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
386462306a36Sopenharmony_ci	GATE(CLK_ACLK_ATB_APOLLO1_CSSYS, "aclk_atb_apollo1_cssys",
386562306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
386662306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
386762306a36Sopenharmony_ci	GATE(CLK_ACLK_ATB_APOLLO0_CSSYS, "aclk_atb_apollo0_cssys",
386862306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
386962306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
387062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAHBS_CSSYS_SSS, "aclk_asyncahbs_cssys_sss",
387162306a36Sopenharmony_ci			"div_atclk_atlas", ENABLE_ACLK_ATLAS,
387262306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
387362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_CSSYS_CCIX, "aclk_asyncaxis_cssys_ccix",
387462306a36Sopenharmony_ci			"div_pclk_dbg_atlas", ENABLE_ACLK_ATLAS,
387562306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
387662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCACES_ATLAS_CCI, "aclk_asyncaces_atlas_cci",
387762306a36Sopenharmony_ci			"div_aclk_atlas", ENABLE_ACLK_ATLAS,
387862306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
387962306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ATLASP, "aclk_ahb2apb_atlasp", "div_pclk_atlas",
388062306a36Sopenharmony_ci			ENABLE_ACLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
388162306a36Sopenharmony_ci	GATE(CLK_ACLK_ATLASNP_200, "aclk_atlasnp_200", "div_pclk_atlas",
388262306a36Sopenharmony_ci			ENABLE_ACLK_ATLAS, 0, CLK_IGNORE_UNUSED, 0),
388362306a36Sopenharmony_ci
388462306a36Sopenharmony_ci	/* ENABLE_PCLK_ATLAS */
388562306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAPB_AUD_CSSYS, "pclk_asyncapb_aud_cssys",
388662306a36Sopenharmony_ci			"div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
388762306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
388862306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAPB_ISP_CSSYS, "pclk_asyncapb_isp_cssys",
388962306a36Sopenharmony_ci			"div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
389062306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
389162306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAPB_APOLLO_CSSYS, "pclk_asyncapb_apollo_cssys",
389262306a36Sopenharmony_ci			"div_pclk_dbg_atlas", ENABLE_PCLK_ATLAS,
389362306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
389462306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_ATLAS, "pclk_pmu_atlas", "div_pclk_atlas",
389562306a36Sopenharmony_ci			ENABLE_PCLK_ATLAS, 2, CLK_IGNORE_UNUSED, 0),
389662306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_ATLAS, "pclk_sysreg_atlas", "div_pclk_atlas",
389762306a36Sopenharmony_ci			ENABLE_PCLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
389862306a36Sopenharmony_ci	GATE(CLK_PCLK_SECJTAG, "pclk_secjtag", "div_pclk_dbg_atlas",
389962306a36Sopenharmony_ci			ENABLE_PCLK_ATLAS, 0, CLK_IGNORE_UNUSED, 0),
390062306a36Sopenharmony_ci
390162306a36Sopenharmony_ci	/* ENABLE_SCLK_ATLAS */
390262306a36Sopenharmony_ci	GATE(CLK_CNTCLK_ATLAS, "cntclk_atlas", "div_cntclk_atlas",
390362306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 10, CLK_IGNORE_UNUSED, 0),
390462306a36Sopenharmony_ci	GATE(CLK_SCLK_HPM_ATLAS, "sclk_hpm_atlas", "div_sclk_hpm_atlas",
390562306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 7, CLK_IGNORE_UNUSED, 0),
390662306a36Sopenharmony_ci	GATE(CLK_TRACECLK, "traceclk", "div_atclk_atlas",
390762306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 6, CLK_IGNORE_UNUSED, 0),
390862306a36Sopenharmony_ci	GATE(CLK_CTMCLK, "ctmclk", "div_atclk_atlas",
390962306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 5, CLK_IGNORE_UNUSED, 0),
391062306a36Sopenharmony_ci	GATE(CLK_HCLK_CSSYS, "hclk_cssys", "div_atclk_atlas",
391162306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 4, CLK_IGNORE_UNUSED, 0),
391262306a36Sopenharmony_ci	GATE(CLK_PCLK_DBG_CSSYS, "pclk_dbg_cssys", "div_pclk_dbg_atlas",
391362306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 3, CLK_IGNORE_UNUSED, 0),
391462306a36Sopenharmony_ci	GATE(CLK_PCLK_DBG, "pclk_dbg", "div_pclk_dbg_atlas",
391562306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 2, CLK_IGNORE_UNUSED, 0),
391662306a36Sopenharmony_ci	GATE(CLK_ATCLK, "atclk", "div_atclk_atlas",
391762306a36Sopenharmony_ci			ENABLE_SCLK_ATLAS, 1, CLK_IGNORE_UNUSED, 0),
391862306a36Sopenharmony_ci};
391962306a36Sopenharmony_ci
392062306a36Sopenharmony_ci#define E5433_ATLAS_DIV0(cntclk, pclk_dbg, atclk, pclk, aclk) \
392162306a36Sopenharmony_ci		(((cntclk) << 24) | ((pclk_dbg) << 20) | ((atclk) << 16) | \
392262306a36Sopenharmony_ci		 ((pclk) << 12) | ((aclk) << 8))
392362306a36Sopenharmony_ci
392462306a36Sopenharmony_ci#define E5433_ATLAS_DIV1(hpm, copy) \
392562306a36Sopenharmony_ci		(((hpm) << 4) | ((copy) << 0))
392662306a36Sopenharmony_ci
392762306a36Sopenharmony_cistatic const struct exynos_cpuclk_cfg_data exynos5433_atlasclk_d[] __initconst = {
392862306a36Sopenharmony_ci	{ 1900000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
392962306a36Sopenharmony_ci	{ 1800000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
393062306a36Sopenharmony_ci	{ 1700000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
393162306a36Sopenharmony_ci	{ 1600000, E5433_ATLAS_DIV0(7, 7, 7, 7, 4), E5433_ATLAS_DIV1(7, 1), },
393262306a36Sopenharmony_ci	{ 1500000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393362306a36Sopenharmony_ci	{ 1400000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393462306a36Sopenharmony_ci	{ 1300000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393562306a36Sopenharmony_ci	{ 1200000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393662306a36Sopenharmony_ci	{ 1100000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393762306a36Sopenharmony_ci	{ 1000000, E5433_ATLAS_DIV0(7, 7, 7, 7, 3), E5433_ATLAS_DIV1(7, 1), },
393862306a36Sopenharmony_ci	{  900000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
393962306a36Sopenharmony_ci	{  800000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
394062306a36Sopenharmony_ci	{  700000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
394162306a36Sopenharmony_ci	{  600000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
394262306a36Sopenharmony_ci	{  500000, E5433_ATLAS_DIV0(7, 7, 7, 7, 2), E5433_ATLAS_DIV1(7, 1), },
394362306a36Sopenharmony_ci	{  0 },
394462306a36Sopenharmony_ci};
394562306a36Sopenharmony_ci
394662306a36Sopenharmony_cistatic const struct samsung_cpu_clock atlas_cpu_clks[] __initconst = {
394762306a36Sopenharmony_ci	CPU_CLK(CLK_SCLK_ATLAS, "atlasclk", CLK_MOUT_ATLAS_PLL,
394862306a36Sopenharmony_ci			CLK_MOUT_BUS_PLL_ATLAS_USER,
394962306a36Sopenharmony_ci			CLK_CPU_HAS_E5433_REGS_LAYOUT, 0x200,
395062306a36Sopenharmony_ci			exynos5433_atlasclk_d),
395162306a36Sopenharmony_ci};
395262306a36Sopenharmony_ci
395362306a36Sopenharmony_cistatic const struct samsung_cmu_info atlas_cmu_info __initconst = {
395462306a36Sopenharmony_ci	.pll_clks	= atlas_pll_clks,
395562306a36Sopenharmony_ci	.nr_pll_clks	= ARRAY_SIZE(atlas_pll_clks),
395662306a36Sopenharmony_ci	.mux_clks	= atlas_mux_clks,
395762306a36Sopenharmony_ci	.nr_mux_clks	= ARRAY_SIZE(atlas_mux_clks),
395862306a36Sopenharmony_ci	.div_clks	= atlas_div_clks,
395962306a36Sopenharmony_ci	.nr_div_clks	= ARRAY_SIZE(atlas_div_clks),
396062306a36Sopenharmony_ci	.gate_clks	= atlas_gate_clks,
396162306a36Sopenharmony_ci	.nr_gate_clks	= ARRAY_SIZE(atlas_gate_clks),
396262306a36Sopenharmony_ci	.cpu_clks	= atlas_cpu_clks,
396362306a36Sopenharmony_ci	.nr_cpu_clks	= ARRAY_SIZE(atlas_cpu_clks),
396462306a36Sopenharmony_ci	.nr_clk_ids	= CLKS_NR_ATLAS,
396562306a36Sopenharmony_ci	.clk_regs	= atlas_clk_regs,
396662306a36Sopenharmony_ci	.nr_clk_regs	= ARRAY_SIZE(atlas_clk_regs),
396762306a36Sopenharmony_ci};
396862306a36Sopenharmony_ci
396962306a36Sopenharmony_cistatic void __init exynos5433_cmu_atlas_init(struct device_node *np)
397062306a36Sopenharmony_ci{
397162306a36Sopenharmony_ci	samsung_cmu_register_one(np, &atlas_cmu_info);
397262306a36Sopenharmony_ci}
397362306a36Sopenharmony_ciCLK_OF_DECLARE(exynos5433_cmu_atlas, "samsung,exynos5433-cmu-atlas",
397462306a36Sopenharmony_ci		exynos5433_cmu_atlas_init);
397562306a36Sopenharmony_ci
397662306a36Sopenharmony_ci/*
397762306a36Sopenharmony_ci * Register offset definitions for CMU_MSCL
397862306a36Sopenharmony_ci */
397962306a36Sopenharmony_ci#define MUX_SEL_MSCL0					0x0200
398062306a36Sopenharmony_ci#define MUX_SEL_MSCL1					0x0204
398162306a36Sopenharmony_ci#define MUX_ENABLE_MSCL0				0x0300
398262306a36Sopenharmony_ci#define MUX_ENABLE_MSCL1				0x0304
398362306a36Sopenharmony_ci#define MUX_STAT_MSCL0					0x0400
398462306a36Sopenharmony_ci#define MUX_STAT_MSCL1					0x0404
398562306a36Sopenharmony_ci#define DIV_MSCL					0x0600
398662306a36Sopenharmony_ci#define DIV_STAT_MSCL					0x0700
398762306a36Sopenharmony_ci#define ENABLE_ACLK_MSCL				0x0800
398862306a36Sopenharmony_ci#define ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0		0x0804
398962306a36Sopenharmony_ci#define ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1		0x0808
399062306a36Sopenharmony_ci#define ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG		0x080c
399162306a36Sopenharmony_ci#define ENABLE_PCLK_MSCL				0x0900
399262306a36Sopenharmony_ci#define ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0		0x0904
399362306a36Sopenharmony_ci#define ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1		0x0908
399462306a36Sopenharmony_ci#define ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG		0x090c
399562306a36Sopenharmony_ci#define ENABLE_SCLK_MSCL				0x0a00
399662306a36Sopenharmony_ci#define ENABLE_IP_MSCL0					0x0b00
399762306a36Sopenharmony_ci#define ENABLE_IP_MSCL1					0x0b04
399862306a36Sopenharmony_ci#define ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER0		0x0b08
399962306a36Sopenharmony_ci#define ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER1		0x0b0c
400062306a36Sopenharmony_ci#define ENABLE_IP_MSCL_SECURE_SMMU_JPEG			0x0b10
400162306a36Sopenharmony_ci
400262306a36Sopenharmony_cistatic const unsigned long mscl_clk_regs[] __initconst = {
400362306a36Sopenharmony_ci	MUX_SEL_MSCL0,
400462306a36Sopenharmony_ci	MUX_SEL_MSCL1,
400562306a36Sopenharmony_ci	MUX_ENABLE_MSCL0,
400662306a36Sopenharmony_ci	MUX_ENABLE_MSCL1,
400762306a36Sopenharmony_ci	DIV_MSCL,
400862306a36Sopenharmony_ci	ENABLE_ACLK_MSCL,
400962306a36Sopenharmony_ci	ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0,
401062306a36Sopenharmony_ci	ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1,
401162306a36Sopenharmony_ci	ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG,
401262306a36Sopenharmony_ci	ENABLE_PCLK_MSCL,
401362306a36Sopenharmony_ci	ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0,
401462306a36Sopenharmony_ci	ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1,
401562306a36Sopenharmony_ci	ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG,
401662306a36Sopenharmony_ci	ENABLE_SCLK_MSCL,
401762306a36Sopenharmony_ci	ENABLE_IP_MSCL0,
401862306a36Sopenharmony_ci	ENABLE_IP_MSCL1,
401962306a36Sopenharmony_ci	ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER0,
402062306a36Sopenharmony_ci	ENABLE_IP_MSCL_SECURE_SMMU_M2MSCALER1,
402162306a36Sopenharmony_ci	ENABLE_IP_MSCL_SECURE_SMMU_JPEG,
402262306a36Sopenharmony_ci};
402362306a36Sopenharmony_ci
402462306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump mscl_suspend_regs[] = {
402562306a36Sopenharmony_ci	{ MUX_SEL_MSCL0, 0 },
402662306a36Sopenharmony_ci	{ MUX_SEL_MSCL1, 0 },
402762306a36Sopenharmony_ci};
402862306a36Sopenharmony_ci
402962306a36Sopenharmony_ci/* list of all parent clock list */
403062306a36Sopenharmony_ciPNAME(mout_sclk_jpeg_user_p)		= { "oscclk", "sclk_jpeg_mscl", };
403162306a36Sopenharmony_ciPNAME(mout_aclk_mscl_400_user_p)	= { "oscclk", "aclk_mscl_400", };
403262306a36Sopenharmony_ciPNAME(mout_sclk_jpeg_p)			= { "mout_sclk_jpeg_user",
403362306a36Sopenharmony_ci					"mout_aclk_mscl_400_user", };
403462306a36Sopenharmony_ci
403562306a36Sopenharmony_cistatic const struct samsung_mux_clock mscl_mux_clks[] __initconst = {
403662306a36Sopenharmony_ci	/* MUX_SEL_MSCL0 */
403762306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_JPEG_USER, "mout_sclk_jpeg_user",
403862306a36Sopenharmony_ci			mout_sclk_jpeg_user_p, MUX_SEL_MSCL0, 4, 1),
403962306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MSCL_400_USER, "mout_aclk_mscl_400_user",
404062306a36Sopenharmony_ci			mout_aclk_mscl_400_user_p, MUX_SEL_MSCL0, 0, 1),
404162306a36Sopenharmony_ci
404262306a36Sopenharmony_ci	/* MUX_SEL_MSCL1 */
404362306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_JPEG, "mout_sclk_jpeg", mout_sclk_jpeg_p,
404462306a36Sopenharmony_ci			MUX_SEL_MSCL1, 0, 1),
404562306a36Sopenharmony_ci};
404662306a36Sopenharmony_ci
404762306a36Sopenharmony_cistatic const struct samsung_div_clock mscl_div_clks[] __initconst = {
404862306a36Sopenharmony_ci	/* DIV_MSCL */
404962306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_MSCL, "div_pclk_mscl", "mout_aclk_mscl_400_user",
405062306a36Sopenharmony_ci			DIV_MSCL, 0, 3),
405162306a36Sopenharmony_ci};
405262306a36Sopenharmony_ci
405362306a36Sopenharmony_cistatic const struct samsung_gate_clock mscl_gate_clks[] __initconst = {
405462306a36Sopenharmony_ci	/* ENABLE_ACLK_MSCL */
405562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_JPEG, "aclk_bts_jpeg", "mout_aclk_mscl_400_user",
405662306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 9, 0, 0),
405762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_M2MSCALER1, "aclk_bts_m2mscaler1",
405862306a36Sopenharmony_ci			"mout_aclk_mscl_400_user", ENABLE_ACLK_MSCL, 8, 0, 0),
405962306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_M2MSCALER0, "aclk_bts_m2mscaler0",
406062306a36Sopenharmony_ci			"mout_aclk_mscl_400_user", ENABLE_ACLK_MSCL, 7, 0, 0),
406162306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_MSCL0P, "aclk_abh2apb_mscl0p", "div_pclk_mscl",
406262306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 6, CLK_IGNORE_UNUSED, 0),
406362306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_MSCLX, "aclk_xiu_msclx", "mout_aclk_mscl_400_user",
406462306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 5, CLK_IGNORE_UNUSED, 0),
406562306a36Sopenharmony_ci	GATE(CLK_ACLK_MSCLNP_100, "aclk_msclnp_100", "div_pclk_mscl",
406662306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 4, CLK_IGNORE_UNUSED, 0),
406762306a36Sopenharmony_ci	GATE(CLK_ACLK_MSCLND_400, "aclk_msclnd_400", "mout_aclk_mscl_400_user",
406862306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 3, CLK_IGNORE_UNUSED, 0),
406962306a36Sopenharmony_ci	GATE(CLK_ACLK_JPEG, "aclk_jpeg", "mout_aclk_mscl_400_user",
407062306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 2, 0, 0),
407162306a36Sopenharmony_ci	GATE(CLK_ACLK_M2MSCALER1, "aclk_m2mscaler1", "mout_aclk_mscl_400_user",
407262306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 1, 0, 0),
407362306a36Sopenharmony_ci	GATE(CLK_ACLK_M2MSCALER0, "aclk_m2mscaler0", "mout_aclk_mscl_400_user",
407462306a36Sopenharmony_ci			ENABLE_ACLK_MSCL, 0, 0, 0),
407562306a36Sopenharmony_ci
407662306a36Sopenharmony_ci	/* ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0 */
407762306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_M2MSCALER0, "aclk_smmu_m2mscaler0",
407862306a36Sopenharmony_ci			"mout_aclk_mscl_400_user",
407962306a36Sopenharmony_ci			ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER0,
408062306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
408162306a36Sopenharmony_ci
408262306a36Sopenharmony_ci	/* ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1 */
408362306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_M2MSCALER1, "aclk_smmu_m2mscaler1",
408462306a36Sopenharmony_ci			"mout_aclk_mscl_400_user",
408562306a36Sopenharmony_ci			ENABLE_ACLK_MSCL_SECURE_SMMU_M2MSCALER1,
408662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
408762306a36Sopenharmony_ci
408862306a36Sopenharmony_ci	/* ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG */
408962306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_JPEG, "aclk_smmu_jpeg", "mout_aclk_mscl_400_user",
409062306a36Sopenharmony_ci			ENABLE_ACLK_MSCL_SECURE_SMMU_JPEG,
409162306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
409262306a36Sopenharmony_ci
409362306a36Sopenharmony_ci	/* ENABLE_PCLK_MSCL */
409462306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_JPEG, "pclk_bts_jpeg", "div_pclk_mscl",
409562306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 7, 0, 0),
409662306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_M2MSCALER1, "pclk_bts_m2mscaler1", "div_pclk_mscl",
409762306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 6, 0, 0),
409862306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_M2MSCALER0, "pclk_bts_m2mscaler0", "div_pclk_mscl",
409962306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 5, 0, 0),
410062306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_MSCL, "pclk_pmu_mscl", "div_pclk_mscl",
410162306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 4, CLK_IGNORE_UNUSED, 0),
410262306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_MSCL, "pclk_sysreg_mscl", "div_pclk_mscl",
410362306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 3, CLK_IGNORE_UNUSED, 0),
410462306a36Sopenharmony_ci	GATE(CLK_PCLK_JPEG, "pclk_jpeg", "div_pclk_mscl",
410562306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 2, 0, 0),
410662306a36Sopenharmony_ci	GATE(CLK_PCLK_M2MSCALER1, "pclk_m2mscaler1", "div_pclk_mscl",
410762306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 1, 0, 0),
410862306a36Sopenharmony_ci	GATE(CLK_PCLK_M2MSCALER0, "pclk_m2mscaler0", "div_pclk_mscl",
410962306a36Sopenharmony_ci			ENABLE_PCLK_MSCL, 0, 0, 0),
411062306a36Sopenharmony_ci
411162306a36Sopenharmony_ci	/* ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0 */
411262306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_M2MSCALER0, "pclk_smmu_m2mscaler0", "div_pclk_mscl",
411362306a36Sopenharmony_ci			ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER0,
411462306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
411562306a36Sopenharmony_ci
411662306a36Sopenharmony_ci	/* ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1 */
411762306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_M2MSCALER1, "pclk_smmu_m2mscaler1", "div_pclk_mscl",
411862306a36Sopenharmony_ci			ENABLE_PCLK_MSCL_SECURE_SMMU_M2MSCALER1,
411962306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
412062306a36Sopenharmony_ci
412162306a36Sopenharmony_ci	/* ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG */
412262306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_JPEG, "pclk_smmu_jpeg", "div_pclk_mscl",
412362306a36Sopenharmony_ci			ENABLE_PCLK_MSCL_SECURE_SMMU_JPEG,
412462306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
412562306a36Sopenharmony_ci
412662306a36Sopenharmony_ci	/* ENABLE_SCLK_MSCL */
412762306a36Sopenharmony_ci	GATE(CLK_SCLK_JPEG, "sclk_jpeg", "mout_sclk_jpeg", ENABLE_SCLK_MSCL, 0,
412862306a36Sopenharmony_ci			CLK_IGNORE_UNUSED | CLK_SET_RATE_PARENT, 0),
412962306a36Sopenharmony_ci};
413062306a36Sopenharmony_ci
413162306a36Sopenharmony_cistatic const struct samsung_cmu_info mscl_cmu_info __initconst = {
413262306a36Sopenharmony_ci	.mux_clks		= mscl_mux_clks,
413362306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(mscl_mux_clks),
413462306a36Sopenharmony_ci	.div_clks		= mscl_div_clks,
413562306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(mscl_div_clks),
413662306a36Sopenharmony_ci	.gate_clks		= mscl_gate_clks,
413762306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(mscl_gate_clks),
413862306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_MSCL,
413962306a36Sopenharmony_ci	.clk_regs		= mscl_clk_regs,
414062306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(mscl_clk_regs),
414162306a36Sopenharmony_ci	.suspend_regs		= mscl_suspend_regs,
414262306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(mscl_suspend_regs),
414362306a36Sopenharmony_ci	.clk_name		= "aclk_mscl_400",
414462306a36Sopenharmony_ci};
414562306a36Sopenharmony_ci
414662306a36Sopenharmony_ci/*
414762306a36Sopenharmony_ci * Register offset definitions for CMU_MFC
414862306a36Sopenharmony_ci */
414962306a36Sopenharmony_ci#define MUX_SEL_MFC				0x0200
415062306a36Sopenharmony_ci#define MUX_ENABLE_MFC				0x0300
415162306a36Sopenharmony_ci#define MUX_STAT_MFC				0x0400
415262306a36Sopenharmony_ci#define DIV_MFC					0x0600
415362306a36Sopenharmony_ci#define DIV_STAT_MFC				0x0700
415462306a36Sopenharmony_ci#define ENABLE_ACLK_MFC				0x0800
415562306a36Sopenharmony_ci#define ENABLE_ACLK_MFC_SECURE_SMMU_MFC		0x0804
415662306a36Sopenharmony_ci#define ENABLE_PCLK_MFC				0x0900
415762306a36Sopenharmony_ci#define ENABLE_PCLK_MFC_SECURE_SMMU_MFC		0x0904
415862306a36Sopenharmony_ci#define ENABLE_IP_MFC0				0x0b00
415962306a36Sopenharmony_ci#define ENABLE_IP_MFC1				0x0b04
416062306a36Sopenharmony_ci#define ENABLE_IP_MFC_SECURE_SMMU_MFC		0x0b08
416162306a36Sopenharmony_ci
416262306a36Sopenharmony_cistatic const unsigned long mfc_clk_regs[] __initconst = {
416362306a36Sopenharmony_ci	MUX_SEL_MFC,
416462306a36Sopenharmony_ci	MUX_ENABLE_MFC,
416562306a36Sopenharmony_ci	DIV_MFC,
416662306a36Sopenharmony_ci	ENABLE_ACLK_MFC,
416762306a36Sopenharmony_ci	ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
416862306a36Sopenharmony_ci	ENABLE_PCLK_MFC,
416962306a36Sopenharmony_ci	ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
417062306a36Sopenharmony_ci	ENABLE_IP_MFC0,
417162306a36Sopenharmony_ci	ENABLE_IP_MFC1,
417262306a36Sopenharmony_ci	ENABLE_IP_MFC_SECURE_SMMU_MFC,
417362306a36Sopenharmony_ci};
417462306a36Sopenharmony_ci
417562306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump mfc_suspend_regs[] = {
417662306a36Sopenharmony_ci	{ MUX_SEL_MFC, 0 },
417762306a36Sopenharmony_ci};
417862306a36Sopenharmony_ci
417962306a36Sopenharmony_ciPNAME(mout_aclk_mfc_400_user_p)		= { "oscclk", "aclk_mfc_400", };
418062306a36Sopenharmony_ci
418162306a36Sopenharmony_cistatic const struct samsung_mux_clock mfc_mux_clks[] __initconst = {
418262306a36Sopenharmony_ci	/* MUX_SEL_MFC */
418362306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_MFC_400_USER, "mout_aclk_mfc_400_user",
418462306a36Sopenharmony_ci			mout_aclk_mfc_400_user_p, MUX_SEL_MFC, 0, 0),
418562306a36Sopenharmony_ci};
418662306a36Sopenharmony_ci
418762306a36Sopenharmony_cistatic const struct samsung_div_clock mfc_div_clks[] __initconst = {
418862306a36Sopenharmony_ci	/* DIV_MFC */
418962306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_MFC, "div_pclk_mfc", "mout_aclk_mfc_400_user",
419062306a36Sopenharmony_ci			DIV_MFC, 0, 2),
419162306a36Sopenharmony_ci};
419262306a36Sopenharmony_ci
419362306a36Sopenharmony_cistatic const struct samsung_gate_clock mfc_gate_clks[] __initconst = {
419462306a36Sopenharmony_ci	/* ENABLE_ACLK_MFC */
419562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_MFC_1, "aclk_bts_mfc_1", "mout_aclk_mfc_400_user",
419662306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 6, 0, 0),
419762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_MFC_0, "aclk_bts_mfc_0", "mout_aclk_mfc_400_user",
419862306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 5, 0, 0),
419962306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_MFCP, "aclk_ahb2apb_mfcp", "div_pclk_mfc",
420062306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 4, CLK_IGNORE_UNUSED, 0),
420162306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_MFCX, "aclk_xiu_mfcx", "mout_aclk_mfc_400_user",
420262306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 3, CLK_IGNORE_UNUSED, 0),
420362306a36Sopenharmony_ci	GATE(CLK_ACLK_MFCNP_100, "aclk_mfcnp_100", "div_pclk_mfc",
420462306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 2, CLK_IGNORE_UNUSED, 0),
420562306a36Sopenharmony_ci	GATE(CLK_ACLK_MFCND_400, "aclk_mfcnd_400", "mout_aclk_mfc_400_user",
420662306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 1, CLK_IGNORE_UNUSED, 0),
420762306a36Sopenharmony_ci	GATE(CLK_ACLK_MFC, "aclk_mfc", "mout_aclk_mfc_400_user",
420862306a36Sopenharmony_ci			ENABLE_ACLK_MFC, 0, 0, 0),
420962306a36Sopenharmony_ci
421062306a36Sopenharmony_ci	/* ENABLE_ACLK_MFC_SECURE_SMMU_MFC */
421162306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_MFC_1, "aclk_smmu_mfc_1", "mout_aclk_mfc_400_user",
421262306a36Sopenharmony_ci			ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
421362306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
421462306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_MFC_0, "aclk_smmu_mfc_0", "mout_aclk_mfc_400_user",
421562306a36Sopenharmony_ci			ENABLE_ACLK_MFC_SECURE_SMMU_MFC,
421662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
421762306a36Sopenharmony_ci
421862306a36Sopenharmony_ci	/* ENABLE_PCLK_MFC */
421962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_MFC_1, "pclk_bts_mfc_1", "div_pclk_mfc",
422062306a36Sopenharmony_ci			ENABLE_PCLK_MFC, 4, 0, 0),
422162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_MFC_0, "pclk_bts_mfc_0", "div_pclk_mfc",
422262306a36Sopenharmony_ci			ENABLE_PCLK_MFC, 3, 0, 0),
422362306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_MFC, "pclk_pmu_mfc", "div_pclk_mfc",
422462306a36Sopenharmony_ci			ENABLE_PCLK_MFC, 2, CLK_IGNORE_UNUSED, 0),
422562306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_MFC, "pclk_sysreg_mfc", "div_pclk_mfc",
422662306a36Sopenharmony_ci			ENABLE_PCLK_MFC, 1, CLK_IGNORE_UNUSED, 0),
422762306a36Sopenharmony_ci	GATE(CLK_PCLK_MFC, "pclk_mfc", "div_pclk_mfc",
422862306a36Sopenharmony_ci			ENABLE_PCLK_MFC, 4, CLK_IGNORE_UNUSED, 0),
422962306a36Sopenharmony_ci
423062306a36Sopenharmony_ci	/* ENABLE_PCLK_MFC_SECURE_SMMU_MFC */
423162306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_MFC_1, "pclk_smmu_mfc_1", "div_pclk_mfc",
423262306a36Sopenharmony_ci			ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
423362306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
423462306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_MFC_0, "pclk_smmu_mfc_0", "div_pclk_mfc",
423562306a36Sopenharmony_ci			ENABLE_PCLK_MFC_SECURE_SMMU_MFC,
423662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
423762306a36Sopenharmony_ci};
423862306a36Sopenharmony_ci
423962306a36Sopenharmony_cistatic const struct samsung_cmu_info mfc_cmu_info __initconst = {
424062306a36Sopenharmony_ci	.mux_clks		= mfc_mux_clks,
424162306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(mfc_mux_clks),
424262306a36Sopenharmony_ci	.div_clks		= mfc_div_clks,
424362306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(mfc_div_clks),
424462306a36Sopenharmony_ci	.gate_clks		= mfc_gate_clks,
424562306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(mfc_gate_clks),
424662306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_MFC,
424762306a36Sopenharmony_ci	.clk_regs		= mfc_clk_regs,
424862306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(mfc_clk_regs),
424962306a36Sopenharmony_ci	.suspend_regs		= mfc_suspend_regs,
425062306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(mfc_suspend_regs),
425162306a36Sopenharmony_ci	.clk_name		= "aclk_mfc_400",
425262306a36Sopenharmony_ci};
425362306a36Sopenharmony_ci
425462306a36Sopenharmony_ci/*
425562306a36Sopenharmony_ci * Register offset definitions for CMU_HEVC
425662306a36Sopenharmony_ci */
425762306a36Sopenharmony_ci#define MUX_SEL_HEVC				0x0200
425862306a36Sopenharmony_ci#define MUX_ENABLE_HEVC				0x0300
425962306a36Sopenharmony_ci#define MUX_STAT_HEVC				0x0400
426062306a36Sopenharmony_ci#define DIV_HEVC				0x0600
426162306a36Sopenharmony_ci#define DIV_STAT_HEVC				0x0700
426262306a36Sopenharmony_ci#define ENABLE_ACLK_HEVC			0x0800
426362306a36Sopenharmony_ci#define ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC	0x0804
426462306a36Sopenharmony_ci#define ENABLE_PCLK_HEVC			0x0900
426562306a36Sopenharmony_ci#define ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC	0x0904
426662306a36Sopenharmony_ci#define ENABLE_IP_HEVC0				0x0b00
426762306a36Sopenharmony_ci#define ENABLE_IP_HEVC1				0x0b04
426862306a36Sopenharmony_ci#define ENABLE_IP_HEVC_SECURE_SMMU_HEVC		0x0b08
426962306a36Sopenharmony_ci
427062306a36Sopenharmony_cistatic const unsigned long hevc_clk_regs[] __initconst = {
427162306a36Sopenharmony_ci	MUX_SEL_HEVC,
427262306a36Sopenharmony_ci	MUX_ENABLE_HEVC,
427362306a36Sopenharmony_ci	DIV_HEVC,
427462306a36Sopenharmony_ci	ENABLE_ACLK_HEVC,
427562306a36Sopenharmony_ci	ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
427662306a36Sopenharmony_ci	ENABLE_PCLK_HEVC,
427762306a36Sopenharmony_ci	ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
427862306a36Sopenharmony_ci	ENABLE_IP_HEVC0,
427962306a36Sopenharmony_ci	ENABLE_IP_HEVC1,
428062306a36Sopenharmony_ci	ENABLE_IP_HEVC_SECURE_SMMU_HEVC,
428162306a36Sopenharmony_ci};
428262306a36Sopenharmony_ci
428362306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump hevc_suspend_regs[] = {
428462306a36Sopenharmony_ci	{ MUX_SEL_HEVC, 0 },
428562306a36Sopenharmony_ci};
428662306a36Sopenharmony_ci
428762306a36Sopenharmony_ciPNAME(mout_aclk_hevc_400_user_p)	= { "oscclk", "aclk_hevc_400", };
428862306a36Sopenharmony_ci
428962306a36Sopenharmony_cistatic const struct samsung_mux_clock hevc_mux_clks[] __initconst = {
429062306a36Sopenharmony_ci	/* MUX_SEL_HEVC */
429162306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_HEVC_400_USER, "mout_aclk_hevc_400_user",
429262306a36Sopenharmony_ci			mout_aclk_hevc_400_user_p, MUX_SEL_HEVC, 0, 0),
429362306a36Sopenharmony_ci};
429462306a36Sopenharmony_ci
429562306a36Sopenharmony_cistatic const struct samsung_div_clock hevc_div_clks[] __initconst = {
429662306a36Sopenharmony_ci	/* DIV_HEVC */
429762306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_HEVC, "div_pclk_hevc", "mout_aclk_hevc_400_user",
429862306a36Sopenharmony_ci			DIV_HEVC, 0, 2),
429962306a36Sopenharmony_ci};
430062306a36Sopenharmony_ci
430162306a36Sopenharmony_cistatic const struct samsung_gate_clock hevc_gate_clks[] __initconst = {
430262306a36Sopenharmony_ci	/* ENABLE_ACLK_HEVC */
430362306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_HEVC_1, "aclk_bts_hevc_1", "mout_aclk_hevc_400_user",
430462306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 6, 0, 0),
430562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_HEVC_0, "aclk_bts_hevc_0", "mout_aclk_hevc_400_user",
430662306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 5, 0, 0),
430762306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_HEVCP, "aclk_ahb2apb_hevcp", "div_pclk_hevc",
430862306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 4, CLK_IGNORE_UNUSED, 0),
430962306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_HEVCX, "aclk_xiu_hevcx", "mout_aclk_hevc_400_user",
431062306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 3, CLK_IGNORE_UNUSED, 0),
431162306a36Sopenharmony_ci	GATE(CLK_ACLK_HEVCNP_100, "aclk_hevcnp_100", "div_pclk_hevc",
431262306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 2, CLK_IGNORE_UNUSED, 0),
431362306a36Sopenharmony_ci	GATE(CLK_ACLK_HEVCND_400, "aclk_hevcnd_400", "mout_aclk_hevc_400_user",
431462306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 1, CLK_IGNORE_UNUSED, 0),
431562306a36Sopenharmony_ci	GATE(CLK_ACLK_HEVC, "aclk_hevc", "mout_aclk_hevc_400_user",
431662306a36Sopenharmony_ci			ENABLE_ACLK_HEVC, 0, 0, 0),
431762306a36Sopenharmony_ci
431862306a36Sopenharmony_ci	/* ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC */
431962306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_HEVC_1, "aclk_smmu_hevc_1",
432062306a36Sopenharmony_ci			"mout_aclk_hevc_400_user",
432162306a36Sopenharmony_ci			ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
432262306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
432362306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_HEVC_0, "aclk_smmu_hevc_0",
432462306a36Sopenharmony_ci			"mout_aclk_hevc_400_user",
432562306a36Sopenharmony_ci			ENABLE_ACLK_HEVC_SECURE_SMMU_HEVC,
432662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
432762306a36Sopenharmony_ci
432862306a36Sopenharmony_ci	/* ENABLE_PCLK_HEVC */
432962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_HEVC_1, "pclk_bts_hevc_1", "div_pclk_hevc",
433062306a36Sopenharmony_ci			ENABLE_PCLK_HEVC, 4, 0, 0),
433162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_HEVC_0, "pclk_bts_hevc_0", "div_pclk_hevc",
433262306a36Sopenharmony_ci			ENABLE_PCLK_HEVC, 3, 0, 0),
433362306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_HEVC, "pclk_pmu_hevc", "div_pclk_hevc",
433462306a36Sopenharmony_ci			ENABLE_PCLK_HEVC, 2, CLK_IGNORE_UNUSED, 0),
433562306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_HEVC, "pclk_sysreg_hevc", "div_pclk_hevc",
433662306a36Sopenharmony_ci			ENABLE_PCLK_HEVC, 1, CLK_IGNORE_UNUSED, 0),
433762306a36Sopenharmony_ci	GATE(CLK_PCLK_HEVC, "pclk_hevc", "div_pclk_hevc",
433862306a36Sopenharmony_ci			ENABLE_PCLK_HEVC, 4, CLK_IGNORE_UNUSED, 0),
433962306a36Sopenharmony_ci
434062306a36Sopenharmony_ci	/* ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC */
434162306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_HEVC_1, "pclk_smmu_hevc_1", "div_pclk_hevc",
434262306a36Sopenharmony_ci			ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
434362306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
434462306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_HEVC_0, "pclk_smmu_hevc_0", "div_pclk_hevc",
434562306a36Sopenharmony_ci			ENABLE_PCLK_HEVC_SECURE_SMMU_HEVC,
434662306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
434762306a36Sopenharmony_ci};
434862306a36Sopenharmony_ci
434962306a36Sopenharmony_cistatic const struct samsung_cmu_info hevc_cmu_info __initconst = {
435062306a36Sopenharmony_ci	.mux_clks		= hevc_mux_clks,
435162306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(hevc_mux_clks),
435262306a36Sopenharmony_ci	.div_clks		= hevc_div_clks,
435362306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(hevc_div_clks),
435462306a36Sopenharmony_ci	.gate_clks		= hevc_gate_clks,
435562306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(hevc_gate_clks),
435662306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_HEVC,
435762306a36Sopenharmony_ci	.clk_regs		= hevc_clk_regs,
435862306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(hevc_clk_regs),
435962306a36Sopenharmony_ci	.suspend_regs		= hevc_suspend_regs,
436062306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(hevc_suspend_regs),
436162306a36Sopenharmony_ci	.clk_name		= "aclk_hevc_400",
436262306a36Sopenharmony_ci};
436362306a36Sopenharmony_ci
436462306a36Sopenharmony_ci/*
436562306a36Sopenharmony_ci * Register offset definitions for CMU_ISP
436662306a36Sopenharmony_ci */
436762306a36Sopenharmony_ci#define MUX_SEL_ISP			0x0200
436862306a36Sopenharmony_ci#define MUX_ENABLE_ISP			0x0300
436962306a36Sopenharmony_ci#define MUX_STAT_ISP			0x0400
437062306a36Sopenharmony_ci#define DIV_ISP				0x0600
437162306a36Sopenharmony_ci#define DIV_STAT_ISP			0x0700
437262306a36Sopenharmony_ci#define ENABLE_ACLK_ISP0		0x0800
437362306a36Sopenharmony_ci#define ENABLE_ACLK_ISP1		0x0804
437462306a36Sopenharmony_ci#define ENABLE_ACLK_ISP2		0x0808
437562306a36Sopenharmony_ci#define ENABLE_PCLK_ISP			0x0900
437662306a36Sopenharmony_ci#define ENABLE_SCLK_ISP			0x0a00
437762306a36Sopenharmony_ci#define ENABLE_IP_ISP0			0x0b00
437862306a36Sopenharmony_ci#define ENABLE_IP_ISP1			0x0b04
437962306a36Sopenharmony_ci#define ENABLE_IP_ISP2			0x0b08
438062306a36Sopenharmony_ci#define ENABLE_IP_ISP3			0x0b0c
438162306a36Sopenharmony_ci
438262306a36Sopenharmony_cistatic const unsigned long isp_clk_regs[] __initconst = {
438362306a36Sopenharmony_ci	MUX_SEL_ISP,
438462306a36Sopenharmony_ci	MUX_ENABLE_ISP,
438562306a36Sopenharmony_ci	DIV_ISP,
438662306a36Sopenharmony_ci	ENABLE_ACLK_ISP0,
438762306a36Sopenharmony_ci	ENABLE_ACLK_ISP1,
438862306a36Sopenharmony_ci	ENABLE_ACLK_ISP2,
438962306a36Sopenharmony_ci	ENABLE_PCLK_ISP,
439062306a36Sopenharmony_ci	ENABLE_SCLK_ISP,
439162306a36Sopenharmony_ci	ENABLE_IP_ISP0,
439262306a36Sopenharmony_ci	ENABLE_IP_ISP1,
439362306a36Sopenharmony_ci	ENABLE_IP_ISP2,
439462306a36Sopenharmony_ci	ENABLE_IP_ISP3,
439562306a36Sopenharmony_ci};
439662306a36Sopenharmony_ci
439762306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump isp_suspend_regs[] = {
439862306a36Sopenharmony_ci	{ MUX_SEL_ISP, 0 },
439962306a36Sopenharmony_ci};
440062306a36Sopenharmony_ci
440162306a36Sopenharmony_ciPNAME(mout_aclk_isp_dis_400_user_p)	= { "oscclk", "aclk_isp_dis_400", };
440262306a36Sopenharmony_ciPNAME(mout_aclk_isp_400_user_p)		= { "oscclk", "aclk_isp_400", };
440362306a36Sopenharmony_ci
440462306a36Sopenharmony_cistatic const struct samsung_mux_clock isp_mux_clks[] __initconst = {
440562306a36Sopenharmony_ci	/* MUX_SEL_ISP */
440662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_ISP_DIS_400_USER, "mout_aclk_isp_dis_400_user",
440762306a36Sopenharmony_ci			mout_aclk_isp_dis_400_user_p, MUX_SEL_ISP, 4, 0),
440862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_ISP_400_USER, "mout_aclk_isp_400_user",
440962306a36Sopenharmony_ci			mout_aclk_isp_400_user_p, MUX_SEL_ISP, 0, 0),
441062306a36Sopenharmony_ci};
441162306a36Sopenharmony_ci
441262306a36Sopenharmony_cistatic const struct samsung_div_clock isp_div_clks[] __initconst = {
441362306a36Sopenharmony_ci	/* DIV_ISP */
441462306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_ISP_DIS, "div_pclk_isp_dis",
441562306a36Sopenharmony_ci			"mout_aclk_isp_dis_400_user", DIV_ISP, 12, 3),
441662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_ISP, "div_pclk_isp", "mout_aclk_isp_400_user",
441762306a36Sopenharmony_ci			DIV_ISP, 8, 3),
441862306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_ISP_D_200, "div_aclk_isp_d_200",
441962306a36Sopenharmony_ci			"mout_aclk_isp_400_user", DIV_ISP, 4, 3),
442062306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_ISP_C_200, "div_aclk_isp_c_200",
442162306a36Sopenharmony_ci			"mout_aclk_isp_400_user", DIV_ISP, 0, 3),
442262306a36Sopenharmony_ci};
442362306a36Sopenharmony_ci
442462306a36Sopenharmony_cistatic const struct samsung_gate_clock isp_gate_clks[] __initconst = {
442562306a36Sopenharmony_ci	/* ENABLE_ACLK_ISP0 */
442662306a36Sopenharmony_ci	GATE(CLK_ACLK_ISP_D_GLUE, "aclk_isp_d_glue", "mout_aclk_isp_400_user",
442762306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 6, CLK_IGNORE_UNUSED, 0),
442862306a36Sopenharmony_ci	GATE(CLK_ACLK_SCALERP, "aclk_scalerp", "mout_aclk_isp_400_user",
442962306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 5, 0, 0),
443062306a36Sopenharmony_ci	GATE(CLK_ACLK_3DNR, "aclk_3dnr", "mout_aclk_isp_400_user",
443162306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 4, 0, 0),
443262306a36Sopenharmony_ci	GATE(CLK_ACLK_DIS, "aclk_dis", "mout_aclk_isp_dis_400_user",
443362306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 3, 0, 0),
443462306a36Sopenharmony_ci	GATE(CLK_ACLK_SCALERC, "aclk_scalerc", "mout_aclk_isp_400_user",
443562306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 2, 0, 0),
443662306a36Sopenharmony_ci	GATE(CLK_ACLK_DRC, "aclk_drc", "mout_aclk_isp_400_user",
443762306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 1, 0, 0),
443862306a36Sopenharmony_ci	GATE(CLK_ACLK_ISP, "aclk_isp", "mout_aclk_isp_400_user",
443962306a36Sopenharmony_ci			ENABLE_ACLK_ISP0, 0, 0, 0),
444062306a36Sopenharmony_ci
444162306a36Sopenharmony_ci	/* ENABLE_ACLK_ISP1 */
444262306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_SCALERP, "aclk_axius_scalerp",
444362306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
444462306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
444562306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_SCALERC, "aclk_axius_scalerc",
444662306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
444762306a36Sopenharmony_ci			16, CLK_IGNORE_UNUSED, 0),
444862306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_DRC, "aclk_axius_drc",
444962306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
445062306a36Sopenharmony_ci			15, CLK_IGNORE_UNUSED, 0),
445162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAHBM_ISP2P, "aclk_asyncahbm_isp2p",
445262306a36Sopenharmony_ci			"div_pclk_isp", ENABLE_ACLK_ISP1,
445362306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
445462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAHBM_ISP1P, "aclk_asyncahbm_isp1p",
445562306a36Sopenharmony_ci			"div_pclk_isp", ENABLE_ACLK_ISP1,
445662306a36Sopenharmony_ci			13, CLK_IGNORE_UNUSED, 0),
445762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DIS1, "aclk_asyncaxis_dis1",
445862306a36Sopenharmony_ci			"mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
445962306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
446062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_DIS0, "aclk_asyncaxis_dis0",
446162306a36Sopenharmony_ci			"mout_aclk_isp_dis_400_user", ENABLE_ACLK_ISP1,
446262306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
446362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DIS1, "aclk_asyncaxim_dis1",
446462306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
446562306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
446662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_DIS0, "aclk_asyncaxim_dis0",
446762306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP1,
446862306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
446962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_ISP2P, "aclk_asyncaxim_isp2p",
447062306a36Sopenharmony_ci			"div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
447162306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
447262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_ISP1P, "aclk_asyncaxim_isp1p",
447362306a36Sopenharmony_ci			"div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
447462306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
447562306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ISP2P, "aclk_ahb2apb_isp2p", "div_pclk_isp",
447662306a36Sopenharmony_ci			ENABLE_ACLK_ISP1, 6, CLK_IGNORE_UNUSED, 0),
447762306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ISP1P, "aclk_ahb2apb_isp1p", "div_pclk_isp",
447862306a36Sopenharmony_ci			ENABLE_ACLK_ISP1, 5, CLK_IGNORE_UNUSED, 0),
447962306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI2APB_ISP2P, "aclk_axi2apb_isp2p",
448062306a36Sopenharmony_ci			"div_aclk_isp_d_200", ENABLE_ACLK_ISP1,
448162306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
448262306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI2APB_ISP1P, "aclk_axi2apb_isp1p",
448362306a36Sopenharmony_ci			"div_aclk_isp_c_200", ENABLE_ACLK_ISP1,
448462306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
448562306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_ISPEX1, "aclk_xiu_ispex1", "mout_aclk_isp_400_user",
448662306a36Sopenharmony_ci			ENABLE_ACLK_ISP1, 2, CLK_IGNORE_UNUSED, 0),
448762306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_ISPEX0, "aclk_xiu_ispex0", "mout_aclk_isp_400_user",
448862306a36Sopenharmony_ci			ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
448962306a36Sopenharmony_ci	GATE(CLK_ACLK_ISPND_400, "aclk_ispnd_400", "mout_aclk_isp_400_user",
449062306a36Sopenharmony_ci			ENABLE_ACLK_ISP1, 1, CLK_IGNORE_UNUSED, 0),
449162306a36Sopenharmony_ci
449262306a36Sopenharmony_ci	/* ENABLE_ACLK_ISP2 */
449362306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_SCALERP, "aclk_smmu_scalerp",
449462306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
449562306a36Sopenharmony_ci			13, CLK_IGNORE_UNUSED, 0),
449662306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_3DNR, "aclk_smmu_3dnr", "mout_aclk_isp_400_user",
449762306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 12, CLK_IGNORE_UNUSED, 0),
449862306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_DIS1, "aclk_smmu_dis1", "mout_aclk_isp_400_user",
449962306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 11, CLK_IGNORE_UNUSED, 0),
450062306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_DIS0, "aclk_smmu_dis0", "mout_aclk_isp_400_user",
450162306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 10, CLK_IGNORE_UNUSED, 0),
450262306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_SCALERC, "aclk_smmu_scalerc",
450362306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
450462306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
450562306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_DRC, "aclk_smmu_drc", "mout_aclk_isp_400_user",
450662306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 8, CLK_IGNORE_UNUSED, 0),
450762306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_ISP, "aclk_smmu_isp", "mout_aclk_isp_400_user",
450862306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 7, CLK_IGNORE_UNUSED, 0),
450962306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_SCALERP, "aclk_bts_scalerp",
451062306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
451162306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
451262306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_3DR, "aclk_bts_3dnr", "mout_aclk_isp_400_user",
451362306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 5, CLK_IGNORE_UNUSED, 0),
451462306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DIS1, "aclk_bts_dis1", "mout_aclk_isp_400_user",
451562306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 4, CLK_IGNORE_UNUSED, 0),
451662306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DIS0, "aclk_bts_dis0", "mout_aclk_isp_400_user",
451762306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 3, CLK_IGNORE_UNUSED, 0),
451862306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_SCALERC, "aclk_bts_scalerc",
451962306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_ACLK_ISP2,
452062306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
452162306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_DRC, "aclk_bts_drc", "mout_aclk_isp_400_user",
452262306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 1, CLK_IGNORE_UNUSED, 0),
452362306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_ISP, "aclk_bts_isp", "mout_aclk_isp_400_user",
452462306a36Sopenharmony_ci			ENABLE_ACLK_ISP2, 0, CLK_IGNORE_UNUSED, 0),
452562306a36Sopenharmony_ci
452662306a36Sopenharmony_ci	/* ENABLE_PCLK_ISP */
452762306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_SCALERP, "pclk_smmu_scalerp", "div_aclk_isp_d_200",
452862306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 25, CLK_IGNORE_UNUSED, 0),
452962306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_3DNR, "pclk_smmu_3dnr", "div_aclk_isp_d_200",
453062306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 24, CLK_IGNORE_UNUSED, 0),
453162306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_DIS1, "pclk_smmu_dis1", "div_aclk_isp_d_200",
453262306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 23, CLK_IGNORE_UNUSED, 0),
453362306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_DIS0, "pclk_smmu_dis0", "div_aclk_isp_d_200",
453462306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 22, CLK_IGNORE_UNUSED, 0),
453562306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_SCALERC, "pclk_smmu_scalerc", "div_aclk_isp_c_200",
453662306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 21, CLK_IGNORE_UNUSED, 0),
453762306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_DRC, "pclk_smmu_drc", "div_aclk_isp_c_200",
453862306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 20, CLK_IGNORE_UNUSED, 0),
453962306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_ISP, "pclk_smmu_isp", "div_aclk_isp_c_200",
454062306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 19, CLK_IGNORE_UNUSED, 0),
454162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_SCALERP, "pclk_bts_scalerp", "div_pclk_isp",
454262306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 18, CLK_IGNORE_UNUSED, 0),
454362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_3DNR, "pclk_bts_3dnr", "div_pclk_isp",
454462306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 17, CLK_IGNORE_UNUSED, 0),
454562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DIS1, "pclk_bts_dis1", "div_pclk_isp",
454662306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 16, CLK_IGNORE_UNUSED, 0),
454762306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DIS0, "pclk_bts_dis0", "div_pclk_isp",
454862306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 15, CLK_IGNORE_UNUSED, 0),
454962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_SCALERC, "pclk_bts_scalerc", "div_pclk_isp",
455062306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 14, CLK_IGNORE_UNUSED, 0),
455162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_DRC, "pclk_bts_drc", "div_pclk_isp",
455262306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 13, CLK_IGNORE_UNUSED, 0),
455362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_ISP, "pclk_bts_isp", "div_pclk_isp",
455462306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 12, CLK_IGNORE_UNUSED, 0),
455562306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DIS1, "pclk_asyncaxi_dis1", "div_pclk_isp",
455662306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 11, CLK_IGNORE_UNUSED, 0),
455762306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_DIS0, "pclk_asyncaxi_dis0", "div_pclk_isp",
455862306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 10, CLK_IGNORE_UNUSED, 0),
455962306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_ISP, "pclk_pmu_isp", "div_pclk_isp",
456062306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 9, CLK_IGNORE_UNUSED, 0),
456162306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_ISP, "pclk_sysreg_isp", "div_pclk_isp",
456262306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 8, CLK_IGNORE_UNUSED, 0),
456362306a36Sopenharmony_ci	GATE(CLK_PCLK_CMU_ISP_LOCAL, "pclk_cmu_isp_local",
456462306a36Sopenharmony_ci			"div_aclk_isp_c_200", ENABLE_PCLK_ISP,
456562306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
456662306a36Sopenharmony_ci	GATE(CLK_PCLK_SCALERP, "pclk_scalerp", "div_aclk_isp_d_200",
456762306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 6, CLK_IGNORE_UNUSED, 0),
456862306a36Sopenharmony_ci	GATE(CLK_PCLK_3DNR, "pclk_3dnr", "div_aclk_isp_d_200",
456962306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 5, CLK_IGNORE_UNUSED, 0),
457062306a36Sopenharmony_ci	GATE(CLK_PCLK_DIS_CORE, "pclk_dis_core", "div_pclk_isp_dis",
457162306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 4, CLK_IGNORE_UNUSED, 0),
457262306a36Sopenharmony_ci	GATE(CLK_PCLK_DIS, "pclk_dis", "div_aclk_isp_d_200",
457362306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 3, CLK_IGNORE_UNUSED, 0),
457462306a36Sopenharmony_ci	GATE(CLK_PCLK_SCALERC, "pclk_scalerc", "div_aclk_isp_c_200",
457562306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 2, CLK_IGNORE_UNUSED, 0),
457662306a36Sopenharmony_ci	GATE(CLK_PCLK_DRC, "pclk_drc", "div_aclk_isp_c_200",
457762306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 1, CLK_IGNORE_UNUSED, 0),
457862306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP, "pclk_isp", "div_aclk_isp_c_200",
457962306a36Sopenharmony_ci			ENABLE_PCLK_ISP, 0, CLK_IGNORE_UNUSED, 0),
458062306a36Sopenharmony_ci
458162306a36Sopenharmony_ci	/* ENABLE_SCLK_ISP */
458262306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCS_DIS, "sclk_pixelasyncs_dis",
458362306a36Sopenharmony_ci			"mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
458462306a36Sopenharmony_ci			5, CLK_IGNORE_UNUSED, 0),
458562306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_DIS, "sclk_pixelasyncm_dis",
458662306a36Sopenharmony_ci			"mout_aclk_isp_dis_400_user", ENABLE_SCLK_ISP,
458762306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
458862306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCS_SCALERP, "sclk_pixelasyncs_scalerp",
458962306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
459062306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
459162306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_ISPD, "sclk_pixelasyncm_ispd",
459262306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
459362306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
459462306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCS_ISPC, "sclk_pixelasyncs_ispc",
459562306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
459662306a36Sopenharmony_ci			1, CLK_IGNORE_UNUSED, 0),
459762306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_ISPC, "sclk_pixelasyncm_ispc",
459862306a36Sopenharmony_ci			"mout_aclk_isp_400_user", ENABLE_SCLK_ISP,
459962306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
460062306a36Sopenharmony_ci};
460162306a36Sopenharmony_ci
460262306a36Sopenharmony_cistatic const struct samsung_cmu_info isp_cmu_info __initconst = {
460362306a36Sopenharmony_ci	.mux_clks		= isp_mux_clks,
460462306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(isp_mux_clks),
460562306a36Sopenharmony_ci	.div_clks		= isp_div_clks,
460662306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(isp_div_clks),
460762306a36Sopenharmony_ci	.gate_clks		= isp_gate_clks,
460862306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(isp_gate_clks),
460962306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_ISP,
461062306a36Sopenharmony_ci	.clk_regs		= isp_clk_regs,
461162306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(isp_clk_regs),
461262306a36Sopenharmony_ci	.suspend_regs		= isp_suspend_regs,
461362306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(isp_suspend_regs),
461462306a36Sopenharmony_ci	.clk_name		= "aclk_isp_400",
461562306a36Sopenharmony_ci};
461662306a36Sopenharmony_ci
461762306a36Sopenharmony_ci/*
461862306a36Sopenharmony_ci * Register offset definitions for CMU_CAM0
461962306a36Sopenharmony_ci */
462062306a36Sopenharmony_ci#define MUX_SEL_CAM00			0x0200
462162306a36Sopenharmony_ci#define MUX_SEL_CAM01			0x0204
462262306a36Sopenharmony_ci#define MUX_SEL_CAM02			0x0208
462362306a36Sopenharmony_ci#define MUX_SEL_CAM03			0x020c
462462306a36Sopenharmony_ci#define MUX_SEL_CAM04			0x0210
462562306a36Sopenharmony_ci#define MUX_ENABLE_CAM00		0x0300
462662306a36Sopenharmony_ci#define MUX_ENABLE_CAM01		0x0304
462762306a36Sopenharmony_ci#define MUX_ENABLE_CAM02		0x0308
462862306a36Sopenharmony_ci#define MUX_ENABLE_CAM03		0x030c
462962306a36Sopenharmony_ci#define MUX_ENABLE_CAM04		0x0310
463062306a36Sopenharmony_ci#define MUX_STAT_CAM00			0x0400
463162306a36Sopenharmony_ci#define MUX_STAT_CAM01			0x0404
463262306a36Sopenharmony_ci#define MUX_STAT_CAM02			0x0408
463362306a36Sopenharmony_ci#define MUX_STAT_CAM03			0x040c
463462306a36Sopenharmony_ci#define MUX_STAT_CAM04			0x0410
463562306a36Sopenharmony_ci#define MUX_IGNORE_CAM01		0x0504
463662306a36Sopenharmony_ci#define DIV_CAM00			0x0600
463762306a36Sopenharmony_ci#define DIV_CAM01			0x0604
463862306a36Sopenharmony_ci#define DIV_CAM02			0x0608
463962306a36Sopenharmony_ci#define DIV_CAM03			0x060c
464062306a36Sopenharmony_ci#define DIV_STAT_CAM00			0x0700
464162306a36Sopenharmony_ci#define DIV_STAT_CAM01			0x0704
464262306a36Sopenharmony_ci#define DIV_STAT_CAM02			0x0708
464362306a36Sopenharmony_ci#define DIV_STAT_CAM03			0x070c
464462306a36Sopenharmony_ci#define ENABLE_ACLK_CAM00		0X0800
464562306a36Sopenharmony_ci#define ENABLE_ACLK_CAM01		0X0804
464662306a36Sopenharmony_ci#define ENABLE_ACLK_CAM02		0X0808
464762306a36Sopenharmony_ci#define ENABLE_PCLK_CAM0		0X0900
464862306a36Sopenharmony_ci#define ENABLE_SCLK_CAM0		0X0a00
464962306a36Sopenharmony_ci#define ENABLE_IP_CAM00			0X0b00
465062306a36Sopenharmony_ci#define ENABLE_IP_CAM01			0X0b04
465162306a36Sopenharmony_ci#define ENABLE_IP_CAM02			0X0b08
465262306a36Sopenharmony_ci#define ENABLE_IP_CAM03			0X0b0C
465362306a36Sopenharmony_ci
465462306a36Sopenharmony_cistatic const unsigned long cam0_clk_regs[] __initconst = {
465562306a36Sopenharmony_ci	MUX_SEL_CAM00,
465662306a36Sopenharmony_ci	MUX_SEL_CAM01,
465762306a36Sopenharmony_ci	MUX_SEL_CAM02,
465862306a36Sopenharmony_ci	MUX_SEL_CAM03,
465962306a36Sopenharmony_ci	MUX_SEL_CAM04,
466062306a36Sopenharmony_ci	MUX_ENABLE_CAM00,
466162306a36Sopenharmony_ci	MUX_ENABLE_CAM01,
466262306a36Sopenharmony_ci	MUX_ENABLE_CAM02,
466362306a36Sopenharmony_ci	MUX_ENABLE_CAM03,
466462306a36Sopenharmony_ci	MUX_ENABLE_CAM04,
466562306a36Sopenharmony_ci	MUX_IGNORE_CAM01,
466662306a36Sopenharmony_ci	DIV_CAM00,
466762306a36Sopenharmony_ci	DIV_CAM01,
466862306a36Sopenharmony_ci	DIV_CAM02,
466962306a36Sopenharmony_ci	DIV_CAM03,
467062306a36Sopenharmony_ci	ENABLE_ACLK_CAM00,
467162306a36Sopenharmony_ci	ENABLE_ACLK_CAM01,
467262306a36Sopenharmony_ci	ENABLE_ACLK_CAM02,
467362306a36Sopenharmony_ci	ENABLE_PCLK_CAM0,
467462306a36Sopenharmony_ci	ENABLE_SCLK_CAM0,
467562306a36Sopenharmony_ci	ENABLE_IP_CAM00,
467662306a36Sopenharmony_ci	ENABLE_IP_CAM01,
467762306a36Sopenharmony_ci	ENABLE_IP_CAM02,
467862306a36Sopenharmony_ci	ENABLE_IP_CAM03,
467962306a36Sopenharmony_ci};
468062306a36Sopenharmony_ci
468162306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump cam0_suspend_regs[] = {
468262306a36Sopenharmony_ci	{ MUX_SEL_CAM00, 0 },
468362306a36Sopenharmony_ci	{ MUX_SEL_CAM01, 0 },
468462306a36Sopenharmony_ci	{ MUX_SEL_CAM02, 0 },
468562306a36Sopenharmony_ci	{ MUX_SEL_CAM03, 0 },
468662306a36Sopenharmony_ci	{ MUX_SEL_CAM04, 0 },
468762306a36Sopenharmony_ci};
468862306a36Sopenharmony_ci
468962306a36Sopenharmony_ciPNAME(mout_aclk_cam0_333_user_p)	= { "oscclk", "aclk_cam0_333", };
469062306a36Sopenharmony_ciPNAME(mout_aclk_cam0_400_user_p)	= { "oscclk", "aclk_cam0_400", };
469162306a36Sopenharmony_ciPNAME(mout_aclk_cam0_552_user_p)	= { "oscclk", "aclk_cam0_552", };
469262306a36Sopenharmony_ci
469362306a36Sopenharmony_ciPNAME(mout_phyclk_rxbyteclkhs0_s4_user_p) = { "oscclk",
469462306a36Sopenharmony_ci					      "phyclk_rxbyteclkhs0_s4_phy", };
469562306a36Sopenharmony_ciPNAME(mout_phyclk_rxbyteclkhs0_s2a_user_p) = { "oscclk",
469662306a36Sopenharmony_ci					       "phyclk_rxbyteclkhs0_s2a_phy", };
469762306a36Sopenharmony_ci
469862306a36Sopenharmony_ciPNAME(mout_aclk_lite_d_b_p)		= { "mout_aclk_lite_d_a",
469962306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
470062306a36Sopenharmony_ciPNAME(mout_aclk_lite_d_a_p)		= { "mout_aclk_cam0_552_user",
470162306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
470262306a36Sopenharmony_ciPNAME(mout_aclk_lite_b_b_p)		= { "mout_aclk_lite_b_a",
470362306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
470462306a36Sopenharmony_ciPNAME(mout_aclk_lite_b_a_p)		= { "mout_aclk_cam0_552_user",
470562306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
470662306a36Sopenharmony_ciPNAME(mout_aclk_lite_a_b_p)		= { "mout_aclk_lite_a_a",
470762306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
470862306a36Sopenharmony_ciPNAME(mout_aclk_lite_a_a_p)		= { "mout_aclk_cam0_552_user",
470962306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
471062306a36Sopenharmony_ciPNAME(mout_aclk_cam0_400_p)		= { "mout_aclk_cam0_400_user",
471162306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
471262306a36Sopenharmony_ci
471362306a36Sopenharmony_ciPNAME(mout_aclk_csis1_b_p)		= { "mout_aclk_csis1_a",
471462306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user" };
471562306a36Sopenharmony_ciPNAME(mout_aclk_csis1_a_p)		= { "mout_aclk_cam0_552_user",
471662306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
471762306a36Sopenharmony_ciPNAME(mout_aclk_csis0_b_p)		= { "mout_aclk_csis0_a",
471862306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
471962306a36Sopenharmony_ciPNAME(mout_aclk_csis0_a_p)		= { "mout_aclk_cam0_552_user",
472062306a36Sopenharmony_ci					    "mout_aclk-cam0_400_user", };
472162306a36Sopenharmony_ciPNAME(mout_aclk_3aa1_b_p)		= { "mout_aclk_3aa1_a",
472262306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
472362306a36Sopenharmony_ciPNAME(mout_aclk_3aa1_a_p)		= { "mout_aclk_cam0_552_user",
472462306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
472562306a36Sopenharmony_ciPNAME(mout_aclk_3aa0_b_p)		= { "mout_aclk_3aa0_a",
472662306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
472762306a36Sopenharmony_ciPNAME(mout_aclk_3aa0_a_p)		= { "mout_aclk_cam0_552_user",
472862306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
472962306a36Sopenharmony_ci
473062306a36Sopenharmony_ciPNAME(mout_sclk_lite_freecnt_c_p)	= { "mout_sclk_lite_freecnt_b",
473162306a36Sopenharmony_ci					    "div_pclk_lite_d", };
473262306a36Sopenharmony_ciPNAME(mout_sclk_lite_freecnt_b_p)	= { "mout_sclk_lite_freecnt_a",
473362306a36Sopenharmony_ci					    "div_pclk_pixelasync_lite_c", };
473462306a36Sopenharmony_ciPNAME(mout_sclk_lite_freecnt_a_p)	= { "div_pclk_lite_a",
473562306a36Sopenharmony_ci					    "div_pclk_lite_b", };
473662306a36Sopenharmony_ciPNAME(mout_sclk_pixelasync_lite_c_b_p)	= { "mout_sclk_pixelasync_lite_c_a",
473762306a36Sopenharmony_ci					    "mout_aclk_cam0_333_user", };
473862306a36Sopenharmony_ciPNAME(mout_sclk_pixelasync_lite_c_a_p)	= { "mout_aclk_cam0_552_user",
473962306a36Sopenharmony_ci					    "mout_aclk_cam0_400_user", };
474062306a36Sopenharmony_ciPNAME(mout_sclk_pixelasync_lite_c_init_b_p) = {
474162306a36Sopenharmony_ci					"mout_sclk_pixelasync_lite_c_init_a",
474262306a36Sopenharmony_ci					"mout_aclk_cam0_400_user", };
474362306a36Sopenharmony_ciPNAME(mout_sclk_pixelasync_lite_c_init_a_p) = {
474462306a36Sopenharmony_ci					"mout_aclk_cam0_552_user",
474562306a36Sopenharmony_ci					"mout_aclk_cam0_400_user", };
474662306a36Sopenharmony_ci
474762306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock cam0_fixed_clks[] __initconst = {
474862306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S4_PHY, "phyclk_rxbyteclkhs0_s4_phy",
474962306a36Sopenharmony_ci			NULL, 0, 100000000),
475062306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S2A_PHY, "phyclk_rxbyteclkhs0_s2a_phy",
475162306a36Sopenharmony_ci			NULL, 0, 100000000),
475262306a36Sopenharmony_ci};
475362306a36Sopenharmony_ci
475462306a36Sopenharmony_cistatic const struct samsung_mux_clock cam0_mux_clks[] __initconst = {
475562306a36Sopenharmony_ci	/* MUX_SEL_CAM00 */
475662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM0_333_USER, "mout_aclk_cam0_333_user",
475762306a36Sopenharmony_ci			mout_aclk_cam0_333_user_p, MUX_SEL_CAM00, 8, 1),
475862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM0_400_USER, "mout_aclk_cam0_400_user",
475962306a36Sopenharmony_ci			mout_aclk_cam0_400_user_p, MUX_SEL_CAM00, 4, 1),
476062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM0_552_USER, "mout_aclk_cam0_552_user",
476162306a36Sopenharmony_ci			mout_aclk_cam0_552_user_p, MUX_SEL_CAM00, 0, 1),
476262306a36Sopenharmony_ci
476362306a36Sopenharmony_ci	/* MUX_SEL_CAM01 */
476462306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S4_USER,
476562306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s4_user",
476662306a36Sopenharmony_ci			mout_phyclk_rxbyteclkhs0_s4_user_p,
476762306a36Sopenharmony_ci			MUX_SEL_CAM01, 4, 1),
476862306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S2A_USER,
476962306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s2a_user",
477062306a36Sopenharmony_ci			mout_phyclk_rxbyteclkhs0_s2a_user_p,
477162306a36Sopenharmony_ci			MUX_SEL_CAM01, 0, 1),
477262306a36Sopenharmony_ci
477362306a36Sopenharmony_ci	/* MUX_SEL_CAM02 */
477462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_D_B, "mout_aclk_lite_d_b", mout_aclk_lite_d_b_p,
477562306a36Sopenharmony_ci			MUX_SEL_CAM02, 24, 1),
477662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_D_A, "mout_aclk_lite_d_a", mout_aclk_lite_d_a_p,
477762306a36Sopenharmony_ci			MUX_SEL_CAM02, 20, 1),
477862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_B_B, "mout_aclk_lite_b_b", mout_aclk_lite_b_b_p,
477962306a36Sopenharmony_ci			MUX_SEL_CAM02, 16, 1),
478062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_B_A, "mout_aclk_lite_b_a", mout_aclk_lite_b_a_p,
478162306a36Sopenharmony_ci			MUX_SEL_CAM02, 12, 1),
478262306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_A_B, "mout_aclk_lite_a_b", mout_aclk_lite_a_b_p,
478362306a36Sopenharmony_ci			MUX_SEL_CAM02, 8, 1),
478462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_A_A, "mout_aclk_lite_a_a", mout_aclk_lite_a_a_p,
478562306a36Sopenharmony_ci			MUX_SEL_CAM02, 4, 1),
478662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM0_400, "mout_aclk_cam0_400", mout_aclk_cam0_400_p,
478762306a36Sopenharmony_ci			MUX_SEL_CAM02, 0, 1),
478862306a36Sopenharmony_ci
478962306a36Sopenharmony_ci	/* MUX_SEL_CAM03 */
479062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS1_B, "mout_aclk_csis1_b", mout_aclk_csis1_b_p,
479162306a36Sopenharmony_ci			MUX_SEL_CAM03, 28, 1),
479262306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS1_A, "mout_aclk_csis1_a", mout_aclk_csis1_a_p,
479362306a36Sopenharmony_ci			MUX_SEL_CAM03, 24, 1),
479462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS0_B, "mout_aclk_csis0_b", mout_aclk_csis0_b_p,
479562306a36Sopenharmony_ci			MUX_SEL_CAM03, 20, 1),
479662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS0_A, "mout_aclk_csis0_a", mout_aclk_csis0_a_p,
479762306a36Sopenharmony_ci			MUX_SEL_CAM03, 16, 1),
479862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_3AA1_B, "mout_aclk_3aa1_b", mout_aclk_3aa1_b_p,
479962306a36Sopenharmony_ci			MUX_SEL_CAM03, 12, 1),
480062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_3AA1_A, "mout_aclk_3aa1_a", mout_aclk_3aa1_a_p,
480162306a36Sopenharmony_ci			MUX_SEL_CAM03, 8, 1),
480262306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_3AA0_B, "mout_aclk_3aa0_b", mout_aclk_3aa0_b_p,
480362306a36Sopenharmony_ci			MUX_SEL_CAM03, 4, 1),
480462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_3AA0_A, "mout_aclk_3aa0_a", mout_aclk_3aa0_a_p,
480562306a36Sopenharmony_ci			MUX_SEL_CAM03, 0, 1),
480662306a36Sopenharmony_ci
480762306a36Sopenharmony_ci	/* MUX_SEL_CAM04 */
480862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_LITE_FREECNT_C, "mout_sclk_lite_freecnt_c",
480962306a36Sopenharmony_ci			mout_sclk_lite_freecnt_c_p, MUX_SEL_CAM04, 24, 1),
481062306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_LITE_FREECNT_B, "mout_sclk_lite_freecnt_b",
481162306a36Sopenharmony_ci			mout_sclk_lite_freecnt_b_p, MUX_SEL_CAM04, 20, 1),
481262306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_LITE_FREECNT_A, "mout_sclk_lite_freecnt_a",
481362306a36Sopenharmony_ci			mout_sclk_lite_freecnt_a_p, MUX_SEL_CAM04, 16, 1),
481462306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_B, "mout_sclk_pixelasync_lite_c_b",
481562306a36Sopenharmony_ci			mout_sclk_pixelasync_lite_c_b_p, MUX_SEL_CAM04, 12, 1),
481662306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_A, "mout_sclk_pixelasync_lite_c_a",
481762306a36Sopenharmony_ci			mout_sclk_pixelasync_lite_c_a_p, MUX_SEL_CAM04, 8, 1),
481862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_INIT_B,
481962306a36Sopenharmony_ci			"mout_sclk_pixelasync_lite_c_init_b",
482062306a36Sopenharmony_ci			mout_sclk_pixelasync_lite_c_init_b_p,
482162306a36Sopenharmony_ci			MUX_SEL_CAM04, 4, 1),
482262306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_PIXELASYNC_LITE_C_INIT_A,
482362306a36Sopenharmony_ci			"mout_sclk_pixelasync_lite_c_init_a",
482462306a36Sopenharmony_ci			mout_sclk_pixelasync_lite_c_init_a_p,
482562306a36Sopenharmony_ci			MUX_SEL_CAM04, 0, 1),
482662306a36Sopenharmony_ci};
482762306a36Sopenharmony_ci
482862306a36Sopenharmony_cistatic const struct samsung_div_clock cam0_div_clks[] __initconst = {
482962306a36Sopenharmony_ci	/* DIV_CAM00 */
483062306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_CAM0_50, "div_pclk_cam0_50", "div_aclk_cam0_200",
483162306a36Sopenharmony_ci			DIV_CAM00, 8, 2),
483262306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM0_200, "div_aclk_cam0_200", "mout_aclk_cam0_400",
483362306a36Sopenharmony_ci			DIV_CAM00, 4, 3),
483462306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CAM0_BUS_400, "div_aclk_cam0_bus_400",
483562306a36Sopenharmony_ci			"mout_aclk_cam0_400", DIV_CAM00, 0, 3),
483662306a36Sopenharmony_ci
483762306a36Sopenharmony_ci	/* DIV_CAM01 */
483862306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_LITE_D, "div_pclk_lite_d", "div_aclk_lite_d",
483962306a36Sopenharmony_ci			DIV_CAM01, 20, 2),
484062306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_LITE_D, "div_aclk_lite_d", "mout_aclk_lite_d_b",
484162306a36Sopenharmony_ci			DIV_CAM01, 16, 3),
484262306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_LITE_B, "div_pclk_lite_b", "div_aclk_lite_b",
484362306a36Sopenharmony_ci			DIV_CAM01, 12, 2),
484462306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_LITE_B, "div_aclk_lite_b", "mout_aclk_lite_b_b",
484562306a36Sopenharmony_ci			DIV_CAM01, 8, 3),
484662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_LITE_A, "div_pclk_lite_a", "div_aclk_lite_a",
484762306a36Sopenharmony_ci			DIV_CAM01, 4, 2),
484862306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_LITE_A, "div_aclk_lite_a", "mout_aclk_lite_a_b",
484962306a36Sopenharmony_ci			DIV_CAM01, 0, 3),
485062306a36Sopenharmony_ci
485162306a36Sopenharmony_ci	/* DIV_CAM02 */
485262306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CSIS1, "div_aclk_csis1", "mout_aclk_csis1_b",
485362306a36Sopenharmony_ci			DIV_CAM02, 20, 3),
485462306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CSIS0, "div_aclk_csis0", "mout_aclk_csis0_b",
485562306a36Sopenharmony_ci			DIV_CAM02, 16, 3),
485662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_3AA1, "div_pclk_3aa1", "div_aclk_3aa1",
485762306a36Sopenharmony_ci			DIV_CAM02, 12, 2),
485862306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_3AA1, "div_aclk_3aa1", "mout_aclk_3aa1_b",
485962306a36Sopenharmony_ci			DIV_CAM02, 8, 3),
486062306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_3AA0, "div_pclk_3aa0", "div_aclk_3aa0",
486162306a36Sopenharmony_ci			DIV_CAM02, 4, 2),
486262306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_3AA0, "div_aclk_3aa0", "mout_aclk_3aa0_b",
486362306a36Sopenharmony_ci			DIV_CAM02, 0, 3),
486462306a36Sopenharmony_ci
486562306a36Sopenharmony_ci	/* DIV_CAM03 */
486662306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_PIXELASYNC_LITE_C, "div_sclk_pixelasync_lite_c",
486762306a36Sopenharmony_ci			"mout_sclk_pixelasync_lite_c_b", DIV_CAM03, 8, 3),
486862306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_PIXELASYNC_LITE_C, "div_pclk_pixelasync_lite_c",
486962306a36Sopenharmony_ci			"div_sclk_pixelasync_lite_c_init", DIV_CAM03, 4, 2),
487062306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_PIXELASYNC_LITE_C_INIT,
487162306a36Sopenharmony_ci			"div_sclk_pixelasync_lite_c_init",
487262306a36Sopenharmony_ci			"mout_sclk_pixelasync_lite_c_init_b", DIV_CAM03, 0, 3),
487362306a36Sopenharmony_ci};
487462306a36Sopenharmony_ci
487562306a36Sopenharmony_cistatic const struct samsung_gate_clock cam0_gate_clks[] __initconst = {
487662306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM00 */
487762306a36Sopenharmony_ci	GATE(CLK_ACLK_CSIS1, "aclk_csis1", "div_aclk_csis1", ENABLE_ACLK_CAM00,
487862306a36Sopenharmony_ci			6, 0, 0),
487962306a36Sopenharmony_ci	GATE(CLK_ACLK_CSIS0, "aclk_csis0", "div_aclk_csis0", ENABLE_ACLK_CAM00,
488062306a36Sopenharmony_ci			5, 0, 0),
488162306a36Sopenharmony_ci	GATE(CLK_ACLK_3AA1, "aclk_3aa1", "div_aclk_3aa1", ENABLE_ACLK_CAM00,
488262306a36Sopenharmony_ci			4, 0, 0),
488362306a36Sopenharmony_ci	GATE(CLK_ACLK_3AA0, "aclk_3aa0", "div_aclk_3aa0", ENABLE_ACLK_CAM00,
488462306a36Sopenharmony_ci			3, 0, 0),
488562306a36Sopenharmony_ci	GATE(CLK_ACLK_LITE_D, "aclk_lite_d", "div_aclk_lite_d",
488662306a36Sopenharmony_ci			ENABLE_ACLK_CAM00, 2, 0, 0),
488762306a36Sopenharmony_ci	GATE(CLK_ACLK_LITE_B, "aclk_lite_b", "div_aclk_lite_b",
488862306a36Sopenharmony_ci			ENABLE_ACLK_CAM00, 1, 0, 0),
488962306a36Sopenharmony_ci	GATE(CLK_ACLK_LITE_A, "aclk_lite_a", "div_aclk_lite_a",
489062306a36Sopenharmony_ci			ENABLE_ACLK_CAM00, 0, 0, 0),
489162306a36Sopenharmony_ci
489262306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM01 */
489362306a36Sopenharmony_ci	GATE(CLK_ACLK_AHBSYNCDN, "aclk_ahbsyncdn", "div_aclk_cam0_200",
489462306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 31, CLK_IGNORE_UNUSED, 0),
489562306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_LITE_D, "aclk_axius_lite_d", "div_aclk_cam0_bus_400",
489662306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 30, CLK_IGNORE_UNUSED, 0),
489762306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_LITE_B, "aclk_axius_lite_b", "div_aclk_cam0_bus_400",
489862306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 29, CLK_IGNORE_UNUSED, 0),
489962306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_LITE_A, "aclk_axius_lite_a", "div_aclk_cam0_bus_400",
490062306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 28, CLK_IGNORE_UNUSED, 0),
490162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_3AA1, "aclk_asyncapbm_3aa1", "div_pclk_3aa1",
490262306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 27, CLK_IGNORE_UNUSED, 0),
490362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_3AA1, "aclk_asyncapbs_3aa1", "div_aclk_3aa1",
490462306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 26, CLK_IGNORE_UNUSED, 0),
490562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_3AA0, "aclk_asyncapbm_3aa0", "div_pclk_3aa0",
490662306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 25, CLK_IGNORE_UNUSED, 0),
490762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_3AA0, "aclk_asyncapbs_3aa0", "div_aclk_3aa0",
490862306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 24, CLK_IGNORE_UNUSED, 0),
490962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_LITE_D, "aclk_asyncapbm_lite_d",
491062306a36Sopenharmony_ci			"div_pclk_lite_d", ENABLE_ACLK_CAM01,
491162306a36Sopenharmony_ci			23, CLK_IGNORE_UNUSED, 0),
491262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_LITE_D, "aclk_asyncapbs_lite_d",
491362306a36Sopenharmony_ci			"div_aclk_cam0_200", ENABLE_ACLK_CAM01,
491462306a36Sopenharmony_ci			22, CLK_IGNORE_UNUSED, 0),
491562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_LITE_B, "aclk_asyncapbm_lite_b",
491662306a36Sopenharmony_ci			"div_pclk_lite_b", ENABLE_ACLK_CAM01,
491762306a36Sopenharmony_ci			21, CLK_IGNORE_UNUSED, 0),
491862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_LITE_B, "aclk_asyncapbs_lite_b",
491962306a36Sopenharmony_ci			"div_aclk_cam0_200", ENABLE_ACLK_CAM01,
492062306a36Sopenharmony_ci			20, CLK_IGNORE_UNUSED, 0),
492162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_LITE_A, "aclk_asyncapbm_lite_a",
492262306a36Sopenharmony_ci			"div_pclk_lite_a", ENABLE_ACLK_CAM01,
492362306a36Sopenharmony_ci			19, CLK_IGNORE_UNUSED, 0),
492462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_LITE_A, "aclk_asyncapbs_lite_a",
492562306a36Sopenharmony_ci			"div_aclk_cam0_200", ENABLE_ACLK_CAM01,
492662306a36Sopenharmony_ci			18, CLK_IGNORE_UNUSED, 0),
492762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_ISP0P, "aclk_asyncaxim_isp0p",
492862306a36Sopenharmony_ci			"div_aclk_cam0_200", ENABLE_ACLK_CAM01,
492962306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
493062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_3AA1, "aclk_asyncaxim_3aa1",
493162306a36Sopenharmony_ci			"div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
493262306a36Sopenharmony_ci			16, CLK_IGNORE_UNUSED, 0),
493362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_3AA1, "aclk_asyncaxis_3aa1",
493462306a36Sopenharmony_ci			"div_aclk_3aa1", ENABLE_ACLK_CAM01,
493562306a36Sopenharmony_ci			15, CLK_IGNORE_UNUSED, 0),
493662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_3AA0, "aclk_asyncaxim_3aa0",
493762306a36Sopenharmony_ci			"div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
493862306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
493962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_3AA0, "aclk_asyncaxis_3aa0",
494062306a36Sopenharmony_ci			"div_aclk_3aa0", ENABLE_ACLK_CAM01,
494162306a36Sopenharmony_ci			13, CLK_IGNORE_UNUSED, 0),
494262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_LITE_D, "aclk_asyncaxim_lite_d",
494362306a36Sopenharmony_ci			"div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
494462306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
494562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_LITE_D, "aclk_asyncaxis_lite_d",
494662306a36Sopenharmony_ci			"div_aclk_lite_d", ENABLE_ACLK_CAM01,
494762306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
494862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_LITE_B, "aclk_asyncaxim_lite_b",
494962306a36Sopenharmony_ci			"div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
495062306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
495162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_LITE_B, "aclk_asyncaxis_lite_b",
495262306a36Sopenharmony_ci			"div_aclk_lite_b", ENABLE_ACLK_CAM01,
495362306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
495462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_LITE_A, "aclk_asyncaxim_lite_a",
495562306a36Sopenharmony_ci			"div_aclk_cam0_bus_400", ENABLE_ACLK_CAM01,
495662306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
495762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_LITE_A, "aclk_asyncaxis_lite_a",
495862306a36Sopenharmony_ci			"div_aclk_lite_a", ENABLE_ACLK_CAM01,
495962306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
496062306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ISPSFRP, "aclk_ahb2apb_ispsfrp",
496162306a36Sopenharmony_ci			"div_pclk_cam0_50", ENABLE_ACLK_CAM01,
496262306a36Sopenharmony_ci			6, CLK_IGNORE_UNUSED, 0),
496362306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI2APB_ISP0P, "aclk_axi2apb_isp0p", "div_aclk_cam0_200",
496462306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 5, CLK_IGNORE_UNUSED, 0),
496562306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI2AHB_ISP0P, "aclk_axi2ahb_isp0p", "div_aclk_cam0_200",
496662306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 4, CLK_IGNORE_UNUSED, 0),
496762306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_IS0X, "aclk_xiu_is0x", "div_aclk_cam0_200",
496862306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 3, CLK_IGNORE_UNUSED, 0),
496962306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_ISP0EX, "aclk_xiu_isp0ex", "div_aclk_cam0_bus_400",
497062306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 2, CLK_IGNORE_UNUSED, 0),
497162306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM0NP_276, "aclk_cam0np_276", "div_aclk_cam0_200",
497262306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 1, CLK_IGNORE_UNUSED, 0),
497362306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM0ND_400, "aclk_cam0nd_400", "div_aclk_cam0_bus_400",
497462306a36Sopenharmony_ci			ENABLE_ACLK_CAM01, 0, CLK_IGNORE_UNUSED, 0),
497562306a36Sopenharmony_ci
497662306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM02 */
497762306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_3AA1, "aclk_smmu_3aa1", "div_aclk_cam0_bus_400",
497862306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 9, CLK_IGNORE_UNUSED, 0),
497962306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_3AA0, "aclk_smmu_3aa0", "div_aclk_cam0_bus_400",
498062306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 8, CLK_IGNORE_UNUSED, 0),
498162306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_LITE_D, "aclk_smmu_lite_d", "div_aclk_cam0_bus_400",
498262306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 7, CLK_IGNORE_UNUSED, 0),
498362306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_LITE_B, "aclk_smmu_lite_b", "div_aclk_cam0_bus_400",
498462306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 6, CLK_IGNORE_UNUSED, 0),
498562306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_LITE_A, "aclk_smmu_lite_a", "div_aclk_cam0_bus_400",
498662306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 5, CLK_IGNORE_UNUSED, 0),
498762306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_3AA1, "aclk_bts_3aa1", "div_aclk_cam0_bus_400",
498862306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 4, CLK_IGNORE_UNUSED, 0),
498962306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_3AA0, "aclk_bts_3aa0", "div_aclk_cam0_bus_400",
499062306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 3, CLK_IGNORE_UNUSED, 0),
499162306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_LITE_D, "aclk_bts_lite_d", "div_aclk_cam0_bus_400",
499262306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 2, CLK_IGNORE_UNUSED, 0),
499362306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_LITE_B, "aclk_bts_lite_b", "div_aclk_cam0_bus_400",
499462306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 1, CLK_IGNORE_UNUSED, 0),
499562306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_LITE_A, "aclk_bts_lite_a", "div_aclk_cam0_bus_400",
499662306a36Sopenharmony_ci			ENABLE_ACLK_CAM02, 0, CLK_IGNORE_UNUSED, 0),
499762306a36Sopenharmony_ci
499862306a36Sopenharmony_ci	/* ENABLE_PCLK_CAM0 */
499962306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_3AA1, "pclk_smmu_3aa1", "div_aclk_cam0_200",
500062306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 25, CLK_IGNORE_UNUSED, 0),
500162306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_3AA0, "pclk_smmu_3aa0", "div_aclk_cam0_200",
500262306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 24, CLK_IGNORE_UNUSED, 0),
500362306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_LITE_D, "pclk_smmu_lite_d", "div_aclk_cam0_200",
500462306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 23, CLK_IGNORE_UNUSED, 0),
500562306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_LITE_B, "pclk_smmu_lite_b", "div_aclk_cam0_200",
500662306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 22, CLK_IGNORE_UNUSED, 0),
500762306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_LITE_A, "pclk_smmu_lite_a", "div_aclk_cam0_200",
500862306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 21, CLK_IGNORE_UNUSED, 0),
500962306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_3AA1, "pclk_bts_3aa1", "div_pclk_cam0_50",
501062306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 20, CLK_IGNORE_UNUSED, 0),
501162306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_3AA0, "pclk_bts_3aa0", "div_pclk_cam0_50",
501262306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 19, CLK_IGNORE_UNUSED, 0),
501362306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_LITE_D, "pclk_bts_lite_d", "div_pclk_cam0_50",
501462306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 18, CLK_IGNORE_UNUSED, 0),
501562306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_LITE_B, "pclk_bts_lite_b", "div_pclk_cam0_50",
501662306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 17, CLK_IGNORE_UNUSED, 0),
501762306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_LITE_A, "pclk_bts_lite_a", "div_pclk_cam0_50",
501862306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 16, CLK_IGNORE_UNUSED, 0),
501962306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_CAM1, "pclk_asyncaxi_cam1", "div_pclk_cam0_50",
502062306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 15, CLK_IGNORE_UNUSED, 0),
502162306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_3AA1, "pclk_asyncaxi_3aa1", "div_pclk_cam0_50",
502262306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 14, CLK_IGNORE_UNUSED, 0),
502362306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_3AA0, "pclk_asyncaxi_3aa0", "div_pclk_cam0_50",
502462306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 13, CLK_IGNORE_UNUSED, 0),
502562306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_LITE_D, "pclk_asyncaxi_lite_d",
502662306a36Sopenharmony_ci			"div_pclk_cam0_50", ENABLE_PCLK_CAM0,
502762306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
502862306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_LITE_B, "pclk_asyncaxi_lite_b",
502962306a36Sopenharmony_ci			"div_pclk_cam0_50", ENABLE_PCLK_CAM0,
503062306a36Sopenharmony_ci			11, CLK_IGNORE_UNUSED, 0),
503162306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXI_LITE_A, "pclk_asyncaxi_lite_a",
503262306a36Sopenharmony_ci			"div_pclk_cam0_50", ENABLE_PCLK_CAM0,
503362306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
503462306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_CAM0, "pclk_pmu_cam0", "div_pclk_cam0_50",
503562306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 9, CLK_IGNORE_UNUSED, 0),
503662306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_CAM0, "pclk_sysreg_cam0", "div_pclk_cam0_50",
503762306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 8, CLK_IGNORE_UNUSED, 0),
503862306a36Sopenharmony_ci	GATE(CLK_PCLK_CMU_CAM0_LOCAL, "pclk_cmu_cam0_local",
503962306a36Sopenharmony_ci			"div_aclk_cam0_200", ENABLE_PCLK_CAM0,
504062306a36Sopenharmony_ci			7, CLK_IGNORE_UNUSED, 0),
504162306a36Sopenharmony_ci	GATE(CLK_PCLK_CSIS1, "pclk_csis1", "div_aclk_cam0_200",
504262306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 6, CLK_IGNORE_UNUSED, 0),
504362306a36Sopenharmony_ci	GATE(CLK_PCLK_CSIS0, "pclk_csis0", "div_aclk_cam0_200",
504462306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 5, CLK_IGNORE_UNUSED, 0),
504562306a36Sopenharmony_ci	GATE(CLK_PCLK_3AA1, "pclk_3aa1", "div_pclk_3aa1",
504662306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 4, CLK_IGNORE_UNUSED, 0),
504762306a36Sopenharmony_ci	GATE(CLK_PCLK_3AA0, "pclk_3aa0", "div_pclk_3aa0",
504862306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 3, CLK_IGNORE_UNUSED, 0),
504962306a36Sopenharmony_ci	GATE(CLK_PCLK_LITE_D, "pclk_lite_d", "div_pclk_lite_d",
505062306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 2, CLK_IGNORE_UNUSED, 0),
505162306a36Sopenharmony_ci	GATE(CLK_PCLK_LITE_B, "pclk_lite_b", "div_pclk_lite_b",
505262306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 1, CLK_IGNORE_UNUSED, 0),
505362306a36Sopenharmony_ci	GATE(CLK_PCLK_LITE_A, "pclk_lite_a", "div_pclk_lite_a",
505462306a36Sopenharmony_ci			ENABLE_PCLK_CAM0, 0, CLK_IGNORE_UNUSED, 0),
505562306a36Sopenharmony_ci
505662306a36Sopenharmony_ci	/* ENABLE_SCLK_CAM0 */
505762306a36Sopenharmony_ci	GATE(CLK_PHYCLK_RXBYTECLKHS0_S4, "phyclk_rxbyteclkhs0_s4",
505862306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s4_user",
505962306a36Sopenharmony_ci			ENABLE_SCLK_CAM0, 8, 0, 0),
506062306a36Sopenharmony_ci	GATE(CLK_PHYCLK_RXBYTECLKHS0_S2A, "phyclk_rxbyteclkhs0_s2a",
506162306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s2a_user",
506262306a36Sopenharmony_ci			ENABLE_SCLK_CAM0, 7, 0, 0),
506362306a36Sopenharmony_ci	GATE(CLK_SCLK_LITE_FREECNT, "sclk_lite_freecnt",
506462306a36Sopenharmony_ci			"mout_sclk_lite_freecnt_c", ENABLE_SCLK_CAM0, 6, 0, 0),
506562306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_3AA1, "sclk_pixelasycm_3aa1",
506662306a36Sopenharmony_ci			"div_aclk_3aa1", ENABLE_SCLK_CAM0, 5, 0, 0),
506762306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_3AA0, "sclk_pixelasycm_3aa0",
506862306a36Sopenharmony_ci			"div_aclk_3aa0", ENABLE_SCLK_CAM0, 4, 0, 0),
506962306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCS_3AA0, "sclk_pixelasycs_3aa0",
507062306a36Sopenharmony_ci			"div_aclk_3aa0", ENABLE_SCLK_CAM0, 3, 0, 0),
507162306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_LITE_C, "sclk_pixelasyncm_lite_c",
507262306a36Sopenharmony_ci			"div_sclk_pixelasync_lite_c",
507362306a36Sopenharmony_ci			ENABLE_SCLK_CAM0, 2, 0, 0),
507462306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_LITE_C_INIT, "sclk_pixelasyncm_lite_c_init",
507562306a36Sopenharmony_ci			"div_sclk_pixelasync_lite_c_init",
507662306a36Sopenharmony_ci			ENABLE_SCLK_CAM0, 1, 0, 0),
507762306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCS_LITE_C_INIT, "sclk_pixelasyncs_lite_c_init",
507862306a36Sopenharmony_ci			"div_sclk_pixelasync_lite_c",
507962306a36Sopenharmony_ci			ENABLE_SCLK_CAM0, 0, 0, 0),
508062306a36Sopenharmony_ci};
508162306a36Sopenharmony_ci
508262306a36Sopenharmony_cistatic const struct samsung_cmu_info cam0_cmu_info __initconst = {
508362306a36Sopenharmony_ci	.mux_clks		= cam0_mux_clks,
508462306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(cam0_mux_clks),
508562306a36Sopenharmony_ci	.div_clks		= cam0_div_clks,
508662306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(cam0_div_clks),
508762306a36Sopenharmony_ci	.gate_clks		= cam0_gate_clks,
508862306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(cam0_gate_clks),
508962306a36Sopenharmony_ci	.fixed_clks		= cam0_fixed_clks,
509062306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(cam0_fixed_clks),
509162306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_CAM0,
509262306a36Sopenharmony_ci	.clk_regs		= cam0_clk_regs,
509362306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(cam0_clk_regs),
509462306a36Sopenharmony_ci	.suspend_regs		= cam0_suspend_regs,
509562306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(cam0_suspend_regs),
509662306a36Sopenharmony_ci	.clk_name		= "aclk_cam0_400",
509762306a36Sopenharmony_ci};
509862306a36Sopenharmony_ci
509962306a36Sopenharmony_ci/*
510062306a36Sopenharmony_ci * Register offset definitions for CMU_CAM1
510162306a36Sopenharmony_ci */
510262306a36Sopenharmony_ci#define MUX_SEL_CAM10			0x0200
510362306a36Sopenharmony_ci#define MUX_SEL_CAM11			0x0204
510462306a36Sopenharmony_ci#define MUX_SEL_CAM12			0x0208
510562306a36Sopenharmony_ci#define MUX_ENABLE_CAM10		0x0300
510662306a36Sopenharmony_ci#define MUX_ENABLE_CAM11		0x0304
510762306a36Sopenharmony_ci#define MUX_ENABLE_CAM12		0x0308
510862306a36Sopenharmony_ci#define MUX_STAT_CAM10			0x0400
510962306a36Sopenharmony_ci#define MUX_STAT_CAM11			0x0404
511062306a36Sopenharmony_ci#define MUX_STAT_CAM12			0x0408
511162306a36Sopenharmony_ci#define MUX_IGNORE_CAM11		0x0504
511262306a36Sopenharmony_ci#define DIV_CAM10			0x0600
511362306a36Sopenharmony_ci#define DIV_CAM11			0x0604
511462306a36Sopenharmony_ci#define DIV_STAT_CAM10			0x0700
511562306a36Sopenharmony_ci#define DIV_STAT_CAM11			0x0704
511662306a36Sopenharmony_ci#define ENABLE_ACLK_CAM10		0X0800
511762306a36Sopenharmony_ci#define ENABLE_ACLK_CAM11		0X0804
511862306a36Sopenharmony_ci#define ENABLE_ACLK_CAM12		0X0808
511962306a36Sopenharmony_ci#define ENABLE_PCLK_CAM1		0X0900
512062306a36Sopenharmony_ci#define ENABLE_SCLK_CAM1		0X0a00
512162306a36Sopenharmony_ci#define ENABLE_IP_CAM10			0X0b00
512262306a36Sopenharmony_ci#define ENABLE_IP_CAM11			0X0b04
512362306a36Sopenharmony_ci#define ENABLE_IP_CAM12			0X0b08
512462306a36Sopenharmony_ci
512562306a36Sopenharmony_cistatic const unsigned long cam1_clk_regs[] __initconst = {
512662306a36Sopenharmony_ci	MUX_SEL_CAM10,
512762306a36Sopenharmony_ci	MUX_SEL_CAM11,
512862306a36Sopenharmony_ci	MUX_SEL_CAM12,
512962306a36Sopenharmony_ci	MUX_ENABLE_CAM10,
513062306a36Sopenharmony_ci	MUX_ENABLE_CAM11,
513162306a36Sopenharmony_ci	MUX_ENABLE_CAM12,
513262306a36Sopenharmony_ci	MUX_IGNORE_CAM11,
513362306a36Sopenharmony_ci	DIV_CAM10,
513462306a36Sopenharmony_ci	DIV_CAM11,
513562306a36Sopenharmony_ci	ENABLE_ACLK_CAM10,
513662306a36Sopenharmony_ci	ENABLE_ACLK_CAM11,
513762306a36Sopenharmony_ci	ENABLE_ACLK_CAM12,
513862306a36Sopenharmony_ci	ENABLE_PCLK_CAM1,
513962306a36Sopenharmony_ci	ENABLE_SCLK_CAM1,
514062306a36Sopenharmony_ci	ENABLE_IP_CAM10,
514162306a36Sopenharmony_ci	ENABLE_IP_CAM11,
514262306a36Sopenharmony_ci	ENABLE_IP_CAM12,
514362306a36Sopenharmony_ci};
514462306a36Sopenharmony_ci
514562306a36Sopenharmony_cistatic const struct samsung_clk_reg_dump cam1_suspend_regs[] = {
514662306a36Sopenharmony_ci	{ MUX_SEL_CAM10, 0 },
514762306a36Sopenharmony_ci	{ MUX_SEL_CAM11, 0 },
514862306a36Sopenharmony_ci	{ MUX_SEL_CAM12, 0 },
514962306a36Sopenharmony_ci};
515062306a36Sopenharmony_ci
515162306a36Sopenharmony_ciPNAME(mout_sclk_isp_uart_user_p)	= { "oscclk", "sclk_isp_uart_cam1", };
515262306a36Sopenharmony_ciPNAME(mout_sclk_isp_spi1_user_p)	= { "oscclk", "sclk_isp_spi1_cam1", };
515362306a36Sopenharmony_ciPNAME(mout_sclk_isp_spi0_user_p)	= { "oscclk", "sclk_isp_spi0_cam1", };
515462306a36Sopenharmony_ci
515562306a36Sopenharmony_ciPNAME(mout_aclk_cam1_333_user_p)	= { "oscclk", "aclk_cam1_333", };
515662306a36Sopenharmony_ciPNAME(mout_aclk_cam1_400_user_p)	= { "oscclk", "aclk_cam1_400", };
515762306a36Sopenharmony_ciPNAME(mout_aclk_cam1_552_user_p)	= { "oscclk", "aclk_cam1_552", };
515862306a36Sopenharmony_ci
515962306a36Sopenharmony_ciPNAME(mout_phyclk_rxbyteclkhs0_s2b_user_p) = { "oscclk",
516062306a36Sopenharmony_ci					       "phyclk_rxbyteclkhs0_s2b_phy", };
516162306a36Sopenharmony_ci
516262306a36Sopenharmony_ciPNAME(mout_aclk_csis2_b_p)		= { "mout_aclk_csis2_a",
516362306a36Sopenharmony_ci					    "mout_aclk_cam1_333_user", };
516462306a36Sopenharmony_ciPNAME(mout_aclk_csis2_a_p)		= { "mout_aclk_cam1_552_user",
516562306a36Sopenharmony_ci					    "mout_aclk_cam1_400_user", };
516662306a36Sopenharmony_ci
516762306a36Sopenharmony_ciPNAME(mout_aclk_fd_b_p)			= { "mout_aclk_fd_a",
516862306a36Sopenharmony_ci					    "mout_aclk_cam1_333_user", };
516962306a36Sopenharmony_ciPNAME(mout_aclk_fd_a_p)			= { "mout_aclk_cam1_552_user",
517062306a36Sopenharmony_ci					    "mout_aclk_cam1_400_user", };
517162306a36Sopenharmony_ci
517262306a36Sopenharmony_ciPNAME(mout_aclk_lite_c_b_p)		= { "mout_aclk_lite_c_a",
517362306a36Sopenharmony_ci					    "mout_aclk_cam1_333_user", };
517462306a36Sopenharmony_ciPNAME(mout_aclk_lite_c_a_p)		= { "mout_aclk_cam1_552_user",
517562306a36Sopenharmony_ci					    "mout_aclk_cam1_400_user", };
517662306a36Sopenharmony_ci
517762306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock cam1_fixed_clks[] __initconst = {
517862306a36Sopenharmony_ci	FRATE(CLK_PHYCLK_RXBYTEECLKHS0_S2B, "phyclk_rxbyteclkhs0_s2b_phy", NULL,
517962306a36Sopenharmony_ci			0, 100000000),
518062306a36Sopenharmony_ci};
518162306a36Sopenharmony_ci
518262306a36Sopenharmony_cistatic const struct samsung_mux_clock cam1_mux_clks[] __initconst = {
518362306a36Sopenharmony_ci	/* MUX_SEL_CAM10 */
518462306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_UART_USER, "mout_sclk_isp_uart_user",
518562306a36Sopenharmony_ci			mout_sclk_isp_uart_user_p, MUX_SEL_CAM10, 20, 1),
518662306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SPI1_USER, "mout_sclk_isp_spi1_user",
518762306a36Sopenharmony_ci			mout_sclk_isp_spi1_user_p, MUX_SEL_CAM10, 16, 1),
518862306a36Sopenharmony_ci	MUX(CLK_MOUT_SCLK_ISP_SPI0_USER, "mout_sclk_isp_spi0_user",
518962306a36Sopenharmony_ci			mout_sclk_isp_spi0_user_p, MUX_SEL_CAM10, 12, 1),
519062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_333_USER, "mout_aclk_cam1_333_user",
519162306a36Sopenharmony_ci			mout_aclk_cam1_333_user_p, MUX_SEL_CAM10, 8, 1),
519262306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_400_USER, "mout_aclk_cam1_400_user",
519362306a36Sopenharmony_ci			mout_aclk_cam1_400_user_p, MUX_SEL_CAM10, 4, 1),
519462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CAM1_552_USER, "mout_aclk_cam1_552_user",
519562306a36Sopenharmony_ci			mout_aclk_cam1_552_user_p, MUX_SEL_CAM10, 0, 1),
519662306a36Sopenharmony_ci
519762306a36Sopenharmony_ci	/* MUX_SEL_CAM11 */
519862306a36Sopenharmony_ci	MUX(CLK_MOUT_PHYCLK_RXBYTECLKHS0_S2B_USER,
519962306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s2b_user",
520062306a36Sopenharmony_ci			mout_phyclk_rxbyteclkhs0_s2b_user_p,
520162306a36Sopenharmony_ci			MUX_SEL_CAM11, 0, 1),
520262306a36Sopenharmony_ci
520362306a36Sopenharmony_ci	/* MUX_SEL_CAM12 */
520462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS2_B, "mout_aclk_csis2_b", mout_aclk_csis2_b_p,
520562306a36Sopenharmony_ci			MUX_SEL_CAM12, 20, 1),
520662306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_CSIS2_A, "mout_aclk_csis2_a", mout_aclk_csis2_a_p,
520762306a36Sopenharmony_ci			MUX_SEL_CAM12, 16, 1),
520862306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_FD_B, "mout_aclk_fd_b", mout_aclk_fd_b_p,
520962306a36Sopenharmony_ci			MUX_SEL_CAM12, 12, 1),
521062306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_FD_A, "mout_aclk_fd_a", mout_aclk_fd_a_p,
521162306a36Sopenharmony_ci			MUX_SEL_CAM12, 8, 1),
521262306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_C_B, "mout_aclk_lite_c_b", mout_aclk_lite_c_b_p,
521362306a36Sopenharmony_ci			MUX_SEL_CAM12, 4, 1),
521462306a36Sopenharmony_ci	MUX(CLK_MOUT_ACLK_LITE_C_A, "mout_aclk_lite_c_a", mout_aclk_lite_c_a_p,
521562306a36Sopenharmony_ci			MUX_SEL_CAM12, 0, 1),
521662306a36Sopenharmony_ci};
521762306a36Sopenharmony_ci
521862306a36Sopenharmony_cistatic const struct samsung_div_clock cam1_div_clks[] __initconst = {
521962306a36Sopenharmony_ci	/* DIV_CAM10 */
522062306a36Sopenharmony_ci	DIV(CLK_DIV_SCLK_ISP_MPWM, "div_sclk_isp_mpwm",
522162306a36Sopenharmony_ci			"div_pclk_cam1_83", DIV_CAM10, 16, 2),
522262306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_CAM1_83, "div_pclk_cam1_83",
522362306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", DIV_CAM10, 12, 2),
522462306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_CAM1_166, "div_pclk_cam1_166",
522562306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", DIV_CAM10, 8, 2),
522662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_DBG_CAM1, "div_pclk_dbg_cam1",
522762306a36Sopenharmony_ci			"mout_aclk_cam1_552_user", DIV_CAM10, 4, 3),
522862306a36Sopenharmony_ci	DIV(CLK_DIV_ATCLK_CAM1, "div_atclk_cam1", "mout_aclk_cam1_552_user",
522962306a36Sopenharmony_ci			DIV_CAM10, 0, 3),
523062306a36Sopenharmony_ci
523162306a36Sopenharmony_ci	/* DIV_CAM11 */
523262306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_CSIS2, "div_aclk_csis2", "mout_aclk_csis2_b",
523362306a36Sopenharmony_ci			DIV_CAM11, 16, 3),
523462306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_FD, "div_pclk_fd", "div_aclk_fd", DIV_CAM11, 12, 2),
523562306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_FD, "div_aclk_fd", "mout_aclk_fd_b", DIV_CAM11, 8, 3),
523662306a36Sopenharmony_ci	DIV(CLK_DIV_PCLK_LITE_C, "div_pclk_lite_c", "div_aclk_lite_c",
523762306a36Sopenharmony_ci			DIV_CAM11, 4, 2),
523862306a36Sopenharmony_ci	DIV(CLK_DIV_ACLK_LITE_C, "div_aclk_lite_c", "mout_aclk_lite_c_b",
523962306a36Sopenharmony_ci			DIV_CAM11, 0, 3),
524062306a36Sopenharmony_ci};
524162306a36Sopenharmony_ci
524262306a36Sopenharmony_cistatic const struct samsung_gate_clock cam1_gate_clks[] __initconst = {
524362306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM10 */
524462306a36Sopenharmony_ci	GATE(CLK_ACLK_ISP_GIC, "aclk_isp_gic", "mout_aclk_cam1_333_user",
524562306a36Sopenharmony_ci			ENABLE_ACLK_CAM10, 4, 0, 0),
524662306a36Sopenharmony_ci	GATE(CLK_ACLK_FD, "aclk_fd", "div_aclk_fd",
524762306a36Sopenharmony_ci			ENABLE_ACLK_CAM10, 3, 0, 0),
524862306a36Sopenharmony_ci	GATE(CLK_ACLK_LITE_C, "aclk_lite_c", "div_aclk_lite_c",
524962306a36Sopenharmony_ci			ENABLE_ACLK_CAM10, 1, 0, 0),
525062306a36Sopenharmony_ci	GATE(CLK_ACLK_CSIS2, "aclk_csis2", "div_aclk_csis2",
525162306a36Sopenharmony_ci			ENABLE_ACLK_CAM10, 0, 0, 0),
525262306a36Sopenharmony_ci
525362306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM11 */
525462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_FD, "aclk_asyncapbm_fd", "div_pclk_fd",
525562306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 29, CLK_IGNORE_UNUSED, 0),
525662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_FD, "aclk_asyncapbs_fd", "div_pclk_cam1_166",
525762306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 28, CLK_IGNORE_UNUSED, 0),
525862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBM_LITE_C, "aclk_asyncapbm_lite_c",
525962306a36Sopenharmony_ci			"div_pclk_lite_c", ENABLE_ACLK_CAM11,
526062306a36Sopenharmony_ci			27, CLK_IGNORE_UNUSED, 0),
526162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAPBS_LITE_C, "aclk_asyncapbs_lite_c",
526262306a36Sopenharmony_ci			"div_pclk_cam1_166", ENABLE_ACLK_CAM11,
526362306a36Sopenharmony_ci			26, CLK_IGNORE_UNUSED, 0),
526462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAHBS_SFRISP2H2, "aclk_asyncahbs_sfrisp2h2",
526562306a36Sopenharmony_ci			"div_pclk_cam1_83", ENABLE_ACLK_CAM11,
526662306a36Sopenharmony_ci			25, CLK_IGNORE_UNUSED, 0),
526762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAHBS_SFRISP2H1, "aclk_asyncahbs_sfrisp2h1",
526862306a36Sopenharmony_ci			"div_pclk_cam1_83", ENABLE_ACLK_CAM11,
526962306a36Sopenharmony_ci			24, CLK_IGNORE_UNUSED, 0),
527062306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_CA5, "aclk_asyncaxim_ca5",
527162306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
527262306a36Sopenharmony_ci			23, CLK_IGNORE_UNUSED, 0),
527362306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_CA5, "aclk_asyncaxis_ca5",
527462306a36Sopenharmony_ci			"mout_aclk_cam1_552_user", ENABLE_ACLK_CAM11,
527562306a36Sopenharmony_ci			22, CLK_IGNORE_UNUSED, 0),
527662306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_ISPX2, "aclk_asyncaxis_ispx2",
527762306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
527862306a36Sopenharmony_ci			21, CLK_IGNORE_UNUSED, 0),
527962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_ISPX1, "aclk_asyncaxis_ispx1",
528062306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
528162306a36Sopenharmony_ci			20, CLK_IGNORE_UNUSED, 0),
528262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_ISPX0, "aclk_asyncaxis_ispx0",
528362306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
528462306a36Sopenharmony_ci			19, CLK_IGNORE_UNUSED, 0),
528562306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_ISPEX, "aclk_asyncaxim_ispex",
528662306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
528762306a36Sopenharmony_ci			18, CLK_IGNORE_UNUSED, 0),
528862306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_ISP3P, "aclk_asyncaxim_isp3p",
528962306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
529062306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
529162306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_ISP3P, "aclk_asyncaxis_isp3p",
529262306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
529362306a36Sopenharmony_ci			16, CLK_IGNORE_UNUSED, 0),
529462306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_FD, "aclk_asyncaxim_fd",
529562306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
529662306a36Sopenharmony_ci			15, CLK_IGNORE_UNUSED, 0),
529762306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_FD, "aclk_asyncaxis_fd", "div_aclk_fd",
529862306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 14, CLK_IGNORE_UNUSED, 0),
529962306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIM_LITE_C, "aclk_asyncaxim_lite_c",
530062306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM11,
530162306a36Sopenharmony_ci			13, CLK_IGNORE_UNUSED, 0),
530262306a36Sopenharmony_ci	GATE(CLK_ACLK_ASYNCAXIS_LITE_C, "aclk_asyncaxis_lite_c",
530362306a36Sopenharmony_ci			"div_aclk_lite_c", ENABLE_ACLK_CAM11,
530462306a36Sopenharmony_ci			12, CLK_IGNORE_UNUSED, 0),
530562306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ISP5P, "aclk_ahb2apb_isp5p", "div_pclk_cam1_83",
530662306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 11, CLK_IGNORE_UNUSED, 0),
530762306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB2APB_ISP3P, "aclk_ahb2apb_isp3p", "div_pclk_cam1_83",
530862306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 10, CLK_IGNORE_UNUSED, 0),
530962306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI2APB_ISP3P, "aclk_axi2apb_isp3p",
531062306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM11,
531162306a36Sopenharmony_ci			9, CLK_IGNORE_UNUSED, 0),
531262306a36Sopenharmony_ci	GATE(CLK_ACLK_AHB_SFRISP2H, "aclk_ahb_sfrisp2h", "div_pclk_cam1_83",
531362306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 8, CLK_IGNORE_UNUSED, 0),
531462306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI_ISP_HX_R, "aclk_axi_isp_hx_r", "div_pclk_cam1_166",
531562306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 7, CLK_IGNORE_UNUSED, 0),
531662306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI_ISP_CX_R, "aclk_axi_isp_cx_r", "div_pclk_cam1_166",
531762306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 6, CLK_IGNORE_UNUSED, 0),
531862306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI_ISP_HX, "aclk_axi_isp_hx", "mout_aclk_cam1_333_user",
531962306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 5, CLK_IGNORE_UNUSED, 0),
532062306a36Sopenharmony_ci	GATE(CLK_ACLK_AXI_ISP_CX, "aclk_axi_isp_cx", "mout_aclk_cam1_333_user",
532162306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 4, CLK_IGNORE_UNUSED, 0),
532262306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_ISPX, "aclk_xiu_ispx", "mout_aclk_cam1_333_user",
532362306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 3, CLK_IGNORE_UNUSED, 0),
532462306a36Sopenharmony_ci	GATE(CLK_ACLK_XIU_ISPEX, "aclk_xiu_ispex", "mout_aclk_cam1_400_user",
532562306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 2, CLK_IGNORE_UNUSED, 0),
532662306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM1NP_333, "aclk_cam1np_333", "mout_aclk_cam1_333_user",
532762306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 1, CLK_IGNORE_UNUSED, 0),
532862306a36Sopenharmony_ci	GATE(CLK_ACLK_CAM1ND_400, "aclk_cam1nd_400", "mout_aclk_cam1_400_user",
532962306a36Sopenharmony_ci			ENABLE_ACLK_CAM11, 0, CLK_IGNORE_UNUSED, 0),
533062306a36Sopenharmony_ci
533162306a36Sopenharmony_ci	/* ENABLE_ACLK_CAM12 */
533262306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_ISPCPU, "aclk_smmu_ispcpu",
533362306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
533462306a36Sopenharmony_ci			10, CLK_IGNORE_UNUSED, 0),
533562306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_FD, "aclk_smmu_fd", "mout_aclk_cam1_400_user",
533662306a36Sopenharmony_ci			ENABLE_ACLK_CAM12, 9, CLK_IGNORE_UNUSED, 0),
533762306a36Sopenharmony_ci	GATE(CLK_ACLK_SMMU_LITE_C, "aclk_smmu_lite_c",
533862306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
533962306a36Sopenharmony_ci			8, CLK_IGNORE_UNUSED, 0),
534062306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_ISP3P, "aclk_bts_isp3p", "mout_aclk_cam1_400_user",
534162306a36Sopenharmony_ci			ENABLE_ACLK_CAM12, 7, CLK_IGNORE_UNUSED, 0),
534262306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_FD, "aclk_bts_fd", "mout_aclk_cam1_400_user",
534362306a36Sopenharmony_ci			ENABLE_ACLK_CAM12, 6, CLK_IGNORE_UNUSED, 0),
534462306a36Sopenharmony_ci	GATE(CLK_ACLK_BTS_LITE_C, "aclk_bts_lite_c", "mout_aclk_cam1_400_user",
534562306a36Sopenharmony_ci			ENABLE_ACLK_CAM12, 5, CLK_IGNORE_UNUSED, 0),
534662306a36Sopenharmony_ci	GATE(CLK_ACLK_AHBDN_SFRISP2H, "aclk_ahbdn_sfrisp2h",
534762306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM12,
534862306a36Sopenharmony_ci			4, CLK_IGNORE_UNUSED, 0),
534962306a36Sopenharmony_ci	GATE(CLK_ACLK_AHBDN_ISP5P, "aclk_aclk-shbdn_isp5p",
535062306a36Sopenharmony_ci			"mout_aclk_cam1_333_user", ENABLE_ACLK_CAM12,
535162306a36Sopenharmony_ci			3, CLK_IGNORE_UNUSED, 0),
535262306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_ISP3P, "aclk_axius_isp3p",
535362306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
535462306a36Sopenharmony_ci			2, CLK_IGNORE_UNUSED, 0),
535562306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_FD, "aclk_axius_fd", "mout_aclk_cam1_400_user",
535662306a36Sopenharmony_ci			ENABLE_ACLK_CAM12, 1, CLK_IGNORE_UNUSED, 0),
535762306a36Sopenharmony_ci	GATE(CLK_ACLK_AXIUS_LITE_C, "aclk_axius_lite_c",
535862306a36Sopenharmony_ci			"mout_aclk_cam1_400_user", ENABLE_ACLK_CAM12,
535962306a36Sopenharmony_ci			0, CLK_IGNORE_UNUSED, 0),
536062306a36Sopenharmony_ci
536162306a36Sopenharmony_ci	/* ENABLE_PCLK_CAM1 */
536262306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_ISPCPU, "pclk_smmu_ispcpu", "div_pclk_cam1_166",
536362306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 27, CLK_IGNORE_UNUSED, 0),
536462306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_FD, "pclk_smmu_fd", "div_pclk_cam1_166",
536562306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 26, CLK_IGNORE_UNUSED, 0),
536662306a36Sopenharmony_ci	GATE(CLK_PCLK_SMMU_LITE_C, "pclk_smmu_lite_c", "div_pclk_cam1_166",
536762306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 25, CLK_IGNORE_UNUSED, 0),
536862306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_ISP3P, "pclk_bts_isp3p", "div_pclk_cam1_83",
536962306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 24, CLK_IGNORE_UNUSED, 0),
537062306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_FD, "pclk_bts_fd", "div_pclk_cam1_83",
537162306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 23, CLK_IGNORE_UNUSED, 0),
537262306a36Sopenharmony_ci	GATE(CLK_PCLK_BTS_LITE_C, "pclk_bts_lite_c", "div_pclk_cam1_83",
537362306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 22, CLK_IGNORE_UNUSED, 0),
537462306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXIM_CA5, "pclk_asyncaxim_ca5", "div_pclk_cam1_166",
537562306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 21, CLK_IGNORE_UNUSED, 0),
537662306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXIM_ISPEX, "pclk_asyncaxim_ispex",
537762306a36Sopenharmony_ci			"div_pclk_cam1_83", ENABLE_PCLK_CAM1,
537862306a36Sopenharmony_ci			20, CLK_IGNORE_UNUSED, 0),
537962306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXIM_ISP3P, "pclk_asyncaxim_isp3p",
538062306a36Sopenharmony_ci			"div_pclk_cam1_83", ENABLE_PCLK_CAM1,
538162306a36Sopenharmony_ci			19, CLK_IGNORE_UNUSED, 0),
538262306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXIM_FD, "pclk_asyncaxim_fd", "div_pclk_cam1_83",
538362306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 18, CLK_IGNORE_UNUSED, 0),
538462306a36Sopenharmony_ci	GATE(CLK_PCLK_ASYNCAXIM_LITE_C, "pclk_asyncaxim_lite_c",
538562306a36Sopenharmony_ci			"div_pclk_cam1_83", ENABLE_PCLK_CAM1,
538662306a36Sopenharmony_ci			17, CLK_IGNORE_UNUSED, 0),
538762306a36Sopenharmony_ci	GATE(CLK_PCLK_PMU_CAM1, "pclk_pmu_cam1", "div_pclk_cam1_83",
538862306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 16, CLK_IGNORE_UNUSED, 0),
538962306a36Sopenharmony_ci	GATE(CLK_PCLK_SYSREG_CAM1, "pclk_sysreg_cam1", "div_pclk_cam1_83",
539062306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 15, CLK_IGNORE_UNUSED, 0),
539162306a36Sopenharmony_ci	GATE(CLK_PCLK_CMU_CAM1_LOCAL, "pclk_cmu_cam1_local",
539262306a36Sopenharmony_ci			"div_pclk_cam1_166", ENABLE_PCLK_CAM1,
539362306a36Sopenharmony_ci			14, CLK_IGNORE_UNUSED, 0),
539462306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_MCTADC, "pclk_isp_mctadc", "div_pclk_cam1_83",
539562306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 13, CLK_IGNORE_UNUSED, 0),
539662306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_WDT, "pclk_isp_wdt", "div_pclk_cam1_83",
539762306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 12, CLK_IGNORE_UNUSED, 0),
539862306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_PWM, "pclk_isp_pwm", "div_pclk_cam1_83",
539962306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 11, CLK_IGNORE_UNUSED, 0),
540062306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_UART, "pclk_isp_uart", "div_pclk_cam1_83",
540162306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 10, CLK_IGNORE_UNUSED, 0),
540262306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_MCUCTL, "pclk_isp_mcuctl", "div_pclk_cam1_83",
540362306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 9, CLK_IGNORE_UNUSED, 0),
540462306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_SPI1, "pclk_isp_spi1", "div_pclk_cam1_83",
540562306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 8, CLK_IGNORE_UNUSED, 0),
540662306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_SPI0, "pclk_isp_spi0", "div_pclk_cam1_83",
540762306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 7, CLK_IGNORE_UNUSED, 0),
540862306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_I2C2, "pclk_isp_i2c2", "div_pclk_cam1_83",
540962306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 6, CLK_IGNORE_UNUSED, 0),
541062306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_I2C1, "pclk_isp_i2c1", "div_pclk_cam1_83",
541162306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 5, CLK_IGNORE_UNUSED, 0),
541262306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_I2C0, "pclk_isp_i2c0", "div_pclk_cam1_83",
541362306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 4, CLK_IGNORE_UNUSED, 0),
541462306a36Sopenharmony_ci	GATE(CLK_PCLK_ISP_MPWM, "pclk_isp_mpwm", "div_pclk_cam1_83",
541562306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 3, CLK_IGNORE_UNUSED, 0),
541662306a36Sopenharmony_ci	GATE(CLK_PCLK_FD, "pclk_fd", "div_pclk_fd",
541762306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 3, CLK_IGNORE_UNUSED, 0),
541862306a36Sopenharmony_ci	GATE(CLK_PCLK_LITE_C, "pclk_lite_c", "div_pclk_lite_c",
541962306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 1, CLK_IGNORE_UNUSED, 0),
542062306a36Sopenharmony_ci	GATE(CLK_PCLK_CSIS2, "pclk_csis2", "div_pclk_cam1_166",
542162306a36Sopenharmony_ci			ENABLE_PCLK_CAM1, 0, CLK_IGNORE_UNUSED, 0),
542262306a36Sopenharmony_ci
542362306a36Sopenharmony_ci	/* ENABLE_SCLK_CAM1 */
542462306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_I2C2, "sclk_isp_i2c2", "oscclk", ENABLE_SCLK_CAM1,
542562306a36Sopenharmony_ci			15, 0, 0),
542662306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_I2C1, "sclk_isp_i2c1", "oscclk", ENABLE_SCLK_CAM1,
542762306a36Sopenharmony_ci			14, 0, 0),
542862306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_I2C0, "sclk_isp_i2c0", "oscclk", ENABLE_SCLK_CAM1,
542962306a36Sopenharmony_ci			13, 0, 0),
543062306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_PWM, "sclk_isp_pwm", "oscclk", ENABLE_SCLK_CAM1,
543162306a36Sopenharmony_ci			12, 0, 0),
543262306a36Sopenharmony_ci	GATE(CLK_PHYCLK_RXBYTECLKHS0_S2B, "phyclk_rxbyteclkhs0_s2b",
543362306a36Sopenharmony_ci			"mout_phyclk_rxbyteclkhs0_s2b_user",
543462306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 11, 0, 0),
543562306a36Sopenharmony_ci	GATE(CLK_SCLK_LITE_C_FREECNT, "sclk_lite_c_freecnt", "div_pclk_lite_c",
543662306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 10, 0, 0),
543762306a36Sopenharmony_ci	GATE(CLK_SCLK_PIXELASYNCM_FD, "sclk_pixelasyncm_fd", "div_aclk_fd",
543862306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 9, 0, 0),
543962306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_MCTADC, "sclk_isp_mctadc", "sclk_isp_mctadc_cam1",
544062306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 7, 0, 0),
544162306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_UART, "sclk_isp_uart", "mout_sclk_isp_uart_user",
544262306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 6, 0, 0),
544362306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SPI1, "sclk_isp_spi1", "mout_sclk_isp_spi1_user",
544462306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 5, 0, 0),
544562306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_SPI0, "sclk_isp_spi0", "mout_sclk_isp_spi0_user",
544662306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 4, 0, 0),
544762306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_MPWM, "sclk_isp_mpwm", "div_sclk_isp_mpwm",
544862306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 3, 0, 0),
544962306a36Sopenharmony_ci	GATE(CLK_PCLK_DBG_ISP, "sclk_dbg_isp", "div_pclk_dbg_cam1",
545062306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 2, 0, 0),
545162306a36Sopenharmony_ci	GATE(CLK_ATCLK_ISP, "atclk_isp", "div_atclk_cam1",
545262306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 1, 0, 0),
545362306a36Sopenharmony_ci	GATE(CLK_SCLK_ISP_CA5, "sclk_isp_ca5", "mout_aclk_cam1_552_user",
545462306a36Sopenharmony_ci			ENABLE_SCLK_CAM1, 0, 0, 0),
545562306a36Sopenharmony_ci};
545662306a36Sopenharmony_ci
545762306a36Sopenharmony_cistatic const struct samsung_cmu_info cam1_cmu_info __initconst = {
545862306a36Sopenharmony_ci	.mux_clks		= cam1_mux_clks,
545962306a36Sopenharmony_ci	.nr_mux_clks		= ARRAY_SIZE(cam1_mux_clks),
546062306a36Sopenharmony_ci	.div_clks		= cam1_div_clks,
546162306a36Sopenharmony_ci	.nr_div_clks		= ARRAY_SIZE(cam1_div_clks),
546262306a36Sopenharmony_ci	.gate_clks		= cam1_gate_clks,
546362306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(cam1_gate_clks),
546462306a36Sopenharmony_ci	.fixed_clks		= cam1_fixed_clks,
546562306a36Sopenharmony_ci	.nr_fixed_clks		= ARRAY_SIZE(cam1_fixed_clks),
546662306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_CAM1,
546762306a36Sopenharmony_ci	.clk_regs		= cam1_clk_regs,
546862306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(cam1_clk_regs),
546962306a36Sopenharmony_ci	.suspend_regs		= cam1_suspend_regs,
547062306a36Sopenharmony_ci	.nr_suspend_regs	= ARRAY_SIZE(cam1_suspend_regs),
547162306a36Sopenharmony_ci	.clk_name		= "aclk_cam1_400",
547262306a36Sopenharmony_ci};
547362306a36Sopenharmony_ci
547462306a36Sopenharmony_ci/*
547562306a36Sopenharmony_ci * Register offset definitions for CMU_IMEM
547662306a36Sopenharmony_ci */
547762306a36Sopenharmony_ci#define ENABLE_ACLK_IMEM_SLIMSSS		0x080c
547862306a36Sopenharmony_ci#define ENABLE_PCLK_IMEM_SLIMSSS		0x0908
547962306a36Sopenharmony_ci
548062306a36Sopenharmony_cistatic const unsigned long imem_clk_regs[] __initconst = {
548162306a36Sopenharmony_ci	ENABLE_ACLK_IMEM_SLIMSSS,
548262306a36Sopenharmony_ci	ENABLE_PCLK_IMEM_SLIMSSS,
548362306a36Sopenharmony_ci};
548462306a36Sopenharmony_ci
548562306a36Sopenharmony_cistatic const struct samsung_gate_clock imem_gate_clks[] __initconst = {
548662306a36Sopenharmony_ci	/* ENABLE_ACLK_IMEM_SLIMSSS */
548762306a36Sopenharmony_ci	GATE(CLK_ACLK_SLIMSSS, "aclk_slimsss", "aclk_imem_sssx_266",
548862306a36Sopenharmony_ci			ENABLE_ACLK_IMEM_SLIMSSS, 0, CLK_IGNORE_UNUSED, 0),
548962306a36Sopenharmony_ci
549062306a36Sopenharmony_ci	/* ENABLE_PCLK_IMEM_SLIMSSS */
549162306a36Sopenharmony_ci	GATE(CLK_PCLK_SLIMSSS, "pclk_slimsss", "aclk_imem_200",
549262306a36Sopenharmony_ci			ENABLE_PCLK_IMEM_SLIMSSS, 0, CLK_IGNORE_UNUSED, 0),
549362306a36Sopenharmony_ci};
549462306a36Sopenharmony_ci
549562306a36Sopenharmony_cistatic const struct samsung_cmu_info imem_cmu_info __initconst = {
549662306a36Sopenharmony_ci	.gate_clks		= imem_gate_clks,
549762306a36Sopenharmony_ci	.nr_gate_clks		= ARRAY_SIZE(imem_gate_clks),
549862306a36Sopenharmony_ci	.nr_clk_ids		= CLKS_NR_IMEM,
549962306a36Sopenharmony_ci	.clk_regs		= imem_clk_regs,
550062306a36Sopenharmony_ci	.nr_clk_regs		= ARRAY_SIZE(imem_clk_regs),
550162306a36Sopenharmony_ci	.clk_name		= "aclk_imem_200",
550262306a36Sopenharmony_ci};
550362306a36Sopenharmony_ci
550462306a36Sopenharmony_cistatic int __init exynos5433_cmu_probe(struct platform_device *pdev)
550562306a36Sopenharmony_ci{
550662306a36Sopenharmony_ci	return exynos_arm64_register_cmu_pm(pdev, false);
550762306a36Sopenharmony_ci}
550862306a36Sopenharmony_ci
550962306a36Sopenharmony_cistatic const struct of_device_id exynos5433_cmu_of_match[] = {
551062306a36Sopenharmony_ci	{
551162306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-aud",
551262306a36Sopenharmony_ci		.data = &aud_cmu_info,
551362306a36Sopenharmony_ci	}, {
551462306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-cam0",
551562306a36Sopenharmony_ci		.data = &cam0_cmu_info,
551662306a36Sopenharmony_ci	}, {
551762306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-cam1",
551862306a36Sopenharmony_ci		.data = &cam1_cmu_info,
551962306a36Sopenharmony_ci	}, {
552062306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-disp",
552162306a36Sopenharmony_ci		.data = &disp_cmu_info,
552262306a36Sopenharmony_ci	}, {
552362306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-g2d",
552462306a36Sopenharmony_ci		.data = &g2d_cmu_info,
552562306a36Sopenharmony_ci	}, {
552662306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-g3d",
552762306a36Sopenharmony_ci		.data = &g3d_cmu_info,
552862306a36Sopenharmony_ci	}, {
552962306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-fsys",
553062306a36Sopenharmony_ci		.data = &fsys_cmu_info,
553162306a36Sopenharmony_ci	}, {
553262306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-gscl",
553362306a36Sopenharmony_ci		.data = &gscl_cmu_info,
553462306a36Sopenharmony_ci	}, {
553562306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-mfc",
553662306a36Sopenharmony_ci		.data = &mfc_cmu_info,
553762306a36Sopenharmony_ci	}, {
553862306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-hevc",
553962306a36Sopenharmony_ci		.data = &hevc_cmu_info,
554062306a36Sopenharmony_ci	}, {
554162306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-isp",
554262306a36Sopenharmony_ci		.data = &isp_cmu_info,
554362306a36Sopenharmony_ci	}, {
554462306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-mscl",
554562306a36Sopenharmony_ci		.data = &mscl_cmu_info,
554662306a36Sopenharmony_ci	}, {
554762306a36Sopenharmony_ci		.compatible = "samsung,exynos5433-cmu-imem",
554862306a36Sopenharmony_ci		.data = &imem_cmu_info,
554962306a36Sopenharmony_ci	}, {
555062306a36Sopenharmony_ci	},
555162306a36Sopenharmony_ci};
555262306a36Sopenharmony_ci
555362306a36Sopenharmony_cistatic const struct dev_pm_ops exynos5433_cmu_pm_ops = {
555462306a36Sopenharmony_ci	SET_RUNTIME_PM_OPS(exynos_arm64_cmu_suspend, exynos_arm64_cmu_resume,
555562306a36Sopenharmony_ci			   NULL)
555662306a36Sopenharmony_ci	SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
555762306a36Sopenharmony_ci				     pm_runtime_force_resume)
555862306a36Sopenharmony_ci};
555962306a36Sopenharmony_ci
556062306a36Sopenharmony_cistatic struct platform_driver exynos5433_cmu_driver __refdata = {
556162306a36Sopenharmony_ci	.driver	= {
556262306a36Sopenharmony_ci		.name = "exynos5433-cmu",
556362306a36Sopenharmony_ci		.of_match_table = exynos5433_cmu_of_match,
556462306a36Sopenharmony_ci		.suppress_bind_attrs = true,
556562306a36Sopenharmony_ci		.pm = &exynos5433_cmu_pm_ops,
556662306a36Sopenharmony_ci	},
556762306a36Sopenharmony_ci	.probe = exynos5433_cmu_probe,
556862306a36Sopenharmony_ci};
556962306a36Sopenharmony_ci
557062306a36Sopenharmony_cistatic int __init exynos5433_cmu_init(void)
557162306a36Sopenharmony_ci{
557262306a36Sopenharmony_ci	return platform_driver_register(&exynos5433_cmu_driver);
557362306a36Sopenharmony_ci}
557462306a36Sopenharmony_cicore_initcall(exynos5433_cmu_init);
5575