Path: blob/main/sys/dev/clk/rockchip/rk3568_cru.c
107113 views
/*-1* SPDX-License-Identifier: BSD-2-Clause2*3* Copyright (c) 2021, 2022 Soren Schmidt <[email protected]>4* Copyright (c) 2023, Emmanuel Vadot <[email protected]>5*6* Redistribution and use in source and binary forms, with or without7* modification, are permitted provided that the following conditions8* are met:9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11* 2. Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR16* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES17* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.18* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,19* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,20* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;21* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED22* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,23* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY24* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF25* SUCH DAMAGE.26*/2728#include <sys/param.h>29#include <sys/systm.h>30#include <sys/bus.h>31#include <sys/rman.h>32#include <sys/kernel.h>33#include <sys/module.h>34#include <machine/bus.h>3536#include <dev/fdt/simplebus.h>3738#include <dev/ofw/ofw_bus.h>39#include <dev/ofw/ofw_bus_subr.h>4041#include <dev/clk/clk_div.h>42#include <dev/clk/clk_fixed.h>43#include <dev/clk/clk_mux.h>4445#include <dev/clk/rockchip/rk_cru.h>46#include <contrib/device-tree/include/dt-bindings/clock/rk3568-cru.h>474849#define RK3568_PLLSEL_CON(x) ((x) * 0x20)50#define CRU_CLKSEL_CON(x) ((x) * 0x4 + 0x100)51#define CRU_CLKGATE_CON(x) ((x) * 0x4 + 0x300)52#define RK3568_SOFTRST_CON(x) ((x) * 0x4 + 0x400)5354#define RK_PLLRATE(_hz, _ref, _fb, _post1, _post2, _dspd) \55{ \56.freq = _hz, \57.refdiv = _ref, \58.fbdiv = _fb, \59.postdiv1 = _post1, \60.postdiv2 = _post2, \61.dsmpd = _dspd, \62}6364/* PLL clock */65#define RK_PLL(_id, _name, _pnames, _off, _shift) \66{ \67.type = RK3328_CLK_PLL, \68.clk.pll = &(struct rk_clk_pll_def) { \69.clkdef.id = _id, \70.clkdef.name = _name, \71.clkdef.parent_names = _pnames, \72.clkdef.parent_cnt = nitems(_pnames), \73.clkdef.flags = CLK_NODE_STATIC_STRINGS, \74.base_offset = RK3568_PLLSEL_CON(_off), \75.mode_reg = 0xc0, \76.mode_shift = _shift, \77.rates = rk3568_pll_rates, \78}, \79}8081struct rk_clk_pll_rate rk3568_pll_rates[] = {82/* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd */83RK_PLLRATE(2208000000, 1, 92, 1, 1, 1),84RK_PLLRATE(2184000000, 1, 91, 1, 1, 1),85RK_PLLRATE(2160000000, 1, 90, 1, 1, 1),86RK_PLLRATE(2088000000, 1, 87, 1, 1, 1),87RK_PLLRATE(2064000000, 1, 86, 1, 1, 1),88RK_PLLRATE(2040000000, 1, 85, 1, 1, 1),89RK_PLLRATE(2016000000, 1, 84, 1, 1, 1),90RK_PLLRATE(1992000000, 1, 83, 1, 1, 1),91RK_PLLRATE(1920000000, 1, 80, 1, 1, 1),92RK_PLLRATE(1896000000, 1, 79, 1, 1, 1),93RK_PLLRATE(1800000000, 1, 75, 1, 1, 1),94RK_PLLRATE(1704000000, 1, 71, 1, 1, 1),95RK_PLLRATE(1608000000, 1, 67, 1, 1, 1),96RK_PLLRATE(1600000000, 3, 200, 1, 1, 1),97RK_PLLRATE(1584000000, 1, 132, 2, 1, 1),98RK_PLLRATE(1560000000, 1, 130, 2, 1, 1),99RK_PLLRATE(1536000000, 1, 128, 2, 1, 1),100RK_PLLRATE(1512000000, 1, 126, 2, 1, 1),101RK_PLLRATE(1488000000, 1, 124, 2, 1, 1),102RK_PLLRATE(1464000000, 1, 122, 2, 1, 1),103RK_PLLRATE(1440000000, 1, 120, 2, 1, 1),104RK_PLLRATE(1416000000, 1, 118, 2, 1, 1),105RK_PLLRATE(1400000000, 3, 350, 2, 1, 1),106RK_PLLRATE(1392000000, 1, 116, 2, 1, 1),107RK_PLLRATE(1368000000, 1, 114, 2, 1, 1),108RK_PLLRATE(1344000000, 1, 112, 2, 1, 1),109RK_PLLRATE(1320000000, 1, 110, 2, 1, 1),110RK_PLLRATE(1296000000, 1, 108, 2, 1, 1),111RK_PLLRATE(1272000000, 1, 106, 2, 1, 1),112RK_PLLRATE(1248000000, 1, 104, 2, 1, 1),113RK_PLLRATE(1200000000, 1, 100, 2, 1, 1),114RK_PLLRATE(1188000000, 1, 99, 2, 1, 1),115RK_PLLRATE(1104000000, 1, 92, 2, 1, 1),116RK_PLLRATE(1100000000, 3, 275, 2, 1, 1),117RK_PLLRATE(1008000000, 1, 84, 2, 1, 1),118RK_PLLRATE(1000000000, 3, 250, 2, 1, 1),119RK_PLLRATE(912000000, 1, 76, 2, 1, 1),120RK_PLLRATE(816000000, 1, 68, 2, 1, 1),121RK_PLLRATE(800000000, 3, 200, 2, 1, 1),122RK_PLLRATE(700000000, 3, 350, 4, 1, 1),123RK_PLLRATE(696000000, 1, 116, 4, 1, 1),124RK_PLLRATE(600000000, 1, 100, 4, 1, 1),125RK_PLLRATE(594000000, 1, 99, 4, 1, 1),126RK_PLLRATE(500000000, 1, 125, 6, 1, 1),127RK_PLLRATE(408000000, 1, 68, 2, 2, 1),128RK_PLLRATE(312000000, 1, 78, 6, 1, 1),129RK_PLLRATE(216000000, 1, 72, 4, 2, 1),130RK_PLLRATE(200000000, 1, 100, 3, 4, 1),131RK_PLLRATE(148500000, 1, 99, 4, 4, 1),132RK_PLLRATE(100000000, 1, 150, 6, 6, 1),133RK_PLLRATE(96000000, 1, 96, 6, 4, 1),134RK_PLLRATE(74250000, 2, 99, 4, 4, 1),135{},136};137138static struct rk_clk_armclk_rates rk3568_armclk_rates[] = {139{2208000000, 1},140{2160000000, 1},141{2064000000, 1},142{2016000000, 1},143{1992000000, 1},144{1800000000, 1},145{1704000000, 1},146{1608000000, 1},147{1512000000, 1},148{1488000000, 1},149{1416000000, 1},150{1200000000, 1},151{1104000000, 1},152{1008000000, 1},153{ 816000000, 1},154{ 696000000, 1},155{ 600000000, 1},156{ 408000000, 1},157{ 312000000, 1},158{ 216000000, 1},159{ 96000000, 1},160{},161};162163/* Parent clock defines */164PLIST(mux_pll_p) = { "xin24m" };165PLIST(mux_usb480m_p) = { "xin24m", "usb480m_phy", "clk_rtc_32k" };166PLIST(mux_armclk_p) = { "apll", "gpll" };167PLIST(clk_i2s0_8ch_tx_p) = { "clk_i2s0_8ch_tx_src", "clk_i2s0_8ch_tx_frac",168"i2s0_mclkin", "xin_osc0_half" };169PLIST(clk_i2s0_8ch_rx_p) = { "clk_i2s0_8ch_rx_src", "clk_i2s0_8ch_rx_frac",170"i2s0_mclkin", "xin_osc0_half" };171PLIST(clk_i2s1_8ch_tx_p) = { "clk_i2s1_8ch_tx_src", "clk_i2s1_8ch_tx_frac",172"i2s1_mclkin", "xin_osc0_half" };173PLIST(clk_i2s1_8ch_rx_p) = { "clk_i2s1_8ch_rx_src", "clk_i2s1_8ch_rx_frac",174"i2s1_mclkin", "xin_osc0_half" };175PLIST(clk_i2s2_2ch_p) = { "clk_i2s2_2ch_src", "clk_i2s2_2ch_frac",176"i2s2_mclkin", "xin_osc0_half"};177PLIST(clk_i2s3_2ch_tx_p) = { "clk_i2s3_2ch_tx_src", "clk_i2s3_2ch_tx_frac",178"i2s3_mclkin", "xin_osc0_half" };179PLIST(clk_i2s3_2ch_rx_p) = { "clk_i2s3_2ch_rx_src", "clk_i2s3_2ch_rx_frac",180"i2s3_mclkin", "xin_osc0_half" };181PLIST(mclk_spdif_8ch_p) = { "mclk_spdif_8ch_src", "mclk_spdif_8ch_frac" };182PLIST(sclk_audpwm_p) = { "sclk_audpwm_src", "sclk_audpwm_frac" };183PLIST(sclk_uart1_p) = { "clk_uart1_src", "clk_uart1_frac", "xin24m" };184PLIST(sclk_uart2_p) = { "clk_uart2_src", "clk_uart2_frac", "xin24m" };185PLIST(sclk_uart3_p) = { "clk_uart3_src", "clk_uart3_frac", "xin24m" };186PLIST(sclk_uart4_p) = { "clk_uart4_src", "clk_uart4_frac", "xin24m" };187PLIST(sclk_uart5_p) = { "clk_uart5_src", "clk_uart5_frac", "xin24m" };188PLIST(sclk_uart6_p) = { "clk_uart6_src", "clk_uart6_frac", "xin24m" };189PLIST(sclk_uart7_p) = { "clk_uart7_src", "clk_uart7_frac", "xin24m" };190PLIST(sclk_uart8_p) = { "clk_uart8_src", "clk_uart8_frac", "xin24m" };191PLIST(sclk_uart9_p) = { "clk_uart9_src", "clk_uart9_frac", "xin24m" };192PLIST(mpll_gpll_cpll_npll_p) = { "mpll", "gpll", "cpll", "npll" };193PLIST(gpll_cpll_npll_p) = { "gpll", "cpll", "npll" };194PLIST(npll_gpll_p) = { "npll", "gpll" };195PLIST(cpll_gpll_p) = { "cpll", "gpll" };196PLIST(gpll_cpll_p) = { "gpll", "cpll" };197PLIST(gpll_cpll_npll_vpll_p) = { "gpll", "cpll", "npll", "vpll" };198PLIST(apll_gpll_npll_p) = { "apll", "gpll", "npll" };199PLIST(sclk_core_pre_p) = { "sclk_core_src", "npll" };200PLIST(gpll150_gpll100_gpll75_xin24m_p) = { "clk_gpll_div_150m", "clk_gpll_div_100m", "clk_gpll_div_75m",201"xin24m" };202PLIST(clk_gpu_pre_mux_p) = { "clk_gpu_src", "gpu_pvtpll_out" };203PLIST(clk_npu_pre_ndft_p) = { "clk_npu_src", "clk_npu_np5"};204PLIST(clk_npu_p) = { "clk_npu_pre_ndft", "npu_pvtpll_out" };205PLIST(dpll_gpll_cpll_p) = { "dpll", "gpll", "cpll" };206PLIST(clk_ddr1x_p) = { "clk_ddrphy1x_src", "dpll" };207PLIST(gpll200_gpll150_gpll100_xin24m_p) = { "clk_gpll_div_200m", "clk_gpll_div_150m",208"clk_gpll_div_100m", "xin24m" };209PLIST(gpll100_gpll75_gpll50_p) = { "clk_gpll_div_100m", "clk_gpll_div_75m", "clk_cpll_div_50m" };210PLIST(i2s0_mclkout_tx_p) = { "clk_i2s0_8ch_tx", "xin_osc0_half" };211PLIST(i2s0_mclkout_rx_p) = { "clk_i2s0_8ch_rx", "xin_osc0_half" };212PLIST(i2s1_mclkout_tx_p) = { "clk_i2s1_8ch_tx", "xin_osc0_half" };213PLIST(i2s1_mclkout_rx_p) = { "clk_i2s1_8ch_rx", "xin_osc0_half" };214PLIST(i2s2_mclkout_p) = { "clk_i2s2_2ch", "xin_osc0_half" };215PLIST(i2s3_mclkout_tx_p) = { "clk_i2s3_2ch_tx", "xin_osc0_half" };216PLIST(i2s3_mclkout_rx_p) = { "clk_i2s3_2ch_rx", "xin_osc0_half" };217PLIST(mclk_pdm_p) = { "clk_gpll_div_300m", "clk_cpll_div_250m", "clk_gpll_div_200m", "clk_gpll_div_100m" };218PLIST(clk_i2c_p) = { "clk_gpll_div_200m", "clk_gpll_div_100m", "xin24m", "clk_cpll_div_100m" };219PLIST(gpll200_gpll150_gpll100_p) = { "clk_gpll_div_200m", "clk_gpll_div_150m", "clk_gpll_div_100m" };220PLIST(gpll300_gpll200_gpll100_p) = { "clk_gpll_div_300m", "clk_gpll_div_200m", "clk_gpll_div_100m" };221PLIST(clk_nandc_p) = { "clk_gpll_div_200m", "clk_gpll_div_150m", "clk_cpll_div_100m", "xin24m" };222PLIST(sclk_sfc_p) = { "xin24m", "clk_cpll_div_50m", "clk_gpll_div_75m", "clk_gpll_div_100m",223"clk_cpll_div_125m", "clk_gpll_div_150m" };224PLIST(gpll200_gpll150_cpll125_p) = { "clk_gpll_div_200m", "clk_gpll_div_150m", "clk_cpll_div_125m" };225PLIST(cclk_emmc_p) = { "xin24m", "clk_gpll_div_200m", "clk_gpll_div_150m", "clk_cpll_div_100m",226"clk_cpll_div_50m", "clk_osc0_div_375k" };227PLIST(aclk_pipe_p) = { "clk_gpll_div_400m", "clk_gpll_div_300m", "clk_gpll_div_200m", "xin24m" };228PLIST(gpll200_cpll125_p) = { "clk_gpll_div_200m", "clk_cpll_div_125m" };229PLIST(gpll300_gpll200_gpll100_xin24m_p) = { "clk_gpll_div_300m", "clk_gpll_div_200m",230"clk_gpll_div_100m", "xin24m" };231PLIST(clk_sdmmc_p) = { "xin24m", "clk_gpll_div_400m", "clk_gpll_div_300m", "clk_cpll_div_100m",232"clk_cpll_div_50m", "clk_osc0_div_750k" };233PLIST(cpll125_cpll50_cpll25_xin24m_p) = { "clk_cpll_div_125m", "clk_cpll_div_50m", "clk_cpll_div_25m",234"xin24m" };235PLIST(clk_gmac_ptp_p) = { "clk_cpll_div_62P5m", "clk_gpll_div_100m", "clk_cpll_div_50m", "xin24m" };236PLIST(cpll333_gpll300_gpll200_p) = { "clk_cpll_div_333m", "clk_gpll_div_300m", "clk_gpll_div_200m" };237PLIST(cpll_gpll_hpll_p) = { "cpll", "gpll", "hpll" };238PLIST(gpll_usb480m_xin24m_p) = { "gpll", "usb480m", "xin24m", "xin24m" };239PLIST(gpll300_cpll250_gpll100_xin24m_p) = { "clk_gpll_div_300m", "clk_cpll_div_250m",240"clk_gpll_div_100m", "xin24m" };241PLIST(cpll_gpll_hpll_vpll_p) = { "cpll", "gpll", "hpll", "vpll" };242PLIST(hpll_vpll_gpll_cpll_p) = { "hpll", "vpll", "gpll", "cpll" };243PLIST(gpll400_cpll333_gpll200_p) = { "clk_gpll_div_400m", "clk_cpll_div_333m", "clk_gpll_div_200m" };244PLIST(gpll100_gpll75_cpll50_xin24m_p) = { "clk_gpll_div_100m", "clk_gpll_div_75m", "clk_cpll_div_50m",245"xin24m" };246PLIST(xin24m_gpll100_cpll100_p) = { "xin24m", "clk_gpll_div_100m", "clk_cpll_div_100m" };247PLIST(gpll_cpll_usb480m_p) = { "gpll", "cpll", "usb480m" };248PLIST(gpll100_xin24m_cpll100_p) = { "clk_gpll_div_100m", "xin24m", "clk_cpll_div_100m" };249PLIST(gpll200_xin24m_cpll100_p) = { "clk_gpll_div_200m", "xin24m", "clk_cpll_div_100m" };250PLIST(xin24m_32k_p) = { "xin24m", "clk_rtc_32k" };251PLIST(cpll500_gpll400_gpll300_xin24m_p) = { "clk_cpll_div_500m", "clk_gpll_div_400m",252"clk_gpll_div_300m", "xin24m" };253PLIST(gpll400_gpll300_gpll200_xin24m_p) = { "clk_gpll_div_400m", "clk_gpll_div_300m",254"clk_gpll_div_200m", "xin24m" };255PLIST(xin24m_cpll100_p) = { "xin24m", "clk_cpll_div_100m" };256PLIST(mux_gmac0_p) = { "clk_mac0_2top", "gmac0_clkin" };257PLIST(mux_gmac0_rgmii_speed_p) = { "clk_gmac0", "clk_gmac0",258"clk_gmac0_tx_div50", "clk_gmac0_tx_div5" };259PLIST(mux_gmac0_rmii_speed_p) = { "clk_gmac0_rx_div20", "clk_gmac0_rx_div2" };260PLIST(mux_gmac0_rx_tx_p) = { "clk_gmac0_rgmii_speed", "clk_gmac0_rmii_speed",261"clk_gmac0_xpcs_mii" };262PLIST(mux_gmac1_p) = { "clk_mac1_2top", "gmac1_clkin" };263PLIST(mux_gmac1_rgmii_speed_p) = { "clk_gmac1", "clk_gmac1",264"clk_gmac1_tx_div50", "clk_gmac1_tx_div5" };265PLIST(mux_gmac1_rmii_speed_p) = { "clk_gmac1_rx_div20", "clk_gmac1_rx_div2" };266PLIST(mux_gmac1_rx_tx_p) = { "clk_gmac1_rgmii_speed", "clk_gmac1_rmii_speed",267"clk_gmac1_xpcs_mii" };268PLIST(clk_mac_2top_p) = { "clk_cpll_div_125m", "clk_cpll_div_50m", "clk_cpll_div_25m", "ppll" };269PLIST(aclk_rkvdec_pre_p) = { "gpll", "cpll" };270PLIST(clk_rkvdec_core_p) = { "gpll", "cpll", "npll", "vpll" };271272/* CLOCKS */273static struct rk_clk rk3568_clks[] = {274/* External clocks */275LINK("xin24m"),276LINK("clk_rtc_32k"),277LINK("usb480m_phy"),278LINK("mpll"), /* It lives in SCRU */279LINK("i2s0_mclkin"),280LINK("i2s1_mclkin"),281LINK("i2s2_mclkin"),282LINK("i2s3_mclkin"),283LINK("gpu_pvtpll_out"),284LINK("npu_pvtpll_out"),285LINK("gmac0_clkin"),286LINK("gmac1_clkin"),287LINK("clk_gmac0_xpcs_mii"),288LINK("clk_gmac1_xpcs_mii"),289LINK("dummy"),290291/* PLL's */292RK_PLL(PLL_APLL, "apll", mux_pll_p, 0, 0),293RK_PLL(PLL_DPLL, "dpll", mux_pll_p, 1, 2),294RK_PLL(PLL_GPLL, "gpll", mux_pll_p, 2, 6),295RK_PLL(PLL_CPLL, "cpll", mux_pll_p, 3, 4),296RK_PLL(PLL_NPLL, "npll", mux_pll_p, 4, 10),297RK_PLL(PLL_VPLL, "vpll", mux_pll_p, 5, 12),298ARMDIV(ARMCLK, "armclk", mux_armclk_p, rk3568_armclk_rates, 0, 0, 5,2996, 1, 0, 1),300FFACT(0, "clk_osc0_div_375k", "clk_osc0_div_750k", 1, 2),301FFACT(0, "xin_osc0_half", "xin24m", 1, 2),302MUX(USB480M, "usb480m", mux_usb480m_p, 0, -16, 14, 2),303304/* Clocks */305306/* CRU_CLKSEL_CON00 */307/* 0:4 clk_core0_div DIV */308/* 5 Reserved */309/* 6 clk_core_i_sel MUX */310/* 7 clk_core_ndft_sel MUX */311/* 8:12 clk_core1_div DIV */312/* 13:14 Reserved */313/* 15 clk_core_ndft_mux_sel MUX */314315/* CRU_CLKSEL_CON01 */316/* 0:4 clk_core2_div DIV */317/* 5:7 Reserved */318/* 8:12 clk_core3_div DIV */319/* 13:15 Reserved */320321/* CRU_CLKSEL_CON02 */322COMP(0, "sclk_core_src_c", apll_gpll_npll_p, 0, 2, 0, 4, 8, 2),323/* 4:7 Reserved */324/* 10:14 Reserved */325MUX(0, "sclk_core_pre_sel", sclk_core_pre_p, 0, 2, 15, 1),326327/* CRU_CLKSEL_CON03 */328CDIV(0, "atclk_core_div", "armclk", 0, 3, 0, 5),329/* 5:7 Reserved */330CDIV(0, "gicclk_core_div", "armclk", 0, 3, 8, 5),331/* 13:15 Reserved */332333/* CRU_CLKSEL_CON04 */334CDIV(0, "pclk_core_pre_div", "armclk", 0, 4, 0, 5),335/* 5:7 Reserved */336CDIV(0, "periphclk_core_pre_div", "armclk", 0, 4, 8, 5),337/* 13:15 Reserved */338339/* CRU_CLKSEL_CON05 */340/* 0:7 Reserved */341/* 8:12 aclk_core_ndft_div DIV */342/* 13 Reserved */343/* 14:15 aclk_core_biu2bus_sel MUX */344345/* CRU_CLKSEL_CON06 */346COMP(0, "clk_gpu_pre_c", mpll_gpll_cpll_npll_p, 0, 6, 0, 4, 6, 2),347/* 4:5 Reserved */348CDIV(0, "aclk_gpu_pre_div", "clk_gpu_pre_c", 0, 6, 8, 2),349/* 10 Reserved */350MUX(CLK_GPU_PRE_MUX, "clk_gpu_pre_mux_sel", clk_gpu_pre_mux_p, 0, 6, 11, 1),351CDIV(0, "pclk_gpu_pre_div", "clk_gpu_pre_c", 0, 6, 12, 4),352353/* CRU_CLKSEL_CON07 */354COMP(0, "clk_npu_src_c", npll_gpll_p, 0, 7, 0, 4, 6, 1),355COMP(0, "clk_npu_np5_c", npll_gpll_p, 0, 7, 4, 2, 7, 1),356MUX(CLK_NPU_PRE_NDFT, "clk_npu_pre_ndft", clk_npu_pre_ndft_p, 0, 7,3578, 1),358/* 9:14 Reserved */359MUX(CLK_NPU, "clk_npu", clk_npu_p, 0, 7, 15, 1),360361/* CRU_CLKSEL_CON08 */362CDIV(0, "hclk_npu_pre_div", "clk_npu", 0, 8, 0, 4),363CDIV(0, "pclk_npu_pre_div", "clk_npu", 0, 8, 4, 4),364/* 8:15 Reserved */365366/* CRU_CLKSEL_CON09 */367COMP(0, "clk_ddrphy1x_src_c", dpll_gpll_cpll_p, 0, 9, 0, 5, 6, 2),368/* 5 Reserved */369/* 8:14 Reserved */370MUX(CLK_DDR1X, "clk_ddr1x", clk_ddr1x_p, RK_CLK_COMPOSITE_GRF, 9,37115, 1),372373/* CRU_CLKSEL_CON10 */374CDIV(0, "clk_msch_div", "clk_ddr1x", 0, 10, 0, 2),375MUX(0, "aclk_perimid_sel", gpll300_gpll200_gpll100_xin24m_p, 0, 10, 4, 2),376MUX(0, "hclk_perimid_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 10, 6, 2),377MUX(0, "aclk_gic_audio_sel", gpll200_gpll150_gpll100_xin24m_p, 0, 10, 8, 2),378MUX(0, "hclk_gic_audio_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 10, 10, 2),379MUX(0, "dclk_sdmmc_buffer_sel", gpll100_gpll75_gpll50_p, 0, 10, 12, 2),380/* 14:15 Reserved */381382/* CRU_CLKSEL_CON11 */383COMP(0, "clk_i2s0_8ch_tx_src_c", gpll_cpll_npll_p, 0, 11, 0, 7, 8, 2),384/* 7 Reserved */385MUX(CLK_I2S0_8CH_TX, "clk_i2s0_8ch_tx", clk_i2s0_8ch_tx_p, 0, 11, 10,3862),387/* 12:14 Reserved */388MUX(0, "i2s0_mclkout_tx_sel", i2s0_mclkout_tx_p, 0, 11, 15, 1),389390/* CRU_CLKSEL_CON12 */391FRACT(0, "clk_i2s0_8ch_tx_frac_div", "clk_i2s0_8ch_tx_src", 0, 12),392393/* CRU_CLKSEL_CON13 */394COMP(0, "clk_i2s0_8ch_rx_src_c", gpll_cpll_npll_p, 0, 13, 0, 7, 8, 2),395/* 7 Reserved */396MUX(CLK_I2S0_8CH_RX, "clk_i2s0_8ch_rx", clk_i2s0_8ch_rx_p, 0, 13, 10,3972),398/* 12:14 Reserved */399MUX(0, "i2s0_mclkout_rx_sel", i2s0_mclkout_rx_p, 0, 13, 15, 1),400401/* CRU_CLKSEL_CON14 */402FRACT(0, "clk_i2s0_8ch_rx_frac_div", "clk_i2s0_8ch_rx_src", 0, 14),403404/* CRU_CLKSEL_CON15 */405COMP(0, "clk_i2s1_8ch_tx_src_c", gpll_cpll_npll_p, 0, 15, 0, 7, 8, 2),406/* 7 Reserved */407MUX(CLK_I2S1_8CH_TX, "clk_i2s1_8ch_tx", clk_i2s1_8ch_tx_p, 0, 15, 10,4082),409/* 12:14 Reserved */410MUX(0, "i2s1_mclkout_tx_sel", i2s1_mclkout_tx_p, 0, 11, 15, 1),411412/* CRU_CLKSEL_CON16 */413FRACT(0, "clk_i2s1_8ch_tx_frac_div", "clk_i2s1_8ch_tx_src", 0, 16),414415/* CRU_CLKSEL_CON17 */416COMP(0, "clk_i2s1_8ch_rx_src_c", gpll_cpll_npll_p, 0, 17, 0, 7, 8, 2),417/* 7 Reserved */418MUX(CLK_I2S1_8CH_RX, "clk_i2s1_8ch_rx", clk_i2s1_8ch_rx_p, 0, 17, 10,4192),420/* 12:14 Reserved */421MUX(0, "i2s1_mclkout_rx_sel", i2s1_mclkout_rx_p, 0, 17, 15, 1),422423/* CRU_CLKSEL_CON18 */424FRACT(0, "clk_i2s1_8ch_rx_frac_div", "clk_i2s1_8ch_rx_src", 0, 18),425426/* CRU_CLKSEL_CON19 */427COMP(0, "clk_i2s2_2ch_src_c", gpll_cpll_npll_p, 0, 19, 0, 7, 8, 2),428/* 7 Reserved */429MUX(CLK_I2S2_2CH, "clk_i2s2_2ch", clk_i2s2_2ch_p, 0, 19, 10,4302),431/* 12:14 Reserved */432MUX(0, "i2s2_mclkout_sel", i2s2_mclkout_p, 0, 19, 15, 1),433434/* CRU_CLKSEL_CON20 */435FRACT(0, "clk_i2s2_2ch_frac_div", "clk_i2s2_2ch_src", 0, 20),436437/* CRU_CLKSEL_CON21 */438COMP(0, "clk_i2s3_2ch_tx_src_c", gpll_cpll_npll_p, 0, 21, 0, 7, 8, 2),439/* 7 Reserved */440MUX(CLK_I2S3_2CH_TX, "clk_i2s3_2ch_tx", clk_i2s3_2ch_tx_p, 0, 21, 10,4412),442/* 12:14 Reserved */443MUX(0, "i2s3_mclkout_tx_sel", i2s3_mclkout_tx_p, 0, 21, 15, 1),444445/* CRU_CLKSEL_CON22 */446FRACT(0, "clk_i2s3_2ch_tx_frac_div", "clk_i2s3_2ch_tx_src", 0, 22),447448/* CRU_CLKSEL_CON23 */449COMP(0, "mclk_spdif_8ch_src_c", cpll_gpll_p, 0, 23, 0, 7, 14, 1),450/* 7 Reserved */451MUX(0, "mclk_pdm_sel", mclk_pdm_p, 0, 23, 8, 2),452MUX(0, "clk_acdcdig_i2c_sel", clk_i2c_p, 0, 23, 10, 2),453/* 12:13 Reserved */454MUX(MCLK_SPDIF_8CH, "mclk_spdif_8ch", mclk_spdif_8ch_p, 0, 23, 15,4551),456457/* CRU_CLKSEL_CON24 */458FRACT(0, "mclk_spdif_8ch_frac_div", "mclk_spdif_8ch_src", 0, 24),459460/* CRU_CLKSEL_CON25 */461COMP(0, "sclk_audpwm_src_c", gpll_cpll_p, 0, 25, 0, 5, 14, 1),462/* 6:13 Reserved */463MUX(SCLK_AUDPWM, "sck_audpwm_sel", sclk_audpwm_p, 0, 25, 15, 1),464465/* CRU_CLKSEL_CON26 */466FRACT(0, "sclk_audpwm_frac_frac", "sclk_audpwm_src", 0, 26),467468/* CRU_CLKSEL_CON27 */469MUX(0, "aclk_secure_flash_sel", gpll200_gpll150_gpll100_xin24m_p, 0, 27, 0, 2),470MUX(0, "hclk_secure_flash_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 27, 2, 2),471MUX(0, "clk_crypto_ns_core_sel", gpll200_gpll150_gpll100_p, 0, 27, 4, 2),472MUX(0, "clk_crypto_ns_pka_sel", gpll300_gpll200_gpll100_p, 0, 27, 6, 2),473/* 8:15 Reserved */474475/* CRU_CLKSEL_CON28 */476MUX(0, "nclk_nandc_sel", clk_nandc_p, 0, 28, 0, 2),477/* 2:3 Reserved */478MUX(0, "sclk_sfc_sel", sclk_sfc_p, 0, 28, 4, 3),479/* 7 Reserved */480MUX(0, "bclk_emmc_sel", gpll200_gpll150_cpll125_p, 0, 28, 8, 2),481/* 10:11 Reserved */482MUX(0, "cclk_emmc_sel", cclk_emmc_p, 0, 28, 12, 3),483/* 15 Reserved */484485/* CRU_CLKSEL_CON29 */486MUX(0, "aclk_pipe_sel", aclk_pipe_p, 0, 29, 0, 2),487/* 2:3 Reserved */488CDIV(0, "pclk_pipe_div", "aclk_pipe", 0, 29, 4, 4),489MUX(0, "clk_usb3otg0_suspend_sel", xin24m_32k_p, 0, 29, 8, 1),490MUX(0, "clk_usb3otg1_suspend_sel", xin24m_32k_p, 0, 29, 9, 1),491/* 10:12 Reserved */492MUX(0, "clk_xpcs_eee_sel", gpll200_cpll125_p, 0, 29, 13, 1),493/* 14:15 Reserved */494495/* CRU_CLKSEL_CON30 */496MUX(0, "aclk_php_sel", gpll300_gpll200_gpll100_xin24m_p, 0, 30, 0, 2),497MUX(0, "hclk_php_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 30, 2, 2),498CDIV(0, "pclk_php_div", "aclk_php", 0, 30, 4, 4),499MUX(0, "clk_sdmmc0_sel", clk_sdmmc_p, 0, 30, 8, 3),500/* 11 Reserved */501MUX(0, "clk_sdmmc1_sel", clk_sdmmc_p, 0, 30, 12, 3),502/* 15 Reserved */503504/* CRU_CLKSEL_CON31 */505MUX(SCLK_GMAC0_RX_TX, "clk_gmac0_rx_tx", mux_gmac0_rx_tx_p, 0, 31,5060, 2),507MUX(SCLK_GMAC0, "clk_gmac0", mux_gmac0_p, 0, 31, 2, 1),508MUX(SCLK_GMAC0_RMII_SPEED, "clk_gmac0_rmii_speed",509mux_gmac0_rmii_speed_p, 0, 31, 3, 1),510MUX(SCLK_GMAC0_RGMII_SPEED, "clk_gmac0_rgmii_speed",511mux_gmac0_rgmii_speed_p, 0, 31, 4, 2),512MUX(0, "clk_mac0_2top_sel", clk_mac_2top_p, 0, 31, 8, 2),513MUX(0, "clk_gmac0_ptp_ref_sel", clk_gmac_ptp_p, 0, 31, 12, 2),514MUX(0, "clk_mac0_out_sel", cpll125_cpll50_cpll25_xin24m_p, 0, 31, 14, 2),515516FFACT(0, "clk_gmac0_tx_div5", "clk_gmac0", 1, 5),517FFACT(0, "clk_gmac0_tx_div50", "clk_gmac0", 1, 50),518FFACT(0, "clk_gmac0_rx_div2", "clk_gmac0", 1, 2),519FFACT(0, "clk_gmac0_rx_div20", "clk_gmac0", 1, 20),520521/* CRU_CLKSEL_CON32 */522MUX(0, "aclk_usb_sel", gpll300_gpll200_gpll100_xin24m_p, 0, 32, 0, 2),523MUX(0, "hclk_usb_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 32, 4, 2),524CDIV(0, "pclk_usb_div", "aclk_usb", 0, 32, 4, 4),525MUX(0, "clk_sdmmc2_sel", clk_sdmmc_p, 0, 32, 8, 3),526/* 11:15 Reserved */527528/* CRU_CLKSEL_CON33 */529MUX(SCLK_GMAC1_RX_TX, "clk_gmac1_rx_tx", mux_gmac1_rx_tx_p, 0, 33,5300, 2),531MUX(SCLK_GMAC1, "clk_gmac1", mux_gmac1_p, 0, 33, 2, 1),532MUX(SCLK_GMAC1_RMII_SPEED, "clk_gmac1_rmii_speed",533mux_gmac1_rmii_speed_p, 0, 33, 3, 1),534MUX(SCLK_GMAC1_RGMII_SPEED, "clk_gmac1_rgmii_speed",535mux_gmac1_rgmii_speed_p, 0, 33, 4, 2),536/* 6:7 Reserved */537MUX(0, "clk_mac1_2top_sel", clk_mac_2top_p, 0, 33, 8, 2),538MUX(0, "clk_gmac1_ptp_ref_sel", clk_gmac_ptp_p, 0, 33, 12, 2),539MUX(0, "clk_mac1_out_sel", cpll125_cpll50_cpll25_xin24m_p, 0, 33, 14, 2),540541FFACT(0, "clk_gmac1_tx_div5", "clk_gmac1", 1, 5),542FFACT(0, "clk_gmac1_tx_div50", "clk_gmac1", 1, 50),543FFACT(0, "clk_gmac1_rx_div2", "clk_gmac1", 1, 2),544FFACT(0, "clk_gmac1_rx_div20", "clk_gmac1", 1, 20),545546/* CRU_CLKSEL_CON34 */547MUX(0, "aclk_vi_sel", gpll400_gpll300_gpll200_xin24m_p, 0, 34, 0, 2),548/* 2:3 Reserved */549CDIV(0, "hclk_vi_div", "aclk_vi", 0, 34, 4, 4),550CDIV(0, "pclk_vi_div", "aclk_vi", 0, 34, 8, 4),551/* 12:13 Reserved */552MUX(0, "dclk_vicap1_sel", cpll333_gpll300_gpll200_p, 0, 34, 14, 2),553554/* CRU_CLKSEL_CON35 */555COMP(0, "clk_isp_c", cpll_gpll_hpll_p, 0, 35, 0, 5, 6, 2),556/* 5 Reserved */557COMP(0, "clk_cif_out_c", gpll_usb480m_xin24m_p, 0, 35, 8, 6, 14, 2),558559/* CRU_CLKSEL_CON36 */560COMP(0, "clk_cam0_out_c", gpll_usb480m_xin24m_p, 0, 36, 0, 6, 6, 2),561COMP(0, "clk_cam1_out_c", gpll_usb480m_xin24m_p, 0, 36, 8, 6, 14, 2),562563/* CRU_CLKSEL_CON37 */564MUX(0, "aclk_vo_sel", gpll300_cpll250_gpll100_xin24m_p, 0, 37, 0, 2),565/* 2:7 Reserved */566CDIV(0, "hclk_vo_div", "aclk_vo", 0, 37, 8, 4),567CDIV(0, "pclk_vo_div", "aclk_vo", 0, 37, 12, 4),568569/* CRU_CLKSEL_CON38 */570COMP(0, "aclk_vop_pre_c", cpll_gpll_hpll_vpll_p, 0, 38, 0, 5, 6, 2),571/* 5 Reserved */572MUX(0, "clk_edp_200m_sel", gpll200_gpll150_cpll125_p, 0, 38, 8, 2),573/* 10:15 Reserved */574575/* CRU_CLKSEL_CON39 */576COMP(0, "dclk_vop0_c", hpll_vpll_gpll_cpll_p, 0, 39, 0, 8, 10, 2),577/* 12:15 Reserved */578579/* CRU_CLKSEL_CON40 */580COMP(0, "dclk_vop1_c", hpll_vpll_gpll_cpll_p, 0, 40, 0, 8, 10, 2),581/* 12:15 Reserved */582583/* CRU_CLKSEL_CON41 */584COMP(0, "dclk_vop2_c", hpll_vpll_gpll_cpll_p, 0, 41, 0, 8, 10, 2),585/* 12:15 Reserved */586587/* CRU_CLKSEL_CON42 */588COMP(0, "aclk_vpu_pre_c", gpll_cpll_p, 0, 42, 0, 5, 7, 1),589/* 5:6 Reserved */590CDIV(0, "hclk_vpu_pre_div", "aclk_vpu_pre", 0, 42, 8, 4),591/* 12:15 Reserved */592593/* CRU_CLKSEL_CON43 */594MUX(0, "aclk_rga_pre_sel", gpll300_cpll250_gpll100_xin24m_p, 0, 43, 0, 2),595MUX(0, "clk_rga_core_sel", gpll300_gpll200_gpll100_p, 0, 43, 2, 2),596MUX(0, "clk_iep_core_sel", gpll300_gpll200_gpll100_p, 0, 43, 4, 2),597MUX(0, "dclk_ebc_sel", gpll400_cpll333_gpll200_p, 0, 43, 6, 2),598CDIV(0, "hclk_rga_pre_div", "aclk_rga_pre", 0, 43, 8, 4),599CDIV(0, "pclk_rga_pre_div", "aclk_rga_pre", 0, 43, 12, 4),600601/* CRU_CLKSEL_CON44 */602COMP(0, "aclk_rkvenc_pre_c", gpll_cpll_npll_p, 0, 44, 0, 5, 6, 2),603/* 5 Reserved */604CDIV(0, "hclk_rkvenc_pre_div", "aclk_rkvenc_pre", 0, 44, 8, 4),605/* 12:15 Reserved */606607/* CRU_CLKSEL_CON45 */608COMP(0, "clk_rkvenc_core_c", gpll_cpll_npll_vpll_p, 0, 45, 0, 5, 14, 2),609/* 5:13 Reserved */610611/* CRU_CLKSEL_CON46 */612613/* CRU_CLKSEL_CON47 */614COMP(0, "aclk_rkvdec_pre_c", aclk_rkvdec_pre_p, 0, 47, 0, 5, 7, 1),615/* 5:6 Reserved */616CDIV(0, "hclk_rkvdec_pre_div", "aclk_rkvdec_pre", 0, 47, 8, 4),617/* 12:15 Reserved */618619/* CRU_CLKSEL_CON48 */620COMP(0, "clk_rkvdec_ca_c", gpll_cpll_npll_vpll_p, 0, 48, 0, 5, 6, 2),621/* 5 Reserved */622/* 8:15 Reserved */623624/* CRU_CLKSEL_CON49 */625COMP(0, "clk_rkvdec_hevc_ca_c", gpll_cpll_npll_vpll_p, 0, 49, 0, 5, 6, 2),626/* 5 Reserved */627COMP(0, "clk_rkvdec_core_c", clk_rkvdec_core_p, 0, 49, 8, 5, 14, 2),628/* 13 Reserved */629630/* CRU_CLKSEL_CON50 */631MUX(0, "aclk_bus_sel", gpll200_gpll150_gpll100_xin24m_p, 0, 50, 0, 2),632/* 2:3 Reserved */633MUX(0, "pclk_bus_sel", gpll100_gpll75_cpll50_xin24m_p, 0, 50, 4, 2),634/* 6:15 Reserved */635636/* CRU_CLKSEL_CON51 */637COMP(0, "clk_tsadc_tsen_c", xin24m_gpll100_cpll100_p, 0, 51, 0, 3, 4, 2),638/* 6:7 Reserved */639CDIV(0, "clk_tsadc_div", "clk_tsadc_tsen", 0, 51, 8, 7),640/* 15 Reserved */641642/* CRU_CLKSEL_CON52 */643COMP(0, "clk_uart1_src_c", gpll_cpll_usb480m_p, 0, 52, 0, 7, 8, 2),644/* 7 Reserved */645/* 10:11 Reserved */646MUX(0, "sclk_uart1_sel", sclk_uart1_p, 0, 52, 12, 2),647648/* CRU_CLKSEL_CON53 */649FRACT(0, "clk_uart1_frac_frac", "clk_uart1_src", 0, 53),650651/* CRU_CLKSEL_CON54 */652COMP(0, "clk_uart2_src_c", gpll_cpll_usb480m_p, 0, 54, 0, 7, 8, 2),653/* 7 Reserved */654/* 10:11 Reserved */655MUX(0, "sclk_uart2_sel", sclk_uart2_p, 0, 52, 12, 2),656657/* CRU_CLKSEL_CON55 */658FRACT(0, "clk_uart2_frac_frac", "clk_uart2_src", 0, 55),659660/* CRU_CLKSEL_CON56 */661COMP(0, "clk_uart3_src_c", gpll_cpll_usb480m_p, 0, 54, 0, 7, 8, 2),662/* 7 Reserved */663/* 10:11 Reserved */664MUX(0, "sclk_uart3_sel", sclk_uart3_p, 0, 56, 12, 2),665666/* CRU_CLKSEL_CON57 */667FRACT(0, "clk_uart3_frac_frac", "clk_uart3_src", 0, 57),668669/* CRU_CLKSEL_CON58 */670COMP(0, "clk_uart4_src_c", gpll_cpll_usb480m_p, 0, 58, 0, 7, 8, 2),671/* 7 Reserved */672/* 10:11 Reserved */673MUX(0, "sclk_uart4_sel", sclk_uart4_p, 0, 58, 12, 2),674675/* CRU_CLKSEL_CON59 */676FRACT(0, "clk_uart4_frac_frac", "clk_uart4_src", 0, 59),677678/* CRU_CLKSEL_CON60 */679COMP(0, "clk_uart5_src_c", gpll_cpll_usb480m_p, 0, 60, 0, 7, 8, 2),680/* 7 Reserved */681/* 10:11 Reserved */682MUX(0, "sclk_uart5_sel", sclk_uart5_p, 0, 60, 12, 2),683684/* CRU_CLKSEL_CON61 */685FRACT(0, "clk_uart5_frac_frac", "clk_uart5_src", 0, 61),686687/* CRU_CLKSEL_CON62 */688COMP(0, "clk_uart6_src_c", gpll_cpll_usb480m_p, 0, 62, 0, 7, 8, 2),689/* 7 Reserved */690/* 10:11 Reserved */691MUX(0, "sclk_uart6_sel", sclk_uart6_p, 0, 62, 12, 2),692693/* CRU_CLKSEL_CON63 */694FRACT(0, "clk_uart6_frac_frac", "clk_uart6_src", 0, 63),695696/* CRU_CLKSEL_CON64 */697COMP(0, "clk_uart7_src_c", gpll_cpll_usb480m_p, 0, 64, 0, 7, 8, 2),698/* 7 Reserved */699/* 10:11 Reserved */700MUX(0, "sclk_uart7_sel", sclk_uart7_p, 0, 64, 12, 2),701702/* CRU_CLKSEL_CON65 */703FRACT(0, "clk_uart7_frac_frac", "clk_uart7_src", 0, 65),704705/* CRU_CLKSEL_CON66 */706COMP(0, "clk_uart8_src_c", gpll_cpll_usb480m_p, 0, 66, 0, 7, 8, 2),707/* 7 Reserved */708/* 10:11 Reserved */709MUX(0, "sclk_uart8_sel", sclk_uart8_p, 0, 66, 12, 2),710711/* CRU_CLKSEL_CON67 */712FRACT(0, "clk_uart8_frac_frac", "clk_uart8_src", 0, 67),713714/* CRU_CLKSEL_CON68 */715COMP(0, "clk_uart9_src_c", gpll_cpll_usb480m_p, 0, 68, 0, 7, 8, 2),716/* 7 Reserved */717/* 10:11 Reserved */718MUX(0, "sclk_uart9_sel", sclk_uart9_p, 0, 68, 12, 2),719720/* CRU_CLKSEL_CON69 */721FRACT(0, "clk_uart9_frac_frac", "clk_uart9_src", 0, 69),722723/* CRU_CLKSEL_CON70 */724COMP(0, "clk_can0_c", gpll_cpll_p, 0, 70, 0, 5, 7, 1),725/* 5:6 Reserved */726COMP(0, "clk_can1_c", gpll_cpll_p, 0, 70, 8, 5, 15, 1),727/* 13:14 Reserved */728729/* CRU_CLKSEL_CON71 */730COMP(0, "clk_can2_c", gpll_cpll_p, 0, 71, 0, 5, 7, 1),731/* 5:6 Reserved */732MUX(0, "clk_i2c_sel", clk_i2c_p, 0, 71, 8, 2),733/* 10:15 Reserved */734735/* CRU_CLKSEL_CON72 */736MUX(0, "clk_spi0_sel", gpll200_xin24m_cpll100_p, 0, 72, 0, 2),737MUX(0, "clk_spi1_sel", gpll200_xin24m_cpll100_p, 0, 72, 2, 2),738MUX(0, "clk_spi2_sel", gpll200_xin24m_cpll100_p, 0, 72, 4, 2),739MUX(0, "clk_spi3_sel", gpll200_xin24m_cpll100_p, 0, 72, 6, 2),740MUX(0, "clk_pwm1_sel", gpll100_xin24m_cpll100_p, 0, 72, 8, 2),741MUX(0, "clk_pwm2_sel", gpll100_xin24m_cpll100_p, 0, 72, 10, 2),742MUX(0, "clk_pwm3_sel", gpll100_xin24m_cpll100_p, 0, 72, 12, 2),743MUX(0, "dbclk_gpio_sel", xin24m_32k_p, 0, 72, 14, 1),744/* 15 Reserved */745746/* CRU_CLKSEL_CON73 */747MUX(0, "aclk_top_high_sel", cpll500_gpll400_gpll300_xin24m_p, 0, 73, 0, 2),748/* 2:3 Reserved */749MUX(0, "aclk_top_low_sel", gpll400_gpll300_gpll200_xin24m_p, 0, 73, 4, 2),750/* 6:7 Reserved */751MUX(0, "hclk_top_sel", gpll150_gpll100_gpll75_xin24m_p, 0, 73, 8, 2),752/* 10:11 Reserved */753MUX(0, "pclk_top_sel", gpll100_gpll75_cpll50_xin24m_p, 0, 73, 12, 2),754/* 14 Reserved */755MUX(0, "clk_optc_arb_sel", xin24m_cpll100_p, 0, 73, 15 , 1),756757/* CRU_CLKSEL_CON74 */758/* 0:7 clk_testout_div CDIV */759/* 8:12 clk_testout_sel MUX */760761/* CRU_CLKSEL_CON75 */762CDIV(0, "clk_gpll_div_400m_div", "gpll", 0, 75, 0, 5),763CDIV(0, "clk_gpll_div_300m_div", "gpll", 0, 75, 8, 5),764765/* CRU_CLKSEL_CON76 */766CDIV(0, "clk_gpll_div_200m_div", "gpll", 0, 76, 0, 5),767CDIV(0, "clk_gpll_div_150m_div", "gpll", 0, 76, 8, 5),768769/* CRU_CLKSEL_CON77 */770CDIV(0, "clk_gpll_div_100m_div", "gpll", 0, 77, 0, 5),771CDIV(0, "clk_gpll_div_75m_div", "gpll", 0, 77, 8, 5),772773/* CRU_CLKSEL_CON78 */774CDIV(0, "clk_gpll_div_20m_div", "gpll", 0, 78, 0, 6),775CDIV(0, "clk_cpll_div_500m_div", "cpll", 0, 78, 8, 5),776777/* CRU_CLKSEL_CON79 */778CDIV(0, "clk_cpll_div_333m_div", "cpll", 0, 79, 0, 6),779CDIV(0, "clk_cpll_div_250m_div", "cpll", 0, 79, 8, 5),780781/* CRU_CLKSEL_CON80 */782CDIV(0, "clk_cpll_div_125m_div", "cpll", 0, 80, 0, 6),783CDIV(0, "clk_cpll_div_62P5m_div", "cpll", 0, 80, 8, 5),784785/* CRU_CLKSEL_CON81 */786CDIV(0, "clk_cpll_div_50m_div", "cpll", 0, 81, 0, 6),787CDIV(0, "clk_cpll_div_25m_div", "cpll", 0, 81, 8, 5),788789/* CRU_CLKSEL_CON82 */790CDIV(0, "clk_cpll_div_100m_div", "cpll", 0, 82, 0, 6),791CDIV(0, "clk_osc0_div_750k_div", "xin24m", 0, 82, 8, 5),792793/* CRU_CLKSEL_CON83 */794CDIV(0, "clk_i2s3_2ch_rx_src_div", "clk_i2s3_2ch_rx_src_sel", 0, 83, 0, 7),795/* 7 Reserved */796MUX(0, "clk_i2s3_2ch_rx_src_sel", gpll_cpll_npll_p, 0, 83, 8, 2),797MUX(CLK_I2S3_2CH_RX, "clk_i2s3_2ch_rx", clk_i2s3_2ch_rx_p, 0, 83, 10,7982),799/* 12:14 Reserved */800MUX(0, "i2s3_mclkout_rx_sel", i2s3_mclkout_rx_p, 0, 83, 15, 1),801802/* CRU_CLKSEL_CON84 */803FRACT(0, "clk_i2s3_2ch_rx_frac_div", "clk_i2s3_2ch_rx_src", 0, 84),804};805806/* GATES */807static struct rk_cru_gate rk3568_gates[] = {808/* CRU_CLKGATE_CON00 */809/* 0 clk_core */810/* 1 clk_core0 */811/* 2 clk_core1 */812/* 3 clk_core2 */813/* 4 clk_core3 */814GATE(0, "sclk_core_src", "sclk_core_src_c", 0, 5),815/* 6 clk_npll_core */816/* 7 sclk_core */817GATE(0, "atclk_core", "atclk_core_div", 0, 8),818GATE(0, "gicclk_core", "gicclk_core_div", 0, 9),819GATE(0, "pclk_core_pre", "pclk_core_pre_div", 0, 10),820GATE(0, "periphclk_core_pre", "periphclk_core_pre_div", 0, 11),821/* 12 pclk_core */822/* 13 periphclk_core */823/* 14 tsclk_core */824/* 15 cntclk_core */825826/* CRU_CLKGATE_CON01 */827/* 0 aclk_core */828/* 1 aclk_core_biuddr */829/* 2 aclk_core_biu2bus */830/* 3 pclk_dgb_biu */831/* 4 pclk_dbg */832/* 5 pclk_dbg_daplite */833/* 6 aclk_adb400_core2gic */834/* 7 aclk_adb400_gic2core */835/* 8 pclk_core_grf */836GATE(PCLK_CORE_PVTM, "pclk_core_pvtm", "pclk_core_pre", 1, 9),837GATE(CLK_CORE_PVTM, "clk_core_pvtm", "xin24m", 1, 10),838GATE(CLK_CORE_PVTM_CORE, "clk_core_pvtm_core", "armclk", 1, 11),839GATE(CLK_CORE_PVTPLL, "clk_core_pvtpll", "armclk", 1, 12),840/* 13 clk_core_div2 */841/* 14 clk_apll_core */842/* 15 clk_jtag */843844/* CRU_CLKGATE_CON02 */845/* 0 clk_gpu_src */846GATE(CLK_GPU_SRC, "clk_gpu_src", "clk_gpu_pre_c", 2, 0),847/* 1 Reserved */848GATE(PCLK_GPU_PRE, "pclk_gpu_pre", "pclk_gpu_pre_div", 2, 2),849GATE(CLK_GPU, "clk_gpu", "clk_gpu_pre_c", 2, 3),850/* 4 aclk_gpu_biu */851/* 5 pclk_gpu_biu */852GATE(PCLK_GPU_PVTM, "pclk_gpu_pvtm", "pclk_gpu_pre", 2, 6),853GATE(CLK_GPU_PVTM, "clk_gpu_pvtm", "xin24m", 2, 7),854GATE(CLK_GPU_PVTM_CORE, "clk_gpu_pvtm_core", "clk_gpu_src", 2, 8),855GATE(CLK_GPU_PVTPLL, "clk_gpu_pvtpll", "clk_gpu_src", 2, 9),856/* 10 clk_gpu_div2 */857GATE(ACLK_GPU_PRE, "aclk_gpu_pre", "aclk_gpu_pre_div", 2, 11),858/* 12:15 Reserved */859860/* CRU_CLKGATE_CON03 */861GATE(CLK_NPU_SRC, "clk_npu_src", "clk_npu_src_c", 3, 0),862GATE(CLK_NPU_NP5, "clk_npu_np5", "clk_npu_np5_c", 3, 1),863GATE(HCLK_NPU_PRE, "hclk_npu_pre", "hclk_npu_pre_div", 3, 2),864GATE(PCLK_NPU_PRE, "pclk_npu_pre", "pclk_npu_pre_div", 3, 3),865/* 4 aclk_npu_biu */866GATE(ACLK_NPU_PRE, "aclk_npu_pre", "clk_npu", 3, 4),867/* 5 hclk_npu_biu */868/* 6 pclk_npu_biu */869GATE(ACLK_NPU, "aclk_npu", "aclk_npu_pre", 3, 7),870GATE(HCLK_NPU, "hclk_npu", "hclk_npu_pre", 3, 8),871GATE(PCLK_NPU_PVTM, "pclk_npu_pvtm", "pclk_npu_pre", 3, 9),872GATE(CLK_NPU_PVTM, "clk_npu_pvtm", "xin24m", 3, 10),873GATE(CLK_NPU_PVTM_CORE, "clk_npu_pvtm_core", "clk_npu_pre_ndft",3, 11),874GATE(CLK_NPU_PVTPLL, "clk_npu_pvtpll", "clk_npu_pre_ndft", 3, 12),875/* 13 clk_npu_div2 */876/* 14:15 Reserved */877878/* CRU_CLKGATE_CON04 */879GATE(CLK_DDRPHY1X_SRC, "clk_ddrphy1x_src", "clk_ddrphy1x_src_c", 4, 0),880/* 1 clk_dpll_ddr */881GATE(CLK_MSCH, "clk_msch", "clk_msch_div", 4, 2),882/* 3 clk_hwffc_ctrl */883/* 4 aclk_ddrscramble */884/* 5 aclk_msch */885/* 6 clk_ddr_alwayson */886/* 7 Reserved */887/* 8 aclk_ddrsplit */888/* 9 clk_ddrdft_ctl */889/* 10 Reserved */890/* 11 aclk_dma2ddr */891/* 12 Reserved */892/* 13 clk_ddrmon */893/* 14 Reserved */894GATE(CLK24_DDRMON, "clk24_ddrmon", "xin24m", 4, 15),895896/* CRU_CLKGATE_CON05 */897GATE(ACLK_GIC_AUDIO, "aclk_gic_audio", "aclk_gic_audio_sel", 5, 0),898GATE(HCLK_GIC_AUDIO, "hclk_gic_audio", "hclk_gic_audio_sel", 5, 1),899/* 2 aclk_gic_audio_biu */900/* 3 hclk_gic_audio_biu */901GATE(ACLK_GIC600, "aclk_gic600", "aclk_gic_audio", 5, 4),902/* 5 aclk_gicadb_core2gic */903/* 6 aclk_gicadb_gic2core */904GATE(ACLK_SPINLOCK, "aclk_spinlock", "aclk_gic_audio", 5, 7),905GATE(HCLK_SDMMC_BUFFER, "hclk_sdmmc_buffer", "hclk_gic_audio", 5, 8),906GATE(DCLK_SDMMC_BUFFER, "dclk_sdmmc_buffer", "dclk_sdmmc_buffer_sel", 5, 9),907GATE(HCLK_I2S0_8CH, "hclk_i2s0_8ch", "hclk_gic_audio", 5, 10),908GATE(HCLK_I2S1_8CH, "hclk_i2s1_8ch", "hclk_gic_audio", 5, 11),909GATE(HCLK_I2S2_2CH, "hclk_i2s2_2ch", "hclk_gic_audio", 5, 12),910GATE(HCLK_I2S3_2CH, "hclk_i2s3_2ch", "hclk_gic_audio", 5, 13),911GATE(HCLK_PDM, "hclk_pdm", "hclk_gic_audio", 5, 14),912GATE(MCLK_PDM, "mclk_pdm", "mclk_pdm_sel", 5, 15),913914/* CRU_CLKGATE_CON06 */915GATE(CLK_I2S0_8CH_TX_SRC, "clk_i2s0_8ch_tx_src", "clk_i2s0_8ch_tx_src_c", 6, 0),916GATE(CLK_I2S0_8CH_TX_FRAC, "clk_i2s0_8ch_tx_frac", "clk_i2s0_8ch_tx_frac_div", 6, 1),917GATE(MCLK_I2S0_8CH_TX, "mclk_i2s0_8ch_tx", "clk_i2s0_8ch_tx", 6, 2),918GATE(I2S0_MCLKOUT_TX, "i2s0_mclkout_tx", "i2s0_mclkout_tx_sel", 6, 3),919GATE(CLK_I2S0_8CH_RX_SRC, "clk_i2s0_8ch_rx_src", "clk_i2s0_8ch_rx_src_c", 6, 4),920GATE(CLK_I2S0_8CH_RX_FRAC, "clk_i2s0_8ch_rx_frac", "clk_i2s0_8ch_rx_frac_div", 6, 5),921GATE(MCLK_I2S0_8CH_RX, "mclk_i2s0_8ch_rx", "clk_i2s0_8ch_rx", 6, 6),922GATE(I2S0_MCLKOUT_RX, "i2s0_mclkout_rx", "i2s0_mclkout_rx_sel", 6, 7),923GATE(CLK_I2S1_8CH_TX_SRC, "clk_i2s1_8ch_tx_src", "clk_i2s1_8ch_tx_src_c", 6, 8),924GATE(CLK_I2S1_8CH_TX_FRAC, "clk_i2s1_8ch_tx_frac", "clk_i2s1_8ch_tx_frac_div", 6, 9),925GATE(MCLK_I2S1_8CH_TX, "mclk_i2s1_8ch_tx", "clk_i2s1_8ch_tx", 6, 10),926GATE(I2S1_MCLKOUT_TX, "i2s1_mclkout_tx", "i2s1_mclkout_tx_sel", 6, 11),927GATE(CLK_I2S1_8CH_RX_SRC, "clk_i2s1_8ch_rx_src", "clk_i2s1_8ch_rx_src_c", 6, 12),928GATE(CLK_I2S1_8CH_RX_FRAC, "clk_i2s1_8ch_rx_frac", "clk_i2s1_8ch_rx_frac_div", 6, 13),929GATE(MCLK_I2S1_8CH_RX, "mclk_i2s1_8ch_rx", "clk_i2s1_8ch_rx", 6, 14),930GATE(I2S1_MCLKOUT_RX, "i2s1_mclkout_rx", "i2s1_mclkout_rx_sel", 6, 15),931932/* CRU_CLKGATE_CON07 */933GATE(CLK_I2S2_2CH_SRC, "clk_i2s2_2ch_src", "clk_i2s2_2ch_src_c", 7, 0),934GATE(CLK_I2S2_2CH_FRAC, "clk_i2s2_2ch_frac", "clk_i2s2_2ch_frac_div", 7, 1),935GATE(MCLK_I2S2_2CH, "mclk_i2s2_2ch", "clk_i2s2_2ch", 7, 2),936GATE(I2S2_MCLKOUT, "i2s2_mclkout", "i2s2_mclkout_sel", 7, 3),937GATE(CLK_I2S3_2CH_TX, "clk_i2s3_2ch_tx_src", "clk_i2s3_2ch_tx_src_c", 7, 4),938GATE(CLK_I2S3_2CH_TX_FRAC, "clk_i2s3_2ch_tx_frac", "clk_i2s3_2ch_tx_frac_div", 7, 5),939GATE(MCLK_I2S3_2CH_TX, "mclk_i2s3_2ch_tx", "clk_i2s3_2ch_tx", 7, 6),940GATE(I2S3_MCLKOUT_TX, "i2s3_mclkout_tx", "i2s3_mclkout_tx_sel", 7, 7),941GATE(CLK_I2S3_2CH_RX, "clk_i2s3_2ch_rx_src", "clk_i2s3_2ch_rx_src_div", 7, 8),942GATE(CLK_I2S3_2CH_RX_FRAC, "clk_i2s3_2ch_rx_frac", "clk_i2s3_2ch_rx_frac_div", 7, 9),943GATE(MCLK_I2S3_2CH_RX, "mclk_i2s3_2ch_rx", "clk_i2s3_2ch_rx", 7, 10),944GATE(I2S3_MCLKOUT_RX, "i2s3_mclkout_rx", "i2s3_mclkout_rx_sel", 7, 11),945GATE(HCLK_VAD, "hclk_vad", "hclk_gic_audio", 7, 12),946GATE(HCLK_SPDIF_8CH, "hclk_spdif_8ch", "hclk_gic_audio", 7, 13),947GATE(MCLK_SPDIF_8CH_SRC, "mclk_spdif_8ch_src", "mclk_spdif_8ch_src_c", 7, 14),948GATE(MCLK_SPDIF_8CH_FRAC, "mclk_spdif_8ch_frac", "mclk_spdif_8ch_frac_div", 7, 15),949950/* CRU_CLKGATE_CON08 */951GATE(HCLK_AUDPWM, "hclk_audpwm", "hclk_gic_audio", 8, 0),952GATE(SCLK_AUDPWM_SRC, "sclk_audpwm_src", "sclk_audpwm_src_c", 8, 1),953GATE(SCLK_AUDPWM_FRAC, "sclk_audpwm_frac", "sclk_audpwm_frac_frac", 8, 2),954GATE(HCLK_ACDCDIG, "hclk_acdcdig", "hclk_gic_audio", 8, 3),955GATE(CLK_ACDCDIG_I2C, "clk_acdcdig_i2c", "clk_acdcdig_i2c_sel", 8, 4),956GATE(CLK_ACDCDIG_DAC, "clk_acdcdig_dac", "mclk_i2s3_2ch_tx", 8, 5),957GATE(CLK_ACDCDIG_ADC, "clk_acdcdig_adc", "mclk_i2s3_2ch_rx", 8, 6),958GATE(ACLK_SECURE_FLASH, "aclk_secure_flash", "aclk_secure_flash_sel", 8, 7),959GATE(HCLK_SECURE_FLASH, "hclk_secure_flash", "hclk_secure_flash_sel", 8, 8),960/* 9 aclk_secure_flash_biu */961/* 10 hclk_secure_flash_biu */962GATE(ACLK_CRYPTO_NS, "aclk_crypto_ns", "aclk_secure_flash", 8, 11),963GATE(HCLK_CRYPTO_NS, "hclk_crypto_ns", "hclk_secure_flash", 8, 12),964GATE(CLK_CRYPTO_NS_CORE, "clk_crypto_ns_core", "clk_crypto_ns_core_sel", 8, 13),965GATE(CLK_CRYPTO_NS_PKA, "clk_crypto_ns_pka", "clk_crypto_ns_pka_sel", 8, 14),966GATE(CLK_CRYPTO_NS_RNG, "clk_crypto_ns_rng", "hclk_secure_flash", 8, 15),967968/* CRU_CLKGATE_CON09 */969GATE(HCLK_NANDC, "hclk_nandc", "hclk_secure_flash", 9, 0),970GATE(NCLK_NANDC, "nclk_nandc", "nclk_nandc_sel", 9, 1),971GATE(HCLK_SFC, "hclk_sfc", "hclk_secure_flash", 9, 2),972GATE(HCLK_SFC_XIP, "hclk_sfc_xip", "hclk_secure_flash", 9, 3),973GATE(SCLK_SFC, "sclk_sfc", "sclk_sfc_sel", 9, 4),974GATE(ACLK_EMMC, "aclk_emmc", "aclk_secure_flash", 9, 5),975GATE(HCLK_EMMC, "hclk_emmc", "hclk_secure_flash", 9, 6),976GATE(BCLK_EMMC, "bclk_emmc", "bclk_emmc_sel", 9, 7),977GATE(CCLK_EMMC, "cclk_emmc", "cclk_emmc_sel", 9, 8),978GATE(TCLK_EMMC, "tclk_emmc", "xin24m", 9, 9),979GATE(HCLK_TRNG_NS, "hclk_trng_ns", "hclk_secure_flash", 9, 10),980GATE(CLK_TRNG_NS, "clk_trng_ns", "hclk_secure_flash", 9, 11),981/* 12:15 Reserved */982983/* CRU_CLKGATE_CON10 */984GATE(ACLK_PIPE, "aclk_pipe", "aclk_pipe_sel", 10, 0),985GATE(PCLK_PIPE, "pclk_pipe", "pclk_pipe_div", 10, 1),986/* 2 aclk_pipe_biu */987/* 3 pclk_pipe_biu */988GATE(CLK_XPCS_EEE, "clk_xpcs_eee", "clk_xpcs_eee_sel", 10, 4),989/* 5 clk_xpcs_rx_div10 */990/* 6 clk_xpcs_tx_div10 */991/* 7 pclk_pipe_grf */992GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_pipe", 10, 8),993GATE(CLK_USB3OTG0_REF, "clk_usb3otg0_ref", "xin24m", 10, 9),994GATE(CLK_USB3OTG0_SUSPEND, "clk_usb3otg0_suspend", "clk_usb3otg0_suspend_sel", 10, 10),995/* 11 clk_usb3otg0_pipe */996GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_pipe", 10, 12),997GATE(CLK_USB3OTG1_REF, "clk_usb3otg1_ref", "xin24m", 10, 13),998GATE(CLK_USB3OTG1_SUSPEND, "clk_usb3otg1_suspend", "clk_usb3otg1_suspend_sel", 10, 14),999/* 15 clk_usb3otg1_pipe */10001001/* CRU_CLKGATE_CON11 */1002GATE(ACLK_SATA0, "aclk_sata0", "aclk_pipe", 11, 0),1003GATE(CLK_SATA0_PMALIVE, "clk_sata0_pmalive", "clk_gpll_div_20m", 11, 1),1004GATE(CLK_SATA0_RXOOB, "clk_sata0_rxoob", "clk_cpll_div_50m", 11, 2),1005/* 3 clk_sata0_pipe */1006GATE(ACLK_SATA1, "aclk_sata1", "aclk_pipe", 11, 4),1007GATE(CLK_SATA1_PMALIVE, "clk_sata1_pmalive", "clk_gpll_div_20m", 11, 5),1008GATE(CLK_SATA1_RXOOB, "clk_sata1_rxoob", "clk_cpll_div_50m", 11, 6),1009/* 7 clk_sata1_pipe */1010GATE(ACLK_SATA2, "aclk_sata2", "aclk_pipe", 11, 8),1011GATE(CLK_SATA2_PMALIVE, "clk_sata2_pmalive", "clk_gpll_div_20m", 11, 9),1012GATE(CLK_SATA2_RXOOB, "clk_sata2_rxoob", "clk_cpll_div_50m", 11, 10),1013/* 11 clk_sata2_pipe */1014/* 12:15 Reserved */10151016/* CRU_CLKGATE_CON12 */1017GATE(ACLK_PCIE20_MST, "aclk_pcie20_mst", "aclk_pipe", 12, 0),1018GATE(ACLK_PCIE20_SLV, "aclk_pcie20_slv", "aclk_pipe", 12, 1),1019GATE(ACLK_PCIE20_DBI, "aclk_pcie20_dbi", "aclk_pipe", 12, 2),1020GATE(PCLK_PCIE20, "pclk_pcie20", "pclk_pipe", 12, 3),1021GATE(CLK_PCIE20_AUX_NDFT, "clk_pcie20_aux_ndft", "xin24m", 12, 4),1022/* 5 clk_pcie20_pipe */1023/* 6:7 Reserved */1024GATE(ACLK_PCIE30X1_MST, "aclk_pcie30x1_mst", "aclk_pipe", 12, 8),1025GATE(ACLK_PCIE30X1_SLV, "aclk_pcie30x1_slv", "aclk_pipe", 12, 9),1026GATE(ACLK_PCIE30X1_DBI, "aclk_pcie30x1_dbi", "aclk_pipe", 12, 10),1027GATE(PCLK_PCIE30X1, "pclk_pcie30x1", "pclk_pipe", 12, 11),1028GATE(CLK_PCIE30X1_AUX_NDFT, "clk_pcie30x1_aux_ndft", "xin24m", 12, 12),1029/* 13 clk_pcie30x1_pipe */1030/* 14:15 Reserved */10311032/* CRU_CLKGATE_CON13 */1033GATE(ACLK_PCIE30X2_MST, "aclk_pcie30x2_mst", "aclk_pipe", 13, 0),1034GATE(ACLK_PCIE30X2_SLV, "aclk_pcie30x2_slv", "aclk_pipe", 13, 1),1035GATE(ACLK_PCIE30X2_DBI, "aclk_pcie30x2_dbi", "aclk_pipe", 13, 2),1036GATE(PCLK_PCIE30X2, "pclk_pcie30x2", "pclk_pipe", 13, 3),1037GATE(CLK_PCIE30X2_AUX_NDFT, "clk_pcie30x2_aux_ndft", "xin24m", 13, 4),1038/* 5 clk_pcie30x2_pipe */1039GATE(PCLK_XPCS, "pclk_xpcs", "pclk_pipe", 13, 6),1040/* 7 clk_xpcs_qsgmii_tx */1041/* 8 clk_xpcs_qsgmii_rx */1042/* 9 clk_xpcs_xgxs_tx */1043/* 10 Reserved */1044/* 11 clk_xpcs_xgxs_rx */1045/* 12 clk_xpcs_mii0_tx */1046/* 13 clk_xpcs_mii0_rx */1047/* 14 clk_xpcs_mii1_tx */1048/* 15 clk_xpcs_mii1_rx */10491050/* CRU_CLKGATE_CON14 */1051GATE(ACLK_PERIMID, "aclk_perimid", "aclk_perimid_sel", 14, 0),1052GATE(HCLK_PERIMID, "hclk_perimid", "hclk_perimid_sel", 14, 1),1053/* 2 aclk_perimid_biu */1054/* 3 hclk_perimid_biu */1055/* 4:7 Reserved */1056GATE(ACLK_PHP, "aclk_php", "aclk_php_sel", 14, 8),1057GATE(HCLK_PHP, "hclk_php", "hclk_php_sel", 14, 9),1058GATE(PCLK_PHP, "pclk_php", "pclk_php_div", 14, 10),1059/* 11 aclk_php_biu */1060/* 12 hclk_php_biu */1061/* 13 pclk_php_biu */1062/* 14:15 Reserved */10631064/* CRU_CLKGATE_CON15 */1065GATE(HCLK_SDMMC0, "hclk_sdmmc0", "hclk_php", 15, 0),1066GATE(CLK_SDMMC0, "clk_sdmmc0", "clk_sdmmc0_sel", 15, 1),1067GATE(HCLK_SDMMC1, "hclk_sdmmc1", "hclk_php", 15, 2),1068GATE(CLK_SDMMC1, "clk_sdmmc1", "clk_sdmmc1_sel", 15, 3),1069GATE(CLK_GMAC0_PTP_REF, "clk_gmac0_ptp_ref", "clk_gmac0_ptp_ref_sel", 15, 4),1070GATE(ACLK_GMAC0, "aclk_gmac0", "aclk_php", 15, 5),1071GATE(PCLK_GMAC0, "pclk_gmac0", "pclk_php", 15, 6),1072GATE(CLK_MAC0_2TOP, "clk_mac0_2top", "clk_mac0_2top_sel", 15, 7),1073GATE(CLK_MAC0_OUT, "clk_mac0_out", "clk_mac0_out_sel", 15, 8),1074/* 9:11 Reserved */1075GATE(CLK_MAC0_REFOUT, "clk_mac0_refout", "clk_mac0_2top", 15, 12),1076/* 13:15 Reserved */10771078/* CRU_CLKGATE_CON16 */1079GATE(ACLK_USB, "aclk_usb", "aclk_usb_sel", 16, 0),1080GATE(HCLK_USB, "hclk_usb", "hclk_usb_sel", 16, 1),1081GATE(PCLK_USB, "pclk_usb", "pclk_usb_div", 16, 2),1082/* 3 aclk_usb_biu */1083/* 4 hclk_usb_biu */1084/* 5 pclk_usb_biu */1085/* 6 pclk_usb_grf */1086/* 7:11 Reserved */1087GATE(HCLK_USB2HOST0, "hclk_usb2host0", "hclk_usb", 16, 12),1088GATE(HCLK_USB2HOST0_ARB, "hclk_usb2host0_arb", "hclk_usb", 16, 13),1089GATE(HCLK_USB2HOST1, "hclk_usb2host1", "hclk_usb", 16, 14),1090GATE(HCLK_USB2HOST1_ARB, "hclk_usb2host1_arb", "hclk_usb", 16, 15),10911092/* CRU_CLKGATE_CON17 */1093GATE(HCLK_SDMMC2, "hclk_sdmmc2", "hclk_usb", 17, 0),1094GATE(CLK_SDMMC2, "clk_sdmmc2", "clk_sdmmc2_sel", 17, 1),1095GATE(CLK_GMAC1_PTP_REF, "clK_gmac1_ptp_ref", "clk_gmac1_ptp_ref_sel", 17, 2),1096GATE(ACLK_GMAC1, "aclk_gmac1", "aclk_usb", 17, 3),1097GATE(PCLK_GMAC1, "pclk_gmac1", "pclk_usb", 17, 4),1098GATE(CLK_MAC1_2TOP, "clk_mac1_2top", "clk_mac1_2top_sel", 17, 5),1099GATE(CLK_MAC1_OUT, "clk_mac1_out", "clk_mac1_out_sel", 17, 6),1100/* 7:9 Reserved */1101GATE(CLK_MAC1_REFOUT, "clk_mac1_refout", "clk_mac1_2top", 17, 10),1102/* 11:15 Reserved */11031104/* CRU_CLKGATE_CON18 */1105GATE(ACLK_VI, "aclk_vi", "aclk_vi_sel", 18, 0),1106GATE(HCLK_VI, "hclk_vi", "hclk_vi_div", 18, 1),1107GATE(PCLK_VI, "pclk_vi", "pclk_vi_div", 18, 2),1108/* 3 aclk_vi_biu */1109/* 4 hclk_vi_biu */1110/* 5 pclk_vi_biu */1111/* 6:8 Reserved */1112GATE(ACLK_VICAP, "aclk_vicap", "aclk_vi", 18, 9),1113GATE(HCLK_VICAP, "hclk_vicap", "hclk_vi", 18, 10),1114GATE(DCLK_VICAP, "dclk_vicap", "dclk_vicap1_sel", 18, 11),1115/* 12:15 Reserved */11161117/* CRU_CLKGATE_CON19 */1118GATE(ACLK_ISP, "aclk_isp", "aclk_vi", 19, 0),1119GATE(HCLK_ISP, "hclk_isp", "hclk_vi", 19, 1),1120GATE(CLK_ISP, "clk_isp", "clk_isp_c", 19, 2),1121/* 3 Reserved */1122GATE(PCLK_CSI2HOST1, "pclk_csi2host1", "pclk_vi", 19, 4),1123/* 5:7 Reserved */1124GATE(CLK_CIF_OUT, "clk_cif_out", "clk_cif_out_c", 19, 8),1125GATE(CLK_CAM0_OUT, "clk_cam0_out", "clk_cam0_out_c", 19, 9),1126GATE(CLK_CAM1_OUT, "clk_cam1_out", "clk_cam1_out_c", 19, 9),1127/* 11:15 Reserved */11281129/* CRU_CLKGATE_CON20 */1130/* 0 Reserved or aclk_vo ??? */1131GATE(ACLK_VO, "aclk_vo", "aclk_vo_sel", 20, 0),1132GATE(HCLK_VO, "hclk_vo", "hclk_vo_div", 20, 1),1133GATE(PCLK_VO, "pclk_vo", "pclk_vo_div", 20, 2),1134/* 3 aclk_vo_biu */1135/* 4 hclk_vo_biu */1136/* 5 pclk_vo_biu */1137GATE(ACLK_VOP_PRE, "aclk_vop_pre", "aclk_vop_pre_c", 20, 6),1138/* 7 aclk_vop_biu */1139GATE(ACLK_VOP, "aclk_vop", "aclk_vop_pre", 20, 8),1140GATE(HCLK_VOP, "hclk_vop", "hclk_vo", 20, 9),1141GATE(DCLK_VOP0, "dclk_vop0", "dclk_vop0_c", 20, 10),1142GATE(DCLK_VOP1, "dclk_vop1", "dclk_vop1_c", 20, 11),1143GATE(DCLK_VOP2, "dclk_vop2", "dclk_vop2_c", 20, 12),1144GATE(CLK_VOP_PWM, "clk_vop_pwm", "xin24m", 20, 13),1145/* 14:15 Reserved */11461147/* CRU_CLKGATE_CON21 */1148GATE(ACLK_HDCP, "aclk_hdcp", "aclk_vo", 21, 0),1149GATE(HCLK_HDCP, "hclk_hdcp", "hclk_vo", 21, 1),1150GATE(PCLK_HDCP, "pclk_hdcp", "pclk_vo", 21, 2),1151GATE(PCLK_HDMI_HOST, "pclk_hdmi_host", "pclk_vo", 21, 3),1152GATE(CLK_HDMI_SFR, "clk_hdmi_sfr", "xin24m", 21, 4),1153GATE(CLK_HDMI_CEC, "clk_hdmi_cec", "clk_rtc_32k", 21, 5),1154GATE(PCLK_DSITX_0, "pclk_dsitx_0", "pclk_vo", 21, 6),1155GATE(PCLK_DSITX_1, "pclk_dsitx_1", "pclk_vo", 21, 7),1156GATE(PCLK_EDP_CTRL, "pclk_edp_ctrl", "pclk_vo", 21, 8),1157GATE(CLK_EDP_200M, "clk_edp_200m", "clk_edp_200m_sel", 21, 9),1158/* 10:15 Reserved */11591160/* CRU_CLKGATE_CON22 */1161GATE(ACLK_VPU_PRE, "aclk_vpu_pre", "aclk_vpu_pre_c", 22, 0),1162GATE(HCLK_VPU_PRE, "hclk_vpu_pre", "aclk_vpu_pre_c", 22, 1),1163/* 2 aclk_vpu_biu */1164/* 3 hclk_vpu_biu */1165GATE(ACLK_VPU, "aclk_vpu", "aclk_vpu_pre", 22, 4),1166GATE(HCLK_VPU, "hclk_vpu", "hclk_vpu_pre", 22, 5),1167/* 6:11 Reserved */1168GATE(PCLK_RGA_PRE, "pclk_rga_pre", "pclk_rga_pre_div", 22, 12),1169/* 13 pclk_rga_biu */1170GATE(PCLK_EINK, "pclk_eink", "pclk_rga_pre", 22, 14),1171GATE(HCLK_EINK, "hclk_eink", "hclk_rga_pre", 22, 15),11721173/* CRU_CLKGATE_CON23 */1174GATE(ACLK_RGA_PRE, "aclk_rga_pre", "aclk_rga_pre_sel", 23, 0),1175GATE(HCLK_RGA_PRE, "hclk_rga_pre", "hclk_rga_pre_div", 23, 1),1176/* 2 aclk_rga_biu */1177/* 3 hclk_rga_biu */1178GATE(ACLK_RGA, "aclk_rga", "aclk_rga_pre", 23, 4),1179GATE(HCLK_RGA, "hclk_rga", "hclk_rga_pre", 23, 5),1180GATE(CLK_RGA_CORE, "clk_rga_core", "clk_rga_core_sel", 23, 6),1181GATE(ACLK_IEP, "aclk_iep", "aclk_rga_pre", 23, 7),1182GATE(HCLK_IEP, "hclk_iep", "hclk_rga_pre", 23, 8),1183GATE(CLK_IEP_CORE, "clk_iep_core", "clk_iep_core_sel", 23, 9),1184GATE(HCLK_EBC, "hclk_ebc", "hclk_rga_pre", 23, 10),1185GATE(DCLK_EBC, "dclk_ebc", "dclk_ebc_sel", 23, 11),1186GATE(ACLK_JDEC, "aclk_jdec", "aclk_rga_pre", 23, 12),1187GATE(HCLK_JDEC, "hclk_jdec", "hclk_rga_pre", 23, 13),1188GATE(ACLK_JENC, "aclk_jenc", "aclk_rga_pre", 23, 14),1189GATE(HCLK_JENC, "hclk_jenc", "hclk_rga_pre", 23, 15),11901191/* CRU_CLKGATE_CON24 */1192GATE(ACLK_RKVENC_PRE, "aclk_rkvenc_pre", "aclk_rkvenc_pre_c", 24, 0),1193GATE(HCLK_RKVENC_PRE, "hclk_rkvenc_pre", "hclk_rkvenc_pre_div", 24, 1),1194/* 2 Reserved */1195/* 3 aclk_rkvenc_biu */1196/* 4 hclk_rkvenc_biu */1197/* 5 Reserved */1198GATE(ACLK_RKVENC, "aclk_rkvenc", "aclk_rkvenc_pre", 24, 6),1199GATE(HCLK_RKVENC, "hclk_rkvenc", "hclk_rkvenc_pre", 24, 7),1200GATE(CLK_RKVENC_CORE, "clk_rkvenc_core", "clk_rkvenc_core_c", 24, 8),1201/* 9:15 Reserved */12021203/* CRU_CLKGATE_CON25 */1204GATE(ACLK_RKVDEC_PRE, "aclk_rkvdec_pre", "aclk_rkvdec_pre_c", 25, 0),1205GATE(HCLK_RKVDEC_PRE, "hclk_rkvdec_pre", "hclk_rkvdec_pre_div", 25, 1),1206/* 2 aclk_rkvdec_biu */1207/* 3 hclk_rkvdec_biu */1208GATE(ACLK_RKVDEC, "aclk_rkvdec", "aclk_rkvdec_pre", 25, 4),1209GATE(HCLK_RKVDEC, "hclk_rkvdec", "hclk_rkvdec_pre", 25, 5),1210GATE(CLK_RKVDEC_CA, "clk_rkvdec_ca", "clk_rkvdec_ca_c", 25, 6),1211GATE(CLK_RKVDEC_CORE, "clk_rkvdec_core", "clk_rkvdec_core_c", 25, 7),1212GATE(CLK_RKVDEC_HEVC_CA, "clk_rkvdec_hevc_ca", "clk_rkvdec_hevc_ca_c", 25, 8),1213/* 9:15 Reserved */12141215/* CRU_CLKGATE_CON26 */1216GATE(ACLK_BUS, "aclk_bus", "aclk_bus_sel", 26, 0),1217GATE(PCLK_BUS, "pclk_bus", "pclk_bus_sel", 26, 1),1218/* 2 aclk_bus_biu */1219/* 3 pclk_bus_biu */1220GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus", 26, 4),1221GATE(CLK_TSADC_TSEN, "clk_tsadc_tsen", "clk_tsadc_tsen_c", 26, 5),1222GATE(CLK_TSADC, "clk_tsadc", "clk_tsadc_div", 26, 6),1223GATE(PCLK_SARADC, "pclk_saradc", "pclk_bus", 26, 7),1224GATE(CLK_SARADC, "clk_saradc", "xin24m", 26, 8),1225GATE(PCLK_OTPC_NS, "pclk_otpc_ns", "hclk_secure_flash", 26, 9),1226GATE(CLK_OTPC_NS_SBPI, "clk_otpc_ns_sbpi", "xin24m", 26, 10),1227GATE(CLK_OTPC_NS_USR, "clk_otpc_ns_usr", "xin_osc0_half", 26, 11),1228GATE(PCLK_SCR, "pclk_scr", "pclk_bus", 26, 12),1229GATE(PCLK_WDT_NS, "pclk_wdt_ns", "pclk_bus", 26, 13),1230GATE(TCLK_WDT_NS, "tclk_wdt_ns", "xin24m", 26, 14),1231/* 15 Reserved */12321233/* CRU_CLKGATE_CON27 */1234/* 0 pclk_grf */1235/* 1 pclk_grf_vccio12 */1236/* 2 pclk_grf_vccio34 */1237/* 3 pclk_grf_vccio567 */1238GATE(PCLK_CAN0, "pclk_can0", "pclk_bus", 27, 5),1239GATE(CLK_CAN0, "clk_can0", "clk_can0_c", 27, 6),1240GATE(PCLK_CAN1, "pclk_can1", "pclk_bus", 27, 7),1241GATE(CLK_CAN1, "clk_can1", "clk_can1_c", 27, 8),1242GATE(PCLK_CAN2, "pclk_can2", "pclk_bus", 27, 9),1243GATE(CLK_CAN2, "clk_can2", "clk_can2_c", 27, 10),1244/* 11 Reserved */1245GATE(PCLK_UART1, "pclk_uart1", "pclk_bus", 27, 12),1246GATE(CLK_UART1_SRC, "clk_uart1_src", "clk_uart1_src_c", 27, 13),1247GATE(CLK_UART1_FRAC, "clk_uart1_frac", "clk_uart1_frac_frac", 27, 14),1248GATE(SCLK_UART1, "sclk_uart1", "sclk_uart1_sel", 27, 15),12491250/* CRU_CLKGATE_CON28 */1251GATE(PCLK_UART2, "pclk_uart2", "pclk_bus", 28, 0),1252GATE(CLK_UART2_SRC, "clk_uart2_src", "clk_uart2_src_c", 28, 1),1253GATE(CLK_UART2_FRAC, "clk_uart2_frac", "clk_uart2_frac_frac", 28, 2),1254GATE(SCLK_UART2, "sclk_uart2", "sclk_uart2_sel", 28, 3),1255GATE(PCLK_UART3, "pclk_uart3", "pclk_bus", 28, 4),1256GATE(CLK_UART3_SRC, "clk_uart3_src", "clk_uart3_src_c", 28, 5),1257GATE(CLK_UART3_FRAC, "clk_uart3_frac", "clk_uart3_frac_frac", 28, 6),1258GATE(SCLK_UART3, "sclk_uart3", "sclk_uart3_sel", 28, 7),1259GATE(PCLK_UART4, "pclk_uart4", "pclk_bus", 28, 8),1260GATE(CLK_UART4_SRC, "clk_uart4_src", "clk_uart4_src_c", 28, 9),1261GATE(CLK_UART4_FRAC, "clk_uart4_frac", "clk_uart4_frac_frac", 28, 10),1262GATE(SCLK_UART4, "sclk_uart4", "sclk_uart4_sel", 28, 11),1263GATE(PCLK_UART5, "pclk_uart5", "pclk_bus", 28, 12),1264GATE(CLK_UART5_SRC, "clk_uart5_src", "clk_uart5_src_c", 28, 13),1265GATE(CLK_UART5_FRAC, "clk_uart5_frac", "clk_uart5_frac_frac", 28, 14),1266GATE(SCLK_UART5, "sclk_uart5", "sclk_uart5_sel", 28, 15),12671268/* CRU_CLKGATE_CON29 */1269GATE(PCLK_UART6, "pclk_uart6", "pclk_bus", 29, 0),1270GATE(CLK_UART6_SRC, "clk_uart6_src", "clk_uart6_src_c", 29, 1),1271GATE(CLK_UART6_FRAC, "clk_uart6_frac", "clk_uart6_frac_frac", 29, 2),1272GATE(SCLK_UART6, "sclk_uart6", "sclk_uart6_sel", 29, 3),1273GATE(PCLK_UART7, "pclk_uart7", "pclk_bus", 29, 4),1274GATE(CLK_UART7_SRC, "clk_uart7_src", "clk_uart7_src_c", 29, 5),1275GATE(CLK_UART7_FRAC, "clk_uart7_frac", "clk_uart7_frac_frac", 29, 6),1276GATE(SCLK_UART7, "sclk_uart7", "sclk_uart7_sel", 29, 7),1277GATE(PCLK_UART8, "pclk_uart8", "pclk_bus", 29, 8),1278GATE(CLK_UART8_SRC, "clk_uart8_src", "clk_uart8_src_c", 29, 9),1279GATE(CLK_UART8_FRAC, "clk_uart8_frac", "clk_uart8_frac_frac", 29, 10),1280GATE(SCLK_UART8, "sclk_uart8", "sclk_uart8_sel", 29, 11),1281GATE(PCLK_UART9, "pclk_uart9", "pclk_bus", 29, 12),1282GATE(CLK_UART9_SRC, "clk_uart9_src", "clk_uart9_src_c", 29, 13),1283GATE(CLK_UART9_FRAC, "clk_uart9_frac", "clk_uart9_frac_frac", 29, 14),1284GATE(SCLK_UART9, "sclk_uart9", "sclk_uart9_sel", 29, 15),12851286/* CRU_CLKGATE_CON30 */1287GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus", 30, 0),1288GATE(CLK_I2C1, "clk_i2c1", "clk_i2c", 30, 1),1289GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus", 30, 2),1290GATE(CLK_I2C2, "clk_i2c2", "clk_i2c", 30, 3),1291GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus", 30, 4),1292GATE(CLK_I2C3, "clk_i2c3", "clk_i2c", 30, 5),1293GATE(PCLK_I2C4, "pclk_i2c4", "pclk_bus", 30, 6),1294GATE(CLK_I2C4, "clk_i2c4", "clk_i2c", 30, 7),1295GATE(PCLK_I2C5, "pclk_i2c5", "pclk_bus", 30, 8),1296GATE(CLK_I2C5, "clk_i2c5", "clk_i2c", 30, 9),1297GATE(PCLK_SPI0, "pclk_spi0", "pclk_bus", 30, 10),1298GATE(CLK_SPI0, "clk_spi0", "clk_spi0_sel", 30, 11),1299GATE(PCLK_SPI1, "pclk_spi1", "pclk_bus", 30, 12),1300GATE(CLK_SPI1, "clk_spi1", "clk_spi1_sel", 30, 13),1301GATE(PCLK_SPI2, "pclk_spi2", "pclk_bus", 30, 14),1302GATE(CLK_SPI2, "clk_spi2", "clk_spi2_sel", 30, 15),13031304/* CRU_CLKGATE_CON31 */1305GATE(PCLK_SPI3, "pclk_spi3", "pclk_bus", 31, 0),1306GATE(CLK_SPI3, "clk_spi3", "clk_spi3_sel", 31, 1),1307GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus", 31, 2),1308GATE(DBCLK_GPIO1, "dbclk_gpio1", "dbclk_gpio", 31, 3),1309GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus", 31, 4),1310GATE(DBCLK_GPIO2, "dbclk_gpio2", "dbclk_gpio", 31, 5),1311GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_bus", 31, 6),1312GATE(DBCLK_GPIO3, "dbclk_gpio3", "dbclk_gpio", 31, 7),1313GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_bus", 31, 8),1314GATE(DBCLK_GPIO4, "dbclk_gpio4", "dbclk_gpio", 31, 9),1315GATE(PCLK_PWM1, "pclk_pwm1", "pclk_bus", 31, 10),1316GATE(CLK_PWM1, "clk_pwm1", "clk_pwm1_sel", 31, 11),1317GATE(CLK_PWM1_CAPTURE, "clk_pwm1_capture", "xin24m", 31, 12),1318GATE(PCLK_PWM2, "pclk_pwm2", "pclk_bus", 31, 13),1319GATE(CLK_PWM2, "clk_pwm2", "clk_pwm2_sel", 31, 14),1320GATE(CLK_PWM2_CAPTURE, "clk_pwm2_capture", "xin24m", 31, 15),13211322/* CRU_CLKGATE_CON32 */1323GATE(PCLK_PWM3, "pclk_pwm3", "pclk_bus", 32, 0),1324GATE(CLK_PWM3, "clk_pwm3", "clk_pwm3_sel", 32, 1),1325GATE(CLK_PWM3_CAPTURE, "clk_pwm3_capture", "xin24m", 32, 2),1326GATE(PCLK_TIMER, "pclk_timer", "pclk_bus", 32, 3),1327GATE(CLK_TIMER0, "clk_timer0", "xin24m", 32, 4),1328GATE(CLK_TIMER1, "clk_timer1", "xin24m", 32, 5),1329GATE(CLK_TIMER2, "clk_timer2", "xin24m", 32, 6),1330GATE(CLK_TIMER3, "clk_timer3", "xin24m", 32, 7),1331GATE(CLK_TIMER4, "clk_timer4", "xin24m", 32, 8),1332GATE(CLK_TIMER5, "clk_timer5", "xin24m", 32, 9),1333GATE(CLK_I2C, "clk_i2c", "clk_i2c_sel", 32, 10),1334GATE(DBCLK_GPIO, "dbclk_gpio", "dbclk_gpio_sel", 32, 11),1335/* 12 clk_timer */1336GATE(ACLK_MCU, "aclk_mcu", "aclk_bus", 32, 13),1337GATE(PCLK_INTMUX, "pclk_intmux", "pclk_bus", 32, 14),1338GATE(PCLK_MAILBOX, "pclk_mailbox", "pclk_bus", 32, 15),13391340/* CRU_CLKGATE_CON33 */1341GATE(ACLK_TOP_HIGH, "aclk_top_high", "aclk_top_high_sel", 33, 0),1342GATE(ACLK_TOP_LOW, "aclk_top_low", "aclk_top_low_sel", 33, 1),1343GATE(HCLK_TOP, "hclk_top", "hclk_top_sel", 33, 2),1344GATE(PCLK_TOP, "pclk_top", "pclk_top_sel", 33, 3),1345/* 4 aclk_top_high_biu */1346/* 5 aclk_top_low_biu */1347/* 6 hclk_top_biu */1348/* 7 pclk_top_biu */1349GATE(PCLK_PCIE30PHY, "pclk_pcie30phy", "pclk_top", 33, 8),1350GATE(CLK_OPTC_ARB, "clk_optc_arb", "clk_optc_arb_sel", 33, 9),1351/* 10:11 Reserved */1352/* 12 pclk_top_cru */1353GATE(PCLK_MIPICSIPHY, "pclk_mipicsiphy", "pclk_top", 33, 13),1354GATE(PCLK_MIPIDSIPHY0, "pclk_mipidsiphy0", "pclk_top", 33, 14),1355GATE(PCLK_MIPIDSIPHY1, "pclk_mipidsiphy1", "pclk_top", 33, 15),13561357/* CRU_CLKGATE_CON34 */1358/* 0 pclk_apb2asb_chip_left */1359/* 1 pclk_apb2asb_chip_bottom */1360/* 2 pclk_asb2apb_chip_left */1361/* 3 pclk_asb2apb_chip_bottom */1362GATE(PCLK_PIPEPHY0, "pclk_pipephy0", "pclk_top", 34, 4),1363GATE(PCLK_PIPEPHY1, "pclk_pipephy1", "pclk_top", 34, 5),1364GATE(PCLK_PIPEPHY2, "pclk_pipephy2", "pclk_top", 34, 6),1365/* 7 pclk_usb2phy0_grf */1366/* 8 pclk_usb2phy1_grf */1367/* 9 pclk_ddrphy */1368/* 10 clk_ddrphy */1369GATE(PCLK_CPU_BOOST, "pclk_cpu_boost", "pclk_top", 34, 11),1370GATE(CLK_CPU_BOOST, "clk_cpu_boost", "xin24m", 34, 12),1371GATE(PCLK_OTPPHY, "pclk_otpphy", "pclk_top", 34, 13),1372GATE(PCLK_EDPPHY_GRF, "pclk_edpphy_grf", "pclk_top", 34, 14),1373/* 15 clk_testout */13741375/* CRU_CLKGATE_CON35 */1376GATE(0, "clk_gpll_div_400m", "clk_gpll_div_400m_div", 35, 0),1377GATE(0, "clk_gpll_div_300m", "clk_gpll_div_300m_div", 35, 1),1378GATE(0, "clk_gpll_div_200m", "clk_gpll_div_200m_div", 35, 2),1379GATE(0, "clk_gpll_div_150m", "clk_gpll_div_150m_div", 35, 3),1380GATE(0, "clk_gpll_div_100m", "clk_gpll_div_100m_div", 35, 4),1381GATE(0, "clk_gpll_div_75m", "clk_gpll_div_75m_div", 35, 5),1382GATE(0, "clk_gpll_div_20m", "clk_gpll_div_20m_div", 35, 6),1383GATE(CPLL_500M, "clk_cpll_div_500m", "clk_cpll_div_500m_div", 35, 7),1384GATE(CPLL_333M, "clk_cpll_div_333m", "clk_cpll_div_333m_div", 35, 8),1385GATE(CPLL_250M, "clk_cpll_div_250m", "clk_cpll_div_250m_div", 35, 9),1386GATE(CPLL_125M, "clk_cpll_div_125m", "clk_cpll_div_125m_div", 35, 10),1387GATE(CPLL_100M, "clk_cpll_div_100m", "clk_cpll_div_100m_div", 35, 11),1388GATE(CPLL_62P5M, "clk_cpll_div_62P5m", "clk_cpll_div_62P5m_div", 35, 12),1389GATE(CPLL_50M, "clk_cpll_div_50m", "clk_cpll_div_50m_div", 35, 13),1390GATE(CPLL_25M, "clk_cpll_div_25m", "clk_cpll_div_25m_div", 35, 14),1391GATE(0, "clk_osc0_div_750k", "clk_osc0_div_750k_div", 35, 15),1392};139313941395static int1396rk3568_cru_probe(device_t dev)1397{13981399if (!ofw_bus_status_okay(dev))1400return (ENXIO);14011402if (ofw_bus_is_compatible(dev, "rockchip,rk3568-cru")) {1403device_set_desc(dev, "Rockchip RK3568 Clock & Reset Unit");1404return (BUS_PROBE_DEFAULT);1405}1406return (ENXIO);1407}14081409static int1410rk3568_cru_attach(device_t dev)1411{1412struct rk_cru_softc *sc;14131414sc = device_get_softc(dev);1415sc->dev = dev;1416sc->clks = rk3568_clks;1417sc->nclks = nitems(rk3568_clks);1418sc->gates = rk3568_gates;1419sc->ngates = nitems(rk3568_gates);1420sc->reset_offset = 0x400;1421sc->reset_num = 478;14221423return (rk_cru_attach(dev));1424}14251426static device_method_t methods[] = {1427/* Device interface */1428DEVMETHOD(device_probe, rk3568_cru_probe),1429DEVMETHOD(device_attach, rk3568_cru_attach),14301431DEVMETHOD_END1432};14331434DEFINE_CLASS_1(rk3568_cru, rk3568_cru_driver, methods,1435sizeof(struct rk_cru_softc), rk_cru_driver);14361437EARLY_DRIVER_MODULE(rk3568_cru, simplebus, rk3568_cru_driver,14380, 0, BUS_PASS_BUS + BUS_PASS_ORDER_MIDDLE);143914401441