blob: a10034cc35a34d03cc25f3b7f1eeff820deed728 [file] [log] [blame]
Peng Fanb11a7342018-01-10 13:20:20 +08001/*
2 * Copyright 2017 NXP
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6
7#ifndef __ASM_ARCH_MX8M_REGS_H__
8#define __ASM_ARCH_MX8M_REGS_H__
9
10#include <asm/mach-imx/regs-lcdif.h>
11
12#define ROM_VERSION_A0 0x800
13#define ROM_VERSION_B0 0x83C
14
15#define M4_BOOTROM_BASE_ADDR 0x007E0000
16
17#define SAI1_BASE_ADDR 0x30010000
18#define SAI6_BASE_ADDR 0x30030000
19#define SAI5_BASE_ADDR 0x30040000
20#define SAI4_BASE_ADDR 0x30050000
21#define SPBA2_BASE_ADDR 0x300F0000
22#define AIPS1_BASE_ADDR 0x301F0000
23#define GPIO1_BASE_ADDR 0X30200000
24#define GPIO2_BASE_ADDR 0x30210000
25#define GPIO3_BASE_ADDR 0x30220000
26#define GPIO4_BASE_ADDR 0x30230000
27#define GPIO5_BASE_ADDR 0x30240000
28#define ANA_TSENSOR_BASE_ADDR 0x30260000
29#define ANA_OSC_BASE_ADDR 0x30270000
30#define WDOG1_BASE_ADDR 0x30280000
31#define WDOG2_BASE_ADDR 0x30290000
32#define WDOG3_BASE_ADDR 0x302A0000
33#define SDMA2_BASE_ADDR 0x302C0000
34#define GPT1_BASE_ADDR 0x302D0000
35#define GPT2_BASE_ADDR 0x302E0000
36#define GPT3_BASE_ADDR 0x302F0000
37#define ROMCP_BASE_ADDR 0x30310000
38#define LCDIF_BASE_ADDR 0x30320000
39#define IOMUXC_BASE_ADDR 0x30330000
40#define IOMUXC_GPR_BASE_ADDR 0x30340000
41#define OCOTP_BASE_ADDR 0x30350000
42#define ANATOP_BASE_ADDR 0x30360000
43#define SNVS_HP_BASE_ADDR 0x30370000
44#define CCM_BASE_ADDR 0x30380000
45#define SRC_BASE_ADDR 0x30390000
46#define GPC_BASE_ADDR 0x303A0000
47#define SEMAPHORE1_BASE_ADDR 0x303B0000
48#define SEMAPHORE2_BASE_ADDR 0x303C0000
49#define RDC_BASE_ADDR 0x303D0000
50#define CSU_BASE_ADDR 0x303E0000
51
52#define AIPS2_BASE_ADDR 0x305F0000
53#define PWM1_BASE_ADDR 0x30660000
54#define PWM2_BASE_ADDR 0x30670000
55#define PWM3_BASE_ADDR 0x30680000
56#define PWM4_BASE_ADDR 0x30690000
57#define SYSCNT_RD_BASE_ADDR 0x306A0000
58#define SYSCNT_CMP_BASE_ADDR 0x306B0000
59#define SYSCNT_CTRL_BASE_ADDR 0x306C0000
60#define GPT6_BASE_ADDR 0x306E0000
61#define GPT5_BASE_ADDR 0x306F0000
62#define GPT4_BASE_ADDR 0x30700000
63#define PERFMON1_BASE_ADDR 0x307C0000
64#define PERFMON2_BASE_ADDR 0x307D0000
65#define QOSC_BASE_ADDR 0x307F0000
66
67#define SPDIF1_BASE_ADDR 0x30810000
68#define ECSPI1_BASE_ADDR 0x30820000
69#define ECSPI2_BASE_ADDR 0x30830000
70#define ECSPI3_BASE_ADDR 0x30840000
71#define UART1_BASE_ADDR 0x30860000
72#define UART3_BASE_ADDR 0x30880000
73#define UART2_BASE_ADDR 0x30890000
74#define SPDIF2_BASE_ADDR 0x308A0000
75#define SAI2_BASE_ADDR 0x308B0000
76#define SAI3_BASE_ADDR 0x308C0000
77#define SPBA1_BASE_ADDR 0x308F0000
78#define CAAM_BASE_ADDR 0x30900000
79#define AIPS3_BASE_ADDR 0x309F0000
80#define MIPI_PHY_BASE_ADDR 0x30A00000
81#define MIPI_DSI_BASE_ADDR 0x30A10000
82#define I2C1_BASE_ADDR 0x30A20000
83#define I2C2_BASE_ADDR 0x30A30000
84#define I2C3_BASE_ADDR 0x30A40000
85#define I2C4_BASE_ADDR 0x30A50000
86#define UART4_BASE_ADDR 0x30A60000
87#define MIPI_CSI_BASE_ADDR 0x30A70000
88#define MIPI_CSI_PHY1_BASE_ADDR 0x30A80000
89#define CSI1_BASE_ADDR 0x30A90000
90#define MU_A_BASE_ADDR 0x30AA0000
91#define MU_B_BASE_ADDR 0x30AB0000
92#define SEMAPHOR_HS_BASE_ADDR 0x30AC0000
93#define USDHC1_BASE_ADDR 0x30B40000
94#define USDHC2_BASE_ADDR 0x30B50000
95#define MIPI_CS2_BASE_ADDR 0x30B60000
96#define MIPI_CSI_PHY2_BASE_ADDR 0x30B70000
97#define CSI2_BASE_ADDR 0x30B80000
98#define QSPI0_BASE_ADDR 0x30BB0000
99#define QSPI0_AMBA_BASE 0x08000000
100#define SDMA1_BASE_ADDR 0x30BD0000
101#define ENET1_BASE_ADDR 0x30BE0000
102
103#define HDMI_CTRL_BASE_ADDR 0x32C00000
104#define AIPS4_BASE_ADDR 0x32DF0000
105#define DC1_BASE_ADDR 0x32E00000
106#define DC2_BASE_ADDR 0x32E10000
107#define DC3_BASE_ADDR 0x32E20000
108#define HDMI_SEC_BASE_ADDR 0x32E40000
109#define TZASC_BASE_ADDR 0x32F80000
110#define MTR_BASE_ADDR 0x32FB0000
111#define PLATFORM_CTRL_BASE_ADDR 0x32FE0000
112
113#define MXS_APBH_BASE 0x33000000
114#define MXS_GPMI_BASE 0x33002000
115#define MXS_BCH_BASE 0x33004000
116
117#define USB1_BASE_ADDR 0x38100000
118#define USB2_BASE_ADDR 0x38200000
119#define USB1_PHY_BASE_ADDR 0x381F0000
120#define USB2_PHY_BASE_ADDR 0x382F0000
121
122#define MXS_LCDIF_BASE LCDIF_BASE_ADDR
123
124#define SRC_IPS_BASE_ADDR 0x30390000
125#define SRC_DDRC_RCR_ADDR 0x30391000
126#define SRC_DDRC2_RCR_ADDR 0x30391004
127
128#define DDRC_DDR_SS_GPR0 0x3d000000
129#define DDRC_IPS_BASE_ADDR(X) (0x3d400000 + ((X) * 0x2000000))
130#define DDR_CSD1_BASE_ADDR 0x40000000
131
132#if !defined(__ASSEMBLY__)
133#include <asm/types.h>
134#include <linux/bitops.h>
135#include <stdbool.h>
136
137#define GPR_TZASC_EN BIT(0)
138#define GPR_TZASC_EN_LOCK BIT(16)
139
140#define SRC_SCR_M4_ENABLE_OFFSET 3
141#define SRC_SCR_M4_ENABLE_MASK BIT(3)
142#define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 0
143#define SRC_SCR_M4C_NON_SCLR_RST_MASK BIT(0)
144#define SRC_DDR1_ENABLE_MASK 0x8F000000UL
145#define SRC_DDR2_ENABLE_MASK 0x8F000000UL
146#define SRC_DDR1_RCR_PHY_PWROKIN_N_MASK BIT(3)
147#define SRC_DDR1_RCR_PHY_RESET_MASK BIT(2)
148#define SRC_DDR1_RCR_CORE_RESET_N_MASK BIT(1)
149#define SRC_DDR1_RCR_PRESET_N_MASK BIT(0)
150
151struct iomuxc_gpr_base_regs {
152 u32 gpr[47];
153};
154
155struct ocotp_regs {
156 u32 ctrl;
157 u32 ctrl_set;
158 u32 ctrl_clr;
159 u32 ctrl_tog;
160 u32 timing;
161 u32 rsvd0[3];
162 u32 data;
163 u32 rsvd1[3];
164 u32 read_ctrl;
165 u32 rsvd2[3];
166 u32 read_fuse_data;
167 u32 rsvd3[3];
168 u32 sw_sticky;
169 u32 rsvd4[3];
170 u32 scs;
171 u32 scs_set;
172 u32 scs_clr;
173 u32 scs_tog;
174 u32 crc_addr;
175 u32 rsvd5[3];
176 u32 crc_value;
177 u32 rsvd6[3];
178 u32 version;
179 u32 rsvd7[0xdb];
180
181 /* fuse banks */
182 struct fuse_bank {
183 u32 fuse_regs[0x10];
184 } bank[0];
185};
186
187struct fuse_bank0_regs {
188 u32 lock;
189 u32 rsvd0[3];
190 u32 uid_low;
191 u32 rsvd1[3];
192 u32 uid_high;
193 u32 rsvd2[7];
194};
195
196struct fuse_bank1_regs {
197 u32 tester3;
198 u32 rsvd0[3];
199 u32 tester4;
200 u32 rsvd1[3];
201 u32 tester5;
202 u32 rsvd2[3];
203 u32 cfg0;
204 u32 rsvd3[3];
205};
206
207struct anamix_pll {
208 u32 audio_pll1_cfg0;
209 u32 audio_pll1_cfg1;
210 u32 audio_pll2_cfg0;
211 u32 audio_pll2_cfg1;
212 u32 video_pll_cfg0;
213 u32 video_pll_cfg1;
214 u32 gpu_pll_cfg0;
215 u32 gpu_pll_cfg1;
216 u32 vpu_pll_cfg0;
217 u32 vpu_pll_cfg1;
218 u32 arm_pll_cfg0;
219 u32 arm_pll_cfg1;
220 u32 sys_pll1_cfg0;
221 u32 sys_pll1_cfg1;
222 u32 sys_pll1_cfg2;
223 u32 sys_pll2_cfg0;
224 u32 sys_pll2_cfg1;
225 u32 sys_pll2_cfg2;
226 u32 sys_pll3_cfg0;
227 u32 sys_pll3_cfg1;
228 u32 sys_pll3_cfg2;
229 u32 video_pll2_cfg0;
230 u32 video_pll2_cfg1;
231 u32 video_pll2_cfg2;
232 u32 dram_pll_cfg0;
233 u32 dram_pll_cfg1;
234 u32 dram_pll_cfg2;
235 u32 digprog;
236 u32 osc_misc_cfg;
237 u32 pllout_monitor_cfg;
238 u32 frac_pllout_div_cfg;
239 u32 sscg_pllout_div_cfg;
240};
241
242struct fuse_bank9_regs {
243 u32 mac_addr0;
244 u32 rsvd0[3];
245 u32 mac_addr1;
246 u32 rsvd1[11];
247};
248
249/* System Reset Controller (SRC) */
250struct src {
251 u32 scr;
252 u32 a53rcr;
253 u32 a53rcr1;
254 u32 m4rcr;
255 u32 reserved1[4];
256 u32 usbophy1_rcr;
257 u32 usbophy2_rcr;
258 u32 mipiphy_rcr;
259 u32 pciephy_rcr;
260 u32 hdmi_rcr;
261 u32 disp_rcr;
262 u32 reserved2[2];
263 u32 gpu_rcr;
264 u32 vpu_rcr;
265 u32 pcie2_rcr;
266 u32 mipiphy1_rcr;
267 u32 mipiphy2_rcr;
268 u32 reserved3;
269 u32 sbmr1;
270 u32 srsr;
271 u32 reserved4[2];
272 u32 sisr;
273 u32 simr;
274 u32 sbmr2;
275 u32 gpr1;
276 u32 gpr2;
277 u32 gpr3;
278 u32 gpr4;
279 u32 gpr5;
280 u32 gpr6;
281 u32 gpr7;
282 u32 gpr8;
283 u32 gpr9;
284 u32 gpr10;
285 u32 reserved5[985];
286 u32 ddr1_rcr;
287 u32 ddr2_rcr;
288};
289
290struct gpc_reg {
291 u32 lpcr_bsc;
292 u32 lpcr_ad;
293 u32 lpcr_cpu1;
294 u32 lpcr_cpu2;
295 u32 lpcr_cpu3;
296 u32 slpcr;
297 u32 mst_cpu_mapping;
298 u32 mmdc_cpu_mapping;
299 u32 mlpcr;
300 u32 pgc_ack_sel;
301 u32 pgc_ack_sel_m4;
302 u32 gpc_misc;
303 u32 imr1_core0;
304 u32 imr2_core0;
305 u32 imr3_core0;
306 u32 imr4_core0;
307 u32 imr1_core1;
308 u32 imr2_core1;
309 u32 imr3_core1;
310 u32 imr4_core1;
311 u32 imr1_cpu1;
312 u32 imr2_cpu1;
313 u32 imr3_cpu1;
314 u32 imr4_cpu1;
315 u32 imr1_cpu3;
316 u32 imr2_cpu3;
317 u32 imr3_cpu3;
318 u32 imr4_cpu3;
319 u32 isr1_cpu0;
320 u32 isr2_cpu0;
321 u32 isr3_cpu0;
322 u32 isr4_cpu0;
323 u32 isr1_cpu1;
324 u32 isr2_cpu1;
325 u32 isr3_cpu1;
326 u32 isr4_cpu1;
327 u32 isr1_cpu2;
328 u32 isr2_cpu2;
329 u32 isr3_cpu2;
330 u32 isr4_cpu2;
331 u32 isr1_cpu3;
332 u32 isr2_cpu3;
333 u32 isr3_cpu3;
334 u32 isr4_cpu3;
335 u32 slt0_cfg;
336 u32 slt1_cfg;
337 u32 slt2_cfg;
338 u32 slt3_cfg;
339 u32 slt4_cfg;
340 u32 slt5_cfg;
341 u32 slt6_cfg;
342 u32 slt7_cfg;
343 u32 slt8_cfg;
344 u32 slt9_cfg;
345 u32 slt10_cfg;
346 u32 slt11_cfg;
347 u32 slt12_cfg;
348 u32 slt13_cfg;
349 u32 slt14_cfg;
350 u32 pgc_cpu_0_1_mapping;
351 u32 cpu_pgc_up_trg;
352 u32 mix_pgc_up_trg;
353 u32 pu_pgc_up_trg;
354 u32 cpu_pgc_dn_trg;
355 u32 mix_pgc_dn_trg;
356 u32 pu_pgc_dn_trg;
357 u32 lpcr_bsc2;
358 u32 pgc_cpu_2_3_mapping;
359 u32 lps_cpu0;
360 u32 lps_cpu1;
361 u32 lps_cpu2;
362 u32 lps_cpu3;
363 u32 gpc_gpr;
364 u32 gtor;
365 u32 debug_addr1;
366 u32 debug_addr2;
367 u32 cpu_pgc_up_status1;
368 u32 mix_pgc_up_status0;
369 u32 mix_pgc_up_status1;
370 u32 mix_pgc_up_status2;
371 u32 m4_mix_pgc_up_status0;
372 u32 m4_mix_pgc_up_status1;
373 u32 m4_mix_pgc_up_status2;
374 u32 pu_pgc_up_status0;
375 u32 pu_pgc_up_status1;
376 u32 pu_pgc_up_status2;
377 u32 m4_pu_pgc_up_status0;
378 u32 m4_pu_pgc_up_status1;
379 u32 m4_pu_pgc_up_status2;
380 u32 a53_lp_io_0;
381 u32 a53_lp_io_1;
382 u32 a53_lp_io_2;
383 u32 cpu_pgc_dn_status1;
384 u32 mix_pgc_dn_status0;
385 u32 mix_pgc_dn_status1;
386 u32 mix_pgc_dn_status2;
387 u32 m4_mix_pgc_dn_status0;
388 u32 m4_mix_pgc_dn_status1;
389 u32 m4_mix_pgc_dn_status2;
390 u32 pu_pgc_dn_status0;
391 u32 pu_pgc_dn_status1;
392 u32 pu_pgc_dn_status2;
393 u32 m4_pu_pgc_dn_status0;
394 u32 m4_pu_pgc_dn_status1;
395 u32 m4_pu_pgc_dn_status2;
396 u32 res[3];
397 u32 mix_pdn_flg;
398 u32 pu_pdn_flg;
399 u32 m4_mix_pdn_flg;
400 u32 m4_pu_pdn_flg;
401 u32 imr1_core2;
402 u32 imr2_core2;
403 u32 imr3_core2;
404 u32 imr4_core2;
405 u32 imr1_core3;
406 u32 imr2_core3;
407 u32 imr3_core3;
408 u32 imr4_core3;
409 u32 pgc_ack_sel_pu;
410 u32 pgc_ack_sel_m4_pu;
411 u32 slt15_cfg;
412 u32 slt16_cfg;
413 u32 slt17_cfg;
414 u32 slt18_cfg;
415 u32 slt19_cfg;
416 u32 gpc_pu_pwrhsk;
417 u32 slt0_cfg_pu;
418 u32 slt1_cfg_pu;
419 u32 slt2_cfg_pu;
420 u32 slt3_cfg_pu;
421 u32 slt4_cfg_pu;
422 u32 slt5_cfg_pu;
423 u32 slt6_cfg_pu;
424 u32 slt7_cfg_pu;
425 u32 slt8_cfg_pu;
426 u32 slt9_cfg_pu;
427 u32 slt10_cfg_pu;
428 u32 slt11_cfg_pu;
429 u32 slt12_cfg_pu;
430 u32 slt13_cfg_pu;
431 u32 slt14_cfg_pu;
432 u32 slt15_cfg_pu;
433 u32 slt16_cfg_pu;
434 u32 slt17_cfg_pu;
435 u32 slt18_cfg_pu;
436 u32 slt19_cfg_pu;
437};
438
439#define WDOG_WDT_MASK BIT(3)
440#define WDOG_WDZST_MASK BIT(0)
441struct wdog_regs {
442 u16 wcr; /* Control */
443 u16 wsr; /* Service */
444 u16 wrsr; /* Reset Status */
445 u16 wicr; /* Interrupt Control */
446 u16 wmcr; /* Miscellaneous Control */
447};
448
449struct bootrom_sw_info {
450 u8 reserved_1;
451 u8 boot_dev_instance;
452 u8 boot_dev_type;
453 u8 reserved_2;
454 u32 core_freq;
455 u32 axi_freq;
456 u32 ddr_freq;
457 u32 tick_freq;
458 u32 reserved_3[3];
459};
460
461#define ROM_SW_INFO_ADDR_B0 0x00000968
462#define ROM_SW_INFO_ADDR_A0 0x000009e8
463
464#define ROM_SW_INFO_ADDR is_soc_rev(CHIP_REV_1_0) ? \
465 (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_A0 : \
466 (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_B0
467#endif
468#endif