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