1 /* SPDX-License-Identifier: GPL-2.0+ */ 2 /* 3 * Copyright 2021 NXP 4 */ 5 6 #ifndef _ASM_ARCH_CGC_H 7 #define _ASM_ARCH_CGC_H 8 9 enum cgc1_clk { 10 DUMMY0_CLK, 11 DUMMY1_CLK, 12 LPOSC, 13 XBAR_BUSCLK, 14 SOSC, 15 SOSC_DIV1, 16 SOSC_DIV2, 17 SOSC_DIV3, 18 FRO, 19 FRO_DIV1, 20 FRO_DIV2, 21 FRO_DIV3, 22 PLL2, 23 PLL3, 24 PLL3_VCODIV, 25 PLL3_PFD0, 26 PLL3_PFD1, 27 PLL3_PFD2, 28 PLL3_PFD3, 29 PLL3_PFD0_DIV1, 30 PLL3_PFD0_DIV2, 31 PLL3_PFD1_DIV1, 32 PLL3_PFD1_DIV2, 33 PLL3_PFD2_DIV1, 34 PLL3_PFD2_DIV2, 35 PLL3_PFD3_DIV1, 36 PLL3_PFD3_DIV2, 37 }; 38 39 struct cgc1_regs { 40 u32 verid; 41 u32 rsvd1[4]; 42 u32 ca35clk; 43 u32 rsvd2[2]; 44 u32 clkoutcfg; 45 u32 rsvd3[4]; 46 u32 nicclk; 47 u32 xbarclk; 48 u32 rsvd4[21]; 49 u32 clkdivrst; 50 u32 rsvd5[29]; 51 u32 soscdiv; 52 u32 rsvd6[63]; 53 u32 frodiv; 54 u32 rsvd7[189]; 55 u32 pll2csr; 56 u32 rsvd8[3]; 57 u32 pll2cfg; 58 u32 rsvd9; 59 u32 pll2denom; 60 u32 pll2num; 61 u32 pll2ss; 62 u32 rsvd10[55]; 63 u32 pll3csr; 64 u32 pll3div_vco; 65 u32 pll3div_pfd0; 66 u32 pll3div_pfd1; 67 u32 pll3cfg; 68 u32 pll3pfdcfg; 69 u32 pll3denom; 70 u32 pll3num; 71 u32 pll3ss; 72 u32 pll3lock; 73 u32 rsvd11[54]; 74 u32 enetstamp; 75 u32 rsvd12[67]; 76 u32 pllusbcfg; 77 u32 rsvd13[59]; 78 u32 aud_clk1; 79 u32 sai5_4_clk; 80 u32 tpm6_7clk; 81 u32 mqs1clk; 82 u32 rsvd14[60]; 83 u32 lvdscfg; 84 }; 85 86 struct cgc2_regs { 87 u32 verid; 88 u32 rsvd1[4]; 89 u32 hificlk; 90 u32 rsvd2[2]; 91 u32 clkoutcfg; 92 u32 rsvd3[6]; 93 u32 niclpavclk; 94 u32 ddrclk; 95 u32 rsvd4[19]; 96 u32 clkdivrst; 97 u32 rsvd5[29]; 98 u32 soscdiv; 99 u32 rsvd6[63]; 100 u32 frodiv; 101 u32 rsvd7[253]; 102 u32 pll4csr; 103 u32 pll4div_vco; 104 u32 pll4div_pfd0; 105 u32 pll4div_pfd1; 106 u32 pll4cfg; 107 u32 pll4pfdcfg; 108 u32 pll4denom; 109 u32 pll4num; 110 u32 pll4ss; 111 u32 pll4lock; 112 u32 rsvd8[128]; 113 u32 aud_clk2; 114 u32 sai7_6_clk; 115 u32 tpm8clk; 116 u32 rsvd9[1]; 117 u32 spdifclk; 118 u32 rsvd10[59]; 119 u32 lvdscfg; 120 }; 121 122 u32 cgc1_clk_get_rate(enum cgc1_clk clk); 123 void cgc1_pll3_init(void); 124 void cgc1_pll2_init(void); 125 void cgc1_soscdiv_init(void); 126 void cgc1_init_core_clk(void); 127 void cgc2_pll4_init(void); 128 void cgc2_ddrclk_config(u32 src, u32 div); 129 u32 cgc1_sosc_div(enum cgc1_clk clk); 130 #endif 131