162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Unisoc UMS512 clock driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2022 Unisoc, Inc. 662306a36Sopenharmony_ci * Author: Xiaolong Zhang <xiaolong.zhang@unisoc.com> 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#include <linux/clk-provider.h> 1062306a36Sopenharmony_ci#include <linux/err.h> 1162306a36Sopenharmony_ci#include <linux/io.h> 1262306a36Sopenharmony_ci#include <linux/mod_devicetable.h> 1362306a36Sopenharmony_ci#include <linux/module.h> 1462306a36Sopenharmony_ci#include <linux/platform_device.h> 1562306a36Sopenharmony_ci#include <linux/slab.h> 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci#include <dt-bindings/clock/sprd,ums512-clk.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "common.h" 2062306a36Sopenharmony_ci#include "composite.h" 2162306a36Sopenharmony_ci#include "div.h" 2262306a36Sopenharmony_ci#include "gate.h" 2362306a36Sopenharmony_ci#include "mux.h" 2462306a36Sopenharmony_ci#include "pll.h" 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci#define UMS512_MUX_FLAG \ 2762306a36Sopenharmony_ci (CLK_GET_RATE_NOCACHE | CLK_SET_RATE_NO_REPARENT) 2862306a36Sopenharmony_ci 2962306a36Sopenharmony_ci/* pll gate clock */ 3062306a36Sopenharmony_ci/* some pll clocks configure CLK_IGNORE_UNUSED because hw dvfs does not call 3162306a36Sopenharmony_ci * clock interface. hw dvfs can not gate the pll clock. 3262306a36Sopenharmony_ci */ 3362306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_26m_aud, "clk-26m-aud", "ext-26m", 1, 1, 0); 3462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_13m, "clk-13m", "ext-26m", 2, 1, 0); 3562306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_6m5, "clk-6m5", "ext-26m", 4, 1, 0); 3662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_4m3, "clk-4m3", "ext-26m", 6, 1, 0); 3762306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_2m, "clk-2m", "ext-26m", 13, 1, 0); 3862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_1m, "clk-1m", "ext-26m", 26, 1, 0); 3962306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(clk_250k, "clk-250k", "ext-26m", 104, 1, 0); 4062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(rco_25m, "rco-25m", "rco-100m", 4, 1, 0); 4162306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(rco_4m, "rco-4m", "rco-100m", 25, 1, 0); 4262306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_FW_NAME(rco_2m, "rco-2m", "rco-100m", 50, 1, 0); 4362306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(isppll_gate, "isppll-gate", "ext-26m", 0x8c, 4462306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 4562306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(dpll0_gate, "dpll0-gate", "ext-26m", 0x98, 4662306a36Sopenharmony_ci 0x1000, BIT(0), 0, 0, 240); 4762306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(dpll1_gate, "dpll1-gate", "ext-26m", 0x9c, 4862306a36Sopenharmony_ci 0x1000, BIT(0), 0, 0, 240); 4962306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(lpll_gate, "lpll-gate", "ext-26m", 0xa0, 5062306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 5162306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(twpll_gate, "twpll-gate", "ext-26m", 0xa4, 5262306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 5362306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(gpll_gate, "gpll-gate", "ext-26m", 0xa8, 5462306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 5562306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(rpll_gate, "rpll-gate", "ext-26m", 0xac, 5662306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 5762306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(cppll_gate, "cppll-gate", "ext-26m", 0xe4, 5862306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 5962306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(mpll0_gate, "mpll0-gate", "ext-26m", 0x190, 6062306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 6162306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(mpll1_gate, "mpll1-gate", "ext-26m", 0x194, 6262306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 6362306a36Sopenharmony_cistatic SPRD_PLL_SC_GATE_CLK_FW_NAME(mpll2_gate, "mpll2-gate", "ext-26m", 0x198, 6462306a36Sopenharmony_ci 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0, 240); 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_pmu_gate_clks[] = { 6762306a36Sopenharmony_ci /* address base is 0x327e0000 */ 6862306a36Sopenharmony_ci &isppll_gate.common, 6962306a36Sopenharmony_ci &dpll0_gate.common, 7062306a36Sopenharmony_ci &dpll1_gate.common, 7162306a36Sopenharmony_ci &lpll_gate.common, 7262306a36Sopenharmony_ci &twpll_gate.common, 7362306a36Sopenharmony_ci &gpll_gate.common, 7462306a36Sopenharmony_ci &rpll_gate.common, 7562306a36Sopenharmony_ci &cppll_gate.common, 7662306a36Sopenharmony_ci &mpll0_gate.common, 7762306a36Sopenharmony_ci &mpll1_gate.common, 7862306a36Sopenharmony_ci &mpll2_gate.common, 7962306a36Sopenharmony_ci}; 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_pmu_gate_hws = { 8262306a36Sopenharmony_ci .hws = { 8362306a36Sopenharmony_ci [CLK_26M_AUD] = &clk_26m_aud.hw, 8462306a36Sopenharmony_ci [CLK_13M] = &clk_13m.hw, 8562306a36Sopenharmony_ci [CLK_6M5] = &clk_6m5.hw, 8662306a36Sopenharmony_ci [CLK_4M3] = &clk_4m3.hw, 8762306a36Sopenharmony_ci [CLK_2M] = &clk_2m.hw, 8862306a36Sopenharmony_ci [CLK_1M] = &clk_1m.hw, 8962306a36Sopenharmony_ci [CLK_250K] = &clk_250k.hw, 9062306a36Sopenharmony_ci [CLK_RCO_25M] = &rco_25m.hw, 9162306a36Sopenharmony_ci [CLK_RCO_4M] = &rco_4m.hw, 9262306a36Sopenharmony_ci [CLK_RCO_2M] = &rco_2m.hw, 9362306a36Sopenharmony_ci [CLK_ISPPLL_GATE] = &isppll_gate.common.hw, 9462306a36Sopenharmony_ci [CLK_DPLL0_GATE] = &dpll0_gate.common.hw, 9562306a36Sopenharmony_ci [CLK_DPLL1_GATE] = &dpll1_gate.common.hw, 9662306a36Sopenharmony_ci [CLK_LPLL_GATE] = &lpll_gate.common.hw, 9762306a36Sopenharmony_ci [CLK_TWPLL_GATE] = &twpll_gate.common.hw, 9862306a36Sopenharmony_ci [CLK_GPLL_GATE] = &gpll_gate.common.hw, 9962306a36Sopenharmony_ci [CLK_RPLL_GATE] = &rpll_gate.common.hw, 10062306a36Sopenharmony_ci [CLK_CPPLL_GATE] = &cppll_gate.common.hw, 10162306a36Sopenharmony_ci [CLK_MPLL0_GATE] = &mpll0_gate.common.hw, 10262306a36Sopenharmony_ci [CLK_MPLL1_GATE] = &mpll1_gate.common.hw, 10362306a36Sopenharmony_ci [CLK_MPLL2_GATE] = &mpll2_gate.common.hw, 10462306a36Sopenharmony_ci }, 10562306a36Sopenharmony_ci .num = CLK_PMU_GATE_NUM, 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_pmu_gate_desc = { 10962306a36Sopenharmony_ci .clk_clks = ums512_pmu_gate_clks, 11062306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_pmu_gate_clks), 11162306a36Sopenharmony_ci .hw_clks = &ums512_pmu_gate_hws, 11262306a36Sopenharmony_ci}; 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci/* pll clock at g0 */ 11562306a36Sopenharmony_cistatic const u64 itable_dpll0[7] = { 6, 0, 0, 11662306a36Sopenharmony_ci 1173000000ULL, 1475000000ULL, 11762306a36Sopenharmony_ci 1855000000ULL, 1866000000ULL }; 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_cistatic struct clk_bit_field f_dpll0[PLL_FACT_MAX] = { 12062306a36Sopenharmony_ci { .shift = 18, .width = 1 }, /* lock_done */ 12162306a36Sopenharmony_ci { .shift = 0, .width = 1 }, /* div_s */ 12262306a36Sopenharmony_ci { .shift = 67, .width = 1 }, /* mod_en */ 12362306a36Sopenharmony_ci { .shift = 1, .width = 1 }, /* sdm_en */ 12462306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* refin */ 12562306a36Sopenharmony_ci { .shift = 4, .width = 3 }, /* icp */ 12662306a36Sopenharmony_ci { .shift = 7, .width = 11 }, /* n */ 12762306a36Sopenharmony_ci { .shift = 55, .width = 7 }, /* nint */ 12862306a36Sopenharmony_ci { .shift = 32, .width = 23}, /* kint */ 12962306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* prediv */ 13062306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* postdiv */ 13162306a36Sopenharmony_ci}; 13262306a36Sopenharmony_cistatic SPRD_PLL_HW(dpll0, "dpll0", &dpll0_gate.common.hw, 0x4, 3, 13362306a36Sopenharmony_ci itable_dpll0, f_dpll0, 240, 1000, 1000, 0, 0); 13462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(dpll0_58m31, "dpll0-58m31", &dpll0.common.hw, 13562306a36Sopenharmony_ci 32, 1, 0); 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_g0_pll_clks[] = { 13862306a36Sopenharmony_ci /* address base is 0x32390000 */ 13962306a36Sopenharmony_ci &dpll0.common, 14062306a36Sopenharmony_ci}; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_g0_pll_hws = { 14362306a36Sopenharmony_ci .hws = { 14462306a36Sopenharmony_ci [CLK_DPLL0] = &dpll0.common.hw, 14562306a36Sopenharmony_ci [CLK_DPLL0_58M31] = &dpll0_58m31.hw, 14662306a36Sopenharmony_ci }, 14762306a36Sopenharmony_ci .num = CLK_ANLG_PHY_G0_NUM, 14862306a36Sopenharmony_ci}; 14962306a36Sopenharmony_ci 15062306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_g0_pll_desc = { 15162306a36Sopenharmony_ci .clk_clks = ums512_g0_pll_clks, 15262306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_g0_pll_clks), 15362306a36Sopenharmony_ci .hw_clks = &ums512_g0_pll_hws, 15462306a36Sopenharmony_ci}; 15562306a36Sopenharmony_ci 15662306a36Sopenharmony_ci/* pll clock at g2 */ 15762306a36Sopenharmony_cistatic const u64 itable_mpll[8] = { 7, 0, 15862306a36Sopenharmony_ci 1400000000ULL, 1600000000ULL, 15962306a36Sopenharmony_ci 1800000000ULL, 2000000000ULL, 16062306a36Sopenharmony_ci 2200000000ULL, 2500000000ULL }; 16162306a36Sopenharmony_ci 16262306a36Sopenharmony_cistatic struct clk_bit_field f_mpll[PLL_FACT_MAX] = { 16362306a36Sopenharmony_ci { .shift = 17, .width = 1 }, /* lock_done */ 16462306a36Sopenharmony_ci { .shift = 0, .width = 1 }, /* div_s */ 16562306a36Sopenharmony_ci { .shift = 67, .width = 1 }, /* mod_en */ 16662306a36Sopenharmony_ci { .shift = 1, .width = 1 }, /* sdm_en */ 16762306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* refin */ 16862306a36Sopenharmony_ci { .shift = 2, .width = 3 }, /* icp */ 16962306a36Sopenharmony_ci { .shift = 5, .width = 11 }, /* n */ 17062306a36Sopenharmony_ci { .shift = 55, .width = 7 }, /* nint */ 17162306a36Sopenharmony_ci { .shift = 32, .width = 23}, /* kint */ 17262306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* prediv */ 17362306a36Sopenharmony_ci { .shift = 77, .width = 1 }, /* postdiv */ 17462306a36Sopenharmony_ci}; 17562306a36Sopenharmony_cistatic SPRD_PLL_HW(mpll1, "mpll1", &mpll1_gate.common.hw, 0x0, 3, 17662306a36Sopenharmony_ci itable_mpll, f_mpll, 240, 1000, 1000, 1, 1200000000); 17762306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(mpll1_63m38, "mpll1-63m38", &mpll1.common.hw, 17862306a36Sopenharmony_ci 32, 1, 0); 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_g2_pll_clks[] = { 18162306a36Sopenharmony_ci /* address base is 0x323B0000 */ 18262306a36Sopenharmony_ci &mpll1.common, 18362306a36Sopenharmony_ci}; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_g2_pll_hws = { 18662306a36Sopenharmony_ci .hws = { 18762306a36Sopenharmony_ci [CLK_MPLL1] = &mpll1.common.hw, 18862306a36Sopenharmony_ci [CLK_MPLL1_63M38] = &mpll1_63m38.hw, 18962306a36Sopenharmony_ci }, 19062306a36Sopenharmony_ci .num = CLK_ANLG_PHY_G2_NUM, 19162306a36Sopenharmony_ci}; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_g2_pll_desc = { 19462306a36Sopenharmony_ci .clk_clks = ums512_g2_pll_clks, 19562306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_g2_pll_clks), 19662306a36Sopenharmony_ci .hw_clks = &ums512_g2_pll_hws, 19762306a36Sopenharmony_ci}; 19862306a36Sopenharmony_ci 19962306a36Sopenharmony_ci/* pll at g3 */ 20062306a36Sopenharmony_cistatic const u64 itable[8] = { 7, 0, 0, 20162306a36Sopenharmony_ci 900000000ULL, 1100000000ULL, 20262306a36Sopenharmony_ci 1300000000ULL, 1500000000ULL, 20362306a36Sopenharmony_ci 1600000000ULL }; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_cistatic struct clk_bit_field f_pll[PLL_FACT_MAX] = { 20662306a36Sopenharmony_ci { .shift = 18, .width = 1 }, /* lock_done */ 20762306a36Sopenharmony_ci { .shift = 0, .width = 1 }, /* div_s */ 20862306a36Sopenharmony_ci { .shift = 67, .width = 1 }, /* mod_en */ 20962306a36Sopenharmony_ci { .shift = 1, .width = 1 }, /* sdm_en */ 21062306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* refin */ 21162306a36Sopenharmony_ci { .shift = 2, .width = 3 }, /* icp */ 21262306a36Sopenharmony_ci { .shift = 5, .width = 11 }, /* n */ 21362306a36Sopenharmony_ci { .shift = 55, .width = 7 }, /* nint */ 21462306a36Sopenharmony_ci { .shift = 32, .width = 23}, /* kint */ 21562306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* prediv */ 21662306a36Sopenharmony_ci { .shift = 77, .width = 1 }, /* postdiv */ 21762306a36Sopenharmony_ci}; 21862306a36Sopenharmony_ci 21962306a36Sopenharmony_cistatic SPRD_PLL_FW_NAME(rpll, "rpll", "ext-26m", 0x0, 3, 22062306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(audio_gate, "audio-gate", "ext-26m", 0x24, 22362306a36Sopenharmony_ci 0x1000, BIT(1), CLK_IGNORE_UNUSED, 0); 22462306a36Sopenharmony_ci 22562306a36Sopenharmony_cistatic struct clk_bit_field f_mpll2[PLL_FACT_MAX] = { 22662306a36Sopenharmony_ci { .shift = 16, .width = 1 }, /* lock_done */ 22762306a36Sopenharmony_ci { .shift = 0, .width = 1 }, /* div_s */ 22862306a36Sopenharmony_ci { .shift = 67, .width = 1 }, /* mod_en */ 22962306a36Sopenharmony_ci { .shift = 1, .width = 1 }, /* sdm_en */ 23062306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* refin */ 23162306a36Sopenharmony_ci { .shift = 2, .width = 3 }, /* icp */ 23262306a36Sopenharmony_ci { .shift = 5, .width = 11 }, /* n */ 23362306a36Sopenharmony_ci { .shift = 55, .width = 7 }, /* nint */ 23462306a36Sopenharmony_ci { .shift = 32, .width = 23}, /* kint */ 23562306a36Sopenharmony_ci { .shift = 0, .width = 0 }, /* prediv */ 23662306a36Sopenharmony_ci { .shift = 77, .width = 1 }, /* postdiv */ 23762306a36Sopenharmony_ci}; 23862306a36Sopenharmony_cistatic SPRD_PLL_HW(mpll0, "mpll0", &mpll0_gate.common.hw, 0x54, 3, 23962306a36Sopenharmony_ci itable_mpll, f_mpll, 240, 1000, 1000, 1, 1200000000); 24062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(mpll0_56m88, "mpll0-56m88", &mpll0.common.hw, 24162306a36Sopenharmony_ci 32, 1, 0); 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_cistatic const u64 itable_mpll2[6] = { 5, 24462306a36Sopenharmony_ci 1200000000ULL, 1400000000ULL, 24562306a36Sopenharmony_ci 1600000000ULL, 1800000000ULL, 24662306a36Sopenharmony_ci 2000000000ULL }; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_cistatic SPRD_PLL_HW(mpll2, "mpll2", &mpll2_gate.common.hw, 0x9c, 3, 24962306a36Sopenharmony_ci itable_mpll2, f_mpll2, 240, 1000, 1000, 1, 1000000000); 25062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(mpll2_47m13, "mpll2-47m13", &mpll2.common.hw, 25162306a36Sopenharmony_ci 32, 1, 0); 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_g3_pll_clks[] = { 25462306a36Sopenharmony_ci /* address base is 0x323c0000 */ 25562306a36Sopenharmony_ci &rpll.common, 25662306a36Sopenharmony_ci &audio_gate.common, 25762306a36Sopenharmony_ci &mpll0.common, 25862306a36Sopenharmony_ci &mpll2.common, 25962306a36Sopenharmony_ci}; 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_g3_pll_hws = { 26262306a36Sopenharmony_ci .hws = { 26362306a36Sopenharmony_ci [CLK_RPLL] = &rpll.common.hw, 26462306a36Sopenharmony_ci [CLK_AUDIO_GATE] = &audio_gate.common.hw, 26562306a36Sopenharmony_ci [CLK_MPLL0] = &mpll0.common.hw, 26662306a36Sopenharmony_ci [CLK_MPLL0_56M88] = &mpll0_56m88.hw, 26762306a36Sopenharmony_ci [CLK_MPLL2] = &mpll2.common.hw, 26862306a36Sopenharmony_ci [CLK_MPLL2_47M13] = &mpll2_47m13.hw, 26962306a36Sopenharmony_ci }, 27062306a36Sopenharmony_ci .num = CLK_ANLG_PHY_G3_NUM, 27162306a36Sopenharmony_ci}; 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_g3_pll_desc = { 27462306a36Sopenharmony_ci .clk_clks = ums512_g3_pll_clks, 27562306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_g3_pll_clks), 27662306a36Sopenharmony_ci .hw_clks = &ums512_g3_pll_hws, 27762306a36Sopenharmony_ci}; 27862306a36Sopenharmony_ci 27962306a36Sopenharmony_ci/* pll clock at gc */ 28062306a36Sopenharmony_cistatic SPRD_PLL_FW_NAME(twpll, "twpll", "ext-26m", 0x0, 3, 28162306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 28262306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_768m, "twpll-768m", &twpll.common.hw, 28362306a36Sopenharmony_ci 2, 1, 0); 28462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_384m, "twpll-384m", &twpll.common.hw, 28562306a36Sopenharmony_ci 4, 1, 0); 28662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_192m, "twpll-192m", &twpll.common.hw, 28762306a36Sopenharmony_ci 8, 1, 0); 28862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_96m, "twpll-96m", &twpll.common.hw, 28962306a36Sopenharmony_ci 16, 1, 0); 29062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_48m, "twpll-48m", &twpll.common.hw, 29162306a36Sopenharmony_ci 32, 1, 0); 29262306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_24m, "twpll-24m", &twpll.common.hw, 29362306a36Sopenharmony_ci 64, 1, 0); 29462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_12m, "twpll-12m", &twpll.common.hw, 29562306a36Sopenharmony_ci 128, 1, 0); 29662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_512m, "twpll-512m", &twpll.common.hw, 29762306a36Sopenharmony_ci 3, 1, 0); 29862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_256m, "twpll-256m", &twpll.common.hw, 29962306a36Sopenharmony_ci 6, 1, 0); 30062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_128m, "twpll-128m", &twpll.common.hw, 30162306a36Sopenharmony_ci 12, 1, 0); 30262306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_64m, "twpll-64m", &twpll.common.hw, 30362306a36Sopenharmony_ci 24, 1, 0); 30462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_307m2, "twpll-307m2", &twpll.common.hw, 30562306a36Sopenharmony_ci 5, 1, 0); 30662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_219m4, "twpll-219m4", &twpll.common.hw, 30762306a36Sopenharmony_ci 7, 1, 0); 30862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_170m6, "twpll-170m6", &twpll.common.hw, 30962306a36Sopenharmony_ci 9, 1, 0); 31062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_153m6, "twpll-153m6", &twpll.common.hw, 31162306a36Sopenharmony_ci 10, 1, 0); 31262306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_76m8, "twpll-76m8", &twpll.common.hw, 31362306a36Sopenharmony_ci 20, 1, 0); 31462306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_51m2, "twpll-51m2", &twpll.common.hw, 31562306a36Sopenharmony_ci 30, 1, 0); 31662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_38m4, "twpll-38m4", &twpll.common.hw, 31762306a36Sopenharmony_ci 40, 1, 0); 31862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_19m2, "twpll-19m2", &twpll.common.hw, 31962306a36Sopenharmony_ci 80, 1, 0); 32062306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(twpll_12m29, "twpll-12m29", &twpll.common.hw, 32162306a36Sopenharmony_ci 125, 1, 0); 32262306a36Sopenharmony_ci 32362306a36Sopenharmony_cistatic SPRD_PLL_FW_NAME(lpll, "lpll", "ext-26m", 0x18, 3, 32462306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 32562306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(lpll_614m4, "lpll-614m4", &lpll.common.hw, 32662306a36Sopenharmony_ci 2, 1, 0); 32762306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(lpll_409m6, "lpll-409m6", &lpll.common.hw, 32862306a36Sopenharmony_ci 3, 1, 0); 32962306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(lpll_245m76, "lpll-245m76", &lpll.common.hw, 33062306a36Sopenharmony_ci 5, 1, 0); 33162306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(lpll_30m72, "lpll-30m72", &lpll.common.hw, 33262306a36Sopenharmony_ci 40, 1, 0); 33362306a36Sopenharmony_ci 33462306a36Sopenharmony_cistatic SPRD_PLL_FW_NAME(isppll, "isppll", "ext-26m", 0x30, 3, 33562306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 33662306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(isppll_468m, "isppll-468m", &isppll.common.hw, 33762306a36Sopenharmony_ci 2, 1, 0); 33862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(isppll_78m, "isppll-78m", &isppll.common.hw, 33962306a36Sopenharmony_ci 12, 1, 0); 34062306a36Sopenharmony_ci 34162306a36Sopenharmony_cistatic SPRD_PLL_HW(gpll, "gpll", &gpll_gate.common.hw, 0x48, 3, 34262306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 34362306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(gpll_40m, "gpll-40m", &gpll.common.hw, 34462306a36Sopenharmony_ci 20, 1, 0); 34562306a36Sopenharmony_ci 34662306a36Sopenharmony_cistatic SPRD_PLL_HW(cppll, "cppll", &cppll_gate.common.hw, 0x60, 3, 34762306a36Sopenharmony_ci itable, f_pll, 240, 1000, 1000, 1, 750000000); 34862306a36Sopenharmony_cistatic CLK_FIXED_FACTOR_HW(cppll_39m32, "cppll-39m32", &cppll.common.hw, 34962306a36Sopenharmony_ci 26, 1, 0); 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_gc_pll_clks[] = { 35262306a36Sopenharmony_ci /* address base is 0x323e0000 */ 35362306a36Sopenharmony_ci &twpll.common, 35462306a36Sopenharmony_ci &lpll.common, 35562306a36Sopenharmony_ci &isppll.common, 35662306a36Sopenharmony_ci &gpll.common, 35762306a36Sopenharmony_ci &cppll.common, 35862306a36Sopenharmony_ci}; 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_gc_pll_hws = { 36162306a36Sopenharmony_ci .hws = { 36262306a36Sopenharmony_ci [CLK_TWPLL] = &twpll.common.hw, 36362306a36Sopenharmony_ci [CLK_TWPLL_768M] = &twpll_768m.hw, 36462306a36Sopenharmony_ci [CLK_TWPLL_384M] = &twpll_384m.hw, 36562306a36Sopenharmony_ci [CLK_TWPLL_192M] = &twpll_192m.hw, 36662306a36Sopenharmony_ci [CLK_TWPLL_96M] = &twpll_96m.hw, 36762306a36Sopenharmony_ci [CLK_TWPLL_48M] = &twpll_48m.hw, 36862306a36Sopenharmony_ci [CLK_TWPLL_24M] = &twpll_24m.hw, 36962306a36Sopenharmony_ci [CLK_TWPLL_12M] = &twpll_12m.hw, 37062306a36Sopenharmony_ci [CLK_TWPLL_512M] = &twpll_512m.hw, 37162306a36Sopenharmony_ci [CLK_TWPLL_256M] = &twpll_256m.hw, 37262306a36Sopenharmony_ci [CLK_TWPLL_128M] = &twpll_128m.hw, 37362306a36Sopenharmony_ci [CLK_TWPLL_64M] = &twpll_64m.hw, 37462306a36Sopenharmony_ci [CLK_TWPLL_307M2] = &twpll_307m2.hw, 37562306a36Sopenharmony_ci [CLK_TWPLL_219M4] = &twpll_219m4.hw, 37662306a36Sopenharmony_ci [CLK_TWPLL_170M6] = &twpll_170m6.hw, 37762306a36Sopenharmony_ci [CLK_TWPLL_153M6] = &twpll_153m6.hw, 37862306a36Sopenharmony_ci [CLK_TWPLL_76M8] = &twpll_76m8.hw, 37962306a36Sopenharmony_ci [CLK_TWPLL_51M2] = &twpll_51m2.hw, 38062306a36Sopenharmony_ci [CLK_TWPLL_38M4] = &twpll_38m4.hw, 38162306a36Sopenharmony_ci [CLK_TWPLL_19M2] = &twpll_19m2.hw, 38262306a36Sopenharmony_ci [CLK_TWPLL_12M29] = &twpll_12m29.hw, 38362306a36Sopenharmony_ci [CLK_LPLL] = &lpll.common.hw, 38462306a36Sopenharmony_ci [CLK_LPLL_614M4] = &lpll_614m4.hw, 38562306a36Sopenharmony_ci [CLK_LPLL_409M6] = &lpll_409m6.hw, 38662306a36Sopenharmony_ci [CLK_LPLL_245M76] = &lpll_245m76.hw, 38762306a36Sopenharmony_ci [CLK_LPLL_30M72] = &lpll_30m72.hw, 38862306a36Sopenharmony_ci [CLK_ISPPLL] = &isppll.common.hw, 38962306a36Sopenharmony_ci [CLK_ISPPLL_468M] = &isppll_468m.hw, 39062306a36Sopenharmony_ci [CLK_ISPPLL_78M] = &isppll_78m.hw, 39162306a36Sopenharmony_ci [CLK_GPLL] = &gpll.common.hw, 39262306a36Sopenharmony_ci [CLK_GPLL_40M] = &gpll_40m.hw, 39362306a36Sopenharmony_ci [CLK_CPPLL] = &cppll.common.hw, 39462306a36Sopenharmony_ci [CLK_CPPLL_39M32] = &cppll_39m32.hw, 39562306a36Sopenharmony_ci }, 39662306a36Sopenharmony_ci .num = CLK_ANLG_PHY_GC_NUM, 39762306a36Sopenharmony_ci}; 39862306a36Sopenharmony_ci 39962306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_gc_pll_desc = { 40062306a36Sopenharmony_ci .clk_clks = ums512_gc_pll_clks, 40162306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_gc_pll_clks), 40262306a36Sopenharmony_ci .hw_clks = &ums512_gc_pll_hws, 40362306a36Sopenharmony_ci}; 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci/* ap ahb gates */ 40662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dsi_eb, "dsi-eb", "ext-26m", 40762306a36Sopenharmony_ci 0x0, 0x1000, BIT(0), 0, 0); 40862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dispc_eb, "dispc-eb", "ext-26m", 40962306a36Sopenharmony_ci 0x0, 0x1000, BIT(1), 0, 0); 41062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(vsp_eb, "vsp-eb", "ext-26m", 41162306a36Sopenharmony_ci 0x0, 0x1000, BIT(2), 0, 0); 41262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(vdma_eb, "vdma-eb", "ext-26m", 41362306a36Sopenharmony_ci 0x0, 0x1000, BIT(3), 0, 0); 41462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dma_pub_eb, "dma-pub-eb", "ext-26m", 41562306a36Sopenharmony_ci 0x0, 0x1000, BIT(4), 0, 0); 41662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dma_sec_eb, "dma-sec-eb", "ext-26m", 41762306a36Sopenharmony_ci 0x0, 0x1000, BIT(5), 0, 0); 41862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ipi_eb, "ipi-eb", "ext-26m", 41962306a36Sopenharmony_ci 0x0, 0x1000, BIT(6), 0, 0); 42062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ahb_ckg_eb, "ahb-ckg-eb", "ext-26m", 42162306a36Sopenharmony_ci 0x0, 0x1000, BIT(7), CLK_IGNORE_UNUSED, 0); 42262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(bm_clk_eb, "bm-clk-eb", "ext-26m", 42362306a36Sopenharmony_ci 0x0, 0x1000, BIT(8), CLK_IGNORE_UNUSED, 0); 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_apahb_gate[] = { 42662306a36Sopenharmony_ci /* address base is 0x20100000 */ 42762306a36Sopenharmony_ci &dsi_eb.common, 42862306a36Sopenharmony_ci &dispc_eb.common, 42962306a36Sopenharmony_ci &vsp_eb.common, 43062306a36Sopenharmony_ci &vdma_eb.common, 43162306a36Sopenharmony_ci &dma_pub_eb.common, 43262306a36Sopenharmony_ci &dma_sec_eb.common, 43362306a36Sopenharmony_ci &ipi_eb.common, 43462306a36Sopenharmony_ci &ahb_ckg_eb.common, 43562306a36Sopenharmony_ci &bm_clk_eb.common, 43662306a36Sopenharmony_ci}; 43762306a36Sopenharmony_ci 43862306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_apahb_gate_hws = { 43962306a36Sopenharmony_ci .hws = { 44062306a36Sopenharmony_ci [CLK_DSI_EB] = &dsi_eb.common.hw, 44162306a36Sopenharmony_ci [CLK_DISPC_EB] = &dispc_eb.common.hw, 44262306a36Sopenharmony_ci [CLK_VSP_EB] = &vsp_eb.common.hw, 44362306a36Sopenharmony_ci [CLK_VDMA_EB] = &vdma_eb.common.hw, 44462306a36Sopenharmony_ci [CLK_DMA_PUB_EB] = &dma_pub_eb.common.hw, 44562306a36Sopenharmony_ci [CLK_DMA_SEC_EB] = &dma_sec_eb.common.hw, 44662306a36Sopenharmony_ci [CLK_IPI_EB] = &ipi_eb.common.hw, 44762306a36Sopenharmony_ci [CLK_AHB_CKG_EB] = &ahb_ckg_eb.common.hw, 44862306a36Sopenharmony_ci [CLK_BM_CLK_EB] = &bm_clk_eb.common.hw, 44962306a36Sopenharmony_ci }, 45062306a36Sopenharmony_ci .num = CLK_AP_AHB_GATE_NUM, 45162306a36Sopenharmony_ci}; 45262306a36Sopenharmony_ci 45362306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_apahb_gate_desc = { 45462306a36Sopenharmony_ci .clk_clks = ums512_apahb_gate, 45562306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_apahb_gate), 45662306a36Sopenharmony_ci .hw_clks = &ums512_apahb_gate_hws, 45762306a36Sopenharmony_ci}; 45862306a36Sopenharmony_ci 45962306a36Sopenharmony_ci/* ap clks */ 46062306a36Sopenharmony_cistatic const struct clk_parent_data ap_apb_parents[] = { 46162306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 46262306a36Sopenharmony_ci { .hw = &twpll_64m.hw }, 46362306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 46462306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 46562306a36Sopenharmony_ci}; 46662306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(ap_apb_clk, "ap-apb-clk", ap_apb_parents, 46762306a36Sopenharmony_ci 0x20, 0, 2, UMS512_MUX_FLAG); 46862306a36Sopenharmony_ci 46962306a36Sopenharmony_cistatic const struct clk_parent_data ipi_parents[] = { 47062306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 47162306a36Sopenharmony_ci { .hw = &twpll_64m.hw }, 47262306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 47362306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 47462306a36Sopenharmony_ci}; 47562306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(ipi_clk, "ipi-clk", ipi_parents, 47662306a36Sopenharmony_ci 0x24, 0, 2, UMS512_MUX_FLAG); 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_cistatic const struct clk_parent_data ap_uart_parents[] = { 47962306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 48062306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 48162306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 48262306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 48362306a36Sopenharmony_ci}; 48462306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_uart0_clk, "ap-uart0-clk", ap_uart_parents, 48562306a36Sopenharmony_ci 0x28, 0, 2, 8, 3, 0); 48662306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_uart1_clk, "ap-uart1-clk", ap_uart_parents, 48762306a36Sopenharmony_ci 0x2c, 0, 2, 8, 3, 0); 48862306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_uart2_clk, "ap-uart2-clk", ap_uart_parents, 48962306a36Sopenharmony_ci 0x30, 0, 2, 8, 3, 0); 49062306a36Sopenharmony_ci 49162306a36Sopenharmony_cistatic const struct clk_parent_data i2c_parents[] = { 49262306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 49362306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 49462306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 49562306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 49662306a36Sopenharmony_ci}; 49762306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_i2c0_clk, "ap-i2c0-clk", i2c_parents, 49862306a36Sopenharmony_ci 0x34, 0, 2, 8, 3, 0); 49962306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_i2c1_clk, "ap-i2c1-clk", i2c_parents, 50062306a36Sopenharmony_ci 0x38, 0, 2, 8, 3, 0); 50162306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_i2c2_clk, "ap-i2c2-clk", i2c_parents, 50262306a36Sopenharmony_ci 0x3c, 0, 2, 8, 3, 0); 50362306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_i2c3_clk, "ap-i2c3-clk", i2c_parents, 50462306a36Sopenharmony_ci 0x40, 0, 2, 8, 3, 0); 50562306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_i2c4_clk, "ap-i2c4-clk", i2c_parents, 50662306a36Sopenharmony_ci 0x44, 0, 2, 8, 3, 0); 50762306a36Sopenharmony_ci 50862306a36Sopenharmony_cistatic const struct clk_parent_data spi_parents[] = { 50962306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 51062306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 51162306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 51262306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 51362306a36Sopenharmony_ci}; 51462306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_spi0_clk, "ap-spi0-clk", spi_parents, 51562306a36Sopenharmony_ci 0x48, 0, 2, 8, 3, 0); 51662306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_spi1_clk, "ap-spi1-clk", spi_parents, 51762306a36Sopenharmony_ci 0x4c, 0, 2, 8, 3, 0); 51862306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_spi2_clk, "ap-spi2-clk", spi_parents, 51962306a36Sopenharmony_ci 0x50, 0, 2, 8, 3, 0); 52062306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_spi3_clk, "ap-spi3-clk", spi_parents, 52162306a36Sopenharmony_ci 0x54, 0, 2, 8, 3, 0); 52262306a36Sopenharmony_ci 52362306a36Sopenharmony_cistatic const struct clk_parent_data iis_parents[] = { 52462306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 52562306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 52662306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 52762306a36Sopenharmony_ci}; 52862306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_iis0_clk, "ap-iis0-clk", iis_parents, 52962306a36Sopenharmony_ci 0x58, 0, 2, 8, 3, 0); 53062306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_iis1_clk, "ap-iis1-clk", iis_parents, 53162306a36Sopenharmony_ci 0x5c, 0, 2, 8, 3, 0); 53262306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_iis2_clk, "ap-iis2-clk", iis_parents, 53362306a36Sopenharmony_ci 0x60, 0, 2, 8, 3, 0); 53462306a36Sopenharmony_ci 53562306a36Sopenharmony_cistatic const struct clk_parent_data sim_parents[] = { 53662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 53762306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 53862306a36Sopenharmony_ci { .hw = &twpll_64m.hw }, 53962306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 54062306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 54162306a36Sopenharmony_ci}; 54262306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(ap_sim_clk, "ap-sim-clk", sim_parents, 54362306a36Sopenharmony_ci 0x64, 0, 3, 8, 3, 0); 54462306a36Sopenharmony_ci 54562306a36Sopenharmony_cistatic const struct clk_parent_data ap_ce_parents[] = { 54662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 54762306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 54862306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 54962306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 55062306a36Sopenharmony_ci}; 55162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(ap_ce_clk, "ap-ce-clk", ap_ce_parents, 55262306a36Sopenharmony_ci 0x68, 0, 2, UMS512_MUX_FLAG); 55362306a36Sopenharmony_ci 55462306a36Sopenharmony_cistatic const struct clk_parent_data sdio_parents[] = { 55562306a36Sopenharmony_ci { .hw = &clk_1m.hw }, 55662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 55762306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 55862306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 55962306a36Sopenharmony_ci { .hw = &rpll.common.hw }, 56062306a36Sopenharmony_ci { .hw = &lpll_409m6.hw }, 56162306a36Sopenharmony_ci}; 56262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(sdio0_2x_clk, "sdio0-2x", sdio_parents, 56362306a36Sopenharmony_ci 0x80, 0, 3, UMS512_MUX_FLAG); 56462306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(sdio1_2x_clk, "sdio1-2x", sdio_parents, 56562306a36Sopenharmony_ci 0x88, 0, 3, UMS512_MUX_FLAG); 56662306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(emmc_2x_clk, "emmc-2x", sdio_parents, 56762306a36Sopenharmony_ci 0x90, 0, 3, UMS512_MUX_FLAG); 56862306a36Sopenharmony_ci 56962306a36Sopenharmony_cistatic const struct clk_parent_data vsp_parents[] = { 57062306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 57162306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 57262306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 57362306a36Sopenharmony_ci}; 57462306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(vsp_clk, "vsp-clk", vsp_parents, 57562306a36Sopenharmony_ci 0x98, 0, 2, UMS512_MUX_FLAG); 57662306a36Sopenharmony_ci 57762306a36Sopenharmony_cistatic const struct clk_parent_data dispc0_parents[] = { 57862306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 57962306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 58062306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 58162306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 58262306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 58362306a36Sopenharmony_ci}; 58462306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(dispc0_clk, "dispc0-clk", dispc0_parents, 58562306a36Sopenharmony_ci 0x9c, 0, 3, UMS512_MUX_FLAG); 58662306a36Sopenharmony_ci 58762306a36Sopenharmony_cistatic const struct clk_parent_data dispc0_dpi_parents[] = { 58862306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 58962306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 59062306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 59162306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 59262306a36Sopenharmony_ci}; 59362306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(dispc0_dpi_clk, "dispc0-dpi-clk", dispc0_dpi_parents, 59462306a36Sopenharmony_ci 0xa0, 0, 3, 8, 4, 0); 59562306a36Sopenharmony_ci 59662306a36Sopenharmony_cistatic const struct clk_parent_data dsi_apb_parents[] = { 59762306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 59862306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 59962306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 60062306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 60162306a36Sopenharmony_ci}; 60262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(dsi_apb_clk, "dsi-apb-clk", dsi_apb_parents, 60362306a36Sopenharmony_ci 0xa4, 0, 2, UMS512_MUX_FLAG); 60462306a36Sopenharmony_ci 60562306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(dsi_rxesc, "dsi-rxesc", "ext-26m", 60662306a36Sopenharmony_ci 0xa8, BIT(16), 0, 0); 60762306a36Sopenharmony_ci 60862306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(dsi_lanebyte, "dsi-lanebyte", "ext-26m", 60962306a36Sopenharmony_ci 0xac, BIT(16), 0, 0); 61062306a36Sopenharmony_ci 61162306a36Sopenharmony_cistatic const struct clk_parent_data vdsp_parents[] = { 61262306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 61362306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 61462306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 61562306a36Sopenharmony_ci { .hw = &lpll_614m4.hw }, 61662306a36Sopenharmony_ci { .hw = &twpll_768m.hw }, 61762306a36Sopenharmony_ci { .hw = &isppll.common.hw }, 61862306a36Sopenharmony_ci}; 61962306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(vdsp_clk, "vdsp-clk", vdsp_parents, 62062306a36Sopenharmony_ci 0xb0, 0, 3, UMS512_MUX_FLAG); 62162306a36Sopenharmony_cistatic SPRD_DIV_CLK_HW(vdsp_m_clk, "vdsp-m-clk", &vdsp_clk.common.hw, 62262306a36Sopenharmony_ci 0xb4, 8, 2, 0); 62362306a36Sopenharmony_ci 62462306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_ap_clks[] = { 62562306a36Sopenharmony_ci /* address base is 0x20200000 */ 62662306a36Sopenharmony_ci &ap_apb_clk.common, 62762306a36Sopenharmony_ci &ipi_clk.common, 62862306a36Sopenharmony_ci &ap_uart0_clk.common, 62962306a36Sopenharmony_ci &ap_uart1_clk.common, 63062306a36Sopenharmony_ci &ap_uart2_clk.common, 63162306a36Sopenharmony_ci &ap_i2c0_clk.common, 63262306a36Sopenharmony_ci &ap_i2c1_clk.common, 63362306a36Sopenharmony_ci &ap_i2c2_clk.common, 63462306a36Sopenharmony_ci &ap_i2c3_clk.common, 63562306a36Sopenharmony_ci &ap_i2c4_clk.common, 63662306a36Sopenharmony_ci &ap_spi0_clk.common, 63762306a36Sopenharmony_ci &ap_spi1_clk.common, 63862306a36Sopenharmony_ci &ap_spi2_clk.common, 63962306a36Sopenharmony_ci &ap_spi3_clk.common, 64062306a36Sopenharmony_ci &ap_iis0_clk.common, 64162306a36Sopenharmony_ci &ap_iis1_clk.common, 64262306a36Sopenharmony_ci &ap_iis2_clk.common, 64362306a36Sopenharmony_ci &ap_sim_clk.common, 64462306a36Sopenharmony_ci &ap_ce_clk.common, 64562306a36Sopenharmony_ci &sdio0_2x_clk.common, 64662306a36Sopenharmony_ci &sdio1_2x_clk.common, 64762306a36Sopenharmony_ci &emmc_2x_clk.common, 64862306a36Sopenharmony_ci &vsp_clk.common, 64962306a36Sopenharmony_ci &dispc0_clk.common, 65062306a36Sopenharmony_ci &dispc0_dpi_clk.common, 65162306a36Sopenharmony_ci &dsi_apb_clk.common, 65262306a36Sopenharmony_ci &dsi_rxesc.common, 65362306a36Sopenharmony_ci &dsi_lanebyte.common, 65462306a36Sopenharmony_ci &vdsp_clk.common, 65562306a36Sopenharmony_ci &vdsp_m_clk.common, 65662306a36Sopenharmony_ci 65762306a36Sopenharmony_ci}; 65862306a36Sopenharmony_ci 65962306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_ap_clk_hws = { 66062306a36Sopenharmony_ci .hws = { 66162306a36Sopenharmony_ci [CLK_AP_APB] = &ap_apb_clk.common.hw, 66262306a36Sopenharmony_ci [CLK_IPI] = &ipi_clk.common.hw, 66362306a36Sopenharmony_ci [CLK_AP_UART0] = &ap_uart0_clk.common.hw, 66462306a36Sopenharmony_ci [CLK_AP_UART1] = &ap_uart1_clk.common.hw, 66562306a36Sopenharmony_ci [CLK_AP_UART2] = &ap_uart2_clk.common.hw, 66662306a36Sopenharmony_ci [CLK_AP_I2C0] = &ap_i2c0_clk.common.hw, 66762306a36Sopenharmony_ci [CLK_AP_I2C1] = &ap_i2c1_clk.common.hw, 66862306a36Sopenharmony_ci [CLK_AP_I2C2] = &ap_i2c2_clk.common.hw, 66962306a36Sopenharmony_ci [CLK_AP_I2C3] = &ap_i2c3_clk.common.hw, 67062306a36Sopenharmony_ci [CLK_AP_I2C4] = &ap_i2c4_clk.common.hw, 67162306a36Sopenharmony_ci [CLK_AP_SPI0] = &ap_spi0_clk.common.hw, 67262306a36Sopenharmony_ci [CLK_AP_SPI1] = &ap_spi1_clk.common.hw, 67362306a36Sopenharmony_ci [CLK_AP_SPI2] = &ap_spi2_clk.common.hw, 67462306a36Sopenharmony_ci [CLK_AP_SPI3] = &ap_spi3_clk.common.hw, 67562306a36Sopenharmony_ci [CLK_AP_IIS0] = &ap_iis0_clk.common.hw, 67662306a36Sopenharmony_ci [CLK_AP_IIS1] = &ap_iis1_clk.common.hw, 67762306a36Sopenharmony_ci [CLK_AP_IIS2] = &ap_iis2_clk.common.hw, 67862306a36Sopenharmony_ci [CLK_AP_SIM] = &ap_sim_clk.common.hw, 67962306a36Sopenharmony_ci [CLK_AP_CE] = &ap_ce_clk.common.hw, 68062306a36Sopenharmony_ci [CLK_SDIO0_2X] = &sdio0_2x_clk.common.hw, 68162306a36Sopenharmony_ci [CLK_SDIO1_2X] = &sdio1_2x_clk.common.hw, 68262306a36Sopenharmony_ci [CLK_EMMC_2X] = &emmc_2x_clk.common.hw, 68362306a36Sopenharmony_ci [CLK_VSP] = &vsp_clk.common.hw, 68462306a36Sopenharmony_ci [CLK_DISPC0] = &dispc0_clk.common.hw, 68562306a36Sopenharmony_ci [CLK_DISPC0_DPI] = &dispc0_dpi_clk.common.hw, 68662306a36Sopenharmony_ci [CLK_DSI_APB] = &dsi_apb_clk.common.hw, 68762306a36Sopenharmony_ci [CLK_DSI_RXESC] = &dsi_rxesc.common.hw, 68862306a36Sopenharmony_ci [CLK_DSI_LANEBYTE] = &dsi_lanebyte.common.hw, 68962306a36Sopenharmony_ci [CLK_VDSP] = &vdsp_clk.common.hw, 69062306a36Sopenharmony_ci [CLK_VDSP_M] = &vdsp_m_clk.common.hw, 69162306a36Sopenharmony_ci }, 69262306a36Sopenharmony_ci .num = CLK_AP_CLK_NUM, 69362306a36Sopenharmony_ci}; 69462306a36Sopenharmony_ci 69562306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_ap_clk_desc = { 69662306a36Sopenharmony_ci .clk_clks = ums512_ap_clks, 69762306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_ap_clks), 69862306a36Sopenharmony_ci .hw_clks = &ums512_ap_clk_hws, 69962306a36Sopenharmony_ci}; 70062306a36Sopenharmony_ci 70162306a36Sopenharmony_ci/* aon apb clks */ 70262306a36Sopenharmony_cistatic const struct clk_parent_data aon_apb_parents[] = { 70362306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 70462306a36Sopenharmony_ci { .fw_name = "ext-4m" }, 70562306a36Sopenharmony_ci { .hw = &clk_13m.hw }, 70662306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 70762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 70862306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 70962306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 71062306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 71162306a36Sopenharmony_ci}; 71262306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(aon_apb_clk, "aon-apb-clk", aon_apb_parents, 71362306a36Sopenharmony_ci 0x220, 0, 3, 8, 2, 0); 71462306a36Sopenharmony_ci 71562306a36Sopenharmony_ci 71662306a36Sopenharmony_cistatic const struct clk_parent_data adi_parents[] = { 71762306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 71862306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 71962306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 72062306a36Sopenharmony_ci { .hw = &twpll_38m4.hw }, 72162306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 72262306a36Sopenharmony_ci}; 72362306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(adi_clk, "adi-clk", adi_parents, 72462306a36Sopenharmony_ci 0x224, 0, 3, UMS512_MUX_FLAG); 72562306a36Sopenharmony_ci 72662306a36Sopenharmony_cistatic const struct clk_parent_data aux_parents[] = { 72762306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 72862306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 72962306a36Sopenharmony_ci { .hw = &clk_26m_aud.hw }, 73062306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 73162306a36Sopenharmony_ci { .hw = &cppll_39m32.hw }, 73262306a36Sopenharmony_ci { .hw = &mpll0_56m88.hw }, 73362306a36Sopenharmony_ci { .hw = &mpll1_63m38.hw }, 73462306a36Sopenharmony_ci { .hw = &mpll2_47m13.hw }, 73562306a36Sopenharmony_ci { .hw = &dpll0_58m31.hw }, 73662306a36Sopenharmony_ci { .hw = &gpll_40m.hw }, 73762306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 73862306a36Sopenharmony_ci}; 73962306a36Sopenharmony_cistatic const struct clk_parent_data aux1_parents[] = { 74062306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 74162306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 74262306a36Sopenharmony_ci { .hw = &clk_26m_aud.hw }, 74362306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 74462306a36Sopenharmony_ci { .hw = &cppll_39m32.hw }, 74562306a36Sopenharmony_ci { .hw = &mpll0_56m88.hw }, 74662306a36Sopenharmony_ci { .hw = &mpll1_63m38.hw }, 74762306a36Sopenharmony_ci { .hw = &mpll2_47m13.hw }, 74862306a36Sopenharmony_ci { .hw = &dpll0_58m31.hw }, 74962306a36Sopenharmony_ci { .hw = &gpll_40m.hw }, 75062306a36Sopenharmony_ci { .hw = &twpll_19m2.hw }, 75162306a36Sopenharmony_ci { .hw = &lpll_30m72.hw }, 75262306a36Sopenharmony_ci { .hw = &rpll.common.hw }, 75362306a36Sopenharmony_ci { .hw = &twpll_12m29.hw }, 75462306a36Sopenharmony_ci 75562306a36Sopenharmony_ci}; 75662306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(aux0_clk, "aux0-clk", aux_parents, 75762306a36Sopenharmony_ci 0x228, 0, 5, 8, 4, 0); 75862306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(aux1_clk, "aux1-clk", aux1_parents, 75962306a36Sopenharmony_ci 0x22c, 0, 5, 8, 4, 0); 76062306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(aux2_clk, "aux2-clk", aux_parents, 76162306a36Sopenharmony_ci 0x230, 0, 5, 8, 4, 0); 76262306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(probe_clk, "probe-clk", aux_parents, 76362306a36Sopenharmony_ci 0x234, 0, 5, 8, 4, 0); 76462306a36Sopenharmony_ci 76562306a36Sopenharmony_cistatic const struct clk_parent_data pwm_parents[] = { 76662306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 76762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 76862306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 76962306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 77062306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 77162306a36Sopenharmony_ci}; 77262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(pwm0_clk, "pwm0-clk", pwm_parents, 77362306a36Sopenharmony_ci 0x238, 0, 3, UMS512_MUX_FLAG); 77462306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(pwm1_clk, "pwm1-clk", pwm_parents, 77562306a36Sopenharmony_ci 0x23c, 0, 3, UMS512_MUX_FLAG); 77662306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(pwm2_clk, "pwm2-clk", pwm_parents, 77762306a36Sopenharmony_ci 0x240, 0, 3, UMS512_MUX_FLAG); 77862306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(pwm3_clk, "pwm3-clk", pwm_parents, 77962306a36Sopenharmony_ci 0x244, 0, 3, UMS512_MUX_FLAG); 78062306a36Sopenharmony_ci 78162306a36Sopenharmony_cistatic const struct clk_parent_data efuse_parents[] = { 78262306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 78362306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 78462306a36Sopenharmony_ci}; 78562306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(efuse_clk, "efuse-clk", efuse_parents, 78662306a36Sopenharmony_ci 0x248, 0, 1, UMS512_MUX_FLAG); 78762306a36Sopenharmony_ci 78862306a36Sopenharmony_cistatic const struct clk_parent_data uart_parents[] = { 78962306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 79062306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 79162306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 79262306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 79362306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 79462306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 79562306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 79662306a36Sopenharmony_ci}; 79762306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(uart0_clk, "uart0-clk", uart_parents, 79862306a36Sopenharmony_ci 0x24c, 0, 3, UMS512_MUX_FLAG); 79962306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(uart1_clk, "uart1-clk", uart_parents, 80062306a36Sopenharmony_ci 0x250, 0, 3, UMS512_MUX_FLAG); 80162306a36Sopenharmony_ci 80262306a36Sopenharmony_cistatic const struct clk_parent_data thm_parents[] = { 80362306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 80462306a36Sopenharmony_ci { .hw = &clk_250k.hw }, 80562306a36Sopenharmony_ci}; 80662306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(thm0_clk, "thm0-clk", thm_parents, 80762306a36Sopenharmony_ci 0x260, 0, 1, UMS512_MUX_FLAG); 80862306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(thm1_clk, "thm1-clk", thm_parents, 80962306a36Sopenharmony_ci 0x264, 0, 1, UMS512_MUX_FLAG); 81062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(thm2_clk, "thm2-clk", thm_parents, 81162306a36Sopenharmony_ci 0x268, 0, 1, UMS512_MUX_FLAG); 81262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(thm3_clk, "thm3-clk", thm_parents, 81362306a36Sopenharmony_ci 0x26c, 0, 1, UMS512_MUX_FLAG); 81462306a36Sopenharmony_ci 81562306a36Sopenharmony_cistatic const struct clk_parent_data aon_i2c_parents[] = { 81662306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 81762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 81862306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 81962306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 82062306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 82162306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 82262306a36Sopenharmony_ci}; 82362306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(aon_i2c_clk, "aon-i2c-clk", aon_i2c_parents, 82462306a36Sopenharmony_ci 0x27c, 0, 3, UMS512_MUX_FLAG); 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_cistatic const struct clk_parent_data aon_iis_parents[] = { 82762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 82862306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 82962306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 83062306a36Sopenharmony_ci}; 83162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(aon_iis_clk, "aon-iis-clk", aon_iis_parents, 83262306a36Sopenharmony_ci 0x280, 0, 2, UMS512_MUX_FLAG); 83362306a36Sopenharmony_ci 83462306a36Sopenharmony_cistatic const struct clk_parent_data scc_parents[] = { 83562306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 83662306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 83762306a36Sopenharmony_ci { .hw = &twpll_51m2.hw }, 83862306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 83962306a36Sopenharmony_ci}; 84062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(scc_clk, "scc-clk", scc_parents, 84162306a36Sopenharmony_ci 0x284, 0, 2, UMS512_MUX_FLAG); 84262306a36Sopenharmony_ci 84362306a36Sopenharmony_cistatic const struct clk_parent_data apcpu_dap_parents[] = { 84462306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 84562306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 84662306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 84762306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 84862306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 84962306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 85062306a36Sopenharmony_ci}; 85162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(apcpu_dap_clk, "apcpu-dap-clk", apcpu_dap_parents, 85262306a36Sopenharmony_ci 0x288, 0, 3, UMS512_MUX_FLAG); 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(apcpu_dap_mtck, "apcpu-dap-mtck", "ext-26m", 85562306a36Sopenharmony_ci 0x28c, BIT(16), 0, 0); 85662306a36Sopenharmony_ci 85762306a36Sopenharmony_cistatic const struct clk_parent_data apcpu_ts_parents[] = { 85862306a36Sopenharmony_ci { .fw_name = "ext-32m" }, 85962306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 86062306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 86162306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 86262306a36Sopenharmony_ci}; 86362306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(apcpu_ts_clk, "apcpu-ts-clk", apcpu_ts_parents, 86462306a36Sopenharmony_ci 0x290, 0, 2, UMS512_MUX_FLAG); 86562306a36Sopenharmony_ci 86662306a36Sopenharmony_cistatic const struct clk_parent_data debug_ts_parents[] = { 86762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 86862306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 86962306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 87062306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 87162306a36Sopenharmony_ci}; 87262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(debug_ts_clk, "debug-ts-clk", debug_ts_parents, 87362306a36Sopenharmony_ci 0x294, 0, 2, UMS512_MUX_FLAG); 87462306a36Sopenharmony_ci 87562306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(dsi_test_s, "dsi-test-s", "ext-26m", 87662306a36Sopenharmony_ci 0x298, BIT(16), 0, 0); 87762306a36Sopenharmony_ci 87862306a36Sopenharmony_cistatic const struct clk_parent_data djtag_tck_parents[] = { 87962306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 88062306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 88162306a36Sopenharmony_ci}; 88262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(djtag_tck_clk, "djtag-tck-clk", djtag_tck_parents, 88362306a36Sopenharmony_ci 0x2b4, 0, 1, UMS512_MUX_FLAG); 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(djtag_tck_hw, "djtag-tck-hw", "ext-26m", 88662306a36Sopenharmony_ci 0x2b8, BIT(16), 0, 0); 88762306a36Sopenharmony_ci 88862306a36Sopenharmony_cistatic const struct clk_parent_data aon_tmr_parents[] = { 88962306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 89062306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 89162306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 89262306a36Sopenharmony_ci}; 89362306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(aon_tmr_clk, "aon-tmr-clk", aon_tmr_parents, 89462306a36Sopenharmony_ci 0x2c0, 0, 2, UMS512_MUX_FLAG); 89562306a36Sopenharmony_ci 89662306a36Sopenharmony_cistatic const struct clk_parent_data aon_pmu_parents[] = { 89762306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 89862306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 89962306a36Sopenharmony_ci { .fw_name = "ext-4m" }, 90062306a36Sopenharmony_ci}; 90162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(aon_pmu_clk, "aon-pmu-clk", aon_pmu_parents, 90262306a36Sopenharmony_ci 0x2c8, 0, 2, UMS512_MUX_FLAG); 90362306a36Sopenharmony_ci 90462306a36Sopenharmony_cistatic const struct clk_parent_data debounce_parents[] = { 90562306a36Sopenharmony_ci { .fw_name = "ext-32k" }, 90662306a36Sopenharmony_ci { .hw = &rco_4m.hw }, 90762306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 90862306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 90962306a36Sopenharmony_ci}; 91062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(debounce_clk, "debounce-clk", debounce_parents, 91162306a36Sopenharmony_ci 0x2cc, 0, 2, UMS512_MUX_FLAG); 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_cistatic const struct clk_parent_data apcpu_pmu_parents[] = { 91462306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 91562306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 91662306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 91762306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 91862306a36Sopenharmony_ci}; 91962306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(apcpu_pmu_clk, "apcpu-pmu-clk", apcpu_pmu_parents, 92062306a36Sopenharmony_ci 0x2d0, 0, 2, UMS512_MUX_FLAG); 92162306a36Sopenharmony_ci 92262306a36Sopenharmony_cistatic const struct clk_parent_data top_dvfs_parents[] = { 92362306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 92462306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 92562306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 92662306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 92762306a36Sopenharmony_ci}; 92862306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(top_dvfs_clk, "top-dvfs-clk", top_dvfs_parents, 92962306a36Sopenharmony_ci 0x2d8, 0, 2, UMS512_MUX_FLAG); 93062306a36Sopenharmony_ci 93162306a36Sopenharmony_cistatic SPRD_GATE_CLK_FW_NAME(otg_utmi, "otg-utmi", "ext-26m", 0x2dc, 93262306a36Sopenharmony_ci BIT(16), 0, 0); 93362306a36Sopenharmony_ci 93462306a36Sopenharmony_cistatic const struct clk_parent_data otg_ref_parents[] = { 93562306a36Sopenharmony_ci { .hw = &twpll_12m.hw }, 93662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 93762306a36Sopenharmony_ci}; 93862306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(otg_ref_clk, "otg-ref-clk", otg_ref_parents, 93962306a36Sopenharmony_ci 0x2e0, 0, 1, UMS512_MUX_FLAG); 94062306a36Sopenharmony_ci 94162306a36Sopenharmony_cistatic const struct clk_parent_data cssys_parents[] = { 94262306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 94362306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 94462306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 94562306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 94662306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 94762306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 94862306a36Sopenharmony_ci}; 94962306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(cssys_clk, "cssys-clk", cssys_parents, 95062306a36Sopenharmony_ci 0x2e4, 0, 3, 8, 2, 0); 95162306a36Sopenharmony_cistatic SPRD_DIV_CLK_HW(cssys_pub_clk, "cssys-pub-clk", &cssys_clk.common.hw, 95262306a36Sopenharmony_ci 0x2e8, 8, 2, 0); 95362306a36Sopenharmony_cistatic SPRD_DIV_CLK_HW(cssys_apb_clk, "cssys-apb-clk", &cssys_clk.common.hw, 95462306a36Sopenharmony_ci 0x2ec, 8, 3, 0); 95562306a36Sopenharmony_ci 95662306a36Sopenharmony_cistatic const struct clk_parent_data ap_axi_parents[] = { 95762306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 95862306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 95962306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 96062306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 96162306a36Sopenharmony_ci}; 96262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(ap_axi_clk, "ap-axi-clk", ap_axi_parents, 96362306a36Sopenharmony_ci 0x2f0, 0, 2, UMS512_MUX_FLAG); 96462306a36Sopenharmony_ci 96562306a36Sopenharmony_cistatic const struct clk_parent_data ap_mm_parents[] = { 96662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 96762306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 96862306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 96962306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 97062306a36Sopenharmony_ci}; 97162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(ap_mm_clk, "ap-mm-clk", ap_mm_parents, 97262306a36Sopenharmony_ci 0x2f4, 0, 2, UMS512_MUX_FLAG); 97362306a36Sopenharmony_ci 97462306a36Sopenharmony_cistatic const struct clk_parent_data sdio2_2x_parents[] = { 97562306a36Sopenharmony_ci { .hw = &clk_1m.hw }, 97662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 97762306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 97862306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 97962306a36Sopenharmony_ci { .hw = &rpll.common.hw }, 98062306a36Sopenharmony_ci { .hw = &lpll_409m6.hw }, 98162306a36Sopenharmony_ci}; 98262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(sdio2_2x_clk, "sdio2-2x-clk", sdio2_2x_parents, 98362306a36Sopenharmony_ci 0x2f8, 0, 3, UMS512_MUX_FLAG); 98462306a36Sopenharmony_ci 98562306a36Sopenharmony_cistatic const struct clk_parent_data analog_io_apb_parents[] = { 98662306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 98762306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 98862306a36Sopenharmony_ci}; 98962306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(analog_io_apb, "analog-io-apb", analog_io_apb_parents, 99062306a36Sopenharmony_ci 0x300, 0, 1, 8, 2, 0); 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_cistatic const struct clk_parent_data dmc_ref_parents[] = { 99362306a36Sopenharmony_ci { .hw = &clk_6m5.hw }, 99462306a36Sopenharmony_ci { .hw = &clk_13m.hw }, 99562306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 99662306a36Sopenharmony_ci}; 99762306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(dmc_ref_clk, "dmc-ref-clk", dmc_ref_parents, 99862306a36Sopenharmony_ci 0x304, 0, 2, UMS512_MUX_FLAG); 99962306a36Sopenharmony_ci 100062306a36Sopenharmony_cistatic const struct clk_parent_data emc_parents[] = { 100162306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 100262306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 100362306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 100462306a36Sopenharmony_ci { .hw = &twpll_768m.hw }, 100562306a36Sopenharmony_ci}; 100662306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(emc_clk, "emc-clk", emc_parents, 100762306a36Sopenharmony_ci 0x30c, 0, 2, UMS512_MUX_FLAG); 100862306a36Sopenharmony_ci 100962306a36Sopenharmony_cistatic const struct clk_parent_data usb_parents[] = { 101062306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 101162306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 101262306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 101362306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 101462306a36Sopenharmony_ci { .fw_name = "rco-100m" }, 101562306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 101662306a36Sopenharmony_ci}; 101762306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(usb_clk, "usb-clk", usb_parents, 101862306a36Sopenharmony_ci 0x310, 0, 3, 8, 2, 0); 101962306a36Sopenharmony_ci 102062306a36Sopenharmony_cistatic const struct clk_parent_data pmu_26m_parents[] = { 102162306a36Sopenharmony_ci { .hw = &rco_25m.hw }, 102262306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 102362306a36Sopenharmony_ci}; 102462306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(pmu_26m_clk, "26m-pmu-clk", pmu_26m_parents, 102562306a36Sopenharmony_ci 0x318, 0, 1, UMS512_MUX_FLAG); 102662306a36Sopenharmony_ci 102762306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_aon_apb[] = { 102862306a36Sopenharmony_ci /* address base is 0x32080200 */ 102962306a36Sopenharmony_ci &aon_apb_clk.common, 103062306a36Sopenharmony_ci &adi_clk.common, 103162306a36Sopenharmony_ci &aux0_clk.common, 103262306a36Sopenharmony_ci &aux1_clk.common, 103362306a36Sopenharmony_ci &aux2_clk.common, 103462306a36Sopenharmony_ci &probe_clk.common, 103562306a36Sopenharmony_ci &pwm0_clk.common, 103662306a36Sopenharmony_ci &pwm1_clk.common, 103762306a36Sopenharmony_ci &pwm2_clk.common, 103862306a36Sopenharmony_ci &pwm3_clk.common, 103962306a36Sopenharmony_ci &efuse_clk.common, 104062306a36Sopenharmony_ci &uart0_clk.common, 104162306a36Sopenharmony_ci &uart1_clk.common, 104262306a36Sopenharmony_ci &thm0_clk.common, 104362306a36Sopenharmony_ci &thm1_clk.common, 104462306a36Sopenharmony_ci &thm2_clk.common, 104562306a36Sopenharmony_ci &thm3_clk.common, 104662306a36Sopenharmony_ci &aon_i2c_clk.common, 104762306a36Sopenharmony_ci &aon_iis_clk.common, 104862306a36Sopenharmony_ci &scc_clk.common, 104962306a36Sopenharmony_ci &apcpu_dap_clk.common, 105062306a36Sopenharmony_ci &apcpu_dap_mtck.common, 105162306a36Sopenharmony_ci &apcpu_ts_clk.common, 105262306a36Sopenharmony_ci &debug_ts_clk.common, 105362306a36Sopenharmony_ci &dsi_test_s.common, 105462306a36Sopenharmony_ci &djtag_tck_clk.common, 105562306a36Sopenharmony_ci &djtag_tck_hw.common, 105662306a36Sopenharmony_ci &aon_tmr_clk.common, 105762306a36Sopenharmony_ci &aon_pmu_clk.common, 105862306a36Sopenharmony_ci &debounce_clk.common, 105962306a36Sopenharmony_ci &apcpu_pmu_clk.common, 106062306a36Sopenharmony_ci &top_dvfs_clk.common, 106162306a36Sopenharmony_ci &otg_utmi.common, 106262306a36Sopenharmony_ci &otg_ref_clk.common, 106362306a36Sopenharmony_ci &cssys_clk.common, 106462306a36Sopenharmony_ci &cssys_pub_clk.common, 106562306a36Sopenharmony_ci &cssys_apb_clk.common, 106662306a36Sopenharmony_ci &ap_axi_clk.common, 106762306a36Sopenharmony_ci &ap_mm_clk.common, 106862306a36Sopenharmony_ci &sdio2_2x_clk.common, 106962306a36Sopenharmony_ci &analog_io_apb.common, 107062306a36Sopenharmony_ci &dmc_ref_clk.common, 107162306a36Sopenharmony_ci &emc_clk.common, 107262306a36Sopenharmony_ci &usb_clk.common, 107362306a36Sopenharmony_ci &pmu_26m_clk.common, 107462306a36Sopenharmony_ci}; 107562306a36Sopenharmony_ci 107662306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_aon_apb_hws = { 107762306a36Sopenharmony_ci .hws = { 107862306a36Sopenharmony_ci [CLK_AON_APB] = &aon_apb_clk.common.hw, 107962306a36Sopenharmony_ci [CLK_ADI] = &adi_clk.common.hw, 108062306a36Sopenharmony_ci [CLK_AUX0] = &aux0_clk.common.hw, 108162306a36Sopenharmony_ci [CLK_AUX1] = &aux1_clk.common.hw, 108262306a36Sopenharmony_ci [CLK_AUX2] = &aux2_clk.common.hw, 108362306a36Sopenharmony_ci [CLK_PROBE] = &probe_clk.common.hw, 108462306a36Sopenharmony_ci [CLK_PWM0] = &pwm0_clk.common.hw, 108562306a36Sopenharmony_ci [CLK_PWM1] = &pwm1_clk.common.hw, 108662306a36Sopenharmony_ci [CLK_PWM2] = &pwm2_clk.common.hw, 108762306a36Sopenharmony_ci [CLK_PWM3] = &pwm3_clk.common.hw, 108862306a36Sopenharmony_ci [CLK_EFUSE] = &efuse_clk.common.hw, 108962306a36Sopenharmony_ci [CLK_UART0] = &uart0_clk.common.hw, 109062306a36Sopenharmony_ci [CLK_UART1] = &uart1_clk.common.hw, 109162306a36Sopenharmony_ci [CLK_THM0] = &thm0_clk.common.hw, 109262306a36Sopenharmony_ci [CLK_THM1] = &thm1_clk.common.hw, 109362306a36Sopenharmony_ci [CLK_THM2] = &thm2_clk.common.hw, 109462306a36Sopenharmony_ci [CLK_THM3] = &thm3_clk.common.hw, 109562306a36Sopenharmony_ci [CLK_AON_I2C] = &aon_i2c_clk.common.hw, 109662306a36Sopenharmony_ci [CLK_AON_IIS] = &aon_iis_clk.common.hw, 109762306a36Sopenharmony_ci [CLK_SCC] = &scc_clk.common.hw, 109862306a36Sopenharmony_ci [CLK_APCPU_DAP] = &apcpu_dap_clk.common.hw, 109962306a36Sopenharmony_ci [CLK_APCPU_DAP_MTCK] = &apcpu_dap_mtck.common.hw, 110062306a36Sopenharmony_ci [CLK_APCPU_TS] = &apcpu_ts_clk.common.hw, 110162306a36Sopenharmony_ci [CLK_DEBUG_TS] = &debug_ts_clk.common.hw, 110262306a36Sopenharmony_ci [CLK_DSI_TEST_S] = &dsi_test_s.common.hw, 110362306a36Sopenharmony_ci [CLK_DJTAG_TCK] = &djtag_tck_clk.common.hw, 110462306a36Sopenharmony_ci [CLK_DJTAG_TCK_HW] = &djtag_tck_hw.common.hw, 110562306a36Sopenharmony_ci [CLK_AON_TMR] = &aon_tmr_clk.common.hw, 110662306a36Sopenharmony_ci [CLK_AON_PMU] = &aon_pmu_clk.common.hw, 110762306a36Sopenharmony_ci [CLK_DEBOUNCE] = &debounce_clk.common.hw, 110862306a36Sopenharmony_ci [CLK_APCPU_PMU] = &apcpu_pmu_clk.common.hw, 110962306a36Sopenharmony_ci [CLK_TOP_DVFS] = &top_dvfs_clk.common.hw, 111062306a36Sopenharmony_ci [CLK_OTG_UTMI] = &otg_utmi.common.hw, 111162306a36Sopenharmony_ci [CLK_OTG_REF] = &otg_ref_clk.common.hw, 111262306a36Sopenharmony_ci [CLK_CSSYS] = &cssys_clk.common.hw, 111362306a36Sopenharmony_ci [CLK_CSSYS_PUB] = &cssys_pub_clk.common.hw, 111462306a36Sopenharmony_ci [CLK_CSSYS_APB] = &cssys_apb_clk.common.hw, 111562306a36Sopenharmony_ci [CLK_AP_AXI] = &ap_axi_clk.common.hw, 111662306a36Sopenharmony_ci [CLK_AP_MM] = &ap_mm_clk.common.hw, 111762306a36Sopenharmony_ci [CLK_SDIO2_2X] = &sdio2_2x_clk.common.hw, 111862306a36Sopenharmony_ci [CLK_ANALOG_IO_APB] = &analog_io_apb.common.hw, 111962306a36Sopenharmony_ci [CLK_DMC_REF_CLK] = &dmc_ref_clk.common.hw, 112062306a36Sopenharmony_ci [CLK_EMC] = &emc_clk.common.hw, 112162306a36Sopenharmony_ci [CLK_USB] = &usb_clk.common.hw, 112262306a36Sopenharmony_ci [CLK_26M_PMU] = &pmu_26m_clk.common.hw, 112362306a36Sopenharmony_ci }, 112462306a36Sopenharmony_ci .num = CLK_AON_APB_NUM, 112562306a36Sopenharmony_ci}; 112662306a36Sopenharmony_ci 112762306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_aon_apb_desc = { 112862306a36Sopenharmony_ci .clk_clks = ums512_aon_apb, 112962306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_aon_apb), 113062306a36Sopenharmony_ci .hw_clks = &ums512_aon_apb_hws, 113162306a36Sopenharmony_ci}; 113262306a36Sopenharmony_ci 113362306a36Sopenharmony_ci/* aon apb gates */ 113462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(rc100m_cal_eb, "rc100m-cal-eb", "ext-26m", 113562306a36Sopenharmony_ci 0x0, 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0); 113662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(djtag_tck_eb, "djtag-tck-eb", "ext-26m", 113762306a36Sopenharmony_ci 0x0, 0x1000, BIT(2), CLK_IGNORE_UNUSED, 0); 113862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(djtag_eb, "djtag-eb", "ext-26m", 113962306a36Sopenharmony_ci 0x0, 0x1000, BIT(3), CLK_IGNORE_UNUSED, 0); 114062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aux0_eb, "aux0-eb", "ext-26m", 114162306a36Sopenharmony_ci 0x0, 0x1000, BIT(4), 0, 0); 114262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aux1_eb, "aux1-eb", "ext-26m", 114362306a36Sopenharmony_ci 0x0, 0x1000, BIT(5), 0, 0); 114462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aux2_eb, "aux2-eb", "ext-26m", 114562306a36Sopenharmony_ci 0x0, 0x1000, BIT(6), 0, 0); 114662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(probe_eb, "probe-eb", "ext-26m", 114762306a36Sopenharmony_ci 0x0, 0x1000, BIT(7), 0, 0); 114862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(mm_eb, "mm-eb", "ext-26m", 114962306a36Sopenharmony_ci 0x0, 0x1000, BIT(9), 0, 0); 115062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(gpu_eb, "gpu-eb", "ext-26m", 115162306a36Sopenharmony_ci 0x0, 0x1000, BIT(11), 0, 0); 115262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(mspi_eb, "mspi-eb", "ext-26m", 115362306a36Sopenharmony_ci 0x0, 0x1000, BIT(12), CLK_IGNORE_UNUSED, 0); 115462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(apcpu_dap_eb, "apcpu-dap-eb", "ext-26m", 115562306a36Sopenharmony_ci 0x0, 0x1000, BIT(14), CLK_IGNORE_UNUSED, 0); 115662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_cssys_eb, "aon-cssys-eb", "ext-26m", 115762306a36Sopenharmony_ci 0x0, 0x1000, BIT(15), CLK_IGNORE_UNUSED, 0); 115862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(cssys_apb_eb, "cssys-apb-eb", "ext-26m", 115962306a36Sopenharmony_ci 0x0, 0x1000, BIT(16), CLK_IGNORE_UNUSED, 0); 116062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(cssys_pub_eb, "cssys-pub-eb", "ext-26m", 116162306a36Sopenharmony_ci 0x0, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 116262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdphy_cfg_eb, "sdphy-cfg-eb", "ext-26m", 116362306a36Sopenharmony_ci 0x0, 0x1000, BIT(19), 0, 0); 116462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdphy_ref_eb, "sdphy-ref-eb", "ext-26m", 116562306a36Sopenharmony_ci 0x0, 0x1000, BIT(20), 0, 0); 116662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(efuse_eb, "efuse-eb", "ext-26m", 116762306a36Sopenharmony_ci 0x4, 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0); 116862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(gpio_eb, "gpio-eb", "ext-26m", 116962306a36Sopenharmony_ci 0x4, 0x1000, BIT(1), CLK_IGNORE_UNUSED, 0); 117062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(mbox_eb, "mbox-eb", "ext-26m", 117162306a36Sopenharmony_ci 0x4, 0x1000, BIT(2), CLK_IGNORE_UNUSED, 0); 117262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(kpd_eb, "kpd-eb", "ext-26m", 117362306a36Sopenharmony_ci 0x4, 0x1000, BIT(3), 0, 0); 117462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_syst_eb, "aon-syst-eb", "ext-26m", 117562306a36Sopenharmony_ci 0x4, 0x1000, BIT(4), CLK_IGNORE_UNUSED, 0); 117662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_syst_eb, "ap-syst-eb", "ext-26m", 117762306a36Sopenharmony_ci 0x4, 0x1000, BIT(5), CLK_IGNORE_UNUSED, 0); 117862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_tmr_eb, "aon-tmr-eb", "ext-26m", 117962306a36Sopenharmony_ci 0x4, 0x1000, BIT(6), CLK_IGNORE_UNUSED, 0); 118062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(otg_utmi_eb, "otg-utmi-eb", "ext-26m", 118162306a36Sopenharmony_ci 0x4, 0x1000, BIT(8), CLK_IGNORE_UNUSED, 0); 118262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(otg_phy_eb, "otg-phy-eb", "ext-26m", 118362306a36Sopenharmony_ci 0x4, 0x1000, BIT(9), CLK_IGNORE_UNUSED, 0); 118462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(splk_eb, "splk-eb", "ext-26m", 118562306a36Sopenharmony_ci 0x4, 0x1000, BIT(10), CLK_IGNORE_UNUSED, 0); 118662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pin_eb, "pin-eb", "ext-26m", 118762306a36Sopenharmony_ci 0x4, 0x1000, BIT(11), CLK_IGNORE_UNUSED, 0); 118862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ana_eb, "ana-eb", "ext-26m", 118962306a36Sopenharmony_ci 0x4, 0x1000, BIT(12), CLK_IGNORE_UNUSED, 0); 119062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(apcpu_ts0_eb, "apcpu-ts0-eb", "ext-26m", 119162306a36Sopenharmony_ci 0x4, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 119262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(apb_busmon_eb, "apb-busmon-eb", "ext-26m", 119362306a36Sopenharmony_ci 0x4, 0x1000, BIT(18), CLK_IGNORE_UNUSED, 0); 119462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_iis_eb, "aon-iis-eb", "ext-26m", 119562306a36Sopenharmony_ci 0x4, 0x1000, BIT(19), CLK_IGNORE_UNUSED, 0); 119662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(scc_eb, "scc-eb", "ext-26m", 119762306a36Sopenharmony_ci 0x4, 0x1000, BIT(20), CLK_IGNORE_UNUSED, 0); 119862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(thm0_eb, "thm0-eb", "ext-26m", 119962306a36Sopenharmony_ci 0x8, 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0); 120062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(thm1_eb, "thm1-eb", "ext-26m", 120162306a36Sopenharmony_ci 0x8, 0x1000, BIT(1), CLK_IGNORE_UNUSED, 0); 120262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(thm2_eb, "thm2-eb", "ext-26m", 120362306a36Sopenharmony_ci 0x8, 0x1000, BIT(2), CLK_IGNORE_UNUSED, 0); 120462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(asim_top_eb, "asim-top", "ext-26m", 120562306a36Sopenharmony_ci 0x8, 0x1000, BIT(3), CLK_IGNORE_UNUSED, 0); 120662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c_eb, "i2c-eb", "ext-26m", 120762306a36Sopenharmony_ci 0x8, 0x1000, BIT(7), CLK_IGNORE_UNUSED, 0); 120862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pmu_eb, "pmu-eb", "ext-26m", 120962306a36Sopenharmony_ci 0x8, 0x1000, BIT(8), CLK_IGNORE_UNUSED, 0); 121062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(adi_eb, "adi-eb", "ext-26m", 121162306a36Sopenharmony_ci 0x8, 0x1000, BIT(9), CLK_IGNORE_UNUSED, 0); 121262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(eic_eb, "eic-eb", "ext-26m", 121362306a36Sopenharmony_ci 0x8, 0x1000, BIT(10), CLK_IGNORE_UNUSED, 0); 121462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc0_eb, "ap-intc0-eb", "ext-26m", 121562306a36Sopenharmony_ci 0x8, 0x1000, BIT(11), CLK_IGNORE_UNUSED, 0); 121662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc1_eb, "ap-intc1-eb", "ext-26m", 121762306a36Sopenharmony_ci 0x8, 0x1000, BIT(12), CLK_IGNORE_UNUSED, 0); 121862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc2_eb, "ap-intc2-eb", "ext-26m", 121962306a36Sopenharmony_ci 0x8, 0x1000, BIT(13), CLK_IGNORE_UNUSED, 0); 122062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc3_eb, "ap-intc3-eb", "ext-26m", 122162306a36Sopenharmony_ci 0x8, 0x1000, BIT(14), CLK_IGNORE_UNUSED, 0); 122262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc4_eb, "ap-intc4-eb", "ext-26m", 122362306a36Sopenharmony_ci 0x8, 0x1000, BIT(15), CLK_IGNORE_UNUSED, 0); 122462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_intc5_eb, "ap-intc5-eb", "ext-26m", 122562306a36Sopenharmony_ci 0x8, 0x1000, BIT(16), CLK_IGNORE_UNUSED, 0); 122662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(audcp_intc_eb, "audcp-intc-eb", "ext-26m", 122762306a36Sopenharmony_ci 0x8, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 122862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr0_eb, "ap-tmr0-eb", "ext-26m", 122962306a36Sopenharmony_ci 0x8, 0x1000, BIT(22), CLK_IGNORE_UNUSED, 0); 123062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr1_eb, "ap-tmr1-eb", "ext-26m", 123162306a36Sopenharmony_ci 0x8, 0x1000, BIT(23), CLK_IGNORE_UNUSED, 0); 123262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr2_eb, "ap-tmr2-eb", "ext-26m", 123362306a36Sopenharmony_ci 0x8, 0x1000, BIT(24), CLK_IGNORE_UNUSED, 0); 123462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pwm0_eb, "pwm0-eb", "ext-26m", 123562306a36Sopenharmony_ci 0x8, 0x1000, BIT(25), 0, 0); 123662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pwm1_eb, "pwm1-eb", "ext-26m", 123762306a36Sopenharmony_ci 0x8, 0x1000, BIT(26), 0, 0); 123862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pwm2_eb, "pwm2-eb", "ext-26m", 123962306a36Sopenharmony_ci 0x8, 0x1000, BIT(27), 0, 0); 124062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pwm3_eb, "pwm3-eb", "ext-26m", 124162306a36Sopenharmony_ci 0x8, 0x1000, BIT(28), 0, 0); 124262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_wdg_eb, "ap-wdg-eb", "ext-26m", 124362306a36Sopenharmony_ci 0x8, 0x1000, BIT(29), 0, 0); 124462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(apcpu_wdg_eb, "apcpu-wdg-eb", "ext-26m", 124562306a36Sopenharmony_ci 0x8, 0x1000, BIT(30), 0, 0); 124662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(serdes_eb, "serdes-eb", "ext-26m", 124762306a36Sopenharmony_ci 0x8, 0x1000, BIT(31), 0, 0); 124862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(arch_rtc_eb, "arch-rtc-eb", "ext-26m", 124962306a36Sopenharmony_ci 0x18, 0x1000, BIT(0), CLK_IGNORE_UNUSED, 0); 125062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(kpd_rtc_eb, "kpd-rtc-eb", "ext-26m", 125162306a36Sopenharmony_ci 0x18, 0x1000, BIT(1), CLK_IGNORE_UNUSED, 0); 125262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_syst_rtc_eb, "aon-syst-rtc-eb", "ext-26m", 125362306a36Sopenharmony_ci 0x18, 0x1000, BIT(2), CLK_IGNORE_UNUSED, 0); 125462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_syst_rtc_eb, "ap-syst-rtc-eb", "ext-26m", 125562306a36Sopenharmony_ci 0x18, 0x1000, BIT(3), CLK_IGNORE_UNUSED, 0); 125662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(aon_tmr_rtc_eb, "aon-tmr-rtc-eb", "ext-26m", 125762306a36Sopenharmony_ci 0x18, 0x1000, BIT(4), CLK_IGNORE_UNUSED, 0); 125862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(eic_rtc_eb, "eic-rtc-eb", "ext-26m", 125962306a36Sopenharmony_ci 0x18, 0x1000, BIT(5), CLK_IGNORE_UNUSED, 0); 126062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(eic_rtcdv5_eb, "eic-rtcdv5-eb", "ext-26m", 126162306a36Sopenharmony_ci 0x18, 0x1000, BIT(6), CLK_IGNORE_UNUSED, 0); 126262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_wdg_rtc_eb, "ap-wdg-rtc-eb", "ext-26m", 126362306a36Sopenharmony_ci 0x18, 0x1000, BIT(7), CLK_IGNORE_UNUSED, 0); 126462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ac_wdg_rtc_eb, "ac-wdg-rtc-eb", "ext-26m", 126562306a36Sopenharmony_ci 0x18, 0x1000, BIT(8), CLK_IGNORE_UNUSED, 0); 126662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr0_rtc_eb, "ap-tmr0-rtc-eb", "ext-26m", 126762306a36Sopenharmony_ci 0x18, 0x1000, BIT(9), CLK_IGNORE_UNUSED, 0); 126862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr1_rtc_eb, "ap-tmr1-rtc-eb", "ext-26m", 126962306a36Sopenharmony_ci 0x18, 0x1000, BIT(10), CLK_IGNORE_UNUSED, 0); 127062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_tmr2_rtc_eb, "ap-tmr2-rtc-eb", "ext-26m", 127162306a36Sopenharmony_ci 0x18, 0x1000, BIT(11), CLK_IGNORE_UNUSED, 0); 127262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dcxo_lc_rtc_eb, "dcxo-lc-rtc-eb", "ext-26m", 127362306a36Sopenharmony_ci 0x18, 0x1000, BIT(12), CLK_IGNORE_UNUSED, 0); 127462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(bb_cal_rtc_eb, "bb-cal-rtc-eb", "ext-26m", 127562306a36Sopenharmony_ci 0x18, 0x1000, BIT(13), CLK_IGNORE_UNUSED, 0); 127662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_emmc_rtc_eb, "ap-emmc-rtc-eb", "ext-26m", 127762306a36Sopenharmony_ci 0x18, 0x1000, BIT(14), CLK_IGNORE_UNUSED, 0); 127862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_sdio0_rtc_eb, "ap-sdio0-rtc-eb", "ext-26m", 127962306a36Sopenharmony_ci 0x18, 0x1000, BIT(15), CLK_IGNORE_UNUSED, 0); 128062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_sdio1_rtc_eb, "ap-sdio1-rtc-eb", "ext-26m", 128162306a36Sopenharmony_ci 0x18, 0x1000, BIT(16), CLK_IGNORE_UNUSED, 0); 128262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_sdio2_rtc_eb, "ap-sdio2-rtc-eb", "ext-26m", 128362306a36Sopenharmony_ci 0x18, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 128462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dsi_csi_test_eb, "dsi-csi-test-eb", "ext-26m", 128562306a36Sopenharmony_ci 0x138, 0x1000, BIT(8), 0, 0); 128662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(djtag_tck_en, "djtag-tck-en", "ext-26m", 128762306a36Sopenharmony_ci 0x138, 0x1000, BIT(9), CLK_IGNORE_UNUSED, 0); 128862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dphy_ref_eb, "dphy-ref-eb", "ext-26m", 128962306a36Sopenharmony_ci 0x138, 0x1000, BIT(10), CLK_IGNORE_UNUSED, 0); 129062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(dmc_ref_eb, "dmc-ref-eb", "ext-26m", 129162306a36Sopenharmony_ci 0x138, 0x1000, BIT(11), CLK_IGNORE_UNUSED, 0); 129262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(otg_ref_eb, "otg-ref-eb", "ext-26m", 129362306a36Sopenharmony_ci 0x138, 0x1000, BIT(12), CLK_IGNORE_UNUSED, 0); 129462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(tsen_eb, "tsen-eb", "ext-26m", 129562306a36Sopenharmony_ci 0x138, 0x1000, BIT(13), 0, 0); 129662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(tmr_eb, "tmr-eb", "ext-26m", 129762306a36Sopenharmony_ci 0x138, 0x1000, BIT(14), CLK_IGNORE_UNUSED, 0); 129862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(rc100m_ref_eb, "rc100m-ref-eb", "ext-26m", 129962306a36Sopenharmony_ci 0x138, 0x1000, BIT(15), CLK_IGNORE_UNUSED, 0); 130062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(rc100m_fdk_eb, "rc100m-fdk-eb", "ext-26m", 130162306a36Sopenharmony_ci 0x138, 0x1000, BIT(16), CLK_IGNORE_UNUSED, 0); 130262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(debounce_eb, "debounce-eb", "ext-26m", 130362306a36Sopenharmony_ci 0x138, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 130462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(det_32k_eb, "det-32k-eb", "ext-26m", 130562306a36Sopenharmony_ci 0x138, 0x1000, BIT(18), CLK_IGNORE_UNUSED, 0); 130662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(top_cssys_en, "top-cssys-en", "ext-26m", 130762306a36Sopenharmony_ci 0x13c, 0x1000, BIT(0), 0, 0); 130862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(ap_axi_en, "ap-axi-en", "ext-26m", 130962306a36Sopenharmony_ci 0x13c, 0x1000, BIT(1), CLK_IGNORE_UNUSED, 0); 131062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio0_2x_en, "sdio0-2x-en", "ext-26m", 131162306a36Sopenharmony_ci 0x13c, 0x1000, BIT(2), 0, 0); 131262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio0_1x_en, "sdio0-1x-en", "ext-26m", 131362306a36Sopenharmony_ci 0x13c, 0x1000, BIT(3), 0, 0); 131462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio1_2x_en, "sdio1-2x-en", "ext-26m", 131562306a36Sopenharmony_ci 0x13c, 0x1000, BIT(4), 0, 0); 131662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio1_1x_en, "sdio1-1x-en", "ext-26m", 131762306a36Sopenharmony_ci 0x13c, 0x1000, BIT(5), 0, 0); 131862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio2_2x_en, "sdio2-2x-en", "ext-26m", 131962306a36Sopenharmony_ci 0x13c, 0x1000, BIT(6), 0, 0); 132062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio2_1x_en, "sdio2-1x-en", "ext-26m", 132162306a36Sopenharmony_ci 0x13c, 0x1000, BIT(7), 0, 0); 132262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(emmc_2x_en, "emmc-2x-en", "ext-26m", 132362306a36Sopenharmony_ci 0x13c, 0x1000, BIT(8), 0, 0); 132462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(emmc_1x_en, "emmc-1x-en", "ext-26m", 132562306a36Sopenharmony_ci 0x13c, 0x1000, BIT(9), 0, 0); 132662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(pll_test_en, "pll-test-en", "ext-26m", 132762306a36Sopenharmony_ci 0x13c, 0x1000, BIT(14), 0, 0); 132862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(cphy_cfg_en, "cphy-cfg-en", "ext-26m", 132962306a36Sopenharmony_ci 0x13c, 0x1000, BIT(15), 0, 0); 133062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(debug_ts_en, "debug-ts-en", "ext-26m", 133162306a36Sopenharmony_ci 0x13c, 0x1000, BIT(18), 0, 0); 133262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(access_aud_en, "access-aud-en", 133362306a36Sopenharmony_ci "ext-26m", 0x14c, 0x1000, BIT(0), 0, 0); 133462306a36Sopenharmony_ci 133562306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_aon_gate[] = { 133662306a36Sopenharmony_ci /* address base is 0x327d0000 */ 133762306a36Sopenharmony_ci &rc100m_cal_eb.common, 133862306a36Sopenharmony_ci &djtag_tck_eb.common, 133962306a36Sopenharmony_ci &djtag_eb.common, 134062306a36Sopenharmony_ci &aux0_eb.common, 134162306a36Sopenharmony_ci &aux1_eb.common, 134262306a36Sopenharmony_ci &aux2_eb.common, 134362306a36Sopenharmony_ci &probe_eb.common, 134462306a36Sopenharmony_ci &mm_eb.common, 134562306a36Sopenharmony_ci &gpu_eb.common, 134662306a36Sopenharmony_ci &mspi_eb.common, 134762306a36Sopenharmony_ci &apcpu_dap_eb.common, 134862306a36Sopenharmony_ci &aon_cssys_eb.common, 134962306a36Sopenharmony_ci &cssys_apb_eb.common, 135062306a36Sopenharmony_ci &cssys_pub_eb.common, 135162306a36Sopenharmony_ci &sdphy_cfg_eb.common, 135262306a36Sopenharmony_ci &sdphy_ref_eb.common, 135362306a36Sopenharmony_ci &efuse_eb.common, 135462306a36Sopenharmony_ci &gpio_eb.common, 135562306a36Sopenharmony_ci &mbox_eb.common, 135662306a36Sopenharmony_ci &kpd_eb.common, 135762306a36Sopenharmony_ci &aon_syst_eb.common, 135862306a36Sopenharmony_ci &ap_syst_eb.common, 135962306a36Sopenharmony_ci &aon_tmr_eb.common, 136062306a36Sopenharmony_ci &otg_utmi_eb.common, 136162306a36Sopenharmony_ci &otg_phy_eb.common, 136262306a36Sopenharmony_ci &splk_eb.common, 136362306a36Sopenharmony_ci &pin_eb.common, 136462306a36Sopenharmony_ci &ana_eb.common, 136562306a36Sopenharmony_ci &apcpu_ts0_eb.common, 136662306a36Sopenharmony_ci &apb_busmon_eb.common, 136762306a36Sopenharmony_ci &aon_iis_eb.common, 136862306a36Sopenharmony_ci &scc_eb.common, 136962306a36Sopenharmony_ci &thm0_eb.common, 137062306a36Sopenharmony_ci &thm1_eb.common, 137162306a36Sopenharmony_ci &thm2_eb.common, 137262306a36Sopenharmony_ci &asim_top_eb.common, 137362306a36Sopenharmony_ci &i2c_eb.common, 137462306a36Sopenharmony_ci &pmu_eb.common, 137562306a36Sopenharmony_ci &adi_eb.common, 137662306a36Sopenharmony_ci &eic_eb.common, 137762306a36Sopenharmony_ci &ap_intc0_eb.common, 137862306a36Sopenharmony_ci &ap_intc1_eb.common, 137962306a36Sopenharmony_ci &ap_intc2_eb.common, 138062306a36Sopenharmony_ci &ap_intc3_eb.common, 138162306a36Sopenharmony_ci &ap_intc4_eb.common, 138262306a36Sopenharmony_ci &ap_intc5_eb.common, 138362306a36Sopenharmony_ci &audcp_intc_eb.common, 138462306a36Sopenharmony_ci &ap_tmr0_eb.common, 138562306a36Sopenharmony_ci &ap_tmr1_eb.common, 138662306a36Sopenharmony_ci &ap_tmr2_eb.common, 138762306a36Sopenharmony_ci &pwm0_eb.common, 138862306a36Sopenharmony_ci &pwm1_eb.common, 138962306a36Sopenharmony_ci &pwm2_eb.common, 139062306a36Sopenharmony_ci &pwm3_eb.common, 139162306a36Sopenharmony_ci &ap_wdg_eb.common, 139262306a36Sopenharmony_ci &apcpu_wdg_eb.common, 139362306a36Sopenharmony_ci &serdes_eb.common, 139462306a36Sopenharmony_ci &arch_rtc_eb.common, 139562306a36Sopenharmony_ci &kpd_rtc_eb.common, 139662306a36Sopenharmony_ci &aon_syst_rtc_eb.common, 139762306a36Sopenharmony_ci &ap_syst_rtc_eb.common, 139862306a36Sopenharmony_ci &aon_tmr_rtc_eb.common, 139962306a36Sopenharmony_ci &eic_rtc_eb.common, 140062306a36Sopenharmony_ci &eic_rtcdv5_eb.common, 140162306a36Sopenharmony_ci &ap_wdg_rtc_eb.common, 140262306a36Sopenharmony_ci &ac_wdg_rtc_eb.common, 140362306a36Sopenharmony_ci &ap_tmr0_rtc_eb.common, 140462306a36Sopenharmony_ci &ap_tmr1_rtc_eb.common, 140562306a36Sopenharmony_ci &ap_tmr2_rtc_eb.common, 140662306a36Sopenharmony_ci &dcxo_lc_rtc_eb.common, 140762306a36Sopenharmony_ci &bb_cal_rtc_eb.common, 140862306a36Sopenharmony_ci &ap_emmc_rtc_eb.common, 140962306a36Sopenharmony_ci &ap_sdio0_rtc_eb.common, 141062306a36Sopenharmony_ci &ap_sdio1_rtc_eb.common, 141162306a36Sopenharmony_ci &ap_sdio2_rtc_eb.common, 141262306a36Sopenharmony_ci &dsi_csi_test_eb.common, 141362306a36Sopenharmony_ci &djtag_tck_en.common, 141462306a36Sopenharmony_ci &dphy_ref_eb.common, 141562306a36Sopenharmony_ci &dmc_ref_eb.common, 141662306a36Sopenharmony_ci &otg_ref_eb.common, 141762306a36Sopenharmony_ci &tsen_eb.common, 141862306a36Sopenharmony_ci &tmr_eb.common, 141962306a36Sopenharmony_ci &rc100m_ref_eb.common, 142062306a36Sopenharmony_ci &rc100m_fdk_eb.common, 142162306a36Sopenharmony_ci &debounce_eb.common, 142262306a36Sopenharmony_ci &det_32k_eb.common, 142362306a36Sopenharmony_ci &top_cssys_en.common, 142462306a36Sopenharmony_ci &ap_axi_en.common, 142562306a36Sopenharmony_ci &sdio0_2x_en.common, 142662306a36Sopenharmony_ci &sdio0_1x_en.common, 142762306a36Sopenharmony_ci &sdio1_2x_en.common, 142862306a36Sopenharmony_ci &sdio1_1x_en.common, 142962306a36Sopenharmony_ci &sdio2_2x_en.common, 143062306a36Sopenharmony_ci &sdio2_1x_en.common, 143162306a36Sopenharmony_ci &emmc_2x_en.common, 143262306a36Sopenharmony_ci &emmc_1x_en.common, 143362306a36Sopenharmony_ci &pll_test_en.common, 143462306a36Sopenharmony_ci &cphy_cfg_en.common, 143562306a36Sopenharmony_ci &debug_ts_en.common, 143662306a36Sopenharmony_ci &access_aud_en.common, 143762306a36Sopenharmony_ci}; 143862306a36Sopenharmony_ci 143962306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_aon_gate_hws = { 144062306a36Sopenharmony_ci .hws = { 144162306a36Sopenharmony_ci [CLK_RC100M_CAL_EB] = &rc100m_cal_eb.common.hw, 144262306a36Sopenharmony_ci [CLK_DJTAG_TCK_EB] = &djtag_tck_eb.common.hw, 144362306a36Sopenharmony_ci [CLK_DJTAG_EB] = &djtag_eb.common.hw, 144462306a36Sopenharmony_ci [CLK_AUX0_EB] = &aux0_eb.common.hw, 144562306a36Sopenharmony_ci [CLK_AUX1_EB] = &aux1_eb.common.hw, 144662306a36Sopenharmony_ci [CLK_AUX2_EB] = &aux2_eb.common.hw, 144762306a36Sopenharmony_ci [CLK_PROBE_EB] = &probe_eb.common.hw, 144862306a36Sopenharmony_ci [CLK_MM_EB] = &mm_eb.common.hw, 144962306a36Sopenharmony_ci [CLK_GPU_EB] = &gpu_eb.common.hw, 145062306a36Sopenharmony_ci [CLK_MSPI_EB] = &mspi_eb.common.hw, 145162306a36Sopenharmony_ci [CLK_APCPU_DAP_EB] = &apcpu_dap_eb.common.hw, 145262306a36Sopenharmony_ci [CLK_AON_CSSYS_EB] = &aon_cssys_eb.common.hw, 145362306a36Sopenharmony_ci [CLK_CSSYS_APB_EB] = &cssys_apb_eb.common.hw, 145462306a36Sopenharmony_ci [CLK_CSSYS_PUB_EB] = &cssys_pub_eb.common.hw, 145562306a36Sopenharmony_ci [CLK_SDPHY_CFG_EB] = &sdphy_cfg_eb.common.hw, 145662306a36Sopenharmony_ci [CLK_SDPHY_REF_EB] = &sdphy_ref_eb.common.hw, 145762306a36Sopenharmony_ci [CLK_EFUSE_EB] = &efuse_eb.common.hw, 145862306a36Sopenharmony_ci [CLK_GPIO_EB] = &gpio_eb.common.hw, 145962306a36Sopenharmony_ci [CLK_MBOX_EB] = &mbox_eb.common.hw, 146062306a36Sopenharmony_ci [CLK_KPD_EB] = &kpd_eb.common.hw, 146162306a36Sopenharmony_ci [CLK_AON_SYST_EB] = &aon_syst_eb.common.hw, 146262306a36Sopenharmony_ci [CLK_AP_SYST_EB] = &ap_syst_eb.common.hw, 146362306a36Sopenharmony_ci [CLK_AON_TMR_EB] = &aon_tmr_eb.common.hw, 146462306a36Sopenharmony_ci [CLK_OTG_UTMI_EB] = &otg_utmi_eb.common.hw, 146562306a36Sopenharmony_ci [CLK_OTG_PHY_EB] = &otg_phy_eb.common.hw, 146662306a36Sopenharmony_ci [CLK_SPLK_EB] = &splk_eb.common.hw, 146762306a36Sopenharmony_ci [CLK_PIN_EB] = &pin_eb.common.hw, 146862306a36Sopenharmony_ci [CLK_ANA_EB] = &ana_eb.common.hw, 146962306a36Sopenharmony_ci [CLK_APCPU_TS0_EB] = &apcpu_ts0_eb.common.hw, 147062306a36Sopenharmony_ci [CLK_APB_BUSMON_EB] = &apb_busmon_eb.common.hw, 147162306a36Sopenharmony_ci [CLK_AON_IIS_EB] = &aon_iis_eb.common.hw, 147262306a36Sopenharmony_ci [CLK_SCC_EB] = &scc_eb.common.hw, 147362306a36Sopenharmony_ci [CLK_THM0_EB] = &thm0_eb.common.hw, 147462306a36Sopenharmony_ci [CLK_THM1_EB] = &thm1_eb.common.hw, 147562306a36Sopenharmony_ci [CLK_THM2_EB] = &thm2_eb.common.hw, 147662306a36Sopenharmony_ci [CLK_ASIM_TOP_EB] = &asim_top_eb.common.hw, 147762306a36Sopenharmony_ci [CLK_I2C_EB] = &i2c_eb.common.hw, 147862306a36Sopenharmony_ci [CLK_PMU_EB] = &pmu_eb.common.hw, 147962306a36Sopenharmony_ci [CLK_ADI_EB] = &adi_eb.common.hw, 148062306a36Sopenharmony_ci [CLK_EIC_EB] = &eic_eb.common.hw, 148162306a36Sopenharmony_ci [CLK_AP_INTC0_EB] = &ap_intc0_eb.common.hw, 148262306a36Sopenharmony_ci [CLK_AP_INTC1_EB] = &ap_intc1_eb.common.hw, 148362306a36Sopenharmony_ci [CLK_AP_INTC2_EB] = &ap_intc2_eb.common.hw, 148462306a36Sopenharmony_ci [CLK_AP_INTC3_EB] = &ap_intc3_eb.common.hw, 148562306a36Sopenharmony_ci [CLK_AP_INTC4_EB] = &ap_intc4_eb.common.hw, 148662306a36Sopenharmony_ci [CLK_AP_INTC5_EB] = &ap_intc5_eb.common.hw, 148762306a36Sopenharmony_ci [CLK_AUDCP_INTC_EB] = &audcp_intc_eb.common.hw, 148862306a36Sopenharmony_ci [CLK_AP_TMR0_EB] = &ap_tmr0_eb.common.hw, 148962306a36Sopenharmony_ci [CLK_AP_TMR1_EB] = &ap_tmr1_eb.common.hw, 149062306a36Sopenharmony_ci [CLK_AP_TMR2_EB] = &ap_tmr2_eb.common.hw, 149162306a36Sopenharmony_ci [CLK_PWM0_EB] = &pwm0_eb.common.hw, 149262306a36Sopenharmony_ci [CLK_PWM1_EB] = &pwm1_eb.common.hw, 149362306a36Sopenharmony_ci [CLK_PWM2_EB] = &pwm2_eb.common.hw, 149462306a36Sopenharmony_ci [CLK_PWM3_EB] = &pwm3_eb.common.hw, 149562306a36Sopenharmony_ci [CLK_AP_WDG_EB] = &ap_wdg_eb.common.hw, 149662306a36Sopenharmony_ci [CLK_APCPU_WDG_EB] = &apcpu_wdg_eb.common.hw, 149762306a36Sopenharmony_ci [CLK_SERDES_EB] = &serdes_eb.common.hw, 149862306a36Sopenharmony_ci [CLK_ARCH_RTC_EB] = &arch_rtc_eb.common.hw, 149962306a36Sopenharmony_ci [CLK_KPD_RTC_EB] = &kpd_rtc_eb.common.hw, 150062306a36Sopenharmony_ci [CLK_AON_SYST_RTC_EB] = &aon_syst_rtc_eb.common.hw, 150162306a36Sopenharmony_ci [CLK_AP_SYST_RTC_EB] = &ap_syst_rtc_eb.common.hw, 150262306a36Sopenharmony_ci [CLK_AON_TMR_RTC_EB] = &aon_tmr_rtc_eb.common.hw, 150362306a36Sopenharmony_ci [CLK_EIC_RTC_EB] = &eic_rtc_eb.common.hw, 150462306a36Sopenharmony_ci [CLK_EIC_RTCDV5_EB] = &eic_rtcdv5_eb.common.hw, 150562306a36Sopenharmony_ci [CLK_AP_WDG_RTC_EB] = &ap_wdg_rtc_eb.common.hw, 150662306a36Sopenharmony_ci [CLK_AC_WDG_RTC_EB] = &ac_wdg_rtc_eb.common.hw, 150762306a36Sopenharmony_ci [CLK_AP_TMR0_RTC_EB] = &ap_tmr0_rtc_eb.common.hw, 150862306a36Sopenharmony_ci [CLK_AP_TMR1_RTC_EB] = &ap_tmr1_rtc_eb.common.hw, 150962306a36Sopenharmony_ci [CLK_AP_TMR2_RTC_EB] = &ap_tmr2_rtc_eb.common.hw, 151062306a36Sopenharmony_ci [CLK_DCXO_LC_RTC_EB] = &dcxo_lc_rtc_eb.common.hw, 151162306a36Sopenharmony_ci [CLK_BB_CAL_RTC_EB] = &bb_cal_rtc_eb.common.hw, 151262306a36Sopenharmony_ci [CLK_AP_EMMC_RTC_EB] = &ap_emmc_rtc_eb.common.hw, 151362306a36Sopenharmony_ci [CLK_AP_SDIO0_RTC_EB] = &ap_sdio0_rtc_eb.common.hw, 151462306a36Sopenharmony_ci [CLK_AP_SDIO1_RTC_EB] = &ap_sdio1_rtc_eb.common.hw, 151562306a36Sopenharmony_ci [CLK_AP_SDIO2_RTC_EB] = &ap_sdio2_rtc_eb.common.hw, 151662306a36Sopenharmony_ci [CLK_DSI_CSI_TEST_EB] = &dsi_csi_test_eb.common.hw, 151762306a36Sopenharmony_ci [CLK_DJTAG_TCK_EN] = &djtag_tck_en.common.hw, 151862306a36Sopenharmony_ci [CLK_DPHY_REF_EB] = &dphy_ref_eb.common.hw, 151962306a36Sopenharmony_ci [CLK_DMC_REF_EB] = &dmc_ref_eb.common.hw, 152062306a36Sopenharmony_ci [CLK_OTG_REF_EB] = &otg_ref_eb.common.hw, 152162306a36Sopenharmony_ci [CLK_TSEN_EB] = &tsen_eb.common.hw, 152262306a36Sopenharmony_ci [CLK_TMR_EB] = &tmr_eb.common.hw, 152362306a36Sopenharmony_ci [CLK_RC100M_REF_EB] = &rc100m_ref_eb.common.hw, 152462306a36Sopenharmony_ci [CLK_RC100M_FDK_EB] = &rc100m_fdk_eb.common.hw, 152562306a36Sopenharmony_ci [CLK_DEBOUNCE_EB] = &debounce_eb.common.hw, 152662306a36Sopenharmony_ci [CLK_DET_32K_EB] = &det_32k_eb.common.hw, 152762306a36Sopenharmony_ci [CLK_TOP_CSSYS_EB] = &top_cssys_en.common.hw, 152862306a36Sopenharmony_ci [CLK_AP_AXI_EN] = &ap_axi_en.common.hw, 152962306a36Sopenharmony_ci [CLK_SDIO0_2X_EN] = &sdio0_2x_en.common.hw, 153062306a36Sopenharmony_ci [CLK_SDIO0_1X_EN] = &sdio0_1x_en.common.hw, 153162306a36Sopenharmony_ci [CLK_SDIO1_2X_EN] = &sdio1_2x_en.common.hw, 153262306a36Sopenharmony_ci [CLK_SDIO1_1X_EN] = &sdio1_1x_en.common.hw, 153362306a36Sopenharmony_ci [CLK_SDIO2_2X_EN] = &sdio2_2x_en.common.hw, 153462306a36Sopenharmony_ci [CLK_SDIO2_1X_EN] = &sdio2_1x_en.common.hw, 153562306a36Sopenharmony_ci [CLK_EMMC_2X_EN] = &emmc_2x_en.common.hw, 153662306a36Sopenharmony_ci [CLK_EMMC_1X_EN] = &emmc_1x_en.common.hw, 153762306a36Sopenharmony_ci [CLK_PLL_TEST_EN] = &pll_test_en.common.hw, 153862306a36Sopenharmony_ci [CLK_CPHY_CFG_EN] = &cphy_cfg_en.common.hw, 153962306a36Sopenharmony_ci [CLK_DEBUG_TS_EN] = &debug_ts_en.common.hw, 154062306a36Sopenharmony_ci [CLK_ACCESS_AUD_EN] = &access_aud_en.common.hw, 154162306a36Sopenharmony_ci }, 154262306a36Sopenharmony_ci .num = CLK_AON_APB_GATE_NUM, 154362306a36Sopenharmony_ci}; 154462306a36Sopenharmony_ci 154562306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_aon_gate_desc = { 154662306a36Sopenharmony_ci .clk_clks = ums512_aon_gate, 154762306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_aon_gate), 154862306a36Sopenharmony_ci .hw_clks = &ums512_aon_gate_hws, 154962306a36Sopenharmony_ci}; 155062306a36Sopenharmony_ci 155162306a36Sopenharmony_ci/* audcp apb gates */ 155262306a36Sopenharmony_ci/* Audcp apb clocks configure CLK_IGNORE_UNUSED because these clocks may be 155362306a36Sopenharmony_ci * controlled by audcp sys at the same time. It may be cause an execption if 155462306a36Sopenharmony_ci * kernel gates these clock. 155562306a36Sopenharmony_ci */ 155662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_wdg_eb, "audcp-wdg-eb", 155762306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(1), 155862306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 155962306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_rtc_wdg_eb, "audcp-rtc-wdg-eb", 156062306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(2), 156162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 156262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_tmr0_eb, "audcp-tmr0-eb", 156362306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(5), 156462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 156562306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_tmr1_eb, "audcp-tmr1-eb", 156662306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(6), 156762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 156862306a36Sopenharmony_ci 156962306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_audcpapb_gate[] = { 157062306a36Sopenharmony_ci /* address base is 0x3350d000 */ 157162306a36Sopenharmony_ci &audcp_wdg_eb.common, 157262306a36Sopenharmony_ci &audcp_rtc_wdg_eb.common, 157362306a36Sopenharmony_ci &audcp_tmr0_eb.common, 157462306a36Sopenharmony_ci &audcp_tmr1_eb.common, 157562306a36Sopenharmony_ci}; 157662306a36Sopenharmony_ci 157762306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_audcpapb_gate_hws = { 157862306a36Sopenharmony_ci .hws = { 157962306a36Sopenharmony_ci [CLK_AUDCP_WDG_EB] = &audcp_wdg_eb.common.hw, 158062306a36Sopenharmony_ci [CLK_AUDCP_RTC_WDG_EB] = &audcp_rtc_wdg_eb.common.hw, 158162306a36Sopenharmony_ci [CLK_AUDCP_TMR0_EB] = &audcp_tmr0_eb.common.hw, 158262306a36Sopenharmony_ci [CLK_AUDCP_TMR1_EB] = &audcp_tmr1_eb.common.hw, 158362306a36Sopenharmony_ci }, 158462306a36Sopenharmony_ci .num = CLK_AUDCP_APB_GATE_NUM, 158562306a36Sopenharmony_ci}; 158662306a36Sopenharmony_ci 158762306a36Sopenharmony_cistatic const struct sprd_clk_desc ums512_audcpapb_gate_desc = { 158862306a36Sopenharmony_ci .clk_clks = ums512_audcpapb_gate, 158962306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_audcpapb_gate), 159062306a36Sopenharmony_ci .hw_clks = &ums512_audcpapb_gate_hws, 159162306a36Sopenharmony_ci}; 159262306a36Sopenharmony_ci 159362306a36Sopenharmony_ci/* audcp ahb gates */ 159462306a36Sopenharmony_ci/* Audcp aphb clocks configure CLK_IGNORE_UNUSED because these clocks may be 159562306a36Sopenharmony_ci * controlled by audcp sys at the same time. It may be cause an execption if 159662306a36Sopenharmony_ci * kernel gates these clock. 159762306a36Sopenharmony_ci */ 159862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_iis0_eb, "audcp-iis0-eb", 159962306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(0), 160062306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 160162306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_iis1_eb, "audcp-iis1-eb", 160262306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(1), 160362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 160462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_iis2_eb, "audcp-iis2-eb", 160562306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(2), 160662306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 160762306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_uart_eb, "audcp-uart-eb", 160862306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(4), 160962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 161062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_dma_cp_eb, "audcp-dma-cp-eb", 161162306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(5), 161262306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 161362306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_dma_ap_eb, "audcp-dma-ap-eb", 161462306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(6), 161562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 161662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_src48k_eb, "audcp-src48k-eb", 161762306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(10), 161862306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 161962306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_mcdt_eb, "audcp-mcdt-eb", 162062306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(12), 162162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 162262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_vbcifd_eb, "audcp-vbcifd-eb", 162362306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(13), 162462306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 162562306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_vbc_eb, "audcp-vbc-eb", 162662306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(14), 162762306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 162862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_splk_eb, "audcp-splk-eb", 162962306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(15), 163062306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 163162306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_icu_eb, "audcp-icu-eb", 163262306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(16), 163362306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 163462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(dma_ap_ashb_eb, "dma-ap-ashb-eb", 163562306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(17), 163662306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 163762306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(dma_cp_ashb_eb, "dma-cp-ashb-eb", 163862306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(18), 163962306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 164062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_aud_eb, "audcp-aud-eb", 164162306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(19), 164262306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 164362306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_vbc_24m_eb, "audcp-vbc-24m-eb", 164462306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(21), 164562306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 164662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_tmr_26m_eb, "audcp-tmr-26m-eb", 164762306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(22), 164862306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 164962306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(audcp_dvfs_ashb_eb, "audcp-dvfs-ashb-eb", 165062306a36Sopenharmony_ci &access_aud_en.common.hw, 0x0, 0x100, BIT(23), 165162306a36Sopenharmony_ci CLK_IGNORE_UNUSED, SPRD_GATE_NON_AON); 165262306a36Sopenharmony_ci 165362306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_audcpahb_gate[] = { 165462306a36Sopenharmony_ci /* address base is 0x335e0000 */ 165562306a36Sopenharmony_ci &audcp_iis0_eb.common, 165662306a36Sopenharmony_ci &audcp_iis1_eb.common, 165762306a36Sopenharmony_ci &audcp_iis2_eb.common, 165862306a36Sopenharmony_ci &audcp_uart_eb.common, 165962306a36Sopenharmony_ci &audcp_dma_cp_eb.common, 166062306a36Sopenharmony_ci &audcp_dma_ap_eb.common, 166162306a36Sopenharmony_ci &audcp_src48k_eb.common, 166262306a36Sopenharmony_ci &audcp_mcdt_eb.common, 166362306a36Sopenharmony_ci &audcp_vbcifd_eb.common, 166462306a36Sopenharmony_ci &audcp_vbc_eb.common, 166562306a36Sopenharmony_ci &audcp_splk_eb.common, 166662306a36Sopenharmony_ci &audcp_icu_eb.common, 166762306a36Sopenharmony_ci &dma_ap_ashb_eb.common, 166862306a36Sopenharmony_ci &dma_cp_ashb_eb.common, 166962306a36Sopenharmony_ci &audcp_aud_eb.common, 167062306a36Sopenharmony_ci &audcp_vbc_24m_eb.common, 167162306a36Sopenharmony_ci &audcp_tmr_26m_eb.common, 167262306a36Sopenharmony_ci &audcp_dvfs_ashb_eb.common, 167362306a36Sopenharmony_ci}; 167462306a36Sopenharmony_ci 167562306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_audcpahb_gate_hws = { 167662306a36Sopenharmony_ci .hws = { 167762306a36Sopenharmony_ci [CLK_AUDCP_IIS0_EB] = &audcp_iis0_eb.common.hw, 167862306a36Sopenharmony_ci [CLK_AUDCP_IIS1_EB] = &audcp_iis1_eb.common.hw, 167962306a36Sopenharmony_ci [CLK_AUDCP_IIS2_EB] = &audcp_iis2_eb.common.hw, 168062306a36Sopenharmony_ci [CLK_AUDCP_UART_EB] = &audcp_uart_eb.common.hw, 168162306a36Sopenharmony_ci [CLK_AUDCP_DMA_CP_EB] = &audcp_dma_cp_eb.common.hw, 168262306a36Sopenharmony_ci [CLK_AUDCP_DMA_AP_EB] = &audcp_dma_ap_eb.common.hw, 168362306a36Sopenharmony_ci [CLK_AUDCP_SRC48K_EB] = &audcp_src48k_eb.common.hw, 168462306a36Sopenharmony_ci [CLK_AUDCP_MCDT_EB] = &audcp_mcdt_eb.common.hw, 168562306a36Sopenharmony_ci [CLK_AUDCP_VBCIFD_EB] = &audcp_vbcifd_eb.common.hw, 168662306a36Sopenharmony_ci [CLK_AUDCP_VBC_EB] = &audcp_vbc_eb.common.hw, 168762306a36Sopenharmony_ci [CLK_AUDCP_SPLK_EB] = &audcp_splk_eb.common.hw, 168862306a36Sopenharmony_ci [CLK_AUDCP_ICU_EB] = &audcp_icu_eb.common.hw, 168962306a36Sopenharmony_ci [CLK_AUDCP_DMA_AP_ASHB_EB] = &dma_ap_ashb_eb.common.hw, 169062306a36Sopenharmony_ci [CLK_AUDCP_DMA_CP_ASHB_EB] = &dma_cp_ashb_eb.common.hw, 169162306a36Sopenharmony_ci [CLK_AUDCP_AUD_EB] = &audcp_aud_eb.common.hw, 169262306a36Sopenharmony_ci [CLK_AUDCP_VBC_24M_EB] = &audcp_vbc_24m_eb.common.hw, 169362306a36Sopenharmony_ci [CLK_AUDCP_TMR_26M_EB] = &audcp_tmr_26m_eb.common.hw, 169462306a36Sopenharmony_ci [CLK_AUDCP_DVFS_ASHB_EB] = &audcp_dvfs_ashb_eb.common.hw, 169562306a36Sopenharmony_ci }, 169662306a36Sopenharmony_ci .num = CLK_AUDCP_AHB_GATE_NUM, 169762306a36Sopenharmony_ci}; 169862306a36Sopenharmony_ci 169962306a36Sopenharmony_cistatic const struct sprd_clk_desc ums512_audcpahb_gate_desc = { 170062306a36Sopenharmony_ci .clk_clks = ums512_audcpahb_gate, 170162306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_audcpahb_gate), 170262306a36Sopenharmony_ci .hw_clks = &ums512_audcpahb_gate_hws, 170362306a36Sopenharmony_ci}; 170462306a36Sopenharmony_ci 170562306a36Sopenharmony_ci/* gpu clocks */ 170662306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(gpu_core_gate, "gpu-core-gate", &gpu_eb.common.hw, 170762306a36Sopenharmony_ci 0x4, BIT(0), 0, 0); 170862306a36Sopenharmony_ci 170962306a36Sopenharmony_cistatic const struct clk_parent_data gpu_parents[] = { 171062306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 171162306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 171262306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 171362306a36Sopenharmony_ci { .hw = &lpll_614m4.hw }, 171462306a36Sopenharmony_ci { .hw = &twpll_768m.hw }, 171562306a36Sopenharmony_ci { .hw = &gpll.common.hw }, 171662306a36Sopenharmony_ci}; 171762306a36Sopenharmony_ci 171862306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(gpu_core_clk, "gpu-core-clk", gpu_parents, 171962306a36Sopenharmony_ci 0x4, 4, 3, 8, 3, 0); 172062306a36Sopenharmony_ci 172162306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(gpu_mem_gate, "gpu-mem-gate", &gpu_eb.common.hw, 172262306a36Sopenharmony_ci 0x8, BIT(0), 0, 0); 172362306a36Sopenharmony_ci 172462306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(gpu_mem_clk, "gpu-mem-clk", gpu_parents, 172562306a36Sopenharmony_ci 0x8, 4, 3, 8, 3, 0); 172662306a36Sopenharmony_ci 172762306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(gpu_sys_gate, "gpu-sys-gate", &gpu_eb.common.hw, 172862306a36Sopenharmony_ci 0xc, BIT(0), 0, 0); 172962306a36Sopenharmony_ci 173062306a36Sopenharmony_cistatic SPRD_DIV_CLK_HW(gpu_sys_clk, "gpu-sys-clk", &gpu_eb.common.hw, 173162306a36Sopenharmony_ci 0xc, 4, 3, 0); 173262306a36Sopenharmony_ci 173362306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_gpu_clk[] = { 173462306a36Sopenharmony_ci /* address base is 0x60100000 */ 173562306a36Sopenharmony_ci &gpu_core_gate.common, 173662306a36Sopenharmony_ci &gpu_core_clk.common, 173762306a36Sopenharmony_ci &gpu_mem_gate.common, 173862306a36Sopenharmony_ci &gpu_mem_clk.common, 173962306a36Sopenharmony_ci &gpu_sys_gate.common, 174062306a36Sopenharmony_ci &gpu_sys_clk.common, 174162306a36Sopenharmony_ci}; 174262306a36Sopenharmony_ci 174362306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_gpu_clk_hws = { 174462306a36Sopenharmony_ci .hws = { 174562306a36Sopenharmony_ci [CLK_GPU_CORE_EB] = &gpu_core_gate.common.hw, 174662306a36Sopenharmony_ci [CLK_GPU_CORE] = &gpu_core_clk.common.hw, 174762306a36Sopenharmony_ci [CLK_GPU_MEM_EB] = &gpu_mem_gate.common.hw, 174862306a36Sopenharmony_ci [CLK_GPU_MEM] = &gpu_mem_clk.common.hw, 174962306a36Sopenharmony_ci [CLK_GPU_SYS_EB] = &gpu_sys_gate.common.hw, 175062306a36Sopenharmony_ci [CLK_GPU_SYS] = &gpu_sys_clk.common.hw, 175162306a36Sopenharmony_ci }, 175262306a36Sopenharmony_ci .num = CLK_GPU_CLK_NUM, 175362306a36Sopenharmony_ci}; 175462306a36Sopenharmony_ci 175562306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_gpu_clk_desc = { 175662306a36Sopenharmony_ci .clk_clks = ums512_gpu_clk, 175762306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_gpu_clk), 175862306a36Sopenharmony_ci .hw_clks = &ums512_gpu_clk_hws, 175962306a36Sopenharmony_ci}; 176062306a36Sopenharmony_ci 176162306a36Sopenharmony_ci/* mm clocks */ 176262306a36Sopenharmony_cistatic const struct clk_parent_data mm_ahb_parents[] = { 176362306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 176462306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 176562306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 176662306a36Sopenharmony_ci { .hw = &twpll_153m6.hw }, 176762306a36Sopenharmony_ci}; 176862306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(mm_ahb_clk, "mm-ahb-clk", mm_ahb_parents, 176962306a36Sopenharmony_ci 0x20, 0, 2, UMS512_MUX_FLAG); 177062306a36Sopenharmony_ci 177162306a36Sopenharmony_cistatic const struct clk_parent_data mm_mtx_parents[] = { 177262306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 177362306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 177462306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 177562306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 177662306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 177762306a36Sopenharmony_ci { .hw = &isppll_468m.hw }, 177862306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 177962306a36Sopenharmony_ci}; 178062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(mm_mtx_clk, "mm-mtx-clk", mm_mtx_parents, 178162306a36Sopenharmony_ci 0x24, 0, 3, UMS512_MUX_FLAG); 178262306a36Sopenharmony_ci 178362306a36Sopenharmony_cistatic const struct clk_parent_data sensor_parents[] = { 178462306a36Sopenharmony_ci { .fw_name = "ext-26m" }, 178562306a36Sopenharmony_ci { .hw = &twpll_48m.hw }, 178662306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 178762306a36Sopenharmony_ci { .hw = &twpll_96m.hw }, 178862306a36Sopenharmony_ci}; 178962306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(sensor0_clk, "sensor0-clk", sensor_parents, 179062306a36Sopenharmony_ci 0x28, 0, 2, 8, 3, 0); 179162306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(sensor1_clk, "sensor1-clk", sensor_parents, 179262306a36Sopenharmony_ci 0x2c, 0, 2, 8, 3, 0); 179362306a36Sopenharmony_cistatic SPRD_COMP_CLK_DATA(sensor2_clk, "sensor2-clk", sensor_parents, 179462306a36Sopenharmony_ci 0x30, 0, 2, 8, 3, 0); 179562306a36Sopenharmony_ci 179662306a36Sopenharmony_cistatic const struct clk_parent_data cpp_parents[] = { 179762306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 179862306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 179962306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 180062306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 180162306a36Sopenharmony_ci}; 180262306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(cpp_clk, "cpp-clk", cpp_parents, 180362306a36Sopenharmony_ci 0x34, 0, 2, UMS512_MUX_FLAG); 180462306a36Sopenharmony_ci 180562306a36Sopenharmony_cistatic const struct clk_parent_data jpg_parents[] = { 180662306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 180762306a36Sopenharmony_ci { .hw = &twpll_128m.hw }, 180862306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 180962306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 181062306a36Sopenharmony_ci}; 181162306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(jpg_clk, "jpg-clk", jpg_parents, 181262306a36Sopenharmony_ci 0x38, 0, 2, UMS512_MUX_FLAG); 181362306a36Sopenharmony_ci 181462306a36Sopenharmony_cistatic const struct clk_parent_data fd_parents[] = { 181562306a36Sopenharmony_ci { .hw = &twpll_76m8.hw }, 181662306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 181762306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 181862306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 181962306a36Sopenharmony_ci}; 182062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(fd_clk, "fd-clk", fd_parents, 182162306a36Sopenharmony_ci 0x3c, 0, 2, UMS512_MUX_FLAG); 182262306a36Sopenharmony_ci 182362306a36Sopenharmony_cistatic const struct clk_parent_data dcam_if_parents[] = { 182462306a36Sopenharmony_ci { .hw = &twpll_192m.hw }, 182562306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 182662306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 182762306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 182862306a36Sopenharmony_ci { .hw = &isppll_468m.hw }, 182962306a36Sopenharmony_ci}; 183062306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(dcam_if_clk, "dcam-if-clk", dcam_if_parents, 183162306a36Sopenharmony_ci 0x40, 0, 3, UMS512_MUX_FLAG); 183262306a36Sopenharmony_ci 183362306a36Sopenharmony_cistatic const struct clk_parent_data dcam_axi_parents[] = { 183462306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 183562306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 183662306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 183762306a36Sopenharmony_ci { .hw = &isppll_468m.hw }, 183862306a36Sopenharmony_ci}; 183962306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(dcam_axi_clk, "dcam-axi-clk", dcam_axi_parents, 184062306a36Sopenharmony_ci 0x44, 0, 2, UMS512_MUX_FLAG); 184162306a36Sopenharmony_ci 184262306a36Sopenharmony_cistatic const struct clk_parent_data isp_parents[] = { 184362306a36Sopenharmony_ci { .hw = &twpll_256m.hw }, 184462306a36Sopenharmony_ci { .hw = &twpll_307m2.hw }, 184562306a36Sopenharmony_ci { .hw = &twpll_384m.hw }, 184662306a36Sopenharmony_ci { .hw = &isppll_468m.hw }, 184762306a36Sopenharmony_ci { .hw = &twpll_512m.hw }, 184862306a36Sopenharmony_ci}; 184962306a36Sopenharmony_cistatic SPRD_MUX_CLK_DATA(isp_clk, "isp-clk", isp_parents, 185062306a36Sopenharmony_ci 0x48, 0, 3, UMS512_MUX_FLAG); 185162306a36Sopenharmony_ci 185262306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(mipi_csi0, "mipi-csi0", &mm_eb.common.hw, 185362306a36Sopenharmony_ci 0x4c, BIT(16), CLK_IGNORE_UNUSED, 0); 185462306a36Sopenharmony_ci 185562306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(mipi_csi1, "mipi-csi1", &mm_eb.common.hw, 185662306a36Sopenharmony_ci 0x50, BIT(16), CLK_IGNORE_UNUSED, 0); 185762306a36Sopenharmony_ci 185862306a36Sopenharmony_cistatic SPRD_GATE_CLK_HW(mipi_csi2, "mipi-csi2", &mm_eb.common.hw, 185962306a36Sopenharmony_ci 0x54, BIT(16), CLK_IGNORE_UNUSED, 0); 186062306a36Sopenharmony_ci 186162306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_mm_clk[] = { 186262306a36Sopenharmony_ci /* address base is 0x62100000 */ 186362306a36Sopenharmony_ci &mm_ahb_clk.common, 186462306a36Sopenharmony_ci &mm_mtx_clk.common, 186562306a36Sopenharmony_ci &sensor0_clk.common, 186662306a36Sopenharmony_ci &sensor1_clk.common, 186762306a36Sopenharmony_ci &sensor2_clk.common, 186862306a36Sopenharmony_ci &cpp_clk.common, 186962306a36Sopenharmony_ci &jpg_clk.common, 187062306a36Sopenharmony_ci &fd_clk.common, 187162306a36Sopenharmony_ci &dcam_if_clk.common, 187262306a36Sopenharmony_ci &dcam_axi_clk.common, 187362306a36Sopenharmony_ci &isp_clk.common, 187462306a36Sopenharmony_ci &mipi_csi0.common, 187562306a36Sopenharmony_ci &mipi_csi1.common, 187662306a36Sopenharmony_ci &mipi_csi2.common, 187762306a36Sopenharmony_ci}; 187862306a36Sopenharmony_ci 187962306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_mm_clk_hws = { 188062306a36Sopenharmony_ci .hws = { 188162306a36Sopenharmony_ci [CLK_MM_AHB] = &mm_ahb_clk.common.hw, 188262306a36Sopenharmony_ci [CLK_MM_MTX] = &mm_mtx_clk.common.hw, 188362306a36Sopenharmony_ci [CLK_SENSOR0] = &sensor0_clk.common.hw, 188462306a36Sopenharmony_ci [CLK_SENSOR1] = &sensor1_clk.common.hw, 188562306a36Sopenharmony_ci [CLK_SENSOR2] = &sensor2_clk.common.hw, 188662306a36Sopenharmony_ci [CLK_CPP] = &cpp_clk.common.hw, 188762306a36Sopenharmony_ci [CLK_JPG] = &jpg_clk.common.hw, 188862306a36Sopenharmony_ci [CLK_FD] = &fd_clk.common.hw, 188962306a36Sopenharmony_ci [CLK_DCAM_IF] = &dcam_if_clk.common.hw, 189062306a36Sopenharmony_ci [CLK_DCAM_AXI] = &dcam_axi_clk.common.hw, 189162306a36Sopenharmony_ci [CLK_ISP] = &isp_clk.common.hw, 189262306a36Sopenharmony_ci [CLK_MIPI_CSI0] = &mipi_csi0.common.hw, 189362306a36Sopenharmony_ci [CLK_MIPI_CSI1] = &mipi_csi1.common.hw, 189462306a36Sopenharmony_ci [CLK_MIPI_CSI2] = &mipi_csi2.common.hw, 189562306a36Sopenharmony_ci }, 189662306a36Sopenharmony_ci .num = CLK_MM_CLK_NUM, 189762306a36Sopenharmony_ci}; 189862306a36Sopenharmony_ci 189962306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_mm_clk_desc = { 190062306a36Sopenharmony_ci .clk_clks = ums512_mm_clk, 190162306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_mm_clk), 190262306a36Sopenharmony_ci .hw_clks = &ums512_mm_clk_hws, 190362306a36Sopenharmony_ci}; 190462306a36Sopenharmony_ci 190562306a36Sopenharmony_ci/* mm gate clocks */ 190662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_cpp_eb, "mm-cpp-eb", &mm_eb.common.hw, 190762306a36Sopenharmony_ci 0x0, 0x1000, BIT(0), 0, 0); 190862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_jpg_eb, "mm-jpg-eb", &mm_eb.common.hw, 190962306a36Sopenharmony_ci 0x0, 0x1000, BIT(1), 0, 0); 191062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_dcam_eb, "mm-dcam-eb", &mm_eb.common.hw, 191162306a36Sopenharmony_ci 0x0, 0x1000, BIT(2), 0, 0); 191262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_isp_eb, "mm-isp-eb", &mm_eb.common.hw, 191362306a36Sopenharmony_ci 0x0, 0x1000, BIT(3), 0, 0); 191462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_csi2_eb, "mm-csi2-eb", &mm_eb.common.hw, 191562306a36Sopenharmony_ci 0x0, 0x1000, BIT(4), 0, 0); 191662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_csi1_eb, "mm-csi1-eb", &mm_eb.common.hw, 191762306a36Sopenharmony_ci 0x0, 0x1000, BIT(5), 0, 0); 191862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_csi0_eb, "mm-csi0-eb", &mm_eb.common.hw, 191962306a36Sopenharmony_ci 0x0, 0x1000, BIT(6), 0, 0); 192062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_ckg_eb, "mm-ckg-eb", &mm_eb.common.hw, 192162306a36Sopenharmony_ci 0x0, 0x1000, BIT(7), 0, 0); 192262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_isp_ahb_eb, "mm-isp-ahb-eb", &mm_eb.common.hw, 192362306a36Sopenharmony_ci 0x0, 0x1000, BIT(8), 0, 0); 192462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_dvfs_eb, "mm-dvfs-eb", &mm_eb.common.hw, 192562306a36Sopenharmony_ci 0x0, 0x1000, BIT(9), 0, 0); 192662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_fd_eb, "mm-fd-eb", &mm_eb.common.hw, 192762306a36Sopenharmony_ci 0x0, 0x1000, BIT(10), 0, 0); 192862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_sensor2_en, "mm-sensor2-en", &mm_eb.common.hw, 192962306a36Sopenharmony_ci 0x8, 0x1000, BIT(0), 0, 0); 193062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_sensor1_en, "mm-sensor1-en", &mm_eb.common.hw, 193162306a36Sopenharmony_ci 0x8, 0x1000, BIT(1), 0, 0); 193262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_sensor0_en, "mm-sensor0-en", &mm_eb.common.hw, 193362306a36Sopenharmony_ci 0x8, 0x1000, BIT(2), 0, 0); 193462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_mipi_csi2_en, "mm-mipi-csi2-en", &mm_eb.common.hw, 193562306a36Sopenharmony_ci 0x8, 0x1000, BIT(3), 0, 0); 193662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_mipi_csi1_en, "mm-mipi-csi1-en", &mm_eb.common.hw, 193762306a36Sopenharmony_ci 0x8, 0x1000, BIT(4), 0, 0); 193862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_mipi_csi0_en, "mm-mipi-csi0-en", &mm_eb.common.hw, 193962306a36Sopenharmony_ci 0x8, 0x1000, BIT(5), 0, 0); 194062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_dcam_axi_en, "mm-dcam-axi-en", &mm_eb.common.hw, 194162306a36Sopenharmony_ci 0x8, 0x1000, BIT(6), 0, 0); 194262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_isp_axi_en, "mm-isp-axi-en", &mm_eb.common.hw, 194362306a36Sopenharmony_ci 0x8, 0x1000, BIT(7), 0, 0); 194462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_HW(mm_cphy_en, "mm-cphy-en", &mm_eb.common.hw, 194562306a36Sopenharmony_ci 0x8, 0x1000, BIT(8), 0, 0); 194662306a36Sopenharmony_ci 194762306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_mm_gate_clk[] = { 194862306a36Sopenharmony_ci /* address base is 0x62200000 */ 194962306a36Sopenharmony_ci &mm_cpp_eb.common, 195062306a36Sopenharmony_ci &mm_jpg_eb.common, 195162306a36Sopenharmony_ci &mm_dcam_eb.common, 195262306a36Sopenharmony_ci &mm_isp_eb.common, 195362306a36Sopenharmony_ci &mm_csi2_eb.common, 195462306a36Sopenharmony_ci &mm_csi1_eb.common, 195562306a36Sopenharmony_ci &mm_csi0_eb.common, 195662306a36Sopenharmony_ci &mm_ckg_eb.common, 195762306a36Sopenharmony_ci &mm_isp_ahb_eb.common, 195862306a36Sopenharmony_ci &mm_dvfs_eb.common, 195962306a36Sopenharmony_ci &mm_fd_eb.common, 196062306a36Sopenharmony_ci &mm_sensor2_en.common, 196162306a36Sopenharmony_ci &mm_sensor1_en.common, 196262306a36Sopenharmony_ci &mm_sensor0_en.common, 196362306a36Sopenharmony_ci &mm_mipi_csi2_en.common, 196462306a36Sopenharmony_ci &mm_mipi_csi1_en.common, 196562306a36Sopenharmony_ci &mm_mipi_csi0_en.common, 196662306a36Sopenharmony_ci &mm_dcam_axi_en.common, 196762306a36Sopenharmony_ci &mm_isp_axi_en.common, 196862306a36Sopenharmony_ci &mm_cphy_en.common, 196962306a36Sopenharmony_ci}; 197062306a36Sopenharmony_ci 197162306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_mm_gate_clk_hws = { 197262306a36Sopenharmony_ci .hws = { 197362306a36Sopenharmony_ci [CLK_MM_CPP_EB] = &mm_cpp_eb.common.hw, 197462306a36Sopenharmony_ci [CLK_MM_JPG_EB] = &mm_jpg_eb.common.hw, 197562306a36Sopenharmony_ci [CLK_MM_DCAM_EB] = &mm_dcam_eb.common.hw, 197662306a36Sopenharmony_ci [CLK_MM_ISP_EB] = &mm_isp_eb.common.hw, 197762306a36Sopenharmony_ci [CLK_MM_CSI2_EB] = &mm_csi2_eb.common.hw, 197862306a36Sopenharmony_ci [CLK_MM_CSI1_EB] = &mm_csi1_eb.common.hw, 197962306a36Sopenharmony_ci [CLK_MM_CSI0_EB] = &mm_csi0_eb.common.hw, 198062306a36Sopenharmony_ci [CLK_MM_CKG_EB] = &mm_ckg_eb.common.hw, 198162306a36Sopenharmony_ci [CLK_ISP_AHB_EB] = &mm_isp_ahb_eb.common.hw, 198262306a36Sopenharmony_ci [CLK_MM_DVFS_EB] = &mm_dvfs_eb.common.hw, 198362306a36Sopenharmony_ci [CLK_MM_FD_EB] = &mm_fd_eb.common.hw, 198462306a36Sopenharmony_ci [CLK_MM_SENSOR2_EB] = &mm_sensor2_en.common.hw, 198562306a36Sopenharmony_ci [CLK_MM_SENSOR1_EB] = &mm_sensor1_en.common.hw, 198662306a36Sopenharmony_ci [CLK_MM_SENSOR0_EB] = &mm_sensor0_en.common.hw, 198762306a36Sopenharmony_ci [CLK_MM_MIPI_CSI2_EB] = &mm_mipi_csi2_en.common.hw, 198862306a36Sopenharmony_ci [CLK_MM_MIPI_CSI1_EB] = &mm_mipi_csi1_en.common.hw, 198962306a36Sopenharmony_ci [CLK_MM_MIPI_CSI0_EB] = &mm_mipi_csi0_en.common.hw, 199062306a36Sopenharmony_ci [CLK_DCAM_AXI_EB] = &mm_dcam_axi_en.common.hw, 199162306a36Sopenharmony_ci [CLK_ISP_AXI_EB] = &mm_isp_axi_en.common.hw, 199262306a36Sopenharmony_ci [CLK_MM_CPHY_EB] = &mm_cphy_en.common.hw, 199362306a36Sopenharmony_ci }, 199462306a36Sopenharmony_ci .num = CLK_MM_GATE_CLK_NUM, 199562306a36Sopenharmony_ci}; 199662306a36Sopenharmony_ci 199762306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_mm_gate_clk_desc = { 199862306a36Sopenharmony_ci .clk_clks = ums512_mm_gate_clk, 199962306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_mm_gate_clk), 200062306a36Sopenharmony_ci .hw_clks = &ums512_mm_gate_clk_hws, 200162306a36Sopenharmony_ci}; 200262306a36Sopenharmony_ci 200362306a36Sopenharmony_ci/* ap apb gates */ 200462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sim0_eb, "sim0-eb", "ext-26m", 200562306a36Sopenharmony_ci 0x0, 0x1000, BIT(0), 0, 0); 200662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(iis0_eb, "iis0-eb", "ext-26m", 200762306a36Sopenharmony_ci 0x0, 0x1000, BIT(1), 0, 0); 200862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(iis1_eb, "iis1-eb", "ext-26m", 200962306a36Sopenharmony_ci 0x0, 0x1000, BIT(2), 0, 0); 201062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(iis2_eb, "iis2-eb", "ext-26m", 201162306a36Sopenharmony_ci 0x0, 0x1000, BIT(3), 0, 0); 201262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(apb_reg_eb, "apb-reg-eb", "ext-26m", 201362306a36Sopenharmony_ci 0x0, 0x1000, BIT(4), CLK_IGNORE_UNUSED, 0); 201462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi0_eb, "spi0-eb", "ext-26m", 201562306a36Sopenharmony_ci 0x0, 0x1000, BIT(5), 0, 0); 201662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi1_eb, "spi1-eb", "ext-26m", 201762306a36Sopenharmony_ci 0x0, 0x1000, BIT(6), 0, 0); 201862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi2_eb, "spi2-eb", "ext-26m", 201962306a36Sopenharmony_ci 0x0, 0x1000, BIT(7), 0, 0); 202062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi3_eb, "spi3-eb", "ext-26m", 202162306a36Sopenharmony_ci 0x0, 0x1000, BIT(8), 0, 0); 202262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c0_eb, "i2c0-eb", "ext-26m", 202362306a36Sopenharmony_ci 0x0, 0x1000, BIT(9), 0, 0); 202462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c1_eb, "i2c1-eb", "ext-26m", 202562306a36Sopenharmony_ci 0x0, 0x1000, BIT(10), 0, 0); 202662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c2_eb, "i2c2-eb", "ext-26m", 202762306a36Sopenharmony_ci 0x0, 0x1000, BIT(11), 0, 0); 202862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c3_eb, "i2c3-eb", "ext-26m", 202962306a36Sopenharmony_ci 0x0, 0x1000, BIT(12), 0, 0); 203062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(i2c4_eb, "i2c4-eb", "ext-26m", 203162306a36Sopenharmony_ci 0x0, 0x1000, BIT(13), 0, 0); 203262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(uart0_eb, "uart0-eb", "ext-26m", 203362306a36Sopenharmony_ci 0x0, 0x1000, BIT(14), CLK_IGNORE_UNUSED, 0); 203462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(uart1_eb, "uart1-eb", "ext-26m", 203562306a36Sopenharmony_ci 0x0, 0x1000, BIT(15), CLK_IGNORE_UNUSED, 0); 203662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(uart2_eb, "uart2-eb", "ext-26m", 203762306a36Sopenharmony_ci 0x0, 0x1000, BIT(16), CLK_IGNORE_UNUSED, 0); 203862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sim0_32k_eb, "sim0-32k-eb", "ext-26m", 203962306a36Sopenharmony_ci 0x0, 0x1000, BIT(17), CLK_IGNORE_UNUSED, 0); 204062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi0_lfin_eb, "spi0-lfin-eb", "ext-26m", 204162306a36Sopenharmony_ci 0x0, 0x1000, BIT(18), CLK_IGNORE_UNUSED, 0); 204262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi1_lfin_eb, "spi1-lfin-eb", "ext-26m", 204362306a36Sopenharmony_ci 0x0, 0x1000, BIT(19), CLK_IGNORE_UNUSED, 0); 204462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi2_lfin_eb, "spi2-lfin-eb", "ext-26m", 204562306a36Sopenharmony_ci 0x0, 0x1000, BIT(20), CLK_IGNORE_UNUSED, 0); 204662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(spi3_lfin_eb, "spi3-lfin-eb", "ext-26m", 204762306a36Sopenharmony_ci 0x0, 0x1000, BIT(21), CLK_IGNORE_UNUSED, 0); 204862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio0_eb, "sdio0-eb", "ext-26m", 204962306a36Sopenharmony_ci 0x0, 0x1000, BIT(22), 0, 0); 205062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio1_eb, "sdio1-eb", "ext-26m", 205162306a36Sopenharmony_ci 0x0, 0x1000, BIT(23), 0, 0); 205262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio2_eb, "sdio2-eb", "ext-26m", 205362306a36Sopenharmony_ci 0x0, 0x1000, BIT(24), 0, 0); 205462306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(emmc_eb, "emmc-eb", "ext-26m", 205562306a36Sopenharmony_ci 0x0, 0x1000, BIT(25), 0, 0); 205662306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio0_32k_eb, "sdio0-32k-eb", "ext-26m", 205762306a36Sopenharmony_ci 0x0, 0x1000, BIT(26), 0, 0); 205862306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio1_32k_eb, "sdio1-32k-eb", "ext-26m", 205962306a36Sopenharmony_ci 0x0, 0x1000, BIT(27), 0, 0); 206062306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(sdio2_32k_eb, "sdio2-32k-eb", "ext-26m", 206162306a36Sopenharmony_ci 0x0, 0x1000, BIT(28), 0, 0); 206262306a36Sopenharmony_cistatic SPRD_SC_GATE_CLK_FW_NAME(emmc_32k_eb, "emmc-32k-eb", "ext-26m", 206362306a36Sopenharmony_ci 0x0, 0x1000, BIT(29), 0, 0); 206462306a36Sopenharmony_ci 206562306a36Sopenharmony_cistatic struct sprd_clk_common *ums512_apapb_gate[] = { 206662306a36Sopenharmony_ci /* address base is 0x71000000 */ 206762306a36Sopenharmony_ci &sim0_eb.common, 206862306a36Sopenharmony_ci &iis0_eb.common, 206962306a36Sopenharmony_ci &iis1_eb.common, 207062306a36Sopenharmony_ci &iis2_eb.common, 207162306a36Sopenharmony_ci &apb_reg_eb.common, 207262306a36Sopenharmony_ci &spi0_eb.common, 207362306a36Sopenharmony_ci &spi1_eb.common, 207462306a36Sopenharmony_ci &spi2_eb.common, 207562306a36Sopenharmony_ci &spi3_eb.common, 207662306a36Sopenharmony_ci &i2c0_eb.common, 207762306a36Sopenharmony_ci &i2c1_eb.common, 207862306a36Sopenharmony_ci &i2c2_eb.common, 207962306a36Sopenharmony_ci &i2c3_eb.common, 208062306a36Sopenharmony_ci &i2c4_eb.common, 208162306a36Sopenharmony_ci &uart0_eb.common, 208262306a36Sopenharmony_ci &uart1_eb.common, 208362306a36Sopenharmony_ci &uart2_eb.common, 208462306a36Sopenharmony_ci &sim0_32k_eb.common, 208562306a36Sopenharmony_ci &spi0_lfin_eb.common, 208662306a36Sopenharmony_ci &spi1_lfin_eb.common, 208762306a36Sopenharmony_ci &spi2_lfin_eb.common, 208862306a36Sopenharmony_ci &spi3_lfin_eb.common, 208962306a36Sopenharmony_ci &sdio0_eb.common, 209062306a36Sopenharmony_ci &sdio1_eb.common, 209162306a36Sopenharmony_ci &sdio2_eb.common, 209262306a36Sopenharmony_ci &emmc_eb.common, 209362306a36Sopenharmony_ci &sdio0_32k_eb.common, 209462306a36Sopenharmony_ci &sdio1_32k_eb.common, 209562306a36Sopenharmony_ci &sdio2_32k_eb.common, 209662306a36Sopenharmony_ci &emmc_32k_eb.common, 209762306a36Sopenharmony_ci}; 209862306a36Sopenharmony_ci 209962306a36Sopenharmony_cistatic struct clk_hw_onecell_data ums512_apapb_gate_hws = { 210062306a36Sopenharmony_ci .hws = { 210162306a36Sopenharmony_ci [CLK_SIM0_EB] = &sim0_eb.common.hw, 210262306a36Sopenharmony_ci [CLK_IIS0_EB] = &iis0_eb.common.hw, 210362306a36Sopenharmony_ci [CLK_IIS1_EB] = &iis1_eb.common.hw, 210462306a36Sopenharmony_ci [CLK_IIS2_EB] = &iis2_eb.common.hw, 210562306a36Sopenharmony_ci [CLK_APB_REG_EB] = &apb_reg_eb.common.hw, 210662306a36Sopenharmony_ci [CLK_SPI0_EB] = &spi0_eb.common.hw, 210762306a36Sopenharmony_ci [CLK_SPI1_EB] = &spi1_eb.common.hw, 210862306a36Sopenharmony_ci [CLK_SPI2_EB] = &spi2_eb.common.hw, 210962306a36Sopenharmony_ci [CLK_SPI3_EB] = &spi3_eb.common.hw, 211062306a36Sopenharmony_ci [CLK_I2C0_EB] = &i2c0_eb.common.hw, 211162306a36Sopenharmony_ci [CLK_I2C1_EB] = &i2c1_eb.common.hw, 211262306a36Sopenharmony_ci [CLK_I2C2_EB] = &i2c2_eb.common.hw, 211362306a36Sopenharmony_ci [CLK_I2C3_EB] = &i2c3_eb.common.hw, 211462306a36Sopenharmony_ci [CLK_I2C4_EB] = &i2c4_eb.common.hw, 211562306a36Sopenharmony_ci [CLK_UART0_EB] = &uart0_eb.common.hw, 211662306a36Sopenharmony_ci [CLK_UART1_EB] = &uart1_eb.common.hw, 211762306a36Sopenharmony_ci [CLK_UART2_EB] = &uart2_eb.common.hw, 211862306a36Sopenharmony_ci [CLK_SIM0_32K_EB] = &sim0_32k_eb.common.hw, 211962306a36Sopenharmony_ci [CLK_SPI0_LFIN_EB] = &spi0_lfin_eb.common.hw, 212062306a36Sopenharmony_ci [CLK_SPI1_LFIN_EB] = &spi1_lfin_eb.common.hw, 212162306a36Sopenharmony_ci [CLK_SPI2_LFIN_EB] = &spi2_lfin_eb.common.hw, 212262306a36Sopenharmony_ci [CLK_SPI3_LFIN_EB] = &spi3_lfin_eb.common.hw, 212362306a36Sopenharmony_ci [CLK_SDIO0_EB] = &sdio0_eb.common.hw, 212462306a36Sopenharmony_ci [CLK_SDIO1_EB] = &sdio1_eb.common.hw, 212562306a36Sopenharmony_ci [CLK_SDIO2_EB] = &sdio2_eb.common.hw, 212662306a36Sopenharmony_ci [CLK_EMMC_EB] = &emmc_eb.common.hw, 212762306a36Sopenharmony_ci [CLK_SDIO0_32K_EB] = &sdio0_32k_eb.common.hw, 212862306a36Sopenharmony_ci [CLK_SDIO1_32K_EB] = &sdio1_32k_eb.common.hw, 212962306a36Sopenharmony_ci [CLK_SDIO2_32K_EB] = &sdio2_32k_eb.common.hw, 213062306a36Sopenharmony_ci [CLK_EMMC_32K_EB] = &emmc_32k_eb.common.hw, 213162306a36Sopenharmony_ci }, 213262306a36Sopenharmony_ci .num = CLK_AP_APB_GATE_NUM, 213362306a36Sopenharmony_ci}; 213462306a36Sopenharmony_ci 213562306a36Sopenharmony_cistatic struct sprd_clk_desc ums512_apapb_gate_desc = { 213662306a36Sopenharmony_ci .clk_clks = ums512_apapb_gate, 213762306a36Sopenharmony_ci .num_clk_clks = ARRAY_SIZE(ums512_apapb_gate), 213862306a36Sopenharmony_ci .hw_clks = &ums512_apapb_gate_hws, 213962306a36Sopenharmony_ci}; 214062306a36Sopenharmony_ci 214162306a36Sopenharmony_cistatic const struct of_device_id sprd_ums512_clk_ids[] = { 214262306a36Sopenharmony_ci { .compatible = "sprd,ums512-pmu-gate", /* 0x327e0000 */ 214362306a36Sopenharmony_ci .data = &ums512_pmu_gate_desc }, 214462306a36Sopenharmony_ci { .compatible = "sprd,ums512-g0-pll", /* 0x32390000 */ 214562306a36Sopenharmony_ci .data = &ums512_g0_pll_desc }, 214662306a36Sopenharmony_ci { .compatible = "sprd,ums512-g2-pll", /* 0x323b0000 */ 214762306a36Sopenharmony_ci .data = &ums512_g2_pll_desc }, 214862306a36Sopenharmony_ci { .compatible = "sprd,ums512-g3-pll", /* 0x323c0000 */ 214962306a36Sopenharmony_ci .data = &ums512_g3_pll_desc }, 215062306a36Sopenharmony_ci { .compatible = "sprd,ums512-gc-pll", /* 0x323e0000 */ 215162306a36Sopenharmony_ci .data = &ums512_gc_pll_desc }, 215262306a36Sopenharmony_ci { .compatible = "sprd,ums512-apahb-gate", /* 0x20100000 */ 215362306a36Sopenharmony_ci .data = &ums512_apahb_gate_desc }, 215462306a36Sopenharmony_ci { .compatible = "sprd,ums512-ap-clk", /* 0x20200000 */ 215562306a36Sopenharmony_ci .data = &ums512_ap_clk_desc }, 215662306a36Sopenharmony_ci { .compatible = "sprd,ums512-aonapb-clk", /* 0x32080200 */ 215762306a36Sopenharmony_ci .data = &ums512_aon_apb_desc }, 215862306a36Sopenharmony_ci { .compatible = "sprd,ums512-aon-gate", /* 0x327d0000 */ 215962306a36Sopenharmony_ci .data = &ums512_aon_gate_desc }, 216062306a36Sopenharmony_ci { .compatible = "sprd,ums512-audcpapb-gate", /* 0x3350d000 */ 216162306a36Sopenharmony_ci .data = &ums512_audcpapb_gate_desc }, 216262306a36Sopenharmony_ci { .compatible = "sprd,ums512-audcpahb-gate", /* 0x335e0000 */ 216362306a36Sopenharmony_ci .data = &ums512_audcpahb_gate_desc }, 216462306a36Sopenharmony_ci { .compatible = "sprd,ums512-gpu-clk", /* 0x60100000 */ 216562306a36Sopenharmony_ci .data = &ums512_gpu_clk_desc }, 216662306a36Sopenharmony_ci { .compatible = "sprd,ums512-mm-clk", /* 0x62100000 */ 216762306a36Sopenharmony_ci .data = &ums512_mm_clk_desc }, 216862306a36Sopenharmony_ci { .compatible = "sprd,ums512-mm-gate-clk", /* 0x62200000 */ 216962306a36Sopenharmony_ci .data = &ums512_mm_gate_clk_desc }, 217062306a36Sopenharmony_ci { .compatible = "sprd,ums512-apapb-gate", /* 0x71000000 */ 217162306a36Sopenharmony_ci .data = &ums512_apapb_gate_desc }, 217262306a36Sopenharmony_ci { } 217362306a36Sopenharmony_ci}; 217462306a36Sopenharmony_ciMODULE_DEVICE_TABLE(of, sprd_ums512_clk_ids); 217562306a36Sopenharmony_ci 217662306a36Sopenharmony_cistatic int ums512_clk_probe(struct platform_device *pdev) 217762306a36Sopenharmony_ci{ 217862306a36Sopenharmony_ci const struct sprd_clk_desc *desc; 217962306a36Sopenharmony_ci int ret; 218062306a36Sopenharmony_ci 218162306a36Sopenharmony_ci desc = device_get_match_data(&pdev->dev); 218262306a36Sopenharmony_ci if (!desc) 218362306a36Sopenharmony_ci return -ENODEV; 218462306a36Sopenharmony_ci 218562306a36Sopenharmony_ci ret = sprd_clk_regmap_init(pdev, desc); 218662306a36Sopenharmony_ci if (ret) 218762306a36Sopenharmony_ci return ret; 218862306a36Sopenharmony_ci 218962306a36Sopenharmony_ci return sprd_clk_probe(&pdev->dev, desc->hw_clks); 219062306a36Sopenharmony_ci} 219162306a36Sopenharmony_ci 219262306a36Sopenharmony_cistatic struct platform_driver ums512_clk_driver = { 219362306a36Sopenharmony_ci .probe = ums512_clk_probe, 219462306a36Sopenharmony_ci .driver = { 219562306a36Sopenharmony_ci .name = "ums512-clk", 219662306a36Sopenharmony_ci .of_match_table = sprd_ums512_clk_ids, 219762306a36Sopenharmony_ci }, 219862306a36Sopenharmony_ci}; 219962306a36Sopenharmony_cimodule_platform_driver(ums512_clk_driver); 220062306a36Sopenharmony_ci 220162306a36Sopenharmony_ciMODULE_DESCRIPTION("Unisoc UMS512 Clock Driver"); 220262306a36Sopenharmony_ciMODULE_LICENSE("GPL"); 2203