^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2016 Rockchip Electronics Co. Ltd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * Author: Xing Zheng <zhengxing@rock-chips.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <linux/clk-provider.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/io.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/of.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include <linux/of_address.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <linux/of_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #include <linux/platform_device.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/regmap.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <dt-bindings/clock/rk3399-cru.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #include "clk.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) enum rk3399_plls {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) lpll, bpll, dpll, cpll, gpll, npll, vpll,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) enum rk3399_pmu_plls {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ppll,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) static struct rockchip_pll_rate_table rk3399_pll_rates[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) /* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd, _frac */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) RK3036_PLL_RATE(2208000000, 1, 92, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) RK3036_PLL_RATE(2184000000, 1, 91, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) RK3036_PLL_RATE(2160000000, 1, 90, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) RK3036_PLL_RATE(2136000000, 1, 89, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) RK3036_PLL_RATE(2112000000, 1, 88, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) RK3036_PLL_RATE(2088000000, 1, 87, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) RK3036_PLL_RATE(2064000000, 1, 86, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) RK3036_PLL_RATE(2040000000, 1, 85, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) RK3036_PLL_RATE(2016000000, 1, 84, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) RK3036_PLL_RATE(1992000000, 1, 83, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) RK3036_PLL_RATE(1968000000, 1, 82, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) RK3036_PLL_RATE(1944000000, 1, 81, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) RK3036_PLL_RATE(1920000000, 1, 80, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) RK3036_PLL_RATE(1896000000, 1, 79, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) RK3036_PLL_RATE(1872000000, 1, 78, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) RK3036_PLL_RATE(1848000000, 1, 77, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) RK3036_PLL_RATE(1824000000, 1, 76, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) RK3036_PLL_RATE(1800000000, 1, 75, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) RK3036_PLL_RATE(1776000000, 1, 74, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) RK3036_PLL_RATE(1752000000, 1, 73, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) RK3036_PLL_RATE(1728000000, 1, 72, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) RK3036_PLL_RATE(1704000000, 1, 71, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) RK3036_PLL_RATE(1680000000, 1, 70, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) RK3036_PLL_RATE(1656000000, 1, 69, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) RK3036_PLL_RATE(1632000000, 1, 68, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) RK3036_PLL_RATE(1608000000, 1, 67, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) RK3036_PLL_RATE(1600000000, 3, 200, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) RK3036_PLL_RATE(1584000000, 1, 66, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) RK3036_PLL_RATE(1560000000, 1, 65, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) RK3036_PLL_RATE(1536000000, 1, 64, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) RK3036_PLL_RATE(1512000000, 1, 63, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) RK3036_PLL_RATE(1488000000, 1, 62, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) RK3036_PLL_RATE(1464000000, 1, 61, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) RK3036_PLL_RATE(1440000000, 1, 60, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) RK3036_PLL_RATE(1416000000, 1, 59, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) RK3036_PLL_RATE(1392000000, 1, 58, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) RK3036_PLL_RATE(1368000000, 1, 57, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) RK3036_PLL_RATE(1344000000, 1, 56, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) RK3036_PLL_RATE(1320000000, 1, 55, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) RK3036_PLL_RATE(1296000000, 1, 54, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) RK3036_PLL_RATE(1272000000, 1, 53, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) RK3036_PLL_RATE(1248000000, 1, 52, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) RK3036_PLL_RATE(1200000000, 1, 50, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) RK3036_PLL_RATE(1188000000, 2, 99, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) RK3036_PLL_RATE(1104000000, 1, 46, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) RK3036_PLL_RATE(1100000000, 12, 550, 1, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) RK3036_PLL_RATE(1008000000, 1, 84, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) RK3036_PLL_RATE(1000000000, 1, 125, 3, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) RK3036_PLL_RATE( 984000000, 1, 82, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) RK3036_PLL_RATE( 960000000, 1, 80, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) RK3036_PLL_RATE( 936000000, 1, 78, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) RK3036_PLL_RATE( 912000000, 1, 76, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) RK3036_PLL_RATE( 900000000, 4, 300, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) RK3036_PLL_RATE( 888000000, 1, 74, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) RK3036_PLL_RATE( 864000000, 1, 72, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) RK3036_PLL_RATE( 840000000, 1, 70, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) RK3036_PLL_RATE( 816000000, 1, 68, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) RK3036_PLL_RATE( 800000000, 1, 100, 3, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) RK3036_PLL_RATE( 700000000, 6, 350, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) RK3036_PLL_RATE( 696000000, 1, 58, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) RK3036_PLL_RATE( 676000000, 3, 169, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) RK3036_PLL_RATE( 600000000, 1, 75, 3, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) RK3036_PLL_RATE( 594000000, 1, 99, 4, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) RK3036_PLL_RATE( 533250000, 8, 711, 4, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) RK3036_PLL_RATE( 504000000, 1, 63, 3, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) RK3036_PLL_RATE( 500000000, 6, 250, 2, 1, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) RK3036_PLL_RATE( 408000000, 1, 68, 2, 2, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) RK3036_PLL_RATE( 312000000, 1, 52, 2, 2, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) RK3036_PLL_RATE( 297000000, 1, 99, 4, 2, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) RK3036_PLL_RATE( 216000000, 1, 72, 4, 2, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) RK3036_PLL_RATE( 148500000, 1, 99, 4, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) RK3036_PLL_RATE( 106500000, 1, 71, 4, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) RK3036_PLL_RATE( 96000000, 1, 64, 4, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) RK3036_PLL_RATE( 74250000, 2, 99, 4, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) RK3036_PLL_RATE( 65000000, 1, 65, 6, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) RK3036_PLL_RATE( 54000000, 1, 54, 6, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) RK3036_PLL_RATE( 27000000, 1, 27, 6, 4, 1, 0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) { /* sentinel */ },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) static struct rockchip_pll_rate_table rk3399_vpll_rates[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) /* _mhz, _refdiv, _fbdiv, _postdiv1, _postdiv2, _dsmpd, _frac */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) RK3036_PLL_RATE( 594000000, 1, 123, 5, 1, 0, 12582912), /* vco = 2970000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) RK3036_PLL_RATE( 593406593, 1, 123, 5, 1, 0, 10508804), /* vco = 2967032965 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) RK3036_PLL_RATE( 297000000, 1, 123, 5, 2, 0, 12582912), /* vco = 2970000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) RK3036_PLL_RATE( 296703297, 1, 123, 5, 2, 0, 10508807), /* vco = 2967032970 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) RK3036_PLL_RATE( 148500000, 1, 129, 7, 3, 0, 15728640), /* vco = 3118500000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) RK3036_PLL_RATE( 148351648, 1, 123, 5, 4, 0, 10508800), /* vco = 2967032960 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) RK3036_PLL_RATE( 106500000, 1, 124, 7, 4, 0, 4194304), /* vco = 2982000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) RK3036_PLL_RATE( 74250000, 1, 129, 7, 6, 0, 15728640), /* vco = 3118500000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) RK3036_PLL_RATE( 74175824, 1, 129, 7, 6, 0, 13550823), /* vco = 3115384608 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) RK3036_PLL_RATE( 65000000, 1, 113, 7, 6, 0, 12582912), /* vco = 2730000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) RK3036_PLL_RATE( 59340659, 1, 121, 7, 7, 0, 2581098), /* vco = 2907692291 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) RK3036_PLL_RATE( 54000000, 1, 110, 7, 7, 0, 4194304), /* vco = 2646000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) RK3036_PLL_RATE( 27000000, 1, 55, 7, 7, 0, 2097152), /* vco = 1323000000 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) RK3036_PLL_RATE( 26973027, 1, 55, 7, 7, 0, 1173232), /* vco = 1321678323 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) { /* sentinel */ },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) /* CRU parents */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) PNAME(mux_pll_p) = { "xin24m", "xin32k" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) PNAME(mux_ddrclk_p) = { "clk_ddrc_lpll_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) "clk_ddrc_bpll_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) "clk_ddrc_dpll_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) "clk_ddrc_gpll_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) PNAME(mux_pll_src_vpll_cpll_gpll_p) = { "vpll", "cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) PNAME(mux_pll_src_dmyvpll_cpll_gpll_p) = { "dummy_vpll", "cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) #ifdef RK3399_TWO_PLL_FOR_VOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) PNAME(mux_aclk_cci_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) "gpll_aclk_cci_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) "npll_aclk_cci_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) "dummy_vpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) PNAME(mux_cci_trace_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) "gpll_cci_trace" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) PNAME(mux_cs_p) = { "dummy_cpll", "gpll_cs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) "npll_cs"};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) PNAME(mux_aclk_perihp_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) "gpll_aclk_perihp_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) PNAME(mux_pll_src_cpll_gpll_p) = { "dummy_cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) PNAME(mux_pll_src_cpll_gpll_npll_p) = { "dummy_cpll", "gpll", "npll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) PNAME(mux_pll_src_cpll_gpll_ppll_p) = { "dummy_cpll", "gpll", "ppll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) PNAME(mux_pll_src_cpll_gpll_upll_p) = { "dummy_cpll", "gpll", "upll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) PNAME(mux_pll_src_npll_cpll_gpll_p) = { "npll", "dummy_cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) PNAME(mux_pll_src_cpll_gpll_npll_ppll_p) = { "dummy_cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) "ppll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) PNAME(mux_pll_src_cpll_gpll_npll_24m_p) = { "dummy_cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) PNAME(mux_pll_src_cpll_gpll_npll_usbphy480m_p) = { "dummy_cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) "clk_usbphy_480m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) PNAME(mux_pll_src_ppll_cpll_gpll_npll_p) = { "ppll", "dummy_cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) "npll", "upll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) PNAME(mux_pll_src_cpll_gpll_npll_upll_24m_p) = { "dummy_cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) "upll", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) PNAME(mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p) = { "dummy_cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) "ppll", "upll", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) * We hope to be able to HDMI/DP can obtain better signal quality,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) * therefore, we move VOP pwm and aclk clocks to other PLLs, let
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) * HDMI/DP phyclock can monopolize VPLL.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) PNAME(mux_pll_src_dmyvpll_cpll_gpll_npll_p) = { "dummy_vpll", "dummy_cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) "npll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) PNAME(mux_pll_src_dmyvpll_cpll_gpll_gpll_p) = { "dummy_vpll", "dummy_cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) PNAME(mux_pll_src_24m_32k_cpll_gpll_p) = { "xin24m", "xin32k",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) "dummy_cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) PNAME(mux_aclk_emmc_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) "gpll_aclk_emmc_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) PNAME(mux_aclk_perilp0_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) "gpll_aclk_perilp0_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) PNAME(mux_fclk_cm0s_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) "gpll_fclk_cm0s_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) PNAME(mux_hclk_perilp1_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) "gpll_hclk_perilp1_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) PNAME(mux_aclk_gmac_p) = { "dummy_cpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) "gpll_aclk_gmac_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) PNAME(mux_aclk_cci_p) = { "cpll_aclk_cci_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) "gpll_aclk_cci_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) "npll_aclk_cci_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) "dummy_vpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) PNAME(mux_cci_trace_p) = { "cpll_cci_trace",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) "gpll_cci_trace" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) PNAME(mux_cs_p) = { "cpll_cs", "gpll_cs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) "npll_cs"};
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) PNAME(mux_aclk_perihp_p) = { "cpll_aclk_perihp_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) "gpll_aclk_perihp_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) PNAME(mux_pll_src_cpll_gpll_p) = { "cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) PNAME(mux_pll_src_cpll_gpll_npll_p) = { "cpll", "gpll", "npll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) PNAME(mux_pll_src_cpll_gpll_ppll_p) = { "cpll", "gpll", "ppll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) PNAME(mux_pll_src_cpll_gpll_upll_p) = { "cpll", "gpll", "upll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) PNAME(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) PNAME(mux_pll_src_cpll_gpll_npll_ppll_p) = { "cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) "ppll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) PNAME(mux_pll_src_cpll_gpll_npll_24m_p) = { "cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) PNAME(mux_pll_src_cpll_gpll_npll_usbphy480m_p) = { "cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) "clk_usbphy_480m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) PNAME(mux_pll_src_ppll_cpll_gpll_npll_p) = { "ppll", "cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) "npll", "upll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) PNAME(mux_pll_src_cpll_gpll_npll_upll_24m_p) = { "cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) "upll", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) PNAME(mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p) = { "cpll", "gpll", "npll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) "ppll", "upll", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) * We hope to be able to HDMI/DP can obtain better signal quality,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) * therefore, we move VOP pwm and aclk clocks to other PLLs, let
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) * HDMI/DP phyclock can monopolize VPLL.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) PNAME(mux_pll_src_dmyvpll_cpll_gpll_npll_p) = { "dummy_vpll", "cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) "npll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) PNAME(mux_pll_src_dmyvpll_cpll_gpll_gpll_p) = { "dummy_vpll", "cpll", "gpll",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) PNAME(mux_pll_src_24m_32k_cpll_gpll_p) = { "xin24m", "xin32k",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) "cpll", "gpll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) PNAME(mux_aclk_emmc_p) = { "cpll_aclk_emmc_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) "gpll_aclk_emmc_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) PNAME(mux_aclk_perilp0_p) = { "cpll_aclk_perilp0_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) "gpll_aclk_perilp0_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) PNAME(mux_fclk_cm0s_p) = { "cpll_fclk_cm0s_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) "gpll_fclk_cm0s_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) PNAME(mux_hclk_perilp1_p) = { "cpll_hclk_perilp1_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) "gpll_hclk_perilp1_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) PNAME(mux_aclk_gmac_p) = { "cpll_aclk_gmac_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) "gpll_aclk_gmac_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) PNAME(mux_dclk_vop0_p) = { "dclk_vop0_div",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) "dummy_dclk_vop0_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) PNAME(mux_dclk_vop1_p) = { "dclk_vop1_div",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) "dummy_dclk_vop1_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) PNAME(mux_clk_cif_p) = { "clk_cifout_src", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) PNAME(mux_pll_src_24m_usbphy480m_p) = { "xin24m", "clk_usbphy_480m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) PNAME(mux_pll_src_24m_pciephy_p) = { "xin24m", "clk_pciephy_ref100m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) PNAME(mux_pciecore_cru_phy_p) = { "clk_pcie_core_cru",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) "clk_pcie_core_phy" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) PNAME(mux_clk_testout1_p) = { "clk_testout1_pll_src", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) PNAME(mux_clk_testout2_p) = { "clk_testout2_pll_src", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) PNAME(mux_usbphy_480m_p) = { "clk_usbphy0_480m_src",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) "clk_usbphy1_480m_src" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) PNAME(mux_rmii_p) = { "clk_gmac", "clkin_gmac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) PNAME(mux_spdif_p) = { "clk_spdif_div", "clk_spdif_frac",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) "clkin_i2s", "xin12m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) PNAME(mux_i2s0_p) = { "clk_i2s0_div", "clk_i2s0_frac",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) "clkin_i2s", "xin12m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) PNAME(mux_i2s1_p) = { "clk_i2s1_div", "clk_i2s1_frac",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) "clkin_i2s", "xin12m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) PNAME(mux_i2s2_p) = { "clk_i2s2_div", "clk_i2s2_frac",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) "clkin_i2s", "xin12m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) PNAME(mux_i2sch_p) = { "clk_i2s0", "clk_i2s1",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) "clk_i2s2" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) PNAME(mux_i2sout_p) = { "clk_i2sout_src", "xin12m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) PNAME(mux_uart0_p) = { "xin24m", "clk_uart0_div", "clk_uart0_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) PNAME(mux_uart1_p) = { "xin24m", "clk_uart1_div", "clk_uart1_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) PNAME(mux_uart2_p) = { "xin24m", "clk_uart2_div", "clk_uart2_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) PNAME(mux_uart3_p) = { "xin24m", "clk_uart3_div", "clk_uart3_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) /* PMU CRU parents */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) PNAME(mux_ppll_24m_p) = { "ppll", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) PNAME(mux_24m_ppll_p) = { "xin24m", "ppll" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) PNAME(mux_fclk_cm0s_pmu_ppll_p) = { "fclk_cm0s_pmu_ppll_src", "xin24m" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) PNAME(mux_wifi_pmu_p) = { "clk_wifi_div", "clk_wifi_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) PNAME(mux_uart4_pmu_p) = { "xin24m", "clk_uart4_div",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) "clk_uart4_frac" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) PNAME(mux_clk_testout2_2io_p) = { "clk_testout2", "clk_32k_suspend_pmu" };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) static u32 uart_mux_idx[] = { 2, 0, 1 };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) static struct rockchip_pll_clock rk3399_pll_clks[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) [lpll] = PLL(pll_rk3399, PLL_APLLL, "lpll", mux_pll_p, 0, RK3399_PLL_CON(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) RK3399_PLL_CON(3), 8, 31, 0, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) [bpll] = PLL(pll_rk3399, PLL_APLLB, "bpll", mux_pll_p, 0, RK3399_PLL_CON(8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) RK3399_PLL_CON(11), 8, 31, 0, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) [dpll] = PLL(pll_rk3399, PLL_DPLL, "dpll", mux_pll_p, 0, RK3399_PLL_CON(16),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) RK3399_PLL_CON(19), 8, 31, 0, NULL),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) #ifdef RK3399_TWO_PLL_FOR_VOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) [cpll] = PLL(pll_rk3399, PLL_CPLL, "cpll", mux_pll_p, 0, RK3399_PLL_CON(24),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) RK3399_PLL_CON(27), 8, 31, 0, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) [cpll] = PLL(pll_rk3399, PLL_CPLL, "cpll", mux_pll_p, 0, RK3399_PLL_CON(24),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) RK3399_PLL_CON(27), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) [gpll] = PLL(pll_rk3399, PLL_GPLL, "gpll", mux_pll_p, 0, RK3399_PLL_CON(32),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) RK3399_PLL_CON(35), 8, 31, 0, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) [npll] = PLL(pll_rk3399, PLL_NPLL, "npll", mux_pll_p, 0, RK3399_PLL_CON(40),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) RK3399_PLL_CON(43), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) [vpll] = PLL(pll_rk3399, PLL_VPLL, "vpll", mux_pll_p, 0, RK3399_PLL_CON(48),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) RK3399_PLL_CON(51), 8, 31, 0, rk3399_vpll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) static struct rockchip_pll_clock rk3399_pmu_pll_clks[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) [ppll] = PLL(pll_rk3399, PLL_PPLL, "ppll", mux_pll_p, CLK_IS_CRITICAL, RK3399_PMU_PLL_CON(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) RK3399_PMU_PLL_CON(3), 8, 31, ROCKCHIP_PLL_SYNC_RATE, rk3399_pll_rates),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define MFLAGS CLK_MUX_HIWORD_MASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define DFLAGS CLK_DIVIDER_HIWORD_MASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define GFLAGS (CLK_GATE_HIWORD_MASK | CLK_GATE_SET_TO_DISABLE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define IFLAGS ROCKCHIP_INVERTER_HIWORD_MASK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) static struct rockchip_clk_branch rk3399_spdif_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) MUX(0, "clk_spdif_mux", mux_spdif_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) RK3399_CLKSEL_CON(32), 13, 2, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) static struct rockchip_clk_branch rk3399_i2s0_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) MUX(0, "clk_i2s0_mux", mux_i2s0_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) RK3399_CLKSEL_CON(28), 8, 2, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) static struct rockchip_clk_branch rk3399_i2s1_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) MUX(0, "clk_i2s1_mux", mux_i2s1_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) RK3399_CLKSEL_CON(29), 8, 2, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) static struct rockchip_clk_branch rk3399_i2s2_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) MUX(0, "clk_i2s2_mux", mux_i2s2_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) RK3399_CLKSEL_CON(30), 8, 2, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) static struct rockchip_clk_branch rk3399_uart0_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) MUXTBL(SCLK_UART0, "clk_uart0", mux_uart0_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) RK3399_CLKSEL_CON(33), 8, 2, MFLAGS, uart_mux_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) static struct rockchip_clk_branch rk3399_uart1_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) MUXTBL(SCLK_UART1, "clk_uart1", mux_uart1_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) RK3399_CLKSEL_CON(34), 8, 2, MFLAGS, uart_mux_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) static struct rockchip_clk_branch rk3399_uart2_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) MUXTBL(SCLK_UART2, "clk_uart2", mux_uart2_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) RK3399_CLKSEL_CON(35), 8, 2, MFLAGS, uart_mux_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) static struct rockchip_clk_branch rk3399_uart3_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) MUXTBL(SCLK_UART3, "clk_uart3", mux_uart3_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) RK3399_CLKSEL_CON(36), 8, 2, MFLAGS, uart_mux_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) static struct rockchip_clk_branch rk3399_uart4_pmu_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) MUXTBL(SCLK_UART4_PMU, "clk_uart4_pmu", mux_uart4_pmu_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) RK3399_PMU_CLKSEL_CON(5), 8, 2, MFLAGS, uart_mux_idx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) static struct rockchip_clk_branch rk3399_dclk_vop0_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) MUX(DCLK_VOP0, "dclk_vop0", mux_dclk_vop0_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) RK3399_CLKSEL_CON(49), 11, 1, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) static struct rockchip_clk_branch rk3399_dclk_vop1_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) MUX(DCLK_VOP1, "dclk_vop1", mux_dclk_vop1_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) RK3399_CLKSEL_CON(50), 11, 1, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) static struct rockchip_clk_branch rk3399_pmuclk_wifi_fracmux __initdata =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) MUX(SCLK_WIFI_PMU, "clk_wifi_pmu", mux_wifi_pmu_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) RK3399_PMU_CLKSEL_CON(1), 14, 1, MFLAGS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) static const struct rockchip_cpuclk_reg_data rk3399_cpuclkl_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) .core_reg[0] = RK3399_CLKSEL_CON(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) .div_core_shift[0] = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376) .div_core_mask[0] = 0x1f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) .num_cores = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) .mux_core_alt = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) .mux_core_main = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) .mux_core_shift = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) .mux_core_mask = 0x3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) static const struct rockchip_cpuclk_reg_data rk3399_cpuclkb_data = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) .core_reg[0] = RK3399_CLKSEL_CON(2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) .div_core_shift[0] = 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) .div_core_mask[0] = 0x1f,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) .num_cores = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389) .mux_core_alt = 3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) .mux_core_main = 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) .mux_core_shift = 6,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392) .mux_core_mask = 0x3,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) #define RK3399_DIV_ACLKM_MASK 0x1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) #define RK3399_DIV_ACLKM_SHIFT 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) #define RK3399_DIV_ATCLK_MASK 0x1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) #define RK3399_DIV_ATCLK_SHIFT 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399) #define RK3399_DIV_PCLK_DBG_MASK 0x1f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) #define RK3399_DIV_PCLK_DBG_SHIFT 8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) #define RK3399_CLKSEL0(_offs, _aclkm) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) .reg = RK3399_CLKSEL_CON(0 + _offs), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) .val = HIWORD_UPDATE(_aclkm, RK3399_DIV_ACLKM_MASK, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406) RK3399_DIV_ACLKM_SHIFT), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) #define RK3399_CLKSEL1(_offs, _atclk, _pdbg) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) .reg = RK3399_CLKSEL_CON(1 + _offs), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411) .val = HIWORD_UPDATE(_atclk, RK3399_DIV_ATCLK_MASK, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) RK3399_DIV_ATCLK_SHIFT) | \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) HIWORD_UPDATE(_pdbg, RK3399_DIV_PCLK_DBG_MASK, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) RK3399_DIV_PCLK_DBG_SHIFT), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) /* cluster_l: aclkm in clksel0, rest in clksel1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) #define RK3399_CPUCLKL_RATE(_prate, _aclkm, _atclk, _pdbg) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) .prate = _prate##U, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) .divs = { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) RK3399_CLKSEL0(0, _aclkm), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) RK3399_CLKSEL1(0, _atclk, _pdbg), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) /* cluster_b: aclkm in clksel2, rest in clksel3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) #define RK3399_CPUCLKB_RATE(_prate, _aclkm, _atclk, _pdbg) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) .prate = _prate##U, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) .divs = { \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) RK3399_CLKSEL0(2, _aclkm), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) RK3399_CLKSEL1(2, _atclk, _pdbg), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) }, \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) static struct rockchip_cpuclk_rate_table rk3399_cpuclkl_rates[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) RK3399_CPUCLKL_RATE(1800000000, 1, 8, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) RK3399_CPUCLKL_RATE(1704000000, 1, 8, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440) RK3399_CPUCLKL_RATE(1608000000, 1, 7, 7),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) RK3399_CPUCLKL_RATE(1512000000, 1, 7, 7),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) RK3399_CPUCLKL_RATE(1488000000, 1, 6, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) RK3399_CPUCLKL_RATE(1416000000, 1, 6, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) RK3399_CPUCLKL_RATE(1200000000, 1, 5, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) RK3399_CPUCLKL_RATE(1008000000, 1, 5, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446) RK3399_CPUCLKL_RATE( 816000000, 1, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) RK3399_CPUCLKL_RATE( 696000000, 1, 3, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) RK3399_CPUCLKL_RATE( 600000000, 1, 3, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) RK3399_CPUCLKL_RATE( 408000000, 1, 2, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) RK3399_CPUCLKL_RATE( 312000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) RK3399_CPUCLKL_RATE( 216000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) RK3399_CPUCLKL_RATE( 96000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) static struct rockchip_cpuclk_rate_table rk3399_cpuclkb_rates[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) RK3399_CPUCLKB_RATE(2208000000, 1, 11, 11),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) RK3399_CPUCLKB_RATE(2184000000, 1, 11, 11),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) RK3399_CPUCLKB_RATE(2088000000, 1, 10, 10),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) RK3399_CPUCLKB_RATE(2040000000, 1, 10, 10),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) RK3399_CPUCLKB_RATE(2016000000, 1, 9, 9),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) RK3399_CPUCLKB_RATE(1992000000, 1, 9, 9),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462) RK3399_CPUCLKB_RATE(1896000000, 1, 9, 9),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) RK3399_CPUCLKB_RATE(1800000000, 1, 8, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) RK3399_CPUCLKB_RATE(1704000000, 1, 8, 8),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) RK3399_CPUCLKB_RATE(1608000000, 1, 7, 7),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) RK3399_CPUCLKB_RATE(1512000000, 1, 7, 7),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) RK3399_CPUCLKB_RATE(1488000000, 1, 6, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) RK3399_CPUCLKB_RATE(1416000000, 1, 6, 6),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469) RK3399_CPUCLKB_RATE(1200000000, 1, 5, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) RK3399_CPUCLKB_RATE(1008000000, 1, 5, 5),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) RK3399_CPUCLKB_RATE( 816000000, 1, 4, 4),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472) RK3399_CPUCLKB_RATE( 696000000, 1, 3, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) RK3399_CPUCLKB_RATE( 600000000, 1, 3, 3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474) RK3399_CPUCLKB_RATE( 408000000, 1, 2, 2),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) RK3399_CPUCLKB_RATE( 312000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476) RK3399_CPUCLKB_RATE( 216000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) RK3399_CPUCLKB_RATE( 96000000, 1, 1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) static struct rockchip_clk_branch rk3399_clk_branches[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) * CRU Clock-Architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) /* usbphy */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) GATE(SCLK_USB2PHY0_REF, "clk_usb2phy0_ref", "xin24m", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) RK3399_CLKGATE_CON(6), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) GATE(SCLK_USB2PHY1_REF, "clk_usb2phy1_ref", "xin24m", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) RK3399_CLKGATE_CON(6), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) GATE(SCLK_USBPHY0_480M_SRC, "clk_usbphy0_480m_src", "clk_usbphy0_480m", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) RK3399_CLKGATE_CON(13), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) GATE(SCLK_USBPHY1_480M_SRC, "clk_usbphy1_480m_src", "clk_usbphy1_480m", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) RK3399_CLKGATE_CON(13), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) MUX(0, "clk_usbphy_480m", mux_usbphy_480m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) RK3399_CLKSEL_CON(14), 6, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) MUX(0, "upll", mux_pll_src_24m_usbphy480m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) RK3399_CLKSEL_CON(14), 15, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501) COMPOSITE_NODIV(SCLK_HSICPHY, "clk_hsicphy", mux_pll_src_cpll_gpll_npll_usbphy480m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) RK3399_CLKSEL_CON(19), 0, 2, MFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) RK3399_CLKGATE_CON(6), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) COMPOSITE(ACLK_USB3, "aclk_usb3", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) RK3399_CLKSEL_CON(39), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) RK3399_CLKGATE_CON(12), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508) GATE(ACLK_USB3_NOC, "aclk_usb3_noc", "aclk_usb3", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) RK3399_CLKGATE_CON(30), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) GATE(ACLK_USB3OTG0, "aclk_usb3otg0", "aclk_usb3", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511) RK3399_CLKGATE_CON(30), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) GATE(ACLK_USB3OTG1, "aclk_usb3otg1", "aclk_usb3", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) RK3399_CLKGATE_CON(30), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514) GATE(ACLK_USB3_RKSOC_AXI_PERF, "aclk_usb3_rksoc_axi_perf", "aclk_usb3", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) RK3399_CLKGATE_CON(30), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) GATE(ACLK_USB3_GRF, "aclk_usb3_grf", "aclk_usb3", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) RK3399_CLKGATE_CON(30), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519) GATE(SCLK_USB3OTG0_REF, "clk_usb3otg0_ref", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) RK3399_CLKGATE_CON(12), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) GATE(SCLK_USB3OTG1_REF, "clk_usb3otg1_ref", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) RK3399_CLKGATE_CON(12), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) COMPOSITE(SCLK_USB3OTG0_SUSPEND, "clk_usb3otg0_suspend", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) RK3399_CLKSEL_CON(40), 15, 1, MFLAGS, 0, 10, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526) RK3399_CLKGATE_CON(12), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) COMPOSITE(SCLK_USB3OTG1_SUSPEND, "clk_usb3otg1_suspend", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529) RK3399_CLKSEL_CON(41), 15, 1, MFLAGS, 0, 10, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) RK3399_CLKGATE_CON(12), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) COMPOSITE(SCLK_UPHY0_TCPDPHY_REF, "clk_uphy0_tcpdphy_ref", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533) RK3399_CLKSEL_CON(64), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) RK3399_CLKGATE_CON(13), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) COMPOSITE(SCLK_UPHY0_TCPDCORE, "clk_uphy0_tcpdcore", mux_pll_src_24m_32k_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537) RK3399_CLKSEL_CON(64), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) RK3399_CLKGATE_CON(13), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) COMPOSITE(SCLK_UPHY1_TCPDPHY_REF, "clk_uphy1_tcpdphy_ref", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541) RK3399_CLKSEL_CON(65), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) RK3399_CLKGATE_CON(13), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) COMPOSITE(SCLK_UPHY1_TCPDCORE, "clk_uphy1_tcpdcore", mux_pll_src_24m_32k_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) RK3399_CLKSEL_CON(65), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546) RK3399_CLKGATE_CON(13), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) /* little core */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) GATE(0, "clk_core_l_lpll_src", "lpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550) RK3399_CLKGATE_CON(0), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) GATE(0, "clk_core_l_bpll_src", "bpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) RK3399_CLKGATE_CON(0), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) GATE(0, "clk_core_l_dpll_src", "dpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) RK3399_CLKGATE_CON(0), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555) GATE(0, "clk_core_l_gpll_src", "gpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) RK3399_CLKGATE_CON(0), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) COMPOSITE_NOMUX(0, "aclkm_core_l", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) RK3399_CLKSEL_CON(0), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) RK3399_CLKGATE_CON(0), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561) COMPOSITE_NOMUX(0, "atclk_core_l", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) RK3399_CLKSEL_CON(1), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563) RK3399_CLKGATE_CON(0), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) COMPOSITE_NOMUX(0, "pclk_dbg_core_l", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) RK3399_CLKSEL_CON(1), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) RK3399_CLKGATE_CON(0), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 568) GATE(ACLK_CORE_ADB400_CORE_L_2_CCI500, "aclk_core_adb400_core_l_2_cci500", "aclkm_core_l", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 569) RK3399_CLKGATE_CON(14), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 570) GATE(ACLK_PERF_CORE_L, "aclk_perf_core_l", "aclkm_core_l", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 571) RK3399_CLKGATE_CON(14), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 572)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 573) GATE(0, "clk_dbg_pd_core_l", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 574) RK3399_CLKGATE_CON(14), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 575) GATE(ACLK_GIC_ADB400_GIC_2_CORE_L, "aclk_core_adb400_gic_2_core_l", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 576) RK3399_CLKGATE_CON(14), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 577) GATE(ACLK_GIC_ADB400_CORE_L_2_GIC, "aclk_core_adb400_core_l_2_gic", "armclkl", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 578) RK3399_CLKGATE_CON(14), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 579) GATE(SCLK_PVTM_CORE_L, "clk_pvtm_core_l", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 580) RK3399_CLKGATE_CON(0), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 581)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 582) /* big core */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 583) GATE(0, "clk_core_b_lpll_src", "lpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 584) RK3399_CLKGATE_CON(1), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 585) GATE(0, "clk_core_b_bpll_src", "bpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 586) RK3399_CLKGATE_CON(1), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 587) GATE(0, "clk_core_b_dpll_src", "dpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 588) RK3399_CLKGATE_CON(1), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 589) GATE(0, "clk_core_b_gpll_src", "gpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 590) RK3399_CLKGATE_CON(1), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 591)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 592) COMPOSITE_NOMUX(0, "aclkm_core_b", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 593) RK3399_CLKSEL_CON(2), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 594) RK3399_CLKGATE_CON(1), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 595) COMPOSITE_NOMUX(0, "atclk_core_b", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 596) RK3399_CLKSEL_CON(3), 0, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 597) RK3399_CLKGATE_CON(1), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 598) COMPOSITE_NOMUX(0, "pclk_dbg_core_b", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 599) RK3399_CLKSEL_CON(3), 8, 5, DFLAGS | CLK_DIVIDER_READ_ONLY,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 600) RK3399_CLKGATE_CON(1), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 601)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 602) GATE(ACLK_CORE_ADB400_CORE_B_2_CCI500, "aclk_core_adb400_core_b_2_cci500", "aclkm_core_b", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 603) RK3399_CLKGATE_CON(14), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 604) GATE(ACLK_PERF_CORE_B, "aclk_perf_core_b", "aclkm_core_b", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 605) RK3399_CLKGATE_CON(14), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 606)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 607) GATE(0, "clk_dbg_pd_core_b", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 608) RK3399_CLKGATE_CON(14), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 609) GATE(ACLK_GIC_ADB400_GIC_2_CORE_B, "aclk_core_adb400_gic_2_core_b", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 610) RK3399_CLKGATE_CON(14), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 611) GATE(ACLK_GIC_ADB400_CORE_B_2_GIC, "aclk_core_adb400_core_b_2_gic", "armclkb", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 612) RK3399_CLKGATE_CON(14), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 614) DIV(0, "pclken_dbg_core_b", "pclk_dbg_core_b", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 615) RK3399_CLKSEL_CON(3), 13, 2, DFLAGS | CLK_DIVIDER_READ_ONLY),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 616)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 617) GATE(0, "pclk_dbg_cxcs_pd_core_b", "pclk_dbg_core_b", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 618) RK3399_CLKGATE_CON(14), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 620) GATE(SCLK_PVTM_CORE_B, "clk_pvtm_core_b", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 621) RK3399_CLKGATE_CON(1), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 622)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 623) /* gmac */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 624) GATE(0, "cpll_aclk_gmac_src", "cpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 625) RK3399_CLKGATE_CON(6), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 626) GATE(0, "gpll_aclk_gmac_src", "gpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 627) RK3399_CLKGATE_CON(6), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 628) COMPOSITE(0, "aclk_gmac_pre", mux_aclk_gmac_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 629) RK3399_CLKSEL_CON(20), 7, 1, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 630) RK3399_CLKGATE_CON(6), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 631)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 632) GATE(ACLK_GMAC, "aclk_gmac", "aclk_gmac_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 633) RK3399_CLKGATE_CON(32), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 634) GATE(ACLK_GMAC_NOC, "aclk_gmac_noc", "aclk_gmac_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 635) RK3399_CLKGATE_CON(32), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 636) GATE(ACLK_PERF_GMAC, "aclk_perf_gmac", "aclk_gmac_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 637) RK3399_CLKGATE_CON(32), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 639) COMPOSITE_NOMUX(0, "pclk_gmac_pre", "aclk_gmac_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 640) RK3399_CLKSEL_CON(19), 8, 3, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 641) RK3399_CLKGATE_CON(6), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 642) GATE(PCLK_GMAC, "pclk_gmac", "pclk_gmac_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 643) RK3399_CLKGATE_CON(32), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 644) GATE(PCLK_GMAC_NOC, "pclk_gmac_noc", "pclk_gmac_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 645) RK3399_CLKGATE_CON(32), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 646)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 647) COMPOSITE(SCLK_MAC, "clk_gmac", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 648) RK3399_CLKSEL_CON(20), 14, 2, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 649) RK3399_CLKGATE_CON(5), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 650)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 651) MUX(SCLK_RMII_SRC, "clk_rmii_src", mux_rmii_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 652) RK3399_CLKSEL_CON(19), 4, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 653) GATE(SCLK_MACREF_OUT, "clk_mac_refout", "clk_rmii_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 654) RK3399_CLKGATE_CON(5), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 655) GATE(SCLK_MACREF, "clk_mac_ref", "clk_rmii_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 656) RK3399_CLKGATE_CON(5), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 657) GATE(SCLK_MAC_RX, "clk_rmii_rx", "clk_rmii_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 658) RK3399_CLKGATE_CON(5), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 659) GATE(SCLK_MAC_TX, "clk_rmii_tx", "clk_rmii_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 660) RK3399_CLKGATE_CON(5), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 661)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 662) /* spdif */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 663) COMPOSITE(SCLK_SPDIF_DIV, "clk_spdif_div", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 664) RK3399_CLKSEL_CON(32), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 665) RK3399_CLKGATE_CON(8), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 666) COMPOSITE_FRACMUX(0, "clk_spdif_frac", "clk_spdif_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 667) RK3399_CLKSEL_CON(99), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 668) RK3399_CLKGATE_CON(8), 14, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 669) &rk3399_spdif_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 670) GATE(SCLK_SPDIF_8CH, "clk_spdif", "clk_spdif_mux", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 671) RK3399_CLKGATE_CON(8), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 672)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 673) COMPOSITE(SCLK_SPDIF_REC_DPTX, "clk_spdif_rec_dptx", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 674) RK3399_CLKSEL_CON(32), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 675) RK3399_CLKGATE_CON(10), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 676) /* i2s */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 677) COMPOSITE(SCLK_I2S0_DIV, "clk_i2s0_div", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 678) RK3399_CLKSEL_CON(28), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 679) RK3399_CLKGATE_CON(8), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 680) COMPOSITE_FRACMUX(0, "clk_i2s0_frac", "clk_i2s0_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 681) RK3399_CLKSEL_CON(96), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 682) RK3399_CLKGATE_CON(8), 4, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 683) &rk3399_i2s0_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 684) GATE(SCLK_I2S0_8CH, "clk_i2s0", "clk_i2s0_mux", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 685) RK3399_CLKGATE_CON(8), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 686)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 687) COMPOSITE(SCLK_I2S1_DIV, "clk_i2s1_div", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 688) RK3399_CLKSEL_CON(29), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 689) RK3399_CLKGATE_CON(8), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 690) COMPOSITE_FRACMUX(0, "clk_i2s1_frac", "clk_i2s1_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 691) RK3399_CLKSEL_CON(97), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 692) RK3399_CLKGATE_CON(8), 7, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 693) &rk3399_i2s1_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 694) GATE(SCLK_I2S1_8CH, "clk_i2s1", "clk_i2s1_mux", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 695) RK3399_CLKGATE_CON(8), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 696)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 697) COMPOSITE(SCLK_I2S2_DIV, "clk_i2s2_div", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 698) RK3399_CLKSEL_CON(30), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 699) RK3399_CLKGATE_CON(8), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 700) COMPOSITE_FRACMUX(0, "clk_i2s2_frac", "clk_i2s2_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 701) RK3399_CLKSEL_CON(98), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 702) RK3399_CLKGATE_CON(8), 10, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 703) &rk3399_i2s2_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 704) GATE(SCLK_I2S2_8CH, "clk_i2s2", "clk_i2s2_mux", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 705) RK3399_CLKGATE_CON(8), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 706)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 707) MUX(SCLK_I2SOUT_SRC, "clk_i2sout_src", mux_i2sch_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 708) RK3399_CLKSEL_CON(31), 0, 2, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 709) COMPOSITE_NODIV(SCLK_I2S_8CH_OUT, "clk_i2sout", mux_i2sout_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 710) RK3399_CLKSEL_CON(31), 2, 1, MFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 711) RK3399_CLKGATE_CON(8), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 712)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 713) /* uart */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 714) MUX(SCLK_UART0_SRC, "clk_uart0_src", mux_pll_src_cpll_gpll_upll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 715) RK3399_CLKSEL_CON(33), 12, 2, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 716) COMPOSITE_NOMUX(0, "clk_uart0_div", "clk_uart0_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 717) RK3399_CLKSEL_CON(33), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 718) RK3399_CLKGATE_CON(9), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 719) COMPOSITE_FRACMUX(0, "clk_uart0_frac", "clk_uart0_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 720) RK3399_CLKSEL_CON(100), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 721) RK3399_CLKGATE_CON(9), 1, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 722) &rk3399_uart0_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 723)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 724) MUX(SCLK_UART_SRC, "clk_uart_src", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 725) RK3399_CLKSEL_CON(33), 15, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 726) COMPOSITE_NOMUX(0, "clk_uart1_div", "clk_uart_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 727) RK3399_CLKSEL_CON(34), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 728) RK3399_CLKGATE_CON(9), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 729) COMPOSITE_FRACMUX(0, "clk_uart1_frac", "clk_uart1_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 730) RK3399_CLKSEL_CON(101), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 731) RK3399_CLKGATE_CON(9), 3, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 732) &rk3399_uart1_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 733)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 734) COMPOSITE_NOMUX(0, "clk_uart2_div", "clk_uart_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 735) RK3399_CLKSEL_CON(35), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 736) RK3399_CLKGATE_CON(9), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 737) COMPOSITE_FRACMUX(0, "clk_uart2_frac", "clk_uart2_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 738) RK3399_CLKSEL_CON(102), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 739) RK3399_CLKGATE_CON(9), 5, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 740) &rk3399_uart2_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 741)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 742) COMPOSITE_NOMUX(0, "clk_uart3_div", "clk_uart_src", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 743) RK3399_CLKSEL_CON(36), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 744) RK3399_CLKGATE_CON(9), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 745) COMPOSITE_FRACMUX(0, "clk_uart3_frac", "clk_uart3_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 746) RK3399_CLKSEL_CON(103), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 747) RK3399_CLKGATE_CON(9), 7, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 748) &rk3399_uart3_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 749)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 750) COMPOSITE(PCLK_DDR, "pclk_ddr", mux_pll_src_cpll_gpll_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 751) RK3399_CLKSEL_CON(6), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 752) RK3399_CLKGATE_CON(3), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 753)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 754) GATE(PCLK_CENTER_MAIN_NOC, "pclk_center_main_noc", "pclk_ddr", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 755) RK3399_CLKGATE_CON(18), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 756) GATE(PCLK_DDR_MON, "pclk_ddr_mon", "pclk_ddr", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 757) RK3399_CLKGATE_CON(18), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 758) GATE(PCLK_CIC, "pclk_cic", "pclk_ddr", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 759) RK3399_CLKGATE_CON(18), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 760) GATE(PCLK_DDR_SGRF, "pclk_ddr_sgrf", "pclk_ddr", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 761) RK3399_CLKGATE_CON(19), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 762)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 763) GATE(SCLK_PVTM_DDR, "clk_pvtm_ddr", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 764) RK3399_CLKGATE_CON(4), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 765) GATE(SCLK_DFIMON0_TIMER, "clk_dfimon0_timer", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 766) RK3399_CLKGATE_CON(3), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 767) GATE(SCLK_DFIMON1_TIMER, "clk_dfimon1_timer", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 768) RK3399_CLKGATE_CON(3), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 769)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 770) /* cci */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 771) GATE(0, "cpll_aclk_cci_src", "cpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 772) RK3399_CLKGATE_CON(2), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 773) GATE(0, "gpll_aclk_cci_src", "gpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 774) RK3399_CLKGATE_CON(2), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 775) GATE(0, "npll_aclk_cci_src", "npll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 776) RK3399_CLKGATE_CON(2), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 777) GATE(0, "vpll_aclk_cci_src", "vpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 778) RK3399_CLKGATE_CON(2), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 779)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 780) COMPOSITE(0, "aclk_cci_pre", mux_aclk_cci_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 781) RK3399_CLKSEL_CON(5), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 782) RK3399_CLKGATE_CON(2), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 783)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 784) GATE(ACLK_ADB400M_PD_CORE_L, "aclk_adb400m_pd_core_l", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 785) RK3399_CLKGATE_CON(15), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 786) GATE(ACLK_ADB400M_PD_CORE_B, "aclk_adb400m_pd_core_b", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 787) RK3399_CLKGATE_CON(15), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 788) GATE(ACLK_CCI, "aclk_cci", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 789) RK3399_CLKGATE_CON(15), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 790) GATE(ACLK_CCI_NOC0, "aclk_cci_noc0", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 791) RK3399_CLKGATE_CON(15), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 792) GATE(ACLK_CCI_NOC1, "aclk_cci_noc1", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 793) RK3399_CLKGATE_CON(15), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 794) GATE(ACLK_CCI_GRF, "aclk_cci_grf", "aclk_cci_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 795) RK3399_CLKGATE_CON(15), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 796)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 797) GATE(0, "cpll_cci_trace", "cpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 798) RK3399_CLKGATE_CON(2), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 799) GATE(0, "gpll_cci_trace", "gpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 800) RK3399_CLKGATE_CON(2), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 801) COMPOSITE(SCLK_CCI_TRACE, "clk_cci_trace", mux_cci_trace_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 802) RK3399_CLKSEL_CON(5), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 803) RK3399_CLKGATE_CON(2), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 804)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 805) GATE(0, "cpll_cs", "cpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 806) RK3399_CLKGATE_CON(2), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 807) GATE(0, "gpll_cs", "gpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 808) RK3399_CLKGATE_CON(2), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 809) GATE(0, "npll_cs", "npll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 810) RK3399_CLKGATE_CON(2), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 811) COMPOSITE_NOGATE(SCLK_CS, "clk_cs", mux_cs_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 812) RK3399_CLKSEL_CON(4), 6, 2, MFLAGS, 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 813) GATE(0, "clk_dbg_cxcs", "clk_cs", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 814) RK3399_CLKGATE_CON(15), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 815) GATE(0, "clk_dbg_noc", "clk_cs", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 816) RK3399_CLKGATE_CON(15), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 817)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 818) /* vcodec */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 819) COMPOSITE(0, "aclk_vcodec_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 820) RK3399_CLKSEL_CON(7), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 821) RK3399_CLKGATE_CON(4), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 822) COMPOSITE_NOMUX(0, "hclk_vcodec_pre", "aclk_vcodec_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 823) RK3399_CLKSEL_CON(7), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 824) RK3399_CLKGATE_CON(4), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 825) GATE(HCLK_VCODEC, "hclk_vcodec", "hclk_vcodec_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 826) RK3399_CLKGATE_CON(17), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 827) GATE(0, "hclk_vcodec_noc", "hclk_vcodec_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 828) RK3399_CLKGATE_CON(17), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 829)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 830) GATE(ACLK_VCODEC, "aclk_vcodec", "aclk_vcodec_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 831) RK3399_CLKGATE_CON(17), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 832) GATE(0, "aclk_vcodec_noc", "aclk_vcodec_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 833) RK3399_CLKGATE_CON(17), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 834)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 835) /* vdu */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 836) COMPOSITE(SCLK_VDU_CORE, "clk_vdu_core", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 837) RK3399_CLKSEL_CON(9), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 838) RK3399_CLKGATE_CON(4), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 839) COMPOSITE(SCLK_VDU_CA, "clk_vdu_ca", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 840) RK3399_CLKSEL_CON(9), 14, 2, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 841) RK3399_CLKGATE_CON(4), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 842)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 843) COMPOSITE(0, "aclk_vdu_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 844) RK3399_CLKSEL_CON(8), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 845) RK3399_CLKGATE_CON(4), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 846) COMPOSITE_NOMUX(0, "hclk_vdu_pre", "aclk_vdu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 847) RK3399_CLKSEL_CON(8), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 848) RK3399_CLKGATE_CON(4), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 849) GATE(HCLK_VDU, "hclk_vdu", "hclk_vdu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 850) RK3399_CLKGATE_CON(17), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 851) GATE(HCLK_VDU_NOC, "hclk_vdu_noc", "hclk_vdu_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 852) RK3399_CLKGATE_CON(17), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 853)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 854) GATE(ACLK_VDU, "aclk_vdu", "aclk_vdu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 855) RK3399_CLKGATE_CON(17), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 856) GATE(ACLK_VDU_NOC, "aclk_vdu_noc", "aclk_vdu_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 857) RK3399_CLKGATE_CON(17), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 858)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 859) /* iep */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 860) COMPOSITE(0, "aclk_iep_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 861) RK3399_CLKSEL_CON(10), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 862) RK3399_CLKGATE_CON(4), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 863) COMPOSITE_NOMUX(0, "hclk_iep_pre", "aclk_iep_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 864) RK3399_CLKSEL_CON(10), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 865) RK3399_CLKGATE_CON(4), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 866) GATE(HCLK_IEP, "hclk_iep", "hclk_iep_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 867) RK3399_CLKGATE_CON(16), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 868) GATE(HCLK_IEP_NOC, "hclk_iep_noc", "hclk_iep_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 869) RK3399_CLKGATE_CON(16), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 870)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 871) GATE(ACLK_IEP, "aclk_iep", "aclk_iep_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 872) RK3399_CLKGATE_CON(16), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 873) GATE(ACLK_IEP_NOC, "aclk_iep_noc", "aclk_iep_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 874) RK3399_CLKGATE_CON(16), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 875)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 876) /* rga */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 877) COMPOSITE(SCLK_RGA_CORE, "clk_rga_core", mux_pll_src_cpll_gpll_npll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 878) RK3399_CLKSEL_CON(12), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 879) RK3399_CLKGATE_CON(4), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 880)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 881) COMPOSITE(0, "aclk_rga_pre", mux_pll_src_cpll_gpll_npll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 882) RK3399_CLKSEL_CON(11), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 883) RK3399_CLKGATE_CON(4), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 884) COMPOSITE_NOMUX(0, "hclk_rga_pre", "aclk_rga_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 885) RK3399_CLKSEL_CON(11), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 886) RK3399_CLKGATE_CON(4), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 887) GATE(HCLK_RGA, "hclk_rga", "hclk_rga_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 888) RK3399_CLKGATE_CON(16), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 889) GATE(HCLK_RGA_NOC, "hclk_rga_noc", "hclk_rga_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 890) RK3399_CLKGATE_CON(16), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 891)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 892) GATE(ACLK_RGA, "aclk_rga", "aclk_rga_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 893) RK3399_CLKGATE_CON(16), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 894) GATE(ACLK_RGA_NOC, "aclk_rga_noc", "aclk_rga_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 895) RK3399_CLKGATE_CON(16), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 896)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 897) /* center */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 898) COMPOSITE(ACLK_CENTER, "aclk_center", mux_pll_src_cpll_gpll_npll_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 899) RK3399_CLKSEL_CON(12), 14, 2, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 900) RK3399_CLKGATE_CON(3), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 901) GATE(ACLK_CENTER_MAIN_NOC, "aclk_center_main_noc", "aclk_center", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 902) RK3399_CLKGATE_CON(19), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 903) GATE(ACLK_CENTER_PERI_NOC, "aclk_center_peri_noc", "aclk_center", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 904) RK3399_CLKGATE_CON(19), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 905)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 906) /* gpu */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 907) COMPOSITE(0, "aclk_gpu_pre", mux_pll_src_ppll_cpll_gpll_npll_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 908) RK3399_CLKSEL_CON(13), 5, 3, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 909) RK3399_CLKGATE_CON(13), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 910) GATE(ACLK_GPU, "aclk_gpu", "aclk_gpu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 911) RK3399_CLKGATE_CON(30), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 912) GATE(ACLK_PERF_GPU, "aclk_perf_gpu", "aclk_gpu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 913) RK3399_CLKGATE_CON(30), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 914) GATE(ACLK_GPU_GRF, "aclk_gpu_grf", "aclk_gpu_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 915) RK3399_CLKGATE_CON(30), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 916) GATE(SCLK_PVTM_GPU, "aclk_pvtm_gpu", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 917) RK3399_CLKGATE_CON(13), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 918)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 919) /* perihp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 920) GATE(0, "cpll_aclk_perihp_src", "cpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 921) RK3399_CLKGATE_CON(5), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 922) GATE(0, "gpll_aclk_perihp_src", "gpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 923) RK3399_CLKGATE_CON(5), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 924) COMPOSITE(ACLK_PERIHP, "aclk_perihp", mux_aclk_perihp_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 925) RK3399_CLKSEL_CON(14), 7, 1, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 926) RK3399_CLKGATE_CON(5), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 927) COMPOSITE_NOMUX(HCLK_PERIHP, "hclk_perihp", "aclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 928) RK3399_CLKSEL_CON(14), 8, 2, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 929) RK3399_CLKGATE_CON(5), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 930) COMPOSITE_NOMUX(PCLK_PERIHP, "pclk_perihp", "aclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 931) RK3399_CLKSEL_CON(14), 12, 3, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 932) RK3399_CLKGATE_CON(5), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 933)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 934) GATE(ACLK_PERF_PCIE, "aclk_perf_pcie", "aclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 935) RK3399_CLKGATE_CON(20), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 936) GATE(ACLK_PCIE, "aclk_pcie", "aclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 937) RK3399_CLKGATE_CON(20), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 938) GATE(0, "aclk_perihp_noc", "aclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 939) RK3399_CLKGATE_CON(20), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 940)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 941) GATE(HCLK_HOST0, "hclk_host0", "hclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 942) RK3399_CLKGATE_CON(20), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 943) GATE(HCLK_HOST0_ARB, "hclk_host0_arb", "hclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 944) RK3399_CLKGATE_CON(20), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 945) GATE(HCLK_HOST1, "hclk_host1", "hclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 946) RK3399_CLKGATE_CON(20), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 947) GATE(HCLK_HOST1_ARB, "hclk_host1_arb", "hclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 948) RK3399_CLKGATE_CON(20), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 949) GATE(HCLK_HSIC, "hclk_hsic", "hclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 950) RK3399_CLKGATE_CON(20), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 951) GATE(0, "hclk_perihp_noc", "hclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 952) RK3399_CLKGATE_CON(20), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 953) GATE(0, "hclk_ahb1tom", "hclk_perihp", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 954) RK3399_CLKGATE_CON(20), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 955)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 956) GATE(PCLK_PERIHP_GRF, "pclk_perihp_grf", "pclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 957) RK3399_CLKGATE_CON(20), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 958) GATE(PCLK_PCIE, "pclk_pcie", "pclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 959) RK3399_CLKGATE_CON(20), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 960) GATE(0, "pclk_perihp_noc", "pclk_perihp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 961) RK3399_CLKGATE_CON(20), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 962) GATE(PCLK_HSICPHY, "pclk_hsicphy", "pclk_perihp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 963) RK3399_CLKGATE_CON(31), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 964)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 965) /* sdio & sdmmc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 966) COMPOSITE(HCLK_SD, "hclk_sd", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 967) RK3399_CLKSEL_CON(13), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 968) RK3399_CLKGATE_CON(12), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 969) GATE(HCLK_SDMMC, "hclk_sdmmc", "hclk_sd", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 970) RK3399_CLKGATE_CON(33), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 971) GATE(0, "hclk_sdmmc_noc", "hclk_sd", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 972) RK3399_CLKGATE_CON(33), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 973)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 974) COMPOSITE(SCLK_SDIO, "clk_sdio", mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 975) RK3399_CLKSEL_CON(15), 8, 3, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 976) RK3399_CLKGATE_CON(6), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 977)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 978) COMPOSITE(SCLK_SDMMC, "clk_sdmmc", mux_pll_src_cpll_gpll_npll_ppll_upll_24m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 979) RK3399_CLKSEL_CON(16), 8, 3, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 980) RK3399_CLKGATE_CON(6), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 981)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 982) MMC(SCLK_SDMMC_DRV, "sdmmc_drv", "clk_sdmmc", RK3399_SDMMC_CON0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 983) MMC(SCLK_SDMMC_SAMPLE, "sdmmc_sample", "clk_sdmmc", RK3399_SDMMC_CON1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 984)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 985) MMC(SCLK_SDIO_DRV, "sdio_drv", "clk_sdio", RK3399_SDIO_CON0, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 986) MMC(SCLK_SDIO_SAMPLE, "sdio_sample", "clk_sdio", RK3399_SDIO_CON1, 1),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 987)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 988) /* pcie */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 989) COMPOSITE(SCLK_PCIE_PM, "clk_pcie_pm", mux_pll_src_cpll_gpll_npll_24m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 990) RK3399_CLKSEL_CON(17), 8, 3, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 991) RK3399_CLKGATE_CON(6), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 992)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 993) COMPOSITE_NOMUX(SCLK_PCIEPHY_REF100M, "clk_pciephy_ref100m", "npll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 994) RK3399_CLKSEL_CON(18), 11, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 995) RK3399_CLKGATE_CON(12), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 996) MUX(SCLK_PCIEPHY_REF, "clk_pciephy_ref", mux_pll_src_24m_pciephy_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 997) RK3399_CLKSEL_CON(18), 10, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 998)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 999) COMPOSITE(0, "clk_pcie_core_cru", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) RK3399_CLKSEL_CON(18), 8, 2, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) RK3399_CLKGATE_CON(6), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) MUX(SCLK_PCIE_CORE, "clk_pcie_core", mux_pciecore_cru_phy_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) RK3399_CLKSEL_CON(18), 7, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) /* emmc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) COMPOSITE(SCLK_EMMC, "clk_emmc", mux_pll_src_cpll_gpll_npll_upll_24m_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) RK3399_CLKSEL_CON(22), 8, 3, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) RK3399_CLKGATE_CON(6), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) GATE(0, "cpll_aclk_emmc_src", "cpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) RK3399_CLKGATE_CON(6), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) GATE(0, "gpll_aclk_emmc_src", "gpll", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) RK3399_CLKGATE_CON(6), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) COMPOSITE_NOGATE(ACLK_EMMC, "aclk_emmc", mux_aclk_emmc_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015) RK3399_CLKSEL_CON(21), 7, 1, MFLAGS, 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016) GATE(ACLK_EMMC_CORE, "aclk_emmccore", "aclk_emmc", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017) RK3399_CLKGATE_CON(32), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018) GATE(ACLK_EMMC_NOC, "aclk_emmc_noc", "aclk_emmc", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019) RK3399_CLKGATE_CON(32), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020) GATE(ACLK_EMMC_GRF, "aclk_emmcgrf", "aclk_emmc", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) RK3399_CLKGATE_CON(32), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) /* perilp0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) GATE(0, "cpll_aclk_perilp0_src", "cpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) RK3399_CLKGATE_CON(7), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) GATE(0, "gpll_aclk_perilp0_src", "gpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) RK3399_CLKGATE_CON(7), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) COMPOSITE(ACLK_PERILP0, "aclk_perilp0", mux_aclk_perilp0_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) RK3399_CLKSEL_CON(23), 7, 1, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030) RK3399_CLKGATE_CON(7), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031) COMPOSITE_NOMUX(HCLK_PERILP0, "hclk_perilp0", "aclk_perilp0", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032) RK3399_CLKSEL_CON(23), 8, 2, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) RK3399_CLKGATE_CON(7), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) COMPOSITE_NOMUX(PCLK_PERILP0, "pclk_perilp0", "aclk_perilp0", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) RK3399_CLKSEL_CON(23), 12, 3, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036) RK3399_CLKGATE_CON(7), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038) /* aclk_perilp0 gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039) GATE(ACLK_INTMEM, "aclk_intmem", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040) GATE(ACLK_TZMA, "aclk_tzma", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041) GATE(SCLK_INTMEM0, "clk_intmem0", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042) GATE(SCLK_INTMEM1, "clk_intmem1", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043) GATE(SCLK_INTMEM2, "clk_intmem2", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044) GATE(SCLK_INTMEM3, "clk_intmem3", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) GATE(SCLK_INTMEM4, "clk_intmem4", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) GATE(SCLK_INTMEM5, "clk_intmem5", "aclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(23), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) GATE(ACLK_DCF, "aclk_dcf", "aclk_perilp0", 0, RK3399_CLKGATE_CON(23), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) GATE(ACLK_DMAC0_PERILP, "aclk_dmac0_perilp", "aclk_perilp0", 0, RK3399_CLKGATE_CON(25), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) GATE(ACLK_DMAC1_PERILP, "aclk_dmac1_perilp", "aclk_perilp0", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) GATE(ACLK_PERILP0_NOC, "aclk_perilp0_noc", "aclk_perilp0", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) /* hclk_perilp0 gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) GATE(HCLK_ROM, "hclk_rom", "hclk_perilp0", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(24), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) GATE(HCLK_M_CRYPTO0, "hclk_m_crypto0", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) GATE(HCLK_S_CRYPTO0, "hclk_s_crypto0", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) GATE(HCLK_M_CRYPTO1, "hclk_m_crypto1", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) GATE(HCLK_S_CRYPTO1, "hclk_s_crypto1", "hclk_perilp0", 0, RK3399_CLKGATE_CON(24), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) GATE(HCLK_PERILP0_NOC, "hclk_perilp0_noc", "hclk_perilp0", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060) /* pclk_perilp0 gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061) GATE(PCLK_DCF, "pclk_dcf", "pclk_perilp0", 0, RK3399_CLKGATE_CON(23), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063) /* crypto */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064) COMPOSITE(SCLK_CRYPTO0, "clk_crypto0", mux_pll_src_cpll_gpll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065) RK3399_CLKSEL_CON(24), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066) RK3399_CLKGATE_CON(7), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) COMPOSITE(SCLK_CRYPTO1, "clk_crypto1", mux_pll_src_cpll_gpll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) RK3399_CLKSEL_CON(26), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) RK3399_CLKGATE_CON(7), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) /* cm0s_perilp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) GATE(0, "cpll_fclk_cm0s_src", "cpll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) RK3399_CLKGATE_CON(7), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) GATE(0, "gpll_fclk_cm0s_src", "gpll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) RK3399_CLKGATE_CON(7), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) COMPOSITE(FCLK_CM0S, "fclk_cm0s", mux_fclk_cm0s_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) RK3399_CLKSEL_CON(24), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) RK3399_CLKGATE_CON(7), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) /* fclk_cm0s gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082) GATE(SCLK_M0_PERILP, "sclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083) GATE(HCLK_M0_PERILP, "hclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084) GATE(DCLK_M0_PERILP, "dclk_m0_perilp", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) GATE(SCLK_M0_PERILP_DEC, "clk_m0_perilp_dec", "fclk_cm0s", 0, RK3399_CLKGATE_CON(24), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) GATE(HCLK_M0_PERILP_NOC, "hclk_m0_perilp_noc", "fclk_cm0s", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088) /* perilp1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089) GATE(0, "cpll_hclk_perilp1_src", "cpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090) RK3399_CLKGATE_CON(8), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091) GATE(0, "gpll_hclk_perilp1_src", "gpll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092) RK3399_CLKGATE_CON(8), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093) COMPOSITE_NOGATE(HCLK_PERILP1, "hclk_perilp1", mux_hclk_perilp1_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094) RK3399_CLKSEL_CON(25), 7, 1, MFLAGS, 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) COMPOSITE_NOMUX(PCLK_PERILP1, "pclk_perilp1", "hclk_perilp1", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) RK3399_CLKSEL_CON(25), 8, 3, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) RK3399_CLKGATE_CON(8), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) /* hclk_perilp1 gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) GATE(0, "hclk_perilp1_noc", "hclk_perilp1", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) GATE(0, "hclk_sdio_noc", "hclk_perilp1", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) GATE(HCLK_I2S0_8CH, "hclk_i2s0", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) GATE(HCLK_I2S1_8CH, "hclk_i2s1", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) GATE(HCLK_I2S2_8CH, "hclk_i2s2", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) GATE(HCLK_SPDIF, "hclk_spdif", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) GATE(HCLK_SDIO, "hclk_sdio", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107) GATE(PCLK_SPI5, "pclk_spi5", "hclk_perilp1", 0, RK3399_CLKGATE_CON(34), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108) GATE(0, "hclk_sdioaudio_noc", "hclk_perilp1", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(34), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) /* pclk_perilp1 gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) GATE(PCLK_UART0, "pclk_uart0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) GATE(PCLK_UART1, "pclk_uart1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) GATE(PCLK_UART2, "pclk_uart2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) GATE(PCLK_UART3, "pclk_uart3", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) GATE(PCLK_I2C7, "pclk_rki2c7", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) GATE(PCLK_I2C1, "pclk_rki2c1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) GATE(PCLK_I2C5, "pclk_rki2c5", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) GATE(PCLK_I2C6, "pclk_rki2c6", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) GATE(PCLK_I2C2, "pclk_rki2c2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) GATE(PCLK_I2C3, "pclk_rki2c3", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) GATE(PCLK_MAILBOX0, "pclk_mailbox0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) GATE(PCLK_SARADC, "pclk_saradc", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) GATE(PCLK_TSADC, "pclk_tsadc", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) GATE(PCLK_EFUSE1024NS, "pclk_efuse1024ns", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) GATE(PCLK_EFUSE1024S, "pclk_efuse1024s", "pclk_perilp1", 0, RK3399_CLKGATE_CON(22), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126) GATE(PCLK_SPI0, "pclk_spi0", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127) GATE(PCLK_SPI1, "pclk_spi1", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128) GATE(PCLK_SPI2, "pclk_spi2", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129) GATE(PCLK_SPI4, "pclk_spi4", "pclk_perilp1", 0, RK3399_CLKGATE_CON(23), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130) GATE(PCLK_PERIHP_GRF, "pclk_perilp_sgrf", "pclk_perilp1", 0, RK3399_CLKGATE_CON(24), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131) GATE(0, "pclk_perilp1_noc", "pclk_perilp1", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(25), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133) /* saradc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134) COMPOSITE_NOMUX(SCLK_SARADC, "clk_saradc", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135) RK3399_CLKSEL_CON(26), 8, 8, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136) RK3399_CLKGATE_CON(9), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138) /* tsadc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139) COMPOSITE(SCLK_TSADC, "clk_tsadc", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140) RK3399_CLKSEL_CON(27), 15, 1, MFLAGS, 0, 10, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141) RK3399_CLKGATE_CON(9), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143) /* cif_testout */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144) MUX(0, "clk_testout1_pll_src", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145) RK3399_CLKSEL_CON(38), 6, 2, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146) COMPOSITE(SCLK_TESTCLKOUT1, "clk_testout1", mux_clk_testout1_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147) RK3399_CLKSEL_CON(38), 5, 1, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148) RK3399_CLKGATE_CON(13), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150) MUX(0, "clk_testout2_pll_src", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) RK3399_CLKSEL_CON(38), 14, 2, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) COMPOSITE(SCLK_TESTCLKOUT2, "clk_testout2", mux_clk_testout2_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) RK3399_CLKSEL_CON(38), 13, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) RK3399_CLKGATE_CON(13), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) /* vio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) COMPOSITE(ACLK_VIO, "aclk_vio", mux_pll_src_cpll_gpll_ppll_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) RK3399_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159) RK3399_CLKGATE_CON(11), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160) COMPOSITE_NOMUX(PCLK_VIO, "pclk_vio", "aclk_vio", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161) RK3399_CLKSEL_CON(43), 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162) RK3399_CLKGATE_CON(11), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164) GATE(ACLK_VIO_NOC, "aclk_vio_noc", "aclk_vio", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165) RK3399_CLKGATE_CON(29), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167) GATE(PCLK_MIPI_DSI0, "pclk_mipi_dsi0", "pclk_vio", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168) RK3399_CLKGATE_CON(29), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169) GATE(PCLK_MIPI_DSI1, "pclk_mipi_dsi1", "pclk_vio", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170) RK3399_CLKGATE_CON(29), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171) GATE(PCLK_VIO_GRF, "pclk_vio_grf", "pclk_vio", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) RK3399_CLKGATE_CON(29), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) /* hdcp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) COMPOSITE_NOGATE(ACLK_HDCP, "aclk_hdcp", mux_pll_src_cpll_gpll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) RK3399_CLKSEL_CON(42), 14, 2, MFLAGS, 8, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) COMPOSITE_NOMUX(HCLK_HDCP, "hclk_hdcp", "aclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) RK3399_CLKSEL_CON(43), 5, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) RK3399_CLKGATE_CON(11), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) COMPOSITE_NOMUX(PCLK_HDCP, "pclk_hdcp", "aclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) RK3399_CLKSEL_CON(43), 10, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) RK3399_CLKGATE_CON(11), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) GATE(ACLK_HDCP_NOC, "aclk_hdcp_noc", "aclk_hdcp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) RK3399_CLKGATE_CON(29), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) GATE(ACLK_HDCP22, "aclk_hdcp22", "aclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) RK3399_CLKGATE_CON(29), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) GATE(HCLK_HDCP_NOC, "hclk_hdcp_noc", "hclk_hdcp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) RK3399_CLKGATE_CON(29), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) GATE(HCLK_HDCP22, "hclk_hdcp22", "hclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) RK3399_CLKGATE_CON(29), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) GATE(PCLK_HDCP_NOC, "pclk_hdcp_noc", "pclk_hdcp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) RK3399_CLKGATE_CON(29), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) GATE(PCLK_HDMI_CTRL, "pclk_hdmi_ctrl", "pclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) RK3399_CLKGATE_CON(29), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) GATE(PCLK_DP_CTRL, "pclk_dp_ctrl", "pclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) RK3399_CLKGATE_CON(29), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) GATE(PCLK_HDCP22, "pclk_hdcp22", "pclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) RK3399_CLKGATE_CON(29), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) GATE(PCLK_GASKET, "pclk_gasket", "pclk_hdcp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) RK3399_CLKGATE_CON(29), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) /* edp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) COMPOSITE(SCLK_DP_CORE, "clk_dp_core", mux_pll_src_npll_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) RK3399_CLKSEL_CON(46), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208) RK3399_CLKGATE_CON(11), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210) COMPOSITE(PCLK_EDP, "pclk_edp", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211) RK3399_CLKSEL_CON(44), 15, 1, MFLAGS, 8, 6, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212) RK3399_CLKGATE_CON(11), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213) GATE(PCLK_EDP_NOC, "pclk_edp_noc", "pclk_edp", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214) RK3399_CLKGATE_CON(32), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215) GATE(PCLK_EDP_CTRL, "pclk_edp_ctrl", "pclk_edp", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216) RK3399_CLKGATE_CON(32), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218) /* hdmi */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219) GATE(SCLK_HDMI_SFR, "clk_hdmi_sfr", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220) RK3399_CLKGATE_CON(11), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222) COMPOSITE(SCLK_HDMI_CEC, "clk_hdmi_cec", mux_pll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223) RK3399_CLKSEL_CON(45), 15, 1, MFLAGS, 0, 10, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224) RK3399_CLKGATE_CON(11), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226) /* vop0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227) COMPOSITE(ACLK_VOP0_PRE, "aclk_vop0_pre", mux_pll_src_dmyvpll_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228) RK3399_CLKSEL_CON(47), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229) RK3399_CLKGATE_CON(10), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230) COMPOSITE_NOMUX(0, "hclk_vop0_pre", "aclk_vop0_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231) RK3399_CLKSEL_CON(47), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232) RK3399_CLKGATE_CON(10), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234) GATE(ACLK_VOP0, "aclk_vop0", "aclk_vop0_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235) RK3399_CLKGATE_CON(28), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236) GATE(ACLK_VOP0_NOC, "aclk_vop0_noc", "aclk_vop0_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237) RK3399_CLKGATE_CON(28), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239) GATE(HCLK_VOP0, "hclk_vop0", "hclk_vop0_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240) RK3399_CLKGATE_CON(28), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241) GATE(HCLK_VOP0_NOC, "hclk_vop0_noc", "hclk_vop0_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242) RK3399_CLKGATE_CON(28), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244) #ifdef RK3399_TWO_PLL_FOR_VOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) COMPOSITE(DCLK_VOP0_DIV, "dclk_vop0_div", mux_pll_src_vpll_cpll_gpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) RK3399_CLKSEL_CON(49), 8, 2, MFLAGS, 0, 8, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) RK3399_CLKGATE_CON(10), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) COMPOSITE(DCLK_VOP0_DIV, "dclk_vop0_div", mux_pll_src_vpll_cpll_gpll_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) RK3399_CLKSEL_CON(49), 8, 2, MFLAGS, 0, 8, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) RK3399_CLKGATE_CON(10), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254) /* The VOP0 is main screen, it is able to re-set parent rate. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255) COMPOSITE_FRACMUX_NOGATE(0, "dclk_vop0_frac", "dclk_vop0_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) RK3399_CLKSEL_CON(106), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) &rk3399_dclk_vop0_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259) COMPOSITE(SCLK_VOP0_PWM, "clk_vop0_pwm", mux_pll_src_dmyvpll_cpll_gpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260) RK3399_CLKSEL_CON(51), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261) RK3399_CLKGATE_CON(10), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263) /* vop1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264) COMPOSITE(ACLK_VOP1_PRE, "aclk_vop1_pre", mux_pll_src_dmyvpll_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265) RK3399_CLKSEL_CON(48), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266) RK3399_CLKGATE_CON(10), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267) COMPOSITE_NOMUX(0, "hclk_vop1_pre", "aclk_vop1_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268) RK3399_CLKSEL_CON(48), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269) RK3399_CLKGATE_CON(10), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271) GATE(ACLK_VOP1, "aclk_vop1", "aclk_vop1_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272) RK3399_CLKGATE_CON(28), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273) GATE(ACLK_VOP1_NOC, "aclk_vop1_noc", "aclk_vop1_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274) RK3399_CLKGATE_CON(28), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276) GATE(HCLK_VOP1, "hclk_vop1", "hclk_vop1_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277) RK3399_CLKGATE_CON(28), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) GATE(HCLK_VOP1_NOC, "hclk_vop1_noc", "hclk_vop1_pre", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) RK3399_CLKGATE_CON(28), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) /* The VOP1 is sub screen, it is note able to re-set parent rate. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) #ifdef RK3399_TWO_PLL_FOR_VOP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) COMPOSITE(DCLK_VOP1_DIV, "dclk_vop1_div", mux_pll_src_vpll_cpll_gpll_p, CLK_SET_RATE_PARENT | CLK_SET_RATE_NO_REPARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) RK3399_CLKSEL_CON(50), 8, 2, MFLAGS, 0, 8, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) RK3399_CLKGATE_CON(10), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) COMPOSITE(DCLK_VOP1_DIV, "dclk_vop1_div", mux_pll_src_dmyvpll_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) RK3399_CLKSEL_CON(50), 8, 2, MFLAGS, 0, 8, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) RK3399_CLKGATE_CON(10), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292) COMPOSITE_FRACMUX_NOGATE(DCLK_VOP1_FRAC, "dclk_vop1_frac", "dclk_vop1_div", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293) RK3399_CLKSEL_CON(107), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294) &rk3399_dclk_vop1_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296) COMPOSITE(SCLK_VOP1_PWM, "clk_vop1_pwm", mux_pll_src_dmyvpll_cpll_gpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297) RK3399_CLKSEL_CON(52), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298) RK3399_CLKGATE_CON(10), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300) /* isp */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301) COMPOSITE(ACLK_ISP0, "aclk_isp0", mux_pll_src_cpll_gpll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302) RK3399_CLKSEL_CON(53), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303) RK3399_CLKGATE_CON(12), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304) COMPOSITE_NOMUX(HCLK_ISP0, "hclk_isp0", "aclk_isp0", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305) RK3399_CLKSEL_CON(53), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306) RK3399_CLKGATE_CON(12), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308) GATE(ACLK_ISP0_NOC, "aclk_isp0_noc", "aclk_isp0", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309) RK3399_CLKGATE_CON(27), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310) GATE(ACLK_ISP0_WRAPPER, "aclk_isp0_wrapper", "aclk_isp0", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311) RK3399_CLKGATE_CON(27), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313) GATE(HCLK_ISP0_NOC, "hclk_isp0_noc", "hclk_isp0", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314) RK3399_CLKGATE_CON(27), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315) GATE(HCLK_ISP0_WRAPPER, "hclk_isp0_wrapper", "hclk_isp0", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316) RK3399_CLKGATE_CON(27), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318) COMPOSITE(SCLK_ISP0, "clk_isp0", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319) RK3399_CLKSEL_CON(55), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320) RK3399_CLKGATE_CON(11), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322) COMPOSITE(ACLK_ISP1, "aclk_isp1", mux_pll_src_cpll_gpll_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323) RK3399_CLKSEL_CON(54), 6, 2, MFLAGS, 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324) RK3399_CLKGATE_CON(12), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325) COMPOSITE_NOMUX(HCLK_ISP1, "hclk_isp1", "aclk_isp1", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326) RK3399_CLKSEL_CON(54), 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327) RK3399_CLKGATE_CON(12), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329) GATE(ACLK_ISP1_NOC, "aclk_isp1_noc", "aclk_isp1", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330) RK3399_CLKGATE_CON(27), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331) GATE(ACLK_ISP1_WRAPPER, "aclk_isp1_wrapper", "aclk_isp1", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332) RK3399_CLKGATE_CON(27), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334) GATE(HCLK_ISP1_NOC, "hclk_isp1_noc", "hclk_isp1", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335) RK3399_CLKGATE_CON(27), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336) GATE(HCLK_ISP1_WRAPPER, "hclk_isp1_wrapper", "hclk_isp1", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337) RK3399_CLKGATE_CON(27), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339) COMPOSITE(SCLK_ISP1, "clk_isp1", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340) RK3399_CLKSEL_CON(55), 14, 2, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341) RK3399_CLKGATE_CON(11), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344) * We use pclkin_cifinv by default GRF_SOC_CON20[9] (GSC20_9) setting in system,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345) * so we ignore the mux and make clocks nodes as following,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347) * pclkin_cifinv --|-------\
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348) * |GSC20_9|-- pclkin_cifmux -- |G27_6| -- pclkin_isp1_wrapper
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349) * pclkin_cif --|-------/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351) GATE(PCLK_ISP1_WRAPPER, "pclkin_isp1_wrapper", "pclkin_cif", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352) RK3399_CLKGATE_CON(27), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354) /* cif */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355) COMPOSITE_NODIV(SCLK_CIF_OUT_SRC, "clk_cifout_src", mux_pll_src_cpll_gpll_npll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356) RK3399_CLKSEL_CON(56), 6, 2, MFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357) RK3399_CLKGATE_CON(10), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359) COMPOSITE_NOGATE(SCLK_CIF_OUT, "clk_cifout", mux_clk_cif_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360) RK3399_CLKSEL_CON(56), 5, 1, MFLAGS, 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362) /* gic */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363) COMPOSITE(ACLK_GIC_PRE, "aclk_gic_pre", mux_pll_src_cpll_gpll_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364) RK3399_CLKSEL_CON(56), 15, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365) RK3399_CLKGATE_CON(12), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367) GATE(ACLK_GIC, "aclk_gic", "aclk_gic_pre", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(33), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368) GATE(ACLK_GIC_NOC, "aclk_gic_noc", "aclk_gic_pre", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(33), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369) GATE(ACLK_GIC_ADB400_CORE_L_2_GIC, "aclk_gic_adb400_core_l_2_gic", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370) GATE(ACLK_GIC_ADB400_CORE_B_2_GIC, "aclk_gic_adb400_core_b_2_gic", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371) GATE(ACLK_GIC_ADB400_GIC_2_CORE_L, "aclk_gic_adb400_gic_2_core_l", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372) GATE(ACLK_GIC_ADB400_GIC_2_CORE_B, "aclk_gic_adb400_gic_2_core_b", "aclk_gic_pre", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(33), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374) /* alive */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375) /* pclk_alive_gpll_src is controlled by PMUGRF_SOC_CON0[6] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376) DIV(PCLK_ALIVE, "pclk_alive", "gpll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377) RK3399_CLKSEL_CON(57), 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379) GATE(PCLK_USBPHY_MUX_G, "pclk_usbphy_mux_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380) GATE(PCLK_UPHY0_TCPHY_G, "pclk_uphy0_tcphy_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1381) GATE(PCLK_UPHY0_TCPD_G, "pclk_uphy0_tcpd_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1382) GATE(PCLK_UPHY1_TCPHY_G, "pclk_uphy1_tcphy_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1383) GATE(PCLK_UPHY1_TCPD_G, "pclk_uphy1_tcpd_g", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(21), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1384)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1385) GATE(PCLK_GRF, "pclk_grf", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1386) GATE(PCLK_INTR_ARB, "pclk_intr_arb", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1387) GATE(PCLK_GPIO2, "pclk_gpio2", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1388) GATE(PCLK_GPIO3, "pclk_gpio3", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1389) GATE(PCLK_GPIO4, "pclk_gpio4", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1390) GATE(PCLK_TIMER0, "pclk_timer0", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1391) GATE(PCLK_TIMER1, "pclk_timer1", "pclk_alive", 0, RK3399_CLKGATE_CON(31), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1392) GATE(PCLK_PMU_INTR_ARB, "pclk_pmu_intr_arb", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1393) GATE(PCLK_SGRF, "pclk_sgrf", "pclk_alive", CLK_IGNORE_UNUSED, RK3399_CLKGATE_CON(31), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1394)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1395) /* Watchdog pclk is controlled by RK3399 SECURE_GRF_SOC_CON3[8]. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1396) SGRF_GATE(PCLK_WDT, "pclk_wdt", "pclk_alive"),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1397)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1398) GATE(SCLK_MIPIDPHY_REF, "clk_mipidphy_ref", "xin24m", 0, RK3399_CLKGATE_CON(11), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1399) GATE(SCLK_DPHY_PLL, "clk_dphy_pll", "clk_mipidphy_ref", 0, RK3399_CLKGATE_CON(21), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1401) GATE(SCLK_MIPIDPHY_CFG, "clk_mipidphy_cfg", "xin24m", 0, RK3399_CLKGATE_CON(11), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1402) GATE(SCLK_DPHY_TX0_CFG, "clk_dphy_tx0_cfg", "clk_mipidphy_cfg", 0, RK3399_CLKGATE_CON(21), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1403) GATE(SCLK_DPHY_TX1RX1_CFG, "clk_dphy_tx1rx1_cfg", "clk_mipidphy_cfg", 0, RK3399_CLKGATE_CON(21), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1404) GATE(SCLK_DPHY_RX0_CFG, "clk_dphy_rx0_cfg", "clk_mipidphy_cfg", 0, RK3399_CLKGATE_CON(21), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1405)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1406) /* testout */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1407) MUX(0, "clk_test_pre", mux_pll_src_cpll_gpll_p, CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1408) RK3399_CLKSEL_CON(58), 7, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1409) COMPOSITE_FRAC(0, "clk_test_frac", "clk_test_pre", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1410) RK3399_CLKSEL_CON(105), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1411) RK3399_CLKGATE_CON(13), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1412)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1413) DIV(0, "clk_test_24m", "xin24m", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1414) RK3399_CLKSEL_CON(57), 6, 10, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1416) /* spi */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1417) COMPOSITE(SCLK_SPI0, "clk_spi0", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1418) RK3399_CLKSEL_CON(59), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1419) RK3399_CLKGATE_CON(9), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1420)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1421) COMPOSITE(SCLK_SPI1, "clk_spi1", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1422) RK3399_CLKSEL_CON(59), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1423) RK3399_CLKGATE_CON(9), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1425) COMPOSITE(SCLK_SPI2, "clk_spi2", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1426) RK3399_CLKSEL_CON(60), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1427) RK3399_CLKGATE_CON(9), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1428)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1429) COMPOSITE(SCLK_SPI4, "clk_spi4", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1430) RK3399_CLKSEL_CON(60), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1431) RK3399_CLKGATE_CON(9), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1432)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1433) COMPOSITE(SCLK_SPI5, "clk_spi5", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1434) RK3399_CLKSEL_CON(58), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1435) RK3399_CLKGATE_CON(13), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1436)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1437) /* i2c */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1438) COMPOSITE(SCLK_I2C1, "clk_i2c1", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1439) RK3399_CLKSEL_CON(61), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1440) RK3399_CLKGATE_CON(10), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1441)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1442) COMPOSITE(SCLK_I2C2, "clk_i2c2", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1443) RK3399_CLKSEL_CON(62), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1444) RK3399_CLKGATE_CON(10), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1445)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1446) COMPOSITE(SCLK_I2C3, "clk_i2c3", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1447) RK3399_CLKSEL_CON(63), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1448) RK3399_CLKGATE_CON(10), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1449)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1450) COMPOSITE(SCLK_I2C5, "clk_i2c5", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1451) RK3399_CLKSEL_CON(61), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1452) RK3399_CLKGATE_CON(10), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1453)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1454) COMPOSITE(SCLK_I2C6, "clk_i2c6", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1455) RK3399_CLKSEL_CON(62), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1456) RK3399_CLKGATE_CON(10), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1458) COMPOSITE(SCLK_I2C7, "clk_i2c7", mux_pll_src_cpll_gpll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1459) RK3399_CLKSEL_CON(63), 15, 1, MFLAGS, 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1460) RK3399_CLKGATE_CON(10), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1461)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1462) /* timer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1463) GATE(SCLK_TIMER00, "clk_timer00", "xin24m", 0, RK3399_CLKGATE_CON(26), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1464) GATE(SCLK_TIMER01, "clk_timer01", "xin24m", 0, RK3399_CLKGATE_CON(26), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1465) GATE(SCLK_TIMER02, "clk_timer02", "xin24m", 0, RK3399_CLKGATE_CON(26), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1466) GATE(SCLK_TIMER03, "clk_timer03", "xin24m", 0, RK3399_CLKGATE_CON(26), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1467) GATE(SCLK_TIMER04, "clk_timer04", "xin24m", 0, RK3399_CLKGATE_CON(26), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1468) GATE(SCLK_TIMER05, "clk_timer05", "xin24m", 0, RK3399_CLKGATE_CON(26), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1469) GATE(SCLK_TIMER06, "clk_timer06", "xin24m", 0, RK3399_CLKGATE_CON(26), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1470) GATE(SCLK_TIMER07, "clk_timer07", "xin24m", 0, RK3399_CLKGATE_CON(26), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1471) GATE(SCLK_TIMER08, "clk_timer08", "xin24m", 0, RK3399_CLKGATE_CON(26), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1472) GATE(SCLK_TIMER09, "clk_timer09", "xin24m", 0, RK3399_CLKGATE_CON(26), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1473) GATE(SCLK_TIMER10, "clk_timer10", "xin24m", 0, RK3399_CLKGATE_CON(26), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1474) GATE(SCLK_TIMER11, "clk_timer11", "xin24m", 0, RK3399_CLKGATE_CON(26), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1475)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1476) /* clk_test */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1477) /* clk_test_pre is controlled by CRU_MISC_CON[3] */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1478) COMPOSITE_NOMUX(0, "clk_test", "clk_test_pre", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1479) RK3399_CLKSEL_CON(58), 0, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1480) RK3399_CLKGATE_CON(13), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1481)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1482) /* ddrc */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1483) GATE(0, "clk_ddrc_lpll_src", "lpll", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1484) 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1485) GATE(0, "clk_ddrc_bpll_src", "bpll", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1486) 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1487) GATE(0, "clk_ddrc_dpll_src", "dpll", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1488) 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1489) GATE(0, "clk_ddrc_gpll_src", "gpll", CLK_IS_CRITICAL, RK3399_CLKGATE_CON(3),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1490) 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1491) COMPOSITE_DDRCLK(SCLK_DDRC, "sclk_ddrc", mux_ddrclk_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1492) RK3399_CLKSEL_CON(6), 4, 2, 0, 0, ROCKCHIP_DDRCLK_SIP),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1493) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1494)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1495) static struct rockchip_clk_branch rk3399_clk_pmu_branches[] __initdata = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1496) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1497) * PMU CRU Clock-Architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1498) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1499)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1500) GATE(0, "fclk_cm0s_pmu_ppll_src", "ppll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1501) RK3399_PMU_CLKGATE_CON(0), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1502)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1503) COMPOSITE_NOGATE(FCLK_CM0S_SRC_PMU, "fclk_cm0s_src_pmu", mux_fclk_cm0s_pmu_ppll_p, CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1504) RK3399_PMU_CLKSEL_CON(0), 15, 1, MFLAGS, 8, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1505)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1506) COMPOSITE(SCLK_SPI3_PMU, "clk_spi3_pmu", mux_24m_ppll_p, 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1507) RK3399_PMU_CLKSEL_CON(1), 7, 1, MFLAGS, 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1508) RK3399_PMU_CLKGATE_CON(0), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1509)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1510) COMPOSITE(0, "clk_wifi_div", mux_ppll_24m_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1511) RK3399_PMU_CLKSEL_CON(1), 13, 1, MFLAGS, 8, 5, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1512) RK3399_PMU_CLKGATE_CON(0), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1513)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1514) COMPOSITE_FRACMUX_NOGATE(0, "clk_wifi_frac", "clk_wifi_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1515) RK3399_PMU_CLKSEL_CON(7), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1516) &rk3399_pmuclk_wifi_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1517)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1518) MUX(0, "clk_timer_src_pmu", mux_pll_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1519) RK3399_PMU_CLKSEL_CON(1), 15, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1520)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1521) COMPOSITE_NOMUX(SCLK_I2C0_PMU, "clk_i2c0_pmu", "ppll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1522) RK3399_PMU_CLKSEL_CON(2), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1523) RK3399_PMU_CLKGATE_CON(0), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1524)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1525) COMPOSITE_NOMUX(SCLK_I2C4_PMU, "clk_i2c4_pmu", "ppll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1526) RK3399_PMU_CLKSEL_CON(3), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1527) RK3399_PMU_CLKGATE_CON(0), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1528)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1529) COMPOSITE_NOMUX(SCLK_I2C8_PMU, "clk_i2c8_pmu", "ppll", 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1530) RK3399_PMU_CLKSEL_CON(2), 8, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1531) RK3399_PMU_CLKGATE_CON(0), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1532)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1533) DIV(0, "clk_32k_suspend_pmu", "xin24m", CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1534) RK3399_PMU_CLKSEL_CON(4), 0, 10, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1535) MUX(0, "clk_testout_2io", mux_clk_testout2_2io_p, CLK_IGNORE_UNUSED,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1536) RK3399_PMU_CLKSEL_CON(4), 15, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1537)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1538) MUX(SCLK_UART4_SRC, "clk_uart4_src", mux_24m_ppll_p, CLK_SET_RATE_NO_REPARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1539) RK3399_PMU_CLKSEL_CON(5), 10, 1, MFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1540)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1541) COMPOSITE_NOMUX(0, "clk_uart4_div", "clk_uart4_src", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1542) RK3399_PMU_CLKSEL_CON(5), 0, 7, DFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1543) RK3399_PMU_CLKGATE_CON(0), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1544)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1545) COMPOSITE_FRACMUX(0, "clk_uart4_frac", "clk_uart4_div", CLK_SET_RATE_PARENT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1546) RK3399_PMU_CLKSEL_CON(6), 0,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1547) RK3399_PMU_CLKGATE_CON(0), 6, GFLAGS,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1548) &rk3399_uart4_pmu_fracmux),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1549)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1550) DIV(PCLK_SRC_PMU, "pclk_pmu_src", "ppll", CLK_IS_CRITICAL,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1551) RK3399_PMU_CLKSEL_CON(0), 0, 5, DFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1552)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1553) /* pmu clock gates */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1554) GATE(SCLK_TIMER12_PMU, "clk_timer0_pmu", "clk_timer_src_pmu", 0, RK3399_PMU_CLKGATE_CON(0), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1555) GATE(SCLK_TIMER13_PMU, "clk_timer1_pmu", "clk_timer_src_pmu", 0, RK3399_PMU_CLKGATE_CON(0), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1556)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1557) GATE(SCLK_PVTM_PMU, "clk_pvtm_pmu", "xin24m", 0, RK3399_PMU_CLKGATE_CON(0), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1558)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1559) GATE(PCLK_PMU, "pclk_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1560) GATE(PCLK_PMUGRF_PMU, "pclk_pmugrf_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1561) GATE(PCLK_INTMEM1_PMU, "pclk_intmem1_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1562) GATE(PCLK_GPIO0_PMU, "pclk_gpio0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1563) GATE(PCLK_GPIO1_PMU, "pclk_gpio1_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 4, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1564) GATE(PCLK_SGRF_PMU, "pclk_sgrf_pmu", "pclk_pmu_src", CLK_IGNORE_UNUSED, RK3399_PMU_CLKGATE_CON(1), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1565) GATE(PCLK_NOC_PMU, "pclk_noc_pmu", "pclk_pmu_src", CLK_IS_CRITICAL, RK3399_PMU_CLKGATE_CON(1), 6, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1566) GATE(PCLK_I2C0_PMU, "pclk_i2c0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 7, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1567) GATE(PCLK_I2C4_PMU, "pclk_i2c4_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 8, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1568) GATE(PCLK_I2C8_PMU, "pclk_i2c8_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 9, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1569) GATE(PCLK_RKPWM_PMU, "pclk_rkpwm_pmu", "pclk_pmu_src", CLK_IS_CRITICAL, RK3399_PMU_CLKGATE_CON(1), 10, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1570) GATE(PCLK_SPI3_PMU, "pclk_spi3_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 11, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1571) GATE(PCLK_TIMER_PMU, "pclk_timer_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 12, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1572) GATE(PCLK_MAILBOX_PMU, "pclk_mailbox_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 13, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1573) GATE(PCLK_UART4_PMU, "pclk_uart4_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 14, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1574) GATE(PCLK_WDT_M0_PMU, "pclk_wdt_m0_pmu", "pclk_pmu_src", 0, RK3399_PMU_CLKGATE_CON(1), 15, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1575)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1576) GATE(FCLK_CM0S_PMU, "fclk_cm0s_pmu", "fclk_cm0s_src_pmu", 0, RK3399_PMU_CLKGATE_CON(2), 0, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1577) GATE(SCLK_CM0S_PMU, "sclk_cm0s_pmu", "fclk_cm0s_src_pmu", 0, RK3399_PMU_CLKGATE_CON(2), 1, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1578) GATE(HCLK_CM0S_PMU, "hclk_cm0s_pmu", "fclk_cm0s_src_pmu", 0, RK3399_PMU_CLKGATE_CON(2), 2, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1579) GATE(DCLK_CM0S_PMU, "dclk_cm0s_pmu", "fclk_cm0s_src_pmu", 0, RK3399_PMU_CLKGATE_CON(2), 3, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1580) GATE(HCLK_NOC_PMU, "hclk_noc_pmu", "fclk_cm0s_src_pmu", CLK_IS_CRITICAL, RK3399_PMU_CLKGATE_CON(2), 5, GFLAGS),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1581) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1582)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1583) static void __iomem *rk3399_cru_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1584) static void __iomem *rk3399_pmucru_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1585)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1586) void rk3399_dump_cru(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1587) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1588) if (rk3399_cru_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1589) pr_warn("CRU:\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1590) print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1591) 32, 4, rk3399_cru_base,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1592) 0x594, false);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1593) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1594) if (rk3399_pmucru_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1595) pr_warn("PMU CRU:\n");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1596) print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1597) 32, 4, rk3399_pmucru_base,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1598) 0x134, false);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1599) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1600) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1601) EXPORT_SYMBOL_GPL(rk3399_dump_cru);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1602)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1603) static int rk3399_clk_panic(struct notifier_block *this,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1604) unsigned long ev, void *ptr)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1605) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1606) rk3399_dump_cru();
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1607) return NOTIFY_DONE;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1608) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1609)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1610) static struct notifier_block rk3399_clk_panic_block = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1611) .notifier_call = rk3399_clk_panic,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1612) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1613)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1614) static void __init rk3399_clk_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1615) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1616) struct rockchip_clk_provider *ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1617) void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1618) struct clk **clks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1619)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1620) reg_base = of_iomap(np, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1621) if (!reg_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1622) pr_err("%s: could not map cru region\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1623) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1624) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1625)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1626) rk3399_cru_base = reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1627)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1628) ctx = rockchip_clk_init(np, reg_base, CLK_NR_CLKS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1629) if (IS_ERR(ctx)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1630) pr_err("%s: rockchip clk init failed\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1631) iounmap(reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1632) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1633) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1634) clks = ctx->clk_data.clks;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1635)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1636) rockchip_clk_register_plls(ctx, rk3399_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1637) ARRAY_SIZE(rk3399_pll_clks), -1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1638)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1639) rockchip_clk_register_branches(ctx, rk3399_clk_branches,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1640) ARRAY_SIZE(rk3399_clk_branches));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1641)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1642) rockchip_clk_register_armclk(ctx, ARMCLKL, "armclkl",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1643) 4, clks[PLL_APLLL], clks[PLL_GPLL],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1644) &rk3399_cpuclkl_data, rk3399_cpuclkl_rates,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1645) ARRAY_SIZE(rk3399_cpuclkl_rates));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1646)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1647) rockchip_clk_register_armclk(ctx, ARMCLKB, "armclkb",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1648) 4, clks[PLL_APLLB], clks[PLL_GPLL],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1649) &rk3399_cpuclkb_data, rk3399_cpuclkb_rates,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1650) ARRAY_SIZE(rk3399_cpuclkb_rates));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1651)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1652) rockchip_register_softrst(np, 21, reg_base + RK3399_SOFTRST_CON(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1653) ROCKCHIP_SOFTRST_HIWORD_MASK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1654)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1655) rockchip_register_restart_notifier(ctx, RK3399_GLB_SRST_FST, NULL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1656)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1657) rockchip_clk_of_add_provider(np, ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1658) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1659) CLK_OF_DECLARE(rk3399_cru, "rockchip,rk3399-cru", rk3399_clk_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1660)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1661) static void __init rk3399_pmu_clk_init(struct device_node *np)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1662) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1663) struct rockchip_clk_provider *ctx;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1664) void __iomem *reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1665)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1666) reg_base = of_iomap(np, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1667) if (!reg_base) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1668) pr_err("%s: could not map cru pmu region\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1669) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1670) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1671)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1672) rk3399_pmucru_base = reg_base;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1673)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1674) ctx = rockchip_clk_init(np, reg_base, CLKPMU_NR_CLKS);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1675) if (IS_ERR(ctx)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1676) pr_err("%s: rockchip pmu clk init failed\n", __func__);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1677) iounmap(reg_base);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1678) return;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1679) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1680)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1681) rockchip_clk_register_plls(ctx, rk3399_pmu_pll_clks,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1682) ARRAY_SIZE(rk3399_pmu_pll_clks), -1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1683)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1684) rockchip_clk_register_branches(ctx, rk3399_clk_pmu_branches,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1685) ARRAY_SIZE(rk3399_clk_pmu_branches));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1686)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1687) rockchip_register_softrst(np, 2, reg_base + RK3399_PMU_SOFTRST_CON(0),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1688) ROCKCHIP_SOFTRST_HIWORD_MASK);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1689)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1690) rockchip_clk_of_add_provider(np, ctx);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1691)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1692) atomic_notifier_chain_register(&panic_notifier_list,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1693) &rk3399_clk_panic_block);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1694) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1695) CLK_OF_DECLARE(rk3399_cru_pmu, "rockchip,rk3399-pmucru", rk3399_pmu_clk_init);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1696)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1697) struct clk_rk3399_inits {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1698) void (*inits)(struct device_node *np);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1699) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1700)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1701) static const struct clk_rk3399_inits clk_rk3399_pmucru_init = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1702) .inits = rk3399_pmu_clk_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1703) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1704)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1705) static const struct clk_rk3399_inits clk_rk3399_cru_init = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1706) .inits = rk3399_clk_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1707) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1708)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1709) static const struct of_device_id clk_rk3399_match_table[] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1710) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1711) .compatible = "rockchip,rk3399-cru",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1712) .data = &clk_rk3399_cru_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1713) }, {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1714) .compatible = "rockchip,rk3399-pmucru",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1715) .data = &clk_rk3399_pmucru_init,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1716) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1717) { }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1718) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1719) MODULE_DEVICE_TABLE(of, clk_rk3399_match_table);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1720)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1721) static int __init clk_rk3399_probe(struct platform_device *pdev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1722) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1723) struct device_node *np = pdev->dev.of_node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1724) const struct of_device_id *match;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1725) const struct clk_rk3399_inits *init_data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1726)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1727) match = of_match_device(clk_rk3399_match_table, &pdev->dev);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1728) if (!match || !match->data)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1729) return -EINVAL;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1730)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1731) init_data = match->data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1732) if (init_data->inits)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1733) init_data->inits(np);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1734)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1735) return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1736) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1737)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1738) static struct platform_driver clk_rk3399_driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1739) .driver = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1740) .name = "clk-rk3399",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1741) .of_match_table = clk_rk3399_match_table,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1742) .suppress_bind_attrs = true,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1743) },
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1744) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1745) builtin_platform_driver_probe(clk_rk3399_driver, clk_rk3399_probe);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1746)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1747) MODULE_DESCRIPTION("Rockchip RK3399 Clock Driver");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1748) MODULE_LICENSE("GPL");
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1749) MODULE_ALIAS("platform:clk-rk3399");