xref: /rk3399_ARM-atf/plat/imx/imx8ulp/upower/upmu.h (revision 1c408d3c40abbe48064c1e2ef5224c1d6edca3cd)
1*fcd41e86SJacky Bai /*
2*fcd41e86SJacky Bai  * Copyright 2021-2024 NXP
3*fcd41e86SJacky Bai  *
4*fcd41e86SJacky Bai  * SPDX-License-Identifier: BSD-3-Clause
5*fcd41e86SJacky Bai  */
6*fcd41e86SJacky Bai 
7*fcd41e86SJacky Bai #ifndef MU_H
8*fcd41e86SJacky Bai #define MU_H
9*fcd41e86SJacky Bai 
10*fcd41e86SJacky Bai #include <stdint.h>
11*fcd41e86SJacky Bai 
12*fcd41e86SJacky Bai typedef volatile unsigned int vuint32_t;
13*fcd41e86SJacky Bai 
14*fcd41e86SJacky Bai /****************************************************************************/
15*fcd41e86SJacky Bai /*				MODULE: Message Unit			    */
16*fcd41e86SJacky Bai /****************************************************************************/
17*fcd41e86SJacky Bai /* VER Register */
18*fcd41e86SJacky Bai typedef union {
19*fcd41e86SJacky Bai 	vuint32_t R;
20*fcd41e86SJacky Bai 	struct {
21*fcd41e86SJacky Bai 		vuint32_t FEATURE : 16;
22*fcd41e86SJacky Bai 		vuint32_t MINOR : 8;
23*fcd41e86SJacky Bai 		vuint32_t MAJOR : 8;
24*fcd41e86SJacky Bai 	} B;
25*fcd41e86SJacky Bai } MU_VER_t;
26*fcd41e86SJacky Bai 
27*fcd41e86SJacky Bai /* PAR Register */
28*fcd41e86SJacky Bai typedef union {
29*fcd41e86SJacky Bai 	vuint32_t R;
30*fcd41e86SJacky Bai 	struct {
31*fcd41e86SJacky Bai 		vuint32_t TR_NUM : 8;
32*fcd41e86SJacky Bai 		vuint32_t RR_NUM : 8;
33*fcd41e86SJacky Bai 		vuint32_t GIR_NUM : 8;
34*fcd41e86SJacky Bai 		vuint32_t FLAG_WIDTH : 8;
35*fcd41e86SJacky Bai 	} B;
36*fcd41e86SJacky Bai } MU_PAR_t;
37*fcd41e86SJacky Bai 
38*fcd41e86SJacky Bai /* CR Register */
39*fcd41e86SJacky Bai typedef union  {
40*fcd41e86SJacky Bai 	vuint32_t R;
41*fcd41e86SJacky Bai 	struct {
42*fcd41e86SJacky Bai 		vuint32_t MUR : 1;
43*fcd41e86SJacky Bai 		vuint32_t MURIE : 1;
44*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
45*fcd41e86SJacky Bai 	} B;
46*fcd41e86SJacky Bai } MU_CR_t;
47*fcd41e86SJacky Bai 
48*fcd41e86SJacky Bai /* SR Register */
49*fcd41e86SJacky Bai typedef union {
50*fcd41e86SJacky Bai 	vuint32_t R;
51*fcd41e86SJacky Bai 	struct {
52*fcd41e86SJacky Bai 		vuint32_t MURS : 1;
53*fcd41e86SJacky Bai 		vuint32_t MURIP : 1;
54*fcd41e86SJacky Bai 		vuint32_t EP : 1;
55*fcd41e86SJacky Bai 		vuint32_t FUP : 1;
56*fcd41e86SJacky Bai 		vuint32_t GIRP : 1;
57*fcd41e86SJacky Bai 		vuint32_t TEP : 1;
58*fcd41e86SJacky Bai 		vuint32_t RFP : 1;
59*fcd41e86SJacky Bai 		vuint32_t CEP : 1;
60*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 24;
61*fcd41e86SJacky Bai 
62*fcd41e86SJacky Bai 	} B;
63*fcd41e86SJacky Bai } MU_SR_t;
64*fcd41e86SJacky Bai 
65*fcd41e86SJacky Bai /* CCR0 Register */
66*fcd41e86SJacky Bai typedef union {
67*fcd41e86SJacky Bai 	vuint32_t R;
68*fcd41e86SJacky Bai 	struct {
69*fcd41e86SJacky Bai 		vuint32_t NMI : 1;
70*fcd41e86SJacky Bai 		vuint32_t HR  : 1;
71*fcd41e86SJacky Bai 		vuint32_t HRM : 1;
72*fcd41e86SJacky Bai 		vuint32_t CLKE : 1;
73*fcd41e86SJacky Bai 		vuint32_t RSTH : 1;
74*fcd41e86SJacky Bai 		vuint32_t BOOT : 2;
75*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 25;
76*fcd41e86SJacky Bai 
77*fcd41e86SJacky Bai 	} B;
78*fcd41e86SJacky Bai } MU_CCR0_t;
79*fcd41e86SJacky Bai 
80*fcd41e86SJacky Bai /* CIER0 Register */
81*fcd41e86SJacky Bai typedef union {
82*fcd41e86SJacky Bai 	vuint32_t R;
83*fcd41e86SJacky Bai 	struct {
84*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 1;
85*fcd41e86SJacky Bai 		vuint32_t HRIE : 1;
86*fcd41e86SJacky Bai 		vuint32_t RUNIE : 1;
87*fcd41e86SJacky Bai 		vuint32_t RAIE : 1;
88*fcd41e86SJacky Bai 		vuint32_t HALTIE : 1;
89*fcd41e86SJacky Bai 		vuint32_t WAITIE : 1;
90*fcd41e86SJacky Bai 		vuint32_t STOPIE : 1;
91*fcd41e86SJacky Bai 		vuint32_t PDIE : 1;
92*fcd41e86SJacky Bai 		vuint32_t rsrv_2 : 24;
93*fcd41e86SJacky Bai 	} B;
94*fcd41e86SJacky Bai } MU_CIER0_t;
95*fcd41e86SJacky Bai 
96*fcd41e86SJacky Bai /* CSSR0 Register */
97*fcd41e86SJacky Bai typedef union {
98*fcd41e86SJacky Bai 	vuint32_t R;
99*fcd41e86SJacky Bai 	struct {
100*fcd41e86SJacky Bai 		vuint32_t NMIC : 1;
101*fcd41e86SJacky Bai 		vuint32_t HRIP : 1;
102*fcd41e86SJacky Bai 		vuint32_t RUN  : 1;
103*fcd41e86SJacky Bai 		vuint32_t RAIP : 1;
104*fcd41e86SJacky Bai 		vuint32_t HALT : 1;
105*fcd41e86SJacky Bai 		vuint32_t WAIT : 1;
106*fcd41e86SJacky Bai 		vuint32_t STOP : 1;
107*fcd41e86SJacky Bai 		vuint32_t PD : 1;
108*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 24;
109*fcd41e86SJacky Bai 	} B;
110*fcd41e86SJacky Bai } MU_CSSR0_t;
111*fcd41e86SJacky Bai 
112*fcd41e86SJacky Bai /* CSR0 Register */
113*fcd41e86SJacky Bai typedef union {
114*fcd41e86SJacky Bai 	vuint32_t R;
115*fcd41e86SJacky Bai 	struct {
116*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 1;
117*fcd41e86SJacky Bai 		vuint32_t HRIP : 1;
118*fcd41e86SJacky Bai 		vuint32_t RUN : 1;
119*fcd41e86SJacky Bai 		vuint32_t RAIP : 1;
120*fcd41e86SJacky Bai 		vuint32_t HALT : 1;
121*fcd41e86SJacky Bai 		vuint32_t WAIT : 1;
122*fcd41e86SJacky Bai 		vuint32_t STOP : 1;
123*fcd41e86SJacky Bai 		vuint32_t PD : 1;
124*fcd41e86SJacky Bai 		vuint32_t rsrv_2 : 24;
125*fcd41e86SJacky Bai 	} B;
126*fcd41e86SJacky Bai } MU_CSR0_t;
127*fcd41e86SJacky Bai 
128*fcd41e86SJacky Bai /* FCR Register */
129*fcd41e86SJacky Bai typedef union {
130*fcd41e86SJacky Bai 	vuint32_t R;
131*fcd41e86SJacky Bai 	struct {
132*fcd41e86SJacky Bai 		vuint32_t F0 : 1;
133*fcd41e86SJacky Bai 		vuint32_t F1 : 1;
134*fcd41e86SJacky Bai 		vuint32_t F2 : 1;
135*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 29;
136*fcd41e86SJacky Bai 	} B;
137*fcd41e86SJacky Bai } MU_FCR_t;
138*fcd41e86SJacky Bai 
139*fcd41e86SJacky Bai /* FSR Register */
140*fcd41e86SJacky Bai typedef union {
141*fcd41e86SJacky Bai 	vuint32_t R;
142*fcd41e86SJacky Bai 	struct {
143*fcd41e86SJacky Bai 		vuint32_t F0 : 1;
144*fcd41e86SJacky Bai 		vuint32_t F1 : 1;
145*fcd41e86SJacky Bai 		vuint32_t F2 : 1;
146*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 29;
147*fcd41e86SJacky Bai 	} B;
148*fcd41e86SJacky Bai } MU_FSR_t;
149*fcd41e86SJacky Bai 
150*fcd41e86SJacky Bai /* GIER Register */
151*fcd41e86SJacky Bai typedef union {
152*fcd41e86SJacky Bai 	vuint32_t R;
153*fcd41e86SJacky Bai 	struct {
154*fcd41e86SJacky Bai 		vuint32_t GIE0 : 1;
155*fcd41e86SJacky Bai 		vuint32_t GIE1 : 1;
156*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
157*fcd41e86SJacky Bai 	} B;
158*fcd41e86SJacky Bai } MU_GIER_t;
159*fcd41e86SJacky Bai 
160*fcd41e86SJacky Bai /* GCR Register */
161*fcd41e86SJacky Bai typedef union {
162*fcd41e86SJacky Bai 	vuint32_t R;
163*fcd41e86SJacky Bai 	struct {
164*fcd41e86SJacky Bai 		vuint32_t GIR0 : 1;
165*fcd41e86SJacky Bai 		vuint32_t GIR1 : 1;
166*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
167*fcd41e86SJacky Bai 	} B;
168*fcd41e86SJacky Bai } MU_GCR_t;
169*fcd41e86SJacky Bai 
170*fcd41e86SJacky Bai /* GSR Register */
171*fcd41e86SJacky Bai typedef union {
172*fcd41e86SJacky Bai 	vuint32_t R;
173*fcd41e86SJacky Bai 	struct {
174*fcd41e86SJacky Bai 		vuint32_t GIP0 : 1;
175*fcd41e86SJacky Bai 		vuint32_t GIP1 : 1;
176*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
177*fcd41e86SJacky Bai 	} B;
178*fcd41e86SJacky Bai } MU_GSR_t;
179*fcd41e86SJacky Bai 
180*fcd41e86SJacky Bai /* TCR Register */
181*fcd41e86SJacky Bai typedef union{
182*fcd41e86SJacky Bai 	vuint32_t R;
183*fcd41e86SJacky Bai 	struct {
184*fcd41e86SJacky Bai 		vuint32_t TIE0 : 1;
185*fcd41e86SJacky Bai 		vuint32_t TIE1 : 1;
186*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
187*fcd41e86SJacky Bai 	} B;
188*fcd41e86SJacky Bai } MU_TCR_t;
189*fcd41e86SJacky Bai 
190*fcd41e86SJacky Bai /* TSR Register */
191*fcd41e86SJacky Bai typedef union {
192*fcd41e86SJacky Bai 	vuint32_t R;
193*fcd41e86SJacky Bai 	struct {
194*fcd41e86SJacky Bai 		vuint32_t TE0 : 1;
195*fcd41e86SJacky Bai 		vuint32_t TE1 : 1;
196*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
197*fcd41e86SJacky Bai 	} B;
198*fcd41e86SJacky Bai } MU_TSR_t;
199*fcd41e86SJacky Bai 
200*fcd41e86SJacky Bai /* RCR Register */
201*fcd41e86SJacky Bai typedef union {
202*fcd41e86SJacky Bai 	vuint32_t R;
203*fcd41e86SJacky Bai 	struct {
204*fcd41e86SJacky Bai 		vuint32_t RIE0 : 1;
205*fcd41e86SJacky Bai 		vuint32_t RIE1 : 1;
206*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
207*fcd41e86SJacky Bai 	} B;
208*fcd41e86SJacky Bai } MU_RCR_t;
209*fcd41e86SJacky Bai 
210*fcd41e86SJacky Bai /* RSR Register */
211*fcd41e86SJacky Bai typedef union {
212*fcd41e86SJacky Bai 	vuint32_t R;
213*fcd41e86SJacky Bai 	struct {
214*fcd41e86SJacky Bai 		vuint32_t RF0 : 1;
215*fcd41e86SJacky Bai 		vuint32_t RF1 : 1;
216*fcd41e86SJacky Bai 		vuint32_t rsrv_1 : 30;
217*fcd41e86SJacky Bai 	} B;
218*fcd41e86SJacky Bai } MU_RSR_t;
219*fcd41e86SJacky Bai 
220*fcd41e86SJacky Bai /* TR0 Register */
221*fcd41e86SJacky Bai typedef union {
222*fcd41e86SJacky Bai 	vuint32_t R;
223*fcd41e86SJacky Bai 	struct {
224*fcd41e86SJacky Bai 		vuint32_t TR_DATA : 32;
225*fcd41e86SJacky Bai 	} B;
226*fcd41e86SJacky Bai } MU_TR0_t;
227*fcd41e86SJacky Bai 
228*fcd41e86SJacky Bai /* TR1 Register */
229*fcd41e86SJacky Bai typedef union {
230*fcd41e86SJacky Bai 	vuint32_t R;
231*fcd41e86SJacky Bai 	struct {
232*fcd41e86SJacky Bai 		vuint32_t TR_DATA : 32;
233*fcd41e86SJacky Bai 	} B;
234*fcd41e86SJacky Bai } MU_TR1_t;
235*fcd41e86SJacky Bai 
236*fcd41e86SJacky Bai /* RR0 Register */
237*fcd41e86SJacky Bai typedef union {
238*fcd41e86SJacky Bai 	vuint32_t R;
239*fcd41e86SJacky Bai 	struct {
240*fcd41e86SJacky Bai 		vuint32_t RR_DATA : 32;
241*fcd41e86SJacky Bai 	} B;
242*fcd41e86SJacky Bai } MU_RR0_t;
243*fcd41e86SJacky Bai 
244*fcd41e86SJacky Bai /* RR1 Register */
245*fcd41e86SJacky Bai typedef union {
246*fcd41e86SJacky Bai 	vuint32_t R;
247*fcd41e86SJacky Bai 	struct {
248*fcd41e86SJacky Bai 		vuint32_t RR_DATA : 32;
249*fcd41e86SJacky Bai 	} B;
250*fcd41e86SJacky Bai } MU_RR1_t;
251*fcd41e86SJacky Bai 
252*fcd41e86SJacky Bai struct MU_t {
253*fcd41e86SJacky Bai 	MU_VER_t VER;
254*fcd41e86SJacky Bai 	MU_PAR_t PAR;
255*fcd41e86SJacky Bai 	MU_CR_t CR;
256*fcd41e86SJacky Bai 	MU_SR_t SR;
257*fcd41e86SJacky Bai 	MU_CCR0_t CCR0;
258*fcd41e86SJacky Bai 	MU_CIER0_t CIER0;
259*fcd41e86SJacky Bai 	MU_CSSR0_t CSSR0;
260*fcd41e86SJacky Bai 	MU_CSR0_t CSR0;
261*fcd41e86SJacky Bai 	uint8_t MU_reserved0[224];
262*fcd41e86SJacky Bai 	MU_FCR_t FCR;
263*fcd41e86SJacky Bai 	MU_FSR_t FSR;
264*fcd41e86SJacky Bai 	uint8_t MU_reserved1[8];
265*fcd41e86SJacky Bai 	MU_GIER_t GIER;
266*fcd41e86SJacky Bai 	MU_GCR_t GCR;
267*fcd41e86SJacky Bai 	MU_GSR_t GSR;
268*fcd41e86SJacky Bai 	uint8_t MU_reserved2[4];
269*fcd41e86SJacky Bai 	MU_TCR_t TCR;
270*fcd41e86SJacky Bai 	MU_TSR_t TSR;
271*fcd41e86SJacky Bai 	MU_RCR_t RCR;
272*fcd41e86SJacky Bai 	MU_RSR_t RSR;
273*fcd41e86SJacky Bai 	uint8_t MU_reserved3[208];
274*fcd41e86SJacky Bai 	MU_TR0_t TR[2];
275*fcd41e86SJacky Bai 	uint8_t MU_reserved4[120];
276*fcd41e86SJacky Bai 	MU_RR0_t RR[2];
277*fcd41e86SJacky Bai };
278*fcd41e86SJacky Bai 
279*fcd41e86SJacky Bai #endif /* MU_H */
280