blob: 5127fe8f286c0623b0e128be04ed6dcc24f189cb [file] [log] [blame]
Peng Fanbbcd2c42022-07-26 16:40:39 +08001/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * Copyright 2022 NXP
4 */
5
6#ifndef __ASM_ARCH_IMX9_REGS_H__
7#define __ASM_ARCH_IMX9_REGS_H__
8
9#define ARCH_MXC
Peng Fan7aaa58a2022-07-26 16:41:18 +080010#define FEC_QUIRK_ENET_MAC
Peng Fanbbcd2c42022-07-26 16:40:39 +080011
Peng Fan28b5cb52022-07-26 16:40:43 +080012#define IOMUXC_BASE_ADDR 0x443C0000UL
13#define CCM_BASE_ADDR 0x44450000UL
14#define CCM_CCGR_BASE_ADDR 0x44458000UL
Jian Liacf41a32022-07-26 16:40:46 +080015#define SYSCNT_CTRL_BASE_ADDR 0x44290000
Peng Fanaca2f882025-04-28 18:37:34 +080016#define SYSCNT_CMP_BASE_ADDR (SYSCNT_CTRL_BASE_ADDR + 0x10000)
Peng Fan28b5cb52022-07-26 16:40:43 +080017
18#define ANATOP_BASE_ADDR 0x44480000UL
Peng Fanbbcd2c42022-07-26 16:40:39 +080019
Ye Li9e19ff92022-07-26 16:40:47 +080020#define WDG3_BASE_ADDR 0x42490000UL
21#define WDG4_BASE_ADDR 0x424a0000UL
22#define WDG5_BASE_ADDR 0x424b0000UL
23
Peng Fanaca2f882025-04-28 18:37:34 +080024#define GPIO2_BASE_ADDR 0x43810000UL
25#define GPIO3_BASE_ADDR 0x43820000UL
26#define GPIO4_BASE_ADDR 0x43840000UL
27#define GPIO5_BASE_ADDR 0x43850000UL
28
Alice Guob93916d2022-07-26 16:40:59 +080029#define FSB_BASE_ADDR 0x47510000UL
30
Peng Fan65563792022-07-26 16:41:02 +080031#define ANATOP_BASE_ADDR 0x44480000UL
32
33#define BLK_CTRL_WAKEUPMIX_BASE_ADDR 0x42420000
Ye Li0667ec92024-09-19 12:01:20 +080034#define BLK_CTRL_NS_ANOMIX_BASE_ADDR 0x44210000
Peng Fan65563792022-07-26 16:41:02 +080035#define BLK_CTRL_S_ANOMIX_BASE_ADDR 0x444f0000
36
37#define SRC_IPS_BASE_ADDR (0x44460000)
38#define SRC_GLOBAL_RBASE (SRC_IPS_BASE_ADDR + 0x0000)
39
40#define SRC_DDR_RBASE (SRC_IPS_BASE_ADDR + 0x1000)
41#define SRC_ML_RBASE (SRC_IPS_BASE_ADDR + 0x1800)
42#define SRC_MEDIA_RBASE (SRC_IPS_BASE_ADDR + 0x2400)
43#define SRC_M33P_RBASE (SRC_IPS_BASE_ADDR + 0x2800)
44
45#define SRC_MIX_SLICE_FUNC_STAT_PSW_STAT BIT(0)
46#define SRC_MIX_SLICE_FUNC_STAT_RST_STAT BIT(2)
47#define SRC_MIX_SLICE_FUNC_STAT_ISO_STAT BIT(4)
Peng Fan06e78ff2024-09-19 12:01:19 +080048#define SRC_MIX_SLICE_FUNC_STAT_SSAR_STAT BIT(8)
Peng Fan65563792022-07-26 16:41:02 +080049#define SRC_MIX_SLICE_FUNC_STAT_MEM_STAT BIT(12)
50
Ye Li1918a4c2023-01-30 18:39:52 +080051#define IMG_CONTAINER_BASE (0x80000000UL)
52
Peng Fan7aaa58a2022-07-26 16:41:18 +080053#define BCTRL_GPR_ENET_QOS_INTF_MODE_MASK GENMASK(3, 1)
54#define BCTRL_GPR_ENET_QOS_INTF_SEL_MII (0x0 << 1)
55#define BCTRL_GPR_ENET_QOS_INTF_SEL_RMII (0x4 << 1)
56#define BCTRL_GPR_ENET_QOS_INTF_SEL_RGMII (0x1 << 1)
57#define BCTRL_GPR_ENET_QOS_CLK_GEN_EN (0x1 << 0)
58
Peng Fan5dce3492024-09-19 12:01:35 +080059#define TRDC_AON_BASE (0x44270000UL)
60#define TRDC_WAKEUP_BASE (0x42460000UL)
61#define TRDC_MEGA_BASE (0x42810000UL)
62#define TRDC_NIC_BASE (0x49010000UL)
63
Peng Fan0c2f3682023-04-28 12:08:28 +080064#define MARKETING_GRADING_MASK GENMASK(5, 4)
65#define SPEED_GRADING_MASK GENMASK(11, 6)
Peng Fan43126e12024-09-19 12:01:23 +080066#define NUM_WORDS_PER_BANK 8
67#define HW_CFG1 19
68#define HW_CFG2 20
Peng Fan0c2f3682023-04-28 12:08:28 +080069
Peng Fan1e9aff12022-07-26 16:40:50 +080070#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
71#include <asm/types.h>
72#include <stdbool.h>
73
74struct mu_type {
75 u32 ver;
76 u32 par;
77 u32 cr;
78 u32 sr;
79 u32 reserved0[60];
80 u32 fcr;
81 u32 fsr;
82 u32 reserved1[2];
83 u32 gier;
84 u32 gcr;
85 u32 gsr;
86 u32 reserved2;
87 u32 tcr;
88 u32 tsr;
89 u32 rcr;
90 u32 rsr;
91 u32 reserved3[52];
92 u32 tr[16];
93 u32 reserved4[16];
94 u32 rr[16];
95 u32 reserved5[14];
96 u32 mu_attr;
97};
Peng Fan65563792022-07-26 16:41:02 +080098
99enum mix_power_domain {
100 MIX_PD_MEDIAMIX,
101 MIX_PD_MLMIX,
102 MIX_PD_DDRMIX,
103};
104
105enum src_mix_slice_id {
106 SRC_MIX_EDGELOCK = 0,
107 SRC_MIX_AONMIX = 1,
108 SRC_MIX_WAKEUPMIX = 2,
109 SRC_MIX_DDRMIX = 3,
110 SRC_MIX_DDRPHY = 4,
111 SRC_MIX_ML = 5,
112 SRC_MIX_NIC = 6,
113 SRC_MIX_HSIO = 7,
114 SRC_MIX_MEDIA = 8,
115 SRC_MIX_CM33 = 9,
116 SRC_MIX_CA55C0 = 10,
117 SRC_MIX_CA55C1 = 11,
118 SRC_MIX_CA55CLUSTER = 12,
119};
120
121enum src_mem_slice_id {
122 SRC_MEM_AONMIX = 0,
123 SRC_MEM_WAKEUPMIX = 1,
124 SRC_MEM_DDRMIX = 2,
125 SRC_MEM_DDRPHY = 3,
126 SRC_MEM_ML = 4,
127 SRC_MEM_NIC = 5,
128 SRC_MEM_OCRAM = 6,
129 SRC_MEM_HSIO = 7,
130 SRC_MEM_MEDIA = 8,
131 SRC_MEM_CA55C0 = 9,
132 SRC_MEM_CA55C1 = 10,
133 SRC_MEM_CA55CLUSTER = 11,
134 SRC_MEM_L3 = 12,
135};
136
137struct blk_ctrl_s_aonmix_regs {
138 u32 cm33_irq_mask[7];
139 u32 initnsvtor;
140 u32 reserved1[8];
141 u32 ca55_irq_mask[7];
142 u32 initsvtor;
143 u32 m33_cfg;
144 u32 reserved2[11];
145 u32 axbs_aon_ctrl;
146 u32 reserved3[27];
147 u32 dap_access_stkybit;
148 u32 reserved4[3];
149 u32 lp_handshake[2];
150 u32 ca55_cpuwait;
151 u32 ca55_rvbaraddr0_l;
152 u32 ca55_rvbaraddr0_h;
153 u32 ca55_rvbaraddr1_l;
154 u32 ca55_rvbaraddr1_h;
155 u32 s401_irq_mask;
156 u32 s401_reset_req_mask;
157 u32 s401_halt_st;
158 u32 ca55_mode;
159 u32 nmi_mask;
160 u32 nmi_clr;
161 u32 wdog_any_mask;
162 u32 s4v1_ipi_noclk_ref1;
163};
164
165struct blk_ctrl_wakeupmix_regs {
166 u32 upper_addr;
167 u32 ipg_debug_cm33;
168 u32 reserved[2];
169 u32 qch_dis;
170 u32 ssi;
171 u32 reserved1[1];
172 u32 dexsc_err;
173 u32 mqs_setting;
174 u32 sai_clk_sel;
175 u32 eqos_gpr;
176 u32 enet_clk_sel;
177 u32 reserved2[1];
178 u32 volt_detect;
179 u32 i3c2_wakeup;
180 u32 ipg_debug_ca55c0;
181 u32 ipg_debug_ca55c1;
182 u32 axi_attr_cfg;
183 u32 i3c2_sda_irq;
184};
185
186struct src_general_regs {
187 u32 reserved[1];
188 u32 authen_ctrl;
189 u32 reserved1[2];
190 u32 scr;
191 u32 srtmr;
192 u32 srmask;
193 u32 reserved2[1];
194 u32 srmr[6];
195 u32 reserved3[2];
196 u32 sbmr[2];
197 u32 reserved4[2];
198 u32 srsr;
199 u32 gpr[19];
200 u32 reserved5[24];
201 u32 gpr20;
202 u32 cm_quiesce;
203 u32 cold_reset_ssar_ack_ctrl;
204 u32 sp_iso_ctrl;
205 u32 rom_lp_ctrl;
206 u32 a55_deny_stat;
207};
208
209struct src_mem_slice_regs {
210 u32 reserved[1];
211 u32 mem_ctrl;
212 u32 memlp_ctrl_0;
213 u32 reserved1[1];
214 u32 memlp_ctrl_1;
215 u32 memlp_ctrl_2;
216 u32 mem_stat;
217};
218
219struct src_mix_slice_regs {
220 u32 reserved[1];
221 u32 authen_ctrl;
222 u32 reserved1[2];
223 u32 lpm_setting[3];
224 u32 reserved2[1];
225 u32 slice_sw_ctrl;
226 u32 single_reset_sw_ctrl;
227 u32 reserved3[6];
228 u32 a55_hdsk_ack_ctrl;
229 u32 a55_hdsk_ack_stat;
230 u32 reserved4[2];
231 u32 ssar_ack_ctrl;
232 u32 ssar_ack_stat;
233 u32 reserved5[1];
234 u32 iso_off_dly_por;
235 u32 iso_on_dly;
236 u32 iso_off_dly;
237 u32 psw_off_lf_dly;
238 u32 reserved6[1];
239 u32 psw_off_hf_dly;
240 u32 psw_on_lf_dly;
241 u32 psw_on_hf_dly;
242 u32 reserved7[1];
243 u32 psw_ack_ctrl[2];
244 u32 psw_ack_stat;
245 u32 reserved8[1];
246 u32 mtr_ack_ctrl;
247 u32 mtr_ack_stat;
248 u32 reserved9[2];
249 u32 upi_stat[4];
250 u32 fsm_stat;
251 u32 func_stat;
252};
Peng Fan1e9aff12022-07-26 16:40:50 +0800253#endif
254
Peng Fanbbcd2c42022-07-26 16:40:39 +0800255#endif