blob: 34a15fb59c52296691fbb46434d5688ca21a3906 [file] [log] [blame]
Peng Fan690eea12021-08-07 16:00:45 +08001/* 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
9enum 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
39struct 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
86struct 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
122u32 cgc1_clk_get_rate(enum cgc1_clk clk);
123void cgc1_pll3_init(void);
124void cgc1_pll2_init(void);
125void cgc1_soscdiv_init(void);
126void cgc1_init_core_clk(void);
127void cgc2_pll4_init(void);
128void cgc2_ddrclk_config(u32 src, u32 div);
129u32 cgc1_sosc_div(enum cgc1_clk clk);
130#endif