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