1*e371a772SYixun Lan // SPDX-License-Identifier: GPL-2.0-only 2*e371a772SYixun Lan /* 3*e371a772SYixun Lan * Copyright (c) 2025 SpacemiT Technology Co. Ltd 4*e371a772SYixun Lan */ 5*e371a772SYixun Lan 6*e371a772SYixun Lan #include <linux/array_size.h> 7*e371a772SYixun Lan #include <linux/clk-provider.h> 8*e371a772SYixun Lan #include <linux/module.h> 9*e371a772SYixun Lan #include <soc/spacemit/k3-syscon.h> 10*e371a772SYixun Lan 11*e371a772SYixun Lan #include "ccu_common.h" 12*e371a772SYixun Lan #include "ccu_pll.h" 13*e371a772SYixun Lan #include "ccu_mix.h" 14*e371a772SYixun Lan #include "ccu_ddn.h" 15*e371a772SYixun Lan 16*e371a772SYixun Lan #include <dt-bindings/clock/spacemit,k3-clocks.h> 17*e371a772SYixun Lan 18*e371a772SYixun Lan /* APBS clocks start, APBS region contains and only contains all PLL clocks */ 19*e371a772SYixun Lan 20*e371a772SYixun Lan /* 21*e371a772SYixun Lan * PLL{1,2} must run at fixed frequencies to provide clocks in correct rates for 22*e371a772SYixun Lan * peripherals. 23*e371a772SYixun Lan */ 24*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll1_rate_tbl[] = { 25*e371a772SYixun Lan CCU_PLLA_RATE(2457600000UL, 0x0b330ccc, 0x0000cd00, 0xa0558989), 26*e371a772SYixun Lan }; 27*e371a772SYixun Lan 28*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll2_rate_tbl[] = { 29*e371a772SYixun Lan CCU_PLLA_RATE(3000000000UL, 0x0b3e2000, 0x00000000, 0xa0558c8c), 30*e371a772SYixun Lan }; 31*e371a772SYixun Lan 32*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll3_rate_tbl[] = { 33*e371a772SYixun Lan CCU_PLLA_RATE(2200000000UL, 0x0b2d3555, 0x00005500, 0xa0558787), 34*e371a772SYixun Lan }; 35*e371a772SYixun Lan 36*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll4_rate_tbl[] = { 37*e371a772SYixun Lan CCU_PLLA_RATE(2200000000UL, 0x0b2d3555, 0x00005500, 0xa0558787), 38*e371a772SYixun Lan }; 39*e371a772SYixun Lan 40*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll5_rate_tbl[] = { 41*e371a772SYixun Lan CCU_PLLA_RATE(2000000000UL, 0x0b292aaa, 0x0000ab00, 0xa0558686), 42*e371a772SYixun Lan }; 43*e371a772SYixun Lan 44*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll6_rate_tbl[] = { 45*e371a772SYixun Lan CCU_PLLA_RATE(3200000000UL, 0x0b422aaa, 0x0000ab00, 0xa0558e8e), 46*e371a772SYixun Lan }; 47*e371a772SYixun Lan 48*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll7_rate_tbl[] = { 49*e371a772SYixun Lan CCU_PLLA_RATE(2800000000UL, 0x0b3a1555, 0x00005500, 0xa0558b8b), 50*e371a772SYixun Lan }; 51*e371a772SYixun Lan 52*e371a772SYixun Lan static const struct ccu_pll_rate_tbl pll8_rate_tbl[] = { 53*e371a772SYixun Lan CCU_PLLA_RATE(2000000000UL, 0x0b292aaa, 0x0000ab00, 0xa0558686), 54*e371a772SYixun Lan }; 55*e371a772SYixun Lan 56*e371a772SYixun Lan CCU_PLLA_DEFINE(pll1, pll1_rate_tbl, APBS_PLL1_SWCR1, APBS_PLL1_SWCR2, APBS_PLL1_SWCR3, 57*e371a772SYixun Lan MPMU_POSR, POSR_PLL1_LOCK, CLK_SET_RATE_GATE); 58*e371a772SYixun Lan CCU_PLLA_DEFINE(pll2, pll2_rate_tbl, APBS_PLL2_SWCR1, APBS_PLL2_SWCR2, APBS_PLL2_SWCR3, 59*e371a772SYixun Lan MPMU_POSR, POSR_PLL2_LOCK, CLK_SET_RATE_GATE); 60*e371a772SYixun Lan CCU_PLLA_DEFINE(pll3, pll3_rate_tbl, APBS_PLL3_SWCR1, APBS_PLL3_SWCR2, APBS_PLL3_SWCR3, 61*e371a772SYixun Lan MPMU_POSR, POSR_PLL3_LOCK, CLK_SET_RATE_GATE); 62*e371a772SYixun Lan CCU_PLLA_DEFINE(pll4, pll4_rate_tbl, APBS_PLL4_SWCR1, APBS_PLL4_SWCR2, APBS_PLL4_SWCR3, 63*e371a772SYixun Lan MPMU_POSR, POSR_PLL4_LOCK, CLK_SET_RATE_GATE); 64*e371a772SYixun Lan CCU_PLLA_DEFINE(pll5, pll5_rate_tbl, APBS_PLL5_SWCR1, APBS_PLL5_SWCR2, APBS_PLL5_SWCR3, 65*e371a772SYixun Lan MPMU_POSR, POSR_PLL5_LOCK, CLK_SET_RATE_GATE); 66*e371a772SYixun Lan CCU_PLLA_DEFINE(pll6, pll6_rate_tbl, APBS_PLL6_SWCR1, APBS_PLL6_SWCR2, APBS_PLL6_SWCR3, 67*e371a772SYixun Lan MPMU_POSR, POSR_PLL6_LOCK, CLK_SET_RATE_GATE); 68*e371a772SYixun Lan CCU_PLLA_DEFINE(pll7, pll7_rate_tbl, APBS_PLL7_SWCR1, APBS_PLL7_SWCR2, APBS_PLL7_SWCR3, 69*e371a772SYixun Lan MPMU_POSR, POSR_PLL7_LOCK, CLK_SET_RATE_GATE); 70*e371a772SYixun Lan CCU_PLLA_DEFINE(pll8, pll8_rate_tbl, APBS_PLL8_SWCR1, APBS_PLL8_SWCR2, APBS_PLL8_SWCR3, 71*e371a772SYixun Lan MPMU_POSR, POSR_PLL8_LOCK, CLK_SET_RATE_GATE); 72*e371a772SYixun Lan 73*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d2, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(1), 2, 1); 74*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d3, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(2), 3, 1); 75*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d4, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(3), 4, 1); 76*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d5, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(4), 5, 1); 77*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d6, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(5), 6, 1); 78*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d7, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(6), 7, 1); 79*e371a772SYixun Lan CCU_FACTOR_GATE_FLAGS_DEFINE(pll1_d8, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(7), 8, 1, 80*e371a772SYixun Lan CLK_IS_CRITICAL); 81*e371a772SYixun Lan CCU_DIV_GATE_DEFINE(pll1_dx, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, 23, 5, BIT(22), 0); 82*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d64_38p4, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(31), 64, 1); 83*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_aud_245p7, CCU_PARENT_HW(pll1), APBS_PLL1_SWCR2, BIT(21), 10, 1); 84*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_aud_24p5, CCU_PARENT_HW(pll1_aud_245p7), 10, 1); 85*e371a772SYixun Lan 86*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d1, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(0), 1, 1); 87*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d2, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(1), 2, 1); 88*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d3, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(2), 3, 1); 89*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d4, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(3), 4, 1); 90*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d5, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(4), 5, 1); 91*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d6, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(5), 6, 1); 92*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d7, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(6), 7, 1); 93*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll2_d8, CCU_PARENT_HW(pll2), APBS_PLL2_SWCR2, BIT(7), 8, 1); 94*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_66, CCU_PARENT_HW(pll2_d5), 9, 1); 95*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_33, CCU_PARENT_HW(pll2_66), 2, 1); 96*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_50, CCU_PARENT_HW(pll2_d5), 12, 1); 97*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_25, CCU_PARENT_HW(pll2_50), 2, 1); 98*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_20, CCU_PARENT_HW(pll2_d5), 30, 1); 99*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_d24_125, CCU_PARENT_HW(pll2_d3), 8, 1); 100*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll2_d120_25, CCU_PARENT_HW(pll2_d3), 40, 1); 101*e371a772SYixun Lan 102*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d1, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(0), 1, 1); 103*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d2, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(1), 2, 1); 104*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d3, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(2), 3, 1); 105*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d4, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(3), 4, 1); 106*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d5, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(4), 5, 1); 107*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d6, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(5), 6, 1); 108*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d7, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(6), 7, 1); 109*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll3_d8, CCU_PARENT_HW(pll3), APBS_PLL3_SWCR2, BIT(7), 8, 1); 110*e371a772SYixun Lan 111*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d1, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(0), 1, 1); 112*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d2, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(1), 2, 1); 113*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d3, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(2), 3, 1); 114*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d4, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(3), 4, 1); 115*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d5, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(4), 5, 1); 116*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d6, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(5), 6, 1); 117*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d7, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(6), 7, 1); 118*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll4_d8, CCU_PARENT_HW(pll4), APBS_PLL4_SWCR2, BIT(7), 8, 1); 119*e371a772SYixun Lan 120*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d1, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(0), 1, 1); 121*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d2, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(1), 2, 1); 122*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d3, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(2), 3, 1); 123*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d4, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(3), 4, 1); 124*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d5, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(4), 5, 1); 125*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d6, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(5), 6, 1); 126*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d7, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(6), 7, 1); 127*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll5_d8, CCU_PARENT_HW(pll5), APBS_PLL5_SWCR2, BIT(7), 8, 1); 128*e371a772SYixun Lan 129*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d1, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(0), 1, 1); 130*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d2, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(1), 2, 1); 131*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d3, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(2), 3, 1); 132*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d4, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(3), 4, 1); 133*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d5, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(4), 5, 1); 134*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d6, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(5), 6, 1); 135*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d7, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(6), 7, 1); 136*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll6_d8, CCU_PARENT_HW(pll6), APBS_PLL6_SWCR2, BIT(7), 8, 1); 137*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_80, CCU_PARENT_HW(pll6_d5), 8, 1); 138*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_40, CCU_PARENT_HW(pll6_d5), 16, 1); 139*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll6_20, CCU_PARENT_HW(pll6_d5), 32, 1); 140*e371a772SYixun Lan 141*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d1, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(0), 1, 1); 142*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d2, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(1), 2, 1); 143*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d3, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(2), 3, 1); 144*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d4, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(3), 4, 1); 145*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d5, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(4), 5, 1); 146*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d6, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(5), 6, 1); 147*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d7, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(6), 7, 1); 148*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll7_d8, CCU_PARENT_HW(pll7), APBS_PLL7_SWCR2, BIT(7), 8, 1); 149*e371a772SYixun Lan 150*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d1, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(0), 1, 1); 151*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d2, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(1), 2, 1); 152*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d3, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(2), 3, 1); 153*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d4, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(3), 4, 1); 154*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d5, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(4), 5, 1); 155*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d6, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(5), 6, 1); 156*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d7, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(6), 7, 1); 157*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll8_d8, CCU_PARENT_HW(pll8), APBS_PLL8_SWCR2, BIT(7), 8, 1); 158*e371a772SYixun Lan /* APBS clocks end */ 159*e371a772SYixun Lan 160*e371a772SYixun Lan /* MPMU clocks start */ 161*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d8_307p2, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(13), 0); 162*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d32_76p8, CCU_PARENT_HW(pll1_d8_307p2), 4, 1); 163*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d40_61p44, CCU_PARENT_HW(pll1_d8_307p2), 5, 1); 164*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d16_153p6, CCU_PARENT_HW(pll1_d8), 2, 1); 165*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d24_102p4, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(12), 3, 1); 166*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d48_51p2, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(7), 6, 1); 167*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d48_51p2_ap, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(11), 6, 1); 168*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_m3d128_57p6, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(8), 16, 3); 169*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d96_25p6, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(4), 12, 1); 170*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d192_12p8, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(3), 24, 1); 171*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d192_12p8_wdt, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(19), 24, 1); 172*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d384_6p4, CCU_PARENT_HW(pll1_d8), MPMU_ACGR, BIT(2), 48, 1); 173*e371a772SYixun Lan 174*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d768_3p2, CCU_PARENT_HW(pll1_d384_6p4), 2, 1); 175*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d1536_1p6, CCU_PARENT_HW(pll1_d384_6p4), 4, 1); 176*e371a772SYixun Lan CCU_FACTOR_DEFINE(pll1_d3072_0p8, CCU_PARENT_HW(pll1_d384_6p4), 8, 1); 177*e371a772SYixun Lan 178*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d6_409p6, CCU_PARENT_HW(pll1_d6), MPMU_ACGR, BIT(0), 0); 179*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d12_204p8, CCU_PARENT_HW(pll1_d6), MPMU_ACGR, BIT(5), 2, 1); 180*e371a772SYixun Lan 181*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d5_491p52, CCU_PARENT_HW(pll1_d5), MPMU_ACGR, BIT(21), 0); 182*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d10_245p76, CCU_PARENT_HW(pll1_d5), MPMU_ACGR, BIT(18), 2, 1); 183*e371a772SYixun Lan 184*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d4_614p4, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(15), 0); 185*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d52_47p26, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(10), 13, 1); 186*e371a772SYixun Lan CCU_FACTOR_GATE_DEFINE(pll1_d78_31p5, CCU_PARENT_HW(pll1_d4), MPMU_ACGR, BIT(6), 39, 2); 187*e371a772SYixun Lan 188*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d3_819p2, CCU_PARENT_HW(pll1_d3), MPMU_ACGR, BIT(14), 0); 189*e371a772SYixun Lan 190*e371a772SYixun Lan CCU_GATE_DEFINE(pll1_d2_1228p8, CCU_PARENT_HW(pll1_d2), MPMU_ACGR, BIT(16), 0); 191*e371a772SYixun Lan 192*e371a772SYixun Lan static const struct clk_parent_data apb_parents[] = { 193*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 194*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 195*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 196*e371a772SYixun Lan CCU_PARENT_HW(pll1_d24_102p4), 197*e371a772SYixun Lan }; 198*e371a772SYixun Lan CCU_MUX_DEFINE(apb_clk, apb_parents, MPMU_APBCSCR, 0, 2, 0); 199*e371a772SYixun Lan 200*e371a772SYixun Lan CCU_GATE_DEFINE(slow_uart, CCU_PARENT_NAME(osc_32k), MPMU_ACGR, BIT(1), CLK_IGNORE_UNUSED); 201*e371a772SYixun Lan CCU_DDN_DEFINE(slow_uart1_14p74, pll1_d16_153p6, MPMU_SUCCR, 16, 13, 0, 13, 2, 0); 202*e371a772SYixun Lan CCU_DDN_DEFINE(slow_uart2_48, pll1_d4_614p4, MPMU_SUCCR_1, 16, 13, 0, 13, 2, 0); 203*e371a772SYixun Lan 204*e371a772SYixun Lan CCU_GATE_DEFINE(wdt_clk, CCU_PARENT_HW(pll1_d96_25p6), MPMU_WDTPCR, BIT(1), 0); 205*e371a772SYixun Lan CCU_GATE_DEFINE(wdt_bus_clk, CCU_PARENT_HW(apb_clk), MPMU_WDTPCR, BIT(0), 0); 206*e371a772SYixun Lan 207*e371a772SYixun Lan CCU_GATE_DEFINE(r_ipc_clk, CCU_PARENT_HW(apb_clk), MPMU_RIPCCR, BIT(0), 0); 208*e371a772SYixun Lan 209*e371a772SYixun Lan CCU_FACTOR_DEFINE(i2s_153p6, CCU_PARENT_HW(pll1_d8_307p2), 2, 1); 210*e371a772SYixun Lan 211*e371a772SYixun Lan static const struct clk_parent_data i2s_153p6_base_parents[] = { 212*e371a772SYixun Lan CCU_PARENT_HW(i2s_153p6), 213*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 214*e371a772SYixun Lan }; 215*e371a772SYixun Lan CCU_MUX_DEFINE(i2s_153p6_base, i2s_153p6_base_parents, MPMU_FCCR, 29, 1, 0); 216*e371a772SYixun Lan 217*e371a772SYixun Lan static const struct clk_parent_data i2s_sysclk_src_parents[] = { 218*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 219*e371a772SYixun Lan CCU_PARENT_HW(i2s_153p6_base), 220*e371a772SYixun Lan }; 221*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s_sysclk_src, i2s_sysclk_src_parents, MPMU_ISCCR, 30, 1, BIT(31), 0); 222*e371a772SYixun Lan 223*e371a772SYixun Lan CCU_DDN_DEFINE(i2s1_sysclk, i2s_sysclk_src, MPMU_ISCCR, 0, 15, 15, 12, 1, 0); 224*e371a772SYixun Lan 225*e371a772SYixun Lan CCU_DIV_GATE_DEFINE(i2s_bclk, CCU_PARENT_HW(i2s1_sysclk), MPMU_ISCCR, 27, 2, BIT(29), 0); 226*e371a772SYixun Lan 227*e371a772SYixun Lan static const struct clk_parent_data i2s_sysclk_parents[] = { 228*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 229*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_24m), 230*e371a772SYixun Lan CCU_PARENT_HW(pll2_d5), 231*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_24m), 232*e371a772SYixun Lan }; 233*e371a772SYixun Lan CCU_MUX_DEFINE(i2s0_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 0, 2, 0); 234*e371a772SYixun Lan CCU_MUX_DEFINE(i2s2_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 4, 2, 0); 235*e371a772SYixun Lan CCU_MUX_DEFINE(i2s3_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 12, 2, 0); 236*e371a772SYixun Lan CCU_MUX_DEFINE(i2s4_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 16, 2, 0); 237*e371a772SYixun Lan CCU_MUX_DEFINE(i2s5_sysclk_sel, i2s_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 20, 2, 0); 238*e371a772SYixun Lan 239*e371a772SYixun Lan CCU_DDN_DEFINE(i2s0_sysclk_div, i2s0_sysclk_sel, MPMU_I2S0_SYSCLK, 0, 16, 16, 16, 1, 0); 240*e371a772SYixun Lan CCU_DDN_DEFINE(i2s2_sysclk_div, i2s2_sysclk_sel, MPMU_I2S2_SYSCLK, 0, 16, 16, 16, 1, 0); 241*e371a772SYixun Lan CCU_DDN_DEFINE(i2s3_sysclk_div, i2s3_sysclk_sel, MPMU_I2S3_SYSCLK, 0, 16, 16, 16, 1, 0); 242*e371a772SYixun Lan CCU_DDN_DEFINE(i2s4_sysclk_div, i2s4_sysclk_sel, MPMU_I2S4_SYSCLK, 0, 16, 16, 16, 1, 0); 243*e371a772SYixun Lan CCU_DDN_DEFINE(i2s5_sysclk_div, i2s5_sysclk_sel, MPMU_I2S5_SYSCLK, 0, 16, 16, 16, 1, 0); 244*e371a772SYixun Lan 245*e371a772SYixun Lan static const struct clk_parent_data i2s2_sysclk_parents[] = { 246*e371a772SYixun Lan CCU_PARENT_HW(i2s1_sysclk), 247*e371a772SYixun Lan CCU_PARENT_HW(i2s2_sysclk_div), 248*e371a772SYixun Lan }; 249*e371a772SYixun Lan CCU_GATE_DEFINE(i2s0_sysclk, CCU_PARENT_HW(i2s0_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(2), 0); 250*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s2_sysclk, i2s2_sysclk_parents, MPMU_I2S_SYSCLK_CTRL, 8, 1, BIT(6), 0); 251*e371a772SYixun Lan CCU_GATE_DEFINE(i2s3_sysclk, CCU_PARENT_HW(i2s3_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(14), 0); 252*e371a772SYixun Lan CCU_GATE_DEFINE(i2s4_sysclk, CCU_PARENT_HW(i2s4_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(18), 0); 253*e371a772SYixun Lan CCU_GATE_DEFINE(i2s5_sysclk, CCU_PARENT_HW(i2s5_sysclk_div), MPMU_I2S_SYSCLK_CTRL, BIT(22), 0); 254*e371a772SYixun Lan /* MPMU clocks end */ 255*e371a772SYixun Lan 256*e371a772SYixun Lan /* APBC clocks start */ 257*e371a772SYixun Lan static const struct clk_parent_data uart_clk_parents[] = { 258*e371a772SYixun Lan CCU_PARENT_HW(pll1_m3d128_57p6), 259*e371a772SYixun Lan CCU_PARENT_HW(slow_uart1_14p74), 260*e371a772SYixun Lan CCU_PARENT_HW(slow_uart2_48), 261*e371a772SYixun Lan }; 262*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart0_clk, uart_clk_parents, APBC_UART0_CLK_RST, 4, 3, BIT(1), 0); 263*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart2_clk, uart_clk_parents, APBC_UART2_CLK_RST, 4, 3, BIT(1), 0); 264*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart3_clk, uart_clk_parents, APBC_UART3_CLK_RST, 4, 3, BIT(1), 0); 265*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart4_clk, uart_clk_parents, APBC_UART4_CLK_RST, 4, 3, BIT(1), 0); 266*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart5_clk, uart_clk_parents, APBC_UART5_CLK_RST, 4, 3, BIT(1), 0); 267*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart6_clk, uart_clk_parents, APBC_UART6_CLK_RST, 4, 3, BIT(1), 0); 268*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart7_clk, uart_clk_parents, APBC_UART7_CLK_RST, 4, 3, BIT(1), 0); 269*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart8_clk, uart_clk_parents, APBC_UART8_CLK_RST, 4, 3, BIT(1), 0); 270*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart9_clk, uart_clk_parents, APBC_UART9_CLK_RST, 4, 3, BIT(1), 0); 271*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(uart10_clk, uart_clk_parents, APBC_UART10_CLK_RST, 4, 3, BIT(1), 0); 272*e371a772SYixun Lan 273*e371a772SYixun Lan CCU_GATE_DEFINE(uart0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART0_CLK_RST, BIT(0), 0); 274*e371a772SYixun Lan CCU_GATE_DEFINE(uart2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART2_CLK_RST, BIT(0), 0); 275*e371a772SYixun Lan CCU_GATE_DEFINE(uart3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART3_CLK_RST, BIT(0), 0); 276*e371a772SYixun Lan CCU_GATE_DEFINE(uart4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART4_CLK_RST, BIT(0), 0); 277*e371a772SYixun Lan CCU_GATE_DEFINE(uart5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART5_CLK_RST, BIT(0), 0); 278*e371a772SYixun Lan CCU_GATE_DEFINE(uart6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART6_CLK_RST, BIT(0), 0); 279*e371a772SYixun Lan CCU_GATE_DEFINE(uart7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART7_CLK_RST, BIT(0), 0); 280*e371a772SYixun Lan CCU_GATE_DEFINE(uart8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART8_CLK_RST, BIT(0), 0); 281*e371a772SYixun Lan CCU_GATE_DEFINE(uart9_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART9_CLK_RST, BIT(0), 0); 282*e371a772SYixun Lan CCU_GATE_DEFINE(uart10_bus_clk, CCU_PARENT_HW(apb_clk), APBC_UART10_CLK_RST, BIT(0), 0); 283*e371a772SYixun Lan 284*e371a772SYixun Lan CCU_GATE_DEFINE(gpio_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_GPIO_CLK_RST, BIT(1), 0); 285*e371a772SYixun Lan CCU_GATE_DEFINE(gpio_bus_clk, CCU_PARENT_HW(apb_clk), APBC_GPIO_CLK_RST, BIT(0), 0); 286*e371a772SYixun Lan 287*e371a772SYixun Lan static const struct clk_parent_data pwm_parents[] = { 288*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 289*e371a772SYixun Lan CCU_PARENT_NAME(osc_32k), 290*e371a772SYixun Lan }; 291*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm0_clk, pwm_parents, APBC_PWM0_CLK_RST, 4, 3, BIT(1), 0); 292*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm1_clk, pwm_parents, APBC_PWM1_CLK_RST, 4, 3, BIT(1), 0); 293*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm2_clk, pwm_parents, APBC_PWM2_CLK_RST, 4, 3, BIT(1), 0); 294*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm3_clk, pwm_parents, APBC_PWM3_CLK_RST, 4, 3, BIT(1), 0); 295*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm4_clk, pwm_parents, APBC_PWM4_CLK_RST, 4, 3, BIT(1), 0); 296*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm5_clk, pwm_parents, APBC_PWM5_CLK_RST, 4, 3, BIT(1), 0); 297*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm6_clk, pwm_parents, APBC_PWM6_CLK_RST, 4, 3, BIT(1), 0); 298*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm7_clk, pwm_parents, APBC_PWM7_CLK_RST, 4, 3, BIT(1), 0); 299*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm8_clk, pwm_parents, APBC_PWM8_CLK_RST, 4, 3, BIT(1), 0); 300*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm9_clk, pwm_parents, APBC_PWM9_CLK_RST, 4, 3, BIT(1), 0); 301*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm10_clk, pwm_parents, APBC_PWM10_CLK_RST, 4, 3, BIT(1), 0); 302*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm11_clk, pwm_parents, APBC_PWM11_CLK_RST, 4, 3, BIT(1), 0); 303*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm12_clk, pwm_parents, APBC_PWM12_CLK_RST, 4, 3, BIT(1), 0); 304*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm13_clk, pwm_parents, APBC_PWM13_CLK_RST, 4, 3, BIT(1), 0); 305*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm14_clk, pwm_parents, APBC_PWM14_CLK_RST, 4, 3, BIT(1), 0); 306*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm15_clk, pwm_parents, APBC_PWM15_CLK_RST, 4, 3, BIT(1), 0); 307*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm16_clk, pwm_parents, APBC_PWM16_CLK_RST, 4, 3, BIT(1), 0); 308*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm17_clk, pwm_parents, APBC_PWM17_CLK_RST, 4, 3, BIT(1), 0); 309*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm18_clk, pwm_parents, APBC_PWM18_CLK_RST, 4, 3, BIT(1), 0); 310*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(pwm19_clk, pwm_parents, APBC_PWM19_CLK_RST, 4, 3, BIT(1), 0); 311*e371a772SYixun Lan 312*e371a772SYixun Lan CCU_GATE_DEFINE(pwm0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM0_CLK_RST, BIT(0), 0); 313*e371a772SYixun Lan CCU_GATE_DEFINE(pwm1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM1_CLK_RST, BIT(0), 0); 314*e371a772SYixun Lan CCU_GATE_DEFINE(pwm2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM2_CLK_RST, BIT(0), 0); 315*e371a772SYixun Lan CCU_GATE_DEFINE(pwm3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM3_CLK_RST, BIT(0), 0); 316*e371a772SYixun Lan CCU_GATE_DEFINE(pwm4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM4_CLK_RST, BIT(0), 0); 317*e371a772SYixun Lan CCU_GATE_DEFINE(pwm5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM5_CLK_RST, BIT(0), 0); 318*e371a772SYixun Lan CCU_GATE_DEFINE(pwm6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM6_CLK_RST, BIT(0), 0); 319*e371a772SYixun Lan CCU_GATE_DEFINE(pwm7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM7_CLK_RST, BIT(0), 0); 320*e371a772SYixun Lan CCU_GATE_DEFINE(pwm8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM8_CLK_RST, BIT(0), 0); 321*e371a772SYixun Lan CCU_GATE_DEFINE(pwm9_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM9_CLK_RST, BIT(0), 0); 322*e371a772SYixun Lan CCU_GATE_DEFINE(pwm10_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM10_CLK_RST, BIT(0), 0); 323*e371a772SYixun Lan CCU_GATE_DEFINE(pwm11_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM11_CLK_RST, BIT(0), 0); 324*e371a772SYixun Lan CCU_GATE_DEFINE(pwm12_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM12_CLK_RST, BIT(0), 0); 325*e371a772SYixun Lan CCU_GATE_DEFINE(pwm13_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM13_CLK_RST, BIT(0), 0); 326*e371a772SYixun Lan CCU_GATE_DEFINE(pwm14_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM14_CLK_RST, BIT(0), 0); 327*e371a772SYixun Lan CCU_GATE_DEFINE(pwm15_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM15_CLK_RST, BIT(0), 0); 328*e371a772SYixun Lan CCU_GATE_DEFINE(pwm16_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM16_CLK_RST, BIT(0), 0); 329*e371a772SYixun Lan CCU_GATE_DEFINE(pwm17_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM17_CLK_RST, BIT(0), 0); 330*e371a772SYixun Lan CCU_GATE_DEFINE(pwm18_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM18_CLK_RST, BIT(0), 0); 331*e371a772SYixun Lan CCU_GATE_DEFINE(pwm19_bus_clk, CCU_PARENT_HW(apb_clk), APBC_PWM19_CLK_RST, BIT(0), 0); 332*e371a772SYixun Lan 333*e371a772SYixun Lan static const struct clk_parent_data i2s_bclk_parents[] = { 334*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_1m), 335*e371a772SYixun Lan CCU_PARENT_HW(i2s_bclk), 336*e371a772SYixun Lan }; 337*e371a772SYixun Lan CCU_MUX_DEFINE(spi0_i2s_bclk, i2s_bclk_parents, APBC_SSP0_CLK_RST, 3, 1, 0); 338*e371a772SYixun Lan CCU_MUX_DEFINE(spi1_i2s_bclk, i2s_bclk_parents, APBC_SSP1_CLK_RST, 3, 1, 0); 339*e371a772SYixun Lan CCU_MUX_DEFINE(spi3_i2s_bclk, i2s_bclk_parents, APBC_SSP3_CLK_RST, 3, 1, 0); 340*e371a772SYixun Lan 341*e371a772SYixun Lan static const struct clk_parent_data spi0_parents[] = { 342*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 343*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 344*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 345*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 346*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 347*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 348*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 349*e371a772SYixun Lan CCU_PARENT_HW(spi0_i2s_bclk), 350*e371a772SYixun Lan }; 351*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi0_clk, spi0_parents, APBC_SSP0_CLK_RST, 4, 3, BIT(1), 0); 352*e371a772SYixun Lan 353*e371a772SYixun Lan static const struct clk_parent_data spi1_parents[] = { 354*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 355*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 356*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 357*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 358*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 359*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 360*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 361*e371a772SYixun Lan CCU_PARENT_HW(spi1_i2s_bclk), 362*e371a772SYixun Lan }; 363*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi1_clk, spi1_parents, APBC_SSP1_CLK_RST, 4, 3, BIT(1), 0); 364*e371a772SYixun Lan 365*e371a772SYixun Lan static const struct clk_parent_data spi3_parents[] = { 366*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 367*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 368*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 369*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 370*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 371*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 372*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 373*e371a772SYixun Lan CCU_PARENT_HW(spi3_i2s_bclk), 374*e371a772SYixun Lan }; 375*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(spi3_clk, spi3_parents, APBC_SSP3_CLK_RST, 4, 3, BIT(1), 0); 376*e371a772SYixun Lan 377*e371a772SYixun Lan CCU_GATE_DEFINE(spi0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP0_CLK_RST, BIT(0), 0); 378*e371a772SYixun Lan CCU_GATE_DEFINE(spi1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP1_CLK_RST, BIT(0), 0); 379*e371a772SYixun Lan CCU_GATE_DEFINE(spi3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSP3_CLK_RST, BIT(0), 0); 380*e371a772SYixun Lan 381*e371a772SYixun Lan 382*e371a772SYixun Lan CCU_GATE_DEFINE(rtc_clk, CCU_PARENT_NAME(osc_32k), APBC_RTC_CLK_RST, 383*e371a772SYixun Lan BIT(7) | BIT(1), 0); 384*e371a772SYixun Lan CCU_GATE_DEFINE(rtc_bus_clk, CCU_PARENT_HW(apb_clk), APBC_RTC_CLK_RST, BIT(0), 0); 385*e371a772SYixun Lan 386*e371a772SYixun Lan static const struct clk_parent_data twsi_parents[] = { 387*e371a772SYixun Lan CCU_PARENT_HW(pll1_d78_31p5), 388*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 389*e371a772SYixun Lan CCU_PARENT_HW(pll1_d40_61p44), 390*e371a772SYixun Lan }; 391*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi0_clk, twsi_parents, APBC_TWSI0_CLK_RST, 4, 3, BIT(1), 0); 392*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi1_clk, twsi_parents, APBC_TWSI1_CLK_RST, 4, 3, BIT(1), 0); 393*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi2_clk, twsi_parents, APBC_TWSI2_CLK_RST, 4, 3, BIT(1), 0); 394*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi4_clk, twsi_parents, APBC_TWSI4_CLK_RST, 4, 3, BIT(1), 0); 395*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi5_clk, twsi_parents, APBC_TWSI5_CLK_RST, 4, 3, BIT(1), 0); 396*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi6_clk, twsi_parents, APBC_TWSI6_CLK_RST, 4, 3, BIT(1), 0); 397*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(twsi8_clk, twsi_parents, APBC_TWSI8_CLK_RST, 4, 3, BIT(1), 0); 398*e371a772SYixun Lan 399*e371a772SYixun Lan CCU_GATE_DEFINE(twsi0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI0_CLK_RST, BIT(0), 0); 400*e371a772SYixun Lan CCU_GATE_DEFINE(twsi1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI1_CLK_RST, BIT(0), 0); 401*e371a772SYixun Lan CCU_GATE_DEFINE(twsi2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI2_CLK_RST, BIT(0), 0); 402*e371a772SYixun Lan CCU_GATE_DEFINE(twsi4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI4_CLK_RST, BIT(0), 0); 403*e371a772SYixun Lan CCU_GATE_DEFINE(twsi5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI5_CLK_RST, BIT(0), 0); 404*e371a772SYixun Lan CCU_GATE_DEFINE(twsi6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI6_CLK_RST, BIT(0), 0); 405*e371a772SYixun Lan CCU_GATE_DEFINE(twsi8_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TWSI8_CLK_RST, BIT(0), 0); 406*e371a772SYixun Lan 407*e371a772SYixun Lan static const struct clk_parent_data timer_parents[] = { 408*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 409*e371a772SYixun Lan CCU_PARENT_NAME(osc_32k), 410*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 411*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_3m), 412*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_1m), 413*e371a772SYixun Lan }; 414*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers0_clk, timer_parents, APBC_TIMERS0_CLK_RST, 4, 3, BIT(1), 0); 415*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers1_clk, timer_parents, APBC_TIMERS1_CLK_RST, 4, 3, BIT(1), 0); 416*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers2_clk, timer_parents, APBC_TIMERS2_CLK_RST, 4, 3, BIT(1), 0); 417*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers3_clk, timer_parents, APBC_TIMERS3_CLK_RST, 4, 3, BIT(1), 0); 418*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers4_clk, timer_parents, APBC_TIMERS4_CLK_RST, 4, 3, BIT(1), 0); 419*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers5_clk, timer_parents, APBC_TIMERS5_CLK_RST, 4, 3, BIT(1), 0); 420*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers6_clk, timer_parents, APBC_TIMERS6_CLK_RST, 4, 3, BIT(1), 0); 421*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(timers7_clk, timer_parents, APBC_TIMERS7_CLK_RST, 4, 3, BIT(1), 0); 422*e371a772SYixun Lan 423*e371a772SYixun Lan CCU_GATE_DEFINE(timers0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS0_CLK_RST, BIT(0), 0); 424*e371a772SYixun Lan CCU_GATE_DEFINE(timers1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS1_CLK_RST, BIT(0), 0); 425*e371a772SYixun Lan CCU_GATE_DEFINE(timers2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS2_CLK_RST, BIT(0), 0); 426*e371a772SYixun Lan CCU_GATE_DEFINE(timers3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS3_CLK_RST, BIT(0), 0); 427*e371a772SYixun Lan CCU_GATE_DEFINE(timers4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS4_CLK_RST, BIT(0), 0); 428*e371a772SYixun Lan CCU_GATE_DEFINE(timers5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS5_CLK_RST, BIT(0), 0); 429*e371a772SYixun Lan CCU_GATE_DEFINE(timers6_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS6_CLK_RST, BIT(0), 0); 430*e371a772SYixun Lan CCU_GATE_DEFINE(timers7_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TIMERS7_CLK_RST, BIT(0), 0); 431*e371a772SYixun Lan 432*e371a772SYixun Lan CCU_GATE_DEFINE(aib_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_AIB_CLK_RST, BIT(1), 0); 433*e371a772SYixun Lan CCU_GATE_DEFINE(aib_bus_clk, CCU_PARENT_HW(apb_clk), APBC_AIB_CLK_RST, BIT(0), 0); 434*e371a772SYixun Lan 435*e371a772SYixun Lan CCU_GATE_DEFINE(onewire_clk, CCU_PARENT_NAME(vctcxo_24m), APBC_ONEWIRE_CLK_RST, BIT(1), 0); 436*e371a772SYixun Lan CCU_GATE_DEFINE(onewire_bus_clk, CCU_PARENT_HW(apb_clk), APBC_ONEWIRE_CLK_RST, BIT(0), 0); 437*e371a772SYixun Lan 438*e371a772SYixun Lan /* 439*e371a772SYixun Lan * When i2s_bclk is selected as the parent clock of sspa, 440*e371a772SYixun Lan * the hardware requires bit3 to be set 441*e371a772SYixun Lan */ 442*e371a772SYixun Lan 443*e371a772SYixun Lan CCU_MUX_DEFINE(i2s0_i2s_bclk, i2s_bclk_parents, APBC_SSPA0_CLK_RST, 3, 1, 0); 444*e371a772SYixun Lan CCU_MUX_DEFINE(i2s1_i2s_bclk, i2s_bclk_parents, APBC_SSPA1_CLK_RST, 3, 1, 0); 445*e371a772SYixun Lan CCU_MUX_DEFINE(i2s2_i2s_bclk, i2s_bclk_parents, APBC_SSPA2_CLK_RST, 3, 1, 0); 446*e371a772SYixun Lan CCU_MUX_DEFINE(i2s3_i2s_bclk, i2s_bclk_parents, APBC_SSPA3_CLK_RST, 3, 1, 0); 447*e371a772SYixun Lan CCU_MUX_DEFINE(i2s4_i2s_bclk, i2s_bclk_parents, APBC_SSPA4_CLK_RST, 3, 1, 0); 448*e371a772SYixun Lan CCU_MUX_DEFINE(i2s5_i2s_bclk, i2s_bclk_parents, APBC_SSPA5_CLK_RST, 3, 1, 0); 449*e371a772SYixun Lan 450*e371a772SYixun Lan static const struct clk_parent_data i2s0_parents[] = { 451*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 452*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 453*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 454*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 455*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 456*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 457*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 458*e371a772SYixun Lan CCU_PARENT_HW(i2s0_i2s_bclk), 459*e371a772SYixun Lan }; 460*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s0_clk, i2s0_parents, APBC_SSPA0_CLK_RST, 4, 3, BIT(1), 0); 461*e371a772SYixun Lan 462*e371a772SYixun Lan static const struct clk_parent_data i2s1_parents[] = { 463*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 464*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 465*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 466*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 467*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 468*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 469*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 470*e371a772SYixun Lan CCU_PARENT_HW(i2s1_i2s_bclk), 471*e371a772SYixun Lan }; 472*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s1_clk, i2s1_parents, APBC_SSPA1_CLK_RST, 4, 3, BIT(1), 0); 473*e371a772SYixun Lan 474*e371a772SYixun Lan static const struct clk_parent_data i2s2_parents[] = { 475*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 476*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 477*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 478*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 479*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 480*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 481*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 482*e371a772SYixun Lan CCU_PARENT_HW(i2s2_i2s_bclk), 483*e371a772SYixun Lan }; 484*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s2_clk, i2s2_parents, APBC_SSPA2_CLK_RST, 4, 3, BIT(1), 0); 485*e371a772SYixun Lan 486*e371a772SYixun Lan static const struct clk_parent_data i2s3_parents[] = { 487*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 488*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 489*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 490*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 491*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 492*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 493*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 494*e371a772SYixun Lan CCU_PARENT_HW(i2s3_i2s_bclk), 495*e371a772SYixun Lan }; 496*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s3_clk, i2s3_parents, APBC_SSPA3_CLK_RST, 4, 3, BIT(1), 0); 497*e371a772SYixun Lan 498*e371a772SYixun Lan static const struct clk_parent_data i2s4_parents[] = { 499*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 500*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 501*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 502*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 503*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 504*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 505*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 506*e371a772SYixun Lan CCU_PARENT_HW(i2s4_i2s_bclk), 507*e371a772SYixun Lan }; 508*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s4_clk, i2s4_parents, APBC_SSPA4_CLK_RST, 4, 3, BIT(1), 0); 509*e371a772SYixun Lan 510*e371a772SYixun Lan static const struct clk_parent_data i2s5_parents[] = { 511*e371a772SYixun Lan CCU_PARENT_HW(pll1_d384_6p4), 512*e371a772SYixun Lan CCU_PARENT_HW(pll1_d192_12p8), 513*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 514*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2), 515*e371a772SYixun Lan CCU_PARENT_HW(pll1_d768_3p2), 516*e371a772SYixun Lan CCU_PARENT_HW(pll1_d1536_1p6), 517*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3072_0p8), 518*e371a772SYixun Lan CCU_PARENT_HW(i2s5_i2s_bclk), 519*e371a772SYixun Lan }; 520*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(i2s5_clk, i2s5_parents, APBC_SSPA5_CLK_RST, 4, 3, BIT(1), 0); 521*e371a772SYixun Lan 522*e371a772SYixun Lan CCU_GATE_DEFINE(i2s0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA0_CLK_RST, BIT(0), 0); 523*e371a772SYixun Lan CCU_GATE_DEFINE(i2s1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA1_CLK_RST, BIT(0), 0); 524*e371a772SYixun Lan CCU_GATE_DEFINE(i2s2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA2_CLK_RST, BIT(0), 0); 525*e371a772SYixun Lan CCU_GATE_DEFINE(i2s3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA3_CLK_RST, BIT(0), 0); 526*e371a772SYixun Lan CCU_GATE_DEFINE(i2s4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA4_CLK_RST, BIT(0), 0); 527*e371a772SYixun Lan CCU_GATE_DEFINE(i2s5_bus_clk, CCU_PARENT_HW(apb_clk), APBC_SSPA5_CLK_RST, BIT(0), 0); 528*e371a772SYixun Lan 529*e371a772SYixun Lan CCU_GATE_DEFINE(dro_clk, CCU_PARENT_HW(apb_clk), APBC_DRO_CLK_RST, BIT(1), 0); 530*e371a772SYixun Lan CCU_GATE_DEFINE(ir0_clk, CCU_PARENT_HW(apb_clk), APBC_IR0_CLK_RST, BIT(1), 0); 531*e371a772SYixun Lan CCU_GATE_DEFINE(ir1_clk, CCU_PARENT_HW(apb_clk), APBC_IR1_CLK_RST, BIT(1), 0); 532*e371a772SYixun Lan 533*e371a772SYixun Lan CCU_GATE_DEFINE(tsen_clk, CCU_PARENT_HW(apb_clk), APBC_TSEN_CLK_RST, BIT(1), 0); 534*e371a772SYixun Lan CCU_GATE_DEFINE(tsen_bus_clk, CCU_PARENT_HW(apb_clk), APBC_TSEN_CLK_RST, BIT(0), 0); 535*e371a772SYixun Lan 536*e371a772SYixun Lan CCU_GATE_DEFINE(ipc_ap2rcpu_clk, CCU_PARENT_HW(apb_clk), APBC_IPC_AP2AUD_CLK_RST, BIT(1), 0); 537*e371a772SYixun Lan CCU_GATE_DEFINE(ipc_ap2rcpu_bus_clk, CCU_PARENT_HW(apb_clk), APBC_IPC_AP2AUD_CLK_RST, BIT(0), 0); 538*e371a772SYixun Lan 539*e371a772SYixun Lan static const struct clk_parent_data can_parents[] = { 540*e371a772SYixun Lan CCU_PARENT_HW(pll6_20), 541*e371a772SYixun Lan CCU_PARENT_HW(pll6_40), 542*e371a772SYixun Lan CCU_PARENT_HW(pll6_80), 543*e371a772SYixun Lan }; 544*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can0_clk, can_parents, APBC_CAN0_CLK_RST, 4, 3, BIT(1), 0); 545*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can1_clk, can_parents, APBC_CAN1_CLK_RST, 4, 3, BIT(1), 0); 546*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can2_clk, can_parents, APBC_CAN2_CLK_RST, 4, 3, BIT(1), 0); 547*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can3_clk, can_parents, APBC_CAN3_CLK_RST, 4, 3, BIT(1), 0); 548*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(can4_clk, can_parents, APBC_CAN4_CLK_RST, 4, 3, BIT(1), 0); 549*e371a772SYixun Lan 550*e371a772SYixun Lan CCU_GATE_DEFINE(can0_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN0_CLK_RST, BIT(0), 0); 551*e371a772SYixun Lan CCU_GATE_DEFINE(can1_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN1_CLK_RST, BIT(0), 0); 552*e371a772SYixun Lan CCU_GATE_DEFINE(can2_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN2_CLK_RST, BIT(0), 0); 553*e371a772SYixun Lan CCU_GATE_DEFINE(can3_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN3_CLK_RST, BIT(0), 0); 554*e371a772SYixun Lan CCU_GATE_DEFINE(can4_bus_clk, CCU_PARENT_HW(apb_clk), APBC_CAN4_CLK_RST, BIT(0), 0); 555*e371a772SYixun Lan /* APBC clocks end */ 556*e371a772SYixun Lan 557*e371a772SYixun Lan /* APMU clocks start */ 558*e371a772SYixun Lan static const struct clk_parent_data axi_clk_parents[] = { 559*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 560*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 561*e371a772SYixun Lan }; 562*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(axi_clk, axi_clk_parents, APMU_ACLK_CLK_CTRL, 1, 2, BIT(4), 0, 1, 0); 563*e371a772SYixun Lan 564*e371a772SYixun Lan static const struct clk_parent_data cci550_clk_parents[] = { 565*e371a772SYixun Lan CCU_PARENT_HW(pll1_d10_245p76), 566*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 567*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 568*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 569*e371a772SYixun Lan CCU_PARENT_HW(pll7_d3), 570*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 571*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 572*e371a772SYixun Lan CCU_PARENT_HW(pll7_d2), 573*e371a772SYixun Lan }; 574*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cci550_clk, cci550_clk_parents, APMU_CCI550_CLK_CTRL, 8, 2, BIT(12), 0, 3, 575*e371a772SYixun Lan CLK_IS_CRITICAL); 576*e371a772SYixun Lan 577*e371a772SYixun Lan static const struct clk_parent_data cpu_c0_clk_parents[] = { 578*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 579*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 580*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 581*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 582*e371a772SYixun Lan CCU_PARENT_HW(pll3_d2), 583*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 584*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 585*e371a772SYixun Lan CCU_PARENT_HW(pll3_d1), 586*e371a772SYixun Lan }; 587*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c0_core_clk, cpu_c0_clk_parents, APMU_CPU_C0_CLK_CTRL, 588*e371a772SYixun Lan 3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL); 589*e371a772SYixun Lan 590*e371a772SYixun Lan static const struct clk_parent_data cpu_c1_clk_parents[] = { 591*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 592*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 593*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 594*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 595*e371a772SYixun Lan CCU_PARENT_HW(pll4_d2), 596*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 597*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 598*e371a772SYixun Lan CCU_PARENT_HW(pll4_d1), 599*e371a772SYixun Lan }; 600*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c1_core_clk, cpu_c1_clk_parents, APMU_CPU_C1_CLK_CTRL, 601*e371a772SYixun Lan 3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL); 602*e371a772SYixun Lan 603*e371a772SYixun Lan static const struct clk_parent_data cpu_c2_clk_parents[] = { 604*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 605*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 606*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 607*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 608*e371a772SYixun Lan CCU_PARENT_HW(pll5_d2), 609*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 610*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 611*e371a772SYixun Lan CCU_PARENT_HW(pll5_d1), 612*e371a772SYixun Lan }; 613*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c2_core_clk, cpu_c2_clk_parents, APMU_CPU_C2_CLK_CTRL, 614*e371a772SYixun Lan 3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL); 615*e371a772SYixun Lan 616*e371a772SYixun Lan static const struct clk_parent_data cpu_c3_clk_parents[] = { 617*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 618*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 619*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 620*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 621*e371a772SYixun Lan CCU_PARENT_HW(pll8_d2), 622*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 623*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 624*e371a772SYixun Lan CCU_PARENT_HW(pll8_d1), 625*e371a772SYixun Lan }; 626*e371a772SYixun Lan CCU_MUX_DIV_FC_DEFINE(cpu_c3_core_clk, cpu_c3_clk_parents, APMU_CPU_C3_CLK_CTRL, 627*e371a772SYixun Lan 3, 3, BIT(12), 0, 3, CLK_IS_CRITICAL); 628*e371a772SYixun Lan 629*e371a772SYixun Lan static const struct clk_parent_data ccic2phy_parents[] = { 630*e371a772SYixun Lan CCU_PARENT_HW(pll1_d24_102p4), 631*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 632*e371a772SYixun Lan }; 633*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic2phy_clk, ccic2phy_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 7, 1, BIT(5), 0); 634*e371a772SYixun Lan 635*e371a772SYixun Lan static const struct clk_parent_data ccic3phy_parents[] = { 636*e371a772SYixun Lan CCU_PARENT_HW(pll1_d24_102p4), 637*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 638*e371a772SYixun Lan }; 639*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic3phy_clk, ccic3phy_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 31, 1, BIT(30), 0); 640*e371a772SYixun Lan 641*e371a772SYixun Lan static const struct clk_parent_data csi_parents[] = { 642*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 643*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 644*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 645*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 646*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 647*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 648*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 649*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 650*e371a772SYixun Lan }; 651*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(csi_clk, csi_parents, APMU_CSI_CCIC2_CLK_RES_CTRL, 20, 3, BIT(15), 652*e371a772SYixun Lan 16, 3, BIT(4), 0); 653*e371a772SYixun Lan 654*e371a772SYixun Lan static const struct clk_parent_data isp_bus_parents[] = { 655*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 656*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 657*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 658*e371a772SYixun Lan CCU_PARENT_HW(pll1_d10_245p76), 659*e371a772SYixun Lan }; 660*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(isp_bus_clk, isp_bus_parents, APMU_ISP_CLK_RES_CTRL, 18, 3, BIT(23), 661*e371a772SYixun Lan 21, 2, BIT(17), 0); 662*e371a772SYixun Lan 663*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_1228p8, CCU_PARENT_HW(pll1_d2_1228p8), APMU_PMU_CLK_GATE_CTRL, BIT(31), 0); 664*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_819p2, CCU_PARENT_HW(pll1_d3_819p2), APMU_PMU_CLK_GATE_CTRL, BIT(30), 0); 665*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_614p4, CCU_PARENT_HW(pll1_d4_614p4), APMU_PMU_CLK_GATE_CTRL, BIT(29), 0); 666*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_491p52, CCU_PARENT_HW(pll1_d5_491p52), APMU_PMU_CLK_GATE_CTRL, BIT(28), 0); 667*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_409p6, CCU_PARENT_HW(pll1_d6_409p6), APMU_PMU_CLK_GATE_CTRL, BIT(27), 0); 668*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_307p2, CCU_PARENT_HW(pll1_d8_307p2), APMU_PMU_CLK_GATE_CTRL, BIT(26), 0); 669*e371a772SYixun Lan CCU_GATE_DEFINE(d1p_245p76, CCU_PARENT_HW(pll1_d10_245p76), APMU_PMU_CLK_GATE_CTRL, BIT(22), 0); 670*e371a772SYixun Lan 671*e371a772SYixun Lan static const struct clk_parent_data v2d_parents[] = { 672*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 673*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 674*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 675*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 676*e371a772SYixun Lan }; 677*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(v2d_clk, v2d_parents, APMU_LCD_CLK_RES_CTRL1, 9, 3, BIT(28), 12, 2, 678*e371a772SYixun Lan BIT(8), 0); 679*e371a772SYixun Lan 680*e371a772SYixun Lan static const struct clk_parent_data dsiesc_parents[] = { 681*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 682*e371a772SYixun Lan CCU_PARENT_HW(pll1_d52_47p26), 683*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 684*e371a772SYixun Lan CCU_PARENT_HW(pll1_d32_76p8), 685*e371a772SYixun Lan }; 686*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(dsi_esc_clk, dsiesc_parents, APMU_LCD_CLK_RES_CTRL1, 0, 2, BIT(2), 0); 687*e371a772SYixun Lan 688*e371a772SYixun Lan CCU_GATE_DEFINE(lcd_hclk, CCU_PARENT_HW(axi_clk), APMU_LCD_CLK_RES_CTRL1, BIT(5), 0); 689*e371a772SYixun Lan 690*e371a772SYixun Lan static const struct clk_parent_data lcd_dsc_parents[] = { 691*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 692*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 693*e371a772SYixun Lan CCU_PARENT_HW(pll1_d10_245p76), 694*e371a772SYixun Lan CCU_PARENT_HW(pll7_d5), 695*e371a772SYixun Lan CCU_PARENT_HW(pll2_d7), 696*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 697*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 698*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 699*e371a772SYixun Lan }; 700*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_dsc_clk, lcd_dsc_parents, APMU_LCD_CLK_RES_CTRL2, 701*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL1, 25, 3, BIT(26), 29, 3, BIT(14), 0); 702*e371a772SYixun Lan 703*e371a772SYixun Lan static const struct clk_parent_data lcdpx_parents[] = { 704*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 705*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 706*e371a772SYixun Lan CCU_PARENT_HW(pll1_d10_245p76), 707*e371a772SYixun Lan CCU_PARENT_HW(pll7_d5), 708*e371a772SYixun Lan CCU_PARENT_HW(pll2_d7), 709*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 710*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 711*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 712*e371a772SYixun Lan }; 713*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_pxclk, lcdpx_parents, APMU_LCD_CLK_RES_CTRL2, 714*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL1, 17, 3, BIT(30), 21, 3, BIT(16), 0); 715*e371a772SYixun Lan 716*e371a772SYixun Lan static const struct clk_parent_data lcdmclk_parents[] = { 717*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 718*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 719*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 720*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 721*e371a772SYixun Lan }; 722*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(lcd_mclk, lcdmclk_parents, APMU_LCD_CLK_RES_CTRL2, 723*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL1, 1, 4, BIT(29), 5, 3, BIT(0), 0); 724*e371a772SYixun Lan 725*e371a772SYixun Lan static const struct clk_parent_data ccic_4x_parents[] = { 726*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 727*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 728*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 729*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 730*e371a772SYixun Lan CCU_PARENT_HW(pll2_d2), 731*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 732*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 733*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 734*e371a772SYixun Lan }; 735*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(ccic_4x_clk, ccic_4x_parents, APMU_CCIC_CLK_RES_CTRL, 18, 3, 736*e371a772SYixun Lan BIT(15), 23, 2, BIT(4), 0); 737*e371a772SYixun Lan 738*e371a772SYixun Lan static const struct clk_parent_data ccic1phy_parents[] = { 739*e371a772SYixun Lan CCU_PARENT_HW(pll1_d24_102p4), 740*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 741*e371a772SYixun Lan }; 742*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ccic1phy_clk, ccic1phy_parents, APMU_CCIC_CLK_RES_CTRL, 7, 1, BIT(5), 0); 743*e371a772SYixun Lan 744*e371a772SYixun Lan 745*e371a772SYixun Lan static const struct clk_parent_data sc2hclk_parents[] = { 746*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 747*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 748*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 749*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 750*e371a772SYixun Lan }; 751*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sc2_hclk, sc2hclk_parents, APMU_CCIC_CLK_RES_CTRL, 10, 3, 752*e371a772SYixun Lan BIT(16), 8, 2, BIT(3), 0); 753*e371a772SYixun Lan 754*e371a772SYixun Lan CCU_GATE_DEFINE(sdh_axi_aclk, CCU_PARENT_HW(axi_clk), APMU_SDH0_CLK_RES_CTRL, BIT(3), 0); 755*e371a772SYixun Lan static const struct clk_parent_data sdh01_parents[] = { 756*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 757*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 758*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 759*e371a772SYixun Lan CCU_PARENT_HW(pll2_d5), 760*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 761*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 762*e371a772SYixun Lan CCU_PARENT_HW(pll1_dx), 763*e371a772SYixun Lan }; 764*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh0_clk, sdh01_parents, APMU_SDH0_CLK_RES_CTRL, 8, 3, 765*e371a772SYixun Lan BIT(11), 5, 3, BIT(4), 0); 766*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh1_clk, sdh01_parents, APMU_SDH1_CLK_RES_CTRL, 8, 3, 767*e371a772SYixun Lan BIT(11), 5, 3, BIT(4), 0); 768*e371a772SYixun Lan static const struct clk_parent_data sdh2_parents[] = { 769*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 770*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 771*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 772*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 773*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 774*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 775*e371a772SYixun Lan CCU_PARENT_HW(pll1_dx), 776*e371a772SYixun Lan }; 777*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(sdh2_clk, sdh2_parents, APMU_SDH2_CLK_RES_CTRL, 8, 3, 778*e371a772SYixun Lan BIT(11), 5, 3, BIT(4), 0); 779*e371a772SYixun Lan 780*e371a772SYixun Lan CCU_GATE_DEFINE(usb2_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(0), 0); 781*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_porta_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(4), 0); 782*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portb_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(8), 0); 783*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portc_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(12), 0); 784*e371a772SYixun Lan CCU_GATE_DEFINE(usb3_portd_bus_clk, CCU_PARENT_HW(axi_clk), APMU_USB_CLK_RES_CTRL, BIT(16), 0); 785*e371a772SYixun Lan 786*e371a772SYixun Lan static const struct clk_parent_data qspi_parents[] = { 787*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 788*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 789*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 790*e371a772SYixun Lan CCU_PARENT_HW(pll1_d10_245p76), 791*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 792*e371a772SYixun Lan CCU_PARENT_HW(pll1_dx), 793*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 794*e371a772SYixun Lan CCU_PARENT_NAME(reserved_clk), 795*e371a772SYixun Lan }; 796*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(qspi_clk, qspi_parents, APMU_QSPI_CLK_RES_CTRL, 9, 3, 797*e371a772SYixun Lan BIT(12), 6, 3, BIT(4), 0); 798*e371a772SYixun Lan CCU_GATE_DEFINE(qspi_bus_clk, CCU_PARENT_HW(axi_clk), APMU_QSPI_CLK_RES_CTRL, BIT(3), 0); 799*e371a772SYixun Lan 800*e371a772SYixun Lan CCU_GATE_DEFINE(dma_clk, CCU_PARENT_HW(axi_clk), APMU_DMA_CLK_RES_CTRL, BIT(3), 0); 801*e371a772SYixun Lan 802*e371a772SYixun Lan static const struct clk_parent_data aes_wtm_parents[] = { 803*e371a772SYixun Lan CCU_PARENT_HW(pll1_d12_204p8), 804*e371a772SYixun Lan CCU_PARENT_HW(pll1_d24_102p4), 805*e371a772SYixun Lan }; 806*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(aes_wtm_clk, aes_wtm_parents, APMU_AES_CLK_RES_CTRL, 6, 1, BIT(5), 0); 807*e371a772SYixun Lan 808*e371a772SYixun Lan static const struct clk_parent_data vpu_parents[] = { 809*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 810*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 811*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 812*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 813*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 814*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 815*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 816*e371a772SYixun Lan CCU_PARENT_HW(pll2_d5), 817*e371a772SYixun Lan }; 818*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(vpu_clk, vpu_parents, APMU_VPU_CLK_RES_CTRL, 13, 3, 819*e371a772SYixun Lan BIT(21), 10, 3, BIT(3), 0); 820*e371a772SYixun Lan 821*e371a772SYixun Lan CCU_GATE_DEFINE(dtc_clk, CCU_PARENT_HW(axi_clk), APMU_DTC_CLK_RES_CTRL, BIT(3), 0); 822*e371a772SYixun Lan 823*e371a772SYixun Lan static const struct clk_parent_data gpu_parents[] = { 824*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 825*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 826*e371a772SYixun Lan CCU_PARENT_HW(pll1_d3_819p2), 827*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 828*e371a772SYixun Lan CCU_PARENT_HW(pll1_d2_1228p8), 829*e371a772SYixun Lan CCU_PARENT_HW(pll2_d3), 830*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 831*e371a772SYixun Lan CCU_PARENT_HW(pll2_d5), 832*e371a772SYixun Lan }; 833*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(gpu_clk, gpu_parents, APMU_GPU_CLK_RES_CTRL, 12, 3, 834*e371a772SYixun Lan BIT(15), 18, 3, BIT(4), 0); 835*e371a772SYixun Lan 836*e371a772SYixun Lan CCU_GATE_DEFINE(mc_ahb_clk, CCU_PARENT_HW(axi_clk), APMU_PMUA_MC_CTRL, BIT(1), 0); 837*e371a772SYixun Lan 838*e371a772SYixun Lan static const struct clk_parent_data top_parents[] = { 839*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 840*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 841*e371a772SYixun Lan CCU_PARENT_HW(pll3_d4), 842*e371a772SYixun Lan CCU_PARENT_HW(pll6_d5), 843*e371a772SYixun Lan CCU_PARENT_HW(pll7_d4), 844*e371a772SYixun Lan CCU_PARENT_HW(pll6_d4), 845*e371a772SYixun Lan CCU_PARENT_HW(pll7_d3), 846*e371a772SYixun Lan CCU_PARENT_HW(pll6_d3), 847*e371a772SYixun Lan }; 848*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(top_dclk, top_parents, APMU_TOP_DCLK_CTRL, 5, 3, 849*e371a772SYixun Lan BIT(8), 2, 3, BIT(1), 0); 850*e371a772SYixun Lan 851*e371a772SYixun Lan static const struct clk_parent_data ucie_parents[] = { 852*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 853*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 854*e371a772SYixun Lan CCU_PARENT_HW(pll3_d4), 855*e371a772SYixun Lan CCU_PARENT_HW(pll6_d5), 856*e371a772SYixun Lan CCU_PARENT_HW(pll7_d4), 857*e371a772SYixun Lan CCU_PARENT_HW(pll6_d4), 858*e371a772SYixun Lan }; 859*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(ucie_clk, ucie_parents, APMU_UCIE_CTRL, 4, 3, BIT(0), 0); 860*e371a772SYixun Lan CCU_GATE_DEFINE(ucie_sbclk, CCU_PARENT_HW(axi_clk), APMU_UCIE_CTRL, BIT(8), 0); 861*e371a772SYixun Lan 862*e371a772SYixun Lan static const struct clk_parent_data rcpu_clk_parents[] = { 863*e371a772SYixun Lan CCU_PARENT_HW(pll1_aud_245p7), 864*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 865*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 866*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 867*e371a772SYixun Lan }; 868*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(rcpu_clk, rcpu_clk_parents, APMU_RCPU_CLK_RES_CTRL, 869*e371a772SYixun Lan 4, 3, BIT(15), 7, 3, BIT(12), 0); 870*e371a772SYixun Lan 871*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_dsi_esc_parents[] = { 872*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 873*e371a772SYixun Lan CCU_PARENT_HW(pll1_d52_47p26), 874*e371a772SYixun Lan CCU_PARENT_HW(pll1_d96_25p6), 875*e371a772SYixun Lan CCU_PARENT_HW(pll1_d32_76p8), 876*e371a772SYixun Lan }; 877*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(dsi4ln2_dsi_esc_clk, dsi4ln2_dsi_esc_parents, APMU_LCD_CLK_RES_CTRL3, 878*e371a772SYixun Lan 0, 1, BIT(2), 0); 879*e371a772SYixun Lan 880*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcd_dsc_parents[] = { 881*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 882*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 883*e371a772SYixun Lan CCU_PARENT_HW(pll7_d5), 884*e371a772SYixun Lan CCU_PARENT_HW(pll6_d6), 885*e371a772SYixun Lan CCU_PARENT_HW(pll2_d7), 886*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 887*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 888*e371a772SYixun Lan }; 889*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_dsc_clk, dsi4ln2_lcd_dsc_parents, 890*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL4, APMU_LCD_CLK_RES_CTRL3, 891*e371a772SYixun Lan 25, 3, BIT(26), 29, 3, BIT(14), 0); 892*e371a772SYixun Lan 893*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcdpx_parents[] = { 894*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 895*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 896*e371a772SYixun Lan CCU_PARENT_HW(pll7_d5), 897*e371a772SYixun Lan CCU_PARENT_HW(pll6_d6), 898*e371a772SYixun Lan CCU_PARENT_HW(pll2_d7), 899*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 900*e371a772SYixun Lan CCU_PARENT_HW(pll1_d48_51p2_ap), 901*e371a772SYixun Lan CCU_PARENT_HW(pll2_d8), 902*e371a772SYixun Lan }; 903*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_pxclk, dsi4ln2_lcdpx_parents, APMU_LCD_CLK_RES_CTRL4, 904*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL3, 17, 3, BIT(30), 21, 3, BIT(16), 0); 905*e371a772SYixun Lan 906*e371a772SYixun Lan static const struct clk_parent_data dsi4ln2_lcd_mclk_parents[] = { 907*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 908*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 909*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 910*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 911*e371a772SYixun Lan }; 912*e371a772SYixun Lan CCU_MUX_DIV_GATE_SPLIT_FC_DEFINE(dsi4ln2_lcd_mclk, dsi4ln2_lcd_mclk_parents, APMU_LCD_CLK_RES_CTRL4, 913*e371a772SYixun Lan APMU_LCD_CLK_RES_CTRL3, 1, 4, BIT(29), 5, 3, BIT(0), 0); 914*e371a772SYixun Lan 915*e371a772SYixun Lan static const struct clk_parent_data dpu_aclk_parents[] = { 916*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 917*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 918*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 919*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 920*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 921*e371a772SYixun Lan }; 922*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(dsi4ln2_dpu_aclk, dpu_aclk_parents, APMU_LCD_CLK_RES_CTRL5, 923*e371a772SYixun Lan 2, 3, BIT(30), 5, 3, BIT(1), 0); 924*e371a772SYixun Lan 925*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(dpu_aclk, dpu_aclk_parents, APMU_LCD_CLK_RES_CTRL5, 17, 3, BIT(31), 926*e371a772SYixun Lan 20, 3, BIT(16), 0); 927*e371a772SYixun Lan 928*e371a772SYixun Lan static const struct clk_parent_data ufs_aclk_parents[] = { 929*e371a772SYixun Lan CCU_PARENT_HW(pll1_d6_409p6), 930*e371a772SYixun Lan CCU_PARENT_HW(pll1_d5_491p52), 931*e371a772SYixun Lan CCU_PARENT_HW(pll1_d4_614p4), 932*e371a772SYixun Lan CCU_PARENT_HW(pll1_d8_307p2), 933*e371a772SYixun Lan CCU_PARENT_HW(pll2_d4), 934*e371a772SYixun Lan }; 935*e371a772SYixun Lan CCU_MUX_DIV_GATE_FC_DEFINE(ufs_aclk, ufs_aclk_parents, APMU_UFS_CLK_RES_CTRL, 5, 3, BIT(8), 936*e371a772SYixun Lan 2, 3, BIT(1), 0); 937*e371a772SYixun Lan 938*e371a772SYixun Lan static const struct clk_parent_data edp0_pclk_parents[] = { 939*e371a772SYixun Lan CCU_PARENT_HW(lcd_pxclk), 940*e371a772SYixun Lan CCU_PARENT_NAME(external_clk), 941*e371a772SYixun Lan }; 942*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(edp0_pxclk, edp0_pclk_parents, APMU_LCD_EDP_CTRL, 2, 1, BIT(1), 0); 943*e371a772SYixun Lan 944*e371a772SYixun Lan static const struct clk_parent_data edp1_pclk_parents[] = { 945*e371a772SYixun Lan CCU_PARENT_HW(dsi4ln2_lcd_pxclk), 946*e371a772SYixun Lan CCU_PARENT_NAME(external_clk), 947*e371a772SYixun Lan }; 948*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(edp1_pxclk, edp1_pclk_parents, APMU_LCD_EDP_CTRL, 18, 1, BIT(17), 0); 949*e371a772SYixun Lan 950*e371a772SYixun Lan CCU_GATE_DEFINE(pciea_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_A, BIT(2), 0); 951*e371a772SYixun Lan CCU_GATE_DEFINE(pciea_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_A, BIT(1), 0); 952*e371a772SYixun Lan CCU_GATE_DEFINE(pcieb_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_B, BIT(2), 0); 953*e371a772SYixun Lan CCU_GATE_DEFINE(pcieb_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_B, BIT(1), 0); 954*e371a772SYixun Lan CCU_GATE_DEFINE(pciec_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_C, BIT(2), 0); 955*e371a772SYixun Lan CCU_GATE_DEFINE(pciec_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_C, BIT(1), 0); 956*e371a772SYixun Lan CCU_GATE_DEFINE(pcied_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_D, BIT(2), 0); 957*e371a772SYixun Lan CCU_GATE_DEFINE(pcied_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_D, BIT(1), 0); 958*e371a772SYixun Lan CCU_GATE_DEFINE(pciee_mstr_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_E, BIT(2), 0); 959*e371a772SYixun Lan CCU_GATE_DEFINE(pciee_slv_clk, CCU_PARENT_HW(axi_clk), APMU_PCIE_CLK_RES_CTRL_E, BIT(1), 0); 960*e371a772SYixun Lan 961*e371a772SYixun Lan static const struct clk_parent_data emac_1588_parents[] = { 962*e371a772SYixun Lan CCU_PARENT_NAME(vctcxo_24m), 963*e371a772SYixun Lan CCU_PARENT_HW(pll2_d24_125), 964*e371a772SYixun Lan }; 965*e371a772SYixun Lan 966*e371a772SYixun Lan CCU_GATE_DEFINE(emac0_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC0_CLK_RES_CTRL, BIT(0), 0); 967*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac0_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC0_CLK_RES_CTRL, 968*e371a772SYixun Lan BIT(14), true, 0); 969*e371a772SYixun Lan CCU_MUX_DEFINE(emac0_1588_clk, emac_1588_parents, APMU_EMAC0_CLK_RES_CTRL, 15, 1, 0); 970*e371a772SYixun Lan CCU_GATE_DEFINE(emac0_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC0_CLK_RES_CTRL, 971*e371a772SYixun Lan BIT(8), 0); 972*e371a772SYixun Lan CCU_GATE_DEFINE(emac1_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC1_CLK_RES_CTRL, BIT(0), 0); 973*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac1_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC1_CLK_RES_CTRL, 974*e371a772SYixun Lan BIT(14), true, 0); 975*e371a772SYixun Lan CCU_MUX_DEFINE(emac1_1588_clk, emac_1588_parents, APMU_EMAC1_CLK_RES_CTRL, 15, 1, 0); 976*e371a772SYixun Lan CCU_GATE_DEFINE(emac1_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC1_CLK_RES_CTRL, 977*e371a772SYixun Lan BIT(8), 0); 978*e371a772SYixun Lan CCU_GATE_DEFINE(emac2_bus_clk, CCU_PARENT_HW(axi_clk), APMU_EMAC2_CLK_RES_CTRL, BIT(0), 0); 979*e371a772SYixun Lan CCU_GATE_FLAGS_DEFINE(emac2_ref_clk, CCU_PARENT_HW(pll2_d120_25), APMU_EMAC2_CLK_RES_CTRL, 980*e371a772SYixun Lan BIT(14), true, 0); 981*e371a772SYixun Lan CCU_MUX_DEFINE(emac2_1588_clk, emac_1588_parents, APMU_EMAC2_CLK_RES_CTRL, 15, 1, 0); 982*e371a772SYixun Lan CCU_GATE_DEFINE(emac2_rgmii_tx_clk, CCU_PARENT_HW(pll2_d24_125), APMU_EMAC2_CLK_RES_CTRL, 983*e371a772SYixun Lan BIT(8), 0); 984*e371a772SYixun Lan 985*e371a772SYixun Lan static const struct clk_parent_data espi_sclk_src_parents[] = { 986*e371a772SYixun Lan CCU_PARENT_HW(pll2_20), 987*e371a772SYixun Lan CCU_PARENT_HW(pll2_25), 988*e371a772SYixun Lan CCU_PARENT_HW(pll2_33), 989*e371a772SYixun Lan CCU_PARENT_HW(pll2_50), 990*e371a772SYixun Lan CCU_PARENT_HW(pll2_66), 991*e371a772SYixun Lan }; 992*e371a772SYixun Lan CCU_MUX_DEFINE(espi_sclk_src, espi_sclk_src_parents, APMU_ESPI_CLK_RES_CTRL, 4, 3, 0); 993*e371a772SYixun Lan 994*e371a772SYixun Lan static const struct clk_parent_data espi_sclk_parents[] = { 995*e371a772SYixun Lan CCU_PARENT_NAME(external_clk), 996*e371a772SYixun Lan CCU_PARENT_HW(espi_sclk_src), 997*e371a772SYixun Lan }; 998*e371a772SYixun Lan CCU_MUX_GATE_DEFINE(espi_sclk, espi_sclk_parents, APMU_ESPI_CLK_RES_CTRL, 7, 1, BIT(3), 0); 999*e371a772SYixun Lan 1000*e371a772SYixun Lan CCU_GATE_DEFINE(espi_mclk, CCU_PARENT_HW(axi_clk), APMU_ESPI_CLK_RES_CTRL, BIT(1), 0); 1001*e371a772SYixun Lan 1002*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src1_clk, CCU_PARENT_HW(pll1_d6_409p6), 15, 1); 1003*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src2_clk, CCU_PARENT_HW(pll2_d5), 25, 1); 1004*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src3_clk, CCU_PARENT_HW(pll2_d6), 20, 1); 1005*e371a772SYixun Lan CCU_FACTOR_DEFINE(cam_src4_clk, CCU_PARENT_HW(pll1_d6_409p6), 16, 1); 1006*e371a772SYixun Lan 1007*e371a772SYixun Lan static const struct clk_parent_data isim_vclk_parents[] = { 1008*e371a772SYixun Lan CCU_PARENT_HW(cam_src1_clk), 1009*e371a772SYixun Lan CCU_PARENT_HW(cam_src2_clk), 1010*e371a772SYixun Lan CCU_PARENT_HW(cam_src3_clk), 1011*e371a772SYixun Lan CCU_PARENT_HW(cam_src4_clk), 1012*e371a772SYixun Lan }; 1013*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out0, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 3, 4, 1014*e371a772SYixun Lan 1, 2, BIT(0), 0); 1015*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out1, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 11, 4, 1016*e371a772SYixun Lan 9, 2, BIT(8), 0); 1017*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out2, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 19, 4, 1018*e371a772SYixun Lan 17, 2, BIT(16), 0); 1019*e371a772SYixun Lan CCU_MUX_DIV_GATE_DEFINE(isim_vclk_out3, isim_vclk_parents, APMU_SNR_ISIM_VCLK_CTRL, 27, 4, 1020*e371a772SYixun Lan 25, 2, BIT(24), 0); 1021*e371a772SYixun Lan /* APMU clocks end */ 1022*e371a772SYixun Lan 1023*e371a772SYixun Lan /* DCIU clocks start */ 1024*e371a772SYixun Lan CCU_GATE_DEFINE(hdma_clk, CCU_PARENT_HW(axi_clk), DCIU_DMASYS_CLK_EN, BIT(0), 0); 1025*e371a772SYixun Lan CCU_GATE_DEFINE(dma350_clk, CCU_PARENT_HW(axi_clk), DCIU_DMASYS_SDMA_CLK_EN, BIT(0), 0); 1026*e371a772SYixun Lan CCU_GATE_DEFINE(c2_tcm_pipe_clk, CCU_PARENT_HW(axi_clk), DCIU_C2_TCM_PIPE_CLK, BIT(0), 0); 1027*e371a772SYixun Lan CCU_GATE_DEFINE(c3_tcm_pipe_clk, CCU_PARENT_HW(axi_clk), DCIU_C3_TCM_PIPE_CLK, BIT(0), 0); 1028*e371a772SYixun Lan /* DCIU clocks end */ 1029*e371a772SYixun Lan 1030*e371a772SYixun Lan static struct clk_hw *k3_ccu_pll_hws[] = { 1031*e371a772SYixun Lan [CLK_PLL1] = &pll1.common.hw, 1032*e371a772SYixun Lan [CLK_PLL2] = &pll2.common.hw, 1033*e371a772SYixun Lan [CLK_PLL3] = &pll3.common.hw, 1034*e371a772SYixun Lan [CLK_PLL4] = &pll4.common.hw, 1035*e371a772SYixun Lan [CLK_PLL5] = &pll5.common.hw, 1036*e371a772SYixun Lan [CLK_PLL6] = &pll6.common.hw, 1037*e371a772SYixun Lan [CLK_PLL7] = &pll7.common.hw, 1038*e371a772SYixun Lan [CLK_PLL8] = &pll8.common.hw, 1039*e371a772SYixun Lan [CLK_PLL1_D2] = &pll1_d2.common.hw, 1040*e371a772SYixun Lan [CLK_PLL1_D3] = &pll1_d3.common.hw, 1041*e371a772SYixun Lan [CLK_PLL1_D4] = &pll1_d4.common.hw, 1042*e371a772SYixun Lan [CLK_PLL1_D5] = &pll1_d5.common.hw, 1043*e371a772SYixun Lan [CLK_PLL1_D6] = &pll1_d6.common.hw, 1044*e371a772SYixun Lan [CLK_PLL1_D7] = &pll1_d7.common.hw, 1045*e371a772SYixun Lan [CLK_PLL1_D8] = &pll1_d8.common.hw, 1046*e371a772SYixun Lan [CLK_PLL1_DX] = &pll1_dx.common.hw, 1047*e371a772SYixun Lan [CLK_PLL1_D64] = &pll1_d64_38p4.common.hw, 1048*e371a772SYixun Lan [CLK_PLL1_D10_AUD] = &pll1_aud_245p7.common.hw, 1049*e371a772SYixun Lan [CLK_PLL1_D100_AUD] = &pll1_aud_24p5.common.hw, 1050*e371a772SYixun Lan [CLK_PLL2_D1] = &pll2_d1.common.hw, 1051*e371a772SYixun Lan [CLK_PLL2_D2] = &pll2_d2.common.hw, 1052*e371a772SYixun Lan [CLK_PLL2_D3] = &pll2_d3.common.hw, 1053*e371a772SYixun Lan [CLK_PLL2_D4] = &pll2_d4.common.hw, 1054*e371a772SYixun Lan [CLK_PLL2_D5] = &pll2_d5.common.hw, 1055*e371a772SYixun Lan [CLK_PLL2_D6] = &pll2_d6.common.hw, 1056*e371a772SYixun Lan [CLK_PLL2_D7] = &pll2_d7.common.hw, 1057*e371a772SYixun Lan [CLK_PLL2_D8] = &pll2_d8.common.hw, 1058*e371a772SYixun Lan [CLK_PLL2_66] = &pll2_66.common.hw, 1059*e371a772SYixun Lan [CLK_PLL2_33] = &pll2_33.common.hw, 1060*e371a772SYixun Lan [CLK_PLL2_50] = &pll2_50.common.hw, 1061*e371a772SYixun Lan [CLK_PLL2_25] = &pll2_25.common.hw, 1062*e371a772SYixun Lan [CLK_PLL2_20] = &pll2_20.common.hw, 1063*e371a772SYixun Lan [CLK_PLL2_D24_125] = &pll2_d24_125.common.hw, 1064*e371a772SYixun Lan [CLK_PLL2_D120_25] = &pll2_d120_25.common.hw, 1065*e371a772SYixun Lan [CLK_PLL3_D1] = &pll3_d1.common.hw, 1066*e371a772SYixun Lan [CLK_PLL3_D2] = &pll3_d2.common.hw, 1067*e371a772SYixun Lan [CLK_PLL3_D3] = &pll3_d3.common.hw, 1068*e371a772SYixun Lan [CLK_PLL3_D4] = &pll3_d4.common.hw, 1069*e371a772SYixun Lan [CLK_PLL3_D5] = &pll3_d5.common.hw, 1070*e371a772SYixun Lan [CLK_PLL3_D6] = &pll3_d6.common.hw, 1071*e371a772SYixun Lan [CLK_PLL3_D7] = &pll3_d7.common.hw, 1072*e371a772SYixun Lan [CLK_PLL3_D8] = &pll3_d8.common.hw, 1073*e371a772SYixun Lan [CLK_PLL4_D1] = &pll4_d1.common.hw, 1074*e371a772SYixun Lan [CLK_PLL4_D2] = &pll4_d2.common.hw, 1075*e371a772SYixun Lan [CLK_PLL4_D3] = &pll4_d3.common.hw, 1076*e371a772SYixun Lan [CLK_PLL4_D4] = &pll4_d4.common.hw, 1077*e371a772SYixun Lan [CLK_PLL4_D5] = &pll4_d5.common.hw, 1078*e371a772SYixun Lan [CLK_PLL4_D6] = &pll4_d6.common.hw, 1079*e371a772SYixun Lan [CLK_PLL4_D7] = &pll4_d7.common.hw, 1080*e371a772SYixun Lan [CLK_PLL4_D8] = &pll4_d8.common.hw, 1081*e371a772SYixun Lan [CLK_PLL5_D1] = &pll5_d1.common.hw, 1082*e371a772SYixun Lan [CLK_PLL5_D2] = &pll5_d2.common.hw, 1083*e371a772SYixun Lan [CLK_PLL5_D3] = &pll5_d3.common.hw, 1084*e371a772SYixun Lan [CLK_PLL5_D4] = &pll5_d4.common.hw, 1085*e371a772SYixun Lan [CLK_PLL5_D5] = &pll5_d5.common.hw, 1086*e371a772SYixun Lan [CLK_PLL5_D6] = &pll5_d6.common.hw, 1087*e371a772SYixun Lan [CLK_PLL5_D7] = &pll5_d7.common.hw, 1088*e371a772SYixun Lan [CLK_PLL5_D8] = &pll5_d8.common.hw, 1089*e371a772SYixun Lan [CLK_PLL6_D1] = &pll6_d1.common.hw, 1090*e371a772SYixun Lan [CLK_PLL6_D2] = &pll6_d2.common.hw, 1091*e371a772SYixun Lan [CLK_PLL6_D3] = &pll6_d3.common.hw, 1092*e371a772SYixun Lan [CLK_PLL6_D4] = &pll6_d4.common.hw, 1093*e371a772SYixun Lan [CLK_PLL6_D5] = &pll6_d5.common.hw, 1094*e371a772SYixun Lan [CLK_PLL6_D6] = &pll6_d6.common.hw, 1095*e371a772SYixun Lan [CLK_PLL6_D7] = &pll6_d7.common.hw, 1096*e371a772SYixun Lan [CLK_PLL6_D8] = &pll6_d8.common.hw, 1097*e371a772SYixun Lan [CLK_PLL6_80] = &pll6_80.common.hw, 1098*e371a772SYixun Lan [CLK_PLL6_40] = &pll6_40.common.hw, 1099*e371a772SYixun Lan [CLK_PLL6_20] = &pll6_20.common.hw, 1100*e371a772SYixun Lan [CLK_PLL7_D1] = &pll7_d1.common.hw, 1101*e371a772SYixun Lan [CLK_PLL7_D2] = &pll7_d2.common.hw, 1102*e371a772SYixun Lan [CLK_PLL7_D3] = &pll7_d3.common.hw, 1103*e371a772SYixun Lan [CLK_PLL7_D4] = &pll7_d4.common.hw, 1104*e371a772SYixun Lan [CLK_PLL7_D5] = &pll7_d5.common.hw, 1105*e371a772SYixun Lan [CLK_PLL7_D6] = &pll7_d6.common.hw, 1106*e371a772SYixun Lan [CLK_PLL7_D7] = &pll7_d7.common.hw, 1107*e371a772SYixun Lan [CLK_PLL7_D8] = &pll7_d8.common.hw, 1108*e371a772SYixun Lan [CLK_PLL8_D1] = &pll8_d1.common.hw, 1109*e371a772SYixun Lan [CLK_PLL8_D2] = &pll8_d2.common.hw, 1110*e371a772SYixun Lan [CLK_PLL8_D3] = &pll8_d3.common.hw, 1111*e371a772SYixun Lan [CLK_PLL8_D4] = &pll8_d4.common.hw, 1112*e371a772SYixun Lan [CLK_PLL8_D5] = &pll8_d5.common.hw, 1113*e371a772SYixun Lan [CLK_PLL8_D6] = &pll8_d6.common.hw, 1114*e371a772SYixun Lan [CLK_PLL8_D7] = &pll8_d7.common.hw, 1115*e371a772SYixun Lan [CLK_PLL8_D8] = &pll8_d8.common.hw, 1116*e371a772SYixun Lan }; 1117*e371a772SYixun Lan 1118*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_pll_data = { 1119*e371a772SYixun Lan /* The APBS CCU implements PLLs, but no resets */ 1120*e371a772SYixun Lan .hws = k3_ccu_pll_hws, 1121*e371a772SYixun Lan .num = ARRAY_SIZE(k3_ccu_pll_hws), 1122*e371a772SYixun Lan }; 1123*e371a772SYixun Lan 1124*e371a772SYixun Lan static struct clk_hw *k3_ccu_mpmu_hws[] = { 1125*e371a772SYixun Lan [CLK_MPMU_PLL1_307P2] = &pll1_d8_307p2.common.hw, 1126*e371a772SYixun Lan [CLK_MPMU_PLL1_76P8] = &pll1_d32_76p8.common.hw, 1127*e371a772SYixun Lan [CLK_MPMU_PLL1_61P44] = &pll1_d40_61p44.common.hw, 1128*e371a772SYixun Lan [CLK_MPMU_PLL1_153P6] = &pll1_d16_153p6.common.hw, 1129*e371a772SYixun Lan [CLK_MPMU_PLL1_102P4] = &pll1_d24_102p4.common.hw, 1130*e371a772SYixun Lan [CLK_MPMU_PLL1_51P2] = &pll1_d48_51p2.common.hw, 1131*e371a772SYixun Lan [CLK_MPMU_PLL1_51P2_AP] = &pll1_d48_51p2_ap.common.hw, 1132*e371a772SYixun Lan [CLK_MPMU_PLL1_57P6] = &pll1_m3d128_57p6.common.hw, 1133*e371a772SYixun Lan [CLK_MPMU_PLL1_25P6] = &pll1_d96_25p6.common.hw, 1134*e371a772SYixun Lan [CLK_MPMU_PLL1_12P8] = &pll1_d192_12p8.common.hw, 1135*e371a772SYixun Lan [CLK_MPMU_PLL1_12P8_WDT] = &pll1_d192_12p8_wdt.common.hw, 1136*e371a772SYixun Lan [CLK_MPMU_PLL1_6P4] = &pll1_d384_6p4.common.hw, 1137*e371a772SYixun Lan [CLK_MPMU_PLL1_3P2] = &pll1_d768_3p2.common.hw, 1138*e371a772SYixun Lan [CLK_MPMU_PLL1_1P6] = &pll1_d1536_1p6.common.hw, 1139*e371a772SYixun Lan [CLK_MPMU_PLL1_0P8] = &pll1_d3072_0p8.common.hw, 1140*e371a772SYixun Lan [CLK_MPMU_PLL1_409P6] = &pll1_d6_409p6.common.hw, 1141*e371a772SYixun Lan [CLK_MPMU_PLL1_204P8] = &pll1_d12_204p8.common.hw, 1142*e371a772SYixun Lan [CLK_MPMU_PLL1_491] = &pll1_d5_491p52.common.hw, 1143*e371a772SYixun Lan [CLK_MPMU_PLL1_245P76] = &pll1_d10_245p76.common.hw, 1144*e371a772SYixun Lan [CLK_MPMU_PLL1_614] = &pll1_d4_614p4.common.hw, 1145*e371a772SYixun Lan [CLK_MPMU_PLL1_47P26] = &pll1_d52_47p26.common.hw, 1146*e371a772SYixun Lan [CLK_MPMU_PLL1_31P5] = &pll1_d78_31p5.common.hw, 1147*e371a772SYixun Lan [CLK_MPMU_PLL1_819] = &pll1_d3_819p2.common.hw, 1148*e371a772SYixun Lan [CLK_MPMU_PLL1_1228] = &pll1_d2_1228p8.common.hw, 1149*e371a772SYixun Lan [CLK_MPMU_APB] = &apb_clk.common.hw, 1150*e371a772SYixun Lan [CLK_MPMU_SLOW_UART] = &slow_uart.common.hw, 1151*e371a772SYixun Lan [CLK_MPMU_SLOW_UART1] = &slow_uart1_14p74.common.hw, 1152*e371a772SYixun Lan [CLK_MPMU_SLOW_UART2] = &slow_uart2_48.common.hw, 1153*e371a772SYixun Lan [CLK_MPMU_WDT] = &wdt_clk.common.hw, 1154*e371a772SYixun Lan [CLK_MPMU_WDT_BUS] = &wdt_bus_clk.common.hw, 1155*e371a772SYixun Lan [CLK_MPMU_RIPC] = &r_ipc_clk.common.hw, 1156*e371a772SYixun Lan [CLK_MPMU_I2S_153P6] = &i2s_153p6.common.hw, 1157*e371a772SYixun Lan [CLK_MPMU_I2S_153P6_BASE] = &i2s_153p6_base.common.hw, 1158*e371a772SYixun Lan [CLK_MPMU_I2S_SYSCLK_SRC] = &i2s_sysclk_src.common.hw, 1159*e371a772SYixun Lan [CLK_MPMU_I2S1_SYSCLK] = &i2s1_sysclk.common.hw, 1160*e371a772SYixun Lan [CLK_MPMU_I2S_BCLK] = &i2s_bclk.common.hw, 1161*e371a772SYixun Lan [CLK_MPMU_I2S0_SYSCLK_SEL] = &i2s0_sysclk_sel.common.hw, 1162*e371a772SYixun Lan [CLK_MPMU_I2S2_SYSCLK_SEL] = &i2s2_sysclk_sel.common.hw, 1163*e371a772SYixun Lan [CLK_MPMU_I2S3_SYSCLK_SEL] = &i2s3_sysclk_sel.common.hw, 1164*e371a772SYixun Lan [CLK_MPMU_I2S4_SYSCLK_SEL] = &i2s4_sysclk_sel.common.hw, 1165*e371a772SYixun Lan [CLK_MPMU_I2S5_SYSCLK_SEL] = &i2s5_sysclk_sel.common.hw, 1166*e371a772SYixun Lan [CLK_MPMU_I2S0_SYSCLK_DIV] = &i2s0_sysclk_div.common.hw, 1167*e371a772SYixun Lan [CLK_MPMU_I2S2_SYSCLK_DIV] = &i2s2_sysclk_div.common.hw, 1168*e371a772SYixun Lan [CLK_MPMU_I2S3_SYSCLK_DIV] = &i2s3_sysclk_div.common.hw, 1169*e371a772SYixun Lan [CLK_MPMU_I2S4_SYSCLK_DIV] = &i2s4_sysclk_div.common.hw, 1170*e371a772SYixun Lan [CLK_MPMU_I2S5_SYSCLK_DIV] = &i2s5_sysclk_div.common.hw, 1171*e371a772SYixun Lan [CLK_MPMU_I2S0_SYSCLK] = &i2s0_sysclk.common.hw, 1172*e371a772SYixun Lan [CLK_MPMU_I2S2_SYSCLK] = &i2s2_sysclk.common.hw, 1173*e371a772SYixun Lan [CLK_MPMU_I2S3_SYSCLK] = &i2s3_sysclk.common.hw, 1174*e371a772SYixun Lan [CLK_MPMU_I2S4_SYSCLK] = &i2s4_sysclk.common.hw, 1175*e371a772SYixun Lan [CLK_MPMU_I2S5_SYSCLK] = &i2s5_sysclk.common.hw, 1176*e371a772SYixun Lan }; 1177*e371a772SYixun Lan 1178*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_mpmu_data = { 1179*e371a772SYixun Lan .reset_name = "k3-mpmu-reset", 1180*e371a772SYixun Lan .hws = k3_ccu_mpmu_hws, 1181*e371a772SYixun Lan .num = ARRAY_SIZE(k3_ccu_mpmu_hws), 1182*e371a772SYixun Lan }; 1183*e371a772SYixun Lan 1184*e371a772SYixun Lan static struct clk_hw *k3_ccu_apbc_hws[] = { 1185*e371a772SYixun Lan [CLK_APBC_UART0] = &uart0_clk.common.hw, 1186*e371a772SYixun Lan [CLK_APBC_UART2] = &uart2_clk.common.hw, 1187*e371a772SYixun Lan [CLK_APBC_UART3] = &uart3_clk.common.hw, 1188*e371a772SYixun Lan [CLK_APBC_UART4] = &uart4_clk.common.hw, 1189*e371a772SYixun Lan [CLK_APBC_UART5] = &uart5_clk.common.hw, 1190*e371a772SYixun Lan [CLK_APBC_UART6] = &uart6_clk.common.hw, 1191*e371a772SYixun Lan [CLK_APBC_UART7] = &uart7_clk.common.hw, 1192*e371a772SYixun Lan [CLK_APBC_UART8] = &uart8_clk.common.hw, 1193*e371a772SYixun Lan [CLK_APBC_UART9] = &uart9_clk.common.hw, 1194*e371a772SYixun Lan [CLK_APBC_UART10] = &uart10_clk.common.hw, 1195*e371a772SYixun Lan [CLK_APBC_UART0_BUS] = &uart0_bus_clk.common.hw, 1196*e371a772SYixun Lan [CLK_APBC_UART2_BUS] = &uart2_bus_clk.common.hw, 1197*e371a772SYixun Lan [CLK_APBC_UART3_BUS] = &uart3_bus_clk.common.hw, 1198*e371a772SYixun Lan [CLK_APBC_UART4_BUS] = &uart4_bus_clk.common.hw, 1199*e371a772SYixun Lan [CLK_APBC_UART5_BUS] = &uart5_bus_clk.common.hw, 1200*e371a772SYixun Lan [CLK_APBC_UART6_BUS] = &uart6_bus_clk.common.hw, 1201*e371a772SYixun Lan [CLK_APBC_UART7_BUS] = &uart7_bus_clk.common.hw, 1202*e371a772SYixun Lan [CLK_APBC_UART8_BUS] = &uart8_bus_clk.common.hw, 1203*e371a772SYixun Lan [CLK_APBC_UART9_BUS] = &uart9_bus_clk.common.hw, 1204*e371a772SYixun Lan [CLK_APBC_UART10_BUS] = &uart10_bus_clk.common.hw, 1205*e371a772SYixun Lan [CLK_APBC_GPIO] = &gpio_clk.common.hw, 1206*e371a772SYixun Lan [CLK_APBC_GPIO_BUS] = &gpio_bus_clk.common.hw, 1207*e371a772SYixun Lan [CLK_APBC_PWM0] = &pwm0_clk.common.hw, 1208*e371a772SYixun Lan [CLK_APBC_PWM1] = &pwm1_clk.common.hw, 1209*e371a772SYixun Lan [CLK_APBC_PWM2] = &pwm2_clk.common.hw, 1210*e371a772SYixun Lan [CLK_APBC_PWM3] = &pwm3_clk.common.hw, 1211*e371a772SYixun Lan [CLK_APBC_PWM4] = &pwm4_clk.common.hw, 1212*e371a772SYixun Lan [CLK_APBC_PWM5] = &pwm5_clk.common.hw, 1213*e371a772SYixun Lan [CLK_APBC_PWM6] = &pwm6_clk.common.hw, 1214*e371a772SYixun Lan [CLK_APBC_PWM7] = &pwm7_clk.common.hw, 1215*e371a772SYixun Lan [CLK_APBC_PWM8] = &pwm8_clk.common.hw, 1216*e371a772SYixun Lan [CLK_APBC_PWM9] = &pwm9_clk.common.hw, 1217*e371a772SYixun Lan [CLK_APBC_PWM10] = &pwm10_clk.common.hw, 1218*e371a772SYixun Lan [CLK_APBC_PWM11] = &pwm11_clk.common.hw, 1219*e371a772SYixun Lan [CLK_APBC_PWM12] = &pwm12_clk.common.hw, 1220*e371a772SYixun Lan [CLK_APBC_PWM13] = &pwm13_clk.common.hw, 1221*e371a772SYixun Lan [CLK_APBC_PWM14] = &pwm14_clk.common.hw, 1222*e371a772SYixun Lan [CLK_APBC_PWM15] = &pwm15_clk.common.hw, 1223*e371a772SYixun Lan [CLK_APBC_PWM16] = &pwm16_clk.common.hw, 1224*e371a772SYixun Lan [CLK_APBC_PWM17] = &pwm17_clk.common.hw, 1225*e371a772SYixun Lan [CLK_APBC_PWM18] = &pwm18_clk.common.hw, 1226*e371a772SYixun Lan [CLK_APBC_PWM19] = &pwm19_clk.common.hw, 1227*e371a772SYixun Lan [CLK_APBC_PWM0_BUS] = &pwm0_bus_clk.common.hw, 1228*e371a772SYixun Lan [CLK_APBC_PWM1_BUS] = &pwm1_bus_clk.common.hw, 1229*e371a772SYixun Lan [CLK_APBC_PWM2_BUS] = &pwm2_bus_clk.common.hw, 1230*e371a772SYixun Lan [CLK_APBC_PWM3_BUS] = &pwm3_bus_clk.common.hw, 1231*e371a772SYixun Lan [CLK_APBC_PWM4_BUS] = &pwm4_bus_clk.common.hw, 1232*e371a772SYixun Lan [CLK_APBC_PWM5_BUS] = &pwm5_bus_clk.common.hw, 1233*e371a772SYixun Lan [CLK_APBC_PWM6_BUS] = &pwm6_bus_clk.common.hw, 1234*e371a772SYixun Lan [CLK_APBC_PWM7_BUS] = &pwm7_bus_clk.common.hw, 1235*e371a772SYixun Lan [CLK_APBC_PWM8_BUS] = &pwm8_bus_clk.common.hw, 1236*e371a772SYixun Lan [CLK_APBC_PWM9_BUS] = &pwm9_bus_clk.common.hw, 1237*e371a772SYixun Lan [CLK_APBC_PWM10_BUS] = &pwm10_bus_clk.common.hw, 1238*e371a772SYixun Lan [CLK_APBC_PWM11_BUS] = &pwm11_bus_clk.common.hw, 1239*e371a772SYixun Lan [CLK_APBC_PWM12_BUS] = &pwm12_bus_clk.common.hw, 1240*e371a772SYixun Lan [CLK_APBC_PWM13_BUS] = &pwm13_bus_clk.common.hw, 1241*e371a772SYixun Lan [CLK_APBC_PWM14_BUS] = &pwm14_bus_clk.common.hw, 1242*e371a772SYixun Lan [CLK_APBC_PWM15_BUS] = &pwm15_bus_clk.common.hw, 1243*e371a772SYixun Lan [CLK_APBC_PWM16_BUS] = &pwm16_bus_clk.common.hw, 1244*e371a772SYixun Lan [CLK_APBC_PWM17_BUS] = &pwm17_bus_clk.common.hw, 1245*e371a772SYixun Lan [CLK_APBC_PWM18_BUS] = &pwm18_bus_clk.common.hw, 1246*e371a772SYixun Lan [CLK_APBC_PWM19_BUS] = &pwm19_bus_clk.common.hw, 1247*e371a772SYixun Lan [CLK_APBC_SPI0_I2S_BCLK] = &spi0_i2s_bclk.common.hw, 1248*e371a772SYixun Lan [CLK_APBC_SPI1_I2S_BCLK] = &spi1_i2s_bclk.common.hw, 1249*e371a772SYixun Lan [CLK_APBC_SPI3_I2S_BCLK] = &spi3_i2s_bclk.common.hw, 1250*e371a772SYixun Lan [CLK_APBC_SPI0] = &spi0_clk.common.hw, 1251*e371a772SYixun Lan [CLK_APBC_SPI1] = &spi1_clk.common.hw, 1252*e371a772SYixun Lan [CLK_APBC_SPI3] = &spi3_clk.common.hw, 1253*e371a772SYixun Lan [CLK_APBC_SPI0_BUS] = &spi0_bus_clk.common.hw, 1254*e371a772SYixun Lan [CLK_APBC_SPI1_BUS] = &spi1_bus_clk.common.hw, 1255*e371a772SYixun Lan [CLK_APBC_SPI3_BUS] = &spi3_bus_clk.common.hw, 1256*e371a772SYixun Lan [CLK_APBC_RTC] = &rtc_clk.common.hw, 1257*e371a772SYixun Lan [CLK_APBC_RTC_BUS] = &rtc_bus_clk.common.hw, 1258*e371a772SYixun Lan [CLK_APBC_TWSI0] = &twsi0_clk.common.hw, 1259*e371a772SYixun Lan [CLK_APBC_TWSI1] = &twsi1_clk.common.hw, 1260*e371a772SYixun Lan [CLK_APBC_TWSI2] = &twsi2_clk.common.hw, 1261*e371a772SYixun Lan [CLK_APBC_TWSI4] = &twsi4_clk.common.hw, 1262*e371a772SYixun Lan [CLK_APBC_TWSI5] = &twsi5_clk.common.hw, 1263*e371a772SYixun Lan [CLK_APBC_TWSI6] = &twsi6_clk.common.hw, 1264*e371a772SYixun Lan [CLK_APBC_TWSI8] = &twsi8_clk.common.hw, 1265*e371a772SYixun Lan [CLK_APBC_TWSI0_BUS] = &twsi0_bus_clk.common.hw, 1266*e371a772SYixun Lan [CLK_APBC_TWSI1_BUS] = &twsi1_bus_clk.common.hw, 1267*e371a772SYixun Lan [CLK_APBC_TWSI2_BUS] = &twsi2_bus_clk.common.hw, 1268*e371a772SYixun Lan [CLK_APBC_TWSI4_BUS] = &twsi4_bus_clk.common.hw, 1269*e371a772SYixun Lan [CLK_APBC_TWSI5_BUS] = &twsi5_bus_clk.common.hw, 1270*e371a772SYixun Lan [CLK_APBC_TWSI6_BUS] = &twsi6_bus_clk.common.hw, 1271*e371a772SYixun Lan [CLK_APBC_TWSI8_BUS] = &twsi8_bus_clk.common.hw, 1272*e371a772SYixun Lan [CLK_APBC_TIMERS0] = &timers0_clk.common.hw, 1273*e371a772SYixun Lan [CLK_APBC_TIMERS1] = &timers1_clk.common.hw, 1274*e371a772SYixun Lan [CLK_APBC_TIMERS2] = &timers2_clk.common.hw, 1275*e371a772SYixun Lan [CLK_APBC_TIMERS3] = &timers3_clk.common.hw, 1276*e371a772SYixun Lan [CLK_APBC_TIMERS4] = &timers4_clk.common.hw, 1277*e371a772SYixun Lan [CLK_APBC_TIMERS5] = &timers5_clk.common.hw, 1278*e371a772SYixun Lan [CLK_APBC_TIMERS6] = &timers6_clk.common.hw, 1279*e371a772SYixun Lan [CLK_APBC_TIMERS7] = &timers7_clk.common.hw, 1280*e371a772SYixun Lan [CLK_APBC_TIMERS0_BUS] = &timers0_bus_clk.common.hw, 1281*e371a772SYixun Lan [CLK_APBC_TIMERS1_BUS] = &timers1_bus_clk.common.hw, 1282*e371a772SYixun Lan [CLK_APBC_TIMERS2_BUS] = &timers2_bus_clk.common.hw, 1283*e371a772SYixun Lan [CLK_APBC_TIMERS3_BUS] = &timers3_bus_clk.common.hw, 1284*e371a772SYixun Lan [CLK_APBC_TIMERS4_BUS] = &timers4_bus_clk.common.hw, 1285*e371a772SYixun Lan [CLK_APBC_TIMERS5_BUS] = &timers5_bus_clk.common.hw, 1286*e371a772SYixun Lan [CLK_APBC_TIMERS6_BUS] = &timers6_bus_clk.common.hw, 1287*e371a772SYixun Lan [CLK_APBC_TIMERS7_BUS] = &timers7_bus_clk.common.hw, 1288*e371a772SYixun Lan [CLK_APBC_AIB] = &aib_clk.common.hw, 1289*e371a772SYixun Lan [CLK_APBC_AIB_BUS] = &aib_bus_clk.common.hw, 1290*e371a772SYixun Lan [CLK_APBC_ONEWIRE] = &onewire_clk.common.hw, 1291*e371a772SYixun Lan [CLK_APBC_ONEWIRE_BUS] = &onewire_bus_clk.common.hw, 1292*e371a772SYixun Lan [CLK_APBC_I2S0_BCLK] = &i2s0_i2s_bclk.common.hw, 1293*e371a772SYixun Lan [CLK_APBC_I2S1_BCLK] = &i2s1_i2s_bclk.common.hw, 1294*e371a772SYixun Lan [CLK_APBC_I2S2_BCLK] = &i2s2_i2s_bclk.common.hw, 1295*e371a772SYixun Lan [CLK_APBC_I2S3_BCLK] = &i2s3_i2s_bclk.common.hw, 1296*e371a772SYixun Lan [CLK_APBC_I2S4_BCLK] = &i2s4_i2s_bclk.common.hw, 1297*e371a772SYixun Lan [CLK_APBC_I2S5_BCLK] = &i2s5_i2s_bclk.common.hw, 1298*e371a772SYixun Lan [CLK_APBC_I2S0] = &i2s0_clk.common.hw, 1299*e371a772SYixun Lan [CLK_APBC_I2S1] = &i2s1_clk.common.hw, 1300*e371a772SYixun Lan [CLK_APBC_I2S2] = &i2s2_clk.common.hw, 1301*e371a772SYixun Lan [CLK_APBC_I2S3] = &i2s3_clk.common.hw, 1302*e371a772SYixun Lan [CLK_APBC_I2S4] = &i2s4_clk.common.hw, 1303*e371a772SYixun Lan [CLK_APBC_I2S5] = &i2s5_clk.common.hw, 1304*e371a772SYixun Lan [CLK_APBC_I2S0_BUS] = &i2s0_bus_clk.common.hw, 1305*e371a772SYixun Lan [CLK_APBC_I2S1_BUS] = &i2s1_bus_clk.common.hw, 1306*e371a772SYixun Lan [CLK_APBC_I2S2_BUS] = &i2s2_bus_clk.common.hw, 1307*e371a772SYixun Lan [CLK_APBC_I2S3_BUS] = &i2s3_bus_clk.common.hw, 1308*e371a772SYixun Lan [CLK_APBC_I2S4_BUS] = &i2s4_bus_clk.common.hw, 1309*e371a772SYixun Lan [CLK_APBC_I2S5_BUS] = &i2s5_bus_clk.common.hw, 1310*e371a772SYixun Lan [CLK_APBC_DRO] = &dro_clk.common.hw, 1311*e371a772SYixun Lan [CLK_APBC_IR0] = &ir0_clk.common.hw, 1312*e371a772SYixun Lan [CLK_APBC_IR1] = &ir1_clk.common.hw, 1313*e371a772SYixun Lan [CLK_APBC_TSEN] = &tsen_clk.common.hw, 1314*e371a772SYixun Lan [CLK_APBC_TSEN_BUS] = &tsen_bus_clk.common.hw, 1315*e371a772SYixun Lan [CLK_APBC_IPC_AP2RCPU] = &ipc_ap2rcpu_clk.common.hw, 1316*e371a772SYixun Lan [CLK_APBC_IPC_AP2RCPU_BUS] = &ipc_ap2rcpu_bus_clk.common.hw, 1317*e371a772SYixun Lan [CLK_APBC_CAN0] = &can0_clk.common.hw, 1318*e371a772SYixun Lan [CLK_APBC_CAN1] = &can1_clk.common.hw, 1319*e371a772SYixun Lan [CLK_APBC_CAN2] = &can2_clk.common.hw, 1320*e371a772SYixun Lan [CLK_APBC_CAN3] = &can3_clk.common.hw, 1321*e371a772SYixun Lan [CLK_APBC_CAN4] = &can4_clk.common.hw, 1322*e371a772SYixun Lan [CLK_APBC_CAN0_BUS] = &can0_bus_clk.common.hw, 1323*e371a772SYixun Lan [CLK_APBC_CAN1_BUS] = &can1_bus_clk.common.hw, 1324*e371a772SYixun Lan [CLK_APBC_CAN2_BUS] = &can2_bus_clk.common.hw, 1325*e371a772SYixun Lan [CLK_APBC_CAN3_BUS] = &can3_bus_clk.common.hw, 1326*e371a772SYixun Lan [CLK_APBC_CAN4_BUS] = &can4_bus_clk.common.hw, 1327*e371a772SYixun Lan }; 1328*e371a772SYixun Lan 1329*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_apbc_data = { 1330*e371a772SYixun Lan .reset_name = "k3-apbc-reset", 1331*e371a772SYixun Lan .hws = k3_ccu_apbc_hws, 1332*e371a772SYixun Lan .num = ARRAY_SIZE(k3_ccu_apbc_hws), 1333*e371a772SYixun Lan }; 1334*e371a772SYixun Lan 1335*e371a772SYixun Lan static struct clk_hw *k3_ccu_apmu_hws[] = { 1336*e371a772SYixun Lan [CLK_APMU_AXICLK] = &axi_clk.common.hw, 1337*e371a772SYixun Lan [CLK_APMU_CCI550] = &cci550_clk.common.hw, 1338*e371a772SYixun Lan [CLK_APMU_CPU_C0_CORE] = &cpu_c0_core_clk.common.hw, 1339*e371a772SYixun Lan [CLK_APMU_CPU_C1_CORE] = &cpu_c1_core_clk.common.hw, 1340*e371a772SYixun Lan [CLK_APMU_CPU_C2_CORE] = &cpu_c2_core_clk.common.hw, 1341*e371a772SYixun Lan [CLK_APMU_CPU_C3_CORE] = &cpu_c3_core_clk.common.hw, 1342*e371a772SYixun Lan [CLK_APMU_CCIC2PHY] = &ccic2phy_clk.common.hw, 1343*e371a772SYixun Lan [CLK_APMU_CCIC3PHY] = &ccic3phy_clk.common.hw, 1344*e371a772SYixun Lan [CLK_APMU_CSI] = &csi_clk.common.hw, 1345*e371a772SYixun Lan [CLK_APMU_ISP_BUS] = &isp_bus_clk.common.hw, 1346*e371a772SYixun Lan [CLK_APMU_D1P_1228P8] = &d1p_1228p8.common.hw, 1347*e371a772SYixun Lan [CLK_APMU_D1P_819P2] = &d1p_819p2.common.hw, 1348*e371a772SYixun Lan [CLK_APMU_D1P_614P4] = &d1p_614p4.common.hw, 1349*e371a772SYixun Lan [CLK_APMU_D1P_491P52] = &d1p_491p52.common.hw, 1350*e371a772SYixun Lan [CLK_APMU_D1P_409P6] = &d1p_409p6.common.hw, 1351*e371a772SYixun Lan [CLK_APMU_D1P_307P2] = &d1p_307p2.common.hw, 1352*e371a772SYixun Lan [CLK_APMU_D1P_245P76] = &d1p_245p76.common.hw, 1353*e371a772SYixun Lan [CLK_APMU_V2D] = &v2d_clk.common.hw, 1354*e371a772SYixun Lan [CLK_APMU_DSI_ESC] = &dsi_esc_clk.common.hw, 1355*e371a772SYixun Lan [CLK_APMU_LCD_HCLK] = &lcd_hclk.common.hw, 1356*e371a772SYixun Lan [CLK_APMU_LCD_DSC] = &lcd_dsc_clk.common.hw, 1357*e371a772SYixun Lan [CLK_APMU_LCD_PXCLK] = &lcd_pxclk.common.hw, 1358*e371a772SYixun Lan [CLK_APMU_LCD_MCLK] = &lcd_mclk.common.hw, 1359*e371a772SYixun Lan [CLK_APMU_CCIC_4X] = &ccic_4x_clk.common.hw, 1360*e371a772SYixun Lan [CLK_APMU_CCIC1PHY] = &ccic1phy_clk.common.hw, 1361*e371a772SYixun Lan [CLK_APMU_SC2_HCLK] = &sc2_hclk.common.hw, 1362*e371a772SYixun Lan [CLK_APMU_SDH_AXI] = &sdh_axi_aclk.common.hw, 1363*e371a772SYixun Lan [CLK_APMU_SDH0] = &sdh0_clk.common.hw, 1364*e371a772SYixun Lan [CLK_APMU_SDH1] = &sdh1_clk.common.hw, 1365*e371a772SYixun Lan [CLK_APMU_SDH2] = &sdh2_clk.common.hw, 1366*e371a772SYixun Lan [CLK_APMU_USB2_BUS] = &usb2_bus_clk.common.hw, 1367*e371a772SYixun Lan [CLK_APMU_USB3_PORTA_BUS] = &usb3_porta_bus_clk.common.hw, 1368*e371a772SYixun Lan [CLK_APMU_USB3_PORTB_BUS] = &usb3_portb_bus_clk.common.hw, 1369*e371a772SYixun Lan [CLK_APMU_USB3_PORTC_BUS] = &usb3_portc_bus_clk.common.hw, 1370*e371a772SYixun Lan [CLK_APMU_USB3_PORTD_BUS] = &usb3_portd_bus_clk.common.hw, 1371*e371a772SYixun Lan [CLK_APMU_QSPI] = &qspi_clk.common.hw, 1372*e371a772SYixun Lan [CLK_APMU_QSPI_BUS] = &qspi_bus_clk.common.hw, 1373*e371a772SYixun Lan [CLK_APMU_DMA] = &dma_clk.common.hw, 1374*e371a772SYixun Lan [CLK_APMU_AES_WTM] = &aes_wtm_clk.common.hw, 1375*e371a772SYixun Lan [CLK_APMU_VPU] = &vpu_clk.common.hw, 1376*e371a772SYixun Lan [CLK_APMU_DTC] = &dtc_clk.common.hw, 1377*e371a772SYixun Lan [CLK_APMU_GPU] = &gpu_clk.common.hw, 1378*e371a772SYixun Lan [CLK_APMU_MC_AHB] = &mc_ahb_clk.common.hw, 1379*e371a772SYixun Lan [CLK_APMU_TOP_DCLK] = &top_dclk.common.hw, 1380*e371a772SYixun Lan [CLK_APMU_UCIE] = &ucie_clk.common.hw, 1381*e371a772SYixun Lan [CLK_APMU_UCIE_SBCLK] = &ucie_sbclk.common.hw, 1382*e371a772SYixun Lan [CLK_APMU_RCPU] = &rcpu_clk.common.hw, 1383*e371a772SYixun Lan [CLK_APMU_DSI4LN2_DSI_ESC] = &dsi4ln2_dsi_esc_clk.common.hw, 1384*e371a772SYixun Lan [CLK_APMU_DSI4LN2_LCD_DSC] = &dsi4ln2_lcd_dsc_clk.common.hw, 1385*e371a772SYixun Lan [CLK_APMU_DSI4LN2_LCD_PXCLK] = &dsi4ln2_lcd_pxclk.common.hw, 1386*e371a772SYixun Lan [CLK_APMU_DSI4LN2_LCD_MCLK] = &dsi4ln2_lcd_mclk.common.hw, 1387*e371a772SYixun Lan [CLK_APMU_DSI4LN2_DPU_ACLK] = &dsi4ln2_dpu_aclk.common.hw, 1388*e371a772SYixun Lan [CLK_APMU_DPU_ACLK] = &dpu_aclk.common.hw, 1389*e371a772SYixun Lan [CLK_APMU_UFS_ACLK] = &ufs_aclk.common.hw, 1390*e371a772SYixun Lan [CLK_APMU_EDP0_PXCLK] = &edp0_pxclk.common.hw, 1391*e371a772SYixun Lan [CLK_APMU_EDP1_PXCLK] = &edp1_pxclk.common.hw, 1392*e371a772SYixun Lan [CLK_APMU_PCIE_PORTA_MSTE] = &pciea_mstr_clk.common.hw, 1393*e371a772SYixun Lan [CLK_APMU_PCIE_PORTA_SLV] = &pciea_slv_clk.common.hw, 1394*e371a772SYixun Lan [CLK_APMU_PCIE_PORTB_MSTE] = &pcieb_mstr_clk.common.hw, 1395*e371a772SYixun Lan [CLK_APMU_PCIE_PORTB_SLV] = &pcieb_slv_clk.common.hw, 1396*e371a772SYixun Lan [CLK_APMU_PCIE_PORTC_MSTE] = &pciec_mstr_clk.common.hw, 1397*e371a772SYixun Lan [CLK_APMU_PCIE_PORTC_SLV] = &pciec_slv_clk.common.hw, 1398*e371a772SYixun Lan [CLK_APMU_PCIE_PORTD_MSTE] = &pcied_mstr_clk.common.hw, 1399*e371a772SYixun Lan [CLK_APMU_PCIE_PORTD_SLV] = &pcied_slv_clk.common.hw, 1400*e371a772SYixun Lan [CLK_APMU_PCIE_PORTE_MSTE] = &pciee_mstr_clk.common.hw, 1401*e371a772SYixun Lan [CLK_APMU_PCIE_PORTE_SLV] = &pciee_slv_clk.common.hw, 1402*e371a772SYixun Lan [CLK_APMU_EMAC0_BUS] = &emac0_bus_clk.common.hw, 1403*e371a772SYixun Lan [CLK_APMU_EMAC0_REF] = &emac0_ref_clk.common.hw, 1404*e371a772SYixun Lan [CLK_APMU_EMAC0_1588] = &emac0_1588_clk.common.hw, 1405*e371a772SYixun Lan [CLK_APMU_EMAC0_RGMII_TX] = &emac0_rgmii_tx_clk.common.hw, 1406*e371a772SYixun Lan [CLK_APMU_EMAC1_BUS] = &emac1_bus_clk.common.hw, 1407*e371a772SYixun Lan [CLK_APMU_EMAC1_REF] = &emac1_ref_clk.common.hw, 1408*e371a772SYixun Lan [CLK_APMU_EMAC1_1588] = &emac1_1588_clk.common.hw, 1409*e371a772SYixun Lan [CLK_APMU_EMAC1_RGMII_TX] = &emac1_rgmii_tx_clk.common.hw, 1410*e371a772SYixun Lan [CLK_APMU_EMAC2_BUS] = &emac2_bus_clk.common.hw, 1411*e371a772SYixun Lan [CLK_APMU_EMAC2_REF] = &emac2_ref_clk.common.hw, 1412*e371a772SYixun Lan [CLK_APMU_EMAC2_1588] = &emac2_1588_clk.common.hw, 1413*e371a772SYixun Lan [CLK_APMU_EMAC2_RGMII_TX] = &emac2_rgmii_tx_clk.common.hw, 1414*e371a772SYixun Lan [CLK_APMU_ESPI_SCLK_SRC] = &espi_sclk_src.common.hw, 1415*e371a772SYixun Lan [CLK_APMU_ESPI_SCLK] = &espi_sclk.common.hw, 1416*e371a772SYixun Lan [CLK_APMU_ESPI_MCLK] = &espi_mclk.common.hw, 1417*e371a772SYixun Lan [CLK_APMU_CAM_SRC1] = &cam_src1_clk.common.hw, 1418*e371a772SYixun Lan [CLK_APMU_CAM_SRC2] = &cam_src2_clk.common.hw, 1419*e371a772SYixun Lan [CLK_APMU_CAM_SRC3] = &cam_src3_clk.common.hw, 1420*e371a772SYixun Lan [CLK_APMU_CAM_SRC4] = &cam_src4_clk.common.hw, 1421*e371a772SYixun Lan [CLK_APMU_ISIM_VCLK0] = &isim_vclk_out0.common.hw, 1422*e371a772SYixun Lan [CLK_APMU_ISIM_VCLK1] = &isim_vclk_out1.common.hw, 1423*e371a772SYixun Lan [CLK_APMU_ISIM_VCLK2] = &isim_vclk_out2.common.hw, 1424*e371a772SYixun Lan [CLK_APMU_ISIM_VCLK3] = &isim_vclk_out3.common.hw, 1425*e371a772SYixun Lan }; 1426*e371a772SYixun Lan 1427*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_apmu_data = { 1428*e371a772SYixun Lan .reset_name = "k3-apmu-reset", 1429*e371a772SYixun Lan .hws = k3_ccu_apmu_hws, 1430*e371a772SYixun Lan .num = ARRAY_SIZE(k3_ccu_apmu_hws), 1431*e371a772SYixun Lan }; 1432*e371a772SYixun Lan 1433*e371a772SYixun Lan static struct clk_hw *k3_ccu_dciu_hws[] = { 1434*e371a772SYixun Lan [CLK_DCIU_HDMA] = &hdma_clk.common.hw, 1435*e371a772SYixun Lan [CLK_DCIU_DMA350] = &dma350_clk.common.hw, 1436*e371a772SYixun Lan [CLK_DCIU_C2_TCM_PIPE] = &c2_tcm_pipe_clk.common.hw, 1437*e371a772SYixun Lan [CLK_DCIU_C3_TCM_PIPE] = &c3_tcm_pipe_clk.common.hw, 1438*e371a772SYixun Lan }; 1439*e371a772SYixun Lan 1440*e371a772SYixun Lan static const struct spacemit_ccu_data k3_ccu_dciu_data = { 1441*e371a772SYixun Lan .reset_name = "k3-dciu-reset", 1442*e371a772SYixun Lan .hws = k3_ccu_dciu_hws, 1443*e371a772SYixun Lan .num = ARRAY_SIZE(k3_ccu_dciu_hws), 1444*e371a772SYixun Lan }; 1445*e371a772SYixun Lan 1446*e371a772SYixun Lan static const struct of_device_id of_k3_ccu_match[] = { 1447*e371a772SYixun Lan { 1448*e371a772SYixun Lan .compatible = "spacemit,k3-pll", 1449*e371a772SYixun Lan .data = &k3_ccu_pll_data, 1450*e371a772SYixun Lan }, 1451*e371a772SYixun Lan { 1452*e371a772SYixun Lan .compatible = "spacemit,k3-syscon-mpmu", 1453*e371a772SYixun Lan .data = &k3_ccu_mpmu_data, 1454*e371a772SYixun Lan }, 1455*e371a772SYixun Lan { 1456*e371a772SYixun Lan .compatible = "spacemit,k3-syscon-apbc", 1457*e371a772SYixun Lan .data = &k3_ccu_apbc_data, 1458*e371a772SYixun Lan }, 1459*e371a772SYixun Lan { 1460*e371a772SYixun Lan .compatible = "spacemit,k3-syscon-apmu", 1461*e371a772SYixun Lan .data = &k3_ccu_apmu_data, 1462*e371a772SYixun Lan }, 1463*e371a772SYixun Lan { 1464*e371a772SYixun Lan .compatible = "spacemit,k3-syscon-dciu", 1465*e371a772SYixun Lan .data = &k3_ccu_dciu_data, 1466*e371a772SYixun Lan }, 1467*e371a772SYixun Lan { /* sentinel */ } 1468*e371a772SYixun Lan }; 1469*e371a772SYixun Lan MODULE_DEVICE_TABLE(of, of_k3_ccu_match); 1470*e371a772SYixun Lan 1471*e371a772SYixun Lan static int k3_ccu_probe(struct platform_device *pdev) 1472*e371a772SYixun Lan { 1473*e371a772SYixun Lan return spacemit_ccu_probe(pdev, "spacemit,k3-pll"); 1474*e371a772SYixun Lan } 1475*e371a772SYixun Lan 1476*e371a772SYixun Lan static struct platform_driver k3_ccu_driver = { 1477*e371a772SYixun Lan .driver = { 1478*e371a772SYixun Lan .name = "spacemit,k3-ccu", 1479*e371a772SYixun Lan .of_match_table = of_k3_ccu_match, 1480*e371a772SYixun Lan }, 1481*e371a772SYixun Lan .probe = k3_ccu_probe, 1482*e371a772SYixun Lan }; 1483*e371a772SYixun Lan module_platform_driver(k3_ccu_driver); 1484*e371a772SYixun Lan 1485*e371a772SYixun Lan MODULE_IMPORT_NS("CLK_SPACEMIT"); 1486*e371a772SYixun Lan MODULE_DESCRIPTION("SpacemiT K3 CCU driver"); 1487*e371a772SYixun Lan MODULE_LICENSE("GPL"); 1488