162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2017-2022 Samsung Electronics Co., Ltd. 462306a36Sopenharmony_ci * https://www.samsung.com 562306a36Sopenharmony_ci * Copyright (c) 2017-2022 Tesla, Inc. 662306a36Sopenharmony_ci * https://www.tesla.com 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Common Clock Framework support for FSD SoC. 962306a36Sopenharmony_ci */ 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/clk.h> 1262306a36Sopenharmony_ci#include <linux/clk-provider.h> 1362306a36Sopenharmony_ci#include <linux/init.h> 1462306a36Sopenharmony_ci#include <linux/kernel.h> 1562306a36Sopenharmony_ci#include <linux/of.h> 1662306a36Sopenharmony_ci#include <linux/platform_device.h> 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci#include <dt-bindings/clock/fsd-clk.h> 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#include "clk.h" 2162306a36Sopenharmony_ci#include "clk-exynos-arm64.h" 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci/* Register Offset definitions for CMU_CMU (0x11c10000) */ 2462306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_SHARED0 0x0 2562306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_SHARED1 0x4 2662306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_SHARED2 0x8 2762306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_SHARED3 0xc 2862306a36Sopenharmony_ci#define PLL_CON0_PLL_SHARED0 0x100 2962306a36Sopenharmony_ci#define PLL_CON0_PLL_SHARED1 0x120 3062306a36Sopenharmony_ci#define PLL_CON0_PLL_SHARED2 0x140 3162306a36Sopenharmony_ci#define PLL_CON0_PLL_SHARED3 0x160 3262306a36Sopenharmony_ci#define MUX_CMU_CIS0_CLKMUX 0x1000 3362306a36Sopenharmony_ci#define MUX_CMU_CIS1_CLKMUX 0x1004 3462306a36Sopenharmony_ci#define MUX_CMU_CIS2_CLKMUX 0x1008 3562306a36Sopenharmony_ci#define MUX_CMU_CPUCL_SWITCHMUX 0x100c 3662306a36Sopenharmony_ci#define MUX_CMU_FSYS1_ACLK_MUX 0x1014 3762306a36Sopenharmony_ci#define MUX_PLL_SHARED0_MUX 0x1020 3862306a36Sopenharmony_ci#define MUX_PLL_SHARED1_MUX 0x1024 3962306a36Sopenharmony_ci#define DIV_CMU_CIS0_CLK 0x1800 4062306a36Sopenharmony_ci#define DIV_CMU_CIS1_CLK 0x1804 4162306a36Sopenharmony_ci#define DIV_CMU_CIS2_CLK 0x1808 4262306a36Sopenharmony_ci#define DIV_CMU_CMU_ACLK 0x180c 4362306a36Sopenharmony_ci#define DIV_CMU_CPUCL_SWITCH 0x1810 4462306a36Sopenharmony_ci#define DIV_CMU_FSYS0_SHARED0DIV4 0x181c 4562306a36Sopenharmony_ci#define DIV_CMU_FSYS0_SHARED1DIV3 0x1820 4662306a36Sopenharmony_ci#define DIV_CMU_FSYS0_SHARED1DIV4 0x1824 4762306a36Sopenharmony_ci#define DIV_CMU_FSYS1_SHARED0DIV4 0x1828 4862306a36Sopenharmony_ci#define DIV_CMU_FSYS1_SHARED0DIV8 0x182c 4962306a36Sopenharmony_ci#define DIV_CMU_IMEM_ACLK 0x1834 5062306a36Sopenharmony_ci#define DIV_CMU_IMEM_DMACLK 0x1838 5162306a36Sopenharmony_ci#define DIV_CMU_IMEM_TCUCLK 0x183c 5262306a36Sopenharmony_ci#define DIV_CMU_PERIC_SHARED0DIV20 0x1844 5362306a36Sopenharmony_ci#define DIV_CMU_PERIC_SHARED0DIV3_TBUCLK 0x1848 5462306a36Sopenharmony_ci#define DIV_CMU_PERIC_SHARED1DIV36 0x184c 5562306a36Sopenharmony_ci#define DIV_CMU_PERIC_SHARED1DIV4_DMACLK 0x1850 5662306a36Sopenharmony_ci#define DIV_PLL_SHARED0_DIV2 0x1858 5762306a36Sopenharmony_ci#define DIV_PLL_SHARED0_DIV3 0x185c 5862306a36Sopenharmony_ci#define DIV_PLL_SHARED0_DIV4 0x1860 5962306a36Sopenharmony_ci#define DIV_PLL_SHARED0_DIV6 0x1864 6062306a36Sopenharmony_ci#define DIV_PLL_SHARED1_DIV3 0x1868 6162306a36Sopenharmony_ci#define DIV_PLL_SHARED1_DIV36 0x186c 6262306a36Sopenharmony_ci#define DIV_PLL_SHARED1_DIV4 0x1870 6362306a36Sopenharmony_ci#define DIV_PLL_SHARED1_DIV9 0x1874 6462306a36Sopenharmony_ci#define GAT_CMU_CIS0_CLKGATE 0x2000 6562306a36Sopenharmony_ci#define GAT_CMU_CIS1_CLKGATE 0x2004 6662306a36Sopenharmony_ci#define GAT_CMU_CIS2_CLKGATE 0x2008 6762306a36Sopenharmony_ci#define GAT_CMU_CPUCL_SWITCH_GATE 0x200c 6862306a36Sopenharmony_ci#define GAT_CMU_FSYS0_SHARED0DIV4_GATE 0x2018 6962306a36Sopenharmony_ci#define GAT_CMU_FSYS0_SHARED1DIV4_CLK 0x201c 7062306a36Sopenharmony_ci#define GAT_CMU_FSYS0_SHARED1DIV4_GATE 0x2020 7162306a36Sopenharmony_ci#define GAT_CMU_FSYS1_SHARED0DIV4_GATE 0x2024 7262306a36Sopenharmony_ci#define GAT_CMU_FSYS1_SHARED1DIV4_GATE 0x2028 7362306a36Sopenharmony_ci#define GAT_CMU_IMEM_ACLK_GATE 0x2030 7462306a36Sopenharmony_ci#define GAT_CMU_IMEM_DMACLK_GATE 0x2034 7562306a36Sopenharmony_ci#define GAT_CMU_IMEM_TCUCLK_GATE 0x2038 7662306a36Sopenharmony_ci#define GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE 0x2040 7762306a36Sopenharmony_ci#define GAT_CMU_PERIC_SHARED0DIVE4_GATE 0x2044 7862306a36Sopenharmony_ci#define GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE 0x2048 7962306a36Sopenharmony_ci#define GAT_CMU_PERIC_SHARED1DIVE4_GATE 0x204c 8062306a36Sopenharmony_ci#define GAT_CMU_CMU_CMU_IPCLKPORT_PCLK 0x2054 8162306a36Sopenharmony_ci#define GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK 0x2058 8262306a36Sopenharmony_ci#define GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU 0x205c 8362306a36Sopenharmony_ci#define GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK 0x2060 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_cistatic const unsigned long cmu_clk_regs[] __initconst = { 8662306a36Sopenharmony_ci PLL_LOCKTIME_PLL_SHARED0, 8762306a36Sopenharmony_ci PLL_LOCKTIME_PLL_SHARED1, 8862306a36Sopenharmony_ci PLL_LOCKTIME_PLL_SHARED2, 8962306a36Sopenharmony_ci PLL_LOCKTIME_PLL_SHARED3, 9062306a36Sopenharmony_ci PLL_CON0_PLL_SHARED0, 9162306a36Sopenharmony_ci PLL_CON0_PLL_SHARED1, 9262306a36Sopenharmony_ci PLL_CON0_PLL_SHARED2, 9362306a36Sopenharmony_ci PLL_CON0_PLL_SHARED3, 9462306a36Sopenharmony_ci MUX_CMU_CIS0_CLKMUX, 9562306a36Sopenharmony_ci MUX_CMU_CIS1_CLKMUX, 9662306a36Sopenharmony_ci MUX_CMU_CIS2_CLKMUX, 9762306a36Sopenharmony_ci MUX_CMU_CPUCL_SWITCHMUX, 9862306a36Sopenharmony_ci MUX_CMU_FSYS1_ACLK_MUX, 9962306a36Sopenharmony_ci MUX_PLL_SHARED0_MUX, 10062306a36Sopenharmony_ci MUX_PLL_SHARED1_MUX, 10162306a36Sopenharmony_ci DIV_CMU_CIS0_CLK, 10262306a36Sopenharmony_ci DIV_CMU_CIS1_CLK, 10362306a36Sopenharmony_ci DIV_CMU_CIS2_CLK, 10462306a36Sopenharmony_ci DIV_CMU_CMU_ACLK, 10562306a36Sopenharmony_ci DIV_CMU_CPUCL_SWITCH, 10662306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED0DIV4, 10762306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED1DIV3, 10862306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED1DIV4, 10962306a36Sopenharmony_ci DIV_CMU_FSYS1_SHARED0DIV4, 11062306a36Sopenharmony_ci DIV_CMU_FSYS1_SHARED0DIV8, 11162306a36Sopenharmony_ci DIV_CMU_IMEM_ACLK, 11262306a36Sopenharmony_ci DIV_CMU_IMEM_DMACLK, 11362306a36Sopenharmony_ci DIV_CMU_IMEM_TCUCLK, 11462306a36Sopenharmony_ci DIV_CMU_PERIC_SHARED0DIV20, 11562306a36Sopenharmony_ci DIV_CMU_PERIC_SHARED0DIV3_TBUCLK, 11662306a36Sopenharmony_ci DIV_CMU_PERIC_SHARED1DIV36, 11762306a36Sopenharmony_ci DIV_CMU_PERIC_SHARED1DIV4_DMACLK, 11862306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV2, 11962306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV3, 12062306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV4, 12162306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV6, 12262306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV3, 12362306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV36, 12462306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV4, 12562306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV9, 12662306a36Sopenharmony_ci GAT_CMU_CIS0_CLKGATE, 12762306a36Sopenharmony_ci GAT_CMU_CIS1_CLKGATE, 12862306a36Sopenharmony_ci GAT_CMU_CIS2_CLKGATE, 12962306a36Sopenharmony_ci GAT_CMU_CPUCL_SWITCH_GATE, 13062306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED0DIV4_GATE, 13162306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED1DIV4_CLK, 13262306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED1DIV4_GATE, 13362306a36Sopenharmony_ci GAT_CMU_FSYS1_SHARED0DIV4_GATE, 13462306a36Sopenharmony_ci GAT_CMU_FSYS1_SHARED1DIV4_GATE, 13562306a36Sopenharmony_ci GAT_CMU_IMEM_ACLK_GATE, 13662306a36Sopenharmony_ci GAT_CMU_IMEM_DMACLK_GATE, 13762306a36Sopenharmony_ci GAT_CMU_IMEM_TCUCLK_GATE, 13862306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE, 13962306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED0DIVE4_GATE, 14062306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE, 14162306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED1DIVE4_GATE, 14262306a36Sopenharmony_ci GAT_CMU_CMU_CMU_IPCLKPORT_PCLK, 14362306a36Sopenharmony_ci GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK, 14462306a36Sopenharmony_ci GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU, 14562306a36Sopenharmony_ci GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK, 14662306a36Sopenharmony_ci}; 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_shared0_rate_table[] __initconst = { 14962306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 2000000000U, 250, 3, 0), 15062306a36Sopenharmony_ci}; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_shared1_rate_table[] __initconst = { 15362306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 2400000000U, 200, 2, 0), 15462306a36Sopenharmony_ci}; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_shared2_rate_table[] __initconst = { 15762306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 2400000000U, 200, 2, 0), 15862306a36Sopenharmony_ci}; 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_shared3_rate_table[] __initconst = { 16162306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 1800000000U, 150, 2, 0), 16262306a36Sopenharmony_ci}; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_cistatic const struct samsung_pll_clock cmu_pll_clks[] __initconst = { 16562306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_shared0", "fin_pll", PLL_LOCKTIME_PLL_SHARED0, 16662306a36Sopenharmony_ci PLL_CON0_PLL_SHARED0, pll_shared0_rate_table), 16762306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_shared1", "fin_pll", PLL_LOCKTIME_PLL_SHARED1, 16862306a36Sopenharmony_ci PLL_CON0_PLL_SHARED1, pll_shared1_rate_table), 16962306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_shared2", "fin_pll", PLL_LOCKTIME_PLL_SHARED2, 17062306a36Sopenharmony_ci PLL_CON0_PLL_SHARED2, pll_shared2_rate_table), 17162306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_shared3", "fin_pll", PLL_LOCKTIME_PLL_SHARED3, 17262306a36Sopenharmony_ci PLL_CON0_PLL_SHARED3, pll_shared3_rate_table), 17362306a36Sopenharmony_ci}; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ci/* List of parent clocks for Muxes in CMU_CMU */ 17662306a36Sopenharmony_ciPNAME(mout_cmu_shared0_pll_p) = { "fin_pll", "fout_pll_shared0" }; 17762306a36Sopenharmony_ciPNAME(mout_cmu_shared1_pll_p) = { "fin_pll", "fout_pll_shared1" }; 17862306a36Sopenharmony_ciPNAME(mout_cmu_shared2_pll_p) = { "fin_pll", "fout_pll_shared2" }; 17962306a36Sopenharmony_ciPNAME(mout_cmu_shared3_pll_p) = { "fin_pll", "fout_pll_shared3" }; 18062306a36Sopenharmony_ciPNAME(mout_cmu_cis0_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 18162306a36Sopenharmony_ciPNAME(mout_cmu_cis1_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 18262306a36Sopenharmony_ciPNAME(mout_cmu_cis2_clkmux_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 18362306a36Sopenharmony_ciPNAME(mout_cmu_cpucl_switchmux_p) = { "mout_cmu_pll_shared2", "mout_cmu_pll_shared0_mux" }; 18462306a36Sopenharmony_ciPNAME(mout_cmu_fsys1_aclk_mux_p) = { "dout_cmu_pll_shared0_div4", "fin_pll" }; 18562306a36Sopenharmony_ciPNAME(mout_cmu_pll_shared0_mux_p) = { "fin_pll", "mout_cmu_pll_shared0" }; 18662306a36Sopenharmony_ciPNAME(mout_cmu_pll_shared1_mux_p) = { "fin_pll", "mout_cmu_pll_shared1" }; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_cistatic const struct samsung_mux_clock cmu_mux_clks[] __initconst = { 18962306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared0", mout_cmu_shared0_pll_p, PLL_CON0_PLL_SHARED0, 4, 1), 19062306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared1", mout_cmu_shared1_pll_p, PLL_CON0_PLL_SHARED1, 4, 1), 19162306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared2", mout_cmu_shared2_pll_p, PLL_CON0_PLL_SHARED2, 4, 1), 19262306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared3", mout_cmu_shared3_pll_p, PLL_CON0_PLL_SHARED3, 4, 1), 19362306a36Sopenharmony_ci MUX(0, "mout_cmu_cis0_clkmux", mout_cmu_cis0_clkmux_p, MUX_CMU_CIS0_CLKMUX, 0, 1), 19462306a36Sopenharmony_ci MUX(0, "mout_cmu_cis1_clkmux", mout_cmu_cis1_clkmux_p, MUX_CMU_CIS1_CLKMUX, 0, 1), 19562306a36Sopenharmony_ci MUX(0, "mout_cmu_cis2_clkmux", mout_cmu_cis2_clkmux_p, MUX_CMU_CIS2_CLKMUX, 0, 1), 19662306a36Sopenharmony_ci MUX(0, "mout_cmu_cpucl_switchmux", mout_cmu_cpucl_switchmux_p, 19762306a36Sopenharmony_ci MUX_CMU_CPUCL_SWITCHMUX, 0, 1), 19862306a36Sopenharmony_ci MUX(0, "mout_cmu_fsys1_aclk_mux", mout_cmu_fsys1_aclk_mux_p, MUX_CMU_FSYS1_ACLK_MUX, 0, 1), 19962306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared0_mux", mout_cmu_pll_shared0_mux_p, MUX_PLL_SHARED0_MUX, 0, 1), 20062306a36Sopenharmony_ci MUX(0, "mout_cmu_pll_shared1_mux", mout_cmu_pll_shared1_mux_p, MUX_PLL_SHARED1_MUX, 0, 1), 20162306a36Sopenharmony_ci}; 20262306a36Sopenharmony_ci 20362306a36Sopenharmony_cistatic const struct samsung_div_clock cmu_div_clks[] __initconst = { 20462306a36Sopenharmony_ci DIV(0, "dout_cmu_cis0_clk", "cmu_cis0_clkgate", DIV_CMU_CIS0_CLK, 0, 4), 20562306a36Sopenharmony_ci DIV(0, "dout_cmu_cis1_clk", "cmu_cis1_clkgate", DIV_CMU_CIS1_CLK, 0, 4), 20662306a36Sopenharmony_ci DIV(0, "dout_cmu_cis2_clk", "cmu_cis2_clkgate", DIV_CMU_CIS2_CLK, 0, 4), 20762306a36Sopenharmony_ci DIV(0, "dout_cmu_cmu_aclk", "dout_cmu_pll_shared1_div9", DIV_CMU_CMU_ACLK, 0, 4), 20862306a36Sopenharmony_ci DIV(0, "dout_cmu_cpucl_switch", "cmu_cpucl_switch_gate", DIV_CMU_CPUCL_SWITCH, 0, 4), 20962306a36Sopenharmony_ci DIV(DOUT_CMU_FSYS0_SHARED0DIV4, "dout_cmu_fsys0_shared0div4", "cmu_fsys0_shared0div4_gate", 21062306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED0DIV4, 0, 4), 21162306a36Sopenharmony_ci DIV(0, "dout_cmu_fsys0_shared1div3", "cmu_fsys0_shared1div4_clk", 21262306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED1DIV3, 0, 4), 21362306a36Sopenharmony_ci DIV(DOUT_CMU_FSYS0_SHARED1DIV4, "dout_cmu_fsys0_shared1div4", "cmu_fsys0_shared1div4_gate", 21462306a36Sopenharmony_ci DIV_CMU_FSYS0_SHARED1DIV4, 0, 4), 21562306a36Sopenharmony_ci DIV(DOUT_CMU_FSYS1_SHARED0DIV4, "dout_cmu_fsys1_shared0div4", "cmu_fsys1_shared0div4_gate", 21662306a36Sopenharmony_ci DIV_CMU_FSYS1_SHARED0DIV4, 0, 4), 21762306a36Sopenharmony_ci DIV(DOUT_CMU_FSYS1_SHARED0DIV8, "dout_cmu_fsys1_shared0div8", "cmu_fsys1_shared1div4_gate", 21862306a36Sopenharmony_ci DIV_CMU_FSYS1_SHARED0DIV8, 0, 4), 21962306a36Sopenharmony_ci DIV(DOUT_CMU_IMEM_ACLK, "dout_cmu_imem_aclk", "cmu_imem_aclk_gate", 22062306a36Sopenharmony_ci DIV_CMU_IMEM_ACLK, 0, 4), 22162306a36Sopenharmony_ci DIV(DOUT_CMU_IMEM_DMACLK, "dout_cmu_imem_dmaclk", "cmu_imem_dmaclk_gate", 22262306a36Sopenharmony_ci DIV_CMU_IMEM_DMACLK, 0, 4), 22362306a36Sopenharmony_ci DIV(DOUT_CMU_IMEM_TCUCLK, "dout_cmu_imem_tcuclk", "cmu_imem_tcuclk_gate", 22462306a36Sopenharmony_ci DIV_CMU_IMEM_TCUCLK, 0, 4), 22562306a36Sopenharmony_ci DIV(DOUT_CMU_PERIC_SHARED0DIV20, "dout_cmu_peric_shared0div20", 22662306a36Sopenharmony_ci "cmu_peric_shared0dive4_gate", DIV_CMU_PERIC_SHARED0DIV20, 0, 4), 22762306a36Sopenharmony_ci DIV(DOUT_CMU_PERIC_SHARED0DIV3_TBUCLK, "dout_cmu_peric_shared0div3_tbuclk", 22862306a36Sopenharmony_ci "cmu_peric_shared0dive3_tbuclk_gate", DIV_CMU_PERIC_SHARED0DIV3_TBUCLK, 0, 4), 22962306a36Sopenharmony_ci DIV(DOUT_CMU_PERIC_SHARED1DIV36, "dout_cmu_peric_shared1div36", 23062306a36Sopenharmony_ci "cmu_peric_shared1dive4_gate", DIV_CMU_PERIC_SHARED1DIV36, 0, 4), 23162306a36Sopenharmony_ci DIV(DOUT_CMU_PERIC_SHARED1DIV4_DMACLK, "dout_cmu_peric_shared1div4_dmaclk", 23262306a36Sopenharmony_ci "cmu_peric_shared1div4_dmaclk_gate", DIV_CMU_PERIC_SHARED1DIV4_DMACLK, 0, 4), 23362306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared0_div2", "mout_cmu_pll_shared0_mux", 23462306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV2, 0, 4), 23562306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared0_div3", "mout_cmu_pll_shared0_mux", 23662306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV3, 0, 4), 23762306a36Sopenharmony_ci DIV(DOUT_CMU_PLL_SHARED0_DIV4, "dout_cmu_pll_shared0_div4", "dout_cmu_pll_shared0_div2", 23862306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV4, 0, 4), 23962306a36Sopenharmony_ci DIV(DOUT_CMU_PLL_SHARED0_DIV6, "dout_cmu_pll_shared0_div6", "dout_cmu_pll_shared0_div3", 24062306a36Sopenharmony_ci DIV_PLL_SHARED0_DIV6, 0, 4), 24162306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared1_div3", "mout_cmu_pll_shared1_mux", 24262306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV3, 0, 4), 24362306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared1_div36", "dout_cmu_pll_shared1_div9", 24462306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV36, 0, 4), 24562306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared1_div4", "mout_cmu_pll_shared1_mux", 24662306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV4, 0, 4), 24762306a36Sopenharmony_ci DIV(0, "dout_cmu_pll_shared1_div9", "dout_cmu_pll_shared1_div3", 24862306a36Sopenharmony_ci DIV_PLL_SHARED1_DIV9, 0, 4), 24962306a36Sopenharmony_ci}; 25062306a36Sopenharmony_ci 25162306a36Sopenharmony_cistatic const struct samsung_gate_clock cmu_gate_clks[] __initconst = { 25262306a36Sopenharmony_ci GATE(0, "cmu_cis0_clkgate", "mout_cmu_cis0_clkmux", GAT_CMU_CIS0_CLKGATE, 21, 25362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 25462306a36Sopenharmony_ci GATE(0, "cmu_cis1_clkgate", "mout_cmu_cis1_clkmux", GAT_CMU_CIS1_CLKGATE, 21, 25562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 25662306a36Sopenharmony_ci GATE(0, "cmu_cis2_clkgate", "mout_cmu_cis2_clkmux", GAT_CMU_CIS2_CLKGATE, 21, 25762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 25862306a36Sopenharmony_ci GATE(CMU_CPUCL_SWITCH_GATE, "cmu_cpucl_switch_gate", "mout_cmu_cpucl_switchmux", 25962306a36Sopenharmony_ci GAT_CMU_CPUCL_SWITCH_GATE, 21, CLK_IGNORE_UNUSED, 0), 26062306a36Sopenharmony_ci GATE(GAT_CMU_FSYS0_SHARED0DIV4, "cmu_fsys0_shared0div4_gate", "dout_cmu_pll_shared0_div4", 26162306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED0DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 26262306a36Sopenharmony_ci GATE(0, "cmu_fsys0_shared1div4_clk", "dout_cmu_pll_shared1_div3", 26362306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED1DIV4_CLK, 21, CLK_IGNORE_UNUSED, 0), 26462306a36Sopenharmony_ci GATE(0, "cmu_fsys0_shared1div4_gate", "dout_cmu_pll_shared1_div4", 26562306a36Sopenharmony_ci GAT_CMU_FSYS0_SHARED1DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 26662306a36Sopenharmony_ci GATE(0, "cmu_fsys1_shared0div4_gate", "mout_cmu_fsys1_aclk_mux", 26762306a36Sopenharmony_ci GAT_CMU_FSYS1_SHARED0DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 26862306a36Sopenharmony_ci GATE(0, "cmu_fsys1_shared1div4_gate", "dout_cmu_fsys1_shared0div4", 26962306a36Sopenharmony_ci GAT_CMU_FSYS1_SHARED1DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 27062306a36Sopenharmony_ci GATE(0, "cmu_imem_aclk_gate", "dout_cmu_pll_shared1_div9", GAT_CMU_IMEM_ACLK_GATE, 21, 27162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 27262306a36Sopenharmony_ci GATE(0, "cmu_imem_dmaclk_gate", "mout_cmu_pll_shared1_mux", GAT_CMU_IMEM_DMACLK_GATE, 21, 27362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 27462306a36Sopenharmony_ci GATE(0, "cmu_imem_tcuclk_gate", "dout_cmu_pll_shared0_div3", GAT_CMU_IMEM_TCUCLK_GATE, 21, 27562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 27662306a36Sopenharmony_ci GATE(0, "cmu_peric_shared0dive3_tbuclk_gate", "dout_cmu_pll_shared0_div3", 27762306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED0DIVE3_TBUCLK_GATE, 21, CLK_IGNORE_UNUSED, 0), 27862306a36Sopenharmony_ci GATE(0, "cmu_peric_shared0dive4_gate", "dout_cmu_pll_shared0_div4", 27962306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED0DIVE4_GATE, 21, CLK_IGNORE_UNUSED, 0), 28062306a36Sopenharmony_ci GATE(0, "cmu_peric_shared1div4_dmaclk_gate", "dout_cmu_pll_shared1_div4", 28162306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED1DIV4_DMACLK_GATE, 21, CLK_IGNORE_UNUSED, 0), 28262306a36Sopenharmony_ci GATE(0, "cmu_peric_shared1dive4_gate", "dout_cmu_pll_shared1_div36", 28362306a36Sopenharmony_ci GAT_CMU_PERIC_SHARED1DIVE4_GATE, 21, CLK_IGNORE_UNUSED, 0), 28462306a36Sopenharmony_ci GATE(0, "cmu_uid_cmu_cmu_cmu_ipclkport_pclk", "dout_cmu_cmu_aclk", 28562306a36Sopenharmony_ci GAT_CMU_CMU_CMU_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 28662306a36Sopenharmony_ci GATE(0, "cmu_uid_axi2apb_cmu_ipclkport_aclk", "dout_cmu_cmu_aclk", 28762306a36Sopenharmony_ci GAT_CMU_AXI2APB_CMU_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 28862306a36Sopenharmony_ci GATE(0, "cmu_uid_ns_brdg_cmu_ipclkport_clk__psoc_cmu__clk_cmu", "dout_cmu_cmu_aclk", 28962306a36Sopenharmony_ci GAT_CMU_NS_BRDG_CMU_IPCLKPORT_CLK__PSOC_CMU__CLK_CMU, 21, CLK_IGNORE_UNUSED, 0), 29062306a36Sopenharmony_ci GATE(0, "cmu_uid_sysreg_cmu_ipclkport_pclk", "dout_cmu_cmu_aclk", 29162306a36Sopenharmony_ci GAT_CMU_SYSREG_CMU_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 29262306a36Sopenharmony_ci}; 29362306a36Sopenharmony_ci 29462306a36Sopenharmony_cistatic const struct samsung_cmu_info cmu_cmu_info __initconst = { 29562306a36Sopenharmony_ci .pll_clks = cmu_pll_clks, 29662306a36Sopenharmony_ci .nr_pll_clks = ARRAY_SIZE(cmu_pll_clks), 29762306a36Sopenharmony_ci .mux_clks = cmu_mux_clks, 29862306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(cmu_mux_clks), 29962306a36Sopenharmony_ci .div_clks = cmu_div_clks, 30062306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(cmu_div_clks), 30162306a36Sopenharmony_ci .gate_clks = cmu_gate_clks, 30262306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(cmu_gate_clks), 30362306a36Sopenharmony_ci .nr_clk_ids = CMU_NR_CLK, 30462306a36Sopenharmony_ci .clk_regs = cmu_clk_regs, 30562306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(cmu_clk_regs), 30662306a36Sopenharmony_ci}; 30762306a36Sopenharmony_ci 30862306a36Sopenharmony_cistatic void __init fsd_clk_cmu_init(struct device_node *np) 30962306a36Sopenharmony_ci{ 31062306a36Sopenharmony_ci samsung_cmu_register_one(np, &cmu_cmu_info); 31162306a36Sopenharmony_ci} 31262306a36Sopenharmony_ci 31362306a36Sopenharmony_ciCLK_OF_DECLARE(fsd_clk_cmu, "tesla,fsd-clock-cmu", fsd_clk_cmu_init); 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci/* Register Offset definitions for CMU_PERIC (0x14010000) */ 31662306a36Sopenharmony_ci#define PLL_CON0_PERIC_DMACLK_MUX 0x100 31762306a36Sopenharmony_ci#define PLL_CON0_PERIC_EQOS_BUSCLK_MUX 0x120 31862306a36Sopenharmony_ci#define PLL_CON0_PERIC_PCLK_MUX 0x140 31962306a36Sopenharmony_ci#define PLL_CON0_PERIC_TBUCLK_MUX 0x160 32062306a36Sopenharmony_ci#define PLL_CON0_SPI_CLK 0x180 32162306a36Sopenharmony_ci#define PLL_CON0_SPI_PCLK 0x1a0 32262306a36Sopenharmony_ci#define PLL_CON0_UART_CLK 0x1c0 32362306a36Sopenharmony_ci#define PLL_CON0_UART_PCLK 0x1e0 32462306a36Sopenharmony_ci#define MUX_PERIC_EQOS_PHYRXCLK 0x1000 32562306a36Sopenharmony_ci#define DIV_EQOS_BUSCLK 0x1800 32662306a36Sopenharmony_ci#define DIV_PERIC_MCAN_CLK 0x1804 32762306a36Sopenharmony_ci#define DIV_RGMII_CLK 0x1808 32862306a36Sopenharmony_ci#define DIV_RII_CLK 0x180c 32962306a36Sopenharmony_ci#define DIV_RMII_CLK 0x1810 33062306a36Sopenharmony_ci#define DIV_SPI_CLK 0x1814 33162306a36Sopenharmony_ci#define DIV_UART_CLK 0x1818 33262306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I 0x2000 33362306a36Sopenharmony_ci#define GAT_GPIO_PERIC_IPCLKPORT_OSCCLK 0x2004 33462306a36Sopenharmony_ci#define GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK 0x2008 33562306a36Sopenharmony_ci#define GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK 0x200c 33662306a36Sopenharmony_ci#define GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK 0x2010 33762306a36Sopenharmony_ci#define GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK 0x2014 33862306a36Sopenharmony_ci#define GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM 0x2018 33962306a36Sopenharmony_ci#define GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS 0x201c 34062306a36Sopenharmony_ci#define GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM 0x2020 34162306a36Sopenharmony_ci#define GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS 0x2024 34262306a36Sopenharmony_ci#define GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK 0x2028 34362306a36Sopenharmony_ci#define GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK 0x202c 34462306a36Sopenharmony_ci#define GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK 0x2030 34562306a36Sopenharmony_ci#define GAT_BUS_D_PERIC_IPCLKPORT_DMACLK 0x2034 34662306a36Sopenharmony_ci#define GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK 0x2038 34762306a36Sopenharmony_ci#define GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK 0x203c 34862306a36Sopenharmony_ci#define GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK 0x2040 34962306a36Sopenharmony_ci#define GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK 0x2044 35062306a36Sopenharmony_ci#define GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK 0x2048 35162306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_ACLK_I 0x204c 35262306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I 0x2050 35362306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_HCLK_I 0x2054 35462306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I 0x2058 35562306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I 0x205c 35662306a36Sopenharmony_ci#define GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I 0x2060 35762306a36Sopenharmony_ci#define GAT_GPIO_PERIC_IPCLKPORT_PCLK 0x2064 35862306a36Sopenharmony_ci#define GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D 0x2068 35962306a36Sopenharmony_ci#define GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P 0x206c 36062306a36Sopenharmony_ci#define GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0 0x2070 36162306a36Sopenharmony_ci#define GAT_PERIC_DMA0_IPCLKPORT_ACLK 0x2074 36262306a36Sopenharmony_ci#define GAT_PERIC_DMA1_IPCLKPORT_ACLK 0x2078 36362306a36Sopenharmony_ci#define GAT_PERIC_I2C0_IPCLKPORT_I_PCLK 0x207c 36462306a36Sopenharmony_ci#define GAT_PERIC_I2C1_IPCLKPORT_I_PCLK 0x2080 36562306a36Sopenharmony_ci#define GAT_PERIC_I2C2_IPCLKPORT_I_PCLK 0x2084 36662306a36Sopenharmony_ci#define GAT_PERIC_I2C3_IPCLKPORT_I_PCLK 0x2088 36762306a36Sopenharmony_ci#define GAT_PERIC_I2C4_IPCLKPORT_I_PCLK 0x208c 36862306a36Sopenharmony_ci#define GAT_PERIC_I2C5_IPCLKPORT_I_PCLK 0x2090 36962306a36Sopenharmony_ci#define GAT_PERIC_I2C6_IPCLKPORT_I_PCLK 0x2094 37062306a36Sopenharmony_ci#define GAT_PERIC_I2C7_IPCLKPORT_I_PCLK 0x2098 37162306a36Sopenharmony_ci#define GAT_PERIC_MCAN0_IPCLKPORT_CCLK 0x209c 37262306a36Sopenharmony_ci#define GAT_PERIC_MCAN0_IPCLKPORT_PCLK 0x20a0 37362306a36Sopenharmony_ci#define GAT_PERIC_MCAN1_IPCLKPORT_CCLK 0x20a4 37462306a36Sopenharmony_ci#define GAT_PERIC_MCAN1_IPCLKPORT_PCLK 0x20a8 37562306a36Sopenharmony_ci#define GAT_PERIC_MCAN2_IPCLKPORT_CCLK 0x20ac 37662306a36Sopenharmony_ci#define GAT_PERIC_MCAN2_IPCLKPORT_PCLK 0x20b0 37762306a36Sopenharmony_ci#define GAT_PERIC_MCAN3_IPCLKPORT_CCLK 0x20b4 37862306a36Sopenharmony_ci#define GAT_PERIC_MCAN3_IPCLKPORT_PCLK 0x20b8 37962306a36Sopenharmony_ci#define GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0 0x20bc 38062306a36Sopenharmony_ci#define GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0 0x20c0 38162306a36Sopenharmony_ci#define GAT_PERIC_SMMU_IPCLKPORT_CCLK 0x20c4 38262306a36Sopenharmony_ci#define GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK 0x20c8 38362306a36Sopenharmony_ci#define GAT_PERIC_SPI0_IPCLKPORT_I_PCLK 0x20cc 38462306a36Sopenharmony_ci#define GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI 0x20d0 38562306a36Sopenharmony_ci#define GAT_PERIC_SPI1_IPCLKPORT_I_PCLK 0x20d4 38662306a36Sopenharmony_ci#define GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI 0x20d8 38762306a36Sopenharmony_ci#define GAT_PERIC_SPI2_IPCLKPORT_I_PCLK 0x20dc 38862306a36Sopenharmony_ci#define GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI 0x20e0 38962306a36Sopenharmony_ci#define GAT_PERIC_TDM0_IPCLKPORT_HCLK_M 0x20e4 39062306a36Sopenharmony_ci#define GAT_PERIC_TDM0_IPCLKPORT_PCLK 0x20e8 39162306a36Sopenharmony_ci#define GAT_PERIC_TDM1_IPCLKPORT_HCLK_M 0x20ec 39262306a36Sopenharmony_ci#define GAT_PERIC_TDM1_IPCLKPORT_PCLK 0x20f0 39362306a36Sopenharmony_ci#define GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART 0x20f4 39462306a36Sopenharmony_ci#define GAT_PERIC_UART0_IPCLKPORT_PCLK 0x20f8 39562306a36Sopenharmony_ci#define GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART 0x20fc 39662306a36Sopenharmony_ci#define GAT_PERIC_UART1_IPCLKPORT_PCLK 0x2100 39762306a36Sopenharmony_ci#define GAT_SYSREG_PERI_IPCLKPORT_PCLK 0x2104 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_cistatic const unsigned long peric_clk_regs[] __initconst = { 40062306a36Sopenharmony_ci PLL_CON0_PERIC_DMACLK_MUX, 40162306a36Sopenharmony_ci PLL_CON0_PERIC_EQOS_BUSCLK_MUX, 40262306a36Sopenharmony_ci PLL_CON0_PERIC_PCLK_MUX, 40362306a36Sopenharmony_ci PLL_CON0_PERIC_TBUCLK_MUX, 40462306a36Sopenharmony_ci PLL_CON0_SPI_CLK, 40562306a36Sopenharmony_ci PLL_CON0_SPI_PCLK, 40662306a36Sopenharmony_ci PLL_CON0_UART_CLK, 40762306a36Sopenharmony_ci PLL_CON0_UART_PCLK, 40862306a36Sopenharmony_ci MUX_PERIC_EQOS_PHYRXCLK, 40962306a36Sopenharmony_ci DIV_EQOS_BUSCLK, 41062306a36Sopenharmony_ci DIV_PERIC_MCAN_CLK, 41162306a36Sopenharmony_ci DIV_RGMII_CLK, 41262306a36Sopenharmony_ci DIV_RII_CLK, 41362306a36Sopenharmony_ci DIV_RMII_CLK, 41462306a36Sopenharmony_ci DIV_SPI_CLK, 41562306a36Sopenharmony_ci DIV_UART_CLK, 41662306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, 41762306a36Sopenharmony_ci GAT_GPIO_PERIC_IPCLKPORT_OSCCLK, 41862306a36Sopenharmony_ci GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK, 41962306a36Sopenharmony_ci GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK, 42062306a36Sopenharmony_ci GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK, 42162306a36Sopenharmony_ci GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK, 42262306a36Sopenharmony_ci GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM, 42362306a36Sopenharmony_ci GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS, 42462306a36Sopenharmony_ci GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM, 42562306a36Sopenharmony_ci GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS, 42662306a36Sopenharmony_ci GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK, 42762306a36Sopenharmony_ci GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK, 42862306a36Sopenharmony_ci GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK, 42962306a36Sopenharmony_ci GAT_BUS_D_PERIC_IPCLKPORT_DMACLK, 43062306a36Sopenharmony_ci GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK, 43162306a36Sopenharmony_ci GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK, 43262306a36Sopenharmony_ci GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK, 43362306a36Sopenharmony_ci GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK, 43462306a36Sopenharmony_ci GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK, 43562306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_ACLK_I, 43662306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I, 43762306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_HCLK_I, 43862306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, 43962306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I, 44062306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I, 44162306a36Sopenharmony_ci GAT_GPIO_PERIC_IPCLKPORT_PCLK, 44262306a36Sopenharmony_ci GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D, 44362306a36Sopenharmony_ci GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P, 44462306a36Sopenharmony_ci GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0, 44562306a36Sopenharmony_ci GAT_PERIC_DMA0_IPCLKPORT_ACLK, 44662306a36Sopenharmony_ci GAT_PERIC_DMA1_IPCLKPORT_ACLK, 44762306a36Sopenharmony_ci GAT_PERIC_I2C0_IPCLKPORT_I_PCLK, 44862306a36Sopenharmony_ci GAT_PERIC_I2C1_IPCLKPORT_I_PCLK, 44962306a36Sopenharmony_ci GAT_PERIC_I2C2_IPCLKPORT_I_PCLK, 45062306a36Sopenharmony_ci GAT_PERIC_I2C3_IPCLKPORT_I_PCLK, 45162306a36Sopenharmony_ci GAT_PERIC_I2C4_IPCLKPORT_I_PCLK, 45262306a36Sopenharmony_ci GAT_PERIC_I2C5_IPCLKPORT_I_PCLK, 45362306a36Sopenharmony_ci GAT_PERIC_I2C6_IPCLKPORT_I_PCLK, 45462306a36Sopenharmony_ci GAT_PERIC_I2C7_IPCLKPORT_I_PCLK, 45562306a36Sopenharmony_ci GAT_PERIC_MCAN0_IPCLKPORT_CCLK, 45662306a36Sopenharmony_ci GAT_PERIC_MCAN0_IPCLKPORT_PCLK, 45762306a36Sopenharmony_ci GAT_PERIC_MCAN1_IPCLKPORT_CCLK, 45862306a36Sopenharmony_ci GAT_PERIC_MCAN1_IPCLKPORT_PCLK, 45962306a36Sopenharmony_ci GAT_PERIC_MCAN2_IPCLKPORT_CCLK, 46062306a36Sopenharmony_ci GAT_PERIC_MCAN2_IPCLKPORT_PCLK, 46162306a36Sopenharmony_ci GAT_PERIC_MCAN3_IPCLKPORT_CCLK, 46262306a36Sopenharmony_ci GAT_PERIC_MCAN3_IPCLKPORT_PCLK, 46362306a36Sopenharmony_ci GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0, 46462306a36Sopenharmony_ci GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0, 46562306a36Sopenharmony_ci GAT_PERIC_SMMU_IPCLKPORT_CCLK, 46662306a36Sopenharmony_ci GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK, 46762306a36Sopenharmony_ci GAT_PERIC_SPI0_IPCLKPORT_I_PCLK, 46862306a36Sopenharmony_ci GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI, 46962306a36Sopenharmony_ci GAT_PERIC_SPI1_IPCLKPORT_I_PCLK, 47062306a36Sopenharmony_ci GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI, 47162306a36Sopenharmony_ci GAT_PERIC_SPI2_IPCLKPORT_I_PCLK, 47262306a36Sopenharmony_ci GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI, 47362306a36Sopenharmony_ci GAT_PERIC_TDM0_IPCLKPORT_HCLK_M, 47462306a36Sopenharmony_ci GAT_PERIC_TDM0_IPCLKPORT_PCLK, 47562306a36Sopenharmony_ci GAT_PERIC_TDM1_IPCLKPORT_HCLK_M, 47662306a36Sopenharmony_ci GAT_PERIC_TDM1_IPCLKPORT_PCLK, 47762306a36Sopenharmony_ci GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART, 47862306a36Sopenharmony_ci GAT_PERIC_UART0_IPCLKPORT_PCLK, 47962306a36Sopenharmony_ci GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART, 48062306a36Sopenharmony_ci GAT_PERIC_UART1_IPCLKPORT_PCLK, 48162306a36Sopenharmony_ci GAT_SYSREG_PERI_IPCLKPORT_PCLK, 48262306a36Sopenharmony_ci}; 48362306a36Sopenharmony_ci 48462306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock peric_fixed_clks[] __initconst = { 48562306a36Sopenharmony_ci FRATE(PERIC_EQOS_PHYRXCLK, "eqos_phyrxclk", NULL, 0, 125000000), 48662306a36Sopenharmony_ci}; 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_ci/* List of parent clocks for Muxes in CMU_PERIC */ 48962306a36Sopenharmony_ciPNAME(mout_peric_dmaclk_p) = { "fin_pll", "cmu_peric_shared1div4_dmaclk_gate" }; 49062306a36Sopenharmony_ciPNAME(mout_peric_eqos_busclk_p) = { "fin_pll", "dout_cmu_pll_shared0_div4" }; 49162306a36Sopenharmony_ciPNAME(mout_peric_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 49262306a36Sopenharmony_ciPNAME(mout_peric_tbuclk_p) = { "fin_pll", "dout_cmu_peric_shared0div3_tbuclk" }; 49362306a36Sopenharmony_ciPNAME(mout_peric_spi_clk_p) = { "fin_pll", "dout_cmu_peric_shared0div20" }; 49462306a36Sopenharmony_ciPNAME(mout_peric_spi_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 49562306a36Sopenharmony_ciPNAME(mout_peric_uart_clk_p) = { "fin_pll", "dout_cmu_peric_shared1div4_dmaclk" }; 49662306a36Sopenharmony_ciPNAME(mout_peric_uart_pclk_p) = { "fin_pll", "dout_cmu_peric_shared1div36" }; 49762306a36Sopenharmony_ciPNAME(mout_peric_eqos_phyrxclk_p) = { "dout_peric_rgmii_clk", "eqos_phyrxclk" }; 49862306a36Sopenharmony_ci 49962306a36Sopenharmony_cistatic const struct samsung_mux_clock peric_mux_clks[] __initconst = { 50062306a36Sopenharmony_ci MUX(0, "mout_peric_dmaclk", mout_peric_dmaclk_p, PLL_CON0_PERIC_DMACLK_MUX, 4, 1), 50162306a36Sopenharmony_ci MUX(0, "mout_peric_eqos_busclk", mout_peric_eqos_busclk_p, 50262306a36Sopenharmony_ci PLL_CON0_PERIC_EQOS_BUSCLK_MUX, 4, 1), 50362306a36Sopenharmony_ci MUX(0, "mout_peric_pclk", mout_peric_pclk_p, PLL_CON0_PERIC_PCLK_MUX, 4, 1), 50462306a36Sopenharmony_ci MUX(0, "mout_peric_tbuclk", mout_peric_tbuclk_p, PLL_CON0_PERIC_TBUCLK_MUX, 4, 1), 50562306a36Sopenharmony_ci MUX(0, "mout_peric_spi_clk", mout_peric_spi_clk_p, PLL_CON0_SPI_CLK, 4, 1), 50662306a36Sopenharmony_ci MUX(0, "mout_peric_spi_pclk", mout_peric_spi_pclk_p, PLL_CON0_SPI_PCLK, 4, 1), 50762306a36Sopenharmony_ci MUX(0, "mout_peric_uart_clk", mout_peric_uart_clk_p, PLL_CON0_UART_CLK, 4, 1), 50862306a36Sopenharmony_ci MUX(0, "mout_peric_uart_pclk", mout_peric_uart_pclk_p, PLL_CON0_UART_PCLK, 4, 1), 50962306a36Sopenharmony_ci MUX(PERIC_EQOS_PHYRXCLK_MUX, "mout_peric_eqos_phyrxclk", mout_peric_eqos_phyrxclk_p, 51062306a36Sopenharmony_ci MUX_PERIC_EQOS_PHYRXCLK, 0, 1), 51162306a36Sopenharmony_ci}; 51262306a36Sopenharmony_ci 51362306a36Sopenharmony_cistatic const struct samsung_div_clock peric_div_clks[] __initconst = { 51462306a36Sopenharmony_ci DIV(0, "dout_peric_eqos_busclk", "mout_peric_eqos_busclk", DIV_EQOS_BUSCLK, 0, 4), 51562306a36Sopenharmony_ci DIV(0, "dout_peric_mcan_clk", "mout_peric_dmaclk", DIV_PERIC_MCAN_CLK, 0, 4), 51662306a36Sopenharmony_ci DIV(PERIC_DOUT_RGMII_CLK, "dout_peric_rgmii_clk", "mout_peric_eqos_busclk", 51762306a36Sopenharmony_ci DIV_RGMII_CLK, 0, 4), 51862306a36Sopenharmony_ci DIV(0, "dout_peric_rii_clk", "dout_peric_rmii_clk", DIV_RII_CLK, 0, 4), 51962306a36Sopenharmony_ci DIV(0, "dout_peric_rmii_clk", "dout_peric_rgmii_clk", DIV_RMII_CLK, 0, 4), 52062306a36Sopenharmony_ci DIV(0, "dout_peric_spi_clk", "mout_peric_spi_clk", DIV_SPI_CLK, 0, 6), 52162306a36Sopenharmony_ci DIV(0, "dout_peric_uart_clk", "mout_peric_uart_clk", DIV_UART_CLK, 0, 6), 52262306a36Sopenharmony_ci}; 52362306a36Sopenharmony_ci 52462306a36Sopenharmony_cistatic const struct samsung_gate_clock peric_gate_clks[] __initconst = { 52562306a36Sopenharmony_ci GATE(PERIC_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, "peric_eqos_top_ipclkport_clk_ptp_ref_i", 52662306a36Sopenharmony_ci "fin_pll", GAT_EQOS_TOP_IPCLKPORT_CLK_PTP_REF_I, 21, CLK_IGNORE_UNUSED, 0), 52762306a36Sopenharmony_ci GATE(0, "peric_gpio_peric_ipclkport_oscclk", "fin_pll", GAT_GPIO_PERIC_IPCLKPORT_OSCCLK, 52862306a36Sopenharmony_ci 21, CLK_IGNORE_UNUSED, 0), 52962306a36Sopenharmony_ci GATE(PERIC_PCLK_ADCIF, "peric_adc0_ipclkport_i_oscclk", "fin_pll", 53062306a36Sopenharmony_ci GAT_PERIC_ADC0_IPCLKPORT_I_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 53162306a36Sopenharmony_ci GATE(0, "peric_cmu_peric_ipclkport_pclk", "mout_peric_pclk", 53262306a36Sopenharmony_ci GAT_PERIC_CMU_PERIC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 53362306a36Sopenharmony_ci GATE(0, "peric_pwm0_ipclkport_i_oscclk", "fin_pll", GAT_PERIC_PWM0_IPCLKPORT_I_OSCCLK, 21, 53462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 53562306a36Sopenharmony_ci GATE(0, "peric_pwm1_ipclkport_i_oscclk", "fin_pll", GAT_PERIC_PWM1_IPCLKPORT_I_OSCCLK, 21, 53662306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 53762306a36Sopenharmony_ci GATE(0, "peric_async_apb_dma0_ipclkport_pclkm", "mout_peric_dmaclk", 53862306a36Sopenharmony_ci GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 53962306a36Sopenharmony_ci GATE(0, "peric_async_apb_dma0_ipclkport_pclks", "mout_peric_pclk", 54062306a36Sopenharmony_ci GAT_ASYNC_APB_DMA0_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 54162306a36Sopenharmony_ci GATE(0, "peric_async_apb_dma1_ipclkport_pclkm", "mout_peric_dmaclk", 54262306a36Sopenharmony_ci GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 54362306a36Sopenharmony_ci GATE(0, "peric_async_apb_dma1_ipclkport_pclks", "mout_peric_pclk", 54462306a36Sopenharmony_ci GAT_ASYNC_APB_DMA1_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 54562306a36Sopenharmony_ci GATE(0, "peric_axi2apb_peric0_ipclkport_aclk", "mout_peric_pclk", 54662306a36Sopenharmony_ci GAT_AXI2APB_PERIC0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 54762306a36Sopenharmony_ci GATE(0, "peric_axi2apb_peric1_ipclkport_aclk", "mout_peric_pclk", 54862306a36Sopenharmony_ci GAT_AXI2APB_PERIC1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 54962306a36Sopenharmony_ci GATE(0, "peric_axi2apb_peric2_ipclkport_aclk", "mout_peric_pclk", 55062306a36Sopenharmony_ci GAT_AXI2APB_PERIC2_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 55162306a36Sopenharmony_ci GATE(0, "peric_bus_d_peric_ipclkport_dmaclk", "mout_peric_dmaclk", 55262306a36Sopenharmony_ci GAT_BUS_D_PERIC_IPCLKPORT_DMACLK, 21, CLK_IGNORE_UNUSED, 0), 55362306a36Sopenharmony_ci GATE(PERIC_BUS_D_PERIC_IPCLKPORT_EQOSCLK, "peric_bus_d_peric_ipclkport_eqosclk", 55462306a36Sopenharmony_ci "dout_peric_eqos_busclk", GAT_BUS_D_PERIC_IPCLKPORT_EQOSCLK, 21, CLK_IGNORE_UNUSED, 0), 55562306a36Sopenharmony_ci GATE(0, "peric_bus_d_peric_ipclkport_mainclk", "mout_peric_tbuclk", 55662306a36Sopenharmony_ci GAT_BUS_D_PERIC_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 55762306a36Sopenharmony_ci GATE(PERIC_BUS_P_PERIC_IPCLKPORT_EQOSCLK, "peric_bus_p_peric_ipclkport_eqosclk", 55862306a36Sopenharmony_ci "dout_peric_eqos_busclk", GAT_BUS_P_PERIC_IPCLKPORT_EQOSCLK, 21, CLK_IGNORE_UNUSED, 0), 55962306a36Sopenharmony_ci GATE(0, "peric_bus_p_peric_ipclkport_mainclk", "mout_peric_pclk", 56062306a36Sopenharmony_ci GAT_BUS_P_PERIC_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 56162306a36Sopenharmony_ci GATE(0, "peric_bus_p_peric_ipclkport_smmuclk", "mout_peric_tbuclk", 56262306a36Sopenharmony_ci GAT_BUS_P_PERIC_IPCLKPORT_SMMUCLK, 21, CLK_IGNORE_UNUSED, 0), 56362306a36Sopenharmony_ci GATE(PERIC_EQOS_TOP_IPCLKPORT_ACLK_I, "peric_eqos_top_ipclkport_aclk_i", 56462306a36Sopenharmony_ci "dout_peric_eqos_busclk", GAT_EQOS_TOP_IPCLKPORT_ACLK_I, 21, CLK_IGNORE_UNUSED, 0), 56562306a36Sopenharmony_ci GATE(PERIC_EQOS_TOP_IPCLKPORT_CLK_RX_I, "peric_eqos_top_ipclkport_clk_rx_i", 56662306a36Sopenharmony_ci "mout_peric_eqos_phyrxclk", GAT_EQOS_TOP_IPCLKPORT_CLK_RX_I, 21, CLK_IGNORE_UNUSED, 0), 56762306a36Sopenharmony_ci GATE(PERIC_EQOS_TOP_IPCLKPORT_HCLK_I, "peric_eqos_top_ipclkport_hclk_i", 56862306a36Sopenharmony_ci "dout_peric_eqos_busclk", GAT_EQOS_TOP_IPCLKPORT_HCLK_I, 21, CLK_IGNORE_UNUSED, 0), 56962306a36Sopenharmony_ci GATE(PERIC_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, "peric_eqos_top_ipclkport_rgmii_clk_i", 57062306a36Sopenharmony_ci "dout_peric_rgmii_clk", GAT_EQOS_TOP_IPCLKPORT_RGMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 57162306a36Sopenharmony_ci GATE(0, "peric_eqos_top_ipclkport_rii_clk_i", "dout_peric_rii_clk", 57262306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_RII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 57362306a36Sopenharmony_ci GATE(0, "peric_eqos_top_ipclkport_rmii_clk_i", "dout_peric_rmii_clk", 57462306a36Sopenharmony_ci GAT_EQOS_TOP_IPCLKPORT_RMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 57562306a36Sopenharmony_ci GATE(0, "peric_gpio_peric_ipclkport_pclk", "mout_peric_pclk", 57662306a36Sopenharmony_ci GAT_GPIO_PERIC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 57762306a36Sopenharmony_ci GATE(0, "peric_ns_brdg_peric_ipclkport_clk__psoc_peric__clk_peric_d", "mout_peric_tbuclk", 57862306a36Sopenharmony_ci GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_D, 21, CLK_IGNORE_UNUSED, 0), 57962306a36Sopenharmony_ci GATE(0, "peric_ns_brdg_peric_ipclkport_clk__psoc_peric__clk_peric_p", "mout_peric_pclk", 58062306a36Sopenharmony_ci GAT_NS_BRDG_PERIC_IPCLKPORT_CLK__PSOC_PERIC__CLK_PERIC_P, 21, CLK_IGNORE_UNUSED, 0), 58162306a36Sopenharmony_ci GATE(0, "peric_adc0_ipclkport_pclk_s0", "mout_peric_pclk", 58262306a36Sopenharmony_ci GAT_PERIC_ADC0_IPCLKPORT_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 58362306a36Sopenharmony_ci GATE(PERIC_DMA0_IPCLKPORT_ACLK, "peric_dma0_ipclkport_aclk", "mout_peric_dmaclk", 58462306a36Sopenharmony_ci GAT_PERIC_DMA0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 58562306a36Sopenharmony_ci GATE(PERIC_DMA1_IPCLKPORT_ACLK, "peric_dma1_ipclkport_aclk", "mout_peric_dmaclk", 58662306a36Sopenharmony_ci GAT_PERIC_DMA1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 58762306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C0, "peric_i2c0_ipclkport_i_pclk", "mout_peric_pclk", 58862306a36Sopenharmony_ci GAT_PERIC_I2C0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 58962306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C1, "peric_i2c1_ipclkport_i_pclk", "mout_peric_pclk", 59062306a36Sopenharmony_ci GAT_PERIC_I2C1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 59162306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C2, "peric_i2c2_ipclkport_i_pclk", "mout_peric_pclk", 59262306a36Sopenharmony_ci GAT_PERIC_I2C2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 59362306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C3, "peric_i2c3_ipclkport_i_pclk", "mout_peric_pclk", 59462306a36Sopenharmony_ci GAT_PERIC_I2C3_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 59562306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C4, "peric_i2c4_ipclkport_i_pclk", "mout_peric_pclk", 59662306a36Sopenharmony_ci GAT_PERIC_I2C4_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 59762306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C5, "peric_i2c5_ipclkport_i_pclk", "mout_peric_pclk", 59862306a36Sopenharmony_ci GAT_PERIC_I2C5_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 59962306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C6, "peric_i2c6_ipclkport_i_pclk", "mout_peric_pclk", 60062306a36Sopenharmony_ci GAT_PERIC_I2C6_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 60162306a36Sopenharmony_ci GATE(PERIC_PCLK_HSI2C7, "peric_i2c7_ipclkport_i_pclk", "mout_peric_pclk", 60262306a36Sopenharmony_ci GAT_PERIC_I2C7_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 60362306a36Sopenharmony_ci GATE(PERIC_MCAN0_IPCLKPORT_CCLK, "peric_mcan0_ipclkport_cclk", "dout_peric_mcan_clk", 60462306a36Sopenharmony_ci GAT_PERIC_MCAN0_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 60562306a36Sopenharmony_ci GATE(PERIC_MCAN0_IPCLKPORT_PCLK, "peric_mcan0_ipclkport_pclk", "mout_peric_pclk", 60662306a36Sopenharmony_ci GAT_PERIC_MCAN0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 60762306a36Sopenharmony_ci GATE(PERIC_MCAN1_IPCLKPORT_CCLK, "peric_mcan1_ipclkport_cclk", "dout_peric_mcan_clk", 60862306a36Sopenharmony_ci GAT_PERIC_MCAN1_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 60962306a36Sopenharmony_ci GATE(PERIC_MCAN1_IPCLKPORT_PCLK, "peric_mcan1_ipclkport_pclk", "mout_peric_pclk", 61062306a36Sopenharmony_ci GAT_PERIC_MCAN1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 61162306a36Sopenharmony_ci GATE(PERIC_MCAN2_IPCLKPORT_CCLK, "peric_mcan2_ipclkport_cclk", "dout_peric_mcan_clk", 61262306a36Sopenharmony_ci GAT_PERIC_MCAN2_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 61362306a36Sopenharmony_ci GATE(PERIC_MCAN2_IPCLKPORT_PCLK, "peric_mcan2_ipclkport_pclk", "mout_peric_pclk", 61462306a36Sopenharmony_ci GAT_PERIC_MCAN2_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 61562306a36Sopenharmony_ci GATE(PERIC_MCAN3_IPCLKPORT_CCLK, "peric_mcan3_ipclkport_cclk", "dout_peric_mcan_clk", 61662306a36Sopenharmony_ci GAT_PERIC_MCAN3_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 61762306a36Sopenharmony_ci GATE(PERIC_MCAN3_IPCLKPORT_PCLK, "peric_mcan3_ipclkport_pclk", "mout_peric_pclk", 61862306a36Sopenharmony_ci GAT_PERIC_MCAN3_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 61962306a36Sopenharmony_ci GATE(PERIC_PWM0_IPCLKPORT_I_PCLK_S0, "peric_pwm0_ipclkport_i_pclk_s0", "mout_peric_pclk", 62062306a36Sopenharmony_ci GAT_PERIC_PWM0_IPCLKPORT_I_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 62162306a36Sopenharmony_ci GATE(PERIC_PWM1_IPCLKPORT_I_PCLK_S0, "peric_pwm1_ipclkport_i_pclk_s0", "mout_peric_pclk", 62262306a36Sopenharmony_ci GAT_PERIC_PWM1_IPCLKPORT_I_PCLK_S0, 21, CLK_IGNORE_UNUSED, 0), 62362306a36Sopenharmony_ci GATE(0, "peric_smmu_ipclkport_cclk", "mout_peric_tbuclk", 62462306a36Sopenharmony_ci GAT_PERIC_SMMU_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 62562306a36Sopenharmony_ci GATE(0, "peric_smmu_ipclkport_peric_bclk", "mout_peric_tbuclk", 62662306a36Sopenharmony_ci GAT_PERIC_SMMU_IPCLKPORT_PERIC_BCLK, 21, CLK_IGNORE_UNUSED, 0), 62762306a36Sopenharmony_ci GATE(PERIC_PCLK_SPI0, "peric_spi0_ipclkport_i_pclk", "mout_peric_spi_pclk", 62862306a36Sopenharmony_ci GAT_PERIC_SPI0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 62962306a36Sopenharmony_ci GATE(PERIC_SCLK_SPI0, "peric_spi0_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 63062306a36Sopenharmony_ci GAT_PERIC_SPI0_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 63162306a36Sopenharmony_ci GATE(PERIC_PCLK_SPI1, "peric_spi1_ipclkport_i_pclk", "mout_peric_spi_pclk", 63262306a36Sopenharmony_ci GAT_PERIC_SPI1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 63362306a36Sopenharmony_ci GATE(PERIC_SCLK_SPI1, "peric_spi1_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 63462306a36Sopenharmony_ci GAT_PERIC_SPI1_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 63562306a36Sopenharmony_ci GATE(PERIC_PCLK_SPI2, "peric_spi2_ipclkport_i_pclk", "mout_peric_spi_pclk", 63662306a36Sopenharmony_ci GAT_PERIC_SPI2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 63762306a36Sopenharmony_ci GATE(PERIC_SCLK_SPI2, "peric_spi2_ipclkport_i_sclk_spi", "dout_peric_spi_clk", 63862306a36Sopenharmony_ci GAT_PERIC_SPI2_IPCLKPORT_I_SCLK_SPI, 21, CLK_IGNORE_UNUSED, 0), 63962306a36Sopenharmony_ci GATE(PERIC_HCLK_TDM0, "peric_tdm0_ipclkport_hclk_m", "mout_peric_pclk", 64062306a36Sopenharmony_ci GAT_PERIC_TDM0_IPCLKPORT_HCLK_M, 21, CLK_IGNORE_UNUSED, 0), 64162306a36Sopenharmony_ci GATE(PERIC_PCLK_TDM0, "peric_tdm0_ipclkport_pclk", "mout_peric_pclk", 64262306a36Sopenharmony_ci GAT_PERIC_TDM0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 64362306a36Sopenharmony_ci GATE(PERIC_HCLK_TDM1, "peric_tdm1_ipclkport_hclk_m", "mout_peric_pclk", 64462306a36Sopenharmony_ci GAT_PERIC_TDM1_IPCLKPORT_HCLK_M, 21, CLK_IGNORE_UNUSED, 0), 64562306a36Sopenharmony_ci GATE(PERIC_PCLK_TDM1, "peric_tdm1_ipclkport_pclk", "mout_peric_pclk", 64662306a36Sopenharmony_ci GAT_PERIC_TDM1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 64762306a36Sopenharmony_ci GATE(PERIC_SCLK_UART0, "peric_uart0_ipclkport_i_sclk_uart", "dout_peric_uart_clk", 64862306a36Sopenharmony_ci GAT_PERIC_UART0_IPCLKPORT_I_SCLK_UART, 21, CLK_IGNORE_UNUSED, 0), 64962306a36Sopenharmony_ci GATE(PERIC_PCLK_UART0, "peric_uart0_ipclkport_pclk", "mout_peric_uart_pclk", 65062306a36Sopenharmony_ci GAT_PERIC_UART0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 65162306a36Sopenharmony_ci GATE(PERIC_SCLK_UART1, "peric_uart1_ipclkport_i_sclk_uart", "dout_peric_uart_clk", 65262306a36Sopenharmony_ci GAT_PERIC_UART1_IPCLKPORT_I_SCLK_UART, 21, CLK_IGNORE_UNUSED, 0), 65362306a36Sopenharmony_ci GATE(PERIC_PCLK_UART1, "peric_uart1_ipclkport_pclk", "mout_peric_uart_pclk", 65462306a36Sopenharmony_ci GAT_PERIC_UART1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 65562306a36Sopenharmony_ci GATE(0, "peric_sysreg_peri_ipclkport_pclk", "mout_peric_pclk", 65662306a36Sopenharmony_ci GAT_SYSREG_PERI_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 65762306a36Sopenharmony_ci}; 65862306a36Sopenharmony_ci 65962306a36Sopenharmony_cistatic const struct samsung_cmu_info peric_cmu_info __initconst = { 66062306a36Sopenharmony_ci .mux_clks = peric_mux_clks, 66162306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(peric_mux_clks), 66262306a36Sopenharmony_ci .div_clks = peric_div_clks, 66362306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(peric_div_clks), 66462306a36Sopenharmony_ci .gate_clks = peric_gate_clks, 66562306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(peric_gate_clks), 66662306a36Sopenharmony_ci .fixed_clks = peric_fixed_clks, 66762306a36Sopenharmony_ci .nr_fixed_clks = ARRAY_SIZE(peric_fixed_clks), 66862306a36Sopenharmony_ci .nr_clk_ids = PERIC_NR_CLK, 66962306a36Sopenharmony_ci .clk_regs = peric_clk_regs, 67062306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(peric_clk_regs), 67162306a36Sopenharmony_ci .clk_name = "dout_cmu_pll_shared0_div4", 67262306a36Sopenharmony_ci}; 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci/* Register Offset definitions for CMU_FSYS0 (0x15010000) */ 67562306a36Sopenharmony_ci#define PLL_CON0_CLKCMU_FSYS0_UNIPRO 0x100 67662306a36Sopenharmony_ci#define PLL_CON0_CLK_FSYS0_SLAVEBUSCLK 0x140 67762306a36Sopenharmony_ci#define PLL_CON0_EQOS_RGMII_125_MUX1 0x160 67862306a36Sopenharmony_ci#define DIV_CLK_UNIPRO 0x1800 67962306a36Sopenharmony_ci#define DIV_EQS_RGMII_CLK_125 0x1804 68062306a36Sopenharmony_ci#define DIV_PERIBUS_GRP 0x1808 68162306a36Sopenharmony_ci#define DIV_EQOS_RII_CLK2O5 0x180c 68262306a36Sopenharmony_ci#define DIV_EQOS_RMIICLK_25 0x1810 68362306a36Sopenharmony_ci#define DIV_PCIE_PHY_OSCCLK 0x1814 68462306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I 0x2004 68562306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I 0x2008 68662306a36Sopenharmony_ci#define GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK 0x200c 68762306a36Sopenharmony_ci#define GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK 0x2010 68862306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO 0x2014 68962306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK 0x2018 69062306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC 0x201c 69162306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24 0x2020 69262306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26 0x2024 69362306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24 0x2028 69462306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26 0x202c 69562306a36Sopenharmony_ci#define GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK 0x2038 69662306a36Sopenharmony_ci#define GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK 0x203c 69762306a36Sopenharmony_ci#define GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK 0x2040 69862306a36Sopenharmony_ci#define GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK 0x2044 69962306a36Sopenharmony_ci#define GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK 0x2048 70062306a36Sopenharmony_ci#define GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK 0x204c 70162306a36Sopenharmony_ci#define GAT_FSYS0_CPE425_IPCLKPORT_ACLK 0x2050 70262306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I 0x2054 70362306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I 0x2058 70462306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I 0x205c 70562306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I 0x2060 70662306a36Sopenharmony_ci#define GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I 0x2064 70762306a36Sopenharmony_ci#define GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK 0x2068 70862306a36Sopenharmony_ci#define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D 0x206c 70962306a36Sopenharmony_ci#define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1 0x2070 71062306a36Sopenharmony_ci#define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P 0x2074 71162306a36Sopenharmony_ci#define GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S 0x2078 71262306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK 0x207c 71362306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL 0x2080 71462306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0 0x2084 71562306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC 0x2088 71662306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK 0x208c 71762306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC 0x2090 71862306a36Sopenharmony_ci#define GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC 0x2094 71962306a36Sopenharmony_ci#define GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK 0x2098 72062306a36Sopenharmony_ci#define GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK 0x209c 72162306a36Sopenharmony_ci#define GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK 0x20a0 72262306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS 0x20a4 72362306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK 0x20a8 72462306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO 0x20ac 72562306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK 0x20b0 72662306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS 0x20b4 72762306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK 0x20b8 72862306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO 0x20bc 72962306a36Sopenharmony_ci#define GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK 0x20c0 73062306a36Sopenharmony_ci#define GAT_FSYS0_RII_CLK_DIVGATE 0x20d4 73162306a36Sopenharmony_ci 73262306a36Sopenharmony_cistatic const unsigned long fsys0_clk_regs[] __initconst = { 73362306a36Sopenharmony_ci PLL_CON0_CLKCMU_FSYS0_UNIPRO, 73462306a36Sopenharmony_ci PLL_CON0_CLK_FSYS0_SLAVEBUSCLK, 73562306a36Sopenharmony_ci PLL_CON0_EQOS_RGMII_125_MUX1, 73662306a36Sopenharmony_ci DIV_CLK_UNIPRO, 73762306a36Sopenharmony_ci DIV_EQS_RGMII_CLK_125, 73862306a36Sopenharmony_ci DIV_PERIBUS_GRP, 73962306a36Sopenharmony_ci DIV_EQOS_RII_CLK2O5, 74062306a36Sopenharmony_ci DIV_EQOS_RMIICLK_25, 74162306a36Sopenharmony_ci DIV_PCIE_PHY_OSCCLK, 74262306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, 74362306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, 74462306a36Sopenharmony_ci GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK, 74562306a36Sopenharmony_ci GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK, 74662306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO, 74762306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK, 74862306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC, 74962306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 75062306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 75162306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 75262306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 75362306a36Sopenharmony_ci GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK, 75462306a36Sopenharmony_ci GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK, 75562306a36Sopenharmony_ci GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK, 75662306a36Sopenharmony_ci GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK, 75762306a36Sopenharmony_ci GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK, 75862306a36Sopenharmony_ci GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK, 75962306a36Sopenharmony_ci GAT_FSYS0_CPE425_IPCLKPORT_ACLK, 76062306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, 76162306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, 76262306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, 76362306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I, 76462306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I, 76562306a36Sopenharmony_ci GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK, 76662306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D, 76762306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1, 76862306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P, 76962306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S, 77062306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK, 77162306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL, 77262306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0, 77362306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC, 77462306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK, 77562306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC, 77662306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC, 77762306a36Sopenharmony_ci GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK, 77862306a36Sopenharmony_ci GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK, 77962306a36Sopenharmony_ci GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK, 78062306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS, 78162306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK, 78262306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO, 78362306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK, 78462306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS, 78562306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK, 78662306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO, 78762306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK, 78862306a36Sopenharmony_ci GAT_FSYS0_RII_CLK_DIVGATE, 78962306a36Sopenharmony_ci}; 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock fsys0_fixed_clks[] __initconst = { 79262306a36Sopenharmony_ci FRATE(0, "pad_eqos0_phyrxclk", NULL, 0, 125000000), 79362306a36Sopenharmony_ci FRATE(0, "i_mphy_refclk_ixtal26", NULL, 0, 26000000), 79462306a36Sopenharmony_ci FRATE(0, "xtal_clk_pcie_phy", NULL, 0, 100000000), 79562306a36Sopenharmony_ci}; 79662306a36Sopenharmony_ci 79762306a36Sopenharmony_ci/* List of parent clocks for Muxes in CMU_FSYS0 */ 79862306a36Sopenharmony_ciPNAME(mout_fsys0_clkcmu_fsys0_unipro_p) = { "fin_pll", "dout_cmu_pll_shared0_div6" }; 79962306a36Sopenharmony_ciPNAME(mout_fsys0_clk_fsys0_slavebusclk_p) = { "fin_pll", "dout_cmu_fsys0_shared1div4" }; 80062306a36Sopenharmony_ciPNAME(mout_fsys0_eqos_rgmii_125_mux1_p) = { "fin_pll", "dout_cmu_fsys0_shared0div4" }; 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_cistatic const struct samsung_mux_clock fsys0_mux_clks[] __initconst = { 80362306a36Sopenharmony_ci MUX(0, "mout_fsys0_clkcmu_fsys0_unipro", mout_fsys0_clkcmu_fsys0_unipro_p, 80462306a36Sopenharmony_ci PLL_CON0_CLKCMU_FSYS0_UNIPRO, 4, 1), 80562306a36Sopenharmony_ci MUX(0, "mout_fsys0_clk_fsys0_slavebusclk", mout_fsys0_clk_fsys0_slavebusclk_p, 80662306a36Sopenharmony_ci PLL_CON0_CLK_FSYS0_SLAVEBUSCLK, 4, 1), 80762306a36Sopenharmony_ci MUX(0, "mout_fsys0_eqos_rgmii_125_mux1", mout_fsys0_eqos_rgmii_125_mux1_p, 80862306a36Sopenharmony_ci PLL_CON0_EQOS_RGMII_125_MUX1, 4, 1), 80962306a36Sopenharmony_ci}; 81062306a36Sopenharmony_ci 81162306a36Sopenharmony_cistatic const struct samsung_div_clock fsys0_div_clks[] __initconst = { 81262306a36Sopenharmony_ci DIV(0, "dout_fsys0_clk_unipro", "mout_fsys0_clkcmu_fsys0_unipro", DIV_CLK_UNIPRO, 0, 4), 81362306a36Sopenharmony_ci DIV(0, "dout_fsys0_eqs_rgmii_clk_125", "mout_fsys0_eqos_rgmii_125_mux1", 81462306a36Sopenharmony_ci DIV_EQS_RGMII_CLK_125, 0, 4), 81562306a36Sopenharmony_ci DIV(FSYS0_DOUT_FSYS0_PERIBUS_GRP, "dout_fsys0_peribus_grp", 81662306a36Sopenharmony_ci "mout_fsys0_clk_fsys0_slavebusclk", DIV_PERIBUS_GRP, 0, 4), 81762306a36Sopenharmony_ci DIV(0, "dout_fsys0_eqos_rii_clk2o5", "fsys0_rii_clk_divgate", DIV_EQOS_RII_CLK2O5, 0, 4), 81862306a36Sopenharmony_ci DIV(0, "dout_fsys0_eqos_rmiiclk_25", "mout_fsys0_eqos_rgmii_125_mux1", 81962306a36Sopenharmony_ci DIV_EQOS_RMIICLK_25, 0, 5), 82062306a36Sopenharmony_ci DIV(0, "dout_fsys0_pcie_phy_oscclk", "mout_fsys0_eqos_rgmii_125_mux1", 82162306a36Sopenharmony_ci DIV_PCIE_PHY_OSCCLK, 0, 4), 82262306a36Sopenharmony_ci}; 82362306a36Sopenharmony_ci 82462306a36Sopenharmony_cistatic const struct samsung_gate_clock fsys0_gate_clks[] __initconst = { 82562306a36Sopenharmony_ci GATE(FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, "fsys0_eqos_top0_ipclkport_clk_rx_i", 82662306a36Sopenharmony_ci "pad_eqos0_phyrxclk", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_RX_I, 21, 82762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 82862306a36Sopenharmony_ci GATE(PCIE_SUBCTRL_INST0_AUX_CLK_SOC, 82962306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_aux_clk_soc", "fin_pll", 83062306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_AUX_CLK_SOC, 21, 83162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 83262306a36Sopenharmony_ci GATE(0, "fsys0_fsys0_cmu_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 83362306a36Sopenharmony_ci GAT_FSYS0_FSYS0_CMU_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 83462306a36Sopenharmony_ci GATE(0, 83562306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_pll_refclk_from_xo", 83662306a36Sopenharmony_ci "xtal_clk_pcie_phy", 83762306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_XO, 21, 83862306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 83962306a36Sopenharmony_ci GATE(UFS0_MPHY_REFCLK_IXTAL24, "fsys0_ufs_top0_ipclkport_i_mphy_refclk_ixtal24", 84062306a36Sopenharmony_ci "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 21, 84162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 84262306a36Sopenharmony_ci GATE(UFS0_MPHY_REFCLK_IXTAL26, "fsys0_ufs_top0_ipclkport_i_mphy_refclk_ixtal26", 84362306a36Sopenharmony_ci "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 21, 84462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 84562306a36Sopenharmony_ci GATE(UFS1_MPHY_REFCLK_IXTAL24, "fsys0_ufs_top1_ipclkport_i_mphy_refclk_ixtal24", 84662306a36Sopenharmony_ci "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL24, 21, 84762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 84862306a36Sopenharmony_ci GATE(UFS1_MPHY_REFCLK_IXTAL26, "fsys0_ufs_top1_ipclkport_i_mphy_refclk_ixtal26", 84962306a36Sopenharmony_ci "i_mphy_refclk_ixtal26", GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_MPHY_REFCLK_IXTAL26, 21, 85062306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 85162306a36Sopenharmony_ci GATE(0, "fsys0_ahbbr_fsys0_ipclkport_hclk", "dout_fsys0_peribus_grp", 85262306a36Sopenharmony_ci GAT_FSYS0_AHBBR_FSYS0_IPCLKPORT_HCLK, 21, CLK_IGNORE_UNUSED, 0), 85362306a36Sopenharmony_ci GATE(0, "fsys0_axi2apb_fsys0_ipclkport_aclk", "dout_fsys0_peribus_grp", 85462306a36Sopenharmony_ci GAT_FSYS0_AXI2APB_FSYS0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 85562306a36Sopenharmony_ci GATE(0, "fsys0_bus_d_fsys0_ipclkport_mainclk", "mout_fsys0_clk_fsys0_slavebusclk", 85662306a36Sopenharmony_ci GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 85762306a36Sopenharmony_ci GATE(0, "fsys0_bus_d_fsys0_ipclkport_periclk", "dout_fsys0_peribus_grp", 85862306a36Sopenharmony_ci GAT_FSYS0_BUS_D_FSYS0_IPCLKPORT_PERICLK, 21, CLK_IGNORE_UNUSED, 0), 85962306a36Sopenharmony_ci GATE(0, "fsys0_bus_p_fsys0_ipclkport_mainclk", "dout_fsys0_peribus_grp", 86062306a36Sopenharmony_ci GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 86162306a36Sopenharmony_ci GATE(0, "fsys0_bus_p_fsys0_ipclkport_tcuclk", "mout_fsys0_eqos_rgmii_125_mux1", 86262306a36Sopenharmony_ci GAT_FSYS0_BUS_P_FSYS0_IPCLKPORT_TCUCLK, 21, CLK_IGNORE_UNUSED, 0), 86362306a36Sopenharmony_ci GATE(0, "fsys0_cpe425_ipclkport_aclk", "mout_fsys0_clk_fsys0_slavebusclk", 86462306a36Sopenharmony_ci GAT_FSYS0_CPE425_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 86562306a36Sopenharmony_ci GATE(FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, "fsys0_eqos_top0_ipclkport_aclk_i", 86662306a36Sopenharmony_ci "dout_fsys0_peribus_grp", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_ACLK_I, 21, 86762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 86862306a36Sopenharmony_ci GATE(FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, "fsys0_eqos_top0_ipclkport_hclk_i", 86962306a36Sopenharmony_ci "dout_fsys0_peribus_grp", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_HCLK_I, 21, 87062306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 87162306a36Sopenharmony_ci GATE(FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, "fsys0_eqos_top0_ipclkport_rgmii_clk_i", 87262306a36Sopenharmony_ci "dout_fsys0_eqs_rgmii_clk_125", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RGMII_CLK_I, 21, 87362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 87462306a36Sopenharmony_ci GATE(0, "fsys0_eqos_top0_ipclkport_rii_clk_i", "dout_fsys0_eqos_rii_clk2o5", 87562306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 87662306a36Sopenharmony_ci GATE(0, "fsys0_eqos_top0_ipclkport_rmii_clk_i", "dout_fsys0_eqos_rmiiclk_25", 87762306a36Sopenharmony_ci GAT_FSYS0_EQOS_TOP0_IPCLKPORT_RMII_CLK_I, 21, CLK_IGNORE_UNUSED, 0), 87862306a36Sopenharmony_ci GATE(0, "fsys0_gpio_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 87962306a36Sopenharmony_ci GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 88062306a36Sopenharmony_ci GATE(0, "fsys0_gpio_fsys0_ipclkport_oscclk", "fin_pll", 88162306a36Sopenharmony_ci GAT_FSYS0_GPIO_FSYS0_IPCLKPORT_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 88262306a36Sopenharmony_ci GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_d", 88362306a36Sopenharmony_ci "mout_fsys0_clk_fsys0_slavebusclk", 88462306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D, 21, 88562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 88662306a36Sopenharmony_ci GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_d1", 88762306a36Sopenharmony_ci "mout_fsys0_eqos_rgmii_125_mux1", 88862306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_D1, 21, 88962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 89062306a36Sopenharmony_ci GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_p", 89162306a36Sopenharmony_ci "dout_fsys0_peribus_grp", 89262306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_P, 21, 89362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 89462306a36Sopenharmony_ci GATE(0, "fsys0_ns_brdg_fsys0_ipclkport_clk__psoc_fsys0__clk_fsys0_s", 89562306a36Sopenharmony_ci "mout_fsys0_clk_fsys0_slavebusclk", 89662306a36Sopenharmony_ci GAT_FSYS0_NS_BRDG_FSYS0_IPCLKPORT_CLK__PSOC_FSYS0__CLK_FSYS0_S, 21, 89762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 89862306a36Sopenharmony_ci GATE(0, "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_i_apb_pclk", 89962306a36Sopenharmony_ci "dout_fsys0_peribus_grp", 90062306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_I_APB_PCLK, 21, 90162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 90262306a36Sopenharmony_ci GATE(0, 90362306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_pcieg3_phy_x4_inst_0_pll_refclk_from_syspll", 90462306a36Sopenharmony_ci "dout_fsys0_pcie_phy_oscclk", 90562306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PCIEG3_PHY_X4_INST_0_PLL_REFCLK_FROM_SYSPLL, 90662306a36Sopenharmony_ci 21, CLK_IGNORE_UNUSED, 0), 90762306a36Sopenharmony_ci GATE(0, "fsys0_pcie_top_ipclkport_pipe_pal_inst_0_i_apb_pclk_0", "dout_fsys0_peribus_grp", 90862306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_APB_PCLK_0, 21, CLK_IGNORE_UNUSED, 0), 90962306a36Sopenharmony_ci GATE(0, "fsys0_pcie_top_ipclkport_pipe_pal_inst_0_i_immortal_clk", "fin_pll", 91062306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_PIPE_PAL_INST_0_I_IMMORTAL_CLK, 21, CLK_IGNORE_UNUSED, 0), 91162306a36Sopenharmony_ci GATE(PCIE_SUBCTRL_INST0_DBI_ACLK_SOC, 91262306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_dbi_aclk_soc", 91362306a36Sopenharmony_ci "dout_fsys0_peribus_grp", 91462306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_DBI_ACLK_SOC, 21, 91562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 91662306a36Sopenharmony_ci GATE(0, "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_i_driver_apb_clk", 91762306a36Sopenharmony_ci "dout_fsys0_peribus_grp", 91862306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_I_DRIVER_APB_CLK, 21, 91962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 92062306a36Sopenharmony_ci GATE(PCIE_SUBCTRL_INST0_MSTR_ACLK_SOC, 92162306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_mstr_aclk_soc", 92262306a36Sopenharmony_ci "mout_fsys0_clk_fsys0_slavebusclk", 92362306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_MSTR_ACLK_SOC, 21, 92462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 92562306a36Sopenharmony_ci GATE(PCIE_SUBCTRL_INST0_SLV_ACLK_SOC, 92662306a36Sopenharmony_ci "fsys0_pcie_top_ipclkport_fsd_pcie_sub_ctrl_inst_0_slv_aclk_soc", 92762306a36Sopenharmony_ci "mout_fsys0_clk_fsys0_slavebusclk", 92862306a36Sopenharmony_ci GAT_FSYS0_PCIE_TOP_IPCLKPORT_FSD_PCIE_SUB_CTRL_INST_0_SLV_ACLK_SOC, 21, 92962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 93062306a36Sopenharmony_ci GATE(0, "fsys0_smmu_fsys0_ipclkport_cclk", "mout_fsys0_eqos_rgmii_125_mux1", 93162306a36Sopenharmony_ci GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_CCLK, 21, CLK_IGNORE_UNUSED, 0), 93262306a36Sopenharmony_ci GATE(0, "fsys0_smmu_fsys0_ipclkport_fsys0_bclk", "mout_fsys0_clk_fsys0_slavebusclk", 93362306a36Sopenharmony_ci GAT_FSYS0_SMMU_FSYS0_IPCLKPORT_FSYS0_BCLK, 21, CLK_IGNORE_UNUSED, 0), 93462306a36Sopenharmony_ci GATE(0, "fsys0_sysreg_fsys0_ipclkport_pclk", "dout_fsys0_peribus_grp", 93562306a36Sopenharmony_ci GAT_FSYS0_SYSREG_FSYS0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 93662306a36Sopenharmony_ci GATE(UFS0_TOP0_HCLK_BUS, "fsys0_ufs_top0_ipclkport_hclk_bus", "dout_fsys0_peribus_grp", 93762306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_HCLK_BUS, 21, CLK_IGNORE_UNUSED, 0), 93862306a36Sopenharmony_ci GATE(UFS0_TOP0_ACLK, "fsys0_ufs_top0_ipclkport_i_aclk", "dout_fsys0_peribus_grp", 93962306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 94062306a36Sopenharmony_ci GATE(UFS0_TOP0_CLK_UNIPRO, "fsys0_ufs_top0_ipclkport_i_clk_unipro", "dout_fsys0_clk_unipro", 94162306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_CLK_UNIPRO, 21, CLK_IGNORE_UNUSED, 0), 94262306a36Sopenharmony_ci GATE(UFS0_TOP0_FMP_CLK, "fsys0_ufs_top0_ipclkport_i_fmp_clk", "dout_fsys0_peribus_grp", 94362306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP0_IPCLKPORT_I_FMP_CLK, 21, CLK_IGNORE_UNUSED, 0), 94462306a36Sopenharmony_ci GATE(UFS1_TOP1_HCLK_BUS, "fsys0_ufs_top1_ipclkport_hclk_bus", "dout_fsys0_peribus_grp", 94562306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_HCLK_BUS, 21, CLK_IGNORE_UNUSED, 0), 94662306a36Sopenharmony_ci GATE(UFS1_TOP1_ACLK, "fsys0_ufs_top1_ipclkport_i_aclk", "dout_fsys0_peribus_grp", 94762306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 94862306a36Sopenharmony_ci GATE(UFS1_TOP1_CLK_UNIPRO, "fsys0_ufs_top1_ipclkport_i_clk_unipro", "dout_fsys0_clk_unipro", 94962306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_CLK_UNIPRO, 21, CLK_IGNORE_UNUSED, 0), 95062306a36Sopenharmony_ci GATE(UFS1_TOP1_FMP_CLK, "fsys0_ufs_top1_ipclkport_i_fmp_clk", "dout_fsys0_peribus_grp", 95162306a36Sopenharmony_ci GAT_FSYS0_UFS_TOP1_IPCLKPORT_I_FMP_CLK, 21, CLK_IGNORE_UNUSED, 0), 95262306a36Sopenharmony_ci GATE(0, "fsys0_rii_clk_divgate", "dout_fsys0_eqos_rmiiclk_25", GAT_FSYS0_RII_CLK_DIVGATE, 95362306a36Sopenharmony_ci 21, CLK_IGNORE_UNUSED, 0), 95462306a36Sopenharmony_ci GATE(FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, "fsys0_eqos_top0_ipclkport_clk_ptp_ref_i", 95562306a36Sopenharmony_ci "fin_pll", GAT_FSYS0_EQOS_TOP0_IPCLKPORT_CLK_PTP_REF_I, 21, CLK_IGNORE_UNUSED, 0), 95662306a36Sopenharmony_ci}; 95762306a36Sopenharmony_ci 95862306a36Sopenharmony_cistatic const struct samsung_cmu_info fsys0_cmu_info __initconst = { 95962306a36Sopenharmony_ci .mux_clks = fsys0_mux_clks, 96062306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(fsys0_mux_clks), 96162306a36Sopenharmony_ci .div_clks = fsys0_div_clks, 96262306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(fsys0_div_clks), 96362306a36Sopenharmony_ci .gate_clks = fsys0_gate_clks, 96462306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(fsys0_gate_clks), 96562306a36Sopenharmony_ci .fixed_clks = fsys0_fixed_clks, 96662306a36Sopenharmony_ci .nr_fixed_clks = ARRAY_SIZE(fsys0_fixed_clks), 96762306a36Sopenharmony_ci .nr_clk_ids = FSYS0_NR_CLK, 96862306a36Sopenharmony_ci .clk_regs = fsys0_clk_regs, 96962306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(fsys0_clk_regs), 97062306a36Sopenharmony_ci .clk_name = "dout_cmu_fsys0_shared1div4", 97162306a36Sopenharmony_ci}; 97262306a36Sopenharmony_ci 97362306a36Sopenharmony_ci/* Register Offset definitions for CMU_FSYS1 (0x16810000) */ 97462306a36Sopenharmony_ci#define PLL_CON0_ACLK_FSYS1_BUSP_MUX 0x100 97562306a36Sopenharmony_ci#define PLL_CON0_PCLKL_FSYS1_BUSP_MUX 0x180 97662306a36Sopenharmony_ci#define DIV_CLK_FSYS1_PHY0_OSCCLK 0x1800 97762306a36Sopenharmony_ci#define DIV_CLK_FSYS1_PHY1_OSCCLK 0x1804 97862306a36Sopenharmony_ci#define GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK 0x2000 97962306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK 0x2004 98062306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK 0x2008 98162306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK 0x200c 98262306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL 0x202c 98362306a36Sopenharmony_ci#define GAT_FSYS1_PHY0_OSCCLLK 0x2034 98462306a36Sopenharmony_ci#define GAT_FSYS1_PHY1_OSCCLK 0x2038 98562306a36Sopenharmony_ci#define GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK 0x203c 98662306a36Sopenharmony_ci#define GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK 0x2040 98762306a36Sopenharmony_ci#define GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK 0x2048 98862306a36Sopenharmony_ci#define GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK 0x204c 98962306a36Sopenharmony_ci#define GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK 0x2054 99062306a36Sopenharmony_ci#define GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0 0x205c 99162306a36Sopenharmony_ci#define GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0 0x2064 99262306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK 0x206c 99362306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK 0x2070 99462306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK 0x2074 99562306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK 0x2078 99662306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK 0x207c 99762306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK 0x2080 99862306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK 0x2084 99962306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK 0x2088 100062306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK 0x208c 100162306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK 0x20a4 100262306a36Sopenharmony_ci#define GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL 0x20a8 100362306a36Sopenharmony_ci#define GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK 0x20b4 100462306a36Sopenharmony_ci#define GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK 0x20b8 100562306a36Sopenharmony_ci 100662306a36Sopenharmony_cistatic const unsigned long fsys1_clk_regs[] __initconst = { 100762306a36Sopenharmony_ci PLL_CON0_ACLK_FSYS1_BUSP_MUX, 100862306a36Sopenharmony_ci PLL_CON0_PCLKL_FSYS1_BUSP_MUX, 100962306a36Sopenharmony_ci DIV_CLK_FSYS1_PHY0_OSCCLK, 101062306a36Sopenharmony_ci DIV_CLK_FSYS1_PHY1_OSCCLK, 101162306a36Sopenharmony_ci GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK, 101262306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK, 101362306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK, 101462306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK, 101562306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL, 101662306a36Sopenharmony_ci GAT_FSYS1_PHY0_OSCCLLK, 101762306a36Sopenharmony_ci GAT_FSYS1_PHY1_OSCCLK, 101862306a36Sopenharmony_ci GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK, 101962306a36Sopenharmony_ci GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK, 102062306a36Sopenharmony_ci GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK, 102162306a36Sopenharmony_ci GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK, 102262306a36Sopenharmony_ci GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK, 102362306a36Sopenharmony_ci GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0, 102462306a36Sopenharmony_ci GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0, 102562306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK, 102662306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK, 102762306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK, 102862306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK, 102962306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK, 103062306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK, 103162306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK, 103262306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK, 103362306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK, 103462306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK, 103562306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL, 103662306a36Sopenharmony_ci GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK, 103762306a36Sopenharmony_ci GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK, 103862306a36Sopenharmony_ci}; 103962306a36Sopenharmony_ci 104062306a36Sopenharmony_cistatic const struct samsung_fixed_rate_clock fsys1_fixed_clks[] __initconst = { 104162306a36Sopenharmony_ci FRATE(0, "clk_fsys1_phy0_ref", NULL, 0, 100000000), 104262306a36Sopenharmony_ci FRATE(0, "clk_fsys1_phy1_ref", NULL, 0, 100000000), 104362306a36Sopenharmony_ci}; 104462306a36Sopenharmony_ci 104562306a36Sopenharmony_ci/* List of parent clocks for Muxes in CMU_FSYS1 */ 104662306a36Sopenharmony_ciPNAME(mout_fsys1_pclkl_fsys1_busp_mux_p) = { "fin_pll", "dout_cmu_fsys1_shared0div8" }; 104762306a36Sopenharmony_ciPNAME(mout_fsys1_aclk_fsys1_busp_mux_p) = { "fin_pll", "dout_cmu_fsys1_shared0div4" }; 104862306a36Sopenharmony_ci 104962306a36Sopenharmony_cistatic const struct samsung_mux_clock fsys1_mux_clks[] __initconst = { 105062306a36Sopenharmony_ci MUX(0, "mout_fsys1_pclkl_fsys1_busp_mux", mout_fsys1_pclkl_fsys1_busp_mux_p, 105162306a36Sopenharmony_ci PLL_CON0_PCLKL_FSYS1_BUSP_MUX, 4, 1), 105262306a36Sopenharmony_ci MUX(0, "mout_fsys1_aclk_fsys1_busp_mux", mout_fsys1_aclk_fsys1_busp_mux_p, 105362306a36Sopenharmony_ci PLL_CON0_ACLK_FSYS1_BUSP_MUX, 4, 1), 105462306a36Sopenharmony_ci}; 105562306a36Sopenharmony_ci 105662306a36Sopenharmony_cistatic const struct samsung_div_clock fsys1_div_clks[] __initconst = { 105762306a36Sopenharmony_ci DIV(0, "dout_fsys1_clk_fsys1_phy0_oscclk", "fsys1_phy0_osccllk", 105862306a36Sopenharmony_ci DIV_CLK_FSYS1_PHY0_OSCCLK, 0, 4), 105962306a36Sopenharmony_ci DIV(0, "dout_fsys1_clk_fsys1_phy1_oscclk", "fsys1_phy1_oscclk", 106062306a36Sopenharmony_ci DIV_CLK_FSYS1_PHY1_OSCCLK, 0, 4), 106162306a36Sopenharmony_ci}; 106262306a36Sopenharmony_ci 106362306a36Sopenharmony_cistatic const struct samsung_gate_clock fsys1_gate_clks[] __initconst = { 106462306a36Sopenharmony_ci GATE(0, "fsys1_cmu_fsys1_ipclkport_pclk", "mout_fsys1_pclkl_fsys1_busp_mux", 106562306a36Sopenharmony_ci GAT_FSYS1_CMU_FSYS1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 106662306a36Sopenharmony_ci GATE(0, "fsys1_pcie_phy0_ipclkport_i_ref_xtal", "clk_fsys1_phy0_ref", 106762306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_XTAL, 21, CLK_IGNORE_UNUSED, 0), 106862306a36Sopenharmony_ci GATE(0, "fsys1_phy0_osccllk", "mout_fsys1_aclk_fsys1_busp_mux", 106962306a36Sopenharmony_ci GAT_FSYS1_PHY0_OSCCLLK, 21, CLK_IGNORE_UNUSED, 0), 107062306a36Sopenharmony_ci GATE(0, "fsys1_phy1_oscclk", "mout_fsys1_aclk_fsys1_busp_mux", 107162306a36Sopenharmony_ci GAT_FSYS1_PHY1_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 107262306a36Sopenharmony_ci GATE(0, "fsys1_axi2apb_fsys1_ipclkport_aclk", "mout_fsys1_pclkl_fsys1_busp_mux", 107362306a36Sopenharmony_ci GAT_FSYS1_AXI2APB_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 107462306a36Sopenharmony_ci GATE(0, "fsys1_bus_d0_fsys1_ipclkport_mainclk", "mout_fsys1_aclk_fsys1_busp_mux", 107562306a36Sopenharmony_ci GAT_FSYS1_BUS_D0_FSYS1_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 107662306a36Sopenharmony_ci GATE(0, "fsys1_bus_s0_fsys1_ipclkport_m250clk", "mout_fsys1_pclkl_fsys1_busp_mux", 107762306a36Sopenharmony_ci GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_M250CLK, 21, CLK_IGNORE_UNUSED, 0), 107862306a36Sopenharmony_ci GATE(0, "fsys1_bus_s0_fsys1_ipclkport_mainclk", "mout_fsys1_aclk_fsys1_busp_mux", 107962306a36Sopenharmony_ci GAT_FSYS1_BUS_S0_FSYS1_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 108062306a36Sopenharmony_ci GATE(0, "fsys1_cpe425_0_fsys1_ipclkport_aclk", "mout_fsys1_aclk_fsys1_busp_mux", 108162306a36Sopenharmony_ci GAT_FSYS1_CPE425_0_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 108262306a36Sopenharmony_ci GATE(0, "fsys1_ns_brdg_fsys1_ipclkport_clk__psoc_fsys1__clk_fsys1_d0", 108362306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", 108462306a36Sopenharmony_ci GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_D0, 21, 108562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 108662306a36Sopenharmony_ci GATE(0, "fsys1_ns_brdg_fsys1_ipclkport_clk__psoc_fsys1__clk_fsys1_s0", 108762306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", 108862306a36Sopenharmony_ci GAT_FSYS1_NS_BRDG_FSYS1_IPCLKPORT_CLK__PSOC_FSYS1__CLK_FSYS1_S0, 21, 108962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 109062306a36Sopenharmony_ci GATE(PCIE_LINK0_IPCLKPORT_DBI_ACLK, "fsys1_pcie_link0_ipclkport_dbi_aclk", 109162306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_DBI_ACLK, 21, 109262306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 109362306a36Sopenharmony_ci GATE(0, "fsys1_pcie_link0_ipclkport_i_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 109462306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 109562306a36Sopenharmony_ci GATE(0, "fsys1_pcie_link0_ipclkport_i_soc_ref_clk", "fin_pll", 109662306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_SOC_REF_CLK, 21, CLK_IGNORE_UNUSED, 0), 109762306a36Sopenharmony_ci GATE(0, "fsys1_pcie_link0_ipclkport_i_driver_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 109862306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_I_DRIVER_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 109962306a36Sopenharmony_ci GATE(PCIE_LINK0_IPCLKPORT_MSTR_ACLK, "fsys1_pcie_link0_ipclkport_mstr_aclk", 110062306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_MSTR_ACLK, 21, 110162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 110262306a36Sopenharmony_ci GATE(PCIE_LINK0_IPCLKPORT_SLV_ACLK, "fsys1_pcie_link0_ipclkport_slv_aclk", 110362306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK0_IPCLKPORT_SLV_ACLK, 21, 110462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 110562306a36Sopenharmony_ci GATE(PCIE_LINK1_IPCLKPORT_DBI_ACLK, "fsys1_pcie_link1_ipclkport_dbi_aclk", 110662306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_DBI_ACLK, 21, 110762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 110862306a36Sopenharmony_ci GATE(0, "fsys1_pcie_link1_ipclkport_i_driver_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 110962306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_I_DRIVER_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 111062306a36Sopenharmony_ci GATE(PCIE_LINK1_IPCLKPORT_MSTR_ACLK, "fsys1_pcie_link1_ipclkport_mstr_aclk", 111162306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_MSTR_ACLK, 21, 111262306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 111362306a36Sopenharmony_ci GATE(PCIE_LINK1_IPCLKPORT_SLV_ACLK, "fsys1_pcie_link1_ipclkport_slv_aclk", 111462306a36Sopenharmony_ci "mout_fsys1_aclk_fsys1_busp_mux", GAT_FSYS1_PCIE_LINK1_IPCLKPORT_SLV_ACLK, 21, 111562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 111662306a36Sopenharmony_ci GATE(0, "fsys1_pcie_phy0_ipclkport_i_apb_clk", "mout_fsys1_pclkl_fsys1_busp_mux", 111762306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_APB_CLK, 21, CLK_IGNORE_UNUSED, 0), 111862306a36Sopenharmony_ci GATE(PCIE_LINK0_IPCLKPORT_AUX_ACLK, "fsys1_pcie_link0_ipclkport_auxclk", "fin_pll", 111962306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK0_IPCLKPORT_AUXCLK, 21, CLK_IGNORE_UNUSED, 0), 112062306a36Sopenharmony_ci GATE(PCIE_LINK1_IPCLKPORT_AUX_ACLK, "fsys1_pcie_link1_ipclkport_auxclk", "fin_pll", 112162306a36Sopenharmony_ci GAT_FSYS1_PCIE_LINK1_IPCLKPORT_AUXCLK, 21, CLK_IGNORE_UNUSED, 0), 112262306a36Sopenharmony_ci GATE(0, "fsys1_pcie_phy0_ipclkport_i_ref_soc_pll", "dout_fsys1_clk_fsys1_phy0_oscclk", 112362306a36Sopenharmony_ci GAT_FSYS1_PCIE_PHY0_IPCLKPORT_I_REF_SOC_PLL, 21, CLK_IGNORE_UNUSED, 0), 112462306a36Sopenharmony_ci GATE(0, "fsys1_sysreg_fsys1_ipclkport_pclk", "mout_fsys1_pclkl_fsys1_busp_mux", 112562306a36Sopenharmony_ci GAT_FSYS1_SYSREG_FSYS1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 112662306a36Sopenharmony_ci GATE(0, "fsys1_tbu0_fsys1_ipclkport_aclk", "mout_fsys1_aclk_fsys1_busp_mux", 112762306a36Sopenharmony_ci GAT_FSYS1_TBU0_FSYS1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 112862306a36Sopenharmony_ci}; 112962306a36Sopenharmony_ci 113062306a36Sopenharmony_cistatic const struct samsung_cmu_info fsys1_cmu_info __initconst = { 113162306a36Sopenharmony_ci .mux_clks = fsys1_mux_clks, 113262306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(fsys1_mux_clks), 113362306a36Sopenharmony_ci .div_clks = fsys1_div_clks, 113462306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(fsys1_div_clks), 113562306a36Sopenharmony_ci .gate_clks = fsys1_gate_clks, 113662306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(fsys1_gate_clks), 113762306a36Sopenharmony_ci .fixed_clks = fsys1_fixed_clks, 113862306a36Sopenharmony_ci .nr_fixed_clks = ARRAY_SIZE(fsys1_fixed_clks), 113962306a36Sopenharmony_ci .nr_clk_ids = FSYS1_NR_CLK, 114062306a36Sopenharmony_ci .clk_regs = fsys1_clk_regs, 114162306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(fsys1_clk_regs), 114262306a36Sopenharmony_ci .clk_name = "dout_cmu_fsys1_shared0div4", 114362306a36Sopenharmony_ci}; 114462306a36Sopenharmony_ci 114562306a36Sopenharmony_ci/* Register Offset definitions for CMU_IMEM (0x10010000) */ 114662306a36Sopenharmony_ci#define PLL_CON0_CLK_IMEM_ACLK 0x100 114762306a36Sopenharmony_ci#define PLL_CON0_CLK_IMEM_INTMEMCLK 0x120 114862306a36Sopenharmony_ci#define PLL_CON0_CLK_IMEM_TCUCLK 0x140 114962306a36Sopenharmony_ci#define DIV_OSCCLK_IMEM_TMUTSCLK 0x1800 115062306a36Sopenharmony_ci#define GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK 0x2000 115162306a36Sopenharmony_ci#define GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO 0x2004 115262306a36Sopenharmony_ci#define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK 0x2008 115362306a36Sopenharmony_ci#define GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK 0x200c 115462306a36Sopenharmony_ci#define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK 0x2010 115562306a36Sopenharmony_ci#define GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS 0x2014 115662306a36Sopenharmony_ci#define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK 0x2018 115762306a36Sopenharmony_ci#define GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS 0x201c 115862306a36Sopenharmony_ci#define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK 0x2020 115962306a36Sopenharmony_ci#define GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS 0x2024 116062306a36Sopenharmony_ci#define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK 0x2028 116162306a36Sopenharmony_ci#define GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS 0x202c 116262306a36Sopenharmony_ci#define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK 0x2030 116362306a36Sopenharmony_ci#define GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS 0x2034 116462306a36Sopenharmony_ci#define GAT_IMEM_WDT0_IPCLKPORT_CLK 0x2038 116562306a36Sopenharmony_ci#define GAT_IMEM_WDT1_IPCLKPORT_CLK 0x203c 116662306a36Sopenharmony_ci#define GAT_IMEM_WDT2_IPCLKPORT_CLK 0x2040 116762306a36Sopenharmony_ci#define GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM 0x2044 116862306a36Sopenharmony_ci#define GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM 0x2048 116962306a36Sopenharmony_ci#define GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM 0x204c 117062306a36Sopenharmony_ci#define GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS 0x2050 117162306a36Sopenharmony_ci#define GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS 0x2054 117262306a36Sopenharmony_ci#define GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS 0x2058 117362306a36Sopenharmony_ci#define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM 0x205c 117462306a36Sopenharmony_ci#define GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS 0x2060 117562306a36Sopenharmony_ci#define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM 0x2064 117662306a36Sopenharmony_ci#define GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS 0x2068 117762306a36Sopenharmony_ci#define GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK 0x206c 117862306a36Sopenharmony_ci#define GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK 0x2070 117962306a36Sopenharmony_ci#define GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK 0x2074 118062306a36Sopenharmony_ci#define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK 0x2078 118162306a36Sopenharmony_ci#define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK 0x207c 118262306a36Sopenharmony_ci#define GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK 0x2080 118362306a36Sopenharmony_ci#define GAT_IMEM_DMA0_IPCLKPORT_ACLK 0x2084 118462306a36Sopenharmony_ci#define GAT_IMEM_DMA1_IPCLKPORT_ACLK 0x2088 118562306a36Sopenharmony_ci#define GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK 0x208c 118662306a36Sopenharmony_ci#define GAT_IMEM_GIC_IPCLKPORT_CLK 0x2090 118762306a36Sopenharmony_ci#define GAT_IMEM_INTMEM_IPCLKPORT_ACLK 0x2094 118862306a36Sopenharmony_ci#define GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK 0x2098 118962306a36Sopenharmony_ci#define GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK 0x209c 119062306a36Sopenharmony_ci#define GAT_IMEM_MCT_IPCLKPORT_PCLK 0x20a0 119162306a36Sopenharmony_ci#define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D 0x20a4 119262306a36Sopenharmony_ci#define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU 0x20a8 119362306a36Sopenharmony_ci#define GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P 0x20ac 119462306a36Sopenharmony_ci#define GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK 0x20b0 119562306a36Sopenharmony_ci#define GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK 0x20b4 119662306a36Sopenharmony_ci#define GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK 0x20b8 119762306a36Sopenharmony_ci#define GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK 0x20bc 119862306a36Sopenharmony_ci#define GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK 0x20c0 119962306a36Sopenharmony_ci#define GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK 0x20c4 120062306a36Sopenharmony_ci#define GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK 0x20c8 120162306a36Sopenharmony_ci#define GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK 0x20cc 120262306a36Sopenharmony_ci#define GAT_IMEM_TCU_IPCLKPORT_ACLK 0x20d0 120362306a36Sopenharmony_ci#define GAT_IMEM_WDT0_IPCLKPORT_PCLK 0x20d4 120462306a36Sopenharmony_ci#define GAT_IMEM_WDT1_IPCLKPORT_PCLK 0x20d8 120562306a36Sopenharmony_ci#define GAT_IMEM_WDT2_IPCLKPORT_PCLK 0x20dc 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_cistatic const unsigned long imem_clk_regs[] __initconst = { 120862306a36Sopenharmony_ci PLL_CON0_CLK_IMEM_ACLK, 120962306a36Sopenharmony_ci PLL_CON0_CLK_IMEM_INTMEMCLK, 121062306a36Sopenharmony_ci PLL_CON0_CLK_IMEM_TCUCLK, 121162306a36Sopenharmony_ci DIV_OSCCLK_IMEM_TMUTSCLK, 121262306a36Sopenharmony_ci GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK, 121362306a36Sopenharmony_ci GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO, 121462306a36Sopenharmony_ci GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK, 121562306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK, 121662306a36Sopenharmony_ci GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK, 121762306a36Sopenharmony_ci GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, 121862306a36Sopenharmony_ci GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK, 121962306a36Sopenharmony_ci GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, 122062306a36Sopenharmony_ci GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK, 122162306a36Sopenharmony_ci GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, 122262306a36Sopenharmony_ci GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK, 122362306a36Sopenharmony_ci GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, 122462306a36Sopenharmony_ci GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK, 122562306a36Sopenharmony_ci GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, 122662306a36Sopenharmony_ci GAT_IMEM_WDT0_IPCLKPORT_CLK, 122762306a36Sopenharmony_ci GAT_IMEM_WDT1_IPCLKPORT_CLK, 122862306a36Sopenharmony_ci GAT_IMEM_WDT2_IPCLKPORT_CLK, 122962306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM, 123062306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM, 123162306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM, 123262306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS, 123362306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS, 123462306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS, 123562306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM, 123662306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS, 123762306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM, 123862306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS, 123962306a36Sopenharmony_ci GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK, 124062306a36Sopenharmony_ci GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK, 124162306a36Sopenharmony_ci GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK, 124262306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK, 124362306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK, 124462306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK, 124562306a36Sopenharmony_ci GAT_IMEM_DMA0_IPCLKPORT_ACLK, 124662306a36Sopenharmony_ci GAT_IMEM_DMA1_IPCLKPORT_ACLK, 124762306a36Sopenharmony_ci GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK, 124862306a36Sopenharmony_ci GAT_IMEM_GIC_IPCLKPORT_CLK, 124962306a36Sopenharmony_ci GAT_IMEM_INTMEM_IPCLKPORT_ACLK, 125062306a36Sopenharmony_ci GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK, 125162306a36Sopenharmony_ci GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK, 125262306a36Sopenharmony_ci GAT_IMEM_MCT_IPCLKPORT_PCLK, 125362306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D, 125462306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU, 125562306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P, 125662306a36Sopenharmony_ci GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK, 125762306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK, 125862306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK, 125962306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK, 126062306a36Sopenharmony_ci GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK, 126162306a36Sopenharmony_ci GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK, 126262306a36Sopenharmony_ci GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK, 126362306a36Sopenharmony_ci GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK, 126462306a36Sopenharmony_ci GAT_IMEM_TCU_IPCLKPORT_ACLK, 126562306a36Sopenharmony_ci GAT_IMEM_WDT0_IPCLKPORT_PCLK, 126662306a36Sopenharmony_ci GAT_IMEM_WDT1_IPCLKPORT_PCLK, 126762306a36Sopenharmony_ci GAT_IMEM_WDT2_IPCLKPORT_PCLK, 126862306a36Sopenharmony_ci}; 126962306a36Sopenharmony_ci 127062306a36Sopenharmony_ciPNAME(mout_imem_clk_imem_tcuclk_p) = { "fin_pll", "dout_cmu_imem_tcuclk" }; 127162306a36Sopenharmony_ciPNAME(mout_imem_clk_imem_aclk_p) = { "fin_pll", "dout_cmu_imem_aclk" }; 127262306a36Sopenharmony_ciPNAME(mout_imem_clk_imem_intmemclk_p) = { "fin_pll", "dout_cmu_imem_dmaclk" }; 127362306a36Sopenharmony_ci 127462306a36Sopenharmony_cistatic const struct samsung_mux_clock imem_mux_clks[] __initconst = { 127562306a36Sopenharmony_ci MUX(0, "mout_imem_clk_imem_tcuclk", mout_imem_clk_imem_tcuclk_p, 127662306a36Sopenharmony_ci PLL_CON0_CLK_IMEM_TCUCLK, 4, 1), 127762306a36Sopenharmony_ci MUX(0, "mout_imem_clk_imem_aclk", mout_imem_clk_imem_aclk_p, PLL_CON0_CLK_IMEM_ACLK, 4, 1), 127862306a36Sopenharmony_ci MUX(0, "mout_imem_clk_imem_intmemclk", mout_imem_clk_imem_intmemclk_p, 127962306a36Sopenharmony_ci PLL_CON0_CLK_IMEM_INTMEMCLK, 4, 1), 128062306a36Sopenharmony_ci}; 128162306a36Sopenharmony_ci 128262306a36Sopenharmony_cistatic const struct samsung_div_clock imem_div_clks[] __initconst = { 128362306a36Sopenharmony_ci DIV(0, "dout_imem_oscclk_imem_tmutsclk", "fin_pll", DIV_OSCCLK_IMEM_TMUTSCLK, 0, 4), 128462306a36Sopenharmony_ci}; 128562306a36Sopenharmony_ci 128662306a36Sopenharmony_cistatic const struct samsung_gate_clock imem_gate_clks[] __initconst = { 128762306a36Sopenharmony_ci GATE(0, "imem_imem_cmu_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 128862306a36Sopenharmony_ci GAT_IMEM_IMEM_CMU_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 128962306a36Sopenharmony_ci GATE(0, "imem_otp_con_top_ipclkport_i_oscclk", "fin_pll", 129062306a36Sopenharmony_ci GAT_IMEM_OTP_CON_TOP_IPCLKPORT_I_OSCCLK, 21, CLK_IGNORE_UNUSED, 0), 129162306a36Sopenharmony_ci GATE(0, "imem_tmu_top_ipclkport_i_clk", "fin_pll", 129262306a36Sopenharmony_ci GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 129362306a36Sopenharmony_ci GATE(0, "imem_tmu_gt_ipclkport_i_clk", "fin_pll", 129462306a36Sopenharmony_ci GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 129562306a36Sopenharmony_ci GATE(0, "imem_tmu_cpu0_ipclkport_i_clk", "fin_pll", 129662306a36Sopenharmony_ci GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 129762306a36Sopenharmony_ci GATE(0, "imem_tmu_gpu_ipclkport_i_clk", "fin_pll", 129862306a36Sopenharmony_ci GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 129962306a36Sopenharmony_ci GATE(0, "imem_mct_ipclkport_oscclk__alo", "fin_pll", 130062306a36Sopenharmony_ci GAT_IMEM_MCT_IPCLKPORT_OSCCLK__ALO, 21, CLK_IGNORE_UNUSED, 0), 130162306a36Sopenharmony_ci GATE(0, "imem_wdt0_ipclkport_clk", "fin_pll", 130262306a36Sopenharmony_ci GAT_IMEM_WDT0_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 130362306a36Sopenharmony_ci GATE(0, "imem_wdt1_ipclkport_clk", "fin_pll", 130462306a36Sopenharmony_ci GAT_IMEM_WDT1_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 130562306a36Sopenharmony_ci GATE(0, "imem_wdt2_ipclkport_clk", "fin_pll", 130662306a36Sopenharmony_ci GAT_IMEM_WDT2_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 130762306a36Sopenharmony_ci GATE(IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu0_ipclkport_i_clk_ts", 130862306a36Sopenharmony_ci "dout_imem_oscclk_imem_tmutsclk", 130962306a36Sopenharmony_ci GAT_IMEM_TMU_CPU0_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 131062306a36Sopenharmony_ci GATE(IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, "imem_tmu_cpu2_ipclkport_i_clk_ts", 131162306a36Sopenharmony_ci "dout_imem_oscclk_imem_tmutsclk", 131262306a36Sopenharmony_ci GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 131362306a36Sopenharmony_ci GATE(IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, "imem_tmu_gpu_ipclkport_i_clk_ts", 131462306a36Sopenharmony_ci "dout_imem_oscclk_imem_tmutsclk", 131562306a36Sopenharmony_ci GAT_IMEM_TMU_GPU_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 131662306a36Sopenharmony_ci GATE(IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, "imem_tmu_gt_ipclkport_i_clk_ts", 131762306a36Sopenharmony_ci "dout_imem_oscclk_imem_tmutsclk", 131862306a36Sopenharmony_ci GAT_IMEM_TMU_GT_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 131962306a36Sopenharmony_ci GATE(IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, "imem_tmu_top_ipclkport_i_clk_ts", 132062306a36Sopenharmony_ci "dout_imem_oscclk_imem_tmutsclk", 132162306a36Sopenharmony_ci GAT_IMEM_TMU_TOP_IPCLKPORT_I_CLK_TS, 21, CLK_IGNORE_UNUSED, 0), 132262306a36Sopenharmony_ci GATE(0, "imem_adm_axi4st_i0_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 132362306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I0_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 132462306a36Sopenharmony_ci GATE(0, "imem_adm_axi4st_i1_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 132562306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I1_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 132662306a36Sopenharmony_ci GATE(0, "imem_adm_axi4st_i2_imem_ipclkport_aclkm", "mout_imem_clk_imem_aclk", 132762306a36Sopenharmony_ci GAT_IMEM_ADM_AXI4ST_I2_IMEM_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), 132862306a36Sopenharmony_ci GATE(0, "imem_ads_axi4st_i0_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 132962306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I0_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 133062306a36Sopenharmony_ci GATE(0, "imem_ads_axi4st_i1_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 133162306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I1_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 133262306a36Sopenharmony_ci GATE(0, "imem_ads_axi4st_i2_imem_ipclkport_aclks", "mout_imem_clk_imem_aclk", 133362306a36Sopenharmony_ci GAT_IMEM_ADS_AXI4ST_I2_IMEM_IPCLKPORT_ACLKS, 21, CLK_IGNORE_UNUSED, 0), 133462306a36Sopenharmony_ci GATE(0, "imem_async_dma0_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk", 133562306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 133662306a36Sopenharmony_ci GATE(0, "imem_async_dma0_ipclkport_pclks", "mout_imem_clk_imem_aclk", 133762306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA0_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 133862306a36Sopenharmony_ci GATE(0, "imem_async_dma1_ipclkport_pclkm", "mout_imem_clk_imem_tcuclk", 133962306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 134062306a36Sopenharmony_ci GATE(0, "imem_async_dma1_ipclkport_pclks", "mout_imem_clk_imem_aclk", 134162306a36Sopenharmony_ci GAT_IMEM_ASYNC_DMA1_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 134262306a36Sopenharmony_ci GATE(0, "imem_axi2apb_imemp0_ipclkport_aclk", "mout_imem_clk_imem_aclk", 134362306a36Sopenharmony_ci GAT_IMEM_AXI2APB_IMEMP0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 134462306a36Sopenharmony_ci GATE(0, "imem_axi2apb_imemp1_ipclkport_aclk", "mout_imem_clk_imem_aclk", 134562306a36Sopenharmony_ci GAT_IMEM_AXI2APB_IMEMP1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 134662306a36Sopenharmony_ci GATE(0, "imem_bus_d_imem_ipclkport_mainclk", "mout_imem_clk_imem_tcuclk", 134762306a36Sopenharmony_ci GAT_IMEM_BUS_D_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 134862306a36Sopenharmony_ci GATE(0, "imem_bus_p_imem_ipclkport_mainclk", "mout_imem_clk_imem_aclk", 134962306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_MAINCLK, 21, CLK_IGNORE_UNUSED, 0), 135062306a36Sopenharmony_ci GATE(0, "imem_bus_p_imem_ipclkport_pericclk", "mout_imem_clk_imem_aclk", 135162306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_PERICLK, 21, CLK_IGNORE_UNUSED, 0), 135262306a36Sopenharmony_ci GATE(0, "imem_bus_p_imem_ipclkport_tcuclk", "mout_imem_clk_imem_tcuclk", 135362306a36Sopenharmony_ci GAT_IMEM_BUS_P_IMEM_IPCLKPORT_TCUCLK, 21, CLK_IGNORE_UNUSED, 0), 135462306a36Sopenharmony_ci GATE(IMEM_DMA0_IPCLKPORT_ACLK, "imem_dma0_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 135562306a36Sopenharmony_ci GAT_IMEM_DMA0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0), 135662306a36Sopenharmony_ci GATE(IMEM_DMA1_IPCLKPORT_ACLK, "imem_dma1_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 135762306a36Sopenharmony_ci GAT_IMEM_DMA1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED | CLK_IS_CRITICAL, 0), 135862306a36Sopenharmony_ci GATE(0, "imem_gic500_input_sync_ipclkport_clk", "mout_imem_clk_imem_aclk", 135962306a36Sopenharmony_ci GAT_IMEM_GIC500_INPUT_SYNC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 136062306a36Sopenharmony_ci GATE(0, "imem_gic_ipclkport_clk", "mout_imem_clk_imem_aclk", 136162306a36Sopenharmony_ci GAT_IMEM_GIC_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 136262306a36Sopenharmony_ci GATE(0, "imem_intmem_ipclkport_aclk", "mout_imem_clk_imem_intmemclk", 136362306a36Sopenharmony_ci GAT_IMEM_INTMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 136462306a36Sopenharmony_ci GATE(0, "imem_mailbox_scs_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk", 136562306a36Sopenharmony_ci GAT_IMEM_MAILBOX_SCS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 136662306a36Sopenharmony_ci GATE(0, "imem_mailbox_sms_ca72_ipclkport_pclk", "mout_imem_clk_imem_aclk", 136762306a36Sopenharmony_ci GAT_IMEM_MAILBOX_SMS_CA72_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 136862306a36Sopenharmony_ci GATE(IMEM_MCT_PCLK, "imem_mct_ipclkport_pclk", "mout_imem_clk_imem_aclk", 136962306a36Sopenharmony_ci GAT_IMEM_MCT_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 137062306a36Sopenharmony_ci GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_d", 137162306a36Sopenharmony_ci "mout_imem_clk_imem_tcuclk", 137262306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_D, 21, CLK_IGNORE_UNUSED, 0), 137362306a36Sopenharmony_ci GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psco_imem__clk_imem_tcu", 137462306a36Sopenharmony_ci "mout_imem_clk_imem_tcuclk", 137562306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSCO_IMEM__CLK_IMEM_TCU, 21, 137662306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 137762306a36Sopenharmony_ci GATE(0, "imem_ns_brdg_imem_ipclkport_clk__psoc_imem__clk_imem_p", "mout_imem_clk_imem_aclk", 137862306a36Sopenharmony_ci GAT_IMEM_NS_BRDG_IMEM_IPCLKPORT_CLK__PSOC_IMEM__CLK_IMEM_P, 21, CLK_IGNORE_UNUSED, 0), 137962306a36Sopenharmony_ci GATE(0, "imem_otp_con_top_ipclkport_pclk", "mout_imem_clk_imem_aclk", 138062306a36Sopenharmony_ci GAT_IMEM_OTP_CON_TOP_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 138162306a36Sopenharmony_ci GATE(0, "imem_rstnsync_aclk_ipclkport_clk", "mout_imem_clk_imem_aclk", 138262306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_ACLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 138362306a36Sopenharmony_ci GATE(0, "imem_rstnsync_oscclk_ipclkport_clk", "fin_pll", 138462306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_OSCCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 138562306a36Sopenharmony_ci GATE(0, "imem_rstnsync_intmemclk_ipclkport_clk", "mout_imem_clk_imem_intmemclk", 138662306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_INTMEMCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 138762306a36Sopenharmony_ci GATE(0, "imem_rstnsync_tcuclk_ipclkport_clk", "mout_imem_clk_imem_tcuclk", 138862306a36Sopenharmony_ci GAT_IMEM_RSTNSYNC_TCUCLK_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 138962306a36Sopenharmony_ci GATE(0, "imem_sfrif_tmu0_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 139062306a36Sopenharmony_ci GAT_IMEM_SFRIF_TMU0_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 139162306a36Sopenharmony_ci GATE(0, "imem_sfrif_tmu1_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 139262306a36Sopenharmony_ci GAT_IMEM_SFRIF_TMU1_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 139362306a36Sopenharmony_ci GATE(0, "imem_tmu_cpu2_ipclkport_i_clk", "fin_pll", 139462306a36Sopenharmony_ci GAT_IMEM_TMU_CPU2_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), 139562306a36Sopenharmony_ci GATE(0, "imem_sysreg_imem_ipclkport_pclk", "mout_imem_clk_imem_aclk", 139662306a36Sopenharmony_ci GAT_IMEM_SYSREG_IMEM_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 139762306a36Sopenharmony_ci GATE(0, "imem_tbu_imem_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 139862306a36Sopenharmony_ci GAT_IMEM_TBU_IMEM_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 139962306a36Sopenharmony_ci GATE(0, "imem_tcu_ipclkport_aclk", "mout_imem_clk_imem_tcuclk", 140062306a36Sopenharmony_ci GAT_IMEM_TCU_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 140162306a36Sopenharmony_ci GATE(IMEM_WDT0_IPCLKPORT_PCLK, "imem_wdt0_ipclkport_pclk", "mout_imem_clk_imem_aclk", 140262306a36Sopenharmony_ci GAT_IMEM_WDT0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 140362306a36Sopenharmony_ci GATE(IMEM_WDT1_IPCLKPORT_PCLK, "imem_wdt1_ipclkport_pclk", "mout_imem_clk_imem_aclk", 140462306a36Sopenharmony_ci GAT_IMEM_WDT1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 140562306a36Sopenharmony_ci GATE(IMEM_WDT2_IPCLKPORT_PCLK, "imem_wdt2_ipclkport_pclk", "mout_imem_clk_imem_aclk", 140662306a36Sopenharmony_ci GAT_IMEM_WDT2_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 140762306a36Sopenharmony_ci}; 140862306a36Sopenharmony_ci 140962306a36Sopenharmony_cistatic const struct samsung_cmu_info imem_cmu_info __initconst = { 141062306a36Sopenharmony_ci .mux_clks = imem_mux_clks, 141162306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(imem_mux_clks), 141262306a36Sopenharmony_ci .div_clks = imem_div_clks, 141362306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(imem_div_clks), 141462306a36Sopenharmony_ci .gate_clks = imem_gate_clks, 141562306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(imem_gate_clks), 141662306a36Sopenharmony_ci .nr_clk_ids = IMEM_NR_CLK, 141762306a36Sopenharmony_ci .clk_regs = imem_clk_regs, 141862306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(imem_clk_regs), 141962306a36Sopenharmony_ci}; 142062306a36Sopenharmony_ci 142162306a36Sopenharmony_cistatic void __init fsd_clk_imem_init(struct device_node *np) 142262306a36Sopenharmony_ci{ 142362306a36Sopenharmony_ci samsung_cmu_register_one(np, &imem_cmu_info); 142462306a36Sopenharmony_ci} 142562306a36Sopenharmony_ci 142662306a36Sopenharmony_ciCLK_OF_DECLARE(fsd_clk_imem, "tesla,fsd-clock-imem", fsd_clk_imem_init); 142762306a36Sopenharmony_ci 142862306a36Sopenharmony_ci/* Register Offset definitions for CMU_MFC (0x12810000) */ 142962306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_MFC 0x0 143062306a36Sopenharmony_ci#define PLL_CON0_PLL_MFC 0x100 143162306a36Sopenharmony_ci#define MUX_MFC_BUSD 0x1000 143262306a36Sopenharmony_ci#define MUX_MFC_BUSP 0x1008 143362306a36Sopenharmony_ci#define DIV_MFC_BUSD_DIV4 0x1800 143462306a36Sopenharmony_ci#define GAT_MFC_CMU_MFC_IPCLKPORT_PCLK 0x2000 143562306a36Sopenharmony_ci#define GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM 0x2004 143662306a36Sopenharmony_ci#define GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS 0x2008 143762306a36Sopenharmony_ci#define GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK 0x200c 143862306a36Sopenharmony_ci#define GAT_MFC_MFC_IPCLKPORT_ACLK 0x2010 143962306a36Sopenharmony_ci#define GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D 0x2018 144062306a36Sopenharmony_ci#define GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P 0x201c 144162306a36Sopenharmony_ci#define GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK 0x2028 144262306a36Sopenharmony_ci#define GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK 0x202c 144362306a36Sopenharmony_ci#define GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK 0x2030 144462306a36Sopenharmony_ci#define GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK 0x2034 144562306a36Sopenharmony_ci#define GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK 0x2038 144662306a36Sopenharmony_ci#define GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK 0x203c 144762306a36Sopenharmony_ci#define GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK 0x2040 144862306a36Sopenharmony_ci#define GAT_MFC_BUSD_DIV4_GATE 0x2044 144962306a36Sopenharmony_ci#define GAT_MFC_BUSD_GATE 0x2048 145062306a36Sopenharmony_ci 145162306a36Sopenharmony_cistatic const unsigned long mfc_clk_regs[] __initconst = { 145262306a36Sopenharmony_ci PLL_LOCKTIME_PLL_MFC, 145362306a36Sopenharmony_ci PLL_CON0_PLL_MFC, 145462306a36Sopenharmony_ci MUX_MFC_BUSD, 145562306a36Sopenharmony_ci MUX_MFC_BUSP, 145662306a36Sopenharmony_ci DIV_MFC_BUSD_DIV4, 145762306a36Sopenharmony_ci GAT_MFC_CMU_MFC_IPCLKPORT_PCLK, 145862306a36Sopenharmony_ci GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM, 145962306a36Sopenharmony_ci GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS, 146062306a36Sopenharmony_ci GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK, 146162306a36Sopenharmony_ci GAT_MFC_MFC_IPCLKPORT_ACLK, 146262306a36Sopenharmony_ci GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D, 146362306a36Sopenharmony_ci GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P, 146462306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK, 146562306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK, 146662306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK, 146762306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK, 146862306a36Sopenharmony_ci GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK, 146962306a36Sopenharmony_ci GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK, 147062306a36Sopenharmony_ci GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK, 147162306a36Sopenharmony_ci GAT_MFC_BUSD_DIV4_GATE, 147262306a36Sopenharmony_ci GAT_MFC_BUSD_GATE, 147362306a36Sopenharmony_ci}; 147462306a36Sopenharmony_ci 147562306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_mfc_rate_table[] __initconst = { 147662306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 666000000U, 111, 4, 0), 147762306a36Sopenharmony_ci}; 147862306a36Sopenharmony_ci 147962306a36Sopenharmony_cistatic const struct samsung_pll_clock mfc_pll_clks[] __initconst = { 148062306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_mfc", "fin_pll", 148162306a36Sopenharmony_ci PLL_LOCKTIME_PLL_MFC, PLL_CON0_PLL_MFC, pll_mfc_rate_table), 148262306a36Sopenharmony_ci}; 148362306a36Sopenharmony_ci 148462306a36Sopenharmony_ciPNAME(mout_mfc_pll_p) = { "fin_pll", "fout_pll_mfc" }; 148562306a36Sopenharmony_ciPNAME(mout_mfc_busp_p) = { "fin_pll", "dout_mfc_busd_div4" }; 148662306a36Sopenharmony_ciPNAME(mout_mfc_busd_p) = { "fin_pll", "mfc_busd_gate" }; 148762306a36Sopenharmony_ci 148862306a36Sopenharmony_cistatic const struct samsung_mux_clock mfc_mux_clks[] __initconst = { 148962306a36Sopenharmony_ci MUX(0, "mout_mfc_pll", mout_mfc_pll_p, PLL_CON0_PLL_MFC, 4, 1), 149062306a36Sopenharmony_ci MUX(0, "mout_mfc_busp", mout_mfc_busp_p, MUX_MFC_BUSP, 0, 1), 149162306a36Sopenharmony_ci MUX(0, "mout_mfc_busd", mout_mfc_busd_p, MUX_MFC_BUSD, 0, 1), 149262306a36Sopenharmony_ci}; 149362306a36Sopenharmony_ci 149462306a36Sopenharmony_cistatic const struct samsung_div_clock mfc_div_clks[] __initconst = { 149562306a36Sopenharmony_ci DIV(0, "dout_mfc_busd_div4", "mfc_busd_div4_gate", DIV_MFC_BUSD_DIV4, 0, 4), 149662306a36Sopenharmony_ci}; 149762306a36Sopenharmony_ci 149862306a36Sopenharmony_cistatic const struct samsung_gate_clock mfc_gate_clks[] __initconst = { 149962306a36Sopenharmony_ci GATE(0, "mfc_cmu_mfc_ipclkport_pclk", "mout_mfc_busp", 150062306a36Sopenharmony_ci GAT_MFC_CMU_MFC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 150162306a36Sopenharmony_ci GATE(0, "mfc_as_p_mfc_ipclkport_pclkm", "mout_mfc_busd", 150262306a36Sopenharmony_ci GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKM, 21, CLK_IGNORE_UNUSED, 0), 150362306a36Sopenharmony_ci GATE(0, "mfc_as_p_mfc_ipclkport_pclks", "mout_mfc_busp", 150462306a36Sopenharmony_ci GAT_MFC_AS_P_MFC_IPCLKPORT_PCLKS, 21, CLK_IGNORE_UNUSED, 0), 150562306a36Sopenharmony_ci GATE(0, "mfc_axi2apb_mfc_ipclkport_aclk", "mout_mfc_busp", 150662306a36Sopenharmony_ci GAT_MFC_AXI2APB_MFC_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 150762306a36Sopenharmony_ci GATE(MFC_MFC_IPCLKPORT_ACLK, "mfc_mfc_ipclkport_aclk", "mout_mfc_busd", 150862306a36Sopenharmony_ci GAT_MFC_MFC_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 150962306a36Sopenharmony_ci GATE(0, "mfc_ns_brdg_mfc_ipclkport_clk__pmfc__clk_mfc_d", "mout_mfc_busd", 151062306a36Sopenharmony_ci GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_D, 21, CLK_IGNORE_UNUSED, 0), 151162306a36Sopenharmony_ci GATE(0, "mfc_ns_brdg_mfc_ipclkport_clk__pmfc__clk_mfc_p", "mout_mfc_busp", 151262306a36Sopenharmony_ci GAT_MFC_NS_BRDG_MFC_IPCLKPORT_CLK__PMFC__CLK_MFC_P, 21, CLK_IGNORE_UNUSED, 0), 151362306a36Sopenharmony_ci GATE(0, "mfc_ppmu_mfcd0_ipclkport_aclk", "mout_mfc_busd", 151462306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD0_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 151562306a36Sopenharmony_ci GATE(0, "mfc_ppmu_mfcd0_ipclkport_pclk", "mout_mfc_busp", 151662306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD0_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 151762306a36Sopenharmony_ci GATE(0, "mfc_ppmu_mfcd1_ipclkport_aclk", "mout_mfc_busd", 151862306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD1_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 151962306a36Sopenharmony_ci GATE(0, "mfc_ppmu_mfcd1_ipclkport_pclk", "mout_mfc_busp", 152062306a36Sopenharmony_ci GAT_MFC_PPMU_MFCD1_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 152162306a36Sopenharmony_ci GATE(0, "mfc_sysreg_mfc_ipclkport_pclk", "mout_mfc_busp", 152262306a36Sopenharmony_ci GAT_MFC_SYSREG_MFC_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 152362306a36Sopenharmony_ci GATE(0, "mfc_tbu_mfcd0_ipclkport_clk", "mout_mfc_busd", 152462306a36Sopenharmony_ci GAT_MFC_TBU_MFCD0_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 152562306a36Sopenharmony_ci GATE(0, "mfc_tbu_mfcd1_ipclkport_clk", "mout_mfc_busd", 152662306a36Sopenharmony_ci GAT_MFC_TBU_MFCD1_IPCLKPORT_CLK, 21, CLK_IGNORE_UNUSED, 0), 152762306a36Sopenharmony_ci GATE(0, "mfc_busd_div4_gate", "mout_mfc_pll", 152862306a36Sopenharmony_ci GAT_MFC_BUSD_DIV4_GATE, 21, CLK_IGNORE_UNUSED, 0), 152962306a36Sopenharmony_ci GATE(0, "mfc_busd_gate", "mout_mfc_pll", GAT_MFC_BUSD_GATE, 21, CLK_IS_CRITICAL, 0), 153062306a36Sopenharmony_ci}; 153162306a36Sopenharmony_ci 153262306a36Sopenharmony_cistatic const struct samsung_cmu_info mfc_cmu_info __initconst = { 153362306a36Sopenharmony_ci .pll_clks = mfc_pll_clks, 153462306a36Sopenharmony_ci .nr_pll_clks = ARRAY_SIZE(mfc_pll_clks), 153562306a36Sopenharmony_ci .mux_clks = mfc_mux_clks, 153662306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(mfc_mux_clks), 153762306a36Sopenharmony_ci .div_clks = mfc_div_clks, 153862306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(mfc_div_clks), 153962306a36Sopenharmony_ci .gate_clks = mfc_gate_clks, 154062306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(mfc_gate_clks), 154162306a36Sopenharmony_ci .nr_clk_ids = MFC_NR_CLK, 154262306a36Sopenharmony_ci .clk_regs = mfc_clk_regs, 154362306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(mfc_clk_regs), 154462306a36Sopenharmony_ci}; 154562306a36Sopenharmony_ci 154662306a36Sopenharmony_ci/* Register Offset definitions for CMU_CAM_CSI (0x12610000) */ 154762306a36Sopenharmony_ci#define PLL_LOCKTIME_PLL_CAM_CSI 0x0 154862306a36Sopenharmony_ci#define PLL_CON0_PLL_CAM_CSI 0x100 154962306a36Sopenharmony_ci#define DIV_CAM_CSI0_ACLK 0x1800 155062306a36Sopenharmony_ci#define DIV_CAM_CSI1_ACLK 0x1804 155162306a36Sopenharmony_ci#define DIV_CAM_CSI2_ACLK 0x1808 155262306a36Sopenharmony_ci#define DIV_CAM_CSI_BUSD 0x180c 155362306a36Sopenharmony_ci#define DIV_CAM_CSI_BUSP 0x1810 155462306a36Sopenharmony_ci#define GAT_CAM_CSI_CMU_CAM_CSI_IPCLKPORT_PCLK 0x2000 155562306a36Sopenharmony_ci#define GAT_CAM_AXI2APB_CAM_CSI_IPCLKPORT_ACLK 0x2004 155662306a36Sopenharmony_ci#define GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI0 0x2008 155762306a36Sopenharmony_ci#define GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI1 0x200c 155862306a36Sopenharmony_ci#define GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI2 0x2010 155962306a36Sopenharmony_ci#define GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_SOC_NOC 0x2014 156062306a36Sopenharmony_ci#define GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__NOC 0x2018 156162306a36Sopenharmony_ci#define GAT_CAM_CSI0_0_IPCLKPORT_I_ACLK 0x201c 156262306a36Sopenharmony_ci#define GAT_CAM_CSI0_0_IPCLKPORT_I_PCLK 0x2020 156362306a36Sopenharmony_ci#define GAT_CAM_CSI0_1_IPCLKPORT_I_ACLK 0x2024 156462306a36Sopenharmony_ci#define GAT_CAM_CSI0_1_IPCLKPORT_I_PCLK 0x2028 156562306a36Sopenharmony_ci#define GAT_CAM_CSI0_2_IPCLKPORT_I_ACLK 0x202c 156662306a36Sopenharmony_ci#define GAT_CAM_CSI0_2_IPCLKPORT_I_PCLK 0x2030 156762306a36Sopenharmony_ci#define GAT_CAM_CSI0_3_IPCLKPORT_I_ACLK 0x2034 156862306a36Sopenharmony_ci#define GAT_CAM_CSI0_3_IPCLKPORT_I_PCLK 0x2038 156962306a36Sopenharmony_ci#define GAT_CAM_CSI1_0_IPCLKPORT_I_ACLK 0x203c 157062306a36Sopenharmony_ci#define GAT_CAM_CSI1_0_IPCLKPORT_I_PCLK 0x2040 157162306a36Sopenharmony_ci#define GAT_CAM_CSI1_1_IPCLKPORT_I_ACLK 0x2044 157262306a36Sopenharmony_ci#define GAT_CAM_CSI1_1_IPCLKPORT_I_PCLK 0x2048 157362306a36Sopenharmony_ci#define GAT_CAM_CSI1_2_IPCLKPORT_I_ACLK 0x204c 157462306a36Sopenharmony_ci#define GAT_CAM_CSI1_2_IPCLKPORT_I_PCLK 0x2050 157562306a36Sopenharmony_ci#define GAT_CAM_CSI1_3_IPCLKPORT_I_ACLK 0x2054 157662306a36Sopenharmony_ci#define GAT_CAM_CSI1_3_IPCLKPORT_I_PCLK 0x2058 157762306a36Sopenharmony_ci#define GAT_CAM_CSI2_0_IPCLKPORT_I_ACLK 0x205c 157862306a36Sopenharmony_ci#define GAT_CAM_CSI2_0_IPCLKPORT_I_PCLK 0x2060 157962306a36Sopenharmony_ci#define GAT_CAM_CSI2_1_IPCLKPORT_I_ACLK 0x2064 158062306a36Sopenharmony_ci#define GAT_CAM_CSI2_1_IPCLKPORT_I_PCLK 0x2068 158162306a36Sopenharmony_ci#define GAT_CAM_CSI2_2_IPCLKPORT_I_ACLK 0x206c 158262306a36Sopenharmony_ci#define GAT_CAM_CSI2_2_IPCLKPORT_I_PCLK 0x2070 158362306a36Sopenharmony_ci#define GAT_CAM_CSI2_3_IPCLKPORT_I_ACLK 0x2074 158462306a36Sopenharmony_ci#define GAT_CAM_CSI2_3_IPCLKPORT_I_PCLK 0x2078 158562306a36Sopenharmony_ci#define GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_D 0x207c 158662306a36Sopenharmony_ci#define GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_P 0x2080 158762306a36Sopenharmony_ci#define GAT_CAM_SYSREG_CAM_CSI_IPCLKPORT_PCLK 0x2084 158862306a36Sopenharmony_ci#define GAT_CAM_TBU_CAM_CSI_IPCLKPORT_ACLK 0x2088 158962306a36Sopenharmony_ci 159062306a36Sopenharmony_cistatic const unsigned long cam_csi_clk_regs[] __initconst = { 159162306a36Sopenharmony_ci PLL_LOCKTIME_PLL_CAM_CSI, 159262306a36Sopenharmony_ci PLL_CON0_PLL_CAM_CSI, 159362306a36Sopenharmony_ci DIV_CAM_CSI0_ACLK, 159462306a36Sopenharmony_ci DIV_CAM_CSI1_ACLK, 159562306a36Sopenharmony_ci DIV_CAM_CSI2_ACLK, 159662306a36Sopenharmony_ci DIV_CAM_CSI_BUSD, 159762306a36Sopenharmony_ci DIV_CAM_CSI_BUSP, 159862306a36Sopenharmony_ci GAT_CAM_CSI_CMU_CAM_CSI_IPCLKPORT_PCLK, 159962306a36Sopenharmony_ci GAT_CAM_AXI2APB_CAM_CSI_IPCLKPORT_ACLK, 160062306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI0, 160162306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI1, 160262306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI2, 160362306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_SOC_NOC, 160462306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__NOC, 160562306a36Sopenharmony_ci GAT_CAM_CSI0_0_IPCLKPORT_I_ACLK, 160662306a36Sopenharmony_ci GAT_CAM_CSI0_0_IPCLKPORT_I_PCLK, 160762306a36Sopenharmony_ci GAT_CAM_CSI0_1_IPCLKPORT_I_ACLK, 160862306a36Sopenharmony_ci GAT_CAM_CSI0_1_IPCLKPORT_I_PCLK, 160962306a36Sopenharmony_ci GAT_CAM_CSI0_2_IPCLKPORT_I_ACLK, 161062306a36Sopenharmony_ci GAT_CAM_CSI0_2_IPCLKPORT_I_PCLK, 161162306a36Sopenharmony_ci GAT_CAM_CSI0_3_IPCLKPORT_I_ACLK, 161262306a36Sopenharmony_ci GAT_CAM_CSI0_3_IPCLKPORT_I_PCLK, 161362306a36Sopenharmony_ci GAT_CAM_CSI1_0_IPCLKPORT_I_ACLK, 161462306a36Sopenharmony_ci GAT_CAM_CSI1_0_IPCLKPORT_I_PCLK, 161562306a36Sopenharmony_ci GAT_CAM_CSI1_1_IPCLKPORT_I_ACLK, 161662306a36Sopenharmony_ci GAT_CAM_CSI1_1_IPCLKPORT_I_PCLK, 161762306a36Sopenharmony_ci GAT_CAM_CSI1_2_IPCLKPORT_I_ACLK, 161862306a36Sopenharmony_ci GAT_CAM_CSI1_2_IPCLKPORT_I_PCLK, 161962306a36Sopenharmony_ci GAT_CAM_CSI1_3_IPCLKPORT_I_ACLK, 162062306a36Sopenharmony_ci GAT_CAM_CSI1_3_IPCLKPORT_I_PCLK, 162162306a36Sopenharmony_ci GAT_CAM_CSI2_0_IPCLKPORT_I_ACLK, 162262306a36Sopenharmony_ci GAT_CAM_CSI2_0_IPCLKPORT_I_PCLK, 162362306a36Sopenharmony_ci GAT_CAM_CSI2_1_IPCLKPORT_I_ACLK, 162462306a36Sopenharmony_ci GAT_CAM_CSI2_1_IPCLKPORT_I_PCLK, 162562306a36Sopenharmony_ci GAT_CAM_CSI2_2_IPCLKPORT_I_ACLK, 162662306a36Sopenharmony_ci GAT_CAM_CSI2_2_IPCLKPORT_I_PCLK, 162762306a36Sopenharmony_ci GAT_CAM_CSI2_3_IPCLKPORT_I_ACLK, 162862306a36Sopenharmony_ci GAT_CAM_CSI2_3_IPCLKPORT_I_PCLK, 162962306a36Sopenharmony_ci GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_D, 163062306a36Sopenharmony_ci GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_P, 163162306a36Sopenharmony_ci GAT_CAM_SYSREG_CAM_CSI_IPCLKPORT_PCLK, 163262306a36Sopenharmony_ci GAT_CAM_TBU_CAM_CSI_IPCLKPORT_ACLK, 163362306a36Sopenharmony_ci}; 163462306a36Sopenharmony_ci 163562306a36Sopenharmony_cistatic const struct samsung_pll_rate_table pll_cam_csi_rate_table[] __initconst = { 163662306a36Sopenharmony_ci PLL_35XX_RATE(24 * MHZ, 1066000000U, 533, 12, 0), 163762306a36Sopenharmony_ci}; 163862306a36Sopenharmony_ci 163962306a36Sopenharmony_cistatic const struct samsung_pll_clock cam_csi_pll_clks[] __initconst = { 164062306a36Sopenharmony_ci PLL(pll_142xx, 0, "fout_pll_cam_csi", "fin_pll", 164162306a36Sopenharmony_ci PLL_LOCKTIME_PLL_CAM_CSI, PLL_CON0_PLL_CAM_CSI, pll_cam_csi_rate_table), 164262306a36Sopenharmony_ci}; 164362306a36Sopenharmony_ci 164462306a36Sopenharmony_ciPNAME(mout_cam_csi_pll_p) = { "fin_pll", "fout_pll_cam_csi" }; 164562306a36Sopenharmony_ci 164662306a36Sopenharmony_cistatic const struct samsung_mux_clock cam_csi_mux_clks[] __initconst = { 164762306a36Sopenharmony_ci MUX(0, "mout_cam_csi_pll", mout_cam_csi_pll_p, PLL_CON0_PLL_CAM_CSI, 4, 1), 164862306a36Sopenharmony_ci}; 164962306a36Sopenharmony_ci 165062306a36Sopenharmony_cistatic const struct samsung_div_clock cam_csi_div_clks[] __initconst = { 165162306a36Sopenharmony_ci DIV(0, "dout_cam_csi0_aclk", "mout_cam_csi_pll", DIV_CAM_CSI0_ACLK, 0, 4), 165262306a36Sopenharmony_ci DIV(0, "dout_cam_csi1_aclk", "mout_cam_csi_pll", DIV_CAM_CSI1_ACLK, 0, 4), 165362306a36Sopenharmony_ci DIV(0, "dout_cam_csi2_aclk", "mout_cam_csi_pll", DIV_CAM_CSI2_ACLK, 0, 4), 165462306a36Sopenharmony_ci DIV(0, "dout_cam_csi_busd", "mout_cam_csi_pll", DIV_CAM_CSI_BUSD, 0, 4), 165562306a36Sopenharmony_ci DIV(0, "dout_cam_csi_busp", "mout_cam_csi_pll", DIV_CAM_CSI_BUSP, 0, 4), 165662306a36Sopenharmony_ci}; 165762306a36Sopenharmony_ci 165862306a36Sopenharmony_cistatic const struct samsung_gate_clock cam_csi_gate_clks[] __initconst = { 165962306a36Sopenharmony_ci GATE(0, "cam_csi_cmu_cam_csi_ipclkport_pclk", "dout_cam_csi_busp", 166062306a36Sopenharmony_ci GAT_CAM_CSI_CMU_CAM_CSI_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 166162306a36Sopenharmony_ci GATE(0, "cam_axi2apb_cam_csi_ipclkport_aclk", "dout_cam_csi_busp", 166262306a36Sopenharmony_ci GAT_CAM_AXI2APB_CAM_CSI_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 166362306a36Sopenharmony_ci GATE(0, "cam_csi_bus_d_cam_csi_ipclkport_clk__system__clk_csi0", "dout_cam_csi0_aclk", 166462306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI0, 21, CLK_IGNORE_UNUSED, 0), 166562306a36Sopenharmony_ci GATE(0, "cam_csi_bus_d_cam_csi_ipclkport_clk__system__clk_csi1", "dout_cam_csi1_aclk", 166662306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI1, 21, CLK_IGNORE_UNUSED, 0), 166762306a36Sopenharmony_ci GATE(0, "cam_csi_bus_d_cam_csi_ipclkport_clk__system__clk_csi2", "dout_cam_csi2_aclk", 166862306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_CSI2, 21, CLK_IGNORE_UNUSED, 0), 166962306a36Sopenharmony_ci GATE(0, "cam_csi_bus_d_cam_csi_ipclkport_clk__system__clk_soc_noc", "dout_cam_csi_busd", 167062306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__CLK_SOC_NOC, 21, 167162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 167262306a36Sopenharmony_ci GATE(0, "cam_csi_bus_d_cam_csi_ipclkport_clk__system__noc", "dout_cam_csi_busd", 167362306a36Sopenharmony_ci GAT_CAM_CSI_BUS_D_CAM_CSI_IPCLKPORT_CLK__SYSTEM__NOC, 21, CLK_IGNORE_UNUSED, 0), 167462306a36Sopenharmony_ci GATE(CAM_CSI0_0_IPCLKPORT_I_ACLK, "cam_csi0_0_ipclkport_i_aclk", "dout_cam_csi0_aclk", 167562306a36Sopenharmony_ci GAT_CAM_CSI0_0_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 167662306a36Sopenharmony_ci GATE(0, "cam_csi0_0_ipclkport_i_pclk", "dout_cam_csi_busp", 167762306a36Sopenharmony_ci GAT_CAM_CSI0_0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 167862306a36Sopenharmony_ci GATE(CAM_CSI0_1_IPCLKPORT_I_ACLK, "cam_csi0_1_ipclkport_i_aclk", "dout_cam_csi0_aclk", 167962306a36Sopenharmony_ci GAT_CAM_CSI0_1_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 168062306a36Sopenharmony_ci GATE(0, "cam_csi0_1_ipclkport_i_pclk", "dout_cam_csi_busp", 168162306a36Sopenharmony_ci GAT_CAM_CSI0_1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 168262306a36Sopenharmony_ci GATE(CAM_CSI0_2_IPCLKPORT_I_ACLK, "cam_csi0_2_ipclkport_i_aclk", "dout_cam_csi0_aclk", 168362306a36Sopenharmony_ci GAT_CAM_CSI0_2_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 168462306a36Sopenharmony_ci GATE(0, "cam_csi0_2_ipclkport_i_pclk", "dout_cam_csi_busp", 168562306a36Sopenharmony_ci GAT_CAM_CSI0_2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 168662306a36Sopenharmony_ci GATE(CAM_CSI0_3_IPCLKPORT_I_ACLK, "cam_csi0_3_ipclkport_i_aclk", "dout_cam_csi0_aclk", 168762306a36Sopenharmony_ci GAT_CAM_CSI0_3_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 168862306a36Sopenharmony_ci GATE(0, "cam_csi0_3_ipclkport_i_pclk", "dout_cam_csi_busp", 168962306a36Sopenharmony_ci GAT_CAM_CSI0_3_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 169062306a36Sopenharmony_ci GATE(CAM_CSI1_0_IPCLKPORT_I_ACLK, "cam_csi1_0_ipclkport_i_aclk", "dout_cam_csi1_aclk", 169162306a36Sopenharmony_ci GAT_CAM_CSI1_0_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 169262306a36Sopenharmony_ci GATE(0, "cam_csi1_0_ipclkport_i_pclk", "dout_cam_csi_busp", 169362306a36Sopenharmony_ci GAT_CAM_CSI1_0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 169462306a36Sopenharmony_ci GATE(CAM_CSI1_1_IPCLKPORT_I_ACLK, "cam_csi1_1_ipclkport_i_aclk", "dout_cam_csi1_aclk", 169562306a36Sopenharmony_ci GAT_CAM_CSI1_1_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 169662306a36Sopenharmony_ci GATE(0, "cam_csi1_1_ipclkport_i_pclk", "dout_cam_csi_busp", 169762306a36Sopenharmony_ci GAT_CAM_CSI1_1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 169862306a36Sopenharmony_ci GATE(CAM_CSI1_2_IPCLKPORT_I_ACLK, "cam_csi1_2_ipclkport_i_aclk", "dout_cam_csi1_aclk", 169962306a36Sopenharmony_ci GAT_CAM_CSI1_2_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 170062306a36Sopenharmony_ci GATE(0, "cam_csi1_2_ipclkport_i_pclk", "dout_cam_csi_busp", 170162306a36Sopenharmony_ci GAT_CAM_CSI1_2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 170262306a36Sopenharmony_ci GATE(CAM_CSI1_3_IPCLKPORT_I_ACLK, "cam_csi1_3_ipclkport_i_aclk", "dout_cam_csi1_aclk", 170362306a36Sopenharmony_ci GAT_CAM_CSI1_3_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 170462306a36Sopenharmony_ci GATE(0, "cam_csi1_3_ipclkport_i_pclk", "dout_cam_csi_busp", 170562306a36Sopenharmony_ci GAT_CAM_CSI1_3_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 170662306a36Sopenharmony_ci GATE(CAM_CSI2_0_IPCLKPORT_I_ACLK, "cam_csi2_0_ipclkport_i_aclk", "dout_cam_csi2_aclk", 170762306a36Sopenharmony_ci GAT_CAM_CSI2_0_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 170862306a36Sopenharmony_ci GATE(0, "cam_csi2_0_ipclkport_i_pclk", "dout_cam_csi_busp", 170962306a36Sopenharmony_ci GAT_CAM_CSI2_0_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 171062306a36Sopenharmony_ci GATE(CAM_CSI2_1_IPCLKPORT_I_ACLK, "cam_csi2_1_ipclkport_i_aclk", "dout_cam_csi2_aclk", 171162306a36Sopenharmony_ci GAT_CAM_CSI2_1_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 171262306a36Sopenharmony_ci GATE(0, "cam_csi2_1_ipclkport_i_pclk", "dout_cam_csi_busp", 171362306a36Sopenharmony_ci GAT_CAM_CSI2_1_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 171462306a36Sopenharmony_ci GATE(CAM_CSI2_2_IPCLKPORT_I_ACLK, "cam_csi2_2_ipclkport_i_aclk", "dout_cam_csi2_aclk", 171562306a36Sopenharmony_ci GAT_CAM_CSI2_2_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 171662306a36Sopenharmony_ci GATE(0, "cam_csi2_2_ipclkport_i_pclk", "dout_cam_csi_busp", 171762306a36Sopenharmony_ci GAT_CAM_CSI2_2_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 171862306a36Sopenharmony_ci GATE(CAM_CSI2_3_IPCLKPORT_I_ACLK, "cam_csi2_3_ipclkport_i_aclk", "dout_cam_csi2_aclk", 171962306a36Sopenharmony_ci GAT_CAM_CSI2_3_IPCLKPORT_I_ACLK, 21, CLK_IGNORE_UNUSED, 0), 172062306a36Sopenharmony_ci GATE(0, "cam_csi2_3_ipclkport_i_pclk", "dout_cam_csi_busp", 172162306a36Sopenharmony_ci GAT_CAM_CSI2_3_IPCLKPORT_I_PCLK, 21, CLK_IGNORE_UNUSED, 0), 172262306a36Sopenharmony_ci GATE(0, "cam_ns_brdg_cam_csi_ipclkport_clk__psoc_cam_csi__clk_cam_csi_d", 172362306a36Sopenharmony_ci "dout_cam_csi_busd", 172462306a36Sopenharmony_ci GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_D, 21, 172562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 172662306a36Sopenharmony_ci GATE(0, "cam_ns_brdg_cam_csi_ipclkport_clk__psoc_cam_csi__clk_cam_csi_p", 172762306a36Sopenharmony_ci "dout_cam_csi_busp", 172862306a36Sopenharmony_ci GAT_CAM_NS_BRDG_CAM_CSI_IPCLKPORT_CLK__PSOC_CAM_CSI__CLK_CAM_CSI_P, 21, 172962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, 0), 173062306a36Sopenharmony_ci GATE(0, "cam_sysreg_cam_csi_ipclkport_pclk", "dout_cam_csi_busp", 173162306a36Sopenharmony_ci GAT_CAM_SYSREG_CAM_CSI_IPCLKPORT_PCLK, 21, CLK_IGNORE_UNUSED, 0), 173262306a36Sopenharmony_ci GATE(0, "cam_tbu_cam_csi_ipclkport_aclk", "dout_cam_csi_busd", 173362306a36Sopenharmony_ci GAT_CAM_TBU_CAM_CSI_IPCLKPORT_ACLK, 21, CLK_IGNORE_UNUSED, 0), 173462306a36Sopenharmony_ci}; 173562306a36Sopenharmony_ci 173662306a36Sopenharmony_cistatic const struct samsung_cmu_info cam_csi_cmu_info __initconst = { 173762306a36Sopenharmony_ci .pll_clks = cam_csi_pll_clks, 173862306a36Sopenharmony_ci .nr_pll_clks = ARRAY_SIZE(cam_csi_pll_clks), 173962306a36Sopenharmony_ci .mux_clks = cam_csi_mux_clks, 174062306a36Sopenharmony_ci .nr_mux_clks = ARRAY_SIZE(cam_csi_mux_clks), 174162306a36Sopenharmony_ci .div_clks = cam_csi_div_clks, 174262306a36Sopenharmony_ci .nr_div_clks = ARRAY_SIZE(cam_csi_div_clks), 174362306a36Sopenharmony_ci .gate_clks = cam_csi_gate_clks, 174462306a36Sopenharmony_ci .nr_gate_clks = ARRAY_SIZE(cam_csi_gate_clks), 174562306a36Sopenharmony_ci .nr_clk_ids = CAM_CSI_NR_CLK, 174662306a36Sopenharmony_ci .clk_regs = cam_csi_clk_regs, 174762306a36Sopenharmony_ci .nr_clk_regs = ARRAY_SIZE(cam_csi_clk_regs), 174862306a36Sopenharmony_ci}; 174962306a36Sopenharmony_ci 175062306a36Sopenharmony_ci/** 175162306a36Sopenharmony_ci * fsd_cmu_probe - Probe function for FSD platform clocks 175262306a36Sopenharmony_ci * @pdev: Pointer to platform device 175362306a36Sopenharmony_ci * 175462306a36Sopenharmony_ci * Configure clock hierarchy for clock domains of FSD platform 175562306a36Sopenharmony_ci */ 175662306a36Sopenharmony_cistatic int __init fsd_cmu_probe(struct platform_device *pdev) 175762306a36Sopenharmony_ci{ 175862306a36Sopenharmony_ci const struct samsung_cmu_info *info; 175962306a36Sopenharmony_ci struct device *dev = &pdev->dev; 176062306a36Sopenharmony_ci 176162306a36Sopenharmony_ci info = of_device_get_match_data(dev); 176262306a36Sopenharmony_ci exynos_arm64_register_cmu(dev, dev->of_node, info); 176362306a36Sopenharmony_ci 176462306a36Sopenharmony_ci return 0; 176562306a36Sopenharmony_ci} 176662306a36Sopenharmony_ci 176762306a36Sopenharmony_ci/* CMUs which belong to Power Domains and need runtime PM to be implemented */ 176862306a36Sopenharmony_cistatic const struct of_device_id fsd_cmu_of_match[] = { 176962306a36Sopenharmony_ci { 177062306a36Sopenharmony_ci .compatible = "tesla,fsd-clock-peric", 177162306a36Sopenharmony_ci .data = &peric_cmu_info, 177262306a36Sopenharmony_ci }, { 177362306a36Sopenharmony_ci .compatible = "tesla,fsd-clock-fsys0", 177462306a36Sopenharmony_ci .data = &fsys0_cmu_info, 177562306a36Sopenharmony_ci }, { 177662306a36Sopenharmony_ci .compatible = "tesla,fsd-clock-fsys1", 177762306a36Sopenharmony_ci .data = &fsys1_cmu_info, 177862306a36Sopenharmony_ci }, { 177962306a36Sopenharmony_ci .compatible = "tesla,fsd-clock-mfc", 178062306a36Sopenharmony_ci .data = &mfc_cmu_info, 178162306a36Sopenharmony_ci }, { 178262306a36Sopenharmony_ci .compatible = "tesla,fsd-clock-cam_csi", 178362306a36Sopenharmony_ci .data = &cam_csi_cmu_info, 178462306a36Sopenharmony_ci }, { 178562306a36Sopenharmony_ci }, 178662306a36Sopenharmony_ci}; 178762306a36Sopenharmony_ci 178862306a36Sopenharmony_cistatic struct platform_driver fsd_cmu_driver __refdata = { 178962306a36Sopenharmony_ci .driver = { 179062306a36Sopenharmony_ci .name = "fsd-cmu", 179162306a36Sopenharmony_ci .of_match_table = fsd_cmu_of_match, 179262306a36Sopenharmony_ci .suppress_bind_attrs = true, 179362306a36Sopenharmony_ci }, 179462306a36Sopenharmony_ci .probe = fsd_cmu_probe, 179562306a36Sopenharmony_ci}; 179662306a36Sopenharmony_ci 179762306a36Sopenharmony_cistatic int __init fsd_cmu_init(void) 179862306a36Sopenharmony_ci{ 179962306a36Sopenharmony_ci return platform_driver_register(&fsd_cmu_driver); 180062306a36Sopenharmony_ci} 180162306a36Sopenharmony_cicore_initcall(fsd_cmu_init); 1802