1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (C) ASPEED Technology Inc.
4  */
5 
6 #ifndef _ASM_ARCH_SCU_AST2600_H
7 #define _ASM_ARCH_SCU_AST2600_H
8 
9 #define AST2600_CLK_IN	25000000
10 
11 struct ast2600_clk_priv {
12 	struct ast2600_scu *scu;
13 	int dly32_lookup[2][32];
14 };
15 
16 struct hw_strap {
17 	u32 hwstrap;			/* 0x500 */
18 	u32 hwstrap_clr;		/* 0x504 */
19 	u32 hwstrap_protect;		/* 0x508 */
20 };
21 
22 struct ast2600_scu {
23 	u32 protection_key;		/* 0x000 */
24 	u32 chip_id0;			/* 0x004 */
25 	u32 reserve_0x08;		/* 0x008 */
26 	u32 reserve_0x0C;		/* 0x00C */
27 	u32 reserve_0x10;		/* 0x010 */
28 	u32 chip_id1;			/* 0x014 */
29 	u32 reserve_0x18;		/* 0x018 */
30 	u32 reserve_0x1C;		/* 0x01C */
31 	u32 reserve_0x20;		/* 0x020 */
32 	u32 reserve_0x24;		/* 0x024 */
33 	u32 reserve_0x28;		/* 0x028 */
34 	u32 reserve_0x2c;		/* 0x02C */
35 	u32 reserve_0x30;		/* 0x030 */
36 	u32 reserve_0x34;		/* 0x034 */
37 	u32 reserve_0x38;		/* 0x038 */
38 	u32 reserve_0x3C;		/* 0x03C */
39 	u32 sysreset_ctrl1;		/* 0x040 */
40 	u32 sysreset_clr_ctrl1;		/* 0x044 */
41 	u32 reserve_0x48;		/* 0x048 */
42 	u32 reserve_0x4C;		/* 0x04C */
43 	u32 sysreset_ctrl2;		/* 0x050 */
44 	u32 sysreset_clr_ctrl2;		/* 0x054 */
45 	u32 reserve_0x58;		/* 0x058 */
46 	u32 reserve_0x5C;		/* 0x05C */
47 	u32 extrst_sel1;		/* 0x060 */
48 	u32 sysrst_evet_log1_1;		/* 0x064 */
49 	u32 sysrst_evet_log1_2;		/* 0x068 */
50 	u32 reserve_0x6C;		/* 0x06C */
51 	u32 extrst_sel2;		/* 0x070 */
52 	u32 sysrst_evet_log2_1;		/* 0x074 */
53 	u32 sysrst_evet_log2_2;		/* 0x078 */
54 	u32 reserve_0x7C;		/* 0x07C */
55 	u32 clk_stop_ctrl1;		/* 0x080 */
56 	u32 clk_stop_clr_ctrl1;		/* 0x084 */
57 	u32 reserve_0x88;		/* 0x088 */
58 	u32 reserve_0x8C;		/* 0x08C */
59 	u32 clk_stop_ctrl2;		/* 0x090 */
60 	u32 clk_stop_clr_ctrl2;		/* 0x094 */
61 	u32 reserve_0x98;		/* 0x098 */
62 	u32 reserve_0x9C;		/* 0x09C */
63 	u32 reserve_0xA0;		/* 0x0A0 */
64 	u32 reserve_0xA4;		/* 0x0A4 */
65 	u32 reserve_0xA8;		/* 0x0A8 */
66 	u32 reserve_0xAC;		/* 0x0AC */
67 	u32 reserve_0xB0;		/* 0x0B0 */
68 	u32 reserve_0xB4;		/* 0x0B4 */
69 	u32 reserve_0xB8;		/* 0x0B8 */
70 	u32 reserve_0xBC;		/* 0x0BC */
71 	u32 misc_ctrl1;			/* 0x0C0 */
72 	u32 misc_ctrl2;			/* 0x0C4 */
73 	u32 backdoor_ctrl;		/* 0x0C8 */
74 	u32 reserve_0xCC;		/* 0x0CC */
75 	u32 misc_ctrl3;			/* 0x0D0 */
76 	u32 misc_ctrl4;			/* 0x0D4 */
77 	u32 reserve_0xD8;		/* 0x0D8 */
78 	u32 reserve_0xDC;		/* 0x0DC */
79 	u32 reserve_0xE0;		/* 0x0E0 */
80 	u32 reserve_0xE4;		/* 0x0E4 */
81 	u32 reserve_0xE8;		/* 0x0E8 */
82 	u32 reserve_0xEC;		/* 0x0EC */
83 	u32 reserve_0xF0;		/* 0x0F0 */
84 	u32 reserve_0xF4;		/* 0x0F4 */
85 	u32 reserve_0xF8;		/* 0x0F8 */
86 	u32 reserve_0xFC;		/* 0x0FC */
87 	u32 soc_scratch[4];		/* 0x100 */
88 	u32 reserve_0x110;		/* 0x110 */
89 	u32 reserve_0x114;		/* 0x114 */
90 	u32 reserve_0x118;		/* 0x118 */
91 	u32 reserve_0x11C;		/* 0x11C */
92 	u32 cpu_scratch_wp;		/* 0x120 */
93 	u32 reserve_0x124[23];		/* 0x124 */
94 	u32 cpu_scratch[32];		/* 0x180 */
95 	u32 h_pll_param;		/* 0x200 */
96 	u32 h_pll_ext_param;		/* 0x204 */
97 	u32 reserve_0x208;		/* 0x208 */
98 	u32 reserve_0x20C;		/* 0x20C */
99 	u32 a_pll_param;		/* 0x210 */
100 	u32 a_pll_ext_param;		/* 0x214 */
101 	u32 reserve_0x218;		/* 0x218 */
102 	u32 reserve_0x21C;		/* 0x21C */
103 	u32 m_pll_param;		/* 0x220 */
104 	u32 m_pll_ext_param;		/* 0x224 */
105 	u32 reserve_0x228;		/* 0x228 */
106 	u32 reserve_0x22C;		/* 0x22C */
107 	u32 reserve_0x230[4];		/* 0x230 */
108 	u32 e_pll_param;		/* 0x240 */
109 	u32 e_pll_ext_param;		/* 0x244 */
110 	u32 reserve_0x248;		/* 0x248 */
111 	u32 reserve_0x24C;		/* 0x24C */
112 	u32 reserve_0x250[4];		/* 0x250 */
113 	u32 d_pll_param;		/* 0x260 */
114 	u32 d_pll_ext_param;		/* 0x264 */
115 	u32 reserve_0x268;		/* 0x268 */
116 	u32 reserve_0x26C;		/* 0x26C */
117 	u32 reserve_0x270[36];		/* 0x270 */
118 	u32 clk_sel1;			/* 0x300 */
119 	u32 clk_sel2;			/* 0x304 */
120 	u32 clk_sel3;			/* 0x308 */
121 	u32 reserve_0x30C;		/* 0x30C */
122 	u32 clk_sel4;			/* 0x310 */
123 	u32 clk_sel5;			/* 0x314 */
124 	u32 reserve_0x318;		/* 0x318 */
125 	u32 reserve_0x31C;		/* 0x31C */
126 	u32 freq_counter_ctrl1;		/* 0x320 */
127 	u32 freq_counter_cmp1;		/* 0x324 */
128 	u32 reserve_0x328;		/* 0x328 */
129 	u32 uart_24m_ref_hpll;		/* 0x32C */
130 	u32 freq_counter_ctrl2;		/* 0x330 */
131 	u32 freq_counter_cmp2;		/* 0x334 */
132 	u32 uart_24m_ref_uxclk;		/* 0x338 */
133 	u32 uart_24m_ref_huxclk;	/* 0x33C */
134 	u32 mac12_clk_delay;		/* 0x340 */
135 	u32 reserve_0x344;		/* 0x344 */
136 	u32 mac12_clk_delay_100M;	/* 0x348 */
137 	u32 mac12_clk_delay_10M;	/* 0x34c */
138 	u32 mac34_clk_delay;		/* 0x350 */
139 	u32 reserve_0x354;		/* 0x354 */
140 	u32 mac34_clk_delay_100M;	/* 0x358 */
141 	u32 mac34_clk_delay_10M;	/* 0x35c */
142 	u32 clk_duty_meas_ctrl;		/* 0x360 */
143 	u32 clk_duty_sel0;		/* 0x364 */
144 	u32 clk_duty_sel1;		/* 0x368 */
145 	u32 clk_duty_meas_res;		/* 0x36C */
146 	u32 clk_duty_meas_ctr2;		/* 0x370 */
147 	u32 clk_duty_sel2;		/* 0x374 */
148 	u32 reserve_0x378[34];		/* 0x378 ~ 0x3fc */
149 	u32 pinmux_ctrl1;		/* 0x400 */
150 	u32 pinmux_ctrl2;		/* 0x404 */
151 	u32 reserve_0x408;		/* 0x408 */
152 	u32 pinmux_ctrl3;		/* 0x40C */
153 	u32 pinmux_ctrl4;		/* 0x410 */
154 	u32 pinmux_ctrl5;		/* 0x414 */
155 	u32 pinmux_ctrl6;		/* 0x418 */
156 	u32 pinmux_ctrl7;		/* 0x41C */
157 	u32 reserve_0x420[4];		/* 0x420 ~ 0x42c */
158 	u32 pinmux_ctrl8;		/* 0x430 */
159 	u32 pinmux_ctrl9;		/* 0x434 */
160 	u32 pinmux_ctrl10;		/* 0x438 */
161 	u32 reserve_0x43c;		/* 0x43c */
162 	u32 pinmux_ctrl12;		/* 0x440 */
163 	u32 pinmux_ctrl13;		/* 0x444 */
164 	u32 reserv_0x448[2];		/* 0x448 ~ 0x44c */
165 	u32 pinmux_ctrl14;		/* 0x450 */
166 	u32 pinmux_ctrl15;		/* 0x454 */
167 	u32 pinmux_ctrl16;		/* 0x458 */
168 	u32 reserv_0x45c[21];		/* 0x45c ~ 0x4ac */
169 	u32 pinmux_ctrl17;		/* 0x4b0 */
170 	u32 pinmux_ctrl18;		/* 0x4b4 */
171 	u32 pinmux_ctrl19;		/* 0x4b8 */
172 	u32 pinmux_ctrl20;		/* 0x4bc */
173 	u32 reserv_0x4c0[5];		/* 0x4c0 ~ 0x4d0 */
174 	u32 pinmux_ctrl22;		/* 0x4d4 */
175 	u32 pinmux_ctrl23;		/* 0x4d8 */
176 	u32 reserv_0x4dc[9];		/* 0x4dc ~ 0x4fc */
177 	struct hw_strap hwstrap1;	/* 0x500 */
178 	u32 reserve_0x50C;		/* 0x50C */
179 	struct hw_strap hwstrap2;	/* 0x510 */
180 	u32 reserve_0x51C;		/* 0x51C */
181 	u32 rng_ctrl;			/* 0x520 */
182 	u32 rng_data;			/* 0x524 */
183 	u32 reserve_0x528[6];		/* 0x528 */
184 	u32 pwr_save_wakeup_en1;	/* 0x540 */
185 	u32 pwr_save_wakeup_ctrl1;	/* 0x544 */
186 	u32 reserve_0x548[2];		/* 0x548 */
187 	u32 pwr_save_wakeup_en2;	/* 0x550 */
188 	u32 pwr_save_wakeup_ctrl2;	/* 0x554 */
189 	u32 reserve_0x558[2];		/* 0x558 */
190 	u32 intr1_ctrl_sts;		/* 0x560 */
191 	u32 reserve_0x564[3];		/* 0x564 */
192 	u32 intr2_ctrl_sts;		/* 0x570 */
193 	u32 reserve_0x574[3];		/* 0x574 */
194 	u32 reserve_0x580[4];		/* 0x580 */
195 	u32 opt_ctrl;			/* 0x590 */
196 	u32 hw_config;			/* 0x594 */
197 	u32 reserve_0x598[6];		/* 0x598 */
198 	u32 chip_unique_id[8];		/* 0x5B0 */
199 	u32 reserve_0x5E0[8];		/* 0x5E0 */
200 	u32 disgpio_in_pull_down0;	/* 0x610 */
201 	u32 disgpio_in_pull_down1;	/* 0x614 */
202 	u32 disgpio_in_pull_down2;	/* 0x618 */
203 	u32 disgpio_in_pull_down3;	/* 0x61C */
204 	u32 reserve_0x620[4];		/* 0x620 */
205 	u32 disgpio_in_pull_down4;	/* 0x630 */
206 	u32 disgpio_in_pull_down5;	/* 0x634 */
207 	u32 disgpio_in_pull_down6;	/* 0x638 */
208 	u32 reserve_0x63C[5];		/* 0x63Cs */
209 	u32 sli_driving_strength;	/* 0x650 */
210 	u32 reserve_0x654[235];		/* 0x654 */
211 	u32 cm3_ctrl;			/* 0xA00 */
212 	u32 cm3_base;			/* 0xA04 */
213 	u32 cm3_instr_mem_addr;		/* 0xA08 */
214 	u32 cm3_data_mem_addr;		/* 0xA0C */
215 	u32 reserve_0xA10[12];		/* 0xA10 */
216 	u32 cm3_cache_area;		/* 0xA40 */
217 	u32 cm3_cache_invalid_ctrl;	/* 0xA44 */
218 	u32 cm3_cache_fun_ctrl;		/* 0xA48 */
219 	u32 reserve_0xA4C[108];		/* 0xA4C */
220 	u32 pci_config[3];		/* 0xC00 */
221 	u32 reserve_0xC0C[5];		/* 0xC0C */
222 	u32 pcie_config;		/* 0xC20 */
223 	u32 mmio_decode;		/* 0xC24 */
224 	u32 reloc_ctrl_decode[2];	/* 0xC28 */
225 	u32 reserve_0xC30[4];		/* 0xC30 */
226 	u32 mailbox_addr;		/* 0xC40 */
227 	u32 shared_sram_decode[2];	/* 0xC44 */
228 	u32 bmc_rev_id;			/* 0xC4C */
229 	u32 reserve_0xC50[5];		/* 0xC50 */
230 	u32 bmc_device_id;		/* 0xC64 */
231 	u32 reserve_0xC68[102];		/* 0xC68 */
232 	u32 vga_scratch[8];		/* 0xE00 */
233 };
234 
235 #endif  /* _ASM_ARCH_SCU_AST2600_H */
236