162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Copyright (c) 2016 Rockchip Electronics Co. Ltd. 462306a36Sopenharmony_ci * Author: Xing Zheng <zhengxing@rock-chips.com> 562306a36Sopenharmony_ci */ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/clk-provider.h> 862306a36Sopenharmony_ci#include <linux/module.h> 962306a36Sopenharmony_ci#include <linux/io.h> 1062306a36Sopenharmony_ci#include <linux/of.h> 1162306a36Sopenharmony_ci#include <linux/of_address.h> 1262306a36Sopenharmony_ci#include <linux/of_device.h> 1362306a36Sopenharmony_ci#include <linux/platform_device.h> 1462306a36Sopenharmony_ci#include <linux/regmap.h> 1562306a36Sopenharmony_ci#include <dt-bindings/clock/rk3399-cru.h> 1662306a36Sopenharmony_ci#include "clk.h" 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_cienum rk3399_plls { 1962306a36Sopenharmony_ci lpll, bpll, dpll, cpll, gpll, npll, vpll, 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cienum rk3399_pmu_plls { 2362306a36Sopenharmony_ci ppll, 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistatic struct rockchip_pll_rate_table rk3399_pll_rates[] = { 2762306a36Sopenharmony_ci /* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd, _frac */ 2862306a36Sopenharmony_ci RK3036_PLL_RATE(2208000000, 1, 92, 1, 1, 1, 0), 2962306a36Sopenharmony_ci RK3036_PLL_RATE(2184000000, 1, 91, 1, 1, 1, 0), 3062306a36Sopenharmony_ci RK3036_PLL_RATE(2160000000, 1, 90, 1, 1, 1, 0), 3162306a36Sopenharmony_ci RK3036_PLL_RATE(2136000000, 1, 89, 1, 1, 1, 0), 3262306a36Sopenharmony_ci RK3036_PLL_RATE(2112000000, 1, 88, 1, 1, 1, 0), 3362306a36Sopenharmony_ci RK3036_PLL_RATE(2088000000, 1, 87, 1, 1, 1, 0), 3462306a36Sopenharmony_ci RK3036_PLL_RATE(2064000000, 1, 86, 1, 1, 1, 0), 3562306a36Sopenharmony_ci RK3036_PLL_RATE(2040000000, 1, 85, 1, 1, 1, 0), 3662306a36Sopenharmony_ci RK3036_PLL_RATE(2016000000, 1, 84, 1, 1, 1, 0), 3762306a36Sopenharmony_ci RK3036_PLL_RATE(1992000000, 1, 83, 1, 1, 1, 0), 3862306a36Sopenharmony_ci RK3036_PLL_RATE(1968000000, 1, 82, 1, 1, 1, 0), 3962306a36Sopenharmony_ci RK3036_PLL_RATE(1944000000, 1, 81, 1, 1, 1, 0), 4062306a36Sopenharmony_ci RK3036_PLL_RATE(1920000000, 1, 80, 1, 1, 1, 0), 4162306a36Sopenharmony_ci RK3036_PLL_RATE(1896000000, 1, 79, 1, 1, 1, 0), 4262306a36Sopenharmony_ci RK3036_PLL_RATE(1872000000, 1, 78, 1, 1, 1, 0), 4362306a36Sopenharmony_ci RK3036_PLL_RATE(1848000000, 1, 77, 1, 1, 1, 0), 4462306a36Sopenharmony_ci RK3036_PLL_RATE(1824000000, 1, 76, 1, 1, 1, 0), 4562306a36Sopenharmony_ci RK3036_PLL_RATE(1800000000, 1, 75, 1, 1, 1, 0), 4662306a36Sopenharmony_ci RK3036_PLL_RATE(1776000000, 1, 74, 1, 1, 1, 0), 4762306a36Sopenharmony_ci RK3036_PLL_RATE(1752000000, 1, 73, 1, 1, 1, 0), 4862306a36Sopenharmony_ci RK3036_PLL_RATE(1728000000, 1, 72, 1, 1, 1, 0), 4962306a36Sopenharmony_ci RK3036_PLL_RATE(1704000000, 1, 71, 1, 1, 1, 0), 5062306a36Sopenharmony_ci RK3036_PLL_RATE(1680000000, 1, 70, 1, 1, 1, 0), 5162306a36Sopenharmony_ci RK3036_PLL_RATE(1656000000, 1, 69, 1, 1, 1, 0), 5262306a36Sopenharmony_ci RK3036_PLL_RATE(1632000000, 1, 68, 1, 1, 1, 0), 5362306a36Sopenharmony_ci RK3036_PLL_RATE(1608000000, 1, 67, 1, 1, 1, 0), 5462306a36Sopenharmony_ci RK3036_PLL_RATE(1600000000, 3, 200, 1, 1, 1, 0), 5562306a36Sopenharmony_ci RK3036_PLL_RATE(1584000000, 1, 66, 1, 1, 1, 0), 5662306a36Sopenharmony_ci RK3036_PLL_RATE(1560000000, 1, 65, 1, 1, 1, 0), 5762306a36Sopenharmony_ci RK3036_PLL_RATE(1536000000, 1, 64, 1, 1, 1, 0), 5862306a36Sopenharmony_ci RK3036_PLL_RATE(1512000000, 1, 63, 1, 1, 1, 0), 5962306a36Sopenharmony_ci RK3036_PLL_RATE(1488000000, 1, 62, 1, 1, 1, 0), 6062306a36Sopenharmony_ci RK3036_PLL_RATE(1464000000, 1, 61, 1, 1, 1, 0), 6162306a36Sopenharmony_ci RK3036_PLL_RATE(1440000000, 1, 60, 1, 1, 1, 0), 6262306a36Sopenharmony_ci RK3036_PLL_RATE(1416000000, 1, 59, 1, 1, 1, 0), 6362306a36Sopenharmony_ci RK3036_PLL_RATE(1392000000, 1, 58, 1, 1, 1, 0), 6462306a36Sopenharmony_ci RK3036_PLL_RATE(1368000000, 1, 57, 1, 1, 1, 0), 6562306a36Sopenharmony_ci RK3036_PLL_RATE(1344000000, 1, 56, 1, 1, 1, 0), 6662306a36Sopenharmony_ci RK3036_PLL_RATE(1320000000, 1, 55, 1, 1, 1, 0), 6762306a36Sopenharmony_ci RK3036_PLL_RATE(1296000000, 1, 54, 1, 1, 1, 0), 6862306a36Sopenharmony_ci RK3036_PLL_RATE(1272000000, 1, 53, 1, 1, 1, 0), 6962306a36Sopenharmony_ci RK3036_PLL_RATE(1248000000, 1, 52, 1, 1, 1, 0), 7062306a36Sopenharmony_ci RK3036_PLL_RATE(1200000000, 1, 50, 1, 1, 1, 0), 7162306a36Sopenharmony_ci RK3036_PLL_RATE(1188000000, 2, 99, 1, 1, 1, 0), 7262306a36Sopenharmony_ci RK3036_PLL_RATE(1104000000, 1, 46, 1, 1, 1, 0), 7362306a36Sopenharmony_ci RK3036_PLL_RATE(1100000000, 12, 550, 1, 1, 1, 0), 7462306a36Sopenharmony_ci RK3036_PLL_RATE(1008000000, 1, 84, 2, 1, 1, 0), 7562306a36Sopenharmony_ci RK3036_PLL_RATE(1000000000, 1, 125, 3, 1, 1, 0), 7662306a36Sopenharmony_ci RK3036_PLL_RATE( 984000000, 1, 82, 2, 1, 1, 0), 7762306a36Sopenharmony_ci RK3036_PLL_RATE( 960000000, 1, 80, 2, 1, 1, 0), 7862306a36Sopenharmony_ci RK3036_PLL_RATE( 936000000, 1, 78, 2, 1, 1, 0), 7962306a36Sopenharmony_ci RK3036_PLL_RATE( 912000000, 1, 76, 2, 1, 1, 0), 8062306a36Sopenharmony_ci RK3036_PLL_RATE( 900000000, 4, 300, 2, 1, 1, 0), 8162306a36Sopenharmony_ci RK3036_PLL_RATE( 888000000, 1, 74, 2, 1, 1, 0), 8262306a36Sopenharmony_ci RK3036_PLL_RATE( 864000000, 1, 72, 2, 1, 1, 0), 8362306a36Sopenharmony_ci RK3036_PLL_RATE( 840000000, 1, 70, 2, 1, 1, 0), 8462306a36Sopenharmony_ci RK3036_PLL_RATE( 816000000, 1, 68, 2, 1, 1, 0), 8562306a36Sopenharmony_ci RK3036_PLL_RATE( 800000000, 1, 100, 3, 1, 1, 0), 8662306a36Sopenharmony_ci RK3036_PLL_RATE( 700000000, 6, 350, 2, 1, 1, 0), 8762306a36Sopenharmony_ci RK3036_PLL_RATE( 696000000, 1, 58, 2, 1, 1, 0), 8862306a36Sopenharmony_ci RK3036_PLL_RATE( 676000000, 3, 169, 2, 1, 1, 0), 8962306a36Sopenharmony_ci RK3036_PLL_RATE( 600000000, 1, 75, 3, 1, 1, 0), 9062306a36Sopenharmony_ci RK3036_PLL_RATE( 594000000, 1, 99, 4, 1, 1, 0), 9162306a36Sopenharmony_ci RK3036_PLL_RATE( 533250000, 8, 711, 4, 1, 1, 0), 9262306a36Sopenharmony_ci RK3036_PLL_RATE( 504000000, 1, 63, 3, 1, 1, 0), 9362306a36Sopenharmony_ci RK3036_PLL_RATE( 500000000, 6, 250, 2, 1, 1, 0), 9462306a36Sopenharmony_ci RK3036_PLL_RATE( 408000000, 1, 68, 2, 2, 1, 0), 9562306a36Sopenharmony_ci RK3036_PLL_RATE( 312000000, 1, 52, 2, 2, 1, 0), 9662306a36Sopenharmony_ci RK3036_PLL_RATE( 297000000, 1, 99, 4, 2, 1, 0), 9762306a36Sopenharmony_ci RK3036_PLL_RATE( 216000000, 1, 72, 4, 2, 1, 0), 9862306a36Sopenharmony_ci RK3036_PLL_RATE( 148500000, 1, 99, 4, 4, 1, 0), 9962306a36Sopenharmony_ci RK3036_PLL_RATE( 106500000, 1, 71, 4, 4, 1, 0), 10062306a36Sopenharmony_ci RK3036_PLL_RATE( 96000000, 1, 64, 4, 4, 1, 0), 10162306a36Sopenharmony_ci RK3036_PLL_RATE( 74250000, 2, 99, 4, 4, 1, 0), 10262306a36Sopenharmony_ci RK3036_PLL_RATE( 65000000, 1, 65, 6, 4, 1, 0), 10362306a36Sopenharmony_ci RK3036_PLL_RATE( 54000000, 1, 54, 6, 4, 1, 0), 10462306a36Sopenharmony_ci RK3036_PLL_RATE( 27000000, 1, 27, 6, 4, 1, 0), 10562306a36Sopenharmony_ci { /* sentinel */ }, 10662306a36Sopenharmony_ci}; 10762306a36Sopenharmony_ci 10862306a36Sopenharmony_ci/* CRU parents */ 10962306a36Sopenharmony_ciPNAME(mux_pll_p) = { "xin24m", "xin32k" }; 11062306a36Sopenharmony_ci 11162306a36Sopenharmony_ciPNAME(mux_armclkl_p) = { "clk_core_l_lpll_src", 11262306a36Sopenharmony_ci "clk_core_l_bpll_src", 11362306a36Sopenharmony_ci "clk_core_l_dpll_src", 11462306a36Sopenharmony_ci "clk_core_l_gpll_src" }; 11562306a36Sopenharmony_ciPNAME(mux_armclkb_p) = { "clk_core_b_lpll_src", 11662306a36Sopenharmony_ci "clk_core_b_bpll_src", 11762306a36Sopenharmony_ci "clk_core_b_dpll_src", 11862306a36Sopenharmony_ci "clk_core_b_gpll_src" }; 11962306a36Sopenharmony_ciPNAME(mux_ddrclk_p) = { "clk_ddrc_lpll_src", 12062306a36Sopenharmony_ci "clk_ddrc_bpll_src", 12162306a36Sopenharmony_ci "clk_ddrc_dpll_src", 12262306a36Sopenharmony_ci "clk_ddrc_gpll_src" }; 12362306a36Sopenharmony_ciPNAME(mux_aclk_cci_p) = { "cpll_aclk_cci_src", 12462306a36Sopenharmony_ci "gpll_aclk_cci_src", 12562306a36Sopenharmony_ci "npll_aclk_cci_src", 12662306a36Sopenharmony_ci "vpll_aclk_cci_src" }; 12762306a36Sopenharmony_ciPNAME(mux_cci_trace_p) = { "cpll_cci_trace", 12862306a36Sopenharmony_ci "gpll_cci_trace" }; 12962306a36Sopenharmony_ciPNAME(mux_cs_p) = { "cpll_cs", "gpll_cs", 13062306a36Sopenharmony_ci "npll_cs"}; 13162306a36Sopenharmony_ciPNAME(mux_aclk_perihp_p) = { "cpll_aclk_perihp_src", 13262306a36Sopenharmony_ci "gpll_aclk_perihp_src" }; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_p) = { "cpll", "gpll" }; 13562306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_p) = { "cpll", "gpll", "npll" }; 13662306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_ppll_p) = { "cpll", "gpll", "ppll" }; 13762306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_upll_p) = { "cpll", "gpll", "upll" }; 13862306a36Sopenharmony_ciPNAME(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" }; 13962306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_ppll_p) = { "cpll", "gpll", "npll", 14062306a36Sopenharmony_ci "ppll" }; 14162306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_24m_p) = { "cpll", "gpll", "npll", 14262306a36Sopenharmony_ci "xin24m" }; 14362306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_usbphy480m_p) = { "cpll", "gpll", "npll", 14462306a36Sopenharmony_ci "clk_usbphy_480m" }; 14562306a36Sopenharmony_ciPNAME(mux_pll_src_ppll_cpll_gpll_npll_p) = { "ppll", "cpll", "gpll", 14662306a36Sopenharmony_ci "npll", "upll" }; 14762306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_upll_24m_p) = { "cpll", "gpll", "npll", 14862306a36Sopenharmony_ci "upll", "xin24m" }; 14962306a36Sopenharmony_ciPNAME(mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p) = { "cpll", "gpll", "npll", 15062306a36Sopenharmony_ci "ppll", "upll", "xin24m" }; 15162306a36Sopenharmony_ci 15262306a36Sopenharmony_ciPNAME(mux_pll_src_vpll_cpll_gpll_p) = { "vpll", "cpll", "gpll" }; 15362306a36Sopenharmony_ciPNAME(mux_pll_src_vpll_cpll_gpll_npll_p) = { "vpll", "cpll", "gpll", 15462306a36Sopenharmony_ci "npll" }; 15562306a36Sopenharmony_ciPNAME(mux_pll_src_vpll_cpll_gpll_24m_p) = { "vpll", "cpll", "gpll", 15662306a36Sopenharmony_ci "xin24m" }; 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ciPNAME(mux_dclk_vop0_p) = { "dclk_vop0_div", 15962306a36Sopenharmony_ci "dclk_vop0_frac" }; 16062306a36Sopenharmony_ciPNAME(mux_dclk_vop1_p) = { "dclk_vop1_div", 16162306a36Sopenharmony_ci "dclk_vop1_frac" }; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ciPNAME(mux_clk_cif_p) = { "clk_cifout_src", "xin24m" }; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ciPNAME(mux_pll_src_24m_usbphy480m_p) = { "xin24m", "clk_usbphy_480m" }; 16662306a36Sopenharmony_ciPNAME(mux_pll_src_24m_pciephy_p) = { "xin24m", "clk_pciephy_ref100m" }; 16762306a36Sopenharmony_ciPNAME(mux_pll_src_24m_32k_cpll_gpll_p) = { "xin24m", "xin32k", 16862306a36Sopenharmony_ci "cpll", "gpll" }; 16962306a36Sopenharmony_ciPNAME(mux_pciecore_cru_phy_p) = { "clk_pcie_core_cru", 17062306a36Sopenharmony_ci "clk_pcie_core_phy" }; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ciPNAME(mux_aclk_emmc_p) = { "cpll_aclk_emmc_src", 17362306a36Sopenharmony_ci "gpll_aclk_emmc_src" }; 17462306a36Sopenharmony_ci 17562306a36Sopenharmony_ciPNAME(mux_aclk_perilp0_p) = { "cpll_aclk_perilp0_src", 17662306a36Sopenharmony_ci "gpll_aclk_perilp0_src" }; 17762306a36Sopenharmony_ci 17862306a36Sopenharmony_ciPNAME(mux_fclk_cm0s_p) = { "cpll_fclk_cm0s_src", 17962306a36Sopenharmony_ci "gpll_fclk_cm0s_src" }; 18062306a36Sopenharmony_ci 18162306a36Sopenharmony_ciPNAME(mux_hclk_perilp1_p) = { "cpll_hclk_perilp1_src", 18262306a36Sopenharmony_ci "gpll_hclk_perilp1_src" }; 18362306a36Sopenharmony_ci 18462306a36Sopenharmony_ciPNAME(mux_clk_testout1_p) = { "clk_testout1_pll_src", "xin24m" }; 18562306a36Sopenharmony_ciPNAME(mux_clk_testout2_p) = { "clk_testout2_pll_src", "xin24m" }; 18662306a36Sopenharmony_ci 18762306a36Sopenharmony_ciPNAME(mux_usbphy_480m_p) = { "clk_usbphy0_480m_src", 18862306a36Sopenharmony_ci "clk_usbphy1_480m_src" }; 18962306a36Sopenharmony_ciPNAME(mux_aclk_gmac_p) = { "cpll_aclk_gmac_src", 19062306a36Sopenharmony_ci "gpll_aclk_gmac_src" }; 19162306a36Sopenharmony_ciPNAME(mux_rmii_p) = { "clk_gmac", "clkin_gmac" }; 19262306a36Sopenharmony_ciPNAME(mux_spdif_p) = { "clk_spdif_div", "clk_spdif_frac", 19362306a36Sopenharmony_ci "clkin_i2s", "xin12m" }; 19462306a36Sopenharmony_ciPNAME(mux_i2s0_p) = { "clk_i2s0_div", "clk_i2s0_frac", 19562306a36Sopenharmony_ci "clkin_i2s", "xin12m" }; 19662306a36Sopenharmony_ciPNAME(mux_i2s1_p) = { "clk_i2s1_div", "clk_i2s1_frac", 19762306a36Sopenharmony_ci "clkin_i2s", "xin12m" }; 19862306a36Sopenharmony_ciPNAME(mux_i2s2_p) = { "clk_i2s2_div", "clk_i2s2_frac", 19962306a36Sopenharmony_ci "clkin_i2s", "xin12m" }; 20062306a36Sopenharmony_ciPNAME(mux_i2sch_p) = { "clk_i2s0", "clk_i2s1", 20162306a36Sopenharmony_ci "clk_i2s2" }; 20262306a36Sopenharmony_ciPNAME(mux_i2sout_p) = { "clk_i2sout_src", "xin12m" }; 20362306a36Sopenharmony_ci 20462306a36Sopenharmony_ciPNAME(mux_uart0_p) = { "clk_uart0_div", "clk_uart0_frac", "xin24m" }; 20562306a36Sopenharmony_ciPNAME(mux_uart1_p) = { "clk_uart1_div", "clk_uart1_frac", "xin24m" }; 20662306a36Sopenharmony_ciPNAME(mux_uart2_p) = { "clk_uart2_div", "clk_uart2_frac", "xin24m" }; 20762306a36Sopenharmony_ciPNAME(mux_uart3_p) = { "clk_uart3_div", "clk_uart3_frac", "xin24m" }; 20862306a36Sopenharmony_ci 20962306a36Sopenharmony_ci/* PMU CRU parents */ 21062306a36Sopenharmony_ciPNAME(mux_ppll_24m_p) = { "ppll", "xin24m" }; 21162306a36Sopenharmony_ciPNAME(mux_24m_ppll_p) = { "xin24m", "ppll" }; 21262306a36Sopenharmony_ciPNAME(mux_fclk_cm0s_pmu_ppll_p) = { "fclk_cm0s_pmu_ppll_src", "xin24m" }; 21362306a36Sopenharmony_ciPNAME(mux_wifi_pmu_p) = { "clk_wifi_div", "clk_wifi_frac" }; 21462306a36Sopenharmony_ciPNAME(mux_uart4_pmu_p) = { "clk_uart4_div", "clk_uart4_frac", 21562306a36Sopenharmony_ci "xin24m" }; 21662306a36Sopenharmony_ciPNAME(mux_clk_testout2_2io_p) = { "clk_testout2", "clk_32k_suspend_pmu" }; 21762306a36Sopenharmony_ci 21862306a36Sopenharmony_cistatic struct rockchip_pll_clock rk3399_pll_clks[] __initdata = { 21962306a36Sopenharmony_ci [lpll] = PLL(pll_rk3399, PLL_APLLL, "lpll", mux_pll_p, 0, RK3399_PLL_CON(0), 22062306a36Sopenharmony_ci RK3399_PLL_CON(3), 8, 31, 0, rk3399_pll_rates), 22162306a36Sopenharmony_ci [bpll] = PLL(pll_rk3399, PLL_APLLB, "bpll", mux_pll_p, 0, RK3399_PLL_CON(8), 22262306a36Sopenharmony_ci RK3399_PLL_CON(11), 8, 31, 0, rk3399_pll_rates), 22362306a36Sopenharmony_ci [dpll] = PLL(pll_rk3399, PLL_DPLL, "dpll", mux_pll_p, 0, RK3399_PLL_CON(16), 22462306a36Sopenharmony_ci RK3399_PLL_CON(19), 8, 31, 0, NULL), 22562306a36Sopenharmony_ci [cpll] = PLL(pll_rk3399, PLL_CPLL, "cpll", mux_pll_p, 0, RK3399_PLL_CON(24), 22662306a36Sopenharmony_ci RK3399_PLL_CON(27), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates), 22762306a36Sopenharmony_ci [gpll] = PLL(pll_rk3399, PLL_GPLL, "gpll", mux_pll_p, 0, RK3399_PLL_CON(32), 22862306a36Sopenharmony_ci RK3399_PLL_CON(35), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates), 22962306a36Sopenharmony_ci [npll] = PLL(pll_rk3399, PLL_NPLL, "npll", mux_pll_p, 0, RK3399_PLL_CON(40), 23062306a36Sopenharmony_ci RK3399_PLL_CON(43), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates), 23162306a36Sopenharmony_ci [vpll] = PLL(pll_rk3399, PLL_VPLL, "vpll", mux_pll_p, 0, RK3399_PLL_CON(48), 23262306a36Sopenharmony_ci RK3399_PLL_CON(51), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates), 23362306a36Sopenharmony_ci}; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_cistatic struct rockchip_pll_clock rk3399_pmu_pll_clks[] __initdata = { 23662306a36Sopenharmony_ci [ppll] = PLL(pll_rk3399, PLL_PPLL, "ppll", mux_pll_p, 0, RK3399_PMU_PLL_CON(0), 23762306a36Sopenharmony_ci RK3399_PMU_PLL_CON(3), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates), 23862306a36Sopenharmony_ci}; 23962306a36Sopenharmony_ci 24062306a36Sopenharmony_ci#define MFLAGS CLK_MUX_HIWORD_MASK 24162306a36Sopenharmony_ci#define DFLAGS CLK_DIVIDER_HIWORD_MASK 24262306a36Sopenharmony_ci#define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE) 24362306a36Sopenharmony_ci#define IFLAGS ROCKCHIP_INVERTER_HIWORD_MASK 24462306a36Sopenharmony_ci 24562306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_spdif_fracmux __initdata = 24662306a36Sopenharmony_ci MUX(0, "clk_spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT, 24762306a36Sopenharmony_ci RK3399_CLKSEL_CON(32), 13, 2, MFLAGS); 24862306a36Sopenharmony_ci 24962306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_i2s0_fracmux __initdata = 25062306a36Sopenharmony_ci MUX(0, "clk_i2s0_mux", mux_i2s0_p, CLK_SET_RATE_PARENT, 25162306a36Sopenharmony_ci RK3399_CLKSEL_CON(28), 8, 2, MFLAGS); 25262306a36Sopenharmony_ci 25362306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_i2s1_fracmux __initdata = 25462306a36Sopenharmony_ci MUX(0, "clk_i2s1_mux", mux_i2s1_p, CLK_SET_RATE_PARENT, 25562306a36Sopenharmony_ci RK3399_CLKSEL_CON(29), 8, 2, MFLAGS); 25662306a36Sopenharmony_ci 25762306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_i2s2_fracmux __initdata = 25862306a36Sopenharmony_ci MUX(0, "clk_i2s2_mux", mux_i2s2_p, CLK_SET_RATE_PARENT, 25962306a36Sopenharmony_ci RK3399_CLKSEL_CON(30), 8, 2, MFLAGS); 26062306a36Sopenharmony_ci 26162306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_uart0_fracmux __initdata = 26262306a36Sopenharmony_ci MUX(SCLK_UART0, "clk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT, 26362306a36Sopenharmony_ci RK3399_CLKSEL_CON(33), 8, 2, MFLAGS); 26462306a36Sopenharmony_ci 26562306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_uart1_fracmux __initdata = 26662306a36Sopenharmony_ci MUX(SCLK_UART1, "clk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT, 26762306a36Sopenharmony_ci RK3399_CLKSEL_CON(34), 8, 2, MFLAGS); 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_uart2_fracmux __initdata = 27062306a36Sopenharmony_ci MUX(SCLK_UART2, "clk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT, 27162306a36Sopenharmony_ci RK3399_CLKSEL_CON(35), 8, 2, MFLAGS); 27262306a36Sopenharmony_ci 27362306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_uart3_fracmux __initdata = 27462306a36Sopenharmony_ci MUX(SCLK_UART3, "clk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT, 27562306a36Sopenharmony_ci RK3399_CLKSEL_CON(36), 8, 2, MFLAGS); 27662306a36Sopenharmony_ci 27762306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_uart4_pmu_fracmux __initdata = 27862306a36Sopenharmony_ci MUX(SCLK_UART4_PMU, "clk_uart4_pmu", mux_uart4_pmu_p, CLK_SET_RATE_PARENT, 27962306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(5), 8, 2, MFLAGS); 28062306a36Sopenharmony_ci 28162306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_dclk_vop0_fracmux __initdata = 28262306a36Sopenharmony_ci MUX(DCLK_VOP0, "dclk_vop0", mux_dclk_vop0_p, CLK_SET_RATE_PARENT, 28362306a36Sopenharmony_ci RK3399_CLKSEL_CON(49), 11, 1, MFLAGS); 28462306a36Sopenharmony_ci 28562306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_dclk_vop1_fracmux __initdata = 28662306a36Sopenharmony_ci MUX(DCLK_VOP1, "dclk_vop1", mux_dclk_vop1_p, CLK_SET_RATE_PARENT, 28762306a36Sopenharmony_ci RK3399_CLKSEL_CON(50), 11, 1, MFLAGS); 28862306a36Sopenharmony_ci 28962306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_pmuclk_wifi_fracmux __initdata = 29062306a36Sopenharmony_ci MUX(SCLK_WIFI_PMU, "clk_wifi_pmu", mux_wifi_pmu_p, CLK_SET_RATE_PARENT, 29162306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(1), 14, 1, MFLAGS); 29262306a36Sopenharmony_ci 29362306a36Sopenharmony_cistatic const struct rockchip_cpuclk_reg_data rk3399_cpuclkl_data = { 29462306a36Sopenharmony_ci .core_reg[0] = RK3399_CLKSEL_CON(0), 29562306a36Sopenharmony_ci .div_core_shift[0] = 0, 29662306a36Sopenharmony_ci .div_core_mask[0] = 0x1f, 29762306a36Sopenharmony_ci .num_cores = 1, 29862306a36Sopenharmony_ci .mux_core_alt = 3, 29962306a36Sopenharmony_ci .mux_core_main = 0, 30062306a36Sopenharmony_ci .mux_core_shift = 6, 30162306a36Sopenharmony_ci .mux_core_mask = 0x3, 30262306a36Sopenharmony_ci}; 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_cistatic const struct rockchip_cpuclk_reg_data rk3399_cpuclkb_data = { 30562306a36Sopenharmony_ci .core_reg[0] = RK3399_CLKSEL_CON(2), 30662306a36Sopenharmony_ci .div_core_shift[0] = 0, 30762306a36Sopenharmony_ci .div_core_mask[0] = 0x1f, 30862306a36Sopenharmony_ci .num_cores = 1, 30962306a36Sopenharmony_ci .mux_core_alt = 3, 31062306a36Sopenharmony_ci .mux_core_main = 1, 31162306a36Sopenharmony_ci .mux_core_shift = 6, 31262306a36Sopenharmony_ci .mux_core_mask = 0x3, 31362306a36Sopenharmony_ci}; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci#define RK3399_DIV_ACLKM_MASK 0x1f 31662306a36Sopenharmony_ci#define RK3399_DIV_ACLKM_SHIFT 8 31762306a36Sopenharmony_ci#define RK3399_DIV_ATCLK_MASK 0x1f 31862306a36Sopenharmony_ci#define RK3399_DIV_ATCLK_SHIFT 0 31962306a36Sopenharmony_ci#define RK3399_DIV_PCLK_DBG_MASK 0x1f 32062306a36Sopenharmony_ci#define RK3399_DIV_PCLK_DBG_SHIFT 8 32162306a36Sopenharmony_ci 32262306a36Sopenharmony_ci#define RK3399_CLKSEL0(_offs, _aclkm) \ 32362306a36Sopenharmony_ci { \ 32462306a36Sopenharmony_ci .reg = RK3399_CLKSEL_CON(0 + _offs), \ 32562306a36Sopenharmony_ci .val = HIWORD_UPDATE(_aclkm, RK3399_DIV_ACLKM_MASK, \ 32662306a36Sopenharmony_ci RK3399_DIV_ACLKM_SHIFT), \ 32762306a36Sopenharmony_ci } 32862306a36Sopenharmony_ci#define RK3399_CLKSEL1(_offs, _atclk, _pdbg) \ 32962306a36Sopenharmony_ci { \ 33062306a36Sopenharmony_ci .reg = RK3399_CLKSEL_CON(1 + _offs), \ 33162306a36Sopenharmony_ci .val = HIWORD_UPDATE(_atclk, RK3399_DIV_ATCLK_MASK, \ 33262306a36Sopenharmony_ci RK3399_DIV_ATCLK_SHIFT) | \ 33362306a36Sopenharmony_ci HIWORD_UPDATE(_pdbg, RK3399_DIV_PCLK_DBG_MASK, \ 33462306a36Sopenharmony_ci RK3399_DIV_PCLK_DBG_SHIFT), \ 33562306a36Sopenharmony_ci } 33662306a36Sopenharmony_ci 33762306a36Sopenharmony_ci/* cluster_l: aclkm in clksel0, rest in clksel1 */ 33862306a36Sopenharmony_ci#define RK3399_CPUCLKL_RATE(_prate, _aclkm, _atclk, _pdbg) \ 33962306a36Sopenharmony_ci { \ 34062306a36Sopenharmony_ci .prate = _prate##U, \ 34162306a36Sopenharmony_ci .divs = { \ 34262306a36Sopenharmony_ci RK3399_CLKSEL0(0, _aclkm), \ 34362306a36Sopenharmony_ci RK3399_CLKSEL1(0, _atclk, _pdbg), \ 34462306a36Sopenharmony_ci }, \ 34562306a36Sopenharmony_ci } 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci/* cluster_b: aclkm in clksel2, rest in clksel3 */ 34862306a36Sopenharmony_ci#define RK3399_CPUCLKB_RATE(_prate, _aclkm, _atclk, _pdbg) \ 34962306a36Sopenharmony_ci { \ 35062306a36Sopenharmony_ci .prate = _prate##U, \ 35162306a36Sopenharmony_ci .divs = { \ 35262306a36Sopenharmony_ci RK3399_CLKSEL0(2, _aclkm), \ 35362306a36Sopenharmony_ci RK3399_CLKSEL1(2, _atclk, _pdbg), \ 35462306a36Sopenharmony_ci }, \ 35562306a36Sopenharmony_ci } 35662306a36Sopenharmony_ci 35762306a36Sopenharmony_cistatic struct rockchip_cpuclk_rate_table rk3399_cpuclkl_rates[] __initdata = { 35862306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1800000000, 1, 8, 8), 35962306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1704000000, 1, 8, 8), 36062306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1608000000, 1, 7, 7), 36162306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1512000000, 1, 7, 7), 36262306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1488000000, 1, 6, 6), 36362306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1416000000, 1, 6, 6), 36462306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1200000000, 1, 5, 5), 36562306a36Sopenharmony_ci RK3399_CPUCLKL_RATE(1008000000, 1, 5, 5), 36662306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 816000000, 1, 4, 4), 36762306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 696000000, 1, 3, 3), 36862306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 600000000, 1, 3, 3), 36962306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 408000000, 1, 2, 2), 37062306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 312000000, 1, 1, 1), 37162306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 216000000, 1, 1, 1), 37262306a36Sopenharmony_ci RK3399_CPUCLKL_RATE( 96000000, 1, 1, 1), 37362306a36Sopenharmony_ci}; 37462306a36Sopenharmony_ci 37562306a36Sopenharmony_cistatic struct rockchip_cpuclk_rate_table rk3399_cpuclkb_rates[] __initdata = { 37662306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(2208000000, 1, 11, 11), 37762306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(2184000000, 1, 11, 11), 37862306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(2088000000, 1, 10, 10), 37962306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(2040000000, 1, 10, 10), 38062306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(2016000000, 1, 9, 9), 38162306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1992000000, 1, 9, 9), 38262306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1896000000, 1, 9, 9), 38362306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1800000000, 1, 8, 8), 38462306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1704000000, 1, 8, 8), 38562306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1608000000, 1, 7, 7), 38662306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1512000000, 1, 7, 7), 38762306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1488000000, 1, 6, 6), 38862306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1416000000, 1, 6, 6), 38962306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1200000000, 1, 5, 5), 39062306a36Sopenharmony_ci RK3399_CPUCLKB_RATE(1008000000, 1, 5, 5), 39162306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 816000000, 1, 4, 4), 39262306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 696000000, 1, 3, 3), 39362306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 600000000, 1, 3, 3), 39462306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 408000000, 1, 2, 2), 39562306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 312000000, 1, 1, 1), 39662306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 216000000, 1, 1, 1), 39762306a36Sopenharmony_ci RK3399_CPUCLKB_RATE( 96000000, 1, 1, 1), 39862306a36Sopenharmony_ci}; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_clk_branches[] __initdata = { 40162306a36Sopenharmony_ci /* 40262306a36Sopenharmony_ci * CRU Clock-Architecture 40362306a36Sopenharmony_ci */ 40462306a36Sopenharmony_ci 40562306a36Sopenharmony_ci /* usbphy */ 40662306a36Sopenharmony_ci GATE(SCLK_USB2PHY0_REF, "clk_usb2phy0_ref", "xin24m", CLK_IGNORE_UNUSED, 40762306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 5, GFLAGS), 40862306a36Sopenharmony_ci GATE(SCLK_USB2PHY1_REF, "clk_usb2phy1_ref", "xin24m", CLK_IGNORE_UNUSED, 40962306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 6, GFLAGS), 41062306a36Sopenharmony_ci 41162306a36Sopenharmony_ci GATE(0, "clk_usbphy0_480m_src", "clk_usbphy0_480m", 0, 41262306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 12, GFLAGS), 41362306a36Sopenharmony_ci GATE(0, "clk_usbphy1_480m_src", "clk_usbphy1_480m", 0, 41462306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 12, GFLAGS), 41562306a36Sopenharmony_ci MUX(0, "clk_usbphy_480m", mux_usbphy_480m_p, 0, 41662306a36Sopenharmony_ci RK3399_CLKSEL_CON(14), 6, 1, MFLAGS), 41762306a36Sopenharmony_ci 41862306a36Sopenharmony_ci MUX(0, "upll", mux_pll_src_24m_usbphy480m_p, 0, 41962306a36Sopenharmony_ci RK3399_CLKSEL_CON(14), 15, 1, MFLAGS), 42062306a36Sopenharmony_ci 42162306a36Sopenharmony_ci COMPOSITE_NODIV(SCLK_HSICPHY, "clk_hsicphy", mux_pll_src_cpll_gpll_npll_usbphy480m_p, 0, 42262306a36Sopenharmony_ci RK3399_CLKSEL_CON(19), 0, 2, MFLAGS, 42362306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 4, GFLAGS), 42462306a36Sopenharmony_ci 42562306a36Sopenharmony_ci COMPOSITE(ACLK_USB3, "aclk_usb3", mux_pll_src_cpll_gpll_npll_p, 0, 42662306a36Sopenharmony_ci RK3399_CLKSEL_CON(39), 6, 2, MFLAGS, 0, 5, DFLAGS, 42762306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 0, GFLAGS), 42862306a36Sopenharmony_ci GATE(ACLK_USB3_NOC, "aclk_usb3_noc", "aclk_usb3", CLK_IGNORE_UNUSED, 42962306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 0, GFLAGS), 43062306a36Sopenharmony_ci GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb3", 0, 43162306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 1, GFLAGS), 43262306a36Sopenharmony_ci GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_usb3", 0, 43362306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 2, GFLAGS), 43462306a36Sopenharmony_ci GATE(ACLK_USB3_RKSOC_AXI_PERF, "aclk_usb3_rksoc_axi_perf", "aclk_usb3", 0, 43562306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 3, GFLAGS), 43662306a36Sopenharmony_ci GATE(ACLK_USB3_GRF, "aclk_usb3_grf", "aclk_usb3", 0, 43762306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 4, GFLAGS), 43862306a36Sopenharmony_ci 43962306a36Sopenharmony_ci GATE(SCLK_USB3OTG0_REF, "clk_usb3otg0_ref", "xin24m", 0, 44062306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 1, GFLAGS), 44162306a36Sopenharmony_ci GATE(SCLK_USB3OTG1_REF, "clk_usb3otg1_ref", "xin24m", 0, 44262306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 2, GFLAGS), 44362306a36Sopenharmony_ci 44462306a36Sopenharmony_ci COMPOSITE(SCLK_USB3OTG0_SUSPEND, "clk_usb3otg0_suspend", mux_pll_p, 0, 44562306a36Sopenharmony_ci RK3399_CLKSEL_CON(40), 15, 1, MFLAGS, 0, 10, DFLAGS, 44662306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 3, GFLAGS), 44762306a36Sopenharmony_ci 44862306a36Sopenharmony_ci COMPOSITE(SCLK_USB3OTG1_SUSPEND, "clk_usb3otg1_suspend", mux_pll_p, 0, 44962306a36Sopenharmony_ci RK3399_CLKSEL_CON(41), 15, 1, MFLAGS, 0, 10, DFLAGS, 45062306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 4, GFLAGS), 45162306a36Sopenharmony_ci 45262306a36Sopenharmony_ci COMPOSITE(SCLK_UPHY0_TCPDPHY_REF, "clk_uphy0_tcpdphy_ref", mux_pll_p, 0, 45362306a36Sopenharmony_ci RK3399_CLKSEL_CON(64), 15, 1, MFLAGS, 8, 5, DFLAGS, 45462306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 4, GFLAGS), 45562306a36Sopenharmony_ci 45662306a36Sopenharmony_ci COMPOSITE(SCLK_UPHY0_TCPDCORE, "clk_uphy0_tcpdcore", mux_pll_src_24m_32k_cpll_gpll_p, 0, 45762306a36Sopenharmony_ci RK3399_CLKSEL_CON(64), 6, 2, MFLAGS, 0, 5, DFLAGS, 45862306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 5, GFLAGS), 45962306a36Sopenharmony_ci 46062306a36Sopenharmony_ci COMPOSITE(SCLK_UPHY1_TCPDPHY_REF, "clk_uphy1_tcpdphy_ref", mux_pll_p, 0, 46162306a36Sopenharmony_ci RK3399_CLKSEL_CON(65), 15, 1, MFLAGS, 8, 5, DFLAGS, 46262306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 6, GFLAGS), 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci COMPOSITE(SCLK_UPHY1_TCPDCORE, "clk_uphy1_tcpdcore", mux_pll_src_24m_32k_cpll_gpll_p, 0, 46562306a36Sopenharmony_ci RK3399_CLKSEL_CON(65), 6, 2, MFLAGS, 0, 5, DFLAGS, 46662306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 7, GFLAGS), 46762306a36Sopenharmony_ci 46862306a36Sopenharmony_ci /* little core */ 46962306a36Sopenharmony_ci GATE(0, "clk_core_l_lpll_src", "lpll", CLK_IGNORE_UNUSED, 47062306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 0, GFLAGS), 47162306a36Sopenharmony_ci GATE(0, "clk_core_l_bpll_src", "bpll", CLK_IGNORE_UNUSED, 47262306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 1, GFLAGS), 47362306a36Sopenharmony_ci GATE(0, "clk_core_l_dpll_src", "dpll", CLK_IGNORE_UNUSED, 47462306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 2, GFLAGS), 47562306a36Sopenharmony_ci GATE(0, "clk_core_l_gpll_src", "gpll", CLK_IGNORE_UNUSED, 47662306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 3, GFLAGS), 47762306a36Sopenharmony_ci 47862306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "aclkm_core_l", "armclkl", CLK_IGNORE_UNUSED, 47962306a36Sopenharmony_ci RK3399_CLKSEL_CON(0), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 48062306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 4, GFLAGS), 48162306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "atclk_core_l", "armclkl", CLK_IGNORE_UNUSED, 48262306a36Sopenharmony_ci RK3399_CLKSEL_CON(1), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 48362306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 5, GFLAGS), 48462306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_COREDBG_L, "pclk_dbg_core_l", "armclkl", CLK_IGNORE_UNUSED, 48562306a36Sopenharmony_ci RK3399_CLKSEL_CON(1), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 48662306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 6, GFLAGS), 48762306a36Sopenharmony_ci 48862306a36Sopenharmony_ci GATE(ACLK_CORE_ADB400_CORE_L_2_CCI500, "aclk_core_adb400_core_l_2_cci500", "aclkm_core_l", CLK_IGNORE_UNUSED, 48962306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 12, GFLAGS), 49062306a36Sopenharmony_ci GATE(ACLK_PERF_CORE_L, "aclk_perf_core_l", "aclkm_core_l", CLK_IGNORE_UNUSED, 49162306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 13, GFLAGS), 49262306a36Sopenharmony_ci 49362306a36Sopenharmony_ci GATE(0, "clk_dbg_pd_core_l", "armclkl", CLK_IGNORE_UNUSED, 49462306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 9, GFLAGS), 49562306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_GIC_2_CORE_L, "aclk_core_adb400_gic_2_core_l", "armclkl", CLK_IGNORE_UNUSED, 49662306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 10, GFLAGS), 49762306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_CORE_L_2_GIC, "aclk_core_adb400_core_l_2_gic", "armclkl", CLK_IGNORE_UNUSED, 49862306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 11, GFLAGS), 49962306a36Sopenharmony_ci GATE(SCLK_PVTM_CORE_L, "clk_pvtm_core_l", "xin24m", 0, 50062306a36Sopenharmony_ci RK3399_CLKGATE_CON(0), 7, GFLAGS), 50162306a36Sopenharmony_ci 50262306a36Sopenharmony_ci /* big core */ 50362306a36Sopenharmony_ci GATE(0, "clk_core_b_lpll_src", "lpll", CLK_IGNORE_UNUSED, 50462306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 0, GFLAGS), 50562306a36Sopenharmony_ci GATE(0, "clk_core_b_bpll_src", "bpll", CLK_IGNORE_UNUSED, 50662306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 1, GFLAGS), 50762306a36Sopenharmony_ci GATE(0, "clk_core_b_dpll_src", "dpll", CLK_IGNORE_UNUSED, 50862306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 2, GFLAGS), 50962306a36Sopenharmony_ci GATE(0, "clk_core_b_gpll_src", "gpll", CLK_IGNORE_UNUSED, 51062306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 3, GFLAGS), 51162306a36Sopenharmony_ci 51262306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "aclkm_core_b", "armclkb", CLK_IGNORE_UNUSED, 51362306a36Sopenharmony_ci RK3399_CLKSEL_CON(2), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 51462306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 4, GFLAGS), 51562306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "atclk_core_b", "armclkb", CLK_IGNORE_UNUSED, 51662306a36Sopenharmony_ci RK3399_CLKSEL_CON(3), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 51762306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 5, GFLAGS), 51862306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "pclk_dbg_core_b", "armclkb", CLK_IGNORE_UNUSED, 51962306a36Sopenharmony_ci RK3399_CLKSEL_CON(3), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY, 52062306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 6, GFLAGS), 52162306a36Sopenharmony_ci 52262306a36Sopenharmony_ci GATE(ACLK_CORE_ADB400_CORE_B_2_CCI500, "aclk_core_adb400_core_b_2_cci500", "aclkm_core_b", CLK_IGNORE_UNUSED, 52362306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 5, GFLAGS), 52462306a36Sopenharmony_ci GATE(ACLK_PERF_CORE_B, "aclk_perf_core_b", "aclkm_core_b", CLK_IGNORE_UNUSED, 52562306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 6, GFLAGS), 52662306a36Sopenharmony_ci 52762306a36Sopenharmony_ci GATE(0, "clk_dbg_pd_core_b", "armclkb", CLK_IGNORE_UNUSED, 52862306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 1, GFLAGS), 52962306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_GIC_2_CORE_B, "aclk_core_adb400_gic_2_core_b", "armclkb", CLK_IGNORE_UNUSED, 53062306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 3, GFLAGS), 53162306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_CORE_B_2_GIC, "aclk_core_adb400_core_b_2_gic", "armclkb", CLK_IGNORE_UNUSED, 53262306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 4, GFLAGS), 53362306a36Sopenharmony_ci 53462306a36Sopenharmony_ci DIV(PCLK_COREDBG_B, "pclken_dbg_core_b", "pclk_dbg_core_b", CLK_IGNORE_UNUSED, 53562306a36Sopenharmony_ci RK3399_CLKSEL_CON(3), 13, 2, DFLAGS | CLK_DIVIDER_READ_ONLY), 53662306a36Sopenharmony_ci 53762306a36Sopenharmony_ci GATE(0, "pclk_dbg_cxcs_pd_core_b", "pclk_dbg_core_b", CLK_IGNORE_UNUSED, 53862306a36Sopenharmony_ci RK3399_CLKGATE_CON(14), 2, GFLAGS), 53962306a36Sopenharmony_ci 54062306a36Sopenharmony_ci GATE(SCLK_PVTM_CORE_B, "clk_pvtm_core_b", "xin24m", 0, 54162306a36Sopenharmony_ci RK3399_CLKGATE_CON(1), 7, GFLAGS), 54262306a36Sopenharmony_ci 54362306a36Sopenharmony_ci /* gmac */ 54462306a36Sopenharmony_ci GATE(0, "cpll_aclk_gmac_src", "cpll", CLK_IGNORE_UNUSED, 54562306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 9, GFLAGS), 54662306a36Sopenharmony_ci GATE(0, "gpll_aclk_gmac_src", "gpll", CLK_IGNORE_UNUSED, 54762306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 8, GFLAGS), 54862306a36Sopenharmony_ci COMPOSITE(0, "aclk_gmac_pre", mux_aclk_gmac_p, 0, 54962306a36Sopenharmony_ci RK3399_CLKSEL_CON(20), 7, 1, MFLAGS, 0, 5, DFLAGS, 55062306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 10, GFLAGS), 55162306a36Sopenharmony_ci 55262306a36Sopenharmony_ci GATE(ACLK_GMAC, "aclk_gmac", "aclk_gmac_pre", 0, 55362306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 0, GFLAGS), 55462306a36Sopenharmony_ci GATE(ACLK_GMAC_NOC, "aclk_gmac_noc", "aclk_gmac_pre", CLK_IGNORE_UNUSED, 55562306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 1, GFLAGS), 55662306a36Sopenharmony_ci GATE(ACLK_PERF_GMAC, "aclk_perf_gmac", "aclk_gmac_pre", 0, 55762306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 4, GFLAGS), 55862306a36Sopenharmony_ci 55962306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "pclk_gmac_pre", "aclk_gmac_pre", 0, 56062306a36Sopenharmony_ci RK3399_CLKSEL_CON(19), 8, 3, DFLAGS, 56162306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 11, GFLAGS), 56262306a36Sopenharmony_ci GATE(PCLK_GMAC, "pclk_gmac", "pclk_gmac_pre", 0, 56362306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 2, GFLAGS), 56462306a36Sopenharmony_ci GATE(PCLK_GMAC_NOC, "pclk_gmac_noc", "pclk_gmac_pre", CLK_IGNORE_UNUSED, 56562306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 3, GFLAGS), 56662306a36Sopenharmony_ci 56762306a36Sopenharmony_ci COMPOSITE(SCLK_MAC, "clk_gmac", mux_pll_src_cpll_gpll_npll_p, 0, 56862306a36Sopenharmony_ci RK3399_CLKSEL_CON(20), 14, 2, MFLAGS, 8, 5, DFLAGS, 56962306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 5, GFLAGS), 57062306a36Sopenharmony_ci 57162306a36Sopenharmony_ci MUX(SCLK_RMII_SRC, "clk_rmii_src", mux_rmii_p, CLK_SET_RATE_PARENT, 57262306a36Sopenharmony_ci RK3399_CLKSEL_CON(19), 4, 1, MFLAGS), 57362306a36Sopenharmony_ci GATE(SCLK_MACREF_OUT, "clk_mac_refout", "clk_rmii_src", 0, 57462306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 6, GFLAGS), 57562306a36Sopenharmony_ci GATE(SCLK_MACREF, "clk_mac_ref", "clk_rmii_src", 0, 57662306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 7, GFLAGS), 57762306a36Sopenharmony_ci GATE(SCLK_MAC_RX, "clk_rmii_rx", "clk_rmii_src", 0, 57862306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 8, GFLAGS), 57962306a36Sopenharmony_ci GATE(SCLK_MAC_TX, "clk_rmii_tx", "clk_rmii_src", 0, 58062306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 9, GFLAGS), 58162306a36Sopenharmony_ci 58262306a36Sopenharmony_ci /* spdif */ 58362306a36Sopenharmony_ci COMPOSITE(0, "clk_spdif_div", mux_pll_src_cpll_gpll_p, 0, 58462306a36Sopenharmony_ci RK3399_CLKSEL_CON(32), 7, 1, MFLAGS, 0, 7, DFLAGS, 58562306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 13, GFLAGS), 58662306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_spdif_frac", "clk_spdif_div", 0, 58762306a36Sopenharmony_ci RK3399_CLKSEL_CON(99), 0, 58862306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 14, GFLAGS, 58962306a36Sopenharmony_ci &rk3399_spdif_fracmux), 59062306a36Sopenharmony_ci GATE(SCLK_SPDIF_8CH, "clk_spdif", "clk_spdif_mux", CLK_SET_RATE_PARENT, 59162306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 15, GFLAGS), 59262306a36Sopenharmony_ci 59362306a36Sopenharmony_ci COMPOSITE(SCLK_SPDIF_REC_DPTX, "clk_spdif_rec_dptx", mux_pll_src_cpll_gpll_p, 0, 59462306a36Sopenharmony_ci RK3399_CLKSEL_CON(32), 15, 1, MFLAGS, 8, 5, DFLAGS, 59562306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 6, GFLAGS), 59662306a36Sopenharmony_ci /* i2s */ 59762306a36Sopenharmony_ci COMPOSITE(0, "clk_i2s0_div", mux_pll_src_cpll_gpll_p, 0, 59862306a36Sopenharmony_ci RK3399_CLKSEL_CON(28), 7, 1, MFLAGS, 0, 7, DFLAGS, 59962306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 3, GFLAGS), 60062306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_i2s0_frac", "clk_i2s0_div", 0, 60162306a36Sopenharmony_ci RK3399_CLKSEL_CON(96), 0, 60262306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 4, GFLAGS, 60362306a36Sopenharmony_ci &rk3399_i2s0_fracmux), 60462306a36Sopenharmony_ci GATE(SCLK_I2S0_8CH, "clk_i2s0", "clk_i2s0_mux", CLK_SET_RATE_PARENT, 60562306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 5, GFLAGS), 60662306a36Sopenharmony_ci 60762306a36Sopenharmony_ci COMPOSITE(0, "clk_i2s1_div", mux_pll_src_cpll_gpll_p, 0, 60862306a36Sopenharmony_ci RK3399_CLKSEL_CON(29), 7, 1, MFLAGS, 0, 7, DFLAGS, 60962306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 6, GFLAGS), 61062306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_i2s1_frac", "clk_i2s1_div", 0, 61162306a36Sopenharmony_ci RK3399_CLKSEL_CON(97), 0, 61262306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 7, GFLAGS, 61362306a36Sopenharmony_ci &rk3399_i2s1_fracmux), 61462306a36Sopenharmony_ci GATE(SCLK_I2S1_8CH, "clk_i2s1", "clk_i2s1_mux", CLK_SET_RATE_PARENT, 61562306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 8, GFLAGS), 61662306a36Sopenharmony_ci 61762306a36Sopenharmony_ci COMPOSITE(0, "clk_i2s2_div", mux_pll_src_cpll_gpll_p, 0, 61862306a36Sopenharmony_ci RK3399_CLKSEL_CON(30), 7, 1, MFLAGS, 0, 7, DFLAGS, 61962306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 9, GFLAGS), 62062306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_i2s2_frac", "clk_i2s2_div", 0, 62162306a36Sopenharmony_ci RK3399_CLKSEL_CON(98), 0, 62262306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 10, GFLAGS, 62362306a36Sopenharmony_ci &rk3399_i2s2_fracmux), 62462306a36Sopenharmony_ci GATE(SCLK_I2S2_8CH, "clk_i2s2", "clk_i2s2_mux", CLK_SET_RATE_PARENT, 62562306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 11, GFLAGS), 62662306a36Sopenharmony_ci 62762306a36Sopenharmony_ci MUX(0, "clk_i2sout_src", mux_i2sch_p, CLK_SET_RATE_PARENT, 62862306a36Sopenharmony_ci RK3399_CLKSEL_CON(31), 0, 2, MFLAGS), 62962306a36Sopenharmony_ci COMPOSITE_NODIV(SCLK_I2S_8CH_OUT, "clk_i2sout", mux_i2sout_p, CLK_SET_RATE_PARENT, 63062306a36Sopenharmony_ci RK3399_CLKSEL_CON(31), 2, 1, MFLAGS, 63162306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 12, GFLAGS), 63262306a36Sopenharmony_ci 63362306a36Sopenharmony_ci /* uart */ 63462306a36Sopenharmony_ci MUX(0, "clk_uart0_src", mux_pll_src_cpll_gpll_upll_p, 0, 63562306a36Sopenharmony_ci RK3399_CLKSEL_CON(33), 12, 2, MFLAGS), 63662306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "clk_uart0_div", "clk_uart0_src", 0, 63762306a36Sopenharmony_ci RK3399_CLKSEL_CON(33), 0, 7, DFLAGS, 63862306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 0, GFLAGS), 63962306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_uart0_frac", "clk_uart0_div", 0, 64062306a36Sopenharmony_ci RK3399_CLKSEL_CON(100), 0, 64162306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 1, GFLAGS, 64262306a36Sopenharmony_ci &rk3399_uart0_fracmux), 64362306a36Sopenharmony_ci 64462306a36Sopenharmony_ci MUX(0, "clk_uart_src", mux_pll_src_cpll_gpll_p, 0, 64562306a36Sopenharmony_ci RK3399_CLKSEL_CON(33), 15, 1, MFLAGS), 64662306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "clk_uart1_div", "clk_uart_src", 0, 64762306a36Sopenharmony_ci RK3399_CLKSEL_CON(34), 0, 7, DFLAGS, 64862306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 2, GFLAGS), 64962306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_uart1_frac", "clk_uart1_div", 0, 65062306a36Sopenharmony_ci RK3399_CLKSEL_CON(101), 0, 65162306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 3, GFLAGS, 65262306a36Sopenharmony_ci &rk3399_uart1_fracmux), 65362306a36Sopenharmony_ci 65462306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "clk_uart2_div", "clk_uart_src", 0, 65562306a36Sopenharmony_ci RK3399_CLKSEL_CON(35), 0, 7, DFLAGS, 65662306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 4, GFLAGS), 65762306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_uart2_frac", "clk_uart2_div", 0, 65862306a36Sopenharmony_ci RK3399_CLKSEL_CON(102), 0, 65962306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 5, GFLAGS, 66062306a36Sopenharmony_ci &rk3399_uart2_fracmux), 66162306a36Sopenharmony_ci 66262306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "clk_uart3_div", "clk_uart_src", 0, 66362306a36Sopenharmony_ci RK3399_CLKSEL_CON(36), 0, 7, DFLAGS, 66462306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 6, GFLAGS), 66562306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_uart3_frac", "clk_uart3_div", 0, 66662306a36Sopenharmony_ci RK3399_CLKSEL_CON(103), 0, 66762306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 7, GFLAGS, 66862306a36Sopenharmony_ci &rk3399_uart3_fracmux), 66962306a36Sopenharmony_ci 67062306a36Sopenharmony_ci COMPOSITE(PCLK_DDR, "pclk_ddr", mux_pll_src_cpll_gpll_p, CLK_IGNORE_UNUSED, 67162306a36Sopenharmony_ci RK3399_CLKSEL_CON(6), 15, 1, MFLAGS, 8, 5, DFLAGS, 67262306a36Sopenharmony_ci RK3399_CLKGATE_CON(3), 4, GFLAGS), 67362306a36Sopenharmony_ci 67462306a36Sopenharmony_ci GATE(PCLK_CENTER_MAIN_NOC, "pclk_center_main_noc", "pclk_ddr", CLK_IGNORE_UNUSED, 67562306a36Sopenharmony_ci RK3399_CLKGATE_CON(18), 10, GFLAGS), 67662306a36Sopenharmony_ci GATE(PCLK_DDR_MON, "pclk_ddr_mon", "pclk_ddr", 0, 67762306a36Sopenharmony_ci RK3399_CLKGATE_CON(18), 12, GFLAGS), 67862306a36Sopenharmony_ci GATE(PCLK_CIC, "pclk_cic", "pclk_ddr", CLK_IGNORE_UNUSED, 67962306a36Sopenharmony_ci RK3399_CLKGATE_CON(18), 15, GFLAGS), 68062306a36Sopenharmony_ci GATE(PCLK_DDR_SGRF, "pclk_ddr_sgrf", "pclk_ddr", CLK_IGNORE_UNUSED, 68162306a36Sopenharmony_ci RK3399_CLKGATE_CON(19), 2, GFLAGS), 68262306a36Sopenharmony_ci 68362306a36Sopenharmony_ci GATE(SCLK_PVTM_DDR, "clk_pvtm_ddr", "xin24m", 0, 68462306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 11, GFLAGS), 68562306a36Sopenharmony_ci GATE(SCLK_DFIMON0_TIMER, "clk_dfimon0_timer", "xin24m", 0, 68662306a36Sopenharmony_ci RK3399_CLKGATE_CON(3), 5, GFLAGS), 68762306a36Sopenharmony_ci GATE(SCLK_DFIMON1_TIMER, "clk_dfimon1_timer", "xin24m", 0, 68862306a36Sopenharmony_ci RK3399_CLKGATE_CON(3), 6, GFLAGS), 68962306a36Sopenharmony_ci 69062306a36Sopenharmony_ci /* cci */ 69162306a36Sopenharmony_ci GATE(0, "cpll_aclk_cci_src", "cpll", CLK_IGNORE_UNUSED, 69262306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 0, GFLAGS), 69362306a36Sopenharmony_ci GATE(0, "gpll_aclk_cci_src", "gpll", CLK_IGNORE_UNUSED, 69462306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 1, GFLAGS), 69562306a36Sopenharmony_ci GATE(0, "npll_aclk_cci_src", "npll", CLK_IGNORE_UNUSED, 69662306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 2, GFLAGS), 69762306a36Sopenharmony_ci GATE(0, "vpll_aclk_cci_src", "vpll", CLK_IGNORE_UNUSED, 69862306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 3, GFLAGS), 69962306a36Sopenharmony_ci 70062306a36Sopenharmony_ci COMPOSITE(0, "aclk_cci_pre", mux_aclk_cci_p, CLK_IGNORE_UNUSED, 70162306a36Sopenharmony_ci RK3399_CLKSEL_CON(5), 6, 2, MFLAGS, 0, 5, DFLAGS, 70262306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 4, GFLAGS), 70362306a36Sopenharmony_ci 70462306a36Sopenharmony_ci GATE(ACLK_ADB400M_PD_CORE_L, "aclk_adb400m_pd_core_l", "aclk_cci_pre", CLK_IGNORE_UNUSED, 70562306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 0, GFLAGS), 70662306a36Sopenharmony_ci GATE(ACLK_ADB400M_PD_CORE_B, "aclk_adb400m_pd_core_b", "aclk_cci_pre", CLK_IGNORE_UNUSED, 70762306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 1, GFLAGS), 70862306a36Sopenharmony_ci GATE(ACLK_CCI, "aclk_cci", "aclk_cci_pre", CLK_IGNORE_UNUSED, 70962306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 2, GFLAGS), 71062306a36Sopenharmony_ci GATE(ACLK_CCI_NOC0, "aclk_cci_noc0", "aclk_cci_pre", CLK_IGNORE_UNUSED, 71162306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 3, GFLAGS), 71262306a36Sopenharmony_ci GATE(ACLK_CCI_NOC1, "aclk_cci_noc1", "aclk_cci_pre", CLK_IGNORE_UNUSED, 71362306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 4, GFLAGS), 71462306a36Sopenharmony_ci GATE(ACLK_CCI_GRF, "aclk_cci_grf", "aclk_cci_pre", CLK_IGNORE_UNUSED, 71562306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 7, GFLAGS), 71662306a36Sopenharmony_ci 71762306a36Sopenharmony_ci GATE(0, "cpll_cci_trace", "cpll", CLK_IGNORE_UNUSED, 71862306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 5, GFLAGS), 71962306a36Sopenharmony_ci GATE(0, "gpll_cci_trace", "gpll", CLK_IGNORE_UNUSED, 72062306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 6, GFLAGS), 72162306a36Sopenharmony_ci COMPOSITE(SCLK_CCI_TRACE, "clk_cci_trace", mux_cci_trace_p, CLK_IGNORE_UNUSED, 72262306a36Sopenharmony_ci RK3399_CLKSEL_CON(5), 15, 2, MFLAGS, 8, 5, DFLAGS, 72362306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 7, GFLAGS), 72462306a36Sopenharmony_ci 72562306a36Sopenharmony_ci GATE(0, "cpll_cs", "cpll", CLK_IGNORE_UNUSED, 72662306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 8, GFLAGS), 72762306a36Sopenharmony_ci GATE(0, "gpll_cs", "gpll", CLK_IGNORE_UNUSED, 72862306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 9, GFLAGS), 72962306a36Sopenharmony_ci GATE(0, "npll_cs", "npll", CLK_IGNORE_UNUSED, 73062306a36Sopenharmony_ci RK3399_CLKGATE_CON(2), 10, GFLAGS), 73162306a36Sopenharmony_ci COMPOSITE_NOGATE(0, "clk_cs", mux_cs_p, CLK_IGNORE_UNUSED, 73262306a36Sopenharmony_ci RK3399_CLKSEL_CON(4), 6, 2, MFLAGS, 0, 5, DFLAGS), 73362306a36Sopenharmony_ci GATE(0, "clk_dbg_cxcs", "clk_cs", CLK_IGNORE_UNUSED, 73462306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 5, GFLAGS), 73562306a36Sopenharmony_ci GATE(0, "clk_dbg_noc", "clk_cs", CLK_IGNORE_UNUSED, 73662306a36Sopenharmony_ci RK3399_CLKGATE_CON(15), 6, GFLAGS), 73762306a36Sopenharmony_ci 73862306a36Sopenharmony_ci /* vcodec */ 73962306a36Sopenharmony_ci COMPOSITE(0, "aclk_vcodec_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0, 74062306a36Sopenharmony_ci RK3399_CLKSEL_CON(7), 6, 2, MFLAGS, 0, 5, DFLAGS, 74162306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 0, GFLAGS), 74262306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_vcodec_pre", "aclk_vcodec_pre", 0, 74362306a36Sopenharmony_ci RK3399_CLKSEL_CON(7), 8, 5, DFLAGS, 74462306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 1, GFLAGS), 74562306a36Sopenharmony_ci GATE(HCLK_VCODEC, "hclk_vcodec", "hclk_vcodec_pre", 0, 74662306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 2, GFLAGS), 74762306a36Sopenharmony_ci GATE(0, "hclk_vcodec_noc", "hclk_vcodec_pre", CLK_IGNORE_UNUSED, 74862306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 3, GFLAGS), 74962306a36Sopenharmony_ci 75062306a36Sopenharmony_ci GATE(ACLK_VCODEC, "aclk_vcodec", "aclk_vcodec_pre", 0, 75162306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 0, GFLAGS), 75262306a36Sopenharmony_ci GATE(0, "aclk_vcodec_noc", "aclk_vcodec_pre", CLK_IGNORE_UNUSED, 75362306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 1, GFLAGS), 75462306a36Sopenharmony_ci 75562306a36Sopenharmony_ci /* vdu */ 75662306a36Sopenharmony_ci COMPOSITE(SCLK_VDU_CORE, "clk_vdu_core", mux_pll_src_cpll_gpll_npll_p, 0, 75762306a36Sopenharmony_ci RK3399_CLKSEL_CON(9), 6, 2, MFLAGS, 0, 5, DFLAGS, 75862306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 4, GFLAGS), 75962306a36Sopenharmony_ci COMPOSITE(SCLK_VDU_CA, "clk_vdu_ca", mux_pll_src_cpll_gpll_npll_p, 0, 76062306a36Sopenharmony_ci RK3399_CLKSEL_CON(9), 14, 2, MFLAGS, 8, 5, DFLAGS, 76162306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 5, GFLAGS), 76262306a36Sopenharmony_ci 76362306a36Sopenharmony_ci COMPOSITE(0, "aclk_vdu_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0, 76462306a36Sopenharmony_ci RK3399_CLKSEL_CON(8), 6, 2, MFLAGS, 0, 5, DFLAGS, 76562306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 2, GFLAGS), 76662306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_vdu_pre", "aclk_vdu_pre", 0, 76762306a36Sopenharmony_ci RK3399_CLKSEL_CON(8), 8, 5, DFLAGS, 76862306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 3, GFLAGS), 76962306a36Sopenharmony_ci GATE(HCLK_VDU, "hclk_vdu", "hclk_vdu_pre", 0, 77062306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 10, GFLAGS), 77162306a36Sopenharmony_ci GATE(HCLK_VDU_NOC, "hclk_vdu_noc", "hclk_vdu_pre", CLK_IGNORE_UNUSED, 77262306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 11, GFLAGS), 77362306a36Sopenharmony_ci 77462306a36Sopenharmony_ci GATE(ACLK_VDU, "aclk_vdu", "aclk_vdu_pre", 0, 77562306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 8, GFLAGS), 77662306a36Sopenharmony_ci GATE(ACLK_VDU_NOC, "aclk_vdu_noc", "aclk_vdu_pre", CLK_IGNORE_UNUSED, 77762306a36Sopenharmony_ci RK3399_CLKGATE_CON(17), 9, GFLAGS), 77862306a36Sopenharmony_ci 77962306a36Sopenharmony_ci /* iep */ 78062306a36Sopenharmony_ci COMPOSITE(0, "aclk_iep_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0, 78162306a36Sopenharmony_ci RK3399_CLKSEL_CON(10), 6, 2, MFLAGS, 0, 5, DFLAGS, 78262306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 6, GFLAGS), 78362306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_iep_pre", "aclk_iep_pre", 0, 78462306a36Sopenharmony_ci RK3399_CLKSEL_CON(10), 8, 5, DFLAGS, 78562306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 7, GFLAGS), 78662306a36Sopenharmony_ci GATE(HCLK_IEP, "hclk_iep", "hclk_iep_pre", 0, 78762306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 2, GFLAGS), 78862306a36Sopenharmony_ci GATE(HCLK_IEP_NOC, "hclk_iep_noc", "hclk_iep_pre", CLK_IGNORE_UNUSED, 78962306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 3, GFLAGS), 79062306a36Sopenharmony_ci 79162306a36Sopenharmony_ci GATE(ACLK_IEP, "aclk_iep", "aclk_iep_pre", 0, 79262306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 0, GFLAGS), 79362306a36Sopenharmony_ci GATE(ACLK_IEP_NOC, "aclk_iep_noc", "aclk_iep_pre", CLK_IGNORE_UNUSED, 79462306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 1, GFLAGS), 79562306a36Sopenharmony_ci 79662306a36Sopenharmony_ci /* rga */ 79762306a36Sopenharmony_ci COMPOSITE(SCLK_RGA_CORE, "clk_rga_core", mux_pll_src_cpll_gpll_npll_ppll_p, 0, 79862306a36Sopenharmony_ci RK3399_CLKSEL_CON(12), 6, 2, MFLAGS, 0, 5, DFLAGS, 79962306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 10, GFLAGS), 80062306a36Sopenharmony_ci 80162306a36Sopenharmony_ci COMPOSITE(0, "aclk_rga_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0, 80262306a36Sopenharmony_ci RK3399_CLKSEL_CON(11), 6, 2, MFLAGS, 0, 5, DFLAGS, 80362306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 8, GFLAGS), 80462306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_rga_pre", "aclk_rga_pre", 0, 80562306a36Sopenharmony_ci RK3399_CLKSEL_CON(11), 8, 5, DFLAGS, 80662306a36Sopenharmony_ci RK3399_CLKGATE_CON(4), 9, GFLAGS), 80762306a36Sopenharmony_ci GATE(HCLK_RGA, "hclk_rga", "hclk_rga_pre", 0, 80862306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 10, GFLAGS), 80962306a36Sopenharmony_ci GATE(HCLK_RGA_NOC, "hclk_rga_noc", "hclk_rga_pre", CLK_IGNORE_UNUSED, 81062306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 11, GFLAGS), 81162306a36Sopenharmony_ci 81262306a36Sopenharmony_ci GATE(ACLK_RGA, "aclk_rga", "aclk_rga_pre", 0, 81362306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 8, GFLAGS), 81462306a36Sopenharmony_ci GATE(ACLK_RGA_NOC, "aclk_rga_noc", "aclk_rga_pre", CLK_IGNORE_UNUSED, 81562306a36Sopenharmony_ci RK3399_CLKGATE_CON(16), 9, GFLAGS), 81662306a36Sopenharmony_ci 81762306a36Sopenharmony_ci /* center */ 81862306a36Sopenharmony_ci COMPOSITE(0, "aclk_center", mux_pll_src_cpll_gpll_npll_p, CLK_IGNORE_UNUSED, 81962306a36Sopenharmony_ci RK3399_CLKSEL_CON(12), 14, 2, MFLAGS, 8, 5, DFLAGS, 82062306a36Sopenharmony_ci RK3399_CLKGATE_CON(3), 7, GFLAGS), 82162306a36Sopenharmony_ci GATE(ACLK_CENTER_MAIN_NOC, "aclk_center_main_noc", "aclk_center", CLK_IGNORE_UNUSED, 82262306a36Sopenharmony_ci RK3399_CLKGATE_CON(19), 0, GFLAGS), 82362306a36Sopenharmony_ci GATE(ACLK_CENTER_PERI_NOC, "aclk_center_peri_noc", "aclk_center", CLK_IGNORE_UNUSED, 82462306a36Sopenharmony_ci RK3399_CLKGATE_CON(19), 1, GFLAGS), 82562306a36Sopenharmony_ci 82662306a36Sopenharmony_ci /* gpu */ 82762306a36Sopenharmony_ci COMPOSITE(0, "aclk_gpu_pre", mux_pll_src_ppll_cpll_gpll_npll_p, CLK_IGNORE_UNUSED, 82862306a36Sopenharmony_ci RK3399_CLKSEL_CON(13), 5, 3, MFLAGS, 0, 5, DFLAGS, 82962306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 0, GFLAGS), 83062306a36Sopenharmony_ci GATE(ACLK_GPU, "aclk_gpu", "aclk_gpu_pre", 0, 83162306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 8, GFLAGS), 83262306a36Sopenharmony_ci GATE(ACLK_PERF_GPU, "aclk_perf_gpu", "aclk_gpu_pre", 0, 83362306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 10, GFLAGS), 83462306a36Sopenharmony_ci GATE(ACLK_GPU_GRF, "aclk_gpu_grf", "aclk_gpu_pre", 0, 83562306a36Sopenharmony_ci RK3399_CLKGATE_CON(30), 11, GFLAGS), 83662306a36Sopenharmony_ci GATE(SCLK_PVTM_GPU, "aclk_pvtm_gpu", "xin24m", 0, 83762306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 1, GFLAGS), 83862306a36Sopenharmony_ci 83962306a36Sopenharmony_ci /* perihp */ 84062306a36Sopenharmony_ci GATE(0, "cpll_aclk_perihp_src", "cpll", CLK_IGNORE_UNUSED, 84162306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 1, GFLAGS), 84262306a36Sopenharmony_ci GATE(0, "gpll_aclk_perihp_src", "gpll", CLK_IGNORE_UNUSED, 84362306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 0, GFLAGS), 84462306a36Sopenharmony_ci COMPOSITE(ACLK_PERIHP, "aclk_perihp", mux_aclk_perihp_p, CLK_IGNORE_UNUSED, 84562306a36Sopenharmony_ci RK3399_CLKSEL_CON(14), 7, 1, MFLAGS, 0, 5, DFLAGS, 84662306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 2, GFLAGS), 84762306a36Sopenharmony_ci COMPOSITE_NOMUX(HCLK_PERIHP, "hclk_perihp", "aclk_perihp", CLK_IGNORE_UNUSED, 84862306a36Sopenharmony_ci RK3399_CLKSEL_CON(14), 8, 2, DFLAGS, 84962306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 3, GFLAGS), 85062306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_PERIHP, "pclk_perihp", "aclk_perihp", CLK_IGNORE_UNUSED, 85162306a36Sopenharmony_ci RK3399_CLKSEL_CON(14), 12, 2, DFLAGS, 85262306a36Sopenharmony_ci RK3399_CLKGATE_CON(5), 4, GFLAGS), 85362306a36Sopenharmony_ci 85462306a36Sopenharmony_ci GATE(ACLK_PERF_PCIE, "aclk_perf_pcie", "aclk_perihp", 0, 85562306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 2, GFLAGS), 85662306a36Sopenharmony_ci GATE(ACLK_PCIE, "aclk_pcie", "aclk_perihp", 0, 85762306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 10, GFLAGS), 85862306a36Sopenharmony_ci GATE(0, "aclk_perihp_noc", "aclk_perihp", CLK_IGNORE_UNUSED, 85962306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 12, GFLAGS), 86062306a36Sopenharmony_ci 86162306a36Sopenharmony_ci GATE(HCLK_HOST0, "hclk_host0", "hclk_perihp", 0, 86262306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 5, GFLAGS), 86362306a36Sopenharmony_ci GATE(HCLK_HOST0_ARB, "hclk_host0_arb", "hclk_perihp", 0, 86462306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 6, GFLAGS), 86562306a36Sopenharmony_ci GATE(HCLK_HOST1, "hclk_host1", "hclk_perihp", 0, 86662306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 7, GFLAGS), 86762306a36Sopenharmony_ci GATE(HCLK_HOST1_ARB, "hclk_host1_arb", "hclk_perihp", 0, 86862306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 8, GFLAGS), 86962306a36Sopenharmony_ci GATE(HCLK_HSIC, "hclk_hsic", "hclk_perihp", 0, 87062306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 9, GFLAGS), 87162306a36Sopenharmony_ci GATE(0, "hclk_perihp_noc", "hclk_perihp", CLK_IGNORE_UNUSED, 87262306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 13, GFLAGS), 87362306a36Sopenharmony_ci GATE(0, "hclk_ahb1tom", "hclk_perihp", CLK_IGNORE_UNUSED, 87462306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 15, GFLAGS), 87562306a36Sopenharmony_ci 87662306a36Sopenharmony_ci GATE(PCLK_PERIHP_GRF, "pclk_perihp_grf", "pclk_perihp", CLK_IGNORE_UNUSED, 87762306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 4, GFLAGS), 87862306a36Sopenharmony_ci GATE(PCLK_PCIE, "pclk_pcie", "pclk_perihp", 0, 87962306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 11, GFLAGS), 88062306a36Sopenharmony_ci GATE(0, "pclk_perihp_noc", "pclk_perihp", CLK_IGNORE_UNUSED, 88162306a36Sopenharmony_ci RK3399_CLKGATE_CON(20), 14, GFLAGS), 88262306a36Sopenharmony_ci GATE(PCLK_HSICPHY, "pclk_hsicphy", "pclk_perihp", 0, 88362306a36Sopenharmony_ci RK3399_CLKGATE_CON(31), 8, GFLAGS), 88462306a36Sopenharmony_ci 88562306a36Sopenharmony_ci /* sdio & sdmmc */ 88662306a36Sopenharmony_ci COMPOSITE(HCLK_SD, "hclk_sd", mux_pll_src_cpll_gpll_p, 0, 88762306a36Sopenharmony_ci RK3399_CLKSEL_CON(13), 15, 1, MFLAGS, 8, 5, DFLAGS, 88862306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 13, GFLAGS), 88962306a36Sopenharmony_ci GATE(HCLK_SDMMC, "hclk_sdmmc", "hclk_sd", 0, 89062306a36Sopenharmony_ci RK3399_CLKGATE_CON(33), 8, GFLAGS), 89162306a36Sopenharmony_ci GATE(0, "hclk_sdmmc_noc", "hclk_sd", CLK_IGNORE_UNUSED, 89262306a36Sopenharmony_ci RK3399_CLKGATE_CON(33), 9, GFLAGS), 89362306a36Sopenharmony_ci 89462306a36Sopenharmony_ci COMPOSITE(SCLK_SDIO, "clk_sdio", mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p, 0, 89562306a36Sopenharmony_ci RK3399_CLKSEL_CON(15), 8, 3, MFLAGS, 0, 7, DFLAGS, 89662306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 0, GFLAGS), 89762306a36Sopenharmony_ci 89862306a36Sopenharmony_ci COMPOSITE(SCLK_SDMMC, "clk_sdmmc", mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p, 0, 89962306a36Sopenharmony_ci RK3399_CLKSEL_CON(16), 8, 3, MFLAGS, 0, 7, DFLAGS, 90062306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 1, GFLAGS), 90162306a36Sopenharmony_ci 90262306a36Sopenharmony_ci MMC(SCLK_SDMMC_DRV, "sdmmc_drv", "clk_sdmmc", RK3399_SDMMC_CON0, 1), 90362306a36Sopenharmony_ci MMC(SCLK_SDMMC_SAMPLE, "sdmmc_sample", "clk_sdmmc", RK3399_SDMMC_CON1, 1), 90462306a36Sopenharmony_ci 90562306a36Sopenharmony_ci MMC(SCLK_SDIO_DRV, "sdio_drv", "clk_sdio", RK3399_SDIO_CON0, 1), 90662306a36Sopenharmony_ci MMC(SCLK_SDIO_SAMPLE, "sdio_sample", "clk_sdio", RK3399_SDIO_CON1, 1), 90762306a36Sopenharmony_ci 90862306a36Sopenharmony_ci /* pcie */ 90962306a36Sopenharmony_ci COMPOSITE(SCLK_PCIE_PM, "clk_pcie_pm", mux_pll_src_cpll_gpll_npll_24m_p, 0, 91062306a36Sopenharmony_ci RK3399_CLKSEL_CON(17), 8, 3, MFLAGS, 0, 7, DFLAGS, 91162306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 2, GFLAGS), 91262306a36Sopenharmony_ci 91362306a36Sopenharmony_ci COMPOSITE_NOMUX(SCLK_PCIEPHY_REF100M, "clk_pciephy_ref100m", "npll", 0, 91462306a36Sopenharmony_ci RK3399_CLKSEL_CON(18), 11, 5, DFLAGS, 91562306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 6, GFLAGS), 91662306a36Sopenharmony_ci MUX(SCLK_PCIEPHY_REF, "clk_pciephy_ref", mux_pll_src_24m_pciephy_p, CLK_SET_RATE_PARENT, 91762306a36Sopenharmony_ci RK3399_CLKSEL_CON(18), 10, 1, MFLAGS), 91862306a36Sopenharmony_ci 91962306a36Sopenharmony_ci COMPOSITE(0, "clk_pcie_core_cru", mux_pll_src_cpll_gpll_npll_p, 0, 92062306a36Sopenharmony_ci RK3399_CLKSEL_CON(18), 8, 2, MFLAGS, 0, 7, DFLAGS, 92162306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 3, GFLAGS), 92262306a36Sopenharmony_ci MUX(SCLK_PCIE_CORE, "clk_pcie_core", mux_pciecore_cru_phy_p, CLK_SET_RATE_PARENT, 92362306a36Sopenharmony_ci RK3399_CLKSEL_CON(18), 7, 1, MFLAGS), 92462306a36Sopenharmony_ci 92562306a36Sopenharmony_ci /* emmc */ 92662306a36Sopenharmony_ci COMPOSITE(SCLK_EMMC, "clk_emmc", mux_pll_src_cpll_gpll_npll_upll_24m_p, 0, 92762306a36Sopenharmony_ci RK3399_CLKSEL_CON(22), 8, 3, MFLAGS, 0, 7, DFLAGS, 92862306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 14, GFLAGS), 92962306a36Sopenharmony_ci 93062306a36Sopenharmony_ci GATE(0, "cpll_aclk_emmc_src", "cpll", CLK_IGNORE_UNUSED, 93162306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 13, GFLAGS), 93262306a36Sopenharmony_ci GATE(0, "gpll_aclk_emmc_src", "gpll", CLK_IGNORE_UNUSED, 93362306a36Sopenharmony_ci RK3399_CLKGATE_CON(6), 12, GFLAGS), 93462306a36Sopenharmony_ci COMPOSITE_NOGATE(ACLK_EMMC, "aclk_emmc", mux_aclk_emmc_p, CLK_IGNORE_UNUSED, 93562306a36Sopenharmony_ci RK3399_CLKSEL_CON(21), 7, 1, MFLAGS, 0, 5, DFLAGS), 93662306a36Sopenharmony_ci GATE(ACLK_EMMC_CORE, "aclk_emmccore", "aclk_emmc", CLK_IGNORE_UNUSED, 93762306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 8, GFLAGS), 93862306a36Sopenharmony_ci GATE(ACLK_EMMC_NOC, "aclk_emmc_noc", "aclk_emmc", CLK_IGNORE_UNUSED, 93962306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 9, GFLAGS), 94062306a36Sopenharmony_ci GATE(ACLK_EMMC_GRF, "aclk_emmcgrf", "aclk_emmc", CLK_IGNORE_UNUSED, 94162306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 10, GFLAGS), 94262306a36Sopenharmony_ci 94362306a36Sopenharmony_ci /* perilp0 */ 94462306a36Sopenharmony_ci GATE(0, "cpll_aclk_perilp0_src", "cpll", CLK_IGNORE_UNUSED, 94562306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 1, GFLAGS), 94662306a36Sopenharmony_ci GATE(0, "gpll_aclk_perilp0_src", "gpll", CLK_IGNORE_UNUSED, 94762306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 0, GFLAGS), 94862306a36Sopenharmony_ci COMPOSITE(ACLK_PERILP0, "aclk_perilp0", mux_aclk_perilp0_p, CLK_IGNORE_UNUSED, 94962306a36Sopenharmony_ci RK3399_CLKSEL_CON(23), 7, 1, MFLAGS, 0, 5, DFLAGS, 95062306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 2, GFLAGS), 95162306a36Sopenharmony_ci COMPOSITE_NOMUX(HCLK_PERILP0, "hclk_perilp0", "aclk_perilp0", CLK_IGNORE_UNUSED, 95262306a36Sopenharmony_ci RK3399_CLKSEL_CON(23), 8, 2, DFLAGS, 95362306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 3, GFLAGS), 95462306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_PERILP0, "pclk_perilp0", "aclk_perilp0", 0, 95562306a36Sopenharmony_ci RK3399_CLKSEL_CON(23), 12, 3, DFLAGS, 95662306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 4, GFLAGS), 95762306a36Sopenharmony_ci 95862306a36Sopenharmony_ci /* aclk_perilp0 gates */ 95962306a36Sopenharmony_ci GATE(ACLK_INTMEM, "aclk_intmem", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 0, GFLAGS), 96062306a36Sopenharmony_ci GATE(ACLK_TZMA, "aclk_tzma", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 1, GFLAGS), 96162306a36Sopenharmony_ci GATE(SCLK_INTMEM0, "clk_intmem0", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 2, GFLAGS), 96262306a36Sopenharmony_ci GATE(SCLK_INTMEM1, "clk_intmem1", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 3, GFLAGS), 96362306a36Sopenharmony_ci GATE(SCLK_INTMEM2, "clk_intmem2", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 4, GFLAGS), 96462306a36Sopenharmony_ci GATE(SCLK_INTMEM3, "clk_intmem3", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 5, GFLAGS), 96562306a36Sopenharmony_ci GATE(SCLK_INTMEM4, "clk_intmem4", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 6, GFLAGS), 96662306a36Sopenharmony_ci GATE(SCLK_INTMEM5, "clk_intmem5", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 7, GFLAGS), 96762306a36Sopenharmony_ci GATE(ACLK_DCF, "aclk_dcf", "aclk_perilp0", 0, RK3399_CLKGATE_CON(23), 8, GFLAGS), 96862306a36Sopenharmony_ci GATE(ACLK_DMAC0_PERILP, "aclk_dmac0_perilp", "aclk_perilp0", 0, RK3399_CLKGATE_CON(25), 5, GFLAGS), 96962306a36Sopenharmony_ci GATE(ACLK_DMAC1_PERILP, "aclk_dmac1_perilp", "aclk_perilp0", 0, RK3399_CLKGATE_CON(25), 6, GFLAGS), 97062306a36Sopenharmony_ci GATE(ACLK_PERILP0_NOC, "aclk_perilp0_noc", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(25), 7, GFLAGS), 97162306a36Sopenharmony_ci 97262306a36Sopenharmony_ci /* hclk_perilp0 gates */ 97362306a36Sopenharmony_ci GATE(HCLK_ROM, "hclk_rom", "hclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(24), 4, GFLAGS), 97462306a36Sopenharmony_ci GATE(HCLK_M_CRYPTO0, "hclk_m_crypto0", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 5, GFLAGS), 97562306a36Sopenharmony_ci GATE(HCLK_S_CRYPTO0, "hclk_s_crypto0", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 6, GFLAGS), 97662306a36Sopenharmony_ci GATE(HCLK_M_CRYPTO1, "hclk_m_crypto1", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 14, GFLAGS), 97762306a36Sopenharmony_ci GATE(HCLK_S_CRYPTO1, "hclk_s_crypto1", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 15, GFLAGS), 97862306a36Sopenharmony_ci GATE(HCLK_PERILP0_NOC, "hclk_perilp0_noc", "hclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(25), 8, GFLAGS), 97962306a36Sopenharmony_ci 98062306a36Sopenharmony_ci /* pclk_perilp0 gates */ 98162306a36Sopenharmony_ci GATE(PCLK_DCF, "pclk_dcf", "pclk_perilp0", 0, RK3399_CLKGATE_CON(23), 9, GFLAGS), 98262306a36Sopenharmony_ci 98362306a36Sopenharmony_ci /* crypto */ 98462306a36Sopenharmony_ci COMPOSITE(SCLK_CRYPTO0, "clk_crypto0", mux_pll_src_cpll_gpll_ppll_p, 0, 98562306a36Sopenharmony_ci RK3399_CLKSEL_CON(24), 6, 2, MFLAGS, 0, 5, DFLAGS, 98662306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 7, GFLAGS), 98762306a36Sopenharmony_ci 98862306a36Sopenharmony_ci COMPOSITE(SCLK_CRYPTO1, "clk_crypto1", mux_pll_src_cpll_gpll_ppll_p, 0, 98962306a36Sopenharmony_ci RK3399_CLKSEL_CON(26), 6, 2, MFLAGS, 0, 5, DFLAGS, 99062306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 8, GFLAGS), 99162306a36Sopenharmony_ci 99262306a36Sopenharmony_ci /* cm0s_perilp */ 99362306a36Sopenharmony_ci GATE(0, "cpll_fclk_cm0s_src", "cpll", 0, 99462306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 6, GFLAGS), 99562306a36Sopenharmony_ci GATE(0, "gpll_fclk_cm0s_src", "gpll", 0, 99662306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 5, GFLAGS), 99762306a36Sopenharmony_ci COMPOSITE(FCLK_CM0S, "fclk_cm0s", mux_fclk_cm0s_p, 0, 99862306a36Sopenharmony_ci RK3399_CLKSEL_CON(24), 15, 1, MFLAGS, 8, 5, DFLAGS, 99962306a36Sopenharmony_ci RK3399_CLKGATE_CON(7), 9, GFLAGS), 100062306a36Sopenharmony_ci 100162306a36Sopenharmony_ci /* fclk_cm0s gates */ 100262306a36Sopenharmony_ci GATE(SCLK_M0_PERILP, "sclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 8, GFLAGS), 100362306a36Sopenharmony_ci GATE(HCLK_M0_PERILP, "hclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 9, GFLAGS), 100462306a36Sopenharmony_ci GATE(DCLK_M0_PERILP, "dclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 10, GFLAGS), 100562306a36Sopenharmony_ci GATE(SCLK_M0_PERILP_DEC, "clk_m0_perilp_dec", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 11, GFLAGS), 100662306a36Sopenharmony_ci GATE(HCLK_M0_PERILP_NOC, "hclk_m0_perilp_noc", "fclk_cm0s", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(25), 11, GFLAGS), 100762306a36Sopenharmony_ci 100862306a36Sopenharmony_ci /* perilp1 */ 100962306a36Sopenharmony_ci GATE(0, "cpll_hclk_perilp1_src", "cpll", CLK_IGNORE_UNUSED, 101062306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 1, GFLAGS), 101162306a36Sopenharmony_ci GATE(0, "gpll_hclk_perilp1_src", "gpll", CLK_IGNORE_UNUSED, 101262306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 0, GFLAGS), 101362306a36Sopenharmony_ci COMPOSITE_NOGATE(HCLK_PERILP1, "hclk_perilp1", mux_hclk_perilp1_p, CLK_IGNORE_UNUSED, 101462306a36Sopenharmony_ci RK3399_CLKSEL_CON(25), 7, 1, MFLAGS, 0, 5, DFLAGS), 101562306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_PERILP1, "pclk_perilp1", "hclk_perilp1", CLK_IGNORE_UNUSED, 101662306a36Sopenharmony_ci RK3399_CLKSEL_CON(25), 8, 3, DFLAGS, 101762306a36Sopenharmony_ci RK3399_CLKGATE_CON(8), 2, GFLAGS), 101862306a36Sopenharmony_ci 101962306a36Sopenharmony_ci /* hclk_perilp1 gates */ 102062306a36Sopenharmony_ci GATE(0, "hclk_perilp1_noc", "hclk_perilp1", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(25), 9, GFLAGS), 102162306a36Sopenharmony_ci GATE(0, "hclk_sdio_noc", "hclk_perilp1", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(25), 12, GFLAGS), 102262306a36Sopenharmony_ci GATE(HCLK_I2S0_8CH, "hclk_i2s0", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 0, GFLAGS), 102362306a36Sopenharmony_ci GATE(HCLK_I2S1_8CH, "hclk_i2s1", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 1, GFLAGS), 102462306a36Sopenharmony_ci GATE(HCLK_I2S2_8CH, "hclk_i2s2", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 2, GFLAGS), 102562306a36Sopenharmony_ci GATE(HCLK_SPDIF, "hclk_spdif", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 3, GFLAGS), 102662306a36Sopenharmony_ci GATE(HCLK_SDIO, "hclk_sdio", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 4, GFLAGS), 102762306a36Sopenharmony_ci GATE(PCLK_SPI5, "pclk_spi5", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 5, GFLAGS), 102862306a36Sopenharmony_ci GATE(0, "hclk_sdioaudio_noc", "hclk_perilp1", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(34), 6, GFLAGS), 102962306a36Sopenharmony_ci 103062306a36Sopenharmony_ci /* pclk_perilp1 gates */ 103162306a36Sopenharmony_ci GATE(PCLK_UART0, "pclk_uart0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 0, GFLAGS), 103262306a36Sopenharmony_ci GATE(PCLK_UART1, "pclk_uart1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 1, GFLAGS), 103362306a36Sopenharmony_ci GATE(PCLK_UART2, "pclk_uart2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 2, GFLAGS), 103462306a36Sopenharmony_ci GATE(PCLK_UART3, "pclk_uart3", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 3, GFLAGS), 103562306a36Sopenharmony_ci GATE(PCLK_I2C7, "pclk_rki2c7", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 5, GFLAGS), 103662306a36Sopenharmony_ci GATE(PCLK_I2C1, "pclk_rki2c1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 6, GFLAGS), 103762306a36Sopenharmony_ci GATE(PCLK_I2C5, "pclk_rki2c5", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 7, GFLAGS), 103862306a36Sopenharmony_ci GATE(PCLK_I2C6, "pclk_rki2c6", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 8, GFLAGS), 103962306a36Sopenharmony_ci GATE(PCLK_I2C2, "pclk_rki2c2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 9, GFLAGS), 104062306a36Sopenharmony_ci GATE(PCLK_I2C3, "pclk_rki2c3", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 10, GFLAGS), 104162306a36Sopenharmony_ci GATE(PCLK_MAILBOX0, "pclk_mailbox0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 11, GFLAGS), 104262306a36Sopenharmony_ci GATE(PCLK_SARADC, "pclk_saradc", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 12, GFLAGS), 104362306a36Sopenharmony_ci GATE(PCLK_TSADC, "pclk_tsadc", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 13, GFLAGS), 104462306a36Sopenharmony_ci GATE(PCLK_EFUSE1024NS, "pclk_efuse1024ns", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 14, GFLAGS), 104562306a36Sopenharmony_ci GATE(PCLK_EFUSE1024S, "pclk_efuse1024s", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 15, GFLAGS), 104662306a36Sopenharmony_ci GATE(PCLK_SPI0, "pclk_spi0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 10, GFLAGS), 104762306a36Sopenharmony_ci GATE(PCLK_SPI1, "pclk_spi1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 11, GFLAGS), 104862306a36Sopenharmony_ci GATE(PCLK_SPI2, "pclk_spi2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 12, GFLAGS), 104962306a36Sopenharmony_ci GATE(PCLK_SPI4, "pclk_spi4", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 13, GFLAGS), 105062306a36Sopenharmony_ci GATE(PCLK_PERIHP_GRF, "pclk_perilp_sgrf", "pclk_perilp1", 0, RK3399_CLKGATE_CON(24), 13, GFLAGS), 105162306a36Sopenharmony_ci GATE(0, "pclk_perilp1_noc", "pclk_perilp1", 0, RK3399_CLKGATE_CON(25), 10, GFLAGS), 105262306a36Sopenharmony_ci 105362306a36Sopenharmony_ci /* saradc */ 105462306a36Sopenharmony_ci COMPOSITE_NOMUX(SCLK_SARADC, "clk_saradc", "xin24m", 0, 105562306a36Sopenharmony_ci RK3399_CLKSEL_CON(26), 8, 8, DFLAGS, 105662306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 11, GFLAGS), 105762306a36Sopenharmony_ci 105862306a36Sopenharmony_ci /* tsadc */ 105962306a36Sopenharmony_ci COMPOSITE(SCLK_TSADC, "clk_tsadc", mux_pll_p, 0, 106062306a36Sopenharmony_ci RK3399_CLKSEL_CON(27), 15, 1, MFLAGS, 0, 10, DFLAGS, 106162306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 10, GFLAGS), 106262306a36Sopenharmony_ci 106362306a36Sopenharmony_ci /* cif_testout */ 106462306a36Sopenharmony_ci MUX(0, "clk_testout1_pll_src", mux_pll_src_cpll_gpll_npll_p, 0, 106562306a36Sopenharmony_ci RK3399_CLKSEL_CON(38), 6, 2, MFLAGS), 106662306a36Sopenharmony_ci COMPOSITE(SCLK_TESTCLKOUT1, "clk_testout1", mux_clk_testout1_p, 0, 106762306a36Sopenharmony_ci RK3399_CLKSEL_CON(38), 5, 1, MFLAGS, 0, 5, DFLAGS, 106862306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 14, GFLAGS), 106962306a36Sopenharmony_ci 107062306a36Sopenharmony_ci MUX(0, "clk_testout2_pll_src", mux_pll_src_cpll_gpll_npll_p, 0, 107162306a36Sopenharmony_ci RK3399_CLKSEL_CON(38), 14, 2, MFLAGS), 107262306a36Sopenharmony_ci COMPOSITE(SCLK_TESTCLKOUT2, "clk_testout2", mux_clk_testout2_p, 0, 107362306a36Sopenharmony_ci RK3399_CLKSEL_CON(38), 13, 1, MFLAGS, 8, 5, DFLAGS, 107462306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 15, GFLAGS), 107562306a36Sopenharmony_ci 107662306a36Sopenharmony_ci /* vio */ 107762306a36Sopenharmony_ci COMPOSITE(ACLK_VIO, "aclk_vio", mux_pll_src_cpll_gpll_ppll_p, CLK_IGNORE_UNUSED, 107862306a36Sopenharmony_ci RK3399_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS, 107962306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 0, GFLAGS), 108062306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_VIO, "pclk_vio", "aclk_vio", 0, 108162306a36Sopenharmony_ci RK3399_CLKSEL_CON(43), 0, 5, DFLAGS, 108262306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 1, GFLAGS), 108362306a36Sopenharmony_ci 108462306a36Sopenharmony_ci GATE(ACLK_VIO_NOC, "aclk_vio_noc", "aclk_vio", CLK_IGNORE_UNUSED, 108562306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 0, GFLAGS), 108662306a36Sopenharmony_ci 108762306a36Sopenharmony_ci GATE(PCLK_MIPI_DSI0, "pclk_mipi_dsi0", "pclk_vio", 0, 108862306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 1, GFLAGS), 108962306a36Sopenharmony_ci GATE(PCLK_MIPI_DSI1, "pclk_mipi_dsi1", "pclk_vio", 0, 109062306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 2, GFLAGS), 109162306a36Sopenharmony_ci GATE(PCLK_VIO_GRF, "pclk_vio_grf", "pclk_vio", CLK_IGNORE_UNUSED, 109262306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 12, GFLAGS), 109362306a36Sopenharmony_ci 109462306a36Sopenharmony_ci /* hdcp */ 109562306a36Sopenharmony_ci COMPOSITE(ACLK_HDCP, "aclk_hdcp", mux_pll_src_cpll_gpll_ppll_p, 0, 109662306a36Sopenharmony_ci RK3399_CLKSEL_CON(42), 14, 2, MFLAGS, 8, 5, DFLAGS, 109762306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 12, GFLAGS), 109862306a36Sopenharmony_ci COMPOSITE_NOMUX(HCLK_HDCP, "hclk_hdcp", "aclk_hdcp", 0, 109962306a36Sopenharmony_ci RK3399_CLKSEL_CON(43), 5, 5, DFLAGS, 110062306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 3, GFLAGS), 110162306a36Sopenharmony_ci COMPOSITE_NOMUX(PCLK_HDCP, "pclk_hdcp", "aclk_hdcp", 0, 110262306a36Sopenharmony_ci RK3399_CLKSEL_CON(43), 10, 5, DFLAGS, 110362306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 10, GFLAGS), 110462306a36Sopenharmony_ci 110562306a36Sopenharmony_ci GATE(ACLK_HDCP_NOC, "aclk_hdcp_noc", "aclk_hdcp", CLK_IGNORE_UNUSED, 110662306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 4, GFLAGS), 110762306a36Sopenharmony_ci GATE(ACLK_HDCP22, "aclk_hdcp22", "aclk_hdcp", 0, 110862306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 10, GFLAGS), 110962306a36Sopenharmony_ci 111062306a36Sopenharmony_ci GATE(HCLK_HDCP_NOC, "hclk_hdcp_noc", "hclk_hdcp", CLK_IGNORE_UNUSED, 111162306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 5, GFLAGS), 111262306a36Sopenharmony_ci GATE(HCLK_HDCP22, "hclk_hdcp22", "hclk_hdcp", 0, 111362306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 9, GFLAGS), 111462306a36Sopenharmony_ci 111562306a36Sopenharmony_ci GATE(PCLK_HDCP_NOC, "pclk_hdcp_noc", "pclk_hdcp", CLK_IGNORE_UNUSED, 111662306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 3, GFLAGS), 111762306a36Sopenharmony_ci GATE(PCLK_HDMI_CTRL, "pclk_hdmi_ctrl", "pclk_hdcp", 0, 111862306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 6, GFLAGS), 111962306a36Sopenharmony_ci GATE(PCLK_DP_CTRL, "pclk_dp_ctrl", "pclk_hdcp", 0, 112062306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 7, GFLAGS), 112162306a36Sopenharmony_ci GATE(PCLK_HDCP22, "pclk_hdcp22", "pclk_hdcp", 0, 112262306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 8, GFLAGS), 112362306a36Sopenharmony_ci GATE(PCLK_GASKET, "pclk_gasket", "pclk_hdcp", 0, 112462306a36Sopenharmony_ci RK3399_CLKGATE_CON(29), 11, GFLAGS), 112562306a36Sopenharmony_ci 112662306a36Sopenharmony_ci /* edp */ 112762306a36Sopenharmony_ci COMPOSITE(SCLK_DP_CORE, "clk_dp_core", mux_pll_src_npll_cpll_gpll_p, 0, 112862306a36Sopenharmony_ci RK3399_CLKSEL_CON(46), 6, 2, MFLAGS, 0, 5, DFLAGS, 112962306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 8, GFLAGS), 113062306a36Sopenharmony_ci 113162306a36Sopenharmony_ci COMPOSITE(PCLK_EDP, "pclk_edp", mux_pll_src_cpll_gpll_p, 0, 113262306a36Sopenharmony_ci RK3399_CLKSEL_CON(44), 15, 1, MFLAGS, 8, 6, DFLAGS, 113362306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 11, GFLAGS), 113462306a36Sopenharmony_ci GATE(PCLK_EDP_NOC, "pclk_edp_noc", "pclk_edp", CLK_IGNORE_UNUSED, 113562306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 12, GFLAGS), 113662306a36Sopenharmony_ci GATE(PCLK_EDP_CTRL, "pclk_edp_ctrl", "pclk_edp", 0, 113762306a36Sopenharmony_ci RK3399_CLKGATE_CON(32), 13, GFLAGS), 113862306a36Sopenharmony_ci 113962306a36Sopenharmony_ci /* hdmi */ 114062306a36Sopenharmony_ci GATE(SCLK_HDMI_SFR, "clk_hdmi_sfr", "xin24m", 0, 114162306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 6, GFLAGS), 114262306a36Sopenharmony_ci 114362306a36Sopenharmony_ci COMPOSITE(SCLK_HDMI_CEC, "clk_hdmi_cec", mux_pll_p, 0, 114462306a36Sopenharmony_ci RK3399_CLKSEL_CON(45), 15, 1, MFLAGS, 0, 10, DFLAGS, 114562306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 7, GFLAGS), 114662306a36Sopenharmony_ci 114762306a36Sopenharmony_ci /* vop0 */ 114862306a36Sopenharmony_ci COMPOSITE(ACLK_VOP0_PRE, "aclk_vop0_pre", mux_pll_src_vpll_cpll_gpll_npll_p, 0, 114962306a36Sopenharmony_ci RK3399_CLKSEL_CON(47), 6, 2, MFLAGS, 0, 5, DFLAGS, 115062306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 8, GFLAGS), 115162306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_vop0_pre", "aclk_vop0_pre", 0, 115262306a36Sopenharmony_ci RK3399_CLKSEL_CON(47), 8, 5, DFLAGS, 115362306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 9, GFLAGS), 115462306a36Sopenharmony_ci 115562306a36Sopenharmony_ci GATE(ACLK_VOP0, "aclk_vop0", "aclk_vop0_pre", 0, 115662306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 3, GFLAGS), 115762306a36Sopenharmony_ci GATE(ACLK_VOP0_NOC, "aclk_vop0_noc", "aclk_vop0_pre", CLK_IGNORE_UNUSED, 115862306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 1, GFLAGS), 115962306a36Sopenharmony_ci 116062306a36Sopenharmony_ci GATE(HCLK_VOP0, "hclk_vop0", "hclk_vop0_pre", 0, 116162306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 2, GFLAGS), 116262306a36Sopenharmony_ci GATE(HCLK_VOP0_NOC, "hclk_vop0_noc", "hclk_vop0_pre", CLK_IGNORE_UNUSED, 116362306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 0, GFLAGS), 116462306a36Sopenharmony_ci 116562306a36Sopenharmony_ci COMPOSITE(DCLK_VOP0_DIV, "dclk_vop0_div", mux_pll_src_vpll_cpll_gpll_p, 0, 116662306a36Sopenharmony_ci RK3399_CLKSEL_CON(49), 8, 2, MFLAGS, 0, 8, DFLAGS, 116762306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 12, GFLAGS), 116862306a36Sopenharmony_ci 116962306a36Sopenharmony_ci COMPOSITE_FRACMUX_NOGATE(DCLK_VOP0_FRAC, "dclk_vop0_frac", "dclk_vop0_div", 0, 117062306a36Sopenharmony_ci RK3399_CLKSEL_CON(106), 0, 117162306a36Sopenharmony_ci &rk3399_dclk_vop0_fracmux), 117262306a36Sopenharmony_ci 117362306a36Sopenharmony_ci COMPOSITE(SCLK_VOP0_PWM, "clk_vop0_pwm", mux_pll_src_vpll_cpll_gpll_24m_p, 0, 117462306a36Sopenharmony_ci RK3399_CLKSEL_CON(51), 6, 2, MFLAGS, 0, 5, DFLAGS, 117562306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 14, GFLAGS), 117662306a36Sopenharmony_ci 117762306a36Sopenharmony_ci /* vop1 */ 117862306a36Sopenharmony_ci COMPOSITE(ACLK_VOP1_PRE, "aclk_vop1_pre", mux_pll_src_vpll_cpll_gpll_npll_p, 0, 117962306a36Sopenharmony_ci RK3399_CLKSEL_CON(48), 6, 2, MFLAGS, 0, 5, DFLAGS, 118062306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 10, GFLAGS), 118162306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "hclk_vop1_pre", "aclk_vop1_pre", 0, 118262306a36Sopenharmony_ci RK3399_CLKSEL_CON(48), 8, 5, DFLAGS, 118362306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 11, GFLAGS), 118462306a36Sopenharmony_ci 118562306a36Sopenharmony_ci GATE(ACLK_VOP1, "aclk_vop1", "aclk_vop1_pre", 0, 118662306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 7, GFLAGS), 118762306a36Sopenharmony_ci GATE(ACLK_VOP1_NOC, "aclk_vop1_noc", "aclk_vop1_pre", CLK_IGNORE_UNUSED, 118862306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 5, GFLAGS), 118962306a36Sopenharmony_ci 119062306a36Sopenharmony_ci GATE(HCLK_VOP1, "hclk_vop1", "hclk_vop1_pre", 0, 119162306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 6, GFLAGS), 119262306a36Sopenharmony_ci GATE(HCLK_VOP1_NOC, "hclk_vop1_noc", "hclk_vop1_pre", CLK_IGNORE_UNUSED, 119362306a36Sopenharmony_ci RK3399_CLKGATE_CON(28), 4, GFLAGS), 119462306a36Sopenharmony_ci 119562306a36Sopenharmony_ci COMPOSITE(DCLK_VOP1_DIV, "dclk_vop1_div", mux_pll_src_vpll_cpll_gpll_p, 0, 119662306a36Sopenharmony_ci RK3399_CLKSEL_CON(50), 8, 2, MFLAGS, 0, 8, DFLAGS, 119762306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 13, GFLAGS), 119862306a36Sopenharmony_ci 119962306a36Sopenharmony_ci COMPOSITE_FRACMUX_NOGATE(DCLK_VOP1_FRAC, "dclk_vop1_frac", "dclk_vop1_div", 0, 120062306a36Sopenharmony_ci RK3399_CLKSEL_CON(107), 0, 120162306a36Sopenharmony_ci &rk3399_dclk_vop1_fracmux), 120262306a36Sopenharmony_ci 120362306a36Sopenharmony_ci COMPOSITE(SCLK_VOP1_PWM, "clk_vop1_pwm", mux_pll_src_vpll_cpll_gpll_24m_p, CLK_IGNORE_UNUSED, 120462306a36Sopenharmony_ci RK3399_CLKSEL_CON(52), 6, 2, MFLAGS, 0, 5, DFLAGS, 120562306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 15, GFLAGS), 120662306a36Sopenharmony_ci 120762306a36Sopenharmony_ci /* isp */ 120862306a36Sopenharmony_ci COMPOSITE(ACLK_ISP0, "aclk_isp0", mux_pll_src_cpll_gpll_ppll_p, 0, 120962306a36Sopenharmony_ci RK3399_CLKSEL_CON(53), 6, 2, MFLAGS, 0, 5, DFLAGS, 121062306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 8, GFLAGS), 121162306a36Sopenharmony_ci COMPOSITE_NOMUX(HCLK_ISP0, "hclk_isp0", "aclk_isp0", 0, 121262306a36Sopenharmony_ci RK3399_CLKSEL_CON(53), 8, 5, DFLAGS, 121362306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 9, GFLAGS), 121462306a36Sopenharmony_ci 121562306a36Sopenharmony_ci GATE(ACLK_ISP0_NOC, "aclk_isp0_noc", "aclk_isp0", CLK_IGNORE_UNUSED, 121662306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 1, GFLAGS), 121762306a36Sopenharmony_ci GATE(ACLK_ISP0_WRAPPER, "aclk_isp0_wrapper", "aclk_isp0", 0, 121862306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 5, GFLAGS), 121962306a36Sopenharmony_ci GATE(HCLK_ISP1_WRAPPER, "hclk_isp1_wrapper", "aclk_isp0", 0, 122062306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 7, GFLAGS), 122162306a36Sopenharmony_ci 122262306a36Sopenharmony_ci GATE(HCLK_ISP0_NOC, "hclk_isp0_noc", "hclk_isp0", CLK_IGNORE_UNUSED, 122362306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 0, GFLAGS), 122462306a36Sopenharmony_ci GATE(HCLK_ISP0_WRAPPER, "hclk_isp0_wrapper", "hclk_isp0", 0, 122562306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 4, GFLAGS), 122662306a36Sopenharmony_ci 122762306a36Sopenharmony_ci COMPOSITE(SCLK_ISP0, "clk_isp0", mux_pll_src_cpll_gpll_npll_p, 0, 122862306a36Sopenharmony_ci RK3399_CLKSEL_CON(55), 6, 2, MFLAGS, 0, 5, DFLAGS, 122962306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 4, GFLAGS), 123062306a36Sopenharmony_ci 123162306a36Sopenharmony_ci COMPOSITE(ACLK_ISP1, "aclk_isp1", mux_pll_src_cpll_gpll_ppll_p, 0, 123262306a36Sopenharmony_ci RK3399_CLKSEL_CON(54), 6, 2, MFLAGS, 0, 5, DFLAGS, 123362306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 10, GFLAGS), 123462306a36Sopenharmony_ci COMPOSITE_NOMUX(HCLK_ISP1, "hclk_isp1", "aclk_isp1", 0, 123562306a36Sopenharmony_ci RK3399_CLKSEL_CON(54), 8, 5, DFLAGS, 123662306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 11, GFLAGS), 123762306a36Sopenharmony_ci 123862306a36Sopenharmony_ci GATE(ACLK_ISP1_NOC, "aclk_isp1_noc", "aclk_isp1", CLK_IGNORE_UNUSED, 123962306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 3, GFLAGS), 124062306a36Sopenharmony_ci 124162306a36Sopenharmony_ci GATE(HCLK_ISP1_NOC, "hclk_isp1_noc", "hclk_isp1", CLK_IGNORE_UNUSED, 124262306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 2, GFLAGS), 124362306a36Sopenharmony_ci GATE(ACLK_ISP1_WRAPPER, "aclk_isp1_wrapper", "hclk_isp1", 0, 124462306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 8, GFLAGS), 124562306a36Sopenharmony_ci 124662306a36Sopenharmony_ci COMPOSITE(SCLK_ISP1, "clk_isp1", mux_pll_src_cpll_gpll_npll_p, 0, 124762306a36Sopenharmony_ci RK3399_CLKSEL_CON(55), 14, 2, MFLAGS, 8, 5, DFLAGS, 124862306a36Sopenharmony_ci RK3399_CLKGATE_CON(11), 5, GFLAGS), 124962306a36Sopenharmony_ci 125062306a36Sopenharmony_ci /* 125162306a36Sopenharmony_ci * We use pclkin_cifinv by default GRF_SOC_CON20[9] (GSC20_9) setting in system, 125262306a36Sopenharmony_ci * so we ignore the mux and make clocks nodes as following, 125362306a36Sopenharmony_ci * 125462306a36Sopenharmony_ci * pclkin_cifinv --|-------\ 125562306a36Sopenharmony_ci * |GSC20_9|-- pclkin_cifmux -- |G27_6| -- pclkin_isp1_wrapper 125662306a36Sopenharmony_ci * pclkin_cif --|-------/ 125762306a36Sopenharmony_ci */ 125862306a36Sopenharmony_ci GATE(PCLK_ISP1_WRAPPER, "pclkin_isp1_wrapper", "pclkin_cif", 0, 125962306a36Sopenharmony_ci RK3399_CLKGATE_CON(27), 6, GFLAGS), 126062306a36Sopenharmony_ci 126162306a36Sopenharmony_ci /* cif */ 126262306a36Sopenharmony_ci COMPOSITE_NODIV(0, "clk_cifout_src", mux_pll_src_cpll_gpll_npll_p, 0, 126362306a36Sopenharmony_ci RK3399_CLKSEL_CON(56), 6, 2, MFLAGS, 126462306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 7, GFLAGS), 126562306a36Sopenharmony_ci 126662306a36Sopenharmony_ci COMPOSITE_NOGATE(SCLK_CIF_OUT, "clk_cifout", mux_clk_cif_p, CLK_SET_RATE_PARENT, 126762306a36Sopenharmony_ci RK3399_CLKSEL_CON(56), 5, 1, MFLAGS, 0, 5, DFLAGS), 126862306a36Sopenharmony_ci 126962306a36Sopenharmony_ci /* gic */ 127062306a36Sopenharmony_ci COMPOSITE(ACLK_GIC_PRE, "aclk_gic_pre", mux_pll_src_cpll_gpll_p, CLK_IGNORE_UNUSED, 127162306a36Sopenharmony_ci RK3399_CLKSEL_CON(56), 15, 1, MFLAGS, 8, 5, DFLAGS, 127262306a36Sopenharmony_ci RK3399_CLKGATE_CON(12), 12, GFLAGS), 127362306a36Sopenharmony_ci 127462306a36Sopenharmony_ci GATE(ACLK_GIC, "aclk_gic", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 0, GFLAGS), 127562306a36Sopenharmony_ci GATE(ACLK_GIC_NOC, "aclk_gic_noc", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 1, GFLAGS), 127662306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_CORE_L_2_GIC, "aclk_gic_adb400_core_l_2_gic", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 2, GFLAGS), 127762306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_CORE_B_2_GIC, "aclk_gic_adb400_core_b_2_gic", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 3, GFLAGS), 127862306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_GIC_2_CORE_L, "aclk_gic_adb400_gic_2_core_l", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 4, GFLAGS), 127962306a36Sopenharmony_ci GATE(ACLK_GIC_ADB400_GIC_2_CORE_B, "aclk_gic_adb400_gic_2_core_b", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 5, GFLAGS), 128062306a36Sopenharmony_ci 128162306a36Sopenharmony_ci /* alive */ 128262306a36Sopenharmony_ci /* pclk_alive_gpll_src is controlled by PMUGRF_SOC_CON0[6] */ 128362306a36Sopenharmony_ci DIV(PCLK_ALIVE, "pclk_alive", "gpll", 0, 128462306a36Sopenharmony_ci RK3399_CLKSEL_CON(57), 0, 5, DFLAGS), 128562306a36Sopenharmony_ci 128662306a36Sopenharmony_ci GATE(PCLK_USBPHY_MUX_G, "pclk_usbphy_mux_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 4, GFLAGS), 128762306a36Sopenharmony_ci GATE(PCLK_UPHY0_TCPHY_G, "pclk_uphy0_tcphy_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 5, GFLAGS), 128862306a36Sopenharmony_ci GATE(PCLK_UPHY0_TCPD_G, "pclk_uphy0_tcpd_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 6, GFLAGS), 128962306a36Sopenharmony_ci GATE(PCLK_UPHY1_TCPHY_G, "pclk_uphy1_tcphy_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 8, GFLAGS), 129062306a36Sopenharmony_ci GATE(PCLK_UPHY1_TCPD_G, "pclk_uphy1_tcpd_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 9, GFLAGS), 129162306a36Sopenharmony_ci 129262306a36Sopenharmony_ci GATE(PCLK_GRF, "pclk_grf", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 1, GFLAGS), 129362306a36Sopenharmony_ci GATE(PCLK_INTR_ARB, "pclk_intr_arb", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 2, GFLAGS), 129462306a36Sopenharmony_ci GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 3, GFLAGS), 129562306a36Sopenharmony_ci GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 4, GFLAGS), 129662306a36Sopenharmony_ci GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 5, GFLAGS), 129762306a36Sopenharmony_ci GATE(PCLK_TIMER0, "pclk_timer0", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 6, GFLAGS), 129862306a36Sopenharmony_ci GATE(PCLK_TIMER1, "pclk_timer1", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 7, GFLAGS), 129962306a36Sopenharmony_ci GATE(PCLK_PMU_INTR_ARB, "pclk_pmu_intr_arb", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 9, GFLAGS), 130062306a36Sopenharmony_ci GATE(PCLK_SGRF, "pclk_sgrf", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 10, GFLAGS), 130162306a36Sopenharmony_ci 130262306a36Sopenharmony_ci /* Watchdog pclk is controlled by RK3399 SECURE_GRF_SOC_CON3[8]. */ 130362306a36Sopenharmony_ci SGRF_GATE(PCLK_WDT, "pclk_wdt", "pclk_alive"), 130462306a36Sopenharmony_ci 130562306a36Sopenharmony_ci GATE(SCLK_MIPIDPHY_REF, "clk_mipidphy_ref", "xin24m", 0, RK3399_CLKGATE_CON(11), 14, GFLAGS), 130662306a36Sopenharmony_ci GATE(SCLK_DPHY_PLL, "clk_dphy_pll", "clk_mipidphy_ref", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 0, GFLAGS), 130762306a36Sopenharmony_ci 130862306a36Sopenharmony_ci GATE(SCLK_MIPIDPHY_CFG, "clk_mipidphy_cfg", "xin24m", 0, RK3399_CLKGATE_CON(11), 15, GFLAGS), 130962306a36Sopenharmony_ci GATE(SCLK_DPHY_TX0_CFG, "clk_dphy_tx0_cfg", "clk_mipidphy_cfg", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 1, GFLAGS), 131062306a36Sopenharmony_ci GATE(SCLK_DPHY_TX1RX1_CFG, "clk_dphy_tx1rx1_cfg", "clk_mipidphy_cfg", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 2, GFLAGS), 131162306a36Sopenharmony_ci GATE(SCLK_DPHY_RX0_CFG, "clk_dphy_rx0_cfg", "clk_mipidphy_cfg", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 3, GFLAGS), 131262306a36Sopenharmony_ci 131362306a36Sopenharmony_ci /* testout */ 131462306a36Sopenharmony_ci MUX(0, "clk_test_pre", mux_pll_src_cpll_gpll_p, CLK_SET_RATE_PARENT, 131562306a36Sopenharmony_ci RK3399_CLKSEL_CON(58), 7, 1, MFLAGS), 131662306a36Sopenharmony_ci COMPOSITE_FRAC(0, "clk_test_frac", "clk_test_pre", 0, 131762306a36Sopenharmony_ci RK3399_CLKSEL_CON(105), 0, 131862306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 9, GFLAGS), 131962306a36Sopenharmony_ci 132062306a36Sopenharmony_ci DIV(0, "clk_test_24m", "xin24m", 0, 132162306a36Sopenharmony_ci RK3399_CLKSEL_CON(57), 6, 10, DFLAGS), 132262306a36Sopenharmony_ci 132362306a36Sopenharmony_ci /* spi */ 132462306a36Sopenharmony_ci COMPOSITE(SCLK_SPI0, "clk_spi0", mux_pll_src_cpll_gpll_p, 0, 132562306a36Sopenharmony_ci RK3399_CLKSEL_CON(59), 7, 1, MFLAGS, 0, 7, DFLAGS, 132662306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 12, GFLAGS), 132762306a36Sopenharmony_ci 132862306a36Sopenharmony_ci COMPOSITE(SCLK_SPI1, "clk_spi1", mux_pll_src_cpll_gpll_p, 0, 132962306a36Sopenharmony_ci RK3399_CLKSEL_CON(59), 15, 1, MFLAGS, 8, 7, DFLAGS, 133062306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 13, GFLAGS), 133162306a36Sopenharmony_ci 133262306a36Sopenharmony_ci COMPOSITE(SCLK_SPI2, "clk_spi2", mux_pll_src_cpll_gpll_p, 0, 133362306a36Sopenharmony_ci RK3399_CLKSEL_CON(60), 7, 1, MFLAGS, 0, 7, DFLAGS, 133462306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 14, GFLAGS), 133562306a36Sopenharmony_ci 133662306a36Sopenharmony_ci COMPOSITE(SCLK_SPI4, "clk_spi4", mux_pll_src_cpll_gpll_p, 0, 133762306a36Sopenharmony_ci RK3399_CLKSEL_CON(60), 15, 1, MFLAGS, 8, 7, DFLAGS, 133862306a36Sopenharmony_ci RK3399_CLKGATE_CON(9), 15, GFLAGS), 133962306a36Sopenharmony_ci 134062306a36Sopenharmony_ci COMPOSITE(SCLK_SPI5, "clk_spi5", mux_pll_src_cpll_gpll_p, 0, 134162306a36Sopenharmony_ci RK3399_CLKSEL_CON(58), 15, 1, MFLAGS, 8, 7, DFLAGS, 134262306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 13, GFLAGS), 134362306a36Sopenharmony_ci 134462306a36Sopenharmony_ci /* i2c */ 134562306a36Sopenharmony_ci COMPOSITE(SCLK_I2C1, "clk_i2c1", mux_pll_src_cpll_gpll_p, 0, 134662306a36Sopenharmony_ci RK3399_CLKSEL_CON(61), 7, 1, MFLAGS, 0, 7, DFLAGS, 134762306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 0, GFLAGS), 134862306a36Sopenharmony_ci 134962306a36Sopenharmony_ci COMPOSITE(SCLK_I2C2, "clk_i2c2", mux_pll_src_cpll_gpll_p, 0, 135062306a36Sopenharmony_ci RK3399_CLKSEL_CON(62), 7, 1, MFLAGS, 0, 7, DFLAGS, 135162306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 2, GFLAGS), 135262306a36Sopenharmony_ci 135362306a36Sopenharmony_ci COMPOSITE(SCLK_I2C3, "clk_i2c3", mux_pll_src_cpll_gpll_p, 0, 135462306a36Sopenharmony_ci RK3399_CLKSEL_CON(63), 7, 1, MFLAGS, 0, 7, DFLAGS, 135562306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 4, GFLAGS), 135662306a36Sopenharmony_ci 135762306a36Sopenharmony_ci COMPOSITE(SCLK_I2C5, "clk_i2c5", mux_pll_src_cpll_gpll_p, 0, 135862306a36Sopenharmony_ci RK3399_CLKSEL_CON(61), 15, 1, MFLAGS, 8, 7, DFLAGS, 135962306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 1, GFLAGS), 136062306a36Sopenharmony_ci 136162306a36Sopenharmony_ci COMPOSITE(SCLK_I2C6, "clk_i2c6", mux_pll_src_cpll_gpll_p, 0, 136262306a36Sopenharmony_ci RK3399_CLKSEL_CON(62), 15, 1, MFLAGS, 8, 7, DFLAGS, 136362306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 3, GFLAGS), 136462306a36Sopenharmony_ci 136562306a36Sopenharmony_ci COMPOSITE(SCLK_I2C7, "clk_i2c7", mux_pll_src_cpll_gpll_p, 0, 136662306a36Sopenharmony_ci RK3399_CLKSEL_CON(63), 15, 1, MFLAGS, 8, 7, DFLAGS, 136762306a36Sopenharmony_ci RK3399_CLKGATE_CON(10), 5, GFLAGS), 136862306a36Sopenharmony_ci 136962306a36Sopenharmony_ci /* timer */ 137062306a36Sopenharmony_ci GATE(SCLK_TIMER00, "clk_timer00", "xin24m", 0, RK3399_CLKGATE_CON(26), 0, GFLAGS), 137162306a36Sopenharmony_ci GATE(SCLK_TIMER01, "clk_timer01", "xin24m", 0, RK3399_CLKGATE_CON(26), 1, GFLAGS), 137262306a36Sopenharmony_ci GATE(SCLK_TIMER02, "clk_timer02", "xin24m", 0, RK3399_CLKGATE_CON(26), 2, GFLAGS), 137362306a36Sopenharmony_ci GATE(SCLK_TIMER03, "clk_timer03", "xin24m", 0, RK3399_CLKGATE_CON(26), 3, GFLAGS), 137462306a36Sopenharmony_ci GATE(SCLK_TIMER04, "clk_timer04", "xin24m", 0, RK3399_CLKGATE_CON(26), 4, GFLAGS), 137562306a36Sopenharmony_ci GATE(SCLK_TIMER05, "clk_timer05", "xin24m", 0, RK3399_CLKGATE_CON(26), 5, GFLAGS), 137662306a36Sopenharmony_ci GATE(SCLK_TIMER06, "clk_timer06", "xin24m", 0, RK3399_CLKGATE_CON(26), 6, GFLAGS), 137762306a36Sopenharmony_ci GATE(SCLK_TIMER07, "clk_timer07", "xin24m", 0, RK3399_CLKGATE_CON(26), 7, GFLAGS), 137862306a36Sopenharmony_ci GATE(SCLK_TIMER08, "clk_timer08", "xin24m", 0, RK3399_CLKGATE_CON(26), 8, GFLAGS), 137962306a36Sopenharmony_ci GATE(SCLK_TIMER09, "clk_timer09", "xin24m", 0, RK3399_CLKGATE_CON(26), 9, GFLAGS), 138062306a36Sopenharmony_ci GATE(SCLK_TIMER10, "clk_timer10", "xin24m", 0, RK3399_CLKGATE_CON(26), 10, GFLAGS), 138162306a36Sopenharmony_ci GATE(SCLK_TIMER11, "clk_timer11", "xin24m", 0, RK3399_CLKGATE_CON(26), 11, GFLAGS), 138262306a36Sopenharmony_ci 138362306a36Sopenharmony_ci /* clk_test */ 138462306a36Sopenharmony_ci /* clk_test_pre is controlled by CRU_MISC_CON[3] */ 138562306a36Sopenharmony_ci COMPOSITE_NOMUX(0, "clk_test", "clk_test_pre", CLK_IGNORE_UNUSED, 138662306a36Sopenharmony_ci RK3399_CLKSEL_CON(58), 0, 5, DFLAGS, 138762306a36Sopenharmony_ci RK3399_CLKGATE_CON(13), 11, GFLAGS), 138862306a36Sopenharmony_ci 138962306a36Sopenharmony_ci /* ddrc */ 139062306a36Sopenharmony_ci GATE(0, "clk_ddrc_lpll_src", "lpll", 0, RK3399_CLKGATE_CON(3), 139162306a36Sopenharmony_ci 0, GFLAGS), 139262306a36Sopenharmony_ci GATE(0, "clk_ddrc_bpll_src", "bpll", 0, RK3399_CLKGATE_CON(3), 139362306a36Sopenharmony_ci 1, GFLAGS), 139462306a36Sopenharmony_ci GATE(0, "clk_ddrc_dpll_src", "dpll", 0, RK3399_CLKGATE_CON(3), 139562306a36Sopenharmony_ci 2, GFLAGS), 139662306a36Sopenharmony_ci GATE(0, "clk_ddrc_gpll_src", "gpll", 0, RK3399_CLKGATE_CON(3), 139762306a36Sopenharmony_ci 3, GFLAGS), 139862306a36Sopenharmony_ci COMPOSITE_DDRCLK(SCLK_DDRC, "sclk_ddrc", mux_ddrclk_p, 0, 139962306a36Sopenharmony_ci RK3399_CLKSEL_CON(6), 4, 2, 0, 0, ROCKCHIP_DDRCLK_SIP), 140062306a36Sopenharmony_ci}; 140162306a36Sopenharmony_ci 140262306a36Sopenharmony_cistatic struct rockchip_clk_branch rk3399_clk_pmu_branches[] __initdata = { 140362306a36Sopenharmony_ci /* 140462306a36Sopenharmony_ci * PMU CRU Clock-Architecture 140562306a36Sopenharmony_ci */ 140662306a36Sopenharmony_ci 140762306a36Sopenharmony_ci GATE(0, "fclk_cm0s_pmu_ppll_src", "ppll", 0, 140862306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 1, GFLAGS), 140962306a36Sopenharmony_ci 141062306a36Sopenharmony_ci COMPOSITE_NOGATE(FCLK_CM0S_SRC_PMU, "fclk_cm0s_src_pmu", mux_fclk_cm0s_pmu_ppll_p, 0, 141162306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(0), 15, 1, MFLAGS, 8, 5, DFLAGS), 141262306a36Sopenharmony_ci 141362306a36Sopenharmony_ci COMPOSITE(SCLK_SPI3_PMU, "clk_spi3_pmu", mux_24m_ppll_p, 0, 141462306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(1), 7, 1, MFLAGS, 0, 7, DFLAGS, 141562306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 2, GFLAGS), 141662306a36Sopenharmony_ci 141762306a36Sopenharmony_ci COMPOSITE(0, "clk_wifi_div", mux_ppll_24m_p, CLK_IGNORE_UNUSED, 141862306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(1), 13, 1, MFLAGS, 8, 5, DFLAGS, 141962306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 8, GFLAGS), 142062306a36Sopenharmony_ci 142162306a36Sopenharmony_ci COMPOSITE_FRACMUX_NOGATE(0, "clk_wifi_frac", "clk_wifi_div", 0, 142262306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(7), 0, 142362306a36Sopenharmony_ci &rk3399_pmuclk_wifi_fracmux), 142462306a36Sopenharmony_ci 142562306a36Sopenharmony_ci MUX(0, "clk_timer_src_pmu", mux_pll_p, CLK_IGNORE_UNUSED, 142662306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(1), 15, 1, MFLAGS), 142762306a36Sopenharmony_ci 142862306a36Sopenharmony_ci COMPOSITE_NOMUX(SCLK_I2C0_PMU, "clk_i2c0_pmu", "ppll", 0, 142962306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(2), 0, 7, DFLAGS, 143062306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 9, GFLAGS), 143162306a36Sopenharmony_ci 143262306a36Sopenharmony_ci COMPOSITE_NOMUX(SCLK_I2C4_PMU, "clk_i2c4_pmu", "ppll", 0, 143362306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(3), 0, 7, DFLAGS, 143462306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 10, GFLAGS), 143562306a36Sopenharmony_ci 143662306a36Sopenharmony_ci COMPOSITE_NOMUX(SCLK_I2C8_PMU, "clk_i2c8_pmu", "ppll", 0, 143762306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(2), 8, 7, DFLAGS, 143862306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 11, GFLAGS), 143962306a36Sopenharmony_ci 144062306a36Sopenharmony_ci DIV(0, "clk_32k_suspend_pmu", "xin24m", CLK_IGNORE_UNUSED, 144162306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(4), 0, 10, DFLAGS), 144262306a36Sopenharmony_ci MUX(0, "clk_testout_2io", mux_clk_testout2_2io_p, CLK_IGNORE_UNUSED, 144362306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(4), 15, 1, MFLAGS), 144462306a36Sopenharmony_ci 144562306a36Sopenharmony_ci COMPOSITE(0, "clk_uart4_div", mux_24m_ppll_p, 0, 144662306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(5), 10, 1, MFLAGS, 0, 7, DFLAGS, 144762306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 5, GFLAGS), 144862306a36Sopenharmony_ci 144962306a36Sopenharmony_ci COMPOSITE_FRACMUX(0, "clk_uart4_frac", "clk_uart4_div", 0, 145062306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(6), 0, 145162306a36Sopenharmony_ci RK3399_PMU_CLKGATE_CON(0), 6, GFLAGS, 145262306a36Sopenharmony_ci &rk3399_uart4_pmu_fracmux), 145362306a36Sopenharmony_ci 145462306a36Sopenharmony_ci DIV(PCLK_SRC_PMU, "pclk_pmu_src", "ppll", CLK_IGNORE_UNUSED, 145562306a36Sopenharmony_ci RK3399_PMU_CLKSEL_CON(0), 0, 5, DFLAGS), 145662306a36Sopenharmony_ci 145762306a36Sopenharmony_ci /* pmu clock gates */ 145862306a36Sopenharmony_ci GATE(SCLK_TIMER12_PMU, "clk_timer0_pmu", "clk_timer_src_pmu", 0, RK3399_PMU_CLKGATE_CON(0), 3, GFLAGS), 145962306a36Sopenharmony_ci GATE(SCLK_TIMER13_PMU, "clk_timer1_pmu", "clk_timer_src_pmu", 0, RK3399_PMU_CLKGATE_CON(0), 4, GFLAGS), 146062306a36Sopenharmony_ci 146162306a36Sopenharmony_ci GATE(SCLK_PVTM_PMU, "clk_pvtm_pmu", "xin24m", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(0), 7, GFLAGS), 146262306a36Sopenharmony_ci 146362306a36Sopenharmony_ci GATE(PCLK_PMU, "pclk_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 0, GFLAGS), 146462306a36Sopenharmony_ci GATE(PCLK_PMUGRF_PMU, "pclk_pmugrf_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 1, GFLAGS), 146562306a36Sopenharmony_ci GATE(PCLK_INTMEM1_PMU, "pclk_intmem1_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 2, GFLAGS), 146662306a36Sopenharmony_ci GATE(PCLK_GPIO0_PMU, "pclk_gpio0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 3, GFLAGS), 146762306a36Sopenharmony_ci GATE(PCLK_GPIO1_PMU, "pclk_gpio1_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 4, GFLAGS), 146862306a36Sopenharmony_ci GATE(PCLK_SGRF_PMU, "pclk_sgrf_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 5, GFLAGS), 146962306a36Sopenharmony_ci GATE(PCLK_NOC_PMU, "pclk_noc_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 6, GFLAGS), 147062306a36Sopenharmony_ci GATE(PCLK_I2C0_PMU, "pclk_i2c0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 7, GFLAGS), 147162306a36Sopenharmony_ci GATE(PCLK_I2C4_PMU, "pclk_i2c4_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 8, GFLAGS), 147262306a36Sopenharmony_ci GATE(PCLK_I2C8_PMU, "pclk_i2c8_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 9, GFLAGS), 147362306a36Sopenharmony_ci GATE(PCLK_RKPWM_PMU, "pclk_rkpwm_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 10, GFLAGS), 147462306a36Sopenharmony_ci GATE(PCLK_SPI3_PMU, "pclk_spi3_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 11, GFLAGS), 147562306a36Sopenharmony_ci GATE(PCLK_TIMER_PMU, "pclk_timer_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 12, GFLAGS), 147662306a36Sopenharmony_ci GATE(PCLK_MAILBOX_PMU, "pclk_mailbox_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 13, GFLAGS), 147762306a36Sopenharmony_ci GATE(PCLK_UART4_PMU, "pclk_uart4_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 14, GFLAGS), 147862306a36Sopenharmony_ci GATE(PCLK_WDT_M0_PMU, "pclk_wdt_m0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 15, GFLAGS), 147962306a36Sopenharmony_ci 148062306a36Sopenharmony_ci GATE(FCLK_CM0S_PMU, "fclk_cm0s_pmu", "fclk_cm0s_src_pmu", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(2), 0, GFLAGS), 148162306a36Sopenharmony_ci GATE(SCLK_CM0S_PMU, "sclk_cm0s_pmu", "fclk_cm0s_src_pmu", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(2), 1, GFLAGS), 148262306a36Sopenharmony_ci GATE(HCLK_CM0S_PMU, "hclk_cm0s_pmu", "fclk_cm0s_src_pmu", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(2), 2, GFLAGS), 148362306a36Sopenharmony_ci GATE(DCLK_CM0S_PMU, "dclk_cm0s_pmu", "fclk_cm0s_src_pmu", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(2), 3, GFLAGS), 148462306a36Sopenharmony_ci GATE(HCLK_NOC_PMU, "hclk_noc_pmu", "fclk_cm0s_src_pmu", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(2), 5, GFLAGS), 148562306a36Sopenharmony_ci}; 148662306a36Sopenharmony_ci 148762306a36Sopenharmony_cistatic const char *const rk3399_cru_critical_clocks[] __initconst = { 148862306a36Sopenharmony_ci "aclk_cci_pre", 148962306a36Sopenharmony_ci "aclk_gic", 149062306a36Sopenharmony_ci "aclk_gic_noc", 149162306a36Sopenharmony_ci "aclk_hdcp_noc", 149262306a36Sopenharmony_ci "hclk_hdcp_noc", 149362306a36Sopenharmony_ci "pclk_hdcp_noc", 149462306a36Sopenharmony_ci "pclk_perilp0", 149562306a36Sopenharmony_ci "pclk_perilp0", 149662306a36Sopenharmony_ci "hclk_perilp0", 149762306a36Sopenharmony_ci "hclk_perilp0_noc", 149862306a36Sopenharmony_ci "pclk_perilp1", 149962306a36Sopenharmony_ci "pclk_perilp1_noc", 150062306a36Sopenharmony_ci "pclk_perihp", 150162306a36Sopenharmony_ci "pclk_perihp_noc", 150262306a36Sopenharmony_ci "hclk_perihp", 150362306a36Sopenharmony_ci "aclk_perihp", 150462306a36Sopenharmony_ci "aclk_perihp_noc", 150562306a36Sopenharmony_ci "aclk_perilp0", 150662306a36Sopenharmony_ci "aclk_perilp0_noc", 150762306a36Sopenharmony_ci "hclk_perilp1", 150862306a36Sopenharmony_ci "hclk_perilp1_noc", 150962306a36Sopenharmony_ci "aclk_dmac0_perilp", 151062306a36Sopenharmony_ci "aclk_emmc_noc", 151162306a36Sopenharmony_ci "gpll_hclk_perilp1_src", 151262306a36Sopenharmony_ci "gpll_aclk_perilp0_src", 151362306a36Sopenharmony_ci "gpll_aclk_perihp_src", 151462306a36Sopenharmony_ci "aclk_vio_noc", 151562306a36Sopenharmony_ci 151662306a36Sopenharmony_ci /* ddrc */ 151762306a36Sopenharmony_ci "sclk_ddrc", 151862306a36Sopenharmony_ci 151962306a36Sopenharmony_ci "armclkl", 152062306a36Sopenharmony_ci "armclkb", 152162306a36Sopenharmony_ci}; 152262306a36Sopenharmony_ci 152362306a36Sopenharmony_cistatic const char *const rk3399_pmucru_critical_clocks[] __initconst = { 152462306a36Sopenharmony_ci "ppll", 152562306a36Sopenharmony_ci "pclk_pmu_src", 152662306a36Sopenharmony_ci "fclk_cm0s_src_pmu", 152762306a36Sopenharmony_ci "clk_timer_src_pmu", 152862306a36Sopenharmony_ci "pclk_rkpwm_pmu", 152962306a36Sopenharmony_ci}; 153062306a36Sopenharmony_ci 153162306a36Sopenharmony_cistatic void __init rk3399_clk_init(struct device_node *np) 153262306a36Sopenharmony_ci{ 153362306a36Sopenharmony_ci struct rockchip_clk_provider *ctx; 153462306a36Sopenharmony_ci void __iomem *reg_base; 153562306a36Sopenharmony_ci 153662306a36Sopenharmony_ci reg_base = of_iomap(np, 0); 153762306a36Sopenharmony_ci if (!reg_base) { 153862306a36Sopenharmony_ci pr_err("%s: could not map cru region\n", __func__); 153962306a36Sopenharmony_ci return; 154062306a36Sopenharmony_ci } 154162306a36Sopenharmony_ci 154262306a36Sopenharmony_ci ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS); 154362306a36Sopenharmony_ci if (IS_ERR(ctx)) { 154462306a36Sopenharmony_ci pr_err("%s: rockchip clk init failed\n", __func__); 154562306a36Sopenharmony_ci iounmap(reg_base); 154662306a36Sopenharmony_ci return; 154762306a36Sopenharmony_ci } 154862306a36Sopenharmony_ci 154962306a36Sopenharmony_ci rockchip_clk_register_plls(ctx, rk3399_pll_clks, 155062306a36Sopenharmony_ci ARRAY_SIZE(rk3399_pll_clks), -1); 155162306a36Sopenharmony_ci 155262306a36Sopenharmony_ci rockchip_clk_register_branches(ctx, rk3399_clk_branches, 155362306a36Sopenharmony_ci ARRAY_SIZE(rk3399_clk_branches)); 155462306a36Sopenharmony_ci 155562306a36Sopenharmony_ci rockchip_clk_register_armclk(ctx, ARMCLKL, "armclkl", 155662306a36Sopenharmony_ci mux_armclkl_p, ARRAY_SIZE(mux_armclkl_p), 155762306a36Sopenharmony_ci &rk3399_cpuclkl_data, rk3399_cpuclkl_rates, 155862306a36Sopenharmony_ci ARRAY_SIZE(rk3399_cpuclkl_rates)); 155962306a36Sopenharmony_ci 156062306a36Sopenharmony_ci rockchip_clk_register_armclk(ctx, ARMCLKB, "armclkb", 156162306a36Sopenharmony_ci mux_armclkb_p, ARRAY_SIZE(mux_armclkb_p), 156262306a36Sopenharmony_ci &rk3399_cpuclkb_data, rk3399_cpuclkb_rates, 156362306a36Sopenharmony_ci ARRAY_SIZE(rk3399_cpuclkb_rates)); 156462306a36Sopenharmony_ci 156562306a36Sopenharmony_ci rockchip_clk_protect_critical(rk3399_cru_critical_clocks, 156662306a36Sopenharmony_ci ARRAY_SIZE(rk3399_cru_critical_clocks)); 156762306a36Sopenharmony_ci 156862306a36Sopenharmony_ci rockchip_register_softrst(np, 21, reg_base + RK3399_SOFTRST_CON(0), 156962306a36Sopenharmony_ci ROCKCHIP_SOFTRST_HIWORD_MASK); 157062306a36Sopenharmony_ci 157162306a36Sopenharmony_ci rockchip_register_restart_notifier(ctx, RK3399_GLB_SRST_FST, NULL); 157262306a36Sopenharmony_ci 157362306a36Sopenharmony_ci rockchip_clk_of_add_provider(np, ctx); 157462306a36Sopenharmony_ci} 157562306a36Sopenharmony_ciCLK_OF_DECLARE(rk3399_cru, "rockchip,rk3399-cru", rk3399_clk_init); 157662306a36Sopenharmony_ci 157762306a36Sopenharmony_cistatic void __init rk3399_pmu_clk_init(struct device_node *np) 157862306a36Sopenharmony_ci{ 157962306a36Sopenharmony_ci struct rockchip_clk_provider *ctx; 158062306a36Sopenharmony_ci void __iomem *reg_base; 158162306a36Sopenharmony_ci 158262306a36Sopenharmony_ci reg_base = of_iomap(np, 0); 158362306a36Sopenharmony_ci if (!reg_base) { 158462306a36Sopenharmony_ci pr_err("%s: could not map cru pmu region\n", __func__); 158562306a36Sopenharmony_ci return; 158662306a36Sopenharmony_ci } 158762306a36Sopenharmony_ci 158862306a36Sopenharmony_ci ctx = rockchip_clk_init(np, reg_base, CLKPMU_NR_CLKS); 158962306a36Sopenharmony_ci if (IS_ERR(ctx)) { 159062306a36Sopenharmony_ci pr_err("%s: rockchip pmu clk init failed\n", __func__); 159162306a36Sopenharmony_ci iounmap(reg_base); 159262306a36Sopenharmony_ci return; 159362306a36Sopenharmony_ci } 159462306a36Sopenharmony_ci 159562306a36Sopenharmony_ci rockchip_clk_register_plls(ctx, rk3399_pmu_pll_clks, 159662306a36Sopenharmony_ci ARRAY_SIZE(rk3399_pmu_pll_clks), -1); 159762306a36Sopenharmony_ci 159862306a36Sopenharmony_ci rockchip_clk_register_branches(ctx, rk3399_clk_pmu_branches, 159962306a36Sopenharmony_ci ARRAY_SIZE(rk3399_clk_pmu_branches)); 160062306a36Sopenharmony_ci 160162306a36Sopenharmony_ci rockchip_clk_protect_critical(rk3399_pmucru_critical_clocks, 160262306a36Sopenharmony_ci ARRAY_SIZE(rk3399_pmucru_critical_clocks)); 160362306a36Sopenharmony_ci 160462306a36Sopenharmony_ci rockchip_register_softrst(np, 2, reg_base + RK3399_PMU_SOFTRST_CON(0), 160562306a36Sopenharmony_ci ROCKCHIP_SOFTRST_HIWORD_MASK); 160662306a36Sopenharmony_ci 160762306a36Sopenharmony_ci rockchip_clk_of_add_provider(np, ctx); 160862306a36Sopenharmony_ci} 160962306a36Sopenharmony_ciCLK_OF_DECLARE(rk3399_cru_pmu, "rockchip,rk3399-pmucru", rk3399_pmu_clk_init); 161062306a36Sopenharmony_ci 161162306a36Sopenharmony_cistruct clk_rk3399_inits { 161262306a36Sopenharmony_ci void (*inits)(struct device_node *np); 161362306a36Sopenharmony_ci}; 161462306a36Sopenharmony_ci 161562306a36Sopenharmony_cistatic const struct clk_rk3399_inits clk_rk3399_pmucru_init = { 161662306a36Sopenharmony_ci .inits = rk3399_pmu_clk_init, 161762306a36Sopenharmony_ci}; 161862306a36Sopenharmony_ci 161962306a36Sopenharmony_cistatic const struct clk_rk3399_inits clk_rk3399_cru_init = { 162062306a36Sopenharmony_ci .inits = rk3399_clk_init, 162162306a36Sopenharmony_ci}; 162262306a36Sopenharmony_ci 162362306a36Sopenharmony_cistatic const struct of_device_id clk_rk3399_match_table[] = { 162462306a36Sopenharmony_ci { 162562306a36Sopenharmony_ci .compatible = "rockchip,rk3399-cru", 162662306a36Sopenharmony_ci .data = &clk_rk3399_cru_init, 162762306a36Sopenharmony_ci }, { 162862306a36Sopenharmony_ci .compatible = "rockchip,rk3399-pmucru", 162962306a36Sopenharmony_ci .data = &clk_rk3399_pmucru_init, 163062306a36Sopenharmony_ci }, 163162306a36Sopenharmony_ci { } 163262306a36Sopenharmony_ci}; 163362306a36Sopenharmony_ci 163462306a36Sopenharmony_cistatic int __init clk_rk3399_probe(struct platform_device *pdev) 163562306a36Sopenharmony_ci{ 163662306a36Sopenharmony_ci struct device_node *np = pdev->dev.of_node; 163762306a36Sopenharmony_ci const struct of_device_id *match; 163862306a36Sopenharmony_ci const struct clk_rk3399_inits *init_data; 163962306a36Sopenharmony_ci 164062306a36Sopenharmony_ci match = of_match_device(clk_rk3399_match_table, &pdev->dev); 164162306a36Sopenharmony_ci if (!match || !match->data) 164262306a36Sopenharmony_ci return -EINVAL; 164362306a36Sopenharmony_ci 164462306a36Sopenharmony_ci init_data = match->data; 164562306a36Sopenharmony_ci if (init_data->inits) 164662306a36Sopenharmony_ci init_data->inits(np); 164762306a36Sopenharmony_ci 164862306a36Sopenharmony_ci return 0; 164962306a36Sopenharmony_ci} 165062306a36Sopenharmony_ci 165162306a36Sopenharmony_cistatic struct platform_driver clk_rk3399_driver = { 165262306a36Sopenharmony_ci .driver = { 165362306a36Sopenharmony_ci .name = "clk-rk3399", 165462306a36Sopenharmony_ci .of_match_table = clk_rk3399_match_table, 165562306a36Sopenharmony_ci .suppress_bind_attrs = true, 165662306a36Sopenharmony_ci }, 165762306a36Sopenharmony_ci}; 165862306a36Sopenharmony_cibuiltin_platform_driver_probe(clk_rk3399_driver, clk_rk3399_probe); 1659