Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: rockchip: Add clock controller for the RK3576

Add the clock and reset tree definitions for the new RK3576
SoC.

As opposed to the other rockchip CRU drivers, the GRF node is looked up
via compatible instead of a phandle, which simplifies the device tree
bindings.

Signed-off-by: Elaine Zhang <zhangqing@rock-chips.com>
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Signed-off-by: YouMin Chen <cym@rock-chips.com>
Signed-off-by: Liang Chen <cl@rock-chips.com>
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Signed-off-by: Detlev Casanova <detlev.casanova@collabora.com>
Reviewed-by: Elaine Zhang <zhangqing@rock-chips.com>
Tested-by: Shawn Lin <shawn.lin@rock-chips.com>
Acked-by: Dragan Simic <dsimic@manjaro.org>
Link: https://lore.kernel.org/r/0102019199a7781a-888440f0-a3f7-4a7d-a831-491260cbdfe7-000000@eu-west-1.amazonses.com
[dropped additional blank line at EOF in rst-rk3576.c
dropped the whole (non-)working as module part]
Signed-off-by: Heiko Stuebner <heiko@sntech.de>

authored by

Elaine Zhang and committed by
Heiko Stuebner
cc40f5ba e781bffc

+2532
+7
drivers/clk/rockchip/Kconfig
··· 100 100 help 101 101 Build the driver for RK3568 Clock Driver. 102 102 103 + config CLK_RK3576 104 + bool "Rockchip RK3576 clock controller support" 105 + depends on ARM64 || COMPILE_TEST 106 + default y 107 + help 108 + Build the driver for RK3576 Clock Driver. 109 + 103 110 config CLK_RK3588 104 111 bool "Rockchip RK3588 clock controller support" 105 112 depends on ARM64 || COMPILE_TEST
+1
drivers/clk/rockchip/Makefile
··· 28 28 obj-$(CONFIG_CLK_RK3368) += clk-rk3368.o 29 29 obj-$(CONFIG_CLK_RK3399) += clk-rk3399.o 30 30 obj-$(CONFIG_CLK_RK3568) += clk-rk3568.o 31 + obj-$(CONFIG_CLK_RK3576) += clk-rk3576.o rst-rk3576.o 31 32 obj-$(CONFIG_CLK_RK3588) += clk-rk3588.o rst-rk3588.o
+1820
drivers/clk/rockchip/clk-rk3576.c
··· 1 + // SPDX-License-Identifier: GPL-2.0 2 + /* 3 + * Copyright (c) 2023 Rockchip Electronics Co. Ltd. 4 + * Author: Elaine Zhang <zhangqing@rock-chips.com> 5 + */ 6 + 7 + #include <linux/clk-provider.h> 8 + #include <linux/of.h> 9 + #include <linux/of_address.h> 10 + #include <linux/platform_device.h> 11 + #include <linux/syscore_ops.h> 12 + #include <linux/mfd/syscon.h> 13 + #include <dt-bindings/clock/rockchip,rk3576-cru.h> 14 + #include "clk.h" 15 + 16 + #define RK3576_GRF_SOC_STATUS0 0x600 17 + #define RK3576_PMU0_GRF_OSC_CON6 0x18 18 + 19 + enum rk3576_plls { 20 + bpll, lpll, vpll, aupll, cpll, gpll, ppll, 21 + }; 22 + 23 + static struct rockchip_pll_rate_table rk3576_pll_rates[] = { 24 + /* _mhz, _p, _m, _s, _k */ 25 + RK3588_PLL_RATE(2520000000, 2, 210, 0, 0), 26 + RK3588_PLL_RATE(2496000000, 2, 208, 0, 0), 27 + RK3588_PLL_RATE(2472000000, 2, 206, 0, 0), 28 + RK3588_PLL_RATE(2448000000, 2, 204, 0, 0), 29 + RK3588_PLL_RATE(2424000000, 2, 202, 0, 0), 30 + RK3588_PLL_RATE(2400000000, 2, 200, 0, 0), 31 + RK3588_PLL_RATE(2376000000, 2, 198, 0, 0), 32 + RK3588_PLL_RATE(2352000000, 2, 196, 0, 0), 33 + RK3588_PLL_RATE(2328000000, 2, 194, 0, 0), 34 + RK3588_PLL_RATE(2304000000, 2, 192, 0, 0), 35 + RK3588_PLL_RATE(2280000000, 2, 190, 0, 0), 36 + RK3588_PLL_RATE(2256000000, 2, 376, 1, 0), 37 + RK3588_PLL_RATE(2232000000, 2, 372, 1, 0), 38 + RK3588_PLL_RATE(2208000000, 2, 368, 1, 0), 39 + RK3588_PLL_RATE(2184000000, 2, 364, 1, 0), 40 + RK3588_PLL_RATE(2160000000, 2, 360, 1, 0), 41 + RK3588_PLL_RATE(2136000000, 2, 356, 1, 0), 42 + RK3588_PLL_RATE(2112000000, 2, 352, 1, 0), 43 + RK3588_PLL_RATE(2088000000, 2, 348, 1, 0), 44 + RK3588_PLL_RATE(2064000000, 2, 344, 1, 0), 45 + RK3588_PLL_RATE(2040000000, 2, 340, 1, 0), 46 + RK3588_PLL_RATE(2016000000, 2, 336, 1, 0), 47 + RK3588_PLL_RATE(1992000000, 2, 332, 1, 0), 48 + RK3588_PLL_RATE(1968000000, 2, 328, 1, 0), 49 + RK3588_PLL_RATE(1944000000, 2, 324, 1, 0), 50 + RK3588_PLL_RATE(1920000000, 2, 320, 1, 0), 51 + RK3588_PLL_RATE(1896000000, 2, 316, 1, 0), 52 + RK3588_PLL_RATE(1872000000, 2, 312, 1, 0), 53 + RK3588_PLL_RATE(1848000000, 2, 308, 1, 0), 54 + RK3588_PLL_RATE(1824000000, 2, 304, 1, 0), 55 + RK3588_PLL_RATE(1800000000, 2, 300, 1, 0), 56 + RK3588_PLL_RATE(1776000000, 2, 296, 1, 0), 57 + RK3588_PLL_RATE(1752000000, 2, 292, 1, 0), 58 + RK3588_PLL_RATE(1728000000, 2, 288, 1, 0), 59 + RK3588_PLL_RATE(1704000000, 2, 284, 1, 0), 60 + RK3588_PLL_RATE(1680000000, 2, 280, 1, 0), 61 + RK3588_PLL_RATE(1656000000, 2, 276, 1, 0), 62 + RK3588_PLL_RATE(1632000000, 2, 272, 1, 0), 63 + RK3588_PLL_RATE(1608000000, 2, 268, 1, 0), 64 + RK3588_PLL_RATE(1584000000, 2, 264, 1, 0), 65 + RK3588_PLL_RATE(1560000000, 2, 260, 1, 0), 66 + RK3588_PLL_RATE(1536000000, 2, 256, 1, 0), 67 + RK3588_PLL_RATE(1512000000, 2, 252, 1, 0), 68 + RK3588_PLL_RATE(1488000000, 2, 248, 1, 0), 69 + RK3588_PLL_RATE(1464000000, 2, 244, 1, 0), 70 + RK3588_PLL_RATE(1440000000, 2, 240, 1, 0), 71 + RK3588_PLL_RATE(1416000000, 2, 236, 1, 0), 72 + RK3588_PLL_RATE(1392000000, 2, 232, 1, 0), 73 + RK3588_PLL_RATE(1320000000, 2, 220, 1, 0), 74 + RK3588_PLL_RATE(1200000000, 2, 200, 1, 0), 75 + RK3588_PLL_RATE(1188000000, 2, 198, 1, 0), 76 + RK3588_PLL_RATE(1100000000, 3, 550, 2, 0), 77 + RK3588_PLL_RATE(1008000000, 2, 336, 2, 0), 78 + RK3588_PLL_RATE(1000000000, 3, 500, 2, 0), 79 + RK3588_PLL_RATE(983040000, 4, 655, 2, 23592), 80 + RK3588_PLL_RATE(955520000, 3, 477, 2, 49806), 81 + RK3588_PLL_RATE(903168000, 6, 903, 2, 11009), 82 + RK3588_PLL_RATE(900000000, 2, 300, 2, 0), 83 + RK3588_PLL_RATE(816000000, 2, 272, 2, 0), 84 + RK3588_PLL_RATE(786432000, 2, 262, 2, 9437), 85 + RK3588_PLL_RATE(786000000, 1, 131, 2, 0), 86 + RK3588_PLL_RATE(785560000, 3, 392, 2, 51117), 87 + RK3588_PLL_RATE(722534400, 8, 963, 2, 24850), 88 + RK3588_PLL_RATE(600000000, 2, 200, 2, 0), 89 + RK3588_PLL_RATE(594000000, 2, 198, 2, 0), 90 + RK3588_PLL_RATE(408000000, 2, 272, 3, 0), 91 + RK3588_PLL_RATE(312000000, 2, 208, 3, 0), 92 + RK3588_PLL_RATE(216000000, 2, 288, 4, 0), 93 + RK3588_PLL_RATE(96000000, 2, 256, 5, 0), 94 + { /* sentinel */ }, 95 + }; 96 + 97 + static struct rockchip_pll_rate_table rk3576_ppll_rates[] = { 98 + /* _mhz, _p, _m, _s, _k */ 99 + RK3588_PLL_RATE(1300000000, 3, 325, 2, 0), 100 + { /* sentinel */ }, 101 + }; 102 + 103 + #define RK3576_ACLK_M_BIGCORE_DIV_MASK 0x1f 104 + #define RK3576_ACLK_M_BIGCORE_DIV_SHIFT 0 105 + #define RK3576_ACLK_M_LITCORE_DIV_MASK 0x1f 106 + #define RK3576_ACLK_M_LITCORE_DIV_SHIFT 8 107 + #define RK3576_PCLK_DBG_LITCORE_DIV_MASK 0x1f 108 + #define RK3576_PCLK_DBG_LITCORE_DIV_SHIFT 0 109 + #define RK3576_ACLK_CCI_DIV_MASK 0x1f 110 + #define RK3576_ACLK_CCI_DIV_SHIFT 7 111 + #define RK3576_ACLK_CCI_MUX_MASK 0x3 112 + #define RK3576_ACLK_CCI_MUX_SHIFT 12 113 + 114 + #define RK3576_BIGCORE_CLKSEL2(_amcore) \ 115 + { \ 116 + .reg = RK3576_BIGCORE_CLKSEL_CON(2), \ 117 + .val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_BIGCORE_DIV_MASK, \ 118 + RK3576_ACLK_M_BIGCORE_DIV_SHIFT), \ 119 + } 120 + 121 + #define RK3576_LITCORE_CLKSEL1(_amcore) \ 122 + { \ 123 + .reg = RK3576_LITCORE_CLKSEL_CON(1), \ 124 + .val = HIWORD_UPDATE(_amcore - 1, RK3576_ACLK_M_LITCORE_DIV_MASK, \ 125 + RK3576_ACLK_M_LITCORE_DIV_SHIFT), \ 126 + } 127 + 128 + #define RK3576_LITCORE_CLKSEL2(_pclkdbg) \ 129 + { \ 130 + .reg = RK3576_LITCORE_CLKSEL_CON(2), \ 131 + .val = HIWORD_UPDATE(_pclkdbg - 1, RK3576_PCLK_DBG_LITCORE_DIV_MASK, \ 132 + RK3576_PCLK_DBG_LITCORE_DIV_SHIFT), \ 133 + } 134 + 135 + #define RK3576_CCI_CLKSEL4(_ccisel, _div) \ 136 + { \ 137 + .reg = RK3576_CCI_CLKSEL_CON(4), \ 138 + .val = HIWORD_UPDATE(_ccisel, RK3576_ACLK_CCI_MUX_MASK, \ 139 + RK3576_ACLK_CCI_MUX_SHIFT) | \ 140 + HIWORD_UPDATE(_div - 1, RK3576_ACLK_CCI_DIV_MASK, \ 141 + RK3576_ACLK_CCI_DIV_SHIFT), \ 142 + } 143 + 144 + #define RK3576_CPUBCLK_RATE(_prate, _amcore) \ 145 + { \ 146 + .prate = _prate##U, \ 147 + .divs = { \ 148 + RK3576_BIGCORE_CLKSEL2(_amcore), \ 149 + }, \ 150 + } 151 + 152 + #define RK3576_CPULCLK_RATE(_prate, _amcore, _pclkdbg, _ccisel) \ 153 + { \ 154 + .prate = _prate##U, \ 155 + .divs = { \ 156 + RK3576_LITCORE_CLKSEL1(_amcore), \ 157 + RK3576_LITCORE_CLKSEL2(_pclkdbg), \ 158 + }, \ 159 + .pre_muxs = { \ 160 + RK3576_CCI_CLKSEL4(2, 2), \ 161 + }, \ 162 + .post_muxs = { \ 163 + RK3576_CCI_CLKSEL4(_ccisel, 2), \ 164 + }, \ 165 + } 166 + 167 + static struct rockchip_cpuclk_rate_table rk3576_cpubclk_rates[] __initdata = { 168 + RK3576_CPUBCLK_RATE(2496000000, 2), 169 + RK3576_CPUBCLK_RATE(2400000000, 2), 170 + RK3576_CPUBCLK_RATE(2304000000, 2), 171 + RK3576_CPUBCLK_RATE(2208000000, 2), 172 + RK3576_CPUBCLK_RATE(2184000000, 2), 173 + RK3576_CPUBCLK_RATE(2088000000, 2), 174 + RK3576_CPUBCLK_RATE(2040000000, 2), 175 + RK3576_CPUBCLK_RATE(2016000000, 2), 176 + RK3576_CPUBCLK_RATE(1992000000, 2), 177 + RK3576_CPUBCLK_RATE(1896000000, 2), 178 + RK3576_CPUBCLK_RATE(1800000000, 2), 179 + RK3576_CPUBCLK_RATE(1704000000, 2), 180 + RK3576_CPUBCLK_RATE(1608000000, 2), 181 + RK3576_CPUBCLK_RATE(1584000000, 2), 182 + RK3576_CPUBCLK_RATE(1560000000, 2), 183 + RK3576_CPUBCLK_RATE(1536000000, 2), 184 + RK3576_CPUBCLK_RATE(1512000000, 2), 185 + RK3576_CPUBCLK_RATE(1488000000, 2), 186 + RK3576_CPUBCLK_RATE(1464000000, 2), 187 + RK3576_CPUBCLK_RATE(1440000000, 2), 188 + RK3576_CPUBCLK_RATE(1416000000, 2), 189 + RK3576_CPUBCLK_RATE(1392000000, 2), 190 + RK3576_CPUBCLK_RATE(1368000000, 2), 191 + RK3576_CPUBCLK_RATE(1344000000, 2), 192 + RK3576_CPUBCLK_RATE(1320000000, 2), 193 + RK3576_CPUBCLK_RATE(1296000000, 2), 194 + RK3576_CPUBCLK_RATE(1272000000, 2), 195 + RK3576_CPUBCLK_RATE(1248000000, 2), 196 + RK3576_CPUBCLK_RATE(1224000000, 2), 197 + RK3576_CPUBCLK_RATE(1200000000, 2), 198 + RK3576_CPUBCLK_RATE(1104000000, 2), 199 + RK3576_CPUBCLK_RATE(1008000000, 2), 200 + RK3576_CPUBCLK_RATE(912000000, 2), 201 + RK3576_CPUBCLK_RATE(816000000, 2), 202 + RK3576_CPUBCLK_RATE(696000000, 2), 203 + RK3576_CPUBCLK_RATE(600000000, 2), 204 + RK3576_CPUBCLK_RATE(408000000, 2), 205 + RK3576_CPUBCLK_RATE(312000000, 2), 206 + RK3576_CPUBCLK_RATE(216000000, 2), 207 + RK3576_CPUBCLK_RATE(96000000, 2), 208 + }; 209 + 210 + static const struct rockchip_cpuclk_reg_data rk3576_cpubclk_data = { 211 + .core_reg[0] = RK3576_BIGCORE_CLKSEL_CON(1), 212 + .div_core_shift[0] = 7, 213 + .div_core_mask[0] = 0x1f, 214 + .num_cores = 1, 215 + .mux_core_alt = 1, 216 + .mux_core_main = 0, 217 + .mux_core_shift = 12, 218 + .mux_core_mask = 0x3, 219 + }; 220 + 221 + static struct rockchip_cpuclk_rate_table rk3576_cpulclk_rates[] __initdata = { 222 + RK3576_CPULCLK_RATE(2400000000, 2, 6, 3), 223 + RK3576_CPULCLK_RATE(2304000000, 2, 6, 3), 224 + RK3576_CPULCLK_RATE(2208000000, 2, 6, 3), 225 + RK3576_CPULCLK_RATE(2184000000, 2, 6, 3), 226 + RK3576_CPULCLK_RATE(2088000000, 2, 6, 3), 227 + RK3576_CPULCLK_RATE(2040000000, 2, 6, 3), 228 + RK3576_CPULCLK_RATE(2016000000, 2, 6, 3), 229 + RK3576_CPULCLK_RATE(1992000000, 2, 6, 3), 230 + RK3576_CPULCLK_RATE(1896000000, 2, 6, 3), 231 + RK3576_CPULCLK_RATE(1800000000, 2, 6, 3), 232 + RK3576_CPULCLK_RATE(1704000000, 2, 6, 3), 233 + RK3576_CPULCLK_RATE(1608000000, 2, 6, 3), 234 + RK3576_CPULCLK_RATE(1584000000, 2, 6, 3), 235 + RK3576_CPULCLK_RATE(1560000000, 2, 6, 3), 236 + RK3576_CPULCLK_RATE(1536000000, 2, 6, 3), 237 + RK3576_CPULCLK_RATE(1512000000, 2, 6, 3), 238 + RK3576_CPULCLK_RATE(1488000000, 2, 6, 3), 239 + RK3576_CPULCLK_RATE(1464000000, 2, 6, 3), 240 + RK3576_CPULCLK_RATE(1440000000, 2, 6, 3), 241 + RK3576_CPULCLK_RATE(1416000000, 2, 6, 3), 242 + RK3576_CPULCLK_RATE(1392000000, 2, 6, 3), 243 + RK3576_CPULCLK_RATE(1368000000, 2, 6, 3), 244 + RK3576_CPULCLK_RATE(1344000000, 2, 6, 3), 245 + RK3576_CPULCLK_RATE(1320000000, 2, 6, 3), 246 + RK3576_CPULCLK_RATE(1296000000, 2, 6, 3), 247 + RK3576_CPULCLK_RATE(1272000000, 2, 6, 3), 248 + RK3576_CPULCLK_RATE(1248000000, 2, 6, 3), 249 + RK3576_CPULCLK_RATE(1224000000, 2, 6, 3), 250 + RK3576_CPULCLK_RATE(1200000000, 2, 6, 2), 251 + RK3576_CPULCLK_RATE(1104000000, 2, 6, 2), 252 + RK3576_CPULCLK_RATE(1008000000, 2, 6, 2), 253 + RK3576_CPULCLK_RATE(912000000, 2, 6, 2), 254 + RK3576_CPULCLK_RATE(816000000, 2, 6, 2), 255 + RK3576_CPULCLK_RATE(696000000, 2, 6, 2), 256 + RK3576_CPULCLK_RATE(600000000, 2, 6, 2), 257 + RK3576_CPULCLK_RATE(408000000, 2, 6, 2), 258 + RK3576_CPULCLK_RATE(312000000, 2, 6, 2), 259 + RK3576_CPULCLK_RATE(216000000, 2, 6, 2), 260 + RK3576_CPULCLK_RATE(96000000, 2, 6, 2), 261 + }; 262 + 263 + static const struct rockchip_cpuclk_reg_data rk3576_cpulclk_data = { 264 + .core_reg[0] = RK3576_LITCORE_CLKSEL_CON(0), 265 + .div_core_shift[0] = 7, 266 + .div_core_mask[0] = 0x1f, 267 + .num_cores = 1, 268 + .mux_core_alt = 1, 269 + .mux_core_main = 0, 270 + .mux_core_shift = 12, 271 + .mux_core_mask = 0x3, 272 + }; 273 + 274 + #define MFLAGS CLK_MUX_HIWORD_MASK 275 + #define DFLAGS CLK_DIVIDER_HIWORD_MASK 276 + #define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE) 277 + 278 + PNAME(mux_pll_p) = { "xin24m", "xin32k" }; 279 + PNAME(mux_24m_32k_p) = { "xin24m", "xin_osc0_div" }; 280 + PNAME(mux_armclkl_p) = { "xin24m", "pll_lpll", "lpll" }; 281 + PNAME(mux_armclkb_p) = { "xin24m", "pll_bpll", "bpll" }; 282 + PNAME(gpll_24m_p) = { "gpll", "xin24m" }; 283 + PNAME(cpll_24m_p) = { "cpll", "xin24m" }; 284 + PNAME(gpll_cpll_p) = { "gpll", "cpll" }; 285 + PNAME(gpll_spll_p) = { "gpll", "spll" }; 286 + PNAME(gpll_cpll_aupll_p) = { "gpll", "cpll", "aupll" }; 287 + PNAME(gpll_cpll_24m_p) = { "gpll", "cpll", "xin24m" }; 288 + PNAME(gpll_cpll_24m_spll_p) = { "gpll", "cpll", "xin24m", "spll" }; 289 + PNAME(gpll_cpll_aupll_24m_p) = { "gpll", "cpll", "aupll", "xin24m" }; 290 + PNAME(gpll_cpll_aupll_spll_p) = { "gpll", "cpll", "aupll", "spll" }; 291 + PNAME(gpll_cpll_aupll_spll_lpll_p) = { "gpll", "cpll", "aupll", "spll", "lpll_dummy" }; 292 + PNAME(gpll_cpll_spll_bpll_p) = { "gpll", "cpll", "spll", "bpll_dummy" }; 293 + PNAME(gpll_cpll_lpll_bpll_p) = { "gpll", "cpll", "lpll_dummy", "bpll_dummy" }; 294 + PNAME(gpll_spll_cpll_bpll_lpll_p) = { "gpll", "spll", "cpll", "bpll_dummy", "lpll_dummy" }; 295 + PNAME(gpll_cpll_vpll_aupll_24m_p) = { "gpll", "cpll", "vpll", "aupll", "xin24m" }; 296 + PNAME(gpll_cpll_spll_aupll_bpll_p) = { "gpll", "cpll", "spll", "aupll", "bpll_dummy" }; 297 + PNAME(gpll_cpll_spll_bpll_lpll_p) = { "gpll", "cpll", "spll", "bpll_dummy", "lpll_dummy" }; 298 + PNAME(gpll_cpll_spll_lpll_bpll_p) = { "gpll", "cpll", "spll", "lpll_dummy", "bpll_dummy" }; 299 + PNAME(gpll_cpll_vpll_bpll_lpll_p) = { "gpll", "cpll", "vpll", "bpll_dummy", "lpll_dummy" }; 300 + PNAME(gpll_spll_aupll_bpll_lpll_p) = { "gpll", "spll", "aupll", "bpll_dummy", "lpll_dummy" }; 301 + PNAME(gpll_spll_isppvtpll_bpll_lpll_p) = { "gpll", "spll", "isp_pvtpll", "bpll_dummy", "lpll_dummy" }; 302 + PNAME(gpll_cpll_spll_aupll_lpll_24m_p) = { "gpll", "cpll", "spll", "aupll", "lpll_dummy", "xin24m" }; 303 + PNAME(gpll_cpll_spll_vpll_bpll_lpll_p) = { "gpll", "cpll", "spll", "vpll", "bpll_dummy", "lpll_dummy" }; 304 + PNAME(cpll_vpll_lpll_bpll_p) = { "cpll", "vpll", "lpll_dummy", "bpll_dummy" }; 305 + PNAME(mux_24m_ccipvtpll_gpll_lpll_p) = { "xin24m", "cci_pvtpll", "gpll", "lpll" }; 306 + PNAME(mux_24m_spll_gpll_cpll_p) = {"xin24m", "spll", "gpll", "cpll" }; 307 + PNAME(audio_frac_int_p) = { "xin24m", "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2", 308 + "clk_audio_frac_3", "clk_audio_int_0", "clk_audio_int_1", "clk_audio_int_2" }; 309 + PNAME(audio_frac_p) = { "clk_audio_frac_0", "clk_audio_frac_1", "clk_audio_frac_2", "clk_audio_frac_3" }; 310 + PNAME(mux_100m_24m_p) = { "clk_cpll_div10", "xin24m" }; 311 + PNAME(mux_100m_50m_24m_p) = { "clk_cpll_div10", "clk_cpll_div20", "xin24m" }; 312 + PNAME(mux_100m_24m_lclk0_p) = { "clk_cpll_div10", "xin24m", "lclk_asrc_src_0" }; 313 + PNAME(mux_100m_24m_lclk1_p) = { "clk_cpll_div10", "xin24m", "lclk_asrc_src_1" }; 314 + PNAME(mux_150m_100m_50m_24m_p) = { "clk_gpll_div8", "clk_cpll_div10", "clk_cpll_div20", "xin24m" }; 315 + PNAME(mux_200m_100m_50m_24m_p) = { "clk_gpll_div6", "clk_cpll_div10", "clk_cpll_div20", "xin24m" }; 316 + PNAME(mux_400m_200m_100m_24m_p) = { "clk_gpll_div3", "clk_gpll_div6", "clk_cpll_div10", "xin24m" }; 317 + PNAME(mux_500m_250m_100m_24m_p) = { "clk_cpll_div2", "clk_cpll_div4", "clk_cpll_div10", "xin24m" }; 318 + PNAME(mux_600m_400m_300m_24m_p) = { "clk_gpll_div2", "clk_gpll_div3", "clk_gpll_div4", "xin24m" }; 319 + PNAME(mux_350m_175m_116m_24m_p) = { "clk_spll_div2", "clk_spll_div4", "clk_spll_div6", "xin24m" }; 320 + PNAME(mux_175m_116m_58m_24m_p) = { "clk_spll_div4", "clk_spll_div6", "clk_spll_div12", "xin24m" }; 321 + PNAME(mux_116m_58m_24m_p) = { "clk_spll_div6", "clk_spll_div12", "xin24m" }; 322 + PNAME(mclk_sai0_8ch_p) = { "mclk_sai0_8ch_src", "sai0_mclkin", "sai1_mclkin" }; 323 + PNAME(mclk_sai1_8ch_p) = { "mclk_sai1_8ch_src", "sai1_mclkin" }; 324 + PNAME(mclk_sai2_2ch_p) = { "mclk_sai2_2ch_src", "sai2_mclkin", "sai1_mclkin" }; 325 + PNAME(mclk_sai3_2ch_p) = { "mclk_sai3_2ch_src", "sai3_mclkin", "sai1_mclkin" }; 326 + PNAME(mclk_sai4_2ch_p) = { "mclk_sai4_2ch_src", "sai4_mclkin", "sai1_mclkin" }; 327 + PNAME(mclk_sai5_8ch_p) = { "mclk_sai5_8ch_src", "sai1_mclkin" }; 328 + PNAME(mclk_sai6_8ch_p) = { "mclk_sai6_8ch_src", "sai1_mclkin" }; 329 + PNAME(mclk_sai7_8ch_p) = { "mclk_sai7_8ch_src", "sai1_mclkin" }; 330 + PNAME(mclk_sai8_8ch_p) = { "mclk_sai8_8ch_src", "sai1_mclkin" }; 331 + PNAME(mclk_sai9_8ch_p) = { "mclk_sai9_8ch_src", "sai1_mclkin" }; 332 + PNAME(uart1_p) = { "clk_uart1_src_top", "xin24m" }; 333 + PNAME(pdm0_p) = { "clk_pdm0_src_top", "xin24m" }; 334 + PNAME(mclk_pdm0_p) = { "mclk_pdm0_src_top", "xin24m" }; 335 + PNAME(clk_gmac1_ptp_ref_src_p) = { "gpll", "cpll", "gmac1_ptp_refclk_in" }; 336 + PNAME(clk_gmac0_ptp_ref_src_p) = { "gpll", "cpll", "gmac0_ptp_refclk_in" }; 337 + PNAME(dclk_ebc_p) = { "gpll", "cpll", "vpll", "aupll", "lpll_dummy", 338 + "dclk_ebc_frac", "xin24m" }; 339 + PNAME(dclk_vp0_p) = { "dclk_vp0_src", "clk_hdmiphy_pixel0" }; 340 + PNAME(dclk_vp1_p) = { "dclk_vp1_src", "clk_hdmiphy_pixel0" }; 341 + PNAME(dclk_vp2_p) = { "dclk_vp2_src", "clk_hdmiphy_pixel0" }; 342 + PNAME(clk_uart_p) = { "gpll", "cpll", "aupll", "xin24m", "clk_uart_frac_0", 343 + "clk_uart_frac_1", "clk_uart_frac_2"}; 344 + PNAME(clk_freq_pwm1_p) = { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin", 345 + "sai3_mclkin", "sai4_mclkin", "sai_sclkin_freq"}; 346 + PNAME(clk_counter_pwm1_p) = { "sai0_mclkin", "sai1_mclkin", "sai2_mclkin", 347 + "sai3_mclkin", "sai4_mclkin", "sai_sclkin_counter"}; 348 + PNAME(sai_sclkin_freq_p) = { "sai0_sclk_in", "sai1_sclk_in", "sai2_sclk_in", 349 + "sai3_sclk_in", "sai4_sclk_in"}; 350 + PNAME(clk_ref_pcie0_phy_p) = { "clk_pcie_100m_src", "clk_pcie_100m_nduty_src", 351 + "xin24m"}; 352 + PNAME(hclk_vi_root_p) = { "clk_gpll_div6", "clk_cpll_div10", 353 + "aclk_vi_root_inter", "xin24m"}; 354 + PNAME(clk_ref_osc_mphy_p) = { "xin24m", "clk_gpio_mphy_i", "clk_ref_mphy_26m"}; 355 + PNAME(mux_pmu200m_pmu100m_pmu50m_24m_p) = { "clk_200m_pmu_src", "clk_100m_pmu_src", 356 + "clk_50m_pmu_src", "xin24m" }; 357 + PNAME(mux_pmu100m_pmu50m_24m_p) = { "clk_100m_pmu_src", "clk_50m_pmu_src", "xin24m" }; 358 + PNAME(mux_pmu100m_24m_32k_p) = { "clk_100m_pmu_src", "xin24m", "xin_osc0_div" }; 359 + PNAME(clk_phy_ref_src_p) = { "xin24m", "clk_pmuphy_ref_src" }; 360 + PNAME(clk_usbphy_ref_src_p) = { "usbphy0_24m", "usbphy1_24m" }; 361 + PNAME(clk_cpll_ref_src_p) = { "xin24m", "clk_usbphy_ref_src" }; 362 + PNAME(clk_aupll_ref_src_p) = { "xin24m", "clk_aupll_ref_io" }; 363 + 364 + static struct rockchip_pll_clock rk3576_pll_clks[] __initdata = { 365 + [bpll] = PLL(pll_rk3588_core, PLL_BPLL, "bpll", mux_pll_p, 366 + 0, RK3576_PLL_CON(0), 367 + RK3576_BPLL_MODE_CON0, 0, 15, 0, rk3576_pll_rates), 368 + [lpll] = PLL(pll_rk3588_core, PLL_LPLL, "lpll", mux_pll_p, 369 + 0, RK3576_LPLL_CON(16), 370 + RK3576_LPLL_MODE_CON0, 0, 15, 0, rk3576_pll_rates), 371 + [vpll] = PLL(pll_rk3588, PLL_VPLL, "vpll", mux_pll_p, 372 + 0, RK3576_PLL_CON(88), 373 + RK3576_MODE_CON0, 4, 15, 0, rk3576_pll_rates), 374 + [aupll] = PLL(pll_rk3588, PLL_AUPLL, "aupll", mux_pll_p, 375 + 0, RK3576_PLL_CON(96), 376 + RK3576_MODE_CON0, 6, 15, 0, rk3576_pll_rates), 377 + [cpll] = PLL(pll_rk3588, PLL_CPLL, "cpll", mux_pll_p, 378 + CLK_IGNORE_UNUSED, RK3576_PLL_CON(104), 379 + RK3576_MODE_CON0, 8, 15, 0, rk3576_pll_rates), 380 + [gpll] = PLL(pll_rk3588, PLL_GPLL, "gpll", mux_pll_p, 381 + CLK_IGNORE_UNUSED, RK3576_PLL_CON(112), 382 + RK3576_MODE_CON0, 2, 15, 0, rk3576_pll_rates), 383 + [ppll] = PLL(pll_rk3588_ddr, PLL_PPLL, "ppll", mux_pll_p, 384 + CLK_IGNORE_UNUSED, RK3576_PMU_PLL_CON(128), 385 + RK3576_MODE_CON0, 10, 15, 0, rk3576_ppll_rates), 386 + }; 387 + 388 + static struct rockchip_clk_branch rk3576_clk_branches[] __initdata = { 389 + /* 390 + * CRU Clock-Architecture 391 + */ 392 + /* fixed */ 393 + FACTOR(0, "xin12m", "xin24m", 0, 1, 2), 394 + 395 + COMPOSITE_FRAC(XIN_OSC0_DIV, "xin_osc0_div", "xin24m", CLK_IS_CRITICAL, 396 + RK3576_PMU_CLKSEL_CON(21), 0, 397 + RK3576_PMU_CLKGATE_CON(7), 11, GFLAGS), 398 + 399 + FACTOR(0, "clk_spll_div12", "spll", 0, 1, 12), 400 + FACTOR(0, "clk_spll_div6", "spll", 0, 1, 6), 401 + FACTOR(0, "clk_spll_div4", "spll", 0, 1, 4), 402 + FACTOR(0, "lpll_div2", "lpll", 0, 1, 2), 403 + FACTOR(0, "bpll_div4", "bpll", 0, 1, 4), 404 + 405 + /* top */ 406 + COMPOSITE(CLK_CPLL_DIV20, "clk_cpll_div20", gpll_cpll_p, CLK_IS_CRITICAL, 407 + RK3576_CLKSEL_CON(0), 5, 1, MFLAGS, 0, 5, DFLAGS, 408 + RK3576_CLKGATE_CON(0), 0, GFLAGS), 409 + COMPOSITE(CLK_CPLL_DIV10, "clk_cpll_div10", gpll_cpll_p, CLK_IS_CRITICAL, 410 + RK3576_CLKSEL_CON(0), 11, 1, MFLAGS, 6, 5, DFLAGS, 411 + RK3576_CLKGATE_CON(0), 1, GFLAGS), 412 + COMPOSITE(CLK_GPLL_DIV8, "clk_gpll_div8", gpll_cpll_p, CLK_IS_CRITICAL, 413 + RK3576_CLKSEL_CON(1), 5, 1, MFLAGS, 0, 5, DFLAGS, 414 + RK3576_CLKGATE_CON(0), 2, GFLAGS), 415 + COMPOSITE(CLK_GPLL_DIV6, "clk_gpll_div6", gpll_cpll_p, CLK_IS_CRITICAL, 416 + RK3576_CLKSEL_CON(1), 11, 1, MFLAGS, 6, 5, DFLAGS, 417 + RK3576_CLKGATE_CON(0), 3, GFLAGS), 418 + COMPOSITE(CLK_CPLL_DIV4, "clk_cpll_div4", gpll_cpll_p, CLK_IS_CRITICAL, 419 + RK3576_CLKSEL_CON(2), 5, 1, MFLAGS, 0, 5, DFLAGS, 420 + RK3576_CLKGATE_CON(0), 4, GFLAGS), 421 + COMPOSITE(CLK_GPLL_DIV4, "clk_gpll_div4", gpll_cpll_p, CLK_IS_CRITICAL, 422 + RK3576_CLKSEL_CON(2), 11, 1, MFLAGS, 6, 5, DFLAGS, 423 + RK3576_CLKGATE_CON(0), 5, GFLAGS), 424 + COMPOSITE(CLK_SPLL_DIV2, "clk_spll_div2", gpll_cpll_spll_bpll_p, CLK_IS_CRITICAL, 425 + RK3576_CLKSEL_CON(3), 5, 2, MFLAGS, 0, 5, DFLAGS, 426 + RK3576_CLKGATE_CON(0), 6, GFLAGS), 427 + COMPOSITE(CLK_GPLL_DIV3, "clk_gpll_div3", gpll_cpll_p, CLK_IS_CRITICAL, 428 + RK3576_CLKSEL_CON(3), 12, 1, MFLAGS, 7, 5, DFLAGS, 429 + RK3576_CLKGATE_CON(0), 7, GFLAGS), 430 + COMPOSITE(CLK_CPLL_DIV2, "clk_cpll_div2", gpll_cpll_p, CLK_IS_CRITICAL, 431 + RK3576_CLKSEL_CON(4), 11, 1, MFLAGS, 6, 5, DFLAGS, 432 + RK3576_CLKGATE_CON(0), 9, GFLAGS), 433 + COMPOSITE(CLK_GPLL_DIV2, "clk_gpll_div2", gpll_cpll_p, CLK_IS_CRITICAL, 434 + RK3576_CLKSEL_CON(5), 5, 1, MFLAGS, 0, 5, DFLAGS, 435 + RK3576_CLKGATE_CON(0), 10, GFLAGS), 436 + COMPOSITE(CLK_SPLL_DIV1, "clk_spll_div1", gpll_cpll_spll_bpll_lpll_p, CLK_IS_CRITICAL, 437 + RK3576_CLKSEL_CON(6), 5, 3, MFLAGS, 0, 5, DFLAGS, 438 + RK3576_CLKGATE_CON(0), 12, GFLAGS), 439 + COMPOSITE_NODIV(PCLK_TOP_ROOT, "pclk_top_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL, 440 + RK3576_CLKSEL_CON(8), 7, 2, MFLAGS, 441 + RK3576_CLKGATE_CON(1), 1, GFLAGS), 442 + COMPOSITE(ACLK_TOP, "aclk_top", gpll_cpll_aupll_p, CLK_IS_CRITICAL, 443 + RK3576_CLKSEL_CON(9), 5, 2, MFLAGS, 0, 5, DFLAGS, 444 + RK3576_CLKGATE_CON(1), 3, GFLAGS), 445 + COMPOSITE(ACLK_TOP_MID, "aclk_top_mid", gpll_cpll_p, CLK_IS_CRITICAL, 446 + RK3576_CLKSEL_CON(10), 5, 1, MFLAGS, 0, 5, DFLAGS, 447 + RK3576_CLKGATE_CON(1), 6, GFLAGS), 448 + COMPOSITE(ACLK_SECURE_HIGH, "aclk_secure_high", gpll_spll_aupll_bpll_lpll_p, CLK_IS_CRITICAL, 449 + RK3576_CLKSEL_CON(10), 11, 3, MFLAGS, 6, 5, DFLAGS, 450 + RK3576_CLKGATE_CON(1), 7, GFLAGS), 451 + COMPOSITE_NODIV(HCLK_TOP, "hclk_top", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 452 + RK3576_CLKSEL_CON(19), 2, 2, MFLAGS, 453 + RK3576_CLKGATE_CON(1), 14, GFLAGS), 454 + COMPOSITE_NODIV(HCLK_VO0VOP_CHANNEL, "hclk_vo0vop_channel", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 455 + RK3576_CLKSEL_CON(19), 6, 2, MFLAGS, 456 + RK3576_CLKGATE_CON(2), 0, GFLAGS), 457 + COMPOSITE(ACLK_VO0VOP_CHANNEL, "aclk_vo0vop_channel", gpll_cpll_lpll_bpll_p, CLK_IS_CRITICAL, 458 + RK3576_CLKSEL_CON(19), 12, 2, MFLAGS, 8, 4, DFLAGS, 459 + RK3576_CLKGATE_CON(2), 1, GFLAGS), 460 + MUX(CLK_AUDIO_FRAC_0_SRC, "clk_audio_frac_0_src", gpll_cpll_aupll_24m_p, 0, 461 + RK3576_CLKSEL_CON(13), 0, 2, MFLAGS), 462 + COMPOSITE_FRAC(CLK_AUDIO_FRAC_0, "clk_audio_frac_0", "clk_audio_frac_0_src", 0, 463 + RK3576_CLKSEL_CON(12), 0, 464 + RK3576_CLKGATE_CON(1), 10, GFLAGS), 465 + MUX(CLK_AUDIO_FRAC_1_SRC, "clk_audio_frac_1_src", gpll_cpll_aupll_24m_p, 0, 466 + RK3576_CLKSEL_CON(15), 0, 2, MFLAGS), 467 + COMPOSITE_FRAC(CLK_AUDIO_FRAC_1, "clk_audio_frac_1", "clk_audio_frac_1_src", 0, 468 + RK3576_CLKSEL_CON(14), 0, 469 + RK3576_CLKGATE_CON(1), 11, GFLAGS), 470 + MUX(CLK_AUDIO_FRAC_2_SRC, "clk_audio_frac_2_src", gpll_cpll_aupll_24m_p, 0, 471 + RK3576_CLKSEL_CON(17), 0, 2, MFLAGS), 472 + COMPOSITE_FRAC(CLK_AUDIO_FRAC_2, "clk_audio_frac_2", "clk_audio_frac_2_src", 0, 473 + RK3576_CLKSEL_CON(16), 0, 474 + RK3576_CLKGATE_CON(1), 12, GFLAGS), 475 + MUX(CLK_AUDIO_FRAC_3_SRC, "clk_audio_frac_3_src", gpll_cpll_aupll_24m_p, 0, 476 + RK3576_CLKSEL_CON(19), 0, 2, MFLAGS), 477 + COMPOSITE_FRAC(CLK_AUDIO_FRAC_3, "clk_audio_frac_3", "clk_audio_frac_3_src", 0, 478 + RK3576_CLKSEL_CON(18), 0, 479 + RK3576_CLKGATE_CON(1), 13, GFLAGS), 480 + MUX(0, "clk_uart_frac_0_src", gpll_cpll_aupll_24m_p, 0, 481 + RK3576_CLKSEL_CON(22), 0, 2, MFLAGS), 482 + COMPOSITE_FRAC(CLK_UART_FRAC_0, "clk_uart_frac_0", "clk_uart_frac_0_src", 0, 483 + RK3576_CLKSEL_CON(21), 0, 484 + RK3576_CLKGATE_CON(2), 5, GFLAGS), 485 + MUX(0, "clk_uart_frac_1_src", gpll_cpll_aupll_24m_p, 0, 486 + RK3576_CLKSEL_CON(24), 0, 2, MFLAGS), 487 + COMPOSITE_FRAC(CLK_UART_FRAC_1, "clk_uart_frac_1", "clk_uart_frac_1_src", 0, 488 + RK3576_CLKSEL_CON(23), 0, 489 + RK3576_CLKGATE_CON(2), 6, GFLAGS), 490 + MUX(0, "clk_uart_frac_2_src", gpll_cpll_aupll_24m_p, 0, 491 + RK3576_CLKSEL_CON(26), 0, 2, MFLAGS), 492 + COMPOSITE_FRAC(CLK_UART_FRAC_2, "clk_uart_frac_2", "clk_uart_frac_2_src", 0, 493 + RK3576_CLKSEL_CON(25), 0, 494 + RK3576_CLKGATE_CON(2), 7, GFLAGS), 495 + COMPOSITE(CLK_UART1_SRC_TOP, "clk_uart1_src_top", clk_uart_p, 0, 496 + RK3576_CLKSEL_CON(27), 13, 3, MFLAGS, 5, 8, DFLAGS, 497 + RK3576_CLKGATE_CON(2), 13, GFLAGS), 498 + COMPOSITE_NOMUX(CLK_AUDIO_INT_0, "clk_audio_int_0", "gpll", 0, 499 + RK3576_CLKSEL_CON(28), 0, 5, DFLAGS, 500 + RK3576_CLKGATE_CON(2), 14, GFLAGS), 501 + COMPOSITE_NOMUX(CLK_AUDIO_INT_1, "clk_audio_int_1", "cpll", 0, 502 + RK3576_CLKSEL_CON(28), 5, 5, DFLAGS, 503 + RK3576_CLKGATE_CON(2), 15, GFLAGS), 504 + COMPOSITE_NOMUX(CLK_AUDIO_INT_2, "clk_audio_int_2", "aupll", 0, 505 + RK3576_CLKSEL_CON(28), 10, 5, DFLAGS, 506 + RK3576_CLKGATE_CON(3), 0, GFLAGS), 507 + COMPOSITE(CLK_PDM0_SRC_TOP, "clk_pdm0_src_top", audio_frac_int_p, 0, 508 + RK3576_CLKSEL_CON(29), 9, 3, MFLAGS, 0, 9, DFLAGS, 509 + RK3576_CLKGATE_CON(3), 2, GFLAGS), 510 + COMPOSITE_NOMUX(CLK_GMAC0_125M_SRC, "clk_gmac0_125m_src", "cpll", 0, 511 + RK3576_CLKSEL_CON(30), 10, 5, DFLAGS, 512 + RK3576_CLKGATE_CON(3), 6, GFLAGS), 513 + COMPOSITE_NOMUX(CLK_GMAC1_125M_SRC, "clk_gmac1_125m_src", "cpll", 0, 514 + RK3576_CLKSEL_CON(31), 0, 5, DFLAGS, 515 + RK3576_CLKGATE_CON(3), 7, GFLAGS), 516 + COMPOSITE(LCLK_ASRC_SRC_0, "lclk_asrc_src_0", audio_frac_p, 0, 517 + RK3576_CLKSEL_CON(31), 10, 2, MFLAGS, 5, 5, DFLAGS, 518 + RK3576_CLKGATE_CON(3), 10, GFLAGS), 519 + COMPOSITE(LCLK_ASRC_SRC_1, "lclk_asrc_src_1", audio_frac_p, 0, 520 + RK3576_CLKSEL_CON(32), 5, 2, MFLAGS, 0, 5, DFLAGS, 521 + RK3576_CLKGATE_CON(3), 11, GFLAGS), 522 + COMPOSITE(REF_CLK0_OUT_PLL, "ref_clk0_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0, 523 + RK3576_CLKSEL_CON(33), 8, 3, MFLAGS, 0, 8, DFLAGS, 524 + RK3576_CLKGATE_CON(4), 1, GFLAGS), 525 + COMPOSITE(REF_CLK1_OUT_PLL, "ref_clk1_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0, 526 + RK3576_CLKSEL_CON(34), 8, 3, MFLAGS, 0, 8, DFLAGS, 527 + RK3576_CLKGATE_CON(4), 2, GFLAGS), 528 + COMPOSITE(REF_CLK2_OUT_PLL, "ref_clk2_out_pll", gpll_cpll_spll_aupll_lpll_24m_p, 0, 529 + RK3576_CLKSEL_CON(35), 8, 3, MFLAGS, 0, 8, DFLAGS, 530 + RK3576_CLKGATE_CON(4), 3, GFLAGS), 531 + COMPOSITE(REFCLKO25M_GMAC0_OUT, "refclko25m_gmac0_out", gpll_cpll_p, 0, 532 + RK3576_CLKSEL_CON(36), 7, 1, MFLAGS, 0, 7, DFLAGS, 533 + RK3576_CLKGATE_CON(5), 10, GFLAGS), 534 + COMPOSITE(REFCLKO25M_GMAC1_OUT, "refclko25m_gmac1_out", gpll_cpll_p, 0, 535 + RK3576_CLKSEL_CON(36), 15, 1, MFLAGS, 8, 7, DFLAGS, 536 + RK3576_CLKGATE_CON(5), 11, GFLAGS), 537 + COMPOSITE(CLK_CIFOUT_OUT, "clk_cifout_out", gpll_cpll_24m_spll_p, 0, 538 + RK3576_CLKSEL_CON(37), 8, 2, MFLAGS, 0, 8, DFLAGS, 539 + RK3576_CLKGATE_CON(5), 12, GFLAGS), 540 + GATE(CLK_GMAC0_RMII_CRU, "clk_gmac0_rmii_cru", "clk_cpll_div20", 0, 541 + RK3576_CLKGATE_CON(5), 13, GFLAGS), 542 + GATE(CLK_GMAC1_RMII_CRU, "clk_gmac1_rmii_cru", "clk_cpll_div20", 0, 543 + RK3576_CLKGATE_CON(5), 14, GFLAGS), 544 + GATE(CLK_OTPC_AUTO_RD_G, "clk_otpc_auto_rd_g", "xin24m", 0, 545 + RK3576_CLKGATE_CON(5), 15, GFLAGS), 546 + COMPOSITE(CLK_MIPI_CAMERAOUT_M0, "clk_mipi_cameraout_m0", mux_24m_spll_gpll_cpll_p, 0, 547 + RK3576_CLKSEL_CON(38), 8, 2, MFLAGS, 0, 8, DFLAGS, 548 + RK3576_CLKGATE_CON(6), 3, GFLAGS), 549 + COMPOSITE(CLK_MIPI_CAMERAOUT_M1, "clk_mipi_cameraout_m1", mux_24m_spll_gpll_cpll_p, 0, 550 + RK3576_CLKSEL_CON(39), 8, 2, MFLAGS, 0, 8, DFLAGS, 551 + RK3576_CLKGATE_CON(6), 4, GFLAGS), 552 + COMPOSITE(CLK_MIPI_CAMERAOUT_M2, "clk_mipi_cameraout_m2", mux_24m_spll_gpll_cpll_p, 0, 553 + RK3576_CLKSEL_CON(40), 8, 2, MFLAGS, 0, 8, DFLAGS, 554 + RK3576_CLKGATE_CON(6), 5, GFLAGS), 555 + COMPOSITE(MCLK_PDM0_SRC_TOP, "mclk_pdm0_src_top", audio_frac_int_p, 0, 556 + RK3576_CLKSEL_CON(41), 7, 3, MFLAGS, 2, 5, DFLAGS, 557 + RK3576_CLKGATE_CON(6), 8, GFLAGS), 558 + 559 + /* bus */ 560 + COMPOSITE_NODIV(HCLK_BUS_ROOT, "hclk_bus_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 561 + RK3576_CLKSEL_CON(55), 0, 2, MFLAGS, 562 + RK3576_CLKGATE_CON(11), 0, GFLAGS), 563 + COMPOSITE_NODIV(PCLK_BUS_ROOT, "pclk_bus_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL, 564 + RK3576_CLKSEL_CON(55), 2, 2, MFLAGS, 565 + RK3576_CLKGATE_CON(11), 1, GFLAGS), 566 + COMPOSITE(ACLK_BUS_ROOT, "aclk_bus_root", gpll_cpll_p, CLK_IS_CRITICAL, 567 + RK3576_CLKSEL_CON(55), 9, 1, MFLAGS, 4, 5, DFLAGS, 568 + RK3576_CLKGATE_CON(11), 2, GFLAGS), 569 + GATE(HCLK_CAN0, "hclk_can0", "hclk_bus_root", 0, 570 + RK3576_CLKGATE_CON(11), 6, GFLAGS), 571 + COMPOSITE(CLK_CAN0, "clk_can0", gpll_cpll_24m_p, 0, 572 + RK3576_CLKSEL_CON(56), 5, 2, MFLAGS, 0, 5, DFLAGS, 573 + RK3576_CLKGATE_CON(11), 7, GFLAGS), 574 + GATE(HCLK_CAN1, "hclk_can1", "hclk_bus_root", 0, 575 + RK3576_CLKGATE_CON(11), 8, GFLAGS), 576 + COMPOSITE(CLK_CAN1, "clk_can1", gpll_cpll_24m_p, 0, 577 + RK3576_CLKSEL_CON(56), 12, 2, MFLAGS, 7, 5, DFLAGS, 578 + RK3576_CLKGATE_CON(11), 9, GFLAGS), 579 + GATE(CLK_KEY_SHIFT, "clk_key_shift", "xin24m", CLK_IS_CRITICAL, 580 + RK3576_CLKGATE_CON(11), 15, GFLAGS), 581 + GATE(PCLK_I2C1, "pclk_i2c1", "pclk_bus_root", 0, 582 + RK3576_CLKGATE_CON(12), 0, GFLAGS), 583 + GATE(PCLK_I2C2, "pclk_i2c2", "pclk_bus_root", 0, 584 + RK3576_CLKGATE_CON(12), 1, GFLAGS), 585 + GATE(PCLK_I2C3, "pclk_i2c3", "pclk_bus_root", 0, 586 + RK3576_CLKGATE_CON(12), 2, GFLAGS), 587 + GATE(PCLK_I2C4, "pclk_i2c4", "pclk_bus_root", 0, 588 + RK3576_CLKGATE_CON(12), 3, GFLAGS), 589 + GATE(PCLK_I2C5, "pclk_i2c5", "pclk_bus_root", 0, 590 + RK3576_CLKGATE_CON(12), 4, GFLAGS), 591 + GATE(PCLK_I2C6, "pclk_i2c6", "pclk_bus_root", 0, 592 + RK3576_CLKGATE_CON(12), 5, GFLAGS), 593 + GATE(PCLK_I2C7, "pclk_i2c7", "pclk_bus_root", 0, 594 + RK3576_CLKGATE_CON(12), 6, GFLAGS), 595 + GATE(PCLK_I2C8, "pclk_i2c8", "pclk_bus_root", 0, 596 + RK3576_CLKGATE_CON(12), 7, GFLAGS), 597 + GATE(PCLK_I2C9, "pclk_i2c9", "pclk_bus_root", 0, 598 + RK3576_CLKGATE_CON(12), 8, GFLAGS), 599 + GATE(PCLK_WDT_BUSMCU, "pclk_wdt_busmcu", "pclk_bus_root", 0, 600 + RK3576_CLKGATE_CON(12), 9, GFLAGS), 601 + GATE(TCLK_WDT_BUSMCU, "tclk_wdt_busmcu", "xin24m", 0, 602 + RK3576_CLKGATE_CON(12), 10, GFLAGS), 603 + GATE(ACLK_GIC, "aclk_gic", "aclk_bus_root", CLK_IS_CRITICAL, 604 + RK3576_CLKGATE_CON(12), 11, GFLAGS), 605 + COMPOSITE_NODIV(CLK_I2C1, "clk_i2c1", mux_200m_100m_50m_24m_p, 0, 606 + RK3576_CLKSEL_CON(57), 0, 2, MFLAGS, 607 + RK3576_CLKGATE_CON(12), 12, GFLAGS), 608 + COMPOSITE_NODIV(CLK_I2C2, "clk_i2c2", mux_200m_100m_50m_24m_p, 0, 609 + RK3576_CLKSEL_CON(57), 2, 2, MFLAGS, 610 + RK3576_CLKGATE_CON(12), 13, GFLAGS), 611 + COMPOSITE_NODIV(CLK_I2C3, "clk_i2c3", mux_200m_100m_50m_24m_p, 0, 612 + RK3576_CLKSEL_CON(57), 4, 2, MFLAGS, 613 + RK3576_CLKGATE_CON(12), 14, GFLAGS), 614 + COMPOSITE_NODIV(CLK_I2C4, "clk_i2c4", mux_200m_100m_50m_24m_p, 0, 615 + RK3576_CLKSEL_CON(57), 6, 2, MFLAGS, 616 + RK3576_CLKGATE_CON(12), 15, GFLAGS), 617 + COMPOSITE_NODIV(CLK_I2C5, "clk_i2c5", mux_200m_100m_50m_24m_p, 0, 618 + RK3576_CLKSEL_CON(57), 8, 2, MFLAGS, 619 + RK3576_CLKGATE_CON(13), 0, GFLAGS), 620 + COMPOSITE_NODIV(CLK_I2C6, "clk_i2c6", mux_200m_100m_50m_24m_p, 0, 621 + RK3576_CLKSEL_CON(57), 10, 2, MFLAGS, 622 + RK3576_CLKGATE_CON(13), 1, GFLAGS), 623 + COMPOSITE_NODIV(CLK_I2C7, "clk_i2c7", mux_200m_100m_50m_24m_p, 0, 624 + RK3576_CLKSEL_CON(57), 12, 2, MFLAGS, 625 + RK3576_CLKGATE_CON(13), 2, GFLAGS), 626 + COMPOSITE_NODIV(CLK_I2C8, "clk_i2c8", mux_200m_100m_50m_24m_p, 0, 627 + RK3576_CLKSEL_CON(57), 14, 2, MFLAGS, 628 + RK3576_CLKGATE_CON(13), 3, GFLAGS), 629 + COMPOSITE_NODIV(CLK_I2C9, "clk_i2c9", mux_200m_100m_50m_24m_p, 0, 630 + RK3576_CLKSEL_CON(58), 0, 2, MFLAGS, 631 + RK3576_CLKGATE_CON(13), 4, GFLAGS), 632 + GATE(PCLK_SARADC, "pclk_saradc", "pclk_bus_root", 0, 633 + RK3576_CLKGATE_CON(13), 6, GFLAGS), 634 + COMPOSITE(CLK_SARADC, "clk_saradc", gpll_24m_p, 0, 635 + RK3576_CLKSEL_CON(58), 12, 1, MFLAGS, 4, 8, DFLAGS, 636 + RK3576_CLKGATE_CON(13), 7, GFLAGS), 637 + GATE(PCLK_TSADC, "pclk_tsadc", "pclk_bus_root", 0, 638 + RK3576_CLKGATE_CON(13), 8, GFLAGS), 639 + COMPOSITE_NOMUX(CLK_TSADC, "clk_tsadc", "xin24m", 0, 640 + RK3576_CLKSEL_CON(59), 0, 8, DFLAGS, 641 + RK3576_CLKGATE_CON(13), 9, GFLAGS), 642 + GATE(PCLK_UART0, "pclk_uart0", "pclk_bus_root", 0, 643 + RK3576_CLKGATE_CON(13), 10, GFLAGS), 644 + GATE(PCLK_UART2, "pclk_uart2", "pclk_bus_root", 0, 645 + RK3576_CLKGATE_CON(13), 11, GFLAGS), 646 + GATE(PCLK_UART3, "pclk_uart3", "pclk_bus_root", 0, 647 + RK3576_CLKGATE_CON(13), 12, GFLAGS), 648 + GATE(PCLK_UART4, "pclk_uart4", "pclk_bus_root", 0, 649 + RK3576_CLKGATE_CON(13), 13, GFLAGS), 650 + GATE(PCLK_UART5, "pclk_uart5", "pclk_bus_root", 0, 651 + RK3576_CLKGATE_CON(13), 14, GFLAGS), 652 + GATE(PCLK_UART6, "pclk_uart6", "pclk_bus_root", 0, 653 + RK3576_CLKGATE_CON(13), 15, GFLAGS), 654 + GATE(PCLK_UART7, "pclk_uart7", "pclk_bus_root", 0, 655 + RK3576_CLKGATE_CON(14), 0, GFLAGS), 656 + GATE(PCLK_UART8, "pclk_uart8", "pclk_bus_root", 0, 657 + RK3576_CLKGATE_CON(14), 1, GFLAGS), 658 + GATE(PCLK_UART9, "pclk_uart9", "pclk_bus_root", 0, 659 + RK3576_CLKGATE_CON(14), 2, GFLAGS), 660 + GATE(PCLK_UART10, "pclk_uart10", "pclk_bus_root", 0, 661 + RK3576_CLKGATE_CON(14), 3, GFLAGS), 662 + GATE(PCLK_UART11, "pclk_uart11", "pclk_bus_root", 0, 663 + RK3576_CLKGATE_CON(14), 4, GFLAGS), 664 + COMPOSITE(SCLK_UART0, "sclk_uart0", clk_uart_p, 0, 665 + RK3576_CLKSEL_CON(60), 8, 3, MFLAGS, 0, 8, DFLAGS, 666 + RK3576_CLKGATE_CON(14), 5, GFLAGS), 667 + COMPOSITE(SCLK_UART2, "sclk_uart2", clk_uart_p, 0, 668 + RK3576_CLKSEL_CON(61), 8, 3, MFLAGS, 0, 8, DFLAGS, 669 + RK3576_CLKGATE_CON(14), 6, GFLAGS), 670 + COMPOSITE(SCLK_UART3, "sclk_uart3", clk_uart_p, 0, 671 + RK3576_CLKSEL_CON(62), 8, 3, MFLAGS, 0, 8, DFLAGS, 672 + RK3576_CLKGATE_CON(14), 9, GFLAGS), 673 + COMPOSITE(SCLK_UART4, "sclk_uart4", clk_uart_p, 0, 674 + RK3576_CLKSEL_CON(63), 8, 3, MFLAGS, 0, 8, DFLAGS, 675 + RK3576_CLKGATE_CON(14), 12, GFLAGS), 676 + COMPOSITE(SCLK_UART5, "sclk_uart5", clk_uart_p, 0, 677 + RK3576_CLKSEL_CON(64), 8, 3, MFLAGS, 0, 8, DFLAGS, 678 + RK3576_CLKGATE_CON(14), 15, GFLAGS), 679 + COMPOSITE(SCLK_UART6, "sclk_uart6", clk_uart_p, 0, 680 + RK3576_CLKSEL_CON(65), 8, 3, MFLAGS, 0, 8, DFLAGS, 681 + RK3576_CLKGATE_CON(15), 2, GFLAGS), 682 + COMPOSITE(SCLK_UART7, "sclk_uart7", clk_uart_p, 0, 683 + RK3576_CLKSEL_CON(66), 8, 3, MFLAGS, 0, 8, DFLAGS, 684 + RK3576_CLKGATE_CON(15), 5, GFLAGS), 685 + COMPOSITE(SCLK_UART8, "sclk_uart8", clk_uart_p, 0, 686 + RK3576_CLKSEL_CON(67), 8, 3, MFLAGS, 0, 8, DFLAGS, 687 + RK3576_CLKGATE_CON(15), 8, GFLAGS), 688 + COMPOSITE(SCLK_UART9, "sclk_uart9", clk_uart_p, 0, 689 + RK3576_CLKSEL_CON(68), 8, 3, MFLAGS, 0, 8, DFLAGS, 690 + RK3576_CLKGATE_CON(15), 9, GFLAGS), 691 + COMPOSITE(SCLK_UART10, "sclk_uart10", clk_uart_p, 0, 692 + RK3576_CLKSEL_CON(69), 8, 3, MFLAGS, 0, 8, DFLAGS, 693 + RK3576_CLKGATE_CON(15), 10, GFLAGS), 694 + COMPOSITE(SCLK_UART11, "sclk_uart11", clk_uart_p, 0, 695 + RK3576_CLKSEL_CON(70), 8, 3, MFLAGS, 0, 8, DFLAGS, 696 + RK3576_CLKGATE_CON(15), 11, GFLAGS), 697 + GATE(PCLK_SPI0, "pclk_spi0", "pclk_bus_root", 0, 698 + RK3576_CLKGATE_CON(15), 13, GFLAGS), 699 + GATE(PCLK_SPI1, "pclk_spi1", "pclk_bus_root", 0, 700 + RK3576_CLKGATE_CON(15), 14, GFLAGS), 701 + GATE(PCLK_SPI2, "pclk_spi2", "pclk_bus_root", 0, 702 + RK3576_CLKGATE_CON(15), 15, GFLAGS), 703 + GATE(PCLK_SPI3, "pclk_spi3", "pclk_bus_root", 0, 704 + RK3576_CLKGATE_CON(16), 0, GFLAGS), 705 + GATE(PCLK_SPI4, "pclk_spi4", "pclk_bus_root", 0, 706 + RK3576_CLKGATE_CON(16), 1, GFLAGS), 707 + COMPOSITE_NODIV(CLK_SPI0, "clk_spi0", mux_200m_100m_50m_24m_p, 0, 708 + RK3576_CLKSEL_CON(70), 13, 2, MFLAGS, 709 + RK3576_CLKGATE_CON(16), 2, GFLAGS), 710 + COMPOSITE_NODIV(CLK_SPI1, "clk_spi1", mux_200m_100m_50m_24m_p, 0, 711 + RK3576_CLKSEL_CON(71), 0, 2, MFLAGS, 712 + RK3576_CLKGATE_CON(16), 3, GFLAGS), 713 + COMPOSITE_NODIV(CLK_SPI2, "clk_spi2", mux_200m_100m_50m_24m_p, 0, 714 + RK3576_CLKSEL_CON(71), 2, 2, MFLAGS, 715 + RK3576_CLKGATE_CON(16), 4, GFLAGS), 716 + COMPOSITE_NODIV(CLK_SPI3, "clk_spi3", mux_200m_100m_50m_24m_p, 0, 717 + RK3576_CLKSEL_CON(71), 4, 2, MFLAGS, 718 + RK3576_CLKGATE_CON(16), 5, GFLAGS), 719 + COMPOSITE_NODIV(CLK_SPI4, "clk_spi4", mux_200m_100m_50m_24m_p, 0, 720 + RK3576_CLKSEL_CON(71), 6, 2, MFLAGS, 721 + RK3576_CLKGATE_CON(16), 6, GFLAGS), 722 + GATE(PCLK_WDT0, "pclk_wdt0", "pclk_bus_root", 0, 723 + RK3576_CLKGATE_CON(16), 7, GFLAGS), 724 + GATE(TCLK_WDT0, "tclk_wdt0", "xin24m", 0, 725 + RK3576_CLKGATE_CON(16), 8, GFLAGS), 726 + GATE(PCLK_PWM1, "pclk_pwm1", "pclk_bus_root", 0, 727 + RK3576_CLKGATE_CON(16), 10, GFLAGS), 728 + COMPOSITE_NODIV(CLK_PWM1, "clk_pwm1", mux_100m_50m_24m_p, 0, 729 + RK3576_CLKSEL_CON(71), 8, 2, MFLAGS, 730 + RK3576_CLKGATE_CON(16), 11, GFLAGS), 731 + GATE(CLK_OSC_PWM1, "clk_osc_pwm1", "xin24m", 0, 732 + RK3576_CLKGATE_CON(16), 13, GFLAGS), 733 + GATE(CLK_RC_PWM1, "clk_rc_pwm1", "clk_pvtm_clkout", 0, 734 + RK3576_CLKGATE_CON(16), 15, GFLAGS), 735 + GATE(PCLK_BUSTIMER0, "pclk_bustimer0", "pclk_bus_root", 0, 736 + RK3576_CLKGATE_CON(17), 3, GFLAGS), 737 + GATE(PCLK_BUSTIMER1, "pclk_bustimer1", "pclk_bus_root", 0, 738 + RK3576_CLKGATE_CON(17), 4, GFLAGS), 739 + COMPOSITE_NODIV(CLK_TIMER0_ROOT, "clk_timer0_root", mux_100m_24m_p, 0, 740 + RK3576_CLKSEL_CON(71), 14, 1, MFLAGS, 741 + RK3576_CLKGATE_CON(17), 5, GFLAGS), 742 + GATE(CLK_TIMER0, "clk_timer0", "clk_timer0_root", 0, 743 + RK3576_CLKGATE_CON(17), 6, GFLAGS), 744 + GATE(CLK_TIMER1, "clk_timer1", "clk_timer0_root", 0, 745 + RK3576_CLKGATE_CON(17), 7, GFLAGS), 746 + GATE(CLK_TIMER2, "clk_timer2", "clk_timer0_root", 0, 747 + RK3576_CLKGATE_CON(17), 8, GFLAGS), 748 + GATE(CLK_TIMER3, "clk_timer3", "clk_timer0_root", 0, 749 + RK3576_CLKGATE_CON(17), 9, GFLAGS), 750 + GATE(CLK_TIMER4, "clk_timer4", "clk_timer0_root", 0, 751 + RK3576_CLKGATE_CON(17), 10, GFLAGS), 752 + GATE(CLK_TIMER5, "clk_timer5", "clk_timer0_root", 0, 753 + RK3576_CLKGATE_CON(17), 11, GFLAGS), 754 + GATE(PCLK_MAILBOX0, "pclk_mailbox0", "pclk_bus_root", 0, 755 + RK3576_CLKGATE_CON(17), 13, GFLAGS), 756 + GATE(PCLK_GPIO1, "pclk_gpio1", "pclk_bus_root", 0, 757 + RK3576_CLKGATE_CON(17), 15, GFLAGS), 758 + GATE(DBCLK_GPIO1, "dbclk_gpio1", "xin24m", 0, 759 + RK3576_CLKGATE_CON(18), 0, GFLAGS), 760 + GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_bus_root", 0, 761 + RK3576_CLKGATE_CON(18), 1, GFLAGS), 762 + GATE(DBCLK_GPIO2, "dbclk_gpio2", "xin24m", 0, 763 + RK3576_CLKGATE_CON(18), 2, GFLAGS), 764 + GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_bus_root", 0, 765 + RK3576_CLKGATE_CON(18), 3, GFLAGS), 766 + GATE(DBCLK_GPIO3, "dbclk_gpio3", "xin24m", 0, 767 + RK3576_CLKGATE_CON(18), 4, GFLAGS), 768 + GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_bus_root", 0, 769 + RK3576_CLKGATE_CON(18), 5, GFLAGS), 770 + GATE(DBCLK_GPIO4, "dbclk_gpio4", "xin24m", 0, 771 + RK3576_CLKGATE_CON(18), 6, GFLAGS), 772 + GATE(ACLK_DECOM, "aclk_decom", "aclk_bus_root", 0, 773 + RK3576_CLKGATE_CON(18), 7, GFLAGS), 774 + GATE(PCLK_DECOM, "pclk_decom", "pclk_bus_root", 0, 775 + RK3576_CLKGATE_CON(18), 8, GFLAGS), 776 + COMPOSITE(DCLK_DECOM, "dclk_decom", gpll_spll_p, 0, 777 + RK3576_CLKSEL_CON(72), 5, 1, MFLAGS, 0, 5, DFLAGS, 778 + RK3576_CLKGATE_CON(18), 9, GFLAGS), 779 + COMPOSITE_NODIV(CLK_TIMER1_ROOT, "clk_timer1_root", mux_100m_24m_p, 0, 780 + RK3576_CLKSEL_CON(72), 6, 1, MFLAGS, 781 + RK3576_CLKGATE_CON(18), 10, GFLAGS), 782 + GATE(CLK_TIMER6, "clk_timer6", "clk_timer1_root", 0, 783 + RK3576_CLKGATE_CON(18), 11, GFLAGS), 784 + COMPOSITE(CLK_TIMER7, "clk_timer7", mux_100m_24m_lclk0_p, 0, 785 + RK3576_CLKSEL_CON(72), 12, 2, MFLAGS, 7, 5, DFLAGS, 786 + RK3576_CLKGATE_CON(18), 12, GFLAGS), 787 + COMPOSITE(CLK_TIMER8, "clk_timer8", mux_100m_24m_lclk1_p, 0, 788 + RK3576_CLKSEL_CON(73), 5, 2, MFLAGS, 0, 5, DFLAGS, 789 + RK3576_CLKGATE_CON(18), 13, GFLAGS), 790 + GATE(CLK_TIMER9, "clk_timer9", "clk_timer1_root", 0, 791 + RK3576_CLKGATE_CON(18), 14, GFLAGS), 792 + GATE(CLK_TIMER10, "clk_timer10", "clk_timer1_root", 0, 793 + RK3576_CLKGATE_CON(18), 15, GFLAGS), 794 + GATE(CLK_TIMER11, "clk_timer11", "clk_timer1_root", 0, 795 + RK3576_CLKGATE_CON(19), 0, GFLAGS), 796 + GATE(ACLK_DMAC0, "aclk_dmac0", "aclk_bus_root", 0, 797 + RK3576_CLKGATE_CON(19), 1, GFLAGS), 798 + GATE(ACLK_DMAC1, "aclk_dmac1", "aclk_bus_root", 0, 799 + RK3576_CLKGATE_CON(19), 2, GFLAGS), 800 + GATE(ACLK_DMAC2, "aclk_dmac2", "aclk_bus_root", 0, 801 + RK3576_CLKGATE_CON(19), 3, GFLAGS), 802 + GATE(ACLK_SPINLOCK, "aclk_spinlock", "aclk_bus_root", 0, 803 + RK3576_CLKGATE_CON(19), 4, GFLAGS), 804 + GATE(HCLK_I3C0, "hclk_i3c0", "hclk_bus_root", 0, 805 + RK3576_CLKGATE_CON(19), 7, GFLAGS), 806 + GATE(HCLK_I3C1, "hclk_i3c1", "hclk_bus_root", 0, 807 + RK3576_CLKGATE_CON(19), 9, GFLAGS), 808 + COMPOSITE_NODIV(HCLK_BUS_CM0_ROOT, "hclk_bus_cm0_root", mux_400m_200m_100m_24m_p, 0, 809 + RK3576_CLKSEL_CON(73), 13, 2, MFLAGS, 810 + RK3576_CLKGATE_CON(19), 10, GFLAGS), 811 + GATE(FCLK_BUS_CM0_CORE, "fclk_bus_cm0_core", "hclk_bus_cm0_root", 0, 812 + RK3576_CLKGATE_CON(19), 12, GFLAGS), 813 + COMPOSITE(CLK_BUS_CM0_RTC, "clk_bus_cm0_rtc", mux_24m_32k_p, 0, 814 + RK3576_CLKSEL_CON(74), 5, 1, MFLAGS, 0, 5, DFLAGS, 815 + RK3576_CLKGATE_CON(19), 14, GFLAGS), 816 + GATE(PCLK_PMU2, "pclk_pmu2", "pclk_bus_root", CLK_IS_CRITICAL, 817 + RK3576_CLKGATE_CON(19), 15, GFLAGS), 818 + GATE(PCLK_PWM2, "pclk_pwm2", "pclk_bus_root", 0, 819 + RK3576_CLKGATE_CON(20), 4, GFLAGS), 820 + COMPOSITE_NODIV(CLK_PWM2, "clk_pwm2", mux_100m_50m_24m_p, 0, 821 + RK3576_CLKSEL_CON(74), 6, 2, MFLAGS, 822 + RK3576_CLKGATE_CON(20), 5, GFLAGS), 823 + GATE(CLK_OSC_PWM2, "clk_osc_pwm2", "xin24m", 0, 824 + RK3576_CLKGATE_CON(20), 7, GFLAGS), 825 + GATE(CLK_RC_PWM2, "clk_rc_pwm2", "clk_pvtm_clkout", 0, 826 + RK3576_CLKGATE_CON(20), 6, GFLAGS), 827 + COMPOSITE_NODIV(CLK_FREQ_PWM1, "clk_freq_pwm1", clk_freq_pwm1_p, 0, 828 + RK3576_CLKSEL_CON(74), 8, 3, MFLAGS, 829 + RK3576_CLKGATE_CON(20), 8, GFLAGS), 830 + COMPOSITE_NODIV(CLK_COUNTER_PWM1, "clk_counter_pwm1", clk_counter_pwm1_p, 0, 831 + RK3576_CLKSEL_CON(74), 11, 3, MFLAGS, 832 + RK3576_CLKGATE_CON(20), 9, GFLAGS), 833 + COMPOSITE_NODIV(SAI_SCLKIN_FREQ, "sai_sclkin_freq", sai_sclkin_freq_p, 0, 834 + RK3576_CLKSEL_CON(75), 0, 3, MFLAGS, 835 + RK3576_CLKGATE_CON(20), 10, GFLAGS), 836 + COMPOSITE_NODIV(SAI_SCLKIN_COUNTER, "sai_sclkin_counter", sai_sclkin_freq_p, 0, 837 + RK3576_CLKSEL_CON(75), 3, 3, MFLAGS, 838 + RK3576_CLKGATE_CON(20), 11, GFLAGS), 839 + COMPOSITE(CLK_I3C0, "clk_i3c0", gpll_cpll_aupll_spll_p, 0, 840 + RK3576_CLKSEL_CON(78), 5, 2, MFLAGS, 0, 5, DFLAGS, 841 + RK3576_CLKGATE_CON(20), 12, GFLAGS), 842 + COMPOSITE(CLK_I3C1, "clk_i3c1", gpll_cpll_aupll_spll_p, 0, 843 + RK3576_CLKSEL_CON(78), 12, 2, MFLAGS, 7, 5, DFLAGS, 844 + RK3576_CLKGATE_CON(20), 13, GFLAGS), 845 + GATE(PCLK_CSIDPHY1, "pclk_csidphy1", "pclk_bus_root", 0, 846 + RK3576_CLKGATE_CON(40), 2, GFLAGS), 847 + 848 + /* cci */ 849 + COMPOSITE(PCLK_CCI_ROOT, "pclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, CLK_IS_CRITICAL, 850 + RK3576_CCI_CLKSEL_CON(4), 5, 2, MFLAGS, 0, 5, DFLAGS, 851 + RK3576_CCI_CLKGATE_CON(1), 10, GFLAGS), 852 + COMPOSITE(ACLK_CCI_ROOT, "aclk_cci_root", mux_24m_ccipvtpll_gpll_lpll_p, CLK_IS_CRITICAL, 853 + RK3576_CCI_CLKSEL_CON(4), 12, 2, MFLAGS, 7, 5, DFLAGS, 854 + RK3576_CCI_CLKGATE_CON(1), 11, GFLAGS), 855 + 856 + /* center */ 857 + COMPOSITE_DIV_OFFSET(ACLK_CENTER_ROOT, "aclk_center_root", gpll_cpll_spll_aupll_bpll_p, CLK_IS_CRITICAL, 858 + RK3576_CLKSEL_CON(168), 5, 3, MFLAGS, 859 + RK3576_CLKSEL_CON(167), 9, 5, DFLAGS, 860 + RK3576_CLKGATE_CON(72), 0, GFLAGS), 861 + COMPOSITE_NODIV(ACLK_CENTER_LOW_ROOT, "aclk_center_low_root", mux_500m_250m_100m_24m_p, CLK_IS_CRITICAL, 862 + RK3576_CLKSEL_CON(168), 8, 2, MFLAGS, 863 + RK3576_CLKGATE_CON(72), 1, GFLAGS), 864 + COMPOSITE_NODIV(HCLK_CENTER_ROOT, "hclk_center_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 865 + RK3576_CLKSEL_CON(168), 10, 2, MFLAGS, 866 + RK3576_CLKGATE_CON(72), 2, GFLAGS), 867 + COMPOSITE_NODIV(PCLK_CENTER_ROOT, "pclk_center_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 868 + RK3576_CLKSEL_CON(168), 12, 2, MFLAGS, 869 + RK3576_CLKGATE_CON(72), 3, GFLAGS), 870 + GATE(ACLK_DMA2DDR, "aclk_dma2ddr", "aclk_center_root", CLK_IGNORE_UNUSED, 871 + RK3576_CLKGATE_CON(72), 5, GFLAGS), 872 + GATE(ACLK_DDR_SHAREMEM, "aclk_ddr_sharemem", "aclk_center_low_root", CLK_IGNORE_UNUSED, 873 + RK3576_CLKGATE_CON(72), 6, GFLAGS), 874 + GATE(PCLK_DMA2DDR, "pclk_dma2ddr", "pclk_center_root", CLK_IGNORE_UNUSED, 875 + RK3576_CLKGATE_CON(72), 10, GFLAGS), 876 + GATE(PCLK_SHAREMEM, "pclk_sharemem", "pclk_center_root", CLK_IGNORE_UNUSED, 877 + RK3576_CLKGATE_CON(72), 11, GFLAGS), 878 + 879 + /* ddr */ 880 + COMPOSITE(PCLK_DDR_ROOT, "pclk_ddr_root", gpll_cpll_24m_p, CLK_IS_CRITICAL, 881 + RK3576_CLKSEL_CON(76), 5, 2, MFLAGS, 0, 5, DFLAGS, 882 + RK3576_CLKGATE_CON(21), 0, GFLAGS), 883 + GATE(PCLK_DDR_MON_CH0, "pclk_ddr_mon_ch0", "pclk_ddr_root", CLK_IGNORE_UNUSED, 884 + RK3576_CLKGATE_CON(21), 1, GFLAGS), 885 + COMPOSITE(HCLK_DDR_ROOT, "hclk_ddr_root", gpll_cpll_p, CLK_IGNORE_UNUSED, 886 + RK3576_CLKSEL_CON(77), 5, 1, MFLAGS, 0, 5, DFLAGS, 887 + RK3576_CLKGATE_CON(22), 11, GFLAGS), 888 + GATE(FCLK_DDR_CM0_CORE, "fclk_ddr_cm0_core", "hclk_ddr_root", CLK_IS_CRITICAL, 889 + RK3576_CLKGATE_CON(22), 15, GFLAGS), 890 + COMPOSITE_NODIV(CLK_DDR_TIMER_ROOT, "clk_ddr_timer_root", mux_100m_24m_p, 0, 891 + RK3576_CLKSEL_CON(77), 6, 1, MFLAGS, 892 + RK3576_CLKGATE_CON(23), 3, GFLAGS), 893 + GATE(CLK_DDR_TIMER0, "clk_ddr_timer0", "clk_ddr_timer_root", 0, 894 + RK3576_CLKGATE_CON(23), 4, GFLAGS), 895 + GATE(CLK_DDR_TIMER1, "clk_ddr_timer1", "clk_ddr_timer_root", 0, 896 + RK3576_CLKGATE_CON(23), 5, GFLAGS), 897 + GATE(TCLK_WDT_DDR, "tclk_wdt_ddr", "xin24m", 0, 898 + RK3576_CLKGATE_CON(23), 6, GFLAGS), 899 + GATE(PCLK_WDT, "pclk_wdt", "pclk_ddr_root", 0, 900 + RK3576_CLKGATE_CON(23), 7, GFLAGS), 901 + GATE(PCLK_TIMER, "pclk_timer", "pclk_ddr_root", 0, 902 + RK3576_CLKGATE_CON(23), 8, GFLAGS), 903 + COMPOSITE(CLK_DDR_CM0_RTC, "clk_ddr_cm0_rtc", mux_24m_32k_p, 0, 904 + RK3576_CLKSEL_CON(77), 12, 1, MFLAGS, 7, 5, DFLAGS, 905 + RK3576_CLKGATE_CON(23), 10, GFLAGS), 906 + 907 + /* gpu */ 908 + COMPOSITE(CLK_GPU_SRC_PRE, "clk_gpu_src_pre", gpll_cpll_aupll_spll_lpll_p, 0, 909 + RK3576_CLKSEL_CON(165), 5, 3, MFLAGS, 0, 5, DFLAGS, 910 + RK3576_CLKGATE_CON(69), 1, GFLAGS), 911 + GATE(CLK_GPU, "clk_gpu", "clk_gpu_src_pre", 0, 912 + RK3576_CLKGATE_CON(69), 3, GFLAGS), 913 + COMPOSITE_NODIV(PCLK_GPU_ROOT, "pclk_gpu_root", mux_100m_50m_24m_p, 0, 914 + RK3576_CLKSEL_CON(166), 10, 2, MFLAGS, 915 + RK3576_CLKGATE_CON(69), 8, GFLAGS), 916 + 917 + /* npu */ 918 + COMPOSITE_NODIV(HCLK_RKNN_ROOT, "hclk_rknn_root", mux_200m_100m_50m_24m_p, 0, 919 + RK3576_CLKSEL_CON(86), 0, 2, MFLAGS, 920 + RK3576_CLKGATE_CON(31), 4, GFLAGS), 921 + COMPOSITE(CLK_RKNN_DSU0, "clk_rknn_dsu0", gpll_cpll_aupll_spll_p, 0, 922 + RK3576_CLKSEL_CON(86), 7, 2, MFLAGS, 2, 5, DFLAGS, 923 + RK3576_CLKGATE_CON(31), 5, GFLAGS), 924 + GATE(ACLK_RKNN0, "aclk_rknn0", "clk_rknn_dsu0", 0, 925 + RK3576_CLKGATE_CON(28), 9, GFLAGS), 926 + GATE(ACLK_RKNN1, "aclk_rknn1", "clk_rknn_dsu0", 0, 927 + RK3576_CLKGATE_CON(29), 0, GFLAGS), 928 + COMPOSITE_NODIV(PCLK_NPUTOP_ROOT, "pclk_nputop_root", mux_100m_50m_24m_p, 0, 929 + RK3576_CLKSEL_CON(87), 0, 2, MFLAGS, 930 + RK3576_CLKGATE_CON(31), 8, GFLAGS), 931 + GATE(PCLK_NPU_TIMER, "pclk_npu_timer", "pclk_nputop_root", 0, 932 + RK3576_CLKGATE_CON(31), 10, GFLAGS), 933 + COMPOSITE_NODIV(CLK_NPUTIMER_ROOT, "clk_nputimer_root", mux_100m_24m_p, 0, 934 + RK3576_CLKSEL_CON(87), 2, 1, MFLAGS, 935 + RK3576_CLKGATE_CON(31), 11, GFLAGS), 936 + GATE(CLK_NPUTIMER0, "clk_nputimer0", "clk_nputimer_root", 0, 937 + RK3576_CLKGATE_CON(31), 12, GFLAGS), 938 + GATE(CLK_NPUTIMER1, "clk_nputimer1", "clk_nputimer_root", 0, 939 + RK3576_CLKGATE_CON(31), 13, GFLAGS), 940 + GATE(PCLK_NPU_WDT, "pclk_npu_wdt", "pclk_nputop_root", 0, 941 + RK3576_CLKGATE_CON(31), 14, GFLAGS), 942 + GATE(TCLK_NPU_WDT, "tclk_npu_wdt", "xin24m", 0, 943 + RK3576_CLKGATE_CON(31), 15, GFLAGS), 944 + GATE(ACLK_RKNN_CBUF, "aclk_rknn_cbuf", "clk_rknn_dsu0", 0, 945 + RK3576_CLKGATE_CON(32), 0, GFLAGS), 946 + COMPOSITE_NODIV(HCLK_NPU_CM0_ROOT, "hclk_npu_cm0_root", mux_400m_200m_100m_24m_p, 0, 947 + RK3576_CLKSEL_CON(87), 3, 2, MFLAGS, 948 + RK3576_CLKGATE_CON(32), 5, GFLAGS), 949 + GATE(FCLK_NPU_CM0_CORE, "fclk_npu_cm0_core", "hclk_npu_cm0_root", 0, 950 + RK3576_CLKGATE_CON(32), 7, GFLAGS), 951 + COMPOSITE(CLK_NPU_CM0_RTC, "clk_npu_cm0_rtc", mux_24m_32k_p, 0, 952 + RK3576_CLKSEL_CON(87), 10, 1, MFLAGS, 5, 5, DFLAGS, 953 + RK3576_CLKGATE_CON(32), 9, GFLAGS), 954 + GATE(HCLK_RKNN_CBUF, "hclk_rknn_cbuf", "hclk_rknn_root", 0, 955 + RK3576_CLKGATE_CON(32), 12, GFLAGS), 956 + 957 + /* nvm */ 958 + COMPOSITE_NODIV(HCLK_NVM_ROOT, "hclk_nvm_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 959 + RK3576_CLKSEL_CON(88), 0, 2, MFLAGS, 960 + RK3576_CLKGATE_CON(33), 0, GFLAGS), 961 + COMPOSITE(ACLK_NVM_ROOT, "aclk_nvm_root", gpll_cpll_p, CLK_IS_CRITICAL, 962 + RK3576_CLKSEL_CON(88), 7, 1, MFLAGS, 2, 5, DFLAGS, 963 + RK3576_CLKGATE_CON(33), 1, GFLAGS), 964 + COMPOSITE(SCLK_FSPI_X2, "sclk_fspi_x2", gpll_cpll_24m_p, 0, 965 + RK3576_CLKSEL_CON(89), 6, 2, MFLAGS, 0, 6, DFLAGS, 966 + RK3576_CLKGATE_CON(33), 6, GFLAGS), 967 + GATE(HCLK_FSPI, "hclk_fspi", "hclk_nvm_root", 0, 968 + RK3576_CLKGATE_CON(33), 7, GFLAGS), 969 + COMPOSITE(CCLK_SRC_EMMC, "cclk_src_emmc", gpll_cpll_24m_p, 0, 970 + RK3576_CLKSEL_CON(89), 14, 2, MFLAGS, 8, 6, DFLAGS, 971 + RK3576_CLKGATE_CON(33), 8, GFLAGS), 972 + GATE(HCLK_EMMC, "hclk_emmc", "hclk_nvm_root", 0, 973 + RK3576_CLKGATE_CON(33), 9, GFLAGS), 974 + GATE(ACLK_EMMC, "aclk_emmc", "aclk_nvm_root", 0, 975 + RK3576_CLKGATE_CON(33), 10, GFLAGS), 976 + COMPOSITE_NODIV(BCLK_EMMC, "bclk_emmc", mux_200m_100m_50m_24m_p, 0, 977 + RK3576_CLKSEL_CON(90), 0, 2, MFLAGS, 978 + RK3576_CLKGATE_CON(33), 11, GFLAGS), 979 + GATE(TCLK_EMMC, "tclk_emmc", "xin24m", 0, 980 + RK3576_CLKGATE_CON(33), 12, GFLAGS), 981 + 982 + /* usb */ 983 + COMPOSITE(ACLK_UFS_ROOT, "aclk_ufs_root", gpll_cpll_p, 0, 984 + RK3576_CLKSEL_CON(115), 5, 1, MFLAGS, 0, 5, DFLAGS, 985 + RK3576_CLKGATE_CON(47), 0, GFLAGS), 986 + COMPOSITE(ACLK_USB_ROOT, "aclk_usb_root", gpll_cpll_p, CLK_IS_CRITICAL, 987 + RK3576_CLKSEL_CON(115), 11, 1, MFLAGS, 6, 5, DFLAGS, 988 + RK3576_CLKGATE_CON(47), 1, GFLAGS), 989 + COMPOSITE_NODIV(PCLK_USB_ROOT, "pclk_usb_root", mux_100m_50m_24m_p, CLK_IS_CRITICAL, 990 + RK3576_CLKSEL_CON(115), 12, 2, MFLAGS, 991 + RK3576_CLKGATE_CON(47), 2, GFLAGS), 992 + GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb_root", 0, 993 + RK3576_CLKGATE_CON(47), 5, GFLAGS), 994 + GATE(CLK_REF_USB3OTG0, "clk_ref_usb3otg0", "xin24m", 0, 995 + RK3576_CLKGATE_CON(47), 6, GFLAGS), 996 + GATE(CLK_SUSPEND_USB3OTG0, "clk_suspend_usb3otg0", "xin24m", 0, 997 + RK3576_CLKGATE_CON(47), 7, GFLAGS), 998 + GATE(ACLK_MMU2, "aclk_mmu2", "aclk_usb_root", 0, 999 + RK3576_CLKGATE_CON(47), 12, GFLAGS), 1000 + GATE(ACLK_SLV_MMU2, "aclk_slv_mmu2", "aclk_usb_root", 0, 1001 + RK3576_CLKGATE_CON(47), 13, GFLAGS), 1002 + GATE(ACLK_UFS_SYS, "aclk_ufs_sys", "aclk_ufs_root", 0, 1003 + RK3576_CLKGATE_CON(47), 15, GFLAGS), 1004 + 1005 + /* vdec */ 1006 + COMPOSITE_NODIV(HCLK_RKVDEC_ROOT, "hclk_rkvdec_root", mux_200m_100m_50m_24m_p, 0, 1007 + RK3576_CLKSEL_CON(110), 0, 2, MFLAGS, 1008 + RK3576_CLKGATE_CON(45), 0, GFLAGS), 1009 + COMPOSITE(ACLK_RKVDEC_ROOT, "aclk_rkvdec_root", gpll_cpll_aupll_spll_p, 0, 1010 + RK3576_CLKSEL_CON(110), 7, 2, MFLAGS, 2, 5, DFLAGS, 1011 + RK3576_CLKGATE_CON(45), 1, GFLAGS), 1012 + COMPOSITE(ACLK_RKVDEC_ROOT_BAK, "aclk_rkvdec_root_bak", cpll_vpll_lpll_bpll_p, 0, 1013 + RK3576_CLKSEL_CON(110), 14, 2, MFLAGS, 9, 5, DFLAGS, 1014 + RK3576_CLKGATE_CON(45), 2, GFLAGS), 1015 + GATE(HCLK_RKVDEC, "hclk_rkvdec", "hclk_rkvdec_root", 0, 1016 + RK3576_CLKGATE_CON(45), 3, GFLAGS), 1017 + COMPOSITE(CLK_RKVDEC_HEVC_CA, "clk_rkvdec_hevc_ca", gpll_cpll_lpll_bpll_p, 0, 1018 + RK3576_CLKSEL_CON(111), 5, 2, MFLAGS, 0, 5, DFLAGS, 1019 + RK3576_CLKGATE_CON(45), 8, GFLAGS), 1020 + GATE(CLK_RKVDEC_CORE, "clk_rkvdec_core", "aclk_rkvdec_root", 0, 1021 + RK3576_CLKGATE_CON(45), 9, GFLAGS), 1022 + 1023 + /* venc */ 1024 + COMPOSITE_NODIV(HCLK_VEPU0_ROOT, "hclk_vepu0_root", mux_200m_100m_50m_24m_p, 0, 1025 + RK3576_CLKSEL_CON(124), 0, 2, MFLAGS, 1026 + RK3576_CLKGATE_CON(51), 0, GFLAGS), 1027 + COMPOSITE(ACLK_VEPU0_ROOT, "aclk_vepu0_root", gpll_cpll_p, 0, 1028 + RK3576_CLKSEL_CON(124), 7, 1, MFLAGS, 2, 5, DFLAGS, 1029 + RK3576_CLKGATE_CON(51), 1, GFLAGS), 1030 + COMPOSITE(CLK_VEPU0_CORE, "clk_vepu0_core", gpll_cpll_spll_lpll_bpll_p, 0, 1031 + RK3576_CLKSEL_CON(124), 13, 3, MFLAGS, 8, 5, DFLAGS, 1032 + RK3576_CLKGATE_CON(51), 6, GFLAGS), 1033 + GATE(HCLK_VEPU0, "hclk_vepu0", "hclk_vepu0_root", 0, 1034 + RK3576_CLKGATE_CON(51), 4, GFLAGS), 1035 + GATE(ACLK_VEPU0, "aclk_vepu0", "aclk_vepu0_root", 0, 1036 + RK3576_CLKGATE_CON(51), 5, GFLAGS), 1037 + 1038 + /* vi */ 1039 + COMPOSITE(ACLK_VI_ROOT, "aclk_vi_root", gpll_spll_isppvtpll_bpll_lpll_p, CLK_IS_CRITICAL, 1040 + RK3576_CLKSEL_CON(128), 5, 3, MFLAGS, 0, 5, DFLAGS, 1041 + RK3576_CLKGATE_CON(53), 0, GFLAGS), 1042 + COMPOSITE_NOMUX(ACLK_VI_ROOT_INTER, "aclk_vi_root_inter", "aclk_vi_root", 0, 1043 + RK3576_CLKSEL_CON(130), 10, 3, DFLAGS, 1044 + RK3576_CLKGATE_CON(54), 13, GFLAGS), 1045 + COMPOSITE_NODIV(HCLK_VI_ROOT, "hclk_vi_root", hclk_vi_root_p, CLK_IS_CRITICAL, 1046 + RK3576_CLKSEL_CON(128), 8, 2, MFLAGS, 1047 + RK3576_CLKGATE_CON(53), 1, GFLAGS), 1048 + COMPOSITE_NODIV(PCLK_VI_ROOT, "pclk_vi_root", mux_100m_50m_24m_p, 0, 1049 + RK3576_CLKSEL_CON(128), 10, 2, MFLAGS, 1050 + RK3576_CLKGATE_CON(53), 2, GFLAGS), 1051 + COMPOSITE(DCLK_VICAP, "dclk_vicap", gpll_cpll_p, 0, 1052 + RK3576_CLKSEL_CON(129), 5, 1, MFLAGS, 0, 5, DFLAGS, 1053 + RK3576_CLKGATE_CON(53), 6, GFLAGS), 1054 + GATE(ACLK_VICAP, "aclk_vicap", "aclk_vi_root", 0, 1055 + RK3576_CLKGATE_CON(53), 7, GFLAGS), 1056 + GATE(HCLK_VICAP, "hclk_vicap", "hclk_vi_root", 0, 1057 + RK3576_CLKGATE_CON(53), 8, GFLAGS), 1058 + COMPOSITE(CLK_ISP_CORE, "clk_isp_core", gpll_spll_isppvtpll_bpll_lpll_p, 0, 1059 + RK3576_CLKSEL_CON(129), 11, 3, MFLAGS, 6, 5, DFLAGS, 1060 + RK3576_CLKGATE_CON(53), 9, GFLAGS), 1061 + GATE(CLK_ISP_CORE_MARVIN, "clk_isp_core_marvin", "clk_isp_core", 0, 1062 + RK3576_CLKGATE_CON(53), 10, GFLAGS), 1063 + GATE(CLK_ISP_CORE_VICAP, "clk_isp_core_vicap", "clk_isp_core", 0, 1064 + RK3576_CLKGATE_CON(53), 11, GFLAGS), 1065 + GATE(ACLK_ISP, "aclk_isp", "aclk_vi_root", 0, 1066 + RK3576_CLKGATE_CON(53), 12, GFLAGS), 1067 + GATE(HCLK_ISP, "hclk_isp", "hclk_vi_root", 0, 1068 + RK3576_CLKGATE_CON(53), 13, GFLAGS), 1069 + GATE(ACLK_VPSS, "aclk_vpss", "aclk_vi_root", 0, 1070 + RK3576_CLKGATE_CON(53), 15, GFLAGS), 1071 + GATE(HCLK_VPSS, "hclk_vpss", "hclk_vi_root", 0, 1072 + RK3576_CLKGATE_CON(54), 0, GFLAGS), 1073 + GATE(CLK_CORE_VPSS, "clk_core_vpss", "clk_isp_core", 0, 1074 + RK3576_CLKGATE_CON(54), 1, GFLAGS), 1075 + GATE(PCLK_CSI_HOST_0, "pclk_csi_host_0", "pclk_vi_root", 0, 1076 + RK3576_CLKGATE_CON(54), 4, GFLAGS), 1077 + GATE(PCLK_CSI_HOST_1, "pclk_csi_host_1", "pclk_vi_root", 0, 1078 + RK3576_CLKGATE_CON(54), 5, GFLAGS), 1079 + GATE(PCLK_CSI_HOST_2, "pclk_csi_host_2", "pclk_vi_root", 0, 1080 + RK3576_CLKGATE_CON(54), 6, GFLAGS), 1081 + GATE(PCLK_CSI_HOST_3, "pclk_csi_host_3", "pclk_vi_root", 0, 1082 + RK3576_CLKGATE_CON(54), 7, GFLAGS), 1083 + GATE(PCLK_CSI_HOST_4, "pclk_csi_host_4", "pclk_vi_root", 0, 1084 + RK3576_CLKGATE_CON(54), 8, GFLAGS), 1085 + COMPOSITE_NODIV(ICLK_CSIHOST01, "iclk_csihost01", mux_400m_200m_100m_24m_p, 0, 1086 + RK3576_CLKSEL_CON(130), 7, 2, MFLAGS, 1087 + RK3576_CLKGATE_CON(54), 10, GFLAGS), 1088 + GATE(ICLK_CSIHOST0, "iclk_csihost0", "iclk_csihost01", 0, 1089 + RK3576_CLKGATE_CON(54), 11, GFLAGS), 1090 + COMPOSITE(ACLK_VOP_ROOT, "aclk_vop_root", gpll_cpll_aupll_spll_lpll_p, CLK_IS_CRITICAL, 1091 + RK3576_CLKSEL_CON(144), 5, 3, MFLAGS, 0, 5, DFLAGS, 1092 + RK3576_CLKGATE_CON(61), 0, GFLAGS), 1093 + COMPOSITE_NODIV(HCLK_VOP_ROOT, "hclk_vop_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 1094 + RK3576_CLKSEL_CON(144), 10, 2, MFLAGS, 1095 + RK3576_CLKGATE_CON(61), 2, GFLAGS), 1096 + COMPOSITE_NODIV(PCLK_VOP_ROOT, "pclk_vop_root", mux_100m_50m_24m_p, 0, 1097 + RK3576_CLKSEL_CON(144), 12, 2, MFLAGS, 1098 + RK3576_CLKGATE_CON(61), 3, GFLAGS), 1099 + GATE(HCLK_VOP, "hclk_vop", "hclk_vop_root", 0, 1100 + RK3576_CLKGATE_CON(61), 8, GFLAGS), 1101 + GATE(ACLK_VOP, "aclk_vop", "aclk_vop_root", 0, 1102 + RK3576_CLKGATE_CON(61), 9, GFLAGS), 1103 + COMPOSITE(DCLK_VP0_SRC, "dclk_vp0_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT, 1104 + RK3576_CLKSEL_CON(145), 8, 3, MFLAGS, 0, 8, DFLAGS, 1105 + RK3576_CLKGATE_CON(61), 10, GFLAGS), 1106 + COMPOSITE(DCLK_VP1_SRC, "dclk_vp1_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT, 1107 + RK3576_CLKSEL_CON(146), 8, 3, MFLAGS, 0, 8, DFLAGS, 1108 + RK3576_CLKGATE_CON(61), 11, GFLAGS), 1109 + COMPOSITE(DCLK_VP2_SRC, "dclk_vp2_src", gpll_cpll_vpll_bpll_lpll_p, CLK_SET_RATE_NO_REPARENT, 1110 + RK3576_CLKSEL_CON(147), 8, 3, MFLAGS, 0, 8, DFLAGS, 1111 + RK3576_CLKGATE_CON(61), 12, GFLAGS), 1112 + COMPOSITE_NODIV(DCLK_VP0, "dclk_vp0", dclk_vp0_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 1113 + RK3576_CLKSEL_CON(147), 11, 1, MFLAGS, 1114 + RK3576_CLKGATE_CON(61), 13, GFLAGS), 1115 + COMPOSITE_NODIV(DCLK_VP1, "dclk_vp1", dclk_vp1_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 1116 + RK3576_CLKSEL_CON(147), 12, 1, MFLAGS, 1117 + RK3576_CLKGATE_CON(62), 0, GFLAGS), 1118 + COMPOSITE_NODIV(DCLK_VP2, "dclk_vp2", dclk_vp2_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT, 1119 + RK3576_CLKSEL_CON(147), 13, 1, MFLAGS, 1120 + RK3576_CLKGATE_CON(62), 1, GFLAGS), 1121 + 1122 + /* vo0 */ 1123 + COMPOSITE(ACLK_VO0_ROOT, "aclk_vo0_root", gpll_cpll_lpll_bpll_p, 0, 1124 + RK3576_CLKSEL_CON(149), 5, 2, MFLAGS, 0, 5, DFLAGS, 1125 + RK3576_CLKGATE_CON(63), 0, GFLAGS), 1126 + COMPOSITE_NODIV(HCLK_VO0_ROOT, "hclk_vo0_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 1127 + RK3576_CLKSEL_CON(149), 7, 2, MFLAGS, 1128 + RK3576_CLKGATE_CON(63), 1, GFLAGS), 1129 + COMPOSITE_NODIV(PCLK_VO0_ROOT, "pclk_vo0_root", mux_150m_100m_50m_24m_p, 0, 1130 + RK3576_CLKSEL_CON(149), 11, 2, MFLAGS, 1131 + RK3576_CLKGATE_CON(63), 3, GFLAGS), 1132 + GATE(ACLK_HDCP0, "aclk_hdcp0", "aclk_vo0_root", 0, 1133 + RK3576_CLKGATE_CON(63), 12, GFLAGS), 1134 + GATE(HCLK_HDCP0, "hclk_hdcp0", "hclk_vo0_root", 0, 1135 + RK3576_CLKGATE_CON(63), 13, GFLAGS), 1136 + GATE(PCLK_HDCP0, "pclk_hdcp0", "pclk_vo0_root", 0, 1137 + RK3576_CLKGATE_CON(63), 14, GFLAGS), 1138 + GATE(CLK_TRNG0_SKP, "clk_trng0_skp", "aclk_hdcp0", 0, 1139 + RK3576_CLKGATE_CON(64), 4, GFLAGS), 1140 + GATE(PCLK_DSIHOST0, "pclk_dsihost0", "pclk_vo0_root", 0, 1141 + RK3576_CLKGATE_CON(64), 5, GFLAGS), 1142 + COMPOSITE(CLK_DSIHOST0, "clk_dsihost0", gpll_cpll_spll_vpll_bpll_lpll_p, 0, 1143 + RK3576_CLKSEL_CON(151), 7, 3, MFLAGS, 0, 7, DFLAGS, 1144 + RK3576_CLKGATE_CON(64), 6, GFLAGS), 1145 + GATE(PCLK_HDMITX0, "pclk_hdmitx0", "pclk_vo0_root", 0, 1146 + RK3576_CLKGATE_CON(64), 7, GFLAGS), 1147 + COMPOSITE(CLK_HDMITX0_EARC, "clk_hdmitx0_earc", gpll_cpll_p, 0, 1148 + RK3576_CLKSEL_CON(151), 15, 1, MFLAGS, 10, 5, DFLAGS, 1149 + RK3576_CLKGATE_CON(64), 8, GFLAGS), 1150 + GATE(CLK_HDMITX0_REF, "clk_hdmitx0_ref", "aclk_vo0_root", 0, 1151 + RK3576_CLKGATE_CON(64), 9, GFLAGS), 1152 + GATE(PCLK_EDP0, "pclk_edp0", "pclk_vo0_root", 0, 1153 + RK3576_CLKGATE_CON(64), 13, GFLAGS), 1154 + GATE(CLK_EDP0_24M, "clk_edp0_24m", "xin24m", 0, 1155 + RK3576_CLKGATE_CON(64), 14, GFLAGS), 1156 + COMPOSITE_NODIV(CLK_EDP0_200M, "clk_edp0_200m", mux_200m_100m_50m_24m_p, 0, 1157 + RK3576_CLKSEL_CON(152), 1, 2, MFLAGS, 1158 + RK3576_CLKGATE_CON(64), 15, GFLAGS), 1159 + COMPOSITE(MCLK_SAI5_8CH_SRC, "mclk_sai5_8ch_src", audio_frac_int_p, 0, 1160 + RK3576_CLKSEL_CON(154), 10, 3, MFLAGS, 2, 8, DFLAGS, 1161 + RK3576_CLKGATE_CON(65), 3, GFLAGS), 1162 + COMPOSITE_NODIV(MCLK_SAI5_8CH, "mclk_sai5_8ch", mclk_sai5_8ch_p, CLK_SET_RATE_PARENT, 1163 + RK3576_CLKSEL_CON(154), 13, 1, MFLAGS, 1164 + RK3576_CLKGATE_CON(65), 4, GFLAGS), 1165 + GATE(HCLK_SAI5_8CH, "hclk_sai5_8ch", "hclk_vo0_root", 0, 1166 + RK3576_CLKGATE_CON(65), 5, GFLAGS), 1167 + COMPOSITE(MCLK_SAI6_8CH_SRC, "mclk_sai6_8ch_src", audio_frac_int_p, 0, 1168 + RK3576_CLKSEL_CON(155), 8, 3, MFLAGS, 0, 8, DFLAGS, 1169 + RK3576_CLKGATE_CON(65), 7, GFLAGS), 1170 + COMPOSITE_NODIV(MCLK_SAI6_8CH, "mclk_sai6_8ch", mclk_sai6_8ch_p, CLK_SET_RATE_PARENT, 1171 + RK3576_CLKSEL_CON(155), 11, 1, MFLAGS, 1172 + RK3576_CLKGATE_CON(65), 8, GFLAGS), 1173 + GATE(HCLK_SAI6_8CH, "hclk_sai6_8ch", "hclk_vo0_root", 0, 1174 + RK3576_CLKGATE_CON(65), 9, GFLAGS), 1175 + GATE(HCLK_SPDIF_TX2, "hclk_spdif_tx2", "hclk_vo0_root", 0, 1176 + RK3576_CLKGATE_CON(65), 10, GFLAGS), 1177 + COMPOSITE(MCLK_SPDIF_TX2, "mclk_spdif_tx2", audio_frac_int_p, 0, 1178 + RK3576_CLKSEL_CON(156), 5, 3, MFLAGS, 0, 5, DFLAGS, 1179 + RK3576_CLKGATE_CON(65), 13, GFLAGS), 1180 + GATE(HCLK_SPDIF_RX2, "hclk_spdif_rx2", "hclk_vo0_root", 0, 1181 + RK3576_CLKGATE_CON(65), 14, GFLAGS), 1182 + COMPOSITE(MCLK_SPDIF_RX2, "mclk_spdif_rx2", gpll_cpll_aupll_p, 0, 1183 + RK3576_CLKSEL_CON(156), 13, 2, MFLAGS, 8, 5, DFLAGS, 1184 + RK3576_CLKGATE_CON(65), 15, GFLAGS), 1185 + 1186 + /* vo1 */ 1187 + COMPOSITE(ACLK_VO1_ROOT, "aclk_vo1_root", gpll_cpll_lpll_bpll_p, 0, 1188 + RK3576_CLKSEL_CON(158), 5, 2, MFLAGS, 0, 5, DFLAGS, 1189 + RK3576_CLKGATE_CON(67), 1, GFLAGS), 1190 + COMPOSITE_NODIV(HCLK_VO1_ROOT, "hclk_vo1_root", mux_200m_100m_50m_24m_p, CLK_IS_CRITICAL, 1191 + RK3576_CLKSEL_CON(158), 7, 2, MFLAGS, 1192 + RK3576_CLKGATE_CON(67), 2, GFLAGS), 1193 + COMPOSITE_NODIV(PCLK_VO1_ROOT, "pclk_vo1_root", mux_100m_50m_24m_p, 0, 1194 + RK3576_CLKSEL_CON(158), 9, 2, MFLAGS, 1195 + RK3576_CLKGATE_CON(67), 3, GFLAGS), 1196 + COMPOSITE(MCLK_SAI8_8CH_SRC, "mclk_sai8_8ch_src", audio_frac_int_p, 0, 1197 + RK3576_CLKSEL_CON(157), 8, 3, MFLAGS, 0, 8, DFLAGS, 1198 + RK3576_CLKGATE_CON(66), 1, GFLAGS), 1199 + COMPOSITE_NODIV(MCLK_SAI8_8CH, "mclk_sai8_8ch", mclk_sai8_8ch_p, CLK_SET_RATE_PARENT, 1200 + RK3576_CLKSEL_CON(157), 11, 1, MFLAGS, 1201 + RK3576_CLKGATE_CON(66), 2, GFLAGS), 1202 + GATE(HCLK_SAI8_8CH, "hclk_sai8_8ch", "hclk_vo1_root", 0, 1203 + RK3576_CLKGATE_CON(66), 0, GFLAGS), 1204 + COMPOSITE(MCLK_SAI7_8CH_SRC, "mclk_sai7_8ch_src", audio_frac_int_p, 0, 1205 + RK3576_CLKSEL_CON(159), 8, 3, MFLAGS, 0, 8, DFLAGS, 1206 + RK3576_CLKGATE_CON(67), 8, GFLAGS), 1207 + COMPOSITE_NODIV(MCLK_SAI7_8CH, "mclk_sai7_8ch", mclk_sai7_8ch_p, CLK_SET_RATE_PARENT, 1208 + RK3576_CLKSEL_CON(159), 11, 1, MFLAGS, 1209 + RK3576_CLKGATE_CON(67), 9, GFLAGS), 1210 + GATE(HCLK_SAI7_8CH, "hclk_sai7_8ch", "hclk_vo1_root", 0, 1211 + RK3576_CLKGATE_CON(67), 10, GFLAGS), 1212 + GATE(HCLK_SPDIF_TX3, "hclk_spdif_tx3", "hclk_vo1_root", 0, 1213 + RK3576_CLKGATE_CON(67), 11, GFLAGS), 1214 + GATE(HCLK_SPDIF_TX4, "hclk_spdif_tx4", "hclk_vo1_root", 0, 1215 + RK3576_CLKGATE_CON(67), 12, GFLAGS), 1216 + GATE(HCLK_SPDIF_TX5, "hclk_spdif_tx5", "hclk_vo1_root", 0, 1217 + RK3576_CLKGATE_CON(67), 13, GFLAGS), 1218 + COMPOSITE(MCLK_SPDIF_TX3, "mclk_spdif_tx3", audio_frac_int_p, 0, 1219 + RK3576_CLKSEL_CON(160), 8, 3, MFLAGS, 0, 8, DFLAGS, 1220 + RK3576_CLKGATE_CON(67), 14, GFLAGS), 1221 + COMPOSITE_NOMUX(CLK_AUX16MHZ_0, "clk_aux16mhz_0", "gpll", 0, 1222 + RK3576_CLKSEL_CON(161), 0, 8, DFLAGS, 1223 + RK3576_CLKGATE_CON(67), 15, GFLAGS), 1224 + GATE(ACLK_DP0, "aclk_dp0", "aclk_vo1_root", 0, 1225 + RK3576_CLKGATE_CON(68), 0, GFLAGS), 1226 + GATE(PCLK_DP0, "pclk_dp0", "pclk_vo1_root", 0, 1227 + RK3576_CLKGATE_CON(68), 1, GFLAGS), 1228 + GATE(ACLK_HDCP1, "aclk_hdcp1", "aclk_vo1_root", 0, 1229 + RK3576_CLKGATE_CON(68), 4, GFLAGS), 1230 + GATE(HCLK_HDCP1, "hclk_hdcp1", "hclk_vo1_root", 0, 1231 + RK3576_CLKGATE_CON(68), 5, GFLAGS), 1232 + GATE(PCLK_HDCP1, "pclk_hdcp1", "pclk_vo1_root", 0, 1233 + RK3576_CLKGATE_CON(68), 6, GFLAGS), 1234 + GATE(CLK_TRNG1_SKP, "clk_trng1_skp", "aclk_hdcp1", 0, 1235 + RK3576_CLKGATE_CON(68), 7, GFLAGS), 1236 + GATE(HCLK_SAI9_8CH, "hclk_sai9_8ch", "hclk_vo1_root", 0, 1237 + RK3576_CLKGATE_CON(68), 9, GFLAGS), 1238 + COMPOSITE(MCLK_SAI9_8CH_SRC, "mclk_sai9_8ch_src", audio_frac_int_p, 0, 1239 + RK3576_CLKSEL_CON(162), 8, 3, MFLAGS, 0, 8, DFLAGS, 1240 + RK3576_CLKGATE_CON(68), 10, GFLAGS), 1241 + COMPOSITE_NODIV(MCLK_SAI9_8CH, "mclk_sai9_8ch", mclk_sai9_8ch_p, CLK_SET_RATE_PARENT, 1242 + RK3576_CLKSEL_CON(162), 11, 1, MFLAGS, 1243 + RK3576_CLKGATE_CON(68), 11, GFLAGS), 1244 + COMPOSITE(MCLK_SPDIF_TX4, "mclk_spdif_tx4", audio_frac_int_p, 0, 1245 + RK3576_CLKSEL_CON(163), 8, 3, MFLAGS, 0, 8, DFLAGS, 1246 + RK3576_CLKGATE_CON(68), 12, GFLAGS), 1247 + COMPOSITE(MCLK_SPDIF_TX5, "mclk_spdif_tx5", audio_frac_int_p, 0, 1248 + RK3576_CLKSEL_CON(164), 8, 3, MFLAGS, 0, 8, DFLAGS, 1249 + RK3576_CLKGATE_CON(68), 13, GFLAGS), 1250 + 1251 + /* vpu */ 1252 + COMPOSITE(ACLK_VPU_ROOT, "aclk_vpu_root", gpll_spll_cpll_bpll_lpll_p, CLK_IS_CRITICAL, 1253 + RK3576_CLKSEL_CON(118), 5, 3, MFLAGS, 0, 5, DFLAGS, 1254 + RK3576_CLKGATE_CON(49), 0, GFLAGS), 1255 + COMPOSITE_NODIV(ACLK_VPU_MID_ROOT, "aclk_vpu_mid_root", mux_600m_400m_300m_24m_p, 0, 1256 + RK3576_CLKSEL_CON(118), 8, 2, MFLAGS, 1257 + RK3576_CLKGATE_CON(49), 1, GFLAGS), 1258 + COMPOSITE_NODIV(HCLK_VPU_ROOT, "hclk_vpu_root", mux_200m_100m_50m_24m_p, 0, 1259 + RK3576_CLKSEL_CON(118), 10, 2, MFLAGS, 1260 + RK3576_CLKGATE_CON(49), 2, GFLAGS), 1261 + COMPOSITE(ACLK_JPEG_ROOT, "aclk_jpeg_root", gpll_cpll_aupll_spll_p, 0, 1262 + RK3576_CLKSEL_CON(119), 5, 2, MFLAGS, 0, 5, DFLAGS, 1263 + RK3576_CLKGATE_CON(49), 3, GFLAGS), 1264 + COMPOSITE_NODIV(ACLK_VPU_LOW_ROOT, "aclk_vpu_low_root", mux_400m_200m_100m_24m_p, 0, 1265 + RK3576_CLKSEL_CON(119), 7, 2, MFLAGS, 1266 + RK3576_CLKGATE_CON(49), 4, GFLAGS), 1267 + GATE(HCLK_RGA2E_0, "hclk_rga2e_0", "hclk_vpu_root", 0, 1268 + RK3576_CLKGATE_CON(49), 13, GFLAGS), 1269 + GATE(ACLK_RGA2E_0, "aclk_rga2e_0", "aclk_vpu_root", 0, 1270 + RK3576_CLKGATE_CON(49), 14, GFLAGS), 1271 + COMPOSITE(CLK_CORE_RGA2E_0, "clk_core_rga2e_0", gpll_spll_cpll_bpll_lpll_p, 0, 1272 + RK3576_CLKSEL_CON(120), 5, 3, MFLAGS, 0, 5, DFLAGS, 1273 + RK3576_CLKGATE_CON(49), 15, GFLAGS), 1274 + GATE(ACLK_JPEG, "aclk_jpeg", "aclk_jpeg_root", 0, 1275 + RK3576_CLKGATE_CON(50), 0, GFLAGS), 1276 + GATE(HCLK_JPEG, "hclk_jpeg", "hclk_vpu_root", 0, 1277 + RK3576_CLKGATE_CON(50), 1, GFLAGS), 1278 + GATE(HCLK_VDPP, "hclk_vdpp", "hclk_vpu_root", 0, 1279 + RK3576_CLKGATE_CON(50), 2, GFLAGS), 1280 + GATE(ACLK_VDPP, "aclk_vdpp", "aclk_vpu_mid_root", 0, 1281 + RK3576_CLKGATE_CON(50), 3, GFLAGS), 1282 + COMPOSITE(CLK_CORE_VDPP, "clk_core_vdpp", gpll_cpll_p, 0, 1283 + RK3576_CLKSEL_CON(120), 13, 1, MFLAGS, 8, 5, DFLAGS, 1284 + RK3576_CLKGATE_CON(50), 4, GFLAGS), 1285 + GATE(HCLK_RGA2E_1, "hclk_rga2e_1", "hclk_vpu_root", 0, 1286 + RK3576_CLKGATE_CON(50), 5, GFLAGS), 1287 + GATE(ACLK_RGA2E_1, "aclk_rga2e_1", "aclk_vpu_root", 0, 1288 + RK3576_CLKGATE_CON(50), 6, GFLAGS), 1289 + COMPOSITE(CLK_CORE_RGA2E_1, "clk_core_rga2e_1", gpll_spll_cpll_bpll_lpll_p, 0, 1290 + RK3576_CLKSEL_CON(121), 5, 3, MFLAGS, 0, 5, DFLAGS, 1291 + RK3576_CLKGATE_CON(50), 7, GFLAGS), 1292 + MUX(0, "dclk_ebc_frac_src_p", gpll_cpll_vpll_aupll_24m_p, 0, 1293 + RK3576_CLKSEL_CON(123), 0, 3, MFLAGS), 1294 + COMPOSITE_FRAC(DCLK_EBC_FRAC_SRC, "dclk_ebc_frac_src", "dclk_ebc_frac_src_p", 0, 1295 + RK3576_CLKSEL_CON(122), 0, 1296 + RK3576_CLKGATE_CON(50), 9, GFLAGS), 1297 + GATE(ACLK_EBC, "aclk_ebc", "aclk_vpu_low_root", 0, 1298 + RK3576_CLKGATE_CON(50), 11, GFLAGS), 1299 + GATE(HCLK_EBC, "hclk_ebc", "hclk_vpu_root", 0, 1300 + RK3576_CLKGATE_CON(50), 10, GFLAGS), 1301 + COMPOSITE(DCLK_EBC, "dclk_ebc", dclk_ebc_p, CLK_SET_RATE_NO_REPARENT, 1302 + RK3576_CLKSEL_CON(123), 12, 3, MFLAGS, 3, 9, DFLAGS, 1303 + RK3576_CLKGATE_CON(50), 12, GFLAGS), 1304 + 1305 + /* vepu */ 1306 + COMPOSITE_NODIV(HCLK_VEPU1_ROOT, "hclk_vepu1_root", mux_200m_100m_50m_24m_p, 0, 1307 + RK3576_CLKSEL_CON(178), 0, 2, MFLAGS, 1308 + RK3576_CLKGATE_CON(78), 0, GFLAGS), 1309 + COMPOSITE(ACLK_VEPU1_ROOT, "aclk_vepu1_root", gpll_cpll_p, 0, 1310 + RK3576_CLKSEL_CON(180), 5, 1, MFLAGS, 0, 5, DFLAGS, 1311 + RK3576_CLKGATE_CON(79), 0, GFLAGS), 1312 + GATE(HCLK_VEPU1, "hclk_vepu1", "hclk_vepu1_root", 0, 1313 + RK3576_CLKGATE_CON(79), 3, GFLAGS), 1314 + GATE(ACLK_VEPU1, "aclk_vepu1", "aclk_vepu1_root", 0, 1315 + RK3576_CLKGATE_CON(79), 4, GFLAGS), 1316 + COMPOSITE(CLK_VEPU1_CORE, "clk_vepu1_core", gpll_cpll_spll_lpll_bpll_p, 0, 1317 + RK3576_CLKSEL_CON(180), 11, 3, MFLAGS, 6, 5, DFLAGS, 1318 + RK3576_CLKGATE_CON(79), 5, GFLAGS), 1319 + 1320 + /* php */ 1321 + COMPOSITE_NODIV(PCLK_PHP_ROOT, "pclk_php_root", mux_100m_50m_24m_p, 0, 1322 + RK3576_CLKSEL_CON(92), 0, 2, MFLAGS, 1323 + RK3576_CLKGATE_CON(34), 0, GFLAGS), 1324 + COMPOSITE(ACLK_PHP_ROOT, "aclk_php_root", gpll_cpll_p, 0, 1325 + RK3576_CLKSEL_CON(92), 9, 1, MFLAGS, 4, 5, DFLAGS, 1326 + RK3576_CLKGATE_CON(34), 7, GFLAGS), 1327 + GATE(PCLK_PCIE0, "pclk_pcie0", "pclk_php_root", 0, 1328 + RK3576_CLKGATE_CON(34), 13, GFLAGS), 1329 + GATE(CLK_PCIE0_AUX, "clk_pcie0_aux", "xin24m", 0, 1330 + RK3576_CLKGATE_CON(34), 14, GFLAGS), 1331 + GATE(ACLK_PCIE0_MST, "aclk_pcie0_mst", "aclk_php_root", 0, 1332 + RK3576_CLKGATE_CON(34), 15, GFLAGS), 1333 + GATE(ACLK_PCIE0_SLV, "aclk_pcie0_slv", "aclk_php_root", 0, 1334 + RK3576_CLKGATE_CON(35), 0, GFLAGS), 1335 + GATE(ACLK_PCIE0_DBI, "aclk_pcie0_dbi", "aclk_php_root", 0, 1336 + RK3576_CLKGATE_CON(35), 1, GFLAGS), 1337 + GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_php_root", 0, 1338 + RK3576_CLKGATE_CON(35), 3, GFLAGS), 1339 + GATE(CLK_REF_USB3OTG1, "clk_ref_usb3otg1", "xin24m", 0, 1340 + RK3576_CLKGATE_CON(35), 4, GFLAGS), 1341 + GATE(CLK_SUSPEND_USB3OTG1, "clk_suspend_usb3otg1", "xin24m", 0, 1342 + RK3576_CLKGATE_CON(35), 5, GFLAGS), 1343 + GATE(ACLK_MMU0, "aclk_mmu0", "aclk_php_root", 0, 1344 + RK3576_CLKGATE_CON(35), 11, GFLAGS), 1345 + GATE(ACLK_SLV_MMU0, "aclk_slv_mmu0", "aclk_php_root", 0, 1346 + RK3576_CLKGATE_CON(35), 13, GFLAGS), 1347 + GATE(ACLK_MMU1, "aclk_mmu1", "aclk_php_root", 0, 1348 + RK3576_CLKGATE_CON(35), 14, GFLAGS), 1349 + GATE(ACLK_SLV_MMU1, "aclk_slv_mmu1", "aclk_php_root", 0, 1350 + RK3576_CLKGATE_CON(36), 0, GFLAGS), 1351 + GATE(PCLK_PCIE1, "pclk_pcie1", "pclk_php_root", 0, 1352 + RK3576_CLKGATE_CON(36), 7, GFLAGS), 1353 + GATE(CLK_PCIE1_AUX, "clk_pcie1_aux", "xin24m", 0, 1354 + RK3576_CLKGATE_CON(36), 8, GFLAGS), 1355 + GATE(ACLK_PCIE1_MST, "aclk_pcie1_mst", "aclk_php_root", 0, 1356 + RK3576_CLKGATE_CON(36), 9, GFLAGS), 1357 + GATE(ACLK_PCIE1_SLV, "aclk_pcie1_slv", "aclk_php_root", 0, 1358 + RK3576_CLKGATE_CON(36), 10, GFLAGS), 1359 + GATE(ACLK_PCIE1_DBI, "aclk_pcie1_dbi", "aclk_php_root", 0, 1360 + RK3576_CLKGATE_CON(36), 11, GFLAGS), 1361 + COMPOSITE(CLK_RXOOB0, "clk_rxoob0", gpll_cpll_p, 0, 1362 + RK3576_CLKSEL_CON(93), 7, 1, MFLAGS, 0, 7, DFLAGS, 1363 + RK3576_CLKGATE_CON(37), 0, GFLAGS), 1364 + COMPOSITE(CLK_RXOOB1, "clk_rxoob1", gpll_cpll_p, 0, 1365 + RK3576_CLKSEL_CON(93), 15, 1, MFLAGS, 8, 7, DFLAGS, 1366 + RK3576_CLKGATE_CON(37), 1, GFLAGS), 1367 + GATE(CLK_PMALIVE0, "clk_pmalive0", "xin24m", CLK_IS_CRITICAL, 1368 + RK3576_CLKGATE_CON(37), 2, GFLAGS), 1369 + GATE(CLK_PMALIVE1, "clk_pmalive1", "xin24m", CLK_IS_CRITICAL, 1370 + RK3576_CLKGATE_CON(37), 3, GFLAGS), 1371 + GATE(ACLK_SATA0, "aclk_sata0", "aclk_php_root", 0, 1372 + RK3576_CLKGATE_CON(37), 4, GFLAGS), 1373 + GATE(ACLK_SATA1, "aclk_sata1", "aclk_php_root", 0, 1374 + RK3576_CLKGATE_CON(37), 5, GFLAGS), 1375 + 1376 + /* audio */ 1377 + COMPOSITE_NODIV(HCLK_AUDIO_ROOT, "hclk_audio_root", mux_200m_100m_50m_24m_p, 0, 1378 + RK3576_CLKSEL_CON(42), 0, 2, MFLAGS, 1379 + RK3576_CLKGATE_CON(7), 1, GFLAGS), 1380 + GATE(HCLK_ASRC_2CH_0, "hclk_asrc_2ch_0", "hclk_audio_root", 0, 1381 + RK3576_CLKGATE_CON(7), 3, GFLAGS), 1382 + GATE(HCLK_ASRC_2CH_1, "hclk_asrc_2ch_1", "hclk_audio_root", 0, 1383 + RK3576_CLKGATE_CON(7), 4, GFLAGS), 1384 + GATE(HCLK_ASRC_4CH_0, "hclk_asrc_4ch_0", "hclk_audio_root", 0, 1385 + RK3576_CLKGATE_CON(7), 5, GFLAGS), 1386 + GATE(HCLK_ASRC_4CH_1, "hclk_asrc_4ch_1", "hclk_audio_root", 0, 1387 + RK3576_CLKGATE_CON(7), 6, GFLAGS), 1388 + COMPOSITE(CLK_ASRC_2CH_0, "clk_asrc_2ch_0", gpll_cpll_aupll_p, 0, 1389 + RK3576_CLKSEL_CON(42), 7, 2, MFLAGS, 2, 5, DFLAGS, 1390 + RK3576_CLKGATE_CON(7), 7, GFLAGS), 1391 + COMPOSITE(CLK_ASRC_2CH_1, "clk_asrc_2ch_1", gpll_cpll_aupll_p, 0, 1392 + RK3576_CLKSEL_CON(42), 14, 2, MFLAGS, 9, 5, DFLAGS, 1393 + RK3576_CLKGATE_CON(7), 8, GFLAGS), 1394 + COMPOSITE(CLK_ASRC_4CH_0, "clk_asrc_4ch_0", gpll_cpll_aupll_p, 0, 1395 + RK3576_CLKSEL_CON(43), 5, 2, MFLAGS, 0, 5, DFLAGS, 1396 + RK3576_CLKGATE_CON(7), 9, GFLAGS), 1397 + COMPOSITE(CLK_ASRC_4CH_1, "clk_asrc_4ch_1", gpll_cpll_aupll_p, 0, 1398 + RK3576_CLKSEL_CON(43), 12, 2, MFLAGS, 7, 5, DFLAGS, 1399 + RK3576_CLKGATE_CON(7), 10, GFLAGS), 1400 + COMPOSITE(MCLK_SAI0_8CH_SRC, "mclk_sai0_8ch_src", audio_frac_int_p, 0, 1401 + RK3576_CLKSEL_CON(44), 8, 3, MFLAGS, 0, 8, DFLAGS, 1402 + RK3576_CLKGATE_CON(7), 11, GFLAGS), 1403 + COMPOSITE_NODIV(MCLK_SAI0_8CH, "mclk_sai0_8ch", mclk_sai0_8ch_p, CLK_SET_RATE_PARENT, 1404 + RK3576_CLKSEL_CON(44), 11, 2, MFLAGS, 1405 + RK3576_CLKGATE_CON(7), 12, GFLAGS), 1406 + GATE(HCLK_SAI0_8CH, "hclk_sai0_8ch", "hclk_audio_root", 0, 1407 + RK3576_CLKGATE_CON(7), 13, GFLAGS), 1408 + GATE(HCLK_SPDIF_RX0, "hclk_spdif_rx0", "hclk_audio_root", 0, 1409 + RK3576_CLKGATE_CON(7), 14, GFLAGS), 1410 + COMPOSITE(MCLK_SPDIF_RX0, "mclk_spdif_rx0", gpll_cpll_aupll_p, 0, 1411 + RK3576_CLKSEL_CON(45), 5, 2, MFLAGS, 0, 5, DFLAGS, 1412 + RK3576_CLKGATE_CON(7), 15, GFLAGS), 1413 + GATE(HCLK_SPDIF_RX1, "hclk_spdif_rx1", "hclk_audio_root", 0, 1414 + RK3576_CLKGATE_CON(8), 0, GFLAGS), 1415 + COMPOSITE(MCLK_SPDIF_RX1, "mclk_spdif_rx1", gpll_cpll_aupll_p, 0, 1416 + RK3576_CLKSEL_CON(45), 12, 2, MFLAGS, 7, 5, DFLAGS, 1417 + RK3576_CLKGATE_CON(8), 1, GFLAGS), 1418 + COMPOSITE(MCLK_SAI1_8CH_SRC, "mclk_sai1_8ch_src", audio_frac_int_p, 0, 1419 + RK3576_CLKSEL_CON(46), 8, 3, MFLAGS, 0, 8, DFLAGS, 1420 + RK3576_CLKGATE_CON(8), 4, GFLAGS), 1421 + COMPOSITE_NODIV(MCLK_SAI1_8CH, "mclk_sai1_8ch", mclk_sai1_8ch_p, CLK_SET_RATE_PARENT, 1422 + RK3576_CLKSEL_CON(46), 11, 1, MFLAGS, 1423 + RK3576_CLKGATE_CON(8), 5, GFLAGS), 1424 + GATE(HCLK_SAI1_8CH, "hclk_sai1_8ch", "hclk_audio_root", 0, 1425 + RK3576_CLKGATE_CON(8), 6, GFLAGS), 1426 + COMPOSITE(MCLK_SAI2_2CH_SRC, "mclk_sai2_2ch_src", audio_frac_int_p, 0, 1427 + RK3576_CLKSEL_CON(47), 8, 3, MFLAGS, 0, 8, DFLAGS, 1428 + RK3576_CLKGATE_CON(8), 7, GFLAGS), 1429 + COMPOSITE_NODIV(MCLK_SAI2_2CH, "mclk_sai2_2ch", mclk_sai2_2ch_p, CLK_SET_RATE_PARENT, 1430 + RK3576_CLKSEL_CON(47), 11, 2, MFLAGS, 1431 + RK3576_CLKGATE_CON(8), 8, GFLAGS), 1432 + GATE(HCLK_SAI2_2CH, "hclk_sai2_2ch", "hclk_audio_root", 0, 1433 + RK3576_CLKGATE_CON(8), 10, GFLAGS), 1434 + COMPOSITE(MCLK_SAI3_2CH_SRC, "mclk_sai3_2ch_src", audio_frac_int_p, 0, 1435 + RK3576_CLKSEL_CON(48), 8, 3, MFLAGS, 0, 8, DFLAGS, 1436 + RK3576_CLKGATE_CON(8), 11, GFLAGS), 1437 + COMPOSITE_NODIV(MCLK_SAI3_2CH, "mclk_sai3_2ch", mclk_sai3_2ch_p, CLK_SET_RATE_PARENT, 1438 + RK3576_CLKSEL_CON(48), 11, 2, MFLAGS, 1439 + RK3576_CLKGATE_CON(8), 12, GFLAGS), 1440 + GATE(HCLK_SAI3_2CH, "hclk_sai3_2ch", "hclk_audio_root", 0, 1441 + RK3576_CLKGATE_CON(8), 14, GFLAGS), 1442 + COMPOSITE(MCLK_SAI4_2CH_SRC, "mclk_sai4_2ch_src", audio_frac_int_p, 0, 1443 + RK3576_CLKSEL_CON(49), 8, 3, MFLAGS, 0, 8, DFLAGS, 1444 + RK3576_CLKGATE_CON(8), 15, GFLAGS), 1445 + COMPOSITE_NODIV(MCLK_SAI4_2CH, "mclk_sai4_2ch", mclk_sai4_2ch_p, CLK_SET_RATE_PARENT, 1446 + RK3576_CLKSEL_CON(49), 11, 2, MFLAGS, 1447 + RK3576_CLKGATE_CON(9), 0, GFLAGS), 1448 + GATE(HCLK_SAI4_2CH, "hclk_sai4_2ch", "hclk_audio_root", 0, 1449 + RK3576_CLKGATE_CON(9), 2, GFLAGS), 1450 + GATE(HCLK_ACDCDIG_DSM, "hclk_acdcdig_dsm", "hclk_audio_root", 0, 1451 + RK3576_CLKGATE_CON(9), 3, GFLAGS), 1452 + GATE(MCLK_ACDCDIG_DSM, "mclk_acdcdig_dsm", "mclk_sai4_2ch", 0, 1453 + RK3576_CLKGATE_CON(9), 4, GFLAGS), 1454 + COMPOSITE(CLK_PDM1, "clk_pdm1", audio_frac_int_p, 0, 1455 + RK3576_CLKSEL_CON(50), 9, 3, MFLAGS, 0, 9, DFLAGS, 1456 + RK3576_CLKGATE_CON(9), 5, GFLAGS), 1457 + GATE(HCLK_PDM1, "hclk_pdm1", "hclk_audio_root", 0, 1458 + RK3576_CLKGATE_CON(9), 7, GFLAGS), 1459 + GATE(CLK_PDM1_OUT, "clk_pdm1_out", "clk_pdm1", 0, 1460 + RK3576_CLKGATE_CON(3), 5, GFLAGS), 1461 + COMPOSITE(MCLK_PDM1, "mclk_pdm1", audio_frac_int_p, 0, 1462 + RK3576_CLKSEL_CON(51), 5, 3, MFLAGS, 0, 5, DFLAGS, 1463 + RK3576_CLKGATE_CON(9), 8, GFLAGS), 1464 + GATE(HCLK_SPDIF_TX0, "hclk_spdif_tx0", "hclk_audio_root", 0, 1465 + RK3576_CLKGATE_CON(9), 9, GFLAGS), 1466 + COMPOSITE(MCLK_SPDIF_TX0, "mclk_spdif_tx0", audio_frac_int_p, 0, 1467 + RK3576_CLKSEL_CON(52), 8, 3, MFLAGS, 0, 8, DFLAGS, 1468 + RK3576_CLKGATE_CON(9), 10, GFLAGS), 1469 + GATE(HCLK_SPDIF_TX1, "hclk_spdif_tx1", "hclk_audio_root", 0, 1470 + RK3576_CLKGATE_CON(9), 11, GFLAGS), 1471 + COMPOSITE(MCLK_SPDIF_TX1, "mclk_spdif_tx1", audio_frac_int_p, 0, 1472 + RK3576_CLKSEL_CON(53), 8, 3, MFLAGS, 0, 8, DFLAGS, 1473 + RK3576_CLKGATE_CON(9), 12, GFLAGS), 1474 + GATE(CLK_SAI1_MCLKOUT, "clk_sai1_mclkout", "mclk_sai1_8ch", 0, 1475 + RK3576_CLKGATE_CON(9), 13, GFLAGS), 1476 + GATE(CLK_SAI2_MCLKOUT, "clk_sai2_mclkout", "mclk_sai2_2ch", 0, 1477 + RK3576_CLKGATE_CON(9), 14, GFLAGS), 1478 + GATE(CLK_SAI3_MCLKOUT, "clk_sai3_mclkout", "mclk_sai3_2ch", 0, 1479 + RK3576_CLKGATE_CON(9), 15, GFLAGS), 1480 + GATE(CLK_SAI4_MCLKOUT, "clk_sai4_mclkout", "mclk_sai4_2ch", 0, 1481 + RK3576_CLKGATE_CON(10), 0, GFLAGS), 1482 + GATE(CLK_SAI0_MCLKOUT, "clk_sai0_mclkout", "mclk_sai0_8ch", 0, 1483 + RK3576_CLKGATE_CON(10), 1, GFLAGS), 1484 + 1485 + /* sdgmac */ 1486 + COMPOSITE_NODIV(HCLK_SDGMAC_ROOT, "hclk_sdgmac_root", mux_200m_100m_50m_24m_p, 0, 1487 + RK3576_CLKSEL_CON(103), 0, 2, MFLAGS, 1488 + RK3576_CLKGATE_CON(42), 0, GFLAGS), 1489 + COMPOSITE(ACLK_SDGMAC_ROOT, "aclk_sdgmac_root", gpll_cpll_p, CLK_IS_CRITICAL, 1490 + RK3576_CLKSEL_CON(103), 7, 1, MFLAGS, 2, 5, DFLAGS, 1491 + RK3576_CLKGATE_CON(42), 1, GFLAGS), 1492 + COMPOSITE_NODIV(PCLK_SDGMAC_ROOT, "pclk_sdgmac_root", mux_100m_50m_24m_p, 0, 1493 + RK3576_CLKSEL_CON(103), 8, 2, MFLAGS, 1494 + RK3576_CLKGATE_CON(42), 2, GFLAGS), 1495 + GATE(ACLK_GMAC0, "aclk_gmac0", "aclk_sdgmac_root", 0, 1496 + RK3576_CLKGATE_CON(42), 7, GFLAGS), 1497 + GATE(ACLK_GMAC1, "aclk_gmac1", "aclk_sdgmac_root", 0, 1498 + RK3576_CLKGATE_CON(42), 8, GFLAGS), 1499 + GATE(PCLK_GMAC0, "pclk_gmac0", "pclk_sdgmac_root", 0, 1500 + RK3576_CLKGATE_CON(42), 9, GFLAGS), 1501 + GATE(PCLK_GMAC1, "pclk_gmac1", "pclk_sdgmac_root", 0, 1502 + RK3576_CLKGATE_CON(42), 10, GFLAGS), 1503 + COMPOSITE(CCLK_SRC_SDIO, "cclk_src_sdio", gpll_cpll_24m_p, 0, 1504 + RK3576_CLKSEL_CON(104), 6, 2, MFLAGS, 0, 6, DFLAGS, 1505 + RK3576_CLKGATE_CON(42), 11, GFLAGS), 1506 + GATE(HCLK_SDIO, "hclk_sdio", "hclk_sdgmac_root", 0, 1507 + RK3576_CLKGATE_CON(42), 12, GFLAGS), 1508 + COMPOSITE(CLK_GMAC1_PTP_REF_SRC, "clk_gmac1_ptp_ref_src", clk_gmac1_ptp_ref_src_p, 0, 1509 + RK3576_CLKSEL_CON(104), 13, 2, MFLAGS, 8, 5, DFLAGS, 1510 + RK3576_CLKGATE_CON(42), 15, GFLAGS), 1511 + COMPOSITE(CLK_GMAC0_PTP_REF_SRC, "clk_gmac0_ptp_ref_src", clk_gmac0_ptp_ref_src_p, 0, 1512 + RK3576_CLKSEL_CON(105), 5, 2, MFLAGS, 0, 5, DFLAGS, 1513 + RK3576_CLKGATE_CON(43), 0, GFLAGS), 1514 + GATE(CLK_GMAC1_PTP_REF, "clk_gmac1_ptp_ref", "clk_gmac1_ptp_ref_src", 0, 1515 + RK3576_CLKGATE_CON(42), 13, GFLAGS), 1516 + GATE(CLK_GMAC0_PTP_REF, "clk_gmac0_ptp_ref", "clk_gmac0_ptp_ref_src", 0, 1517 + RK3576_CLKGATE_CON(42), 14, GFLAGS), 1518 + COMPOSITE(CCLK_SRC_SDMMC0, "cclk_src_sdmmc0", gpll_cpll_24m_p, 0, 1519 + RK3576_CLKSEL_CON(105), 13, 2, MFLAGS, 7, 6, DFLAGS, 1520 + RK3576_CLKGATE_CON(43), 1, GFLAGS), 1521 + GATE(HCLK_SDMMC0, "hclk_sdmmc0", "hclk_sdgmac_root", 0, 1522 + RK3576_CLKGATE_CON(43), 2, GFLAGS), 1523 + COMPOSITE(SCLK_FSPI1_X2, "sclk_fspi1_x2", gpll_cpll_24m_p, 0, 1524 + RK3576_CLKSEL_CON(106), 6, 2, MFLAGS, 0, 6, DFLAGS, 1525 + RK3576_CLKGATE_CON(43), 3, GFLAGS), 1526 + GATE(HCLK_FSPI1, "hclk_fspi1", "hclk_sdgmac_root", 0, 1527 + RK3576_CLKGATE_CON(43), 4, GFLAGS), 1528 + COMPOSITE(ACLK_DSMC_ROOT, "aclk_dsmc_root", gpll_cpll_p, CLK_IS_CRITICAL, 1529 + RK3576_CLKSEL_CON(106), 13, 1, MFLAGS, 8, 5, DFLAGS, 1530 + RK3576_CLKGATE_CON(43), 5, GFLAGS), 1531 + GATE(ACLK_DSMC, "aclk_dsmc", "aclk_dsmc_root", 0, 1532 + RK3576_CLKGATE_CON(43), 7, GFLAGS), 1533 + GATE(PCLK_DSMC, "pclk_dsmc", "pclk_sdgmac_root", 0, 1534 + RK3576_CLKGATE_CON(43), 8, GFLAGS), 1535 + COMPOSITE(CLK_DSMC_SYS, "clk_dsmc_sys", gpll_cpll_p, 0, 1536 + RK3576_CLKSEL_CON(107), 5, 1, MFLAGS, 0, 5, DFLAGS, 1537 + RK3576_CLKGATE_CON(43), 9, GFLAGS), 1538 + GATE(HCLK_HSGPIO, "hclk_hsgpio", "hclk_sdgmac_root", 0, 1539 + RK3576_CLKGATE_CON(43), 10, GFLAGS), 1540 + COMPOSITE(CLK_HSGPIO_TX, "clk_hsgpio_tx", gpll_cpll_24m_p, 0, 1541 + RK3576_CLKSEL_CON(107), 11, 2, MFLAGS, 6, 5, DFLAGS, 1542 + RK3576_CLKGATE_CON(43), 11, GFLAGS), 1543 + COMPOSITE(CLK_HSGPIO_RX, "clk_hsgpio_rx", gpll_cpll_24m_p, 0, 1544 + RK3576_CLKSEL_CON(108), 5, 2, MFLAGS, 0, 5, DFLAGS, 1545 + RK3576_CLKGATE_CON(43), 12, GFLAGS), 1546 + GATE(ACLK_HSGPIO, "aclk_hsgpio", "aclk_sdgmac_root", 0, 1547 + RK3576_CLKGATE_CON(43), 13, GFLAGS), 1548 + 1549 + /* phpphy */ 1550 + GATE(PCLK_PHPPHY_ROOT, "pclk_phpphy_root", "pclk_bus_root", CLK_IS_CRITICAL, 1551 + RK3576_PHP_CLKGATE_CON(0), 2, GFLAGS), 1552 + GATE(PCLK_PCIE2_COMBOPHY0, "pclk_pcie2_combophy0", "pclk_phpphy_root", 0, 1553 + RK3576_PHP_CLKGATE_CON(0), 5, GFLAGS), 1554 + GATE(PCLK_PCIE2_COMBOPHY1, "pclk_pcie2_combophy1", "pclk_phpphy_root", 0, 1555 + RK3576_PHP_CLKGATE_CON(0), 7, GFLAGS), 1556 + COMPOSITE_NOMUX(CLK_PCIE_100M_SRC, "clk_pcie_100m_src", "ppll", 0, 1557 + RK3576_PHP_CLKSEL_CON(0), 2, 5, DFLAGS, 1558 + RK3576_PHP_CLKGATE_CON(1), 1, GFLAGS), 1559 + COMPOSITE_NOMUX(CLK_PCIE_100M_NDUTY_SRC, "clk_pcie_100m_nduty_src", "ppll", 0, 1560 + RK3576_PHP_CLKSEL_CON(0), 7, 5, DFLAGS, 1561 + RK3576_PHP_CLKGATE_CON(1), 2, GFLAGS), 1562 + COMPOSITE_NODIV(CLK_REF_PCIE0_PHY, "clk_ref_pcie0_phy", clk_ref_pcie0_phy_p, 0, 1563 + RK3576_PHP_CLKSEL_CON(0), 12, 2, MFLAGS, 1564 + RK3576_PHP_CLKGATE_CON(1), 5, GFLAGS), 1565 + COMPOSITE_NODIV(CLK_REF_PCIE1_PHY, "clk_ref_pcie1_phy", clk_ref_pcie0_phy_p, 0, 1566 + RK3576_PHP_CLKSEL_CON(0), 14, 2, MFLAGS, 1567 + RK3576_PHP_CLKGATE_CON(1), 8, GFLAGS), 1568 + COMPOSITE_NOMUX(CLK_REF_MPHY_26M, "clk_ref_mphy_26m", "ppll", CLK_IS_CRITICAL, 1569 + RK3576_PHP_CLKSEL_CON(1), 0, 8, DFLAGS, 1570 + RK3576_PHP_CLKGATE_CON(1), 9, GFLAGS), 1571 + 1572 + /* pmu */ 1573 + GATE(CLK_200M_PMU_SRC, "clk_200m_pmu_src", "clk_gpll_div6", 0, 1574 + RK3576_PMU_CLKGATE_CON(3), 2, GFLAGS), 1575 + COMPOSITE_NOMUX(CLK_100M_PMU_SRC, "clk_100m_pmu_src", "cpll", 0, 1576 + RK3576_PMU_CLKSEL_CON(4), 4, 5, DFLAGS, 1577 + RK3576_PMU_CLKGATE_CON(3), 3, GFLAGS), 1578 + FACTOR_GATE(CLK_50M_PMU_SRC, "clk_50m_pmu_src", "clk_100m_pmu_src", 0, 1, 2, 1579 + RK3576_PMU_CLKGATE_CON(3), 4, GFLAGS), 1580 + COMPOSITE_NODIV(HCLK_PMU1_ROOT, "hclk_pmu1_root", mux_pmu200m_pmu100m_pmu50m_24m_p, CLK_IS_CRITICAL, 1581 + RK3576_PMU_CLKSEL_CON(4), 0, 2, MFLAGS, 1582 + RK3576_PMU_CLKGATE_CON(3), 0, GFLAGS), 1583 + COMPOSITE_NODIV(HCLK_PMU_CM0_ROOT, "hclk_pmu_cm0_root", mux_pmu200m_pmu100m_pmu50m_24m_p, 0, 1584 + RK3576_PMU_CLKSEL_CON(4), 2, 2, MFLAGS, 1585 + RK3576_PMU_CLKGATE_CON(3), 1, GFLAGS), 1586 + COMPOSITE_NODIV(PCLK_PMU0_ROOT, "pclk_pmu0_root", mux_pmu100m_pmu50m_24m_p, 0, 1587 + RK3576_PMU_CLKSEL_CON(20), 0, 2, MFLAGS, 1588 + RK3576_PMU_CLKGATE_CON(7), 0, GFLAGS), 1589 + GATE(PCLK_PMU0, "pclk_pmu0", "pclk_pmu0_root", CLK_IS_CRITICAL, 1590 + RK3576_PMU_CLKGATE_CON(7), 3, GFLAGS), 1591 + GATE(PCLK_PMU1_ROOT, "pclk_pmu1_root", "pclk_pmu0_root", CLK_IS_CRITICAL, 1592 + RK3576_PMU_CLKGATE_CON(7), 9, GFLAGS), 1593 + GATE(PCLK_PMU1, "pclk_pmu1", "pclk_pmu1_root", CLK_IS_CRITICAL, 1594 + RK3576_PMU_CLKGATE_CON(3), 15, GFLAGS), 1595 + GATE(CLK_PMU1, "clk_pmu1", "xin24m", CLK_IS_CRITICAL, 1596 + RK3576_PMU_CLKGATE_CON(4), 2, GFLAGS), 1597 + GATE(PCLK_PMUPHY_ROOT, "pclk_pmuphy_root", "pclk_pmu1_root", CLK_IS_CRITICAL, 1598 + RK3576_PMU_CLKGATE_CON(5), 0, GFLAGS), 1599 + GATE(PCLK_HDPTX_APB, "pclk_hdptx_apb", "pclk_pmuphy_root", 0, 1600 + RK3576_PMU_CLKGATE_CON(0), 1, GFLAGS), 1601 + GATE(PCLK_MIPI_DCPHY, "pclk_mipi_dcphy", "pclk_pmuphy_root", 0, 1602 + RK3576_PMU_CLKGATE_CON(0), 2, GFLAGS), 1603 + GATE(PCLK_CSIDPHY, "pclk_csidphy", "pclk_pmuphy_root", 0, 1604 + RK3576_PMU_CLKGATE_CON(0), 8, GFLAGS), 1605 + GATE(PCLK_USBDPPHY, "pclk_usbdpphy", "pclk_pmuphy_root", 0, 1606 + RK3576_PMU_CLKGATE_CON(0), 12, GFLAGS), 1607 + COMPOSITE_NOMUX(CLK_PMUPHY_REF_SRC, "clk_pmuphy_ref_src", "cpll", 0, 1608 + RK3576_PMU_CLKSEL_CON(0), 0, 5, DFLAGS, 1609 + RK3576_PMU_CLKGATE_CON(0), 13, GFLAGS), 1610 + GATE(CLK_USBDP_COMBO_PHY_IMMORTAL, "clk_usbdp_combo_phy_immortal", "xin24m", 0, 1611 + RK3576_PMU_CLKGATE_CON(0), 15, GFLAGS), 1612 + GATE(CLK_HDMITXHDP, "clk_hdmitxhdp", "xin24m", 0, 1613 + RK3576_PMU_CLKGATE_CON(1), 13, GFLAGS), 1614 + GATE(PCLK_MPHY, "pclk_mphy", "pclk_pmuphy_root", 0, 1615 + RK3576_PMU_CLKGATE_CON(2), 0, GFLAGS), 1616 + MUX(CLK_REF_OSC_MPHY, "clk_ref_osc_mphy", clk_ref_osc_mphy_p, 0, 1617 + RK3576_PMU_CLKSEL_CON(3), 0, 2, MFLAGS), 1618 + GATE(CLK_REF_UFS_CLKOUT, "clk_ref_ufs_clkout", "clk_ref_osc_mphy", 0, 1619 + RK3576_PMU_CLKGATE_CON(2), 5, GFLAGS), 1620 + GATE(FCLK_PMU_CM0_CORE, "fclk_pmu_cm0_core", "hclk_pmu_cm0_root", 0, 1621 + RK3576_PMU_CLKGATE_CON(3), 12, GFLAGS), 1622 + COMPOSITE(CLK_PMU_CM0_RTC, "clk_pmu_cm0_rtc", mux_24m_32k_p, 0, 1623 + RK3576_PMU_CLKSEL_CON(4), 14, 1, MFLAGS, 9, 5, DFLAGS, 1624 + RK3576_PMU_CLKGATE_CON(3), 14, GFLAGS), 1625 + GATE(PCLK_PMU1WDT, "pclk_pmu1wdt", "pclk_pmu1_root", 0, 1626 + RK3576_PMU_CLKGATE_CON(4), 5, GFLAGS), 1627 + COMPOSITE_NODIV(TCLK_PMU1WDT, "tclk_pmu1wdt", mux_24m_32k_p, 0, 1628 + RK3576_PMU_CLKSEL_CON(4), 15, 1, MFLAGS, 1629 + RK3576_PMU_CLKGATE_CON(4), 6, GFLAGS), 1630 + GATE(PCLK_PMUTIMER, "pclk_pmutimer", "pclk_pmu1_root", 0, 1631 + RK3576_PMU_CLKGATE_CON(4), 7, GFLAGS), 1632 + COMPOSITE_NODIV(CLK_PMUTIMER_ROOT, "clk_pmutimer_root", mux_pmu100m_24m_32k_p, 0, 1633 + RK3576_PMU_CLKSEL_CON(5), 0, 2, MFLAGS, 1634 + RK3576_PMU_CLKGATE_CON(4), 8, GFLAGS), 1635 + GATE(CLK_PMUTIMER0, "clk_pmutimer0", "clk_pmutimer_root", 0, 1636 + RK3576_PMU_CLKGATE_CON(4), 9, GFLAGS), 1637 + GATE(CLK_PMUTIMER1, "clk_pmutimer1", "clk_pmutimer_root", 0, 1638 + RK3576_PMU_CLKGATE_CON(4), 10, GFLAGS), 1639 + GATE(PCLK_PMU1PWM, "pclk_pmu1pwm", "pclk_pmu1_root", 0, 1640 + RK3576_PMU_CLKGATE_CON(4), 11, GFLAGS), 1641 + COMPOSITE_NODIV(CLK_PMU1PWM, "clk_pmu1pwm", mux_pmu100m_pmu50m_24m_p, 0, 1642 + RK3576_PMU_CLKSEL_CON(5), 2, 2, MFLAGS, 1643 + RK3576_PMU_CLKGATE_CON(4), 12, GFLAGS), 1644 + GATE(CLK_PMU1PWM_OSC, "clk_pmu1pwm_osc", "xin24m", 0, 1645 + RK3576_PMU_CLKGATE_CON(4), 13, GFLAGS), 1646 + GATE(PCLK_I2C0, "pclk_i2c0", "pclk_pmu1_root", 0, 1647 + RK3576_PMU_CLKGATE_CON(5), 1, GFLAGS), 1648 + COMPOSITE_NODIV(CLK_I2C0, "clk_i2c0", mux_pmu200m_pmu100m_pmu50m_24m_p, 0, 1649 + RK3576_PMU_CLKSEL_CON(6), 7, 2, MFLAGS, 1650 + RK3576_PMU_CLKGATE_CON(5), 2, GFLAGS), 1651 + COMPOSITE_NODIV(SCLK_UART1, "sclk_uart1", uart1_p, 0, 1652 + RK3576_PMU_CLKSEL_CON(8), 0, 1, MFLAGS, 1653 + RK3576_PMU_CLKGATE_CON(5), 5, GFLAGS), 1654 + GATE(PCLK_UART1, "pclk_uart1", "pclk_pmu1_root", 0, 1655 + RK3576_PMU_CLKGATE_CON(5), 6, GFLAGS), 1656 + GATE(CLK_PDM0, "clk_pdm0", "clk_pdm0_src_top", 0, 1657 + RK3576_PMU_CLKGATE_CON(5), 13, GFLAGS), 1658 + GATE(HCLK_PDM0, "hclk_pdm0", "hclk_pmu1_root", 0, 1659 + RK3576_PMU_CLKGATE_CON(5), 15, GFLAGS), 1660 + GATE(MCLK_PDM0, "mclk_pdm0", "mclk_pdm0_src_top", 0, 1661 + RK3576_PMU_CLKGATE_CON(6), 0, GFLAGS), 1662 + GATE(HCLK_VAD, "hclk_vad", "hclk_pmu1_root", 0, 1663 + RK3576_PMU_CLKGATE_CON(6), 1, GFLAGS), 1664 + GATE(CLK_PDM0_OUT, "clk_pdm0_out", "clk_pdm0", 0, 1665 + RK3576_PMU_CLKGATE_CON(6), 8, GFLAGS), 1666 + COMPOSITE(CLK_HPTIMER_SRC, "clk_hptimer_src", cpll_24m_p, CLK_IS_CRITICAL, 1667 + RK3576_PMU_CLKSEL_CON(11), 6, 1, MFLAGS, 1, 5, DFLAGS, 1668 + RK3576_PMU_CLKGATE_CON(6), 10, GFLAGS), 1669 + GATE(PCLK_GPIO0, "pclk_gpio0", "pclk_pmu0_root", 0, 1670 + RK3576_PMU_CLKGATE_CON(7), 6, GFLAGS), 1671 + COMPOSITE_NODIV(DBCLK_GPIO0, "dbclk_gpio0", mux_24m_32k_p, 0, 1672 + RK3576_PMU_CLKSEL_CON(20), 2, 1, MFLAGS, 1673 + RK3576_PMU_CLKGATE_CON(7), 7, GFLAGS), 1674 + GATE(CLK_OSC0_PMU1, "clk_osc0_pmu1", "xin24m", CLK_IS_CRITICAL, 1675 + RK3576_PMU_CLKGATE_CON(7), 8, GFLAGS), 1676 + GATE(CLK_PMU1PWM_RC, "clk_pmu1pwm_rc", "clk_pvtm_clkout", 0, 1677 + RK3576_PMU_CLKGATE_CON(5), 7, GFLAGS), 1678 + 1679 + /* phy ref */ 1680 + MUXGRF(CLK_PHY_REF_SRC, "clk_phy_ref_src", clk_phy_ref_src_p, 0, 1681 + RK3576_PMU0_GRF_OSC_CON6, 4, 1, MFLAGS), 1682 + MUXGRF(CLK_USBPHY_REF_SRC, "clk_usbphy_ref_src", clk_usbphy_ref_src_p, 0, 1683 + RK3576_PMU0_GRF_OSC_CON6, 2, 1, MFLAGS), 1684 + MUXGRF(CLK_CPLL_REF_SRC, "clk_cpll_ref_src", clk_cpll_ref_src_p, 0, 1685 + RK3576_PMU0_GRF_OSC_CON6, 1, 1, MFLAGS), 1686 + MUXGRF(CLK_AUPLL_REF_SRC, "clk_aupll_ref_src", clk_aupll_ref_src_p, 0, 1687 + RK3576_PMU0_GRF_OSC_CON6, 0, 1, MFLAGS), 1688 + 1689 + /* secure ns */ 1690 + COMPOSITE_NODIV(ACLK_SECURE_NS, "aclk_secure_ns", mux_350m_175m_116m_24m_p, CLK_IS_CRITICAL, 1691 + RK3576_SECURE_NS_CLKSEL_CON(0), 0, 2, MFLAGS, 1692 + RK3576_SECURE_NS_CLKGATE_CON(0), 0, GFLAGS), 1693 + COMPOSITE_NODIV(HCLK_SECURE_NS, "hclk_secure_ns", mux_175m_116m_58m_24m_p, CLK_IS_CRITICAL, 1694 + RK3576_SECURE_NS_CLKSEL_CON(0), 2, 2, MFLAGS, 1695 + RK3576_SECURE_NS_CLKGATE_CON(0), 1, GFLAGS), 1696 + COMPOSITE_NODIV(PCLK_SECURE_NS, "pclk_secure_ns", mux_116m_58m_24m_p, CLK_IS_CRITICAL, 1697 + RK3576_SECURE_NS_CLKSEL_CON(0), 4, 2, MFLAGS, 1698 + RK3576_SECURE_NS_CLKGATE_CON(0), 2, GFLAGS), 1699 + GATE(HCLK_CRYPTO_NS, "hclk_crypto_ns", "hclk_secure_ns", 0, 1700 + RK3576_SECURE_NS_CLKGATE_CON(0), 3, GFLAGS), 1701 + GATE(PCLK_OTPC_NS, "pclk_otpc_ns", "pclk_secure_ns", 0, 1702 + RK3576_SECURE_NS_CLKGATE_CON(0), 8, GFLAGS), 1703 + GATE(CLK_OTPC_NS, "clk_otpc_ns", "xin24m", 0, 1704 + RK3576_SECURE_NS_CLKGATE_CON(0), 9, GFLAGS), 1705 + GATE(ACLK_CRYPTO_NS, "aclk_crypto_ns", "aclk_secure_s", 0, 1706 + RK3576_NON_SECURE_GATING_CON00, 14, GFLAGS), 1707 + GATE(HCLK_TRNG_NS, "hclk_trng_ns", "hclk_secure_s", 0, 1708 + RK3576_NON_SECURE_GATING_CON00, 13, GFLAGS), 1709 + GATE(CLK_PKA_CRYPTO_NS, "clk_pka_crypto_ns", "clk_pka_crypto_s", 0, 1710 + RK3576_NON_SECURE_GATING_CON00, 1, GFLAGS), 1711 + 1712 + /* io */ 1713 + GATE(CLK_VICAP_I0CLK, "clk_vicap_i0clk", "clk_csihost0_clkdata_i", 0, 1714 + RK3576_CLKGATE_CON(59), 1, GFLAGS), 1715 + GATE(CLK_VICAP_I1CLK, "clk_vicap_i1clk", "clk_csihost1_clkdata_i", 0, 1716 + RK3576_CLKGATE_CON(59), 2, GFLAGS), 1717 + GATE(CLK_VICAP_I2CLK, "clk_vicap_i2clk", "clk_csihost2_clkdata_i", 0, 1718 + RK3576_CLKGATE_CON(59), 3, GFLAGS), 1719 + GATE(CLK_VICAP_I3CLK, "clk_vicap_i3clk", "clk_csihost3_clkdata_i", 0, 1720 + RK3576_CLKGATE_CON(59), 4, GFLAGS), 1721 + GATE(CLK_VICAP_I4CLK, "clk_vicap_i4clk", "clk_csihost4_clkdata_i", 0, 1722 + RK3576_CLKGATE_CON(59), 5, GFLAGS), 1723 + }; 1724 + 1725 + static void __init rk3576_clk_init(struct device_node *np) 1726 + { 1727 + struct rockchip_clk_provider *ctx; 1728 + unsigned long clk_nr_clks; 1729 + void __iomem *reg_base; 1730 + struct regmap *grf; 1731 + 1732 + clk_nr_clks = rockchip_clk_find_max_clk_id(rk3576_clk_branches, 1733 + ARRAY_SIZE(rk3576_clk_branches)) + 1; 1734 + 1735 + grf = syscon_regmap_lookup_by_compatible("rockchip,rk3576-pmu0-grf"); 1736 + if (IS_ERR(grf)) { 1737 + pr_err("%s: could not get PMU0 GRF syscon\n", __func__); 1738 + return; 1739 + } 1740 + 1741 + reg_base = of_iomap(np, 0); 1742 + if (!reg_base) { 1743 + pr_err("%s: could not map cru region\n", __func__); 1744 + return; 1745 + } 1746 + 1747 + ctx = rockchip_clk_init(np, reg_base, clk_nr_clks); 1748 + if (IS_ERR(ctx)) { 1749 + pr_err("%s: rockchip clk init failed\n", __func__); 1750 + iounmap(reg_base); 1751 + return; 1752 + } 1753 + 1754 + ctx->grf = grf; 1755 + 1756 + rockchip_clk_register_plls(ctx, rk3576_pll_clks, 1757 + ARRAY_SIZE(rk3576_pll_clks), 1758 + RK3576_GRF_SOC_STATUS0); 1759 + 1760 + rockchip_clk_register_armclk(ctx, ARMCLK_L, "armclk_l", 1761 + mux_armclkl_p, ARRAY_SIZE(mux_armclkl_p), 1762 + &rk3576_cpulclk_data, rk3576_cpulclk_rates, 1763 + ARRAY_SIZE(rk3576_cpulclk_rates)); 1764 + rockchip_clk_register_armclk(ctx, ARMCLK_B, "armclk_b", 1765 + mux_armclkb_p, ARRAY_SIZE(mux_armclkb_p), 1766 + &rk3576_cpubclk_data, rk3576_cpubclk_rates, 1767 + ARRAY_SIZE(rk3576_cpubclk_rates)); 1768 + 1769 + rockchip_clk_register_branches(ctx, rk3576_clk_branches, 1770 + ARRAY_SIZE(rk3576_clk_branches)); 1771 + 1772 + rk3576_rst_init(np, reg_base); 1773 + 1774 + rockchip_register_restart_notifier(ctx, RK3576_GLB_SRST_FST, NULL); 1775 + 1776 + rockchip_clk_of_add_provider(np, ctx); 1777 + } 1778 + 1779 + CLK_OF_DECLARE(rk3576_cru, "rockchip,rk3576-cru", rk3576_clk_init); 1780 + 1781 + struct clk_rk3576_inits { 1782 + void (*inits)(struct device_node *np); 1783 + }; 1784 + 1785 + static const struct clk_rk3576_inits clk_rk3576_cru_init = { 1786 + .inits = rk3576_clk_init, 1787 + }; 1788 + 1789 + static const struct of_device_id clk_rk3576_match_table[] = { 1790 + { 1791 + .compatible = "rockchip,rk3576-cru", 1792 + .data = &clk_rk3576_cru_init, 1793 + }, 1794 + { } 1795 + }; 1796 + 1797 + static int clk_rk3576_probe(struct platform_device *pdev) 1798 + { 1799 + const struct clk_rk3576_inits *init_data; 1800 + struct device *dev = &pdev->dev; 1801 + 1802 + init_data = device_get_match_data(dev); 1803 + if (!init_data) 1804 + return -EINVAL; 1805 + 1806 + if (init_data->inits) 1807 + init_data->inits(dev->of_node); 1808 + 1809 + return 0; 1810 + } 1811 + 1812 + static struct platform_driver clk_rk3576_driver = { 1813 + .probe = clk_rk3576_probe, 1814 + .driver = { 1815 + .name = "clk-rk3576", 1816 + .of_match_table = clk_rk3576_match_table, 1817 + .suppress_bind_attrs = true, 1818 + }, 1819 + }; 1820 + builtin_platform_driver_probe(clk_rk3576_driver, clk_rk3576_probe);
+53
drivers/clk/rockchip/clk.h
··· 235 235 #define RK3568_PMU_CLKGATE_CON(x) ((x) * 0x4 + 0x180) 236 236 #define RK3568_PMU_SOFTRST_CON(x) ((x) * 0x4 + 0x200) 237 237 238 + #define RK3576_PHP_CRU_BASE 0x8000 239 + #define RK3576_SECURE_NS_CRU_BASE 0x10000 240 + #define RK3576_PMU_CRU_BASE 0x20000 241 + #define RK3576_BIGCORE_CRU_BASE 0x38000 242 + #define RK3576_LITCORE_CRU_BASE 0x40000 243 + #define RK3576_CCI_CRU_BASE 0x48000 244 + 245 + #define RK3576_PLL_CON(x) RK2928_PLL_CON(x) 246 + #define RK3576_MODE_CON0 0x280 247 + #define RK3576_BPLL_MODE_CON0 (RK3576_BIGCORE_CRU_BASE + 0x280) 248 + #define RK3576_LPLL_MODE_CON0 (RK3576_LITCORE_CRU_BASE + 0x280) 249 + #define RK3576_PPLL_MODE_CON0 (RK3576_PHP_CRU_BASE + 0x280) 250 + #define RK3576_CLKSEL_CON(x) ((x) * 0x4 + 0x300) 251 + #define RK3576_CLKGATE_CON(x) ((x) * 0x4 + 0x800) 252 + #define RK3576_SOFTRST_CON(x) ((x) * 0x4 + 0xa00) 253 + #define RK3576_GLB_CNT_TH 0xc00 254 + #define RK3576_GLB_SRST_FST 0xc08 255 + #define RK3576_GLB_SRST_SND 0xc0c 256 + #define RK3576_GLB_RST_CON 0xc10 257 + #define RK3576_GLB_RST_ST 0xc04 258 + #define RK3576_SDIO_CON0 0xC24 259 + #define RK3576_SDIO_CON1 0xC28 260 + #define RK3576_SDMMC_CON0 0xC30 261 + #define RK3576_SDMMC_CON1 0xC34 262 + 263 + #define RK3576_PHP_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x300) 264 + #define RK3576_PHP_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0x800) 265 + #define RK3576_PHP_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE + 0xa00) 266 + 267 + #define RK3576_PMU_PLL_CON(x) ((x) * 0x4 + RK3576_PHP_CRU_BASE) 268 + #define RK3576_PMU_CLKSEL_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x300) 269 + #define RK3576_PMU_CLKGATE_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0x800) 270 + #define RK3576_PMU_SOFTRST_CON(x) ((x) * 0x4 + RK3576_PMU_CRU_BASE + 0xa00) 271 + 272 + #define RK3576_SECURE_NS_CLKSEL_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0x300) 273 + #define RK3576_SECURE_NS_CLKGATE_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0x800) 274 + #define RK3576_SECURE_NS_SOFTRST_CON(x) ((x) * 0x4 + RK3576_SECURE_NS_CRU_BASE + 0xa00) 275 + 276 + #define RK3576_CCI_CLKSEL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x300) 277 + #define RK3576_CCI_CLKGATE_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0x800) 278 + #define RK3576_CCI_SOFTRST_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE + 0xa00) 279 + 280 + #define RK3576_BPLL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE) 281 + #define RK3576_BIGCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x300) 282 + #define RK3576_BIGCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0x800) 283 + #define RK3576_BIGCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_BIGCORE_CRU_BASE + 0xa00) 284 + #define RK3576_LPLL_CON(x) ((x) * 0x4 + RK3576_CCI_CRU_BASE) 285 + #define RK3576_LITCORE_CLKSEL_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x300) 286 + #define RK3576_LITCORE_CLKGATE_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0x800) 287 + #define RK3576_LITCORE_SOFTRST_CON(x) ((x) * 0x4 + RK3576_LITCORE_CRU_BASE + 0xa00) 288 + #define RK3576_NON_SECURE_GATING_CON00 0xc48 289 + 238 290 #define RK3588_PHP_CRU_BASE 0x8000 239 291 #define RK3588_PMU_CRU_BASE 0x30000 240 292 #define RK3588_BIGCORE0_CRU_BASE 0x50000 ··· 1078 1026 return rockchip_register_softrst_lut(np, NULL, num_regs, base, flags); 1079 1027 } 1080 1028 1029 + void rk3576_rst_init(struct device_node *np, void __iomem *reg_base); 1081 1030 void rk3588_rst_init(struct device_node *np, void __iomem *reg_base); 1082 1031 1083 1032 #endif
+651
drivers/clk/rockchip/rst-rk3576.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-or-later 2 + /* 3 + * Copyright (c) 2021 Rockchip Electronics Co., Ltd. 4 + * Copyright (c) 2024 Collabora Ltd. 5 + * Author: Detlev Casanova <detlev.casanova@collabora.com> 6 + * Based on Sebastien Reichel's implementation for RK3588 7 + */ 8 + 9 + #include <linux/module.h> 10 + #include <linux/of.h> 11 + #include <dt-bindings/reset/rockchip,rk3576-cru.h> 12 + #include "clk.h" 13 + 14 + /* 0x27200000 + 0x0A00 */ 15 + #define RK3576_CRU_RESET_OFFSET(id, reg, bit) [id] = (0 + reg * 16 + bit) 16 + /* 0x27208000 + 0x0A00 */ 17 + #define RK3576_PHPCRU_RESET_OFFSET(id, reg, bit) [id] = (0x8000*4 + reg * 16 + bit) 18 + /* 0x27210000 + 0x0A00 */ 19 + #define RK3576_SECURENSCRU_RESET_OFFSET(id, reg, bit) [id] = (0x10000*4 + reg * 16 + bit) 20 + /* 0x27220000 + 0x0A00 */ 21 + #define RK3576_PMU1CRU_RESET_OFFSET(id, reg, bit) [id] = (0x20000*4 + reg * 16 + bit) 22 + 23 + /* mapping table for reset ID to register offset */ 24 + static const int rk3576_register_offset[] = { 25 + /* SOFTRST_CON01 */ 26 + RK3576_CRU_RESET_OFFSET(SRST_A_TOP_BIU, 1, 3), 27 + RK3576_CRU_RESET_OFFSET(SRST_P_TOP_BIU, 1, 5), 28 + RK3576_CRU_RESET_OFFSET(SRST_A_TOP_MID_BIU, 1, 6), 29 + RK3576_CRU_RESET_OFFSET(SRST_A_SECURE_HIGH_BIU, 1, 7), 30 + RK3576_CRU_RESET_OFFSET(SRST_H_TOP_BIU, 1, 14), 31 + 32 + /* SOFTRST_CON02 */ 33 + RK3576_CRU_RESET_OFFSET(SRST_H_VO0VOP_CHANNEL_BIU, 2, 0), 34 + RK3576_CRU_RESET_OFFSET(SRST_A_VO0VOP_CHANNEL_BIU, 2, 1), 35 + 36 + /* SOFTRST_CON06 */ 37 + RK3576_CRU_RESET_OFFSET(SRST_BISRINTF, 6, 2), 38 + 39 + /* SOFTRST_CON07 */ 40 + RK3576_CRU_RESET_OFFSET(SRST_H_AUDIO_BIU, 7, 2), 41 + RK3576_CRU_RESET_OFFSET(SRST_H_ASRC_2CH_0, 7, 3), 42 + RK3576_CRU_RESET_OFFSET(SRST_H_ASRC_2CH_1, 7, 4), 43 + RK3576_CRU_RESET_OFFSET(SRST_H_ASRC_4CH_0, 7, 5), 44 + RK3576_CRU_RESET_OFFSET(SRST_H_ASRC_4CH_1, 7, 6), 45 + RK3576_CRU_RESET_OFFSET(SRST_ASRC_2CH_0, 7, 7), 46 + RK3576_CRU_RESET_OFFSET(SRST_ASRC_2CH_1, 7, 8), 47 + RK3576_CRU_RESET_OFFSET(SRST_ASRC_4CH_0, 7, 9), 48 + RK3576_CRU_RESET_OFFSET(SRST_ASRC_4CH_1, 7, 10), 49 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI0_8CH, 7, 12), 50 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI0_8CH, 7, 13), 51 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_RX0, 7, 14), 52 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_RX0, 7, 15), 53 + 54 + /* SOFTRST_CON08 */ 55 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_RX1, 8, 0), 56 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_RX1, 8, 1), 57 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI1_8CH, 8, 5), 58 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI1_8CH, 8, 6), 59 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI2_2CH, 8, 8), 60 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI2_2CH, 8, 10), 61 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI3_2CH, 8, 12), 62 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI3_2CH, 8, 14), 63 + 64 + /* SOFTRST_CON09 */ 65 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI4_2CH, 9, 0), 66 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI4_2CH, 9, 2), 67 + RK3576_CRU_RESET_OFFSET(SRST_H_ACDCDIG_DSM, 9, 3), 68 + RK3576_CRU_RESET_OFFSET(SRST_M_ACDCDIG_DSM, 9, 4), 69 + RK3576_CRU_RESET_OFFSET(SRST_PDM1, 9, 5), 70 + RK3576_CRU_RESET_OFFSET(SRST_H_PDM1, 9, 7), 71 + RK3576_CRU_RESET_OFFSET(SRST_M_PDM1, 9, 8), 72 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX0, 9, 9), 73 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX0, 9, 10), 74 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX1, 9, 11), 75 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX1, 9, 12), 76 + 77 + /* SOFTRST_CON11 */ 78 + RK3576_CRU_RESET_OFFSET(SRST_A_BUS_BIU, 11, 3), 79 + RK3576_CRU_RESET_OFFSET(SRST_P_BUS_BIU, 11, 4), 80 + RK3576_CRU_RESET_OFFSET(SRST_P_CRU, 11, 5), 81 + RK3576_CRU_RESET_OFFSET(SRST_H_CAN0, 11, 6), 82 + RK3576_CRU_RESET_OFFSET(SRST_CAN0, 11, 7), 83 + RK3576_CRU_RESET_OFFSET(SRST_H_CAN1, 11, 8), 84 + RK3576_CRU_RESET_OFFSET(SRST_CAN1, 11, 9), 85 + RK3576_CRU_RESET_OFFSET(SRST_P_INTMUX2BUS, 11, 12), 86 + RK3576_CRU_RESET_OFFSET(SRST_P_VCCIO_IOC, 11, 13), 87 + RK3576_CRU_RESET_OFFSET(SRST_H_BUS_BIU, 11, 14), 88 + RK3576_CRU_RESET_OFFSET(SRST_KEY_SHIFT, 11, 15), 89 + 90 + /* SOFTRST_CON12 */ 91 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C1, 12, 0), 92 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C2, 12, 1), 93 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C3, 12, 2), 94 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C4, 12, 3), 95 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C5, 12, 4), 96 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C6, 12, 5), 97 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C7, 12, 6), 98 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C8, 12, 7), 99 + RK3576_CRU_RESET_OFFSET(SRST_P_I2C9, 12, 8), 100 + RK3576_CRU_RESET_OFFSET(SRST_P_WDT_BUSMCU, 12, 9), 101 + RK3576_CRU_RESET_OFFSET(SRST_T_WDT_BUSMCU, 12, 10), 102 + RK3576_CRU_RESET_OFFSET(SRST_A_GIC, 12, 11), 103 + RK3576_CRU_RESET_OFFSET(SRST_I2C1, 12, 12), 104 + RK3576_CRU_RESET_OFFSET(SRST_I2C2, 12, 13), 105 + RK3576_CRU_RESET_OFFSET(SRST_I2C3, 12, 14), 106 + RK3576_CRU_RESET_OFFSET(SRST_I2C4, 12, 15), 107 + 108 + /* SOFTRST_CON13 */ 109 + RK3576_CRU_RESET_OFFSET(SRST_I2C5, 13, 0), 110 + RK3576_CRU_RESET_OFFSET(SRST_I2C6, 13, 1), 111 + RK3576_CRU_RESET_OFFSET(SRST_I2C7, 13, 2), 112 + RK3576_CRU_RESET_OFFSET(SRST_I2C8, 13, 3), 113 + RK3576_CRU_RESET_OFFSET(SRST_I2C9, 13, 4), 114 + RK3576_CRU_RESET_OFFSET(SRST_P_SARADC, 13, 6), 115 + RK3576_CRU_RESET_OFFSET(SRST_SARADC, 13, 7), 116 + RK3576_CRU_RESET_OFFSET(SRST_P_TSADC, 13, 8), 117 + RK3576_CRU_RESET_OFFSET(SRST_TSADC, 13, 9), 118 + RK3576_CRU_RESET_OFFSET(SRST_P_UART0, 13, 10), 119 + RK3576_CRU_RESET_OFFSET(SRST_P_UART2, 13, 11), 120 + RK3576_CRU_RESET_OFFSET(SRST_P_UART3, 13, 12), 121 + RK3576_CRU_RESET_OFFSET(SRST_P_UART4, 13, 13), 122 + RK3576_CRU_RESET_OFFSET(SRST_P_UART5, 13, 14), 123 + RK3576_CRU_RESET_OFFSET(SRST_P_UART6, 13, 15), 124 + 125 + /* SOFTRST_CON14 */ 126 + RK3576_CRU_RESET_OFFSET(SRST_P_UART7, 14, 0), 127 + RK3576_CRU_RESET_OFFSET(SRST_P_UART8, 14, 1), 128 + RK3576_CRU_RESET_OFFSET(SRST_P_UART9, 14, 2), 129 + RK3576_CRU_RESET_OFFSET(SRST_P_UART10, 14, 3), 130 + RK3576_CRU_RESET_OFFSET(SRST_P_UART11, 14, 4), 131 + RK3576_CRU_RESET_OFFSET(SRST_S_UART0, 14, 5), 132 + RK3576_CRU_RESET_OFFSET(SRST_S_UART2, 14, 6), 133 + RK3576_CRU_RESET_OFFSET(SRST_S_UART3, 14, 9), 134 + RK3576_CRU_RESET_OFFSET(SRST_S_UART4, 14, 12), 135 + RK3576_CRU_RESET_OFFSET(SRST_S_UART5, 14, 15), 136 + 137 + /* SOFTRST_CON15 */ 138 + RK3576_CRU_RESET_OFFSET(SRST_S_UART6, 15, 2), 139 + RK3576_CRU_RESET_OFFSET(SRST_S_UART7, 15, 5), 140 + RK3576_CRU_RESET_OFFSET(SRST_S_UART8, 15, 8), 141 + RK3576_CRU_RESET_OFFSET(SRST_S_UART9, 15, 9), 142 + RK3576_CRU_RESET_OFFSET(SRST_S_UART10, 15, 10), 143 + RK3576_CRU_RESET_OFFSET(SRST_S_UART11, 15, 11), 144 + RK3576_CRU_RESET_OFFSET(SRST_P_SPI0, 15, 13), 145 + RK3576_CRU_RESET_OFFSET(SRST_P_SPI1, 15, 14), 146 + RK3576_CRU_RESET_OFFSET(SRST_P_SPI2, 15, 15), 147 + 148 + /* SOFTRST_CON16 */ 149 + RK3576_CRU_RESET_OFFSET(SRST_P_SPI3, 16, 0), 150 + RK3576_CRU_RESET_OFFSET(SRST_P_SPI4, 16, 1), 151 + RK3576_CRU_RESET_OFFSET(SRST_SPI0, 16, 2), 152 + RK3576_CRU_RESET_OFFSET(SRST_SPI1, 16, 3), 153 + RK3576_CRU_RESET_OFFSET(SRST_SPI2, 16, 4), 154 + RK3576_CRU_RESET_OFFSET(SRST_SPI3, 16, 5), 155 + RK3576_CRU_RESET_OFFSET(SRST_SPI4, 16, 6), 156 + RK3576_CRU_RESET_OFFSET(SRST_P_WDT0, 16, 7), 157 + RK3576_CRU_RESET_OFFSET(SRST_T_WDT0, 16, 8), 158 + RK3576_CRU_RESET_OFFSET(SRST_P_SYS_GRF, 16, 9), 159 + RK3576_CRU_RESET_OFFSET(SRST_P_PWM1, 16, 10), 160 + RK3576_CRU_RESET_OFFSET(SRST_PWM1, 16, 11), 161 + 162 + /* SOFTRST_CON17 */ 163 + RK3576_CRU_RESET_OFFSET(SRST_P_BUSTIMER0, 17, 3), 164 + RK3576_CRU_RESET_OFFSET(SRST_P_BUSTIMER1, 17, 4), 165 + RK3576_CRU_RESET_OFFSET(SRST_TIMER0, 17, 6), 166 + RK3576_CRU_RESET_OFFSET(SRST_TIMER1, 17, 7), 167 + RK3576_CRU_RESET_OFFSET(SRST_TIMER2, 17, 8), 168 + RK3576_CRU_RESET_OFFSET(SRST_TIMER3, 17, 9), 169 + RK3576_CRU_RESET_OFFSET(SRST_TIMER4, 17, 10), 170 + RK3576_CRU_RESET_OFFSET(SRST_TIMER5, 17, 11), 171 + RK3576_CRU_RESET_OFFSET(SRST_P_BUSIOC, 17, 12), 172 + RK3576_CRU_RESET_OFFSET(SRST_P_MAILBOX0, 17, 13), 173 + RK3576_CRU_RESET_OFFSET(SRST_P_GPIO1, 17, 15), 174 + 175 + /* SOFTRST_CON18 */ 176 + RK3576_CRU_RESET_OFFSET(SRST_GPIO1, 18, 0), 177 + RK3576_CRU_RESET_OFFSET(SRST_P_GPIO2, 18, 1), 178 + RK3576_CRU_RESET_OFFSET(SRST_GPIO2, 18, 2), 179 + RK3576_CRU_RESET_OFFSET(SRST_P_GPIO3, 18, 3), 180 + RK3576_CRU_RESET_OFFSET(SRST_GPIO3, 18, 4), 181 + RK3576_CRU_RESET_OFFSET(SRST_P_GPIO4, 18, 5), 182 + RK3576_CRU_RESET_OFFSET(SRST_GPIO4, 18, 6), 183 + RK3576_CRU_RESET_OFFSET(SRST_A_DECOM, 18, 7), 184 + RK3576_CRU_RESET_OFFSET(SRST_P_DECOM, 18, 8), 185 + RK3576_CRU_RESET_OFFSET(SRST_D_DECOM, 18, 9), 186 + RK3576_CRU_RESET_OFFSET(SRST_TIMER6, 18, 11), 187 + RK3576_CRU_RESET_OFFSET(SRST_TIMER7, 18, 12), 188 + RK3576_CRU_RESET_OFFSET(SRST_TIMER8, 18, 13), 189 + RK3576_CRU_RESET_OFFSET(SRST_TIMER9, 18, 14), 190 + RK3576_CRU_RESET_OFFSET(SRST_TIMER10, 18, 15), 191 + 192 + /* SOFTRST_CON19 */ 193 + RK3576_CRU_RESET_OFFSET(SRST_TIMER11, 19, 0), 194 + RK3576_CRU_RESET_OFFSET(SRST_A_DMAC0, 19, 1), 195 + RK3576_CRU_RESET_OFFSET(SRST_A_DMAC1, 19, 2), 196 + RK3576_CRU_RESET_OFFSET(SRST_A_DMAC2, 19, 3), 197 + RK3576_CRU_RESET_OFFSET(SRST_A_SPINLOCK, 19, 4), 198 + RK3576_CRU_RESET_OFFSET(SRST_REF_PVTPLL_BUS, 19, 5), 199 + RK3576_CRU_RESET_OFFSET(SRST_H_I3C0, 19, 7), 200 + RK3576_CRU_RESET_OFFSET(SRST_H_I3C1, 19, 9), 201 + RK3576_CRU_RESET_OFFSET(SRST_H_BUS_CM0_BIU, 19, 11), 202 + RK3576_CRU_RESET_OFFSET(SRST_F_BUS_CM0_CORE, 19, 12), 203 + RK3576_CRU_RESET_OFFSET(SRST_T_BUS_CM0_JTAG, 19, 13), 204 + 205 + /* SOFTRST_CON20 */ 206 + RK3576_CRU_RESET_OFFSET(SRST_P_INTMUX2PMU, 20, 0), 207 + RK3576_CRU_RESET_OFFSET(SRST_P_INTMUX2DDR, 20, 1), 208 + RK3576_CRU_RESET_OFFSET(SRST_P_PVTPLL_BUS, 20, 3), 209 + RK3576_CRU_RESET_OFFSET(SRST_P_PWM2, 20, 4), 210 + RK3576_CRU_RESET_OFFSET(SRST_PWM2, 20, 5), 211 + RK3576_CRU_RESET_OFFSET(SRST_FREQ_PWM1, 20, 8), 212 + RK3576_CRU_RESET_OFFSET(SRST_COUNTER_PWM1, 20, 9), 213 + RK3576_CRU_RESET_OFFSET(SRST_I3C0, 20, 12), 214 + RK3576_CRU_RESET_OFFSET(SRST_I3C1, 20, 13), 215 + 216 + /* SOFTRST_CON21 */ 217 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_MON_CH0, 21, 1), 218 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_BIU, 21, 2), 219 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_UPCTL_CH0, 21, 3), 220 + RK3576_CRU_RESET_OFFSET(SRST_TM_DDR_MON_CH0, 21, 4), 221 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_BIU, 21, 5), 222 + RK3576_CRU_RESET_OFFSET(SRST_DFI_CH0, 21, 6), 223 + RK3576_CRU_RESET_OFFSET(SRST_DDR_MON_CH0, 21, 10), 224 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_HWLP_CH0, 21, 13), 225 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_MON_CH1, 21, 14), 226 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_HWLP_CH1, 21, 15), 227 + 228 + /* SOFTRST_CON22 */ 229 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_UPCTL_CH1, 22, 0), 230 + RK3576_CRU_RESET_OFFSET(SRST_TM_DDR_MON_CH1, 22, 1), 231 + RK3576_CRU_RESET_OFFSET(SRST_DFI_CH1, 22, 2), 232 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR01_MSCH0, 22, 3), 233 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR01_MSCH1, 22, 4), 234 + RK3576_CRU_RESET_OFFSET(SRST_DDR_MON_CH1, 22, 6), 235 + RK3576_CRU_RESET_OFFSET(SRST_DDR_SCRAMBLE_CH0, 22, 9), 236 + RK3576_CRU_RESET_OFFSET(SRST_DDR_SCRAMBLE_CH1, 22, 10), 237 + RK3576_CRU_RESET_OFFSET(SRST_P_AHB2APB, 22, 12), 238 + RK3576_CRU_RESET_OFFSET(SRST_H_AHB2APB, 22, 13), 239 + RK3576_CRU_RESET_OFFSET(SRST_H_DDR_BIU, 22, 14), 240 + RK3576_CRU_RESET_OFFSET(SRST_F_DDR_CM0_CORE, 22, 15), 241 + 242 + /* SOFTRST_CON23 */ 243 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR01_MSCH0, 23, 1), 244 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR01_MSCH1, 23, 2), 245 + RK3576_CRU_RESET_OFFSET(SRST_DDR_TIMER0, 23, 4), 246 + RK3576_CRU_RESET_OFFSET(SRST_DDR_TIMER1, 23, 5), 247 + RK3576_CRU_RESET_OFFSET(SRST_T_WDT_DDR, 23, 6), 248 + RK3576_CRU_RESET_OFFSET(SRST_P_WDT, 23, 7), 249 + RK3576_CRU_RESET_OFFSET(SRST_P_TIMER, 23, 8), 250 + RK3576_CRU_RESET_OFFSET(SRST_T_DDR_CM0_JTAG, 23, 9), 251 + RK3576_CRU_RESET_OFFSET(SRST_P_DDR_GRF, 23, 11), 252 + 253 + /* SOFTRST_CON25 */ 254 + RK3576_CRU_RESET_OFFSET(SRST_DDR_UPCTL_CH0, 25, 1), 255 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_0_CH0, 25, 2), 256 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_1_CH0, 25, 3), 257 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_2_CH0, 25, 4), 258 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_3_CH0, 25, 5), 259 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_4_CH0, 25, 6), 260 + 261 + /* SOFTRST_CON26 */ 262 + RK3576_CRU_RESET_OFFSET(SRST_DDR_UPCTL_CH1, 26, 1), 263 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_0_CH1, 26, 2), 264 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_1_CH1, 26, 3), 265 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_2_CH1, 26, 4), 266 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_3_CH1, 26, 5), 267 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_UPCTL_4_CH1, 26, 6), 268 + 269 + /* SOFTRST_CON27 */ 270 + RK3576_CRU_RESET_OFFSET(SRST_REF_PVTPLL_DDR, 27, 0), 271 + RK3576_CRU_RESET_OFFSET(SRST_P_PVTPLL_DDR, 27, 1), 272 + 273 + /* SOFTRST_CON28 */ 274 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNN0, 28, 9), 275 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNN0_BIU, 28, 11), 276 + RK3576_CRU_RESET_OFFSET(SRST_L_RKNN0_BIU, 28, 12), 277 + 278 + /* SOFTRST_CON29 */ 279 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNN1, 29, 0), 280 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNN1_BIU, 29, 2), 281 + RK3576_CRU_RESET_OFFSET(SRST_L_RKNN1_BIU, 29, 3), 282 + 283 + /* SOFTRST_CON31 */ 284 + RK3576_CRU_RESET_OFFSET(SRST_NPU_DAP, 31, 0), 285 + RK3576_CRU_RESET_OFFSET(SRST_L_NPUSUBSYS_BIU, 31, 1), 286 + RK3576_CRU_RESET_OFFSET(SRST_P_NPUTOP_BIU, 31, 9), 287 + RK3576_CRU_RESET_OFFSET(SRST_P_NPU_TIMER, 31, 10), 288 + RK3576_CRU_RESET_OFFSET(SRST_NPUTIMER0, 31, 12), 289 + RK3576_CRU_RESET_OFFSET(SRST_NPUTIMER1, 31, 13), 290 + RK3576_CRU_RESET_OFFSET(SRST_P_NPU_WDT, 31, 14), 291 + RK3576_CRU_RESET_OFFSET(SRST_T_NPU_WDT, 31, 15), 292 + 293 + /* SOFTRST_CON32 */ 294 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNN_CBUF, 32, 0), 295 + RK3576_CRU_RESET_OFFSET(SRST_A_RVCORE0, 32, 1), 296 + RK3576_CRU_RESET_OFFSET(SRST_P_NPU_GRF, 32, 2), 297 + RK3576_CRU_RESET_OFFSET(SRST_P_PVTPLL_NPU, 32, 3), 298 + RK3576_CRU_RESET_OFFSET(SRST_NPU_PVTPLL, 32, 4), 299 + RK3576_CRU_RESET_OFFSET(SRST_H_NPU_CM0_BIU, 32, 6), 300 + RK3576_CRU_RESET_OFFSET(SRST_F_NPU_CM0_CORE, 32, 7), 301 + RK3576_CRU_RESET_OFFSET(SRST_T_NPU_CM0_JTAG, 32, 8), 302 + RK3576_CRU_RESET_OFFSET(SRST_A_RKNNTOP_BIU, 32, 11), 303 + RK3576_CRU_RESET_OFFSET(SRST_H_RKNN_CBUF, 32, 12), 304 + RK3576_CRU_RESET_OFFSET(SRST_H_RKNNTOP_BIU, 32, 13), 305 + 306 + /* SOFTRST_CON33 */ 307 + RK3576_CRU_RESET_OFFSET(SRST_H_NVM_BIU, 33, 2), 308 + RK3576_CRU_RESET_OFFSET(SRST_A_NVM_BIU, 33, 3), 309 + RK3576_CRU_RESET_OFFSET(SRST_S_FSPI, 33, 6), 310 + RK3576_CRU_RESET_OFFSET(SRST_H_FSPI, 33, 7), 311 + RK3576_CRU_RESET_OFFSET(SRST_C_EMMC, 33, 8), 312 + RK3576_CRU_RESET_OFFSET(SRST_H_EMMC, 33, 9), 313 + RK3576_CRU_RESET_OFFSET(SRST_A_EMMC, 33, 10), 314 + RK3576_CRU_RESET_OFFSET(SRST_B_EMMC, 33, 11), 315 + RK3576_CRU_RESET_OFFSET(SRST_T_EMMC, 33, 12), 316 + 317 + /* SOFTRST_CON34 */ 318 + RK3576_CRU_RESET_OFFSET(SRST_P_GRF, 34, 1), 319 + RK3576_CRU_RESET_OFFSET(SRST_P_PHP_BIU, 34, 5), 320 + RK3576_CRU_RESET_OFFSET(SRST_A_PHP_BIU, 34, 9), 321 + RK3576_CRU_RESET_OFFSET(SRST_P_PCIE0, 34, 13), 322 + RK3576_CRU_RESET_OFFSET(SRST_PCIE0_POWER_UP, 34, 15), 323 + 324 + /* SOFTRST_CON35 */ 325 + RK3576_CRU_RESET_OFFSET(SRST_A_USB3OTG1, 35, 3), 326 + RK3576_CRU_RESET_OFFSET(SRST_A_MMU0, 35, 11), 327 + RK3576_CRU_RESET_OFFSET(SRST_A_SLV_MMU0, 35, 13), 328 + RK3576_CRU_RESET_OFFSET(SRST_A_MMU1, 35, 14), 329 + 330 + /* SOFTRST_CON36 */ 331 + RK3576_CRU_RESET_OFFSET(SRST_A_SLV_MMU1, 36, 0), 332 + RK3576_CRU_RESET_OFFSET(SRST_P_PCIE1, 36, 7), 333 + RK3576_CRU_RESET_OFFSET(SRST_PCIE1_POWER_UP, 36, 9), 334 + 335 + /* SOFTRST_CON37 */ 336 + RK3576_CRU_RESET_OFFSET(SRST_RXOOB0, 37, 0), 337 + RK3576_CRU_RESET_OFFSET(SRST_RXOOB1, 37, 1), 338 + RK3576_CRU_RESET_OFFSET(SRST_PMALIVE0, 37, 2), 339 + RK3576_CRU_RESET_OFFSET(SRST_PMALIVE1, 37, 3), 340 + RK3576_CRU_RESET_OFFSET(SRST_A_SATA0, 37, 4), 341 + RK3576_CRU_RESET_OFFSET(SRST_A_SATA1, 37, 5), 342 + RK3576_CRU_RESET_OFFSET(SRST_ASIC1, 37, 6), 343 + RK3576_CRU_RESET_OFFSET(SRST_ASIC0, 37, 7), 344 + 345 + /* SOFTRST_CON40 */ 346 + RK3576_CRU_RESET_OFFSET(SRST_P_CSIDPHY1, 40, 2), 347 + RK3576_CRU_RESET_OFFSET(SRST_SCAN_CSIDPHY1, 40, 3), 348 + 349 + /* SOFTRST_CON42 */ 350 + RK3576_CRU_RESET_OFFSET(SRST_P_SDGMAC_GRF, 42, 3), 351 + RK3576_CRU_RESET_OFFSET(SRST_P_SDGMAC_BIU, 42, 4), 352 + RK3576_CRU_RESET_OFFSET(SRST_A_SDGMAC_BIU, 42, 5), 353 + RK3576_CRU_RESET_OFFSET(SRST_H_SDGMAC_BIU, 42, 6), 354 + RK3576_CRU_RESET_OFFSET(SRST_A_GMAC0, 42, 7), 355 + RK3576_CRU_RESET_OFFSET(SRST_A_GMAC1, 42, 8), 356 + RK3576_CRU_RESET_OFFSET(SRST_P_GMAC0, 42, 9), 357 + RK3576_CRU_RESET_OFFSET(SRST_P_GMAC1, 42, 10), 358 + RK3576_CRU_RESET_OFFSET(SRST_H_SDIO, 42, 12), 359 + 360 + /* SOFTRST_CON43 */ 361 + RK3576_CRU_RESET_OFFSET(SRST_H_SDMMC0, 43, 2), 362 + RK3576_CRU_RESET_OFFSET(SRST_S_FSPI1, 43, 3), 363 + RK3576_CRU_RESET_OFFSET(SRST_H_FSPI1, 43, 4), 364 + RK3576_CRU_RESET_OFFSET(SRST_A_DSMC_BIU, 43, 6), 365 + RK3576_CRU_RESET_OFFSET(SRST_A_DSMC, 43, 7), 366 + RK3576_CRU_RESET_OFFSET(SRST_P_DSMC, 43, 8), 367 + RK3576_CRU_RESET_OFFSET(SRST_H_HSGPIO, 43, 10), 368 + RK3576_CRU_RESET_OFFSET(SRST_HSGPIO, 43, 11), 369 + RK3576_CRU_RESET_OFFSET(SRST_A_HSGPIO, 43, 13), 370 + 371 + /* SOFTRST_CON45 */ 372 + RK3576_CRU_RESET_OFFSET(SRST_H_RKVDEC, 45, 3), 373 + RK3576_CRU_RESET_OFFSET(SRST_H_RKVDEC_BIU, 45, 5), 374 + RK3576_CRU_RESET_OFFSET(SRST_A_RKVDEC_BIU, 45, 6), 375 + RK3576_CRU_RESET_OFFSET(SRST_RKVDEC_HEVC_CA, 45, 8), 376 + RK3576_CRU_RESET_OFFSET(SRST_RKVDEC_CORE, 45, 9), 377 + 378 + /* SOFTRST_CON47 */ 379 + RK3576_CRU_RESET_OFFSET(SRST_A_USB_BIU, 47, 3), 380 + RK3576_CRU_RESET_OFFSET(SRST_P_USBUFS_BIU, 47, 4), 381 + RK3576_CRU_RESET_OFFSET(SRST_A_USB3OTG0, 47, 5), 382 + RK3576_CRU_RESET_OFFSET(SRST_A_UFS_BIU, 47, 10), 383 + RK3576_CRU_RESET_OFFSET(SRST_A_MMU2, 47, 12), 384 + RK3576_CRU_RESET_OFFSET(SRST_A_SLV_MMU2, 47, 13), 385 + RK3576_CRU_RESET_OFFSET(SRST_A_UFS_SYS, 47, 15), 386 + 387 + /* SOFTRST_CON48 */ 388 + RK3576_CRU_RESET_OFFSET(SRST_A_UFS, 48, 0), 389 + RK3576_CRU_RESET_OFFSET(SRST_P_USBUFS_GRF, 48, 1), 390 + RK3576_CRU_RESET_OFFSET(SRST_P_UFS_GRF, 48, 2), 391 + 392 + /* SOFTRST_CON49 */ 393 + RK3576_CRU_RESET_OFFSET(SRST_H_VPU_BIU, 49, 6), 394 + RK3576_CRU_RESET_OFFSET(SRST_A_JPEG_BIU, 49, 7), 395 + RK3576_CRU_RESET_OFFSET(SRST_A_RGA_BIU, 49, 10), 396 + RK3576_CRU_RESET_OFFSET(SRST_A_VDPP_BIU, 49, 11), 397 + RK3576_CRU_RESET_OFFSET(SRST_A_EBC_BIU, 49, 12), 398 + RK3576_CRU_RESET_OFFSET(SRST_H_RGA2E_0, 49, 13), 399 + RK3576_CRU_RESET_OFFSET(SRST_A_RGA2E_0, 49, 14), 400 + RK3576_CRU_RESET_OFFSET(SRST_CORE_RGA2E_0, 49, 15), 401 + 402 + /* SOFTRST_CON50 */ 403 + RK3576_CRU_RESET_OFFSET(SRST_A_JPEG, 50, 0), 404 + RK3576_CRU_RESET_OFFSET(SRST_H_JPEG, 50, 1), 405 + RK3576_CRU_RESET_OFFSET(SRST_H_VDPP, 50, 2), 406 + RK3576_CRU_RESET_OFFSET(SRST_A_VDPP, 50, 3), 407 + RK3576_CRU_RESET_OFFSET(SRST_CORE_VDPP, 50, 4), 408 + RK3576_CRU_RESET_OFFSET(SRST_H_RGA2E_1, 50, 5), 409 + RK3576_CRU_RESET_OFFSET(SRST_A_RGA2E_1, 50, 6), 410 + RK3576_CRU_RESET_OFFSET(SRST_CORE_RGA2E_1, 50, 7), 411 + RK3576_CRU_RESET_OFFSET(SRST_H_EBC, 50, 10), 412 + RK3576_CRU_RESET_OFFSET(SRST_A_EBC, 50, 11), 413 + RK3576_CRU_RESET_OFFSET(SRST_D_EBC, 50, 12), 414 + 415 + /* SOFTRST_CON51 */ 416 + RK3576_CRU_RESET_OFFSET(SRST_H_VEPU0_BIU, 51, 2), 417 + RK3576_CRU_RESET_OFFSET(SRST_A_VEPU0_BIU, 51, 3), 418 + RK3576_CRU_RESET_OFFSET(SRST_H_VEPU0, 51, 4), 419 + RK3576_CRU_RESET_OFFSET(SRST_A_VEPU0, 51, 5), 420 + RK3576_CRU_RESET_OFFSET(SRST_VEPU0_CORE, 51, 6), 421 + 422 + /* SOFTRST_CON53 */ 423 + RK3576_CRU_RESET_OFFSET(SRST_A_VI_BIU, 53, 3), 424 + RK3576_CRU_RESET_OFFSET(SRST_H_VI_BIU, 53, 4), 425 + RK3576_CRU_RESET_OFFSET(SRST_P_VI_BIU, 53, 5), 426 + RK3576_CRU_RESET_OFFSET(SRST_D_VICAP, 53, 6), 427 + RK3576_CRU_RESET_OFFSET(SRST_A_VICAP, 53, 7), 428 + RK3576_CRU_RESET_OFFSET(SRST_H_VICAP, 53, 8), 429 + RK3576_CRU_RESET_OFFSET(SRST_ISP0, 53, 10), 430 + RK3576_CRU_RESET_OFFSET(SRST_ISP0_VICAP, 53, 11), 431 + 432 + /* SOFTRST_CON54 */ 433 + RK3576_CRU_RESET_OFFSET(SRST_CORE_VPSS, 54, 1), 434 + RK3576_CRU_RESET_OFFSET(SRST_P_CSI_HOST_0, 54, 4), 435 + RK3576_CRU_RESET_OFFSET(SRST_P_CSI_HOST_1, 54, 5), 436 + RK3576_CRU_RESET_OFFSET(SRST_P_CSI_HOST_2, 54, 6), 437 + RK3576_CRU_RESET_OFFSET(SRST_P_CSI_HOST_3, 54, 7), 438 + RK3576_CRU_RESET_OFFSET(SRST_P_CSI_HOST_4, 54, 8), 439 + 440 + /* SOFTRST_CON59 */ 441 + RK3576_CRU_RESET_OFFSET(SRST_CIFIN, 59, 0), 442 + RK3576_CRU_RESET_OFFSET(SRST_VICAP_I0CLK, 59, 1), 443 + RK3576_CRU_RESET_OFFSET(SRST_VICAP_I1CLK, 59, 2), 444 + RK3576_CRU_RESET_OFFSET(SRST_VICAP_I2CLK, 59, 3), 445 + RK3576_CRU_RESET_OFFSET(SRST_VICAP_I3CLK, 59, 4), 446 + RK3576_CRU_RESET_OFFSET(SRST_VICAP_I4CLK, 59, 5), 447 + 448 + /* SOFTRST_CON61 */ 449 + RK3576_CRU_RESET_OFFSET(SRST_A_VOP_BIU, 61, 4), 450 + RK3576_CRU_RESET_OFFSET(SRST_A_VOP2_BIU, 61, 5), 451 + RK3576_CRU_RESET_OFFSET(SRST_H_VOP_BIU, 61, 6), 452 + RK3576_CRU_RESET_OFFSET(SRST_P_VOP_BIU, 61, 7), 453 + RK3576_CRU_RESET_OFFSET(SRST_H_VOP, 61, 8), 454 + RK3576_CRU_RESET_OFFSET(SRST_A_VOP, 61, 9), 455 + RK3576_CRU_RESET_OFFSET(SRST_D_VP0, 61, 13), 456 + 457 + /* SOFTRST_CON62 */ 458 + RK3576_CRU_RESET_OFFSET(SRST_D_VP1, 62, 0), 459 + RK3576_CRU_RESET_OFFSET(SRST_D_VP2, 62, 1), 460 + RK3576_CRU_RESET_OFFSET(SRST_P_VOP2_BIU, 62, 2), 461 + RK3576_CRU_RESET_OFFSET(SRST_P_VOPGRF, 62, 3), 462 + 463 + /* SOFTRST_CON63 */ 464 + RK3576_CRU_RESET_OFFSET(SRST_H_VO0_BIU, 63, 5), 465 + RK3576_CRU_RESET_OFFSET(SRST_P_VO0_BIU, 63, 7), 466 + RK3576_CRU_RESET_OFFSET(SRST_A_HDCP0_BIU, 63, 9), 467 + RK3576_CRU_RESET_OFFSET(SRST_P_VO0_GRF, 63, 10), 468 + RK3576_CRU_RESET_OFFSET(SRST_A_HDCP0, 63, 12), 469 + RK3576_CRU_RESET_OFFSET(SRST_H_HDCP0, 63, 13), 470 + RK3576_CRU_RESET_OFFSET(SRST_HDCP0, 63, 14), 471 + 472 + /* SOFTRST_CON64 */ 473 + RK3576_CRU_RESET_OFFSET(SRST_P_DSIHOST0, 64, 5), 474 + RK3576_CRU_RESET_OFFSET(SRST_DSIHOST0, 64, 6), 475 + RK3576_CRU_RESET_OFFSET(SRST_P_HDMITX0, 64, 7), 476 + RK3576_CRU_RESET_OFFSET(SRST_HDMITX0_REF, 64, 9), 477 + RK3576_CRU_RESET_OFFSET(SRST_P_EDP0, 64, 13), 478 + RK3576_CRU_RESET_OFFSET(SRST_EDP0_24M, 64, 14), 479 + 480 + /* SOFTRST_CON65 */ 481 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI5_8CH, 65, 4), 482 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI5_8CH, 65, 5), 483 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI6_8CH, 65, 8), 484 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI6_8CH, 65, 9), 485 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX2, 65, 10), 486 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX2, 65, 13), 487 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_RX2, 65, 14), 488 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_RX2, 65, 15), 489 + 490 + /* SOFTRST_CON66 */ 491 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI8_8CH, 66, 0), 492 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI8_8CH, 66, 2), 493 + 494 + /* SOFTRST_CON67 */ 495 + RK3576_CRU_RESET_OFFSET(SRST_H_VO1_BIU, 67, 5), 496 + RK3576_CRU_RESET_OFFSET(SRST_P_VO1_BIU, 67, 6), 497 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI7_8CH, 67, 9), 498 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI7_8CH, 67, 10), 499 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX3, 67, 11), 500 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX4, 67, 12), 501 + RK3576_CRU_RESET_OFFSET(SRST_H_SPDIF_TX5, 67, 13), 502 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX3, 67, 14), 503 + 504 + /* SOFTRST_CON68 */ 505 + RK3576_CRU_RESET_OFFSET(SRST_DP0, 68, 0), 506 + RK3576_CRU_RESET_OFFSET(SRST_P_VO1_GRF, 68, 2), 507 + RK3576_CRU_RESET_OFFSET(SRST_A_HDCP1_BIU, 68, 3), 508 + RK3576_CRU_RESET_OFFSET(SRST_A_HDCP1, 68, 4), 509 + RK3576_CRU_RESET_OFFSET(SRST_H_HDCP1, 68, 5), 510 + RK3576_CRU_RESET_OFFSET(SRST_HDCP1, 68, 6), 511 + RK3576_CRU_RESET_OFFSET(SRST_H_SAI9_8CH, 68, 9), 512 + RK3576_CRU_RESET_OFFSET(SRST_M_SAI9_8CH, 68, 11), 513 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX4, 68, 12), 514 + RK3576_CRU_RESET_OFFSET(SRST_M_SPDIF_TX5, 68, 13), 515 + 516 + /* SOFTRST_CON69 */ 517 + RK3576_CRU_RESET_OFFSET(SRST_GPU, 69, 3), 518 + RK3576_CRU_RESET_OFFSET(SRST_A_S_GPU_BIU, 69, 6), 519 + RK3576_CRU_RESET_OFFSET(SRST_A_M0_GPU_BIU, 69, 7), 520 + RK3576_CRU_RESET_OFFSET(SRST_P_GPU_BIU, 69, 9), 521 + RK3576_CRU_RESET_OFFSET(SRST_P_GPU_GRF, 69, 13), 522 + RK3576_CRU_RESET_OFFSET(SRST_GPU_PVTPLL, 69, 14), 523 + RK3576_CRU_RESET_OFFSET(SRST_P_PVTPLL_GPU, 69, 15), 524 + 525 + /* SOFTRST_CON72 */ 526 + RK3576_CRU_RESET_OFFSET(SRST_A_CENTER_BIU, 72, 4), 527 + RK3576_CRU_RESET_OFFSET(SRST_A_DMA2DDR, 72, 5), 528 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_SHAREMEM, 72, 6), 529 + RK3576_CRU_RESET_OFFSET(SRST_A_DDR_SHAREMEM_BIU, 72, 7), 530 + RK3576_CRU_RESET_OFFSET(SRST_H_CENTER_BIU, 72, 8), 531 + RK3576_CRU_RESET_OFFSET(SRST_P_CENTER_GRF, 72, 9), 532 + RK3576_CRU_RESET_OFFSET(SRST_P_DMA2DDR, 72, 10), 533 + RK3576_CRU_RESET_OFFSET(SRST_P_SHAREMEM, 72, 11), 534 + RK3576_CRU_RESET_OFFSET(SRST_P_CENTER_BIU, 72, 12), 535 + 536 + /* SOFTRST_CON75 */ 537 + RK3576_CRU_RESET_OFFSET(SRST_LINKSYM_HDMITXPHY0, 75, 1), 538 + 539 + /* SOFTRST_CON78 */ 540 + RK3576_CRU_RESET_OFFSET(SRST_DP0_PIXELCLK, 78, 1), 541 + RK3576_CRU_RESET_OFFSET(SRST_PHY_DP0_TX, 78, 2), 542 + RK3576_CRU_RESET_OFFSET(SRST_DP1_PIXELCLK, 78, 3), 543 + RK3576_CRU_RESET_OFFSET(SRST_DP2_PIXELCLK, 78, 4), 544 + 545 + /* SOFTRST_CON79 */ 546 + RK3576_CRU_RESET_OFFSET(SRST_H_VEPU1_BIU, 79, 1), 547 + RK3576_CRU_RESET_OFFSET(SRST_A_VEPU1_BIU, 79, 2), 548 + RK3576_CRU_RESET_OFFSET(SRST_H_VEPU1, 79, 3), 549 + RK3576_CRU_RESET_OFFSET(SRST_A_VEPU1, 79, 4), 550 + RK3576_CRU_RESET_OFFSET(SRST_VEPU1_CORE, 79, 5), 551 + 552 + /* PPLL_SOFTRST_CON00 */ 553 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_PHPPHY_CRU, 0, 1), 554 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_APB2ASB_SLV_CHIP_TOP, 0, 3), 555 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_PCIE2_COMBOPHY0, 0, 5), 556 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_PCIE2_COMBOPHY0_GRF, 0, 6), 557 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_PCIE2_COMBOPHY1, 0, 7), 558 + RK3576_PHPCRU_RESET_OFFSET(SRST_P_PCIE2_COMBOPHY1_GRF, 0, 8), 559 + 560 + /* PPLL_SOFTRST_CON01 */ 561 + RK3576_PHPCRU_RESET_OFFSET(SRST_PCIE0_PIPE_PHY, 1, 5), 562 + RK3576_PHPCRU_RESET_OFFSET(SRST_PCIE1_PIPE_PHY, 1, 8), 563 + 564 + /* SECURENS_SOFTRST_CON00 */ 565 + RK3576_SECURENSCRU_RESET_OFFSET(SRST_H_CRYPTO_NS, 0, 3), 566 + RK3576_SECURENSCRU_RESET_OFFSET(SRST_H_TRNG_NS, 0, 4), 567 + RK3576_SECURENSCRU_RESET_OFFSET(SRST_P_OTPC_NS, 0, 8), 568 + RK3576_SECURENSCRU_RESET_OFFSET(SRST_OTPC_NS, 0, 9), 569 + 570 + /* PMU1_SOFTRST_CON00 */ 571 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_HDPTX_GRF, 0, 0), 572 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_HDPTX_APB, 0, 1), 573 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_MIPI_DCPHY, 0, 2), 574 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_DCPHY_GRF, 0, 3), 575 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_BOT0_APB2ASB, 0, 4), 576 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_BOT1_APB2ASB, 0, 5), 577 + RK3576_PMU1CRU_RESET_OFFSET(SRST_USB2DEBUG, 0, 6), 578 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_CSIPHY_GRF, 0, 7), 579 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_CSIPHY, 0, 8), 580 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_USBPHY_GRF_0, 0, 9), 581 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_USBPHY_GRF_1, 0, 10), 582 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_USBDP_GRF, 0, 11), 583 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_USBDPPHY, 0, 12), 584 + RK3576_PMU1CRU_RESET_OFFSET(SRST_USBDP_COMBO_PHY_INIT, 0, 15), 585 + 586 + /* PMU1_SOFTRST_CON01 */ 587 + RK3576_PMU1CRU_RESET_OFFSET(SRST_USBDP_COMBO_PHY_CMN, 1, 0), 588 + RK3576_PMU1CRU_RESET_OFFSET(SRST_USBDP_COMBO_PHY_LANE, 1, 1), 589 + RK3576_PMU1CRU_RESET_OFFSET(SRST_USBDP_COMBO_PHY_PCS, 1, 2), 590 + RK3576_PMU1CRU_RESET_OFFSET(SRST_M_MIPI_DCPHY, 1, 3), 591 + RK3576_PMU1CRU_RESET_OFFSET(SRST_S_MIPI_DCPHY, 1, 4), 592 + RK3576_PMU1CRU_RESET_OFFSET(SRST_SCAN_CSIPHY, 1, 5), 593 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_VCCIO6_IOC, 1, 6), 594 + RK3576_PMU1CRU_RESET_OFFSET(SRST_OTGPHY_0, 1, 7), 595 + RK3576_PMU1CRU_RESET_OFFSET(SRST_OTGPHY_1, 1, 8), 596 + RK3576_PMU1CRU_RESET_OFFSET(SRST_HDPTX_INIT, 1, 9), 597 + RK3576_PMU1CRU_RESET_OFFSET(SRST_HDPTX_CMN, 1, 10), 598 + RK3576_PMU1CRU_RESET_OFFSET(SRST_HDPTX_LANE, 1, 11), 599 + RK3576_PMU1CRU_RESET_OFFSET(SRST_HDMITXHDP, 1, 13), 600 + 601 + /* PMU1_SOFTRST_CON02 */ 602 + RK3576_PMU1CRU_RESET_OFFSET(SRST_MPHY_INIT, 2, 0), 603 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_MPHY_GRF, 2, 1), 604 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_VCCIO7_IOC, 2, 3), 605 + 606 + /* PMU1_SOFTRST_CON03 */ 607 + RK3576_PMU1CRU_RESET_OFFSET(SRST_H_PMU1_BIU, 3, 9), 608 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU1_NIU, 3, 10), 609 + RK3576_PMU1CRU_RESET_OFFSET(SRST_H_PMU_CM0_BIU, 3, 11), 610 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PMU_CM0_CORE, 3, 12), 611 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PMU_CM0_JTAG, 3, 13), 612 + 613 + /* PMU1_SOFTRST_CON04 */ 614 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_CRU_PMU1, 4, 1), 615 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU1_GRF, 4, 3), 616 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU1_IOC, 4, 4), 617 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU1WDT, 4, 5), 618 + RK3576_PMU1CRU_RESET_OFFSET(SRST_T_PMU1WDT, 4, 6), 619 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMUTIMER, 4, 7), 620 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PMUTIMER0, 4, 9), 621 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PMUTIMER1, 4, 10), 622 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU1PWM, 4, 11), 623 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PMU1PWM, 4, 12), 624 + 625 + /* PMU1_SOFTRST_CON05 */ 626 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_I2C0, 5, 1), 627 + RK3576_PMU1CRU_RESET_OFFSET(SRST_I2C0, 5, 2), 628 + RK3576_PMU1CRU_RESET_OFFSET(SRST_S_UART1, 5, 5), 629 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_UART1, 5, 6), 630 + RK3576_PMU1CRU_RESET_OFFSET(SRST_PDM0, 5, 13), 631 + RK3576_PMU1CRU_RESET_OFFSET(SRST_H_PDM0, 5, 15), 632 + 633 + /* PMU1_SOFTRST_CON06 */ 634 + RK3576_PMU1CRU_RESET_OFFSET(SRST_M_PDM0, 6, 0), 635 + RK3576_PMU1CRU_RESET_OFFSET(SRST_H_VAD, 6, 1), 636 + 637 + /* PMU1_SOFTRST_CON07 */ 638 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU0GRF, 7, 4), 639 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_PMU0IOC, 7, 5), 640 + RK3576_PMU1CRU_RESET_OFFSET(SRST_P_GPIO0, 7, 6), 641 + RK3576_PMU1CRU_RESET_OFFSET(SRST_DB_GPIO0, 7, 7), 642 + }; 643 + 644 + void rk3576_rst_init(struct device_node *np, void __iomem *reg_base) 645 + { 646 + rockchip_register_softrst_lut(np, 647 + rk3576_register_offset, 648 + ARRAY_SIZE(rk3576_register_offset), 649 + reg_base + RK3576_SOFTRST_CON(0), 650 + ROCKCHIP_SOFTRST_HIWORD_MASK); 651 + }