1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25#include "qemu/osdep.h"
26#include "hw/sysbus.h"
27#include "hw/register.h"
28#include "qemu/bitops.h"
29#include "qemu/log.h"
30
31#ifndef XLNX_LPD_GPV_ERR_DEBUG
32#define XLNX_LPD_GPV_ERR_DEBUG 0
33#endif
34
35#define TYPE_XLNX_LPD_GPV "xlnx.lpd-gpv"
36
37#define XLNX_LPD_GPV(obj) \
38 OBJECT_CHECK(XlnxLPDGPVState, (obj), TYPE_XLNX_LPD_GPV)
39
40REG32(PERIPH_ID_4, 0x01FD0)
41REG32(PERIPH_ID_5, 0x01FD4)
42REG32(PERIPH_ID_6, 0x01FD8)
43REG32(PERIPH_ID_7, 0x01FDC)
44REG32(PERIPH_ID_0, 0x01FE0)
45REG32(PERIPH_ID_1, 0x01FE4)
46REG32(PERIPH_ID_2, 0x01FE8)
47REG32(PERIPH_ID_3, 0x01FEC)
48REG32(COMP_ID_0, 0x01FF0)
49REG32(COMP_ID_1, 0x01FF4)
50REG32(COMP_ID_2, 0x01FF8)
51REG32(COMP_ID_3, 0x01FFC)
52REG32(INTLPD_OCM_FN_MOD_ISS_BM, 0x2008)
53REG32(INTLPD_RPUS0_FN_MOD_ISS_BM, 0x05008)
54REG32(INTLPD_RPUS1_FN_MOD_ISS_BM, 0x06008)
55REG32(INTLPD_USB0S_FN_MOD_ISS_BM, 0x07008)
56REG32(INTLPD_USB1S_FN_MOD_ISS_BM, 0x08008)
57REG32(INTLPD_AFIFS2_FN_MOD_ISS_BM, 0x09008)
58REG32(INTLPD_INTIOU_IB_FN_MOD_ISS_BM, 0x0A008)
59REG32(INTLPD_INTIOU_IB_FN_MOD, 0x0A108)
60REG32(SLAVE_11_IB_FN_MOD_ISS_BM, 0x0D008)
61REG32(RPUM0_INTLPD_READ_QOS, 0x42100)
62REG32(RPUM0_INTLPD_WRITE_QOS, 0x42104)
63REG32(RPUM0_INTLPD_FN_MOD, 0x42108)
64REG32(RPUM0_INTLPD_QOS_CTNL, 0x4210C)
65REG32(RPUM0_INTLPD_MAX_OT, 0x42110)
66REG32(RPUM0_INTLPD_MAX_COMB_OT, 0x42114)
67REG32(RPUM0_INTLPD_AW_P, 0x42118)
68REG32(RPUM0_INTLPD_AW_B, 0x4211C)
69REG32(RPUM0_INTLPD_AW_R, 0x42120)
70REG32(RPUM0_INTLPD_AR_P, 0x42124)
71REG32(RPUM0_INTLPD_AR_B, 0x42128)
72REG32(RPUM0_INTLPD_AR_R, 0x4212C)
73REG32(RPUM1_INTLPD_READ_QOS, 0x43100)
74REG32(RPUM1_INTLPD_WRITE_QOS, 0x43104)
75REG32(RPUM1_INTLPD_FN_MOD, 0x43108)
76REG32(RPUM1_INTLPD_QOS_CTNL, 0x4310C)
77REG32(RPUM1_INTLPD_MAX_OT, 0x43110)
78REG32(RPUM1_INTLPD_MAX_COMB_OT, 0x43114)
79REG32(RPUM1_INTLPD_AW_P, 0x43118)
80REG32(RPUM1_INTLPD_AW_B, 0x4311C)
81REG32(RPUM1_INTLPD_AW_R, 0x43120)
82REG32(RPUM1_INTLPD_AR_P, 0x43124)
83REG32(RPUM1_INTLPD_AR_B, 0x43128)
84REG32(RPUM1_INTLPD_AR_R, 0x4312C)
85REG32(ADMAM_INTLPD_IB_FN_MOD2, 0x00044024)
86REG32(ADMAM_INTLPD_IB_FN_MOD, 0x00044108)
87REG32(ADMAM_INTLPD_IB_QOS_CNTL, 0x0004410C)
88REG32(ADMAM_INTLPD_IB_MAX_OT, 0x00044110)
89REG32(ADMAM_INTLPD_IB_MAX_COMB_OT, 0x00044114)
90REG32(ADMAM_INTLPD_IB_AW_P, 0x00044118)
91REG32(ADMAM_INTLPD_IB_AW_B, 0x0004411C)
92REG32(ADMAM_INTLPD_IB_AW_R, 0x00044120)
93REG32(ADMAM_INTLPD_IB_AR_P, 0x00044124)
94REG32(ADMAM_INTLPD_IB_AR_B, 0x00044128)
95REG32(ADMAM_INTLPD_IB_AR_R, 0x0004412C)
96REG32(AFIFM6M_INTLPD_IB_FN_MOD, 0x00045108)
97REG32(AFIFM6M_INTLPD_IB_QOS_CNTL, 0x0004510C)
98REG32(AFIFM6M_INTLPD_IB_MAX_OT, 0x00045110)
99REG32(AFIFM6M_INTLPD_IB_MAX_COMB_OT, 0x00045114)
100REG32(AFIFM6M_INTLPD_IB_AW_P, 0x00045118)
101REG32(AFIFM6M_INTLPD_IB_AW_B, 0x0004511C)
102REG32(AFIFM6M_INTLPD_IB_AW_R, 0x00045120)
103REG32(AFIFM6M_INTLPD_IB_AR_P, 0x00045124)
104REG32(AFIFM6M_INTLPD_IB_AR_B, 0x00045128)
105REG32(AFIFM6M_INTLPD_IB_AR_R, 0x0004512C)
106REG32(DAP_INTLPD_IB_FN_MOD2, 0x00047024)
107REG32(DAP_INTLPD_IB_READ_QOS, 0x00047100)
108REG32(DAP_INTLPD_IB_WRITE_QOS, 0x00047104)
109REG32(DAP_INTLPD_IB_FN_MOD, 0x00047108)
110REG32(DAP_INTLPD_IB_QOS_CNTL, 0x0004710C)
111REG32(DAP_INTLPD_IB_MAX_OT, 0x00047110)
112REG32(DAP_INTLPD_IB_MAX_COMB_OT, 0x00047114)
113REG32(DAP_INTLPD_IB_AW_P, 0x00047118)
114REG32(DAP_INTLPD_IB_AW_B, 0x0004711C)
115REG32(DAP_INTLPD_IB_AW_R, 0x00047120)
116REG32(DAP_INTLPD_IB_AR_P, 0x00047124)
117REG32(DAP_INTLPD_IB_AR_B, 0x00047128)
118REG32(DAP_INTLPD_IB_AR_R, 0x0004712C)
119REG32(USB0M_INTLPD_IB_READ_QOS, 0x00048100)
120REG32(USB0M_INTLPD_IB_WRITE_QOS, 0x00048104)
121REG32(USB0M_INTLPD_IB_FN_MOD, 0x00048108)
122REG32(USB0M_INTLPD_IB_QOS_CNTL, 0x0004810C)
123REG32(USB0M_INTLPD_IB_MAX_OT, 0x00048110)
124REG32(USB0M_INTLPD_IB_MAX_COMB_OT, 0x00048114)
125REG32(USB0M_INTLPD_IB_AW_P, 0x00048118)
126REG32(USB0M_INTLPD_IB_AW_B, 0x0004811C)
127REG32(USB0M_INTLPD_IB_AW_R, 0x00048120)
128REG32(USB0M_INTLPD_IB_AR_P, 0x00048124)
129REG32(USB0M_INTLPD_IB_AR_B, 0x00048128)
130REG32(USB0M_INTLPD_IB_AR_R, 0x0004812C)
131REG32(USB1M_INTLPD_IB_READ_QOS, 0x00049100)
132REG32(USB1M_INTLPD_IB_WRITE_QOS, 0x00049104)
133REG32(USB1M_INTLPD_IB_FN_MOD, 0x00049108)
134REG32(USB1M_INTLPD_IB_QOS_CNTL, 0x0004910C)
135REG32(USB1M_INTLPD_IB_MAX_OT, 0x00049110)
136REG32(USB1M_INTLPD_IB_MAX_COMB_OT, 0x00049114)
137REG32(USB1M_INTLPD_IB_AW_P, 0x00049118)
138REG32(USB1M_INTLPD_IB_AW_B, 0x0004911C)
139REG32(USB1M_INTLPD_IB_AW_R, 0x00049120)
140REG32(USB1M_INTLPD_IB_AR_P, 0x00049124)
141REG32(USB1M_INTLPD_IB_AR_B, 0x00049128)
142REG32(USB1M_INTLPD_IB_AR_R, 0x0004912C)
143REG32(INTIOU_INTLPD_IB_FN_MOD, 0x0004A108)
144REG32(INTIOU_INTLPD_IB_QOS_CNTL, 0x0004A10C)
145REG32(INTIOU_INTLPD_IB_MAX_OT, 0x0004A110)
146REG32(INTIOU_INTLPD_IB_MAX_COMB_OT, 0x0004A114)
147REG32(INTIOU_INTLPD_IB_AW_P, 0x0004A118)
148REG32(INTIOU_INTLPD_IB_AW_B, 0x0004A11C)
149REG32(INTIOU_INTLPD_IB_AW_R, 0x0004A120)
150REG32(INTIOU_INTLPD_IB_AR_P, 0x0004A124)
151REG32(INTIOU_INTLPD_IB_AR_B, 0x0004A128)
152REG32(INTIOU_INTLPD_IB_AR_R, 0x0004A12C)
153REG32(INTCSUPMU_INTLPD_IB_FN_MOD, 0x0004B108)
154REG32(INTCSUPMU_INTLPD_IB_QOS_CNTL, 0x0004B10C)
155REG32(INTCSUPMU_INTLPD_IB_MAX_OT, 0x0004B110)
156REG32(INTCSUPMU_INTLPD_IB_MAX_COMB_OT, 0x0004B114)
157REG32(INTCSUPMU_INTLPD_IB_AW_P, 0x0004B118)
158REG32(INTCSUPMU_INTLPD_IB_AW_B, 0x0004B11C)
159REG32(INTCSUPMU_INTLPD_IB_AW_R, 0x0004B120)
160REG32(INTCSUPMU_INTLPD_IB_AR_P, 0x0004B124)
161REG32(INTCSUPMU_INTLPD_IB_AR_B, 0x0004B128)
162REG32(INTCSUPMU_INTLPD_IB_AR_R, 0x0004B12C)
163REG32(INTLPDINBOUND_INTLPDMAIN_FN_MOD, 0x0004C108)
164REG32(INTLPDINBOUND_INTLPDMAIN_QOS_CNTL, 0x0004C10C)
165REG32(INTLPDINBOUND_INTLPDMAIN_MAX_OT, 0x0004C110)
166REG32(INTLPDINBOUND_INTLPDMAIN_MAX_COMB_OT, 0x0004C114)
167REG32(INTLPDINBOUND_INTLPDMAIN_AW_P, 0x0004C118)
168REG32(INTLPDINBOUND_INTLPDMAIN_AW_B, 0x0004C11C)
169REG32(INTLPDINBOUND_INTLPDMAIN_AW_R, 0x0004C120)
170REG32(INTLPDINBOUND_INTLPDMAIN_AR_P, 0x0004C124)
171REG32(INTLPDINBOUND_INTLPDMAIN_AR_B, 0x0004C128)
172REG32(INTLPDINBOUND_INTLPDMAIN_AR_R, 0x0004C12C)
173REG32(INTFPD_INTLPDOCM_FN_MOD, 0x0004D108)
174REG32(INTFPD_INTLPDOCM_QOS_CNTL, 0x0004D10C)
175REG32(INTFPD_INTLPDOCM_MAX_OT, 0x0004D110)
176REG32(INTFPD_INTLPDOCM_MAX_COMB_OT, 0x0004D114)
177REG32(INTFPD_INTLPDOCM_AW_P, 0x0004D118)
178REG32(INTFPD_INTLPDOCM_AW_B, 0x0004D11C)
179REG32(INTFPD_INTLPDOCM_AW_R, 0x0004D120)
180REG32(INTFPD_INTLPDOCM_AR_P, 0x0004D124)
181REG32(INTFPD_INTLPDOCM_AR_B, 0x0004D128)
182REG32(INTFPD_INTLPDOCM_AR_R, 0x0004D12C)
183REG32(IB9_FN_MOD_ISS_BM, 0x000C2008)
184REG32(IB9_FN_MOD, 0x000C2108)
185REG32(IB5_FN_MOD_ISS_BM, 0x000C3008)
186REG32(IB5_FN_MOD2, 0x000C3024)
187REG32(IB5_FN_MOD, 0x000C3108)
188REG32(IB5_QOS_CNTL, 0x000C310C)
189REG32(IB5_MAX_OT, 0x000C3110)
190REG32(IB5_MAX_COMB_OT, 0x000C3114)
191REG32(IB5_AW_P, 0x000C3118)
192REG32(IB5_AW_B, 0x000C311C)
193REG32(IB5_AW_R, 0x000C3120)
194REG32(IB5_AR_P, 0x000C3124)
195REG32(IB5_AR_B, 0x000C3128)
196REG32(IB5_AR_R, 0x000C312C)
197REG32(IB6_FN_MOD_ISS_BM, 0x000C4008)
198REG32(IB6_FN_MOD2, 0x000C4024)
199REG32(IB6_FN_MOD, 0x000C4108)
200REG32(IB6_QOS_CNTL, 0x000C410C)
201REG32(IB6_MAX_OT, 0x000C4110)
202REG32(IB6_MAX_COMB_OT, 0x000C4114)
203REG32(IB6_AW_P, 0x000C4118)
204REG32(IB6_AW_B, 0x000C411C)
205REG32(IB6_AW_R, 0x000C4120)
206REG32(IB6_AR_P, 0x000C4124)
207REG32(IB6_AR_B, 0x000C4128)
208REG32(IB6_AR_R, 0x000C412C)
209REG32(IB8_FN_MOD_ISS_BM, 0x000C5008)
210REG32(IB8_FN_MOD2, 0x000C5024)
211REG32(IB8_FN_MOD, 0x000C5108)
212REG32(IB8_QOS_CNTL, 0x000C510C)
213REG32(IB8_MAX_OT, 0x000C5110)
214REG32(IB8_MAX_COMB_OT, 0x000C5114)
215REG32(IB8_AW_P, 0x000C5118)
216REG32(IB8_AW_B, 0x000C511C)
217REG32(IB8_AW_R, 0x000C5120)
218REG32(IB8_AR_P, 0x000C5124)
219REG32(IB8_AR_B, 0x000C5128)
220REG32(IB8_AR_R, 0x000C512C)
221REG32(IB0_FN_MOD_ISS_BM, 0x000C6008)
222REG32(IB0_FN_MOD2, 0x000C6024)
223REG32(IB0_FN_MOD, 0x000C6108)
224REG32(IB0_QOS_CNTL, 0x000C610C)
225REG32(IB0_MAX_OT, 0x000C6110)
226REG32(IB0_MAX_COMB_OT, 0x000C6114)
227REG32(IB0_AW_P, 0x000C6118)
228REG32(IB0_AW_B, 0x000C611C)
229REG32(IB0_AW_R, 0x000C6120)
230REG32(IB0_AR_P, 0x000C6124)
231REG32(IB0_AR_B, 0x000C6128)
232REG32(IB0_AR_R, 0x000C612C)
233REG32(IB11_FN_MOD_ISS_BM, 0x000C7008)
234REG32(IB11_FN_MOD2, 0x000C7024)
235REG32(IB11_FN_MOD, 0x000C7108)
236REG32(IB11_QOS_CNTL, 0x000C710C)
237REG32(IB11_MAX_OT, 0x000C7110)
238REG32(IB11_MAX_COMB_OT, 0x000C7114)
239REG32(IB11_AW_P, 0x000C7118)
240REG32(IB11_AW_B, 0x000C711C)
241REG32(IB11_AW_R, 0x000C7120)
242REG32(IB11_AR_P, 0x000C7124)
243REG32(IB11_AR_B, 0x000C7128)
244REG32(IB11_AR_R, 0x000C712C)
245REG32(IB12_FN_MOD_ISS_BM, 0x000C8008)
246REG32(IB12_FN_MOD2, 0x000C8024)
247REG32(IB12_FN_MOD, 0x000C8108)
248REG32(IB12_QOS_CNTL, 0x000C810C)
249REG32(IB12_MAX_OT, 0x000C8110)
250REG32(IB12_MAX_COMB_OT, 0x000C8114)
251REG32(IB12_AW_P, 0x000C8118)
252REG32(IB12_AW_B, 0x000C811C)
253REG32(IB12_AW_R, 0x000C8120)
254REG32(IB12_AR_P, 0x000C8124)
255REG32(IB12_AR_B, 0x000C8128)
256REG32(IB12_AR_R, 0x000C812C)
257
258#define R_MAX (R_IB12_AR_R + 1)
259
260typedef struct XlnxLPDGPVState {
261 SysBusDevice parent_obj;
262 MemoryRegion iomem;
263 qemu_irq irq_isr;
264
265 uint32_t regs[R_MAX];
266 RegisterInfo regs_info[R_MAX];
267} XlnxLPDGPVState;
268
269static RegisterAccessInfo lpd_gpv_regs_info[] = {
270 { .name = "PERIPH_ID_4", .decode.addr = A_PERIPH_ID_4,
271 .reset = 0x00000004, .ro = 0xFFFFFFFF,
272 },{ .name = "PERIPH_ID_5", .decode.addr = A_PERIPH_ID_5,
273 .reset = 0, .ro = 0xFFFFFFFF,
274 },{ .name = "PERIPH_ID_6", .decode.addr = A_PERIPH_ID_6,
275 .reset = 0, .ro = 0xFFFFFFFF,
276 },{ .name = "PERIPH_ID_7", .decode.addr = A_PERIPH_ID_7,
277 .reset = 0, .ro = 0xFFFFFFFF,
278 },{ .name = "PERIPH_ID_0", .decode.addr = A_PERIPH_ID_0,
279 .reset = 0, .ro = 0xFFFFFFFF,
280 },{ .name = "PERIPH_ID_1", .decode.addr = A_PERIPH_ID_1,
281 .reset = 0x000000B4, .ro = 0xFFFFFFFF,
282 },{ .name = "PERIPH_ID_2", .decode.addr = A_PERIPH_ID_2,
283 .reset = 0x0000002B, .ro = 0xFFFFFFFF,
284 },{ .name = "PERIPH_ID_3", .decode.addr = A_PERIPH_ID_3,
285 .reset = 0, .ro = 0xFFFFFFFF,
286 },{ .name = "COMP_ID_0", .decode.addr = A_COMP_ID_0,
287 .reset = 0x0000000D, .ro = 0xFFFFFFFF,
288 },{ .name = "COMP_ID_1", .decode.addr = A_COMP_ID_1,
289 .reset = 0x000000F0, .ro = 0xFFFFFFFF,
290 },{ .name = "COMP_ID_2", .decode.addr = A_COMP_ID_2,
291 .reset = 0x00000005, .ro = 0xFFFFFFFF,
292 },{ .name = "COMP_ID_3", .decode.addr = A_COMP_ID_3,
293 .reset = 0x000000B1, .ro = 0xFFFFFFFF,
294 },{ .name = "INTLPD_OCM_FN_MOD_ISS_BM",
295 .decode.addr = A_INTLPD_OCM_FN_MOD_ISS_BM,
296 .reset = 0,
297 },{ .name = "INTLPD_RPUS0_FN_MOD_ISS_BM",
298 .decode.addr = A_INTLPD_RPUS0_FN_MOD_ISS_BM,
299 .reset = 0,
300 },{ .name = "INTLPD_RPUS1_FN_MOD_ISS_BM",
301 .decode.addr = A_INTLPD_RPUS1_FN_MOD_ISS_BM,
302 .reset = 0,
303 },{ .name = "INTLPD_USB0S_FN_MOD_ISS_BM",
304 .decode.addr = A_INTLPD_USB0S_FN_MOD_ISS_BM,
305 .reset = 0,
306 },{ .name = "INTLPD_USB1S_FN_MOD_ISS_BM",
307 .decode.addr = A_INTLPD_USB1S_FN_MOD_ISS_BM,
308 .reset = 0,
309 },{ .name = "INTLPD_AFIFS2_FN_MOD_ISS_BM",
310 .decode.addr = A_INTLPD_AFIFS2_FN_MOD_ISS_BM,
311 .reset = 0,
312 },{ .name = "INTLPD_INTIOU_IB_FN_MOD_ISS_BM",
313 .decode.addr = A_INTLPD_INTIOU_IB_FN_MOD_ISS_BM,
314 .reset = 0,
315 },{ .name = "INTLPD_INTIOU_IB_FN_MOD",
316 .decode.addr = A_INTLPD_INTIOU_IB_FN_MOD,
317 .reset = 0,
318 },{ .name = "SLAVE_11_IB_FN_MOD_ISS_BM",
319 .decode.addr = A_SLAVE_11_IB_FN_MOD_ISS_BM,
320 .reset = 0,
321 },{ .name = "RPUM0_INTLPD_READ_QOS",
322 .decode.addr = A_RPUM0_INTLPD_READ_QOS,
323 .reset = 0,
324 },{ .name = "RPUM0_INTLPD_WRITE_QOS",
325 .decode.addr = A_RPUM0_INTLPD_WRITE_QOS,
326 .reset = 0,
327 },{ .name = "RPUM0_INTLPD_FN_MOD",
328 .decode.addr = A_RPUM0_INTLPD_FN_MOD,
329 .reset = 0,
330 },{ .name = "RPUM0_INTLPD_QOS_CTNL",
331 .decode.addr = A_RPUM0_INTLPD_QOS_CTNL,
332 .reset = 0,
333 },{ .name = "RPUM0_INTLPD_MAX_OT", .decode.addr = A_RPUM0_INTLPD_MAX_OT,
334 .reset = 0,
335 },{ .name = "RPUM0_INTLPD_MAX_COMB_OT",
336 .decode.addr = A_RPUM0_INTLPD_MAX_COMB_OT,
337 .reset = 0,
338 },{ .name = "RPUM0_INTLPD_AW_P", .decode.addr = A_RPUM0_INTLPD_AW_P,
339 .reset = 0,
340 },{ .name = "RPUM0_INTLPD_AW_B", .decode.addr = A_RPUM0_INTLPD_AW_B,
341 .reset = 0,
342 },{ .name = "RPUM0_INTLPD_AW_R", .decode.addr = A_RPUM0_INTLPD_AW_R,
343 .reset = 0,
344 },{ .name = "RPUM0_INTLPD_AR_P", .decode.addr = A_RPUM0_INTLPD_AR_P,
345 .reset = 0,
346 },{ .name = "RPUM0_INTLPD_AR_B", .decode.addr = A_RPUM0_INTLPD_AR_B,
347 .reset = 0,
348 },{ .name = "RPUM0_INTLPD_AR_R", .decode.addr = A_RPUM0_INTLPD_AR_R,
349 .reset = 0,
350 },{ .name = "RPUM1_INTLPD_READ_QOS",
351 .decode.addr = A_RPUM1_INTLPD_READ_QOS,
352 .reset = 0,
353 },{ .name = "RPUM1_INTLPD_WRITE_QOS",
354 .decode.addr = A_RPUM1_INTLPD_WRITE_QOS,
355 .reset = 0,
356 },{ .name = "RPUM1_INTLPD_FN_MOD", .decode.addr = A_RPUM1_INTLPD_FN_MOD,
357 .reset = 0,
358 },{ .name = "RPUM1_INTLPD_QOS_CTNL",
359 .decode.addr = A_RPUM1_INTLPD_QOS_CTNL,
360 .reset = 0,
361 },{ .name = "RPUM1_INTLPD_MAX_OT", .decode.addr = A_RPUM1_INTLPD_MAX_OT,
362 .reset = 0,
363 },{ .name = "RPUM1_INTLPD_MAX_COMB_OT",
364 .decode.addr = A_RPUM1_INTLPD_MAX_COMB_OT,
365 .reset = 0,
366 },{ .name = "RPUM1_INTLPD_AW_P", .decode.addr = A_RPUM1_INTLPD_AW_P,
367 .reset = 0,
368 },{ .name = "RPUM1_INTLPD_AW_B", .decode.addr = A_RPUM1_INTLPD_AW_B,
369 .reset = 0,
370 },{ .name = "RPUM1_INTLPD_AW_R", .decode.addr = A_RPUM1_INTLPD_AW_R,
371 .reset = 0,
372 },{ .name = "RPUM1_INTLPD_AR_P", .decode.addr = A_RPUM1_INTLPD_AR_P,
373 .reset = 0,
374 },{ .name = "RPUM1_INTLPD_AR_B", .decode.addr = A_RPUM1_INTLPD_AR_B,
375 .reset = 0,
376 },{ .name = "RPUM1_INTLPD_AR_R", .decode.addr = A_RPUM1_INTLPD_AR_R,
377 .reset = 0,
378 },{ .name = "ADMAM_INTLPD_IB_FN_MOD2",
379 .decode.addr = A_ADMAM_INTLPD_IB_FN_MOD2,
380 .reset = 0,
381 },{ .name = "ADMAM_INTLPD_IB_FN_MOD",
382 .decode.addr = A_ADMAM_INTLPD_IB_FN_MOD,
383 .reset = 0,
384 },{ .name = "ADMAM_INTLPD_IB_QOS_CNTL",
385 .decode.addr = A_ADMAM_INTLPD_IB_QOS_CNTL,
386 .reset = 0,
387 },{ .name = "ADMAM_INTLPD_IB_MAX_OT",
388 .decode.addr = A_ADMAM_INTLPD_IB_MAX_OT,
389 .reset = 0,
390 },{ .name = "ADMAM_INTLPD_IB_MAX_COMB_OT",
391 .decode.addr = A_ADMAM_INTLPD_IB_MAX_COMB_OT,
392 .reset = 0,
393 },{ .name = "ADMAM_INTLPD_IB_AW_P", .decode.addr = A_ADMAM_INTLPD_IB_AW_P,
394 .reset = 0,
395 },{ .name = "ADMAM_INTLPD_IB_AW_B", .decode.addr = A_ADMAM_INTLPD_IB_AW_B,
396 .reset = 0,
397 },{ .name = "ADMAM_INTLPD_IB_AW_R", .decode.addr = A_ADMAM_INTLPD_IB_AW_R,
398 .reset = 0,
399 },{ .name = "ADMAM_INTLPD_IB_AR_P", .decode.addr = A_ADMAM_INTLPD_IB_AR_P,
400 .reset = 0,
401 },{ .name = "ADMAM_INTLPD_IB_AR_B", .decode.addr = A_ADMAM_INTLPD_IB_AR_B,
402 .reset = 0,
403 },{ .name = "ADMAM_INTLPD_IB_AR_R", .decode.addr = A_ADMAM_INTLPD_IB_AR_R,
404 .reset = 0,
405 },{ .name = "AFIFM6M_INTLPD_IB_FN_MOD",
406 .decode.addr = A_AFIFM6M_INTLPD_IB_FN_MOD,
407 .reset = 0,
408 },{ .name = "AFIFM6M_INTLPD_IB_QOS_CNTL",
409 .decode.addr = A_AFIFM6M_INTLPD_IB_QOS_CNTL,
410 .reset = 0,
411 },{ .name = "AFIFM6M_INTLPD_IB_MAX_OT",
412 .decode.addr = A_AFIFM6M_INTLPD_IB_MAX_OT,
413 .reset = 0,
414 },{ .name = "AFIFM6M_INTLPD_IB_MAX_COMB_OT",
415 .decode.addr = A_AFIFM6M_INTLPD_IB_MAX_COMB_OT,
416 .reset = 0,
417 },{ .name = "AFIFM6M_INTLPD_IB_AW_P",
418 .decode.addr = A_AFIFM6M_INTLPD_IB_AW_P,
419 .reset = 0,
420 },{ .name = "AFIFM6M_INTLPD_IB_AW_B",
421 .decode.addr = A_AFIFM6M_INTLPD_IB_AW_B,
422 .reset = 0,
423 },{ .name = "AFIFM6M_INTLPD_IB_AW_R",
424 .decode.addr = A_AFIFM6M_INTLPD_IB_AW_R,
425 .reset = 0,
426 },{ .name = "AFIFM6M_INTLPD_IB_AR_P",
427 .decode.addr = A_AFIFM6M_INTLPD_IB_AR_P,
428 .reset = 0,
429 },{ .name = "AFIFM6M_INTLPD_IB_AR_B",
430 .decode.addr = A_AFIFM6M_INTLPD_IB_AR_B,
431 .reset = 0,
432 },{ .name = "AFIFM6M_INTLPD_IB_AR_R",
433 .decode.addr = A_AFIFM6M_INTLPD_IB_AR_R,
434 .reset = 0,
435 },{ .name = "DAP_INTLPD_IB_FN_MOD2",
436 .decode.addr = A_DAP_INTLPD_IB_FN_MOD2,
437 .reset = 0,
438 },{ .name = "DAP_INTLPD_IB_READ_QOS",
439 .decode.addr = A_DAP_INTLPD_IB_READ_QOS,
440 .reset = 0,
441 },{ .name = "DAP_INTLPD_IB_WRITE_QOS",
442 .decode.addr = A_DAP_INTLPD_IB_WRITE_QOS,
443 .reset = 0,
444 },{ .name = "DAP_INTLPD_IB_FN_MOD", .decode.addr = A_DAP_INTLPD_IB_FN_MOD,
445 .reset = 0,
446 },{ .name = "DAP_INTLPD_IB_QOS_CNTL",
447 .decode.addr = A_DAP_INTLPD_IB_QOS_CNTL,
448 .reset = 0,
449 },{ .name = "DAP_INTLPD_IB_MAX_OT", .decode.addr = A_DAP_INTLPD_IB_MAX_OT,
450 .reset = 0,
451 },{ .name = "DAP_INTLPD_IB_MAX_COMB_OT",
452 .decode.addr = A_DAP_INTLPD_IB_MAX_COMB_OT,
453 .reset = 0,
454 },{ .name = "DAP_INTLPD_IB_AW_P", .decode.addr = A_DAP_INTLPD_IB_AW_P,
455 .reset = 0,
456 },{ .name = "DAP_INTLPD_IB_AW_B", .decode.addr = A_DAP_INTLPD_IB_AW_B,
457 .reset = 0,
458 },{ .name = "DAP_INTLPD_IB_AW_R", .decode.addr = A_DAP_INTLPD_IB_AW_R,
459 .reset = 0,
460 },{ .name = "DAP_INTLPD_IB_AR_P", .decode.addr = A_DAP_INTLPD_IB_AR_P,
461 .reset = 0,
462 },{ .name = "DAP_INTLPD_IB_AR_B", .decode.addr = A_DAP_INTLPD_IB_AR_B,
463 .reset = 0,
464 },{ .name = "DAP_INTLPD_IB_AR_R", .decode.addr = A_DAP_INTLPD_IB_AR_R,
465 .reset = 0,
466 },{ .name = "USB0M_INTLPD_IB_READ_QOS",
467 .decode.addr = A_USB0M_INTLPD_IB_READ_QOS,
468 .reset = 0,
469 },{ .name = "USB0M_INTLPD_IB_WRITE_QOS",
470 .decode.addr = A_USB0M_INTLPD_IB_WRITE_QOS,
471 .reset = 0,
472 },{ .name = "USB0M_INTLPD_IB_FN_MOD",
473 .decode.addr = A_USB0M_INTLPD_IB_FN_MOD,
474 .reset = 0,
475 },{ .name = "USB0M_INTLPD_IB_QOS_CNTL",
476 .decode.addr = A_USB0M_INTLPD_IB_QOS_CNTL,
477 .reset = 0,
478 },{ .name = "USB0M_INTLPD_IB_MAX_OT",
479 .decode.addr = A_USB0M_INTLPD_IB_MAX_OT,
480 .reset = 0,
481 },{ .name = "USB0M_INTLPD_IB_MAX_COMB_OT",
482 .decode.addr = A_USB0M_INTLPD_IB_MAX_COMB_OT,
483 .reset = 0,
484 },{ .name = "USB0M_INTLPD_IB_AW_P", .decode.addr = A_USB0M_INTLPD_IB_AW_P,
485 .reset = 0,
486 },{ .name = "USB0M_INTLPD_IB_AW_B", .decode.addr = A_USB0M_INTLPD_IB_AW_B,
487 .reset = 0,
488 },{ .name = "USB0M_INTLPD_IB_AW_R", .decode.addr = A_USB0M_INTLPD_IB_AW_R,
489 .reset = 0,
490 },{ .name = "USB0M_INTLPD_IB_AR_P", .decode.addr = A_USB0M_INTLPD_IB_AR_P,
491 .reset = 0,
492 },{ .name = "USB0M_INTLPD_IB_AR_B", .decode.addr = A_USB0M_INTLPD_IB_AR_B,
493 .reset = 0,
494 },{ .name = "USB0M_INTLPD_IB_AR_R", .decode.addr = A_USB0M_INTLPD_IB_AR_R,
495 .reset = 0,
496 },{ .name = "USB1M_INTLPD_IB_READ_QOS",
497 .decode.addr = A_USB1M_INTLPD_IB_READ_QOS,
498 .reset = 0,
499 },{ .name = "USB1M_INTLPD_IB_WRITE_QOS",
500 .decode.addr = A_USB1M_INTLPD_IB_WRITE_QOS,
501 .reset = 0,
502 },{ .name = "USB1M_INTLPD_IB_FN_MOD",
503 .decode.addr = A_USB1M_INTLPD_IB_FN_MOD,
504 .reset = 0,
505 },{ .name = "USB1M_INTLPD_IB_QOS_CNTL",
506 .decode.addr = A_USB1M_INTLPD_IB_QOS_CNTL,
507 .reset = 0,
508 },{ .name = "USB1M_INTLPD_IB_MAX_OT",
509 .decode.addr = A_USB1M_INTLPD_IB_MAX_OT,
510 .reset = 0,
511 },{ .name = "USB1M_INTLPD_IB_MAX_COMB_OT",
512 .decode.addr = A_USB1M_INTLPD_IB_MAX_COMB_OT,
513 .reset = 0,
514 },{ .name = "USB1M_INTLPD_IB_AW_P", .decode.addr = A_USB1M_INTLPD_IB_AW_P,
515 .reset = 0,
516 },{ .name = "USB1M_INTLPD_IB_AW_B", .decode.addr = A_USB1M_INTLPD_IB_AW_B,
517 .reset = 0,
518 },{ .name = "USB1M_INTLPD_IB_AW_R", .decode.addr = A_USB1M_INTLPD_IB_AW_R,
519 .reset = 0,
520 },{ .name = "USB1M_INTLPD_IB_AR_P", .decode.addr = A_USB1M_INTLPD_IB_AR_P,
521 .reset = 0,
522 },{ .name = "USB1M_INTLPD_IB_AR_B", .decode.addr = A_USB1M_INTLPD_IB_AR_B,
523 .reset = 0,
524 },{ .name = "USB1M_INTLPD_IB_AR_R", .decode.addr = A_USB1M_INTLPD_IB_AR_R,
525 .reset = 0,
526 },{ .name = "INTIOU_INTLPD_IB_FN_MOD",
527 .decode.addr = A_INTIOU_INTLPD_IB_FN_MOD,
528 .reset = 0,
529 },{ .name = "INTIOU_INTLPD_IB_QOS_CNTL",
530 .decode.addr = A_INTIOU_INTLPD_IB_QOS_CNTL,
531 .reset = 0,
532 },{ .name = "INTIOU_INTLPD_IB_MAX_OT",
533 .decode.addr = A_INTIOU_INTLPD_IB_MAX_OT,
534 .reset = 0,
535 },{ .name = "INTIOU_INTLPD_IB_MAX_COMB_OT",
536 .decode.addr = A_INTIOU_INTLPD_IB_MAX_COMB_OT,
537 .reset = 0,
538 },{ .name = "INTIOU_INTLPD_IB_AW_P",
539 .decode.addr = A_INTIOU_INTLPD_IB_AW_P,
540 .reset = 0,
541 },{ .name = "INTIOU_INTLPD_IB_AW_B",
542 .decode.addr = A_INTIOU_INTLPD_IB_AW_B,
543 .reset = 0,
544 },{ .name = "INTIOU_INTLPD_IB_AW_R",
545 .decode.addr = A_INTIOU_INTLPD_IB_AW_R,
546 .reset = 0,
547 },{ .name = "INTIOU_INTLPD_IB_AR_P",
548 .decode.addr = A_INTIOU_INTLPD_IB_AR_P,
549 .reset = 0,
550 },{ .name = "INTIOU_INTLPD_IB_AR_B",
551 .decode.addr = A_INTIOU_INTLPD_IB_AR_B,
552 .reset = 0,
553 },{ .name = "INTIOU_INTLPD_IB_AR_R",
554 .decode.addr = A_INTIOU_INTLPD_IB_AR_R,
555 .reset = 0,
556 },{ .name = "INTCSUPMU_INTLPD_IB_FN_MOD",
557 .decode.addr = A_INTCSUPMU_INTLPD_IB_FN_MOD,
558 .reset = 0,
559 },{ .name = "INTCSUPMU_INTLPD_IB_QOS_CNTL",
560 .decode.addr = A_INTCSUPMU_INTLPD_IB_QOS_CNTL,
561 .reset = 0,
562 },{ .name = "INTCSUPMU_INTLPD_IB_MAX_OT",
563 .decode.addr = A_INTCSUPMU_INTLPD_IB_MAX_OT,
564 .reset = 0,
565 },{ .name = "INTCSUPMU_INTLPD_IB_MAX_COMB_OT",
566 .decode.addr = A_INTCSUPMU_INTLPD_IB_MAX_COMB_OT,
567 .reset = 0,
568 },{ .name = "INTCSUPMU_INTLPD_IB_AW_P",
569 .decode.addr = A_INTCSUPMU_INTLPD_IB_AW_P,
570 .reset = 0,
571 },{ .name = "INTCSUPMU_INTLPD_IB_AW_B",
572 .decode.addr = A_INTCSUPMU_INTLPD_IB_AW_B,
573 .reset = 0,
574 },{ .name = "INTCSUPMU_INTLPD_IB_AW_R",
575 .decode.addr = A_INTCSUPMU_INTLPD_IB_AW_R,
576 .reset = 0,
577 },{ .name = "INTCSUPMU_INTLPD_IB_AR_P",
578 .decode.addr = A_INTCSUPMU_INTLPD_IB_AR_P,
579 .reset = 0,
580 },{ .name = "INTCSUPMU_INTLPD_IB_AR_B",
581 .decode.addr = A_INTCSUPMU_INTLPD_IB_AR_B,
582 .reset = 0,
583 },{ .name = "INTCSUPMU_INTLPD_IB_AR_R",
584 .decode.addr = A_INTCSUPMU_INTLPD_IB_AR_R,
585 .reset = 0,
586 },{ .name = "INTLPDINBOUND_INTLPDMAIN_FN_MOD",
587 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_FN_MOD,
588 .reset = 0,
589 },{ .name = "INTLPDINBOUND_INTLPDMAIN_QOS_CNTL",
590 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_QOS_CNTL,
591 .reset = 0,
592 },{ .name = "INTLPDINBOUND_INTLPDMAIN_MAX_OT",
593 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_MAX_OT,
594 .reset = 0,
595 },{ .name = "INTLPDINBOUND_INTLPDMAIN_MAX_COMB_OT",
596 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_MAX_COMB_OT,
597 .reset = 0,
598 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AW_P",
599 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AW_P,
600 .reset = 0,
601 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AW_B",
602 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AW_B,
603 .reset = 0,
604 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AW_R",
605 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AW_R,
606 .reset = 0,
607 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AR_P",
608 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AR_P,
609 .reset = 0,
610 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AR_B",
611 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AR_B,
612 .reset = 0,
613 },{ .name = "INTLPDINBOUND_INTLPDMAIN_AR_R",
614 .decode.addr = A_INTLPDINBOUND_INTLPDMAIN_AR_R,
615 .reset = 0,
616 },{ .name = "INTFPD_INTLPDOCM_FN_MOD",
617 .decode.addr = A_INTFPD_INTLPDOCM_FN_MOD,
618 .reset = 0,
619 },{ .name = "INTFPD_INTLPDOCM_QOS_CNTL",
620 .decode.addr = A_INTFPD_INTLPDOCM_QOS_CNTL,
621 .reset = 0,
622 },{ .name = "INTFPD_INTLPDOCM_MAX_OT",
623 .decode.addr = A_INTFPD_INTLPDOCM_MAX_OT,
624 .reset = 0,
625 },{ .name = "INTFPD_INTLPDOCM_MAX_COMB_OT",
626 .decode.addr = A_INTFPD_INTLPDOCM_MAX_COMB_OT,
627 .reset = 0,
628 },{ .name = "INTFPD_INTLPDOCM_AW_P",
629 .decode.addr = A_INTFPD_INTLPDOCM_AW_P,
630 .reset = 0,
631 },{ .name = "INTFPD_INTLPDOCM_AW_B",
632 .decode.addr = A_INTFPD_INTLPDOCM_AW_B,
633 .reset = 0,
634 },{ .name = "INTFPD_INTLPDOCM_AW_R",
635 .decode.addr = A_INTFPD_INTLPDOCM_AW_R,
636 .reset = 0,
637 },{ .name = "INTFPD_INTLPDOCM_AR_P",
638 .decode.addr = A_INTFPD_INTLPDOCM_AR_P,
639 .reset = 0,
640 },{ .name = "INTFPD_INTLPDOCM_AR_B",
641 .decode.addr = A_INTFPD_INTLPDOCM_AR_B,
642 .reset = 0,
643 },{ .name = "INTFPD_INTLPDOCM_AR_R",
644 .decode.addr = A_INTFPD_INTLPDOCM_AR_R,
645 .reset = 0,
646 },{ .name = "IB9_FN_MOD_ISS_BM", .decode.addr = A_IB9_FN_MOD_ISS_BM,
647 .reset = 0,
648 },{ .name = "IB9_FN_MOD", .decode.addr = A_IB9_FN_MOD,
649 .reset = 0,
650 },{ .name = "IB5_FN_MOD_ISS_BM", .decode.addr = A_IB5_FN_MOD_ISS_BM,
651 .reset = 0,
652 },{ .name = "IB5_FN_MOD2", .decode.addr = A_IB5_FN_MOD2,
653 .reset = 0,
654 },{ .name = "IB5_FN_MOD", .decode.addr = A_IB5_FN_MOD,
655 .reset = 0,
656 },{ .name = "IB5_QOS_CNTL", .decode.addr = A_IB5_QOS_CNTL,
657 .reset = 0,
658 },{ .name = "IB5_MAX_OT", .decode.addr = A_IB5_MAX_OT,
659 .reset = 0,
660 },{ .name = "IB5_MAX_COMB_OT", .decode.addr = A_IB5_MAX_COMB_OT,
661 .reset = 0,
662 },{ .name = "IB5_AW_P", .decode.addr = A_IB5_AW_P,
663 .reset = 0,
664 },{ .name = "IB5_AW_B", .decode.addr = A_IB5_AW_B,
665 .reset = 0,
666 },{ .name = "IB5_AW_R", .decode.addr = A_IB5_AW_R,
667 .reset = 0,
668 },{ .name = "IB5_AR_P", .decode.addr = A_IB5_AR_P,
669 .reset = 0,
670 },{ .name = "IB5_AR_B", .decode.addr = A_IB5_AR_B,
671 .reset = 0,
672 },{ .name = "IB5_AR_R", .decode.addr = A_IB5_AR_R,
673 .reset = 0,
674 },{ .name = "IB6_FN_MOD_ISS_BM", .decode.addr = A_IB6_FN_MOD_ISS_BM,
675 .reset = 0,
676 },{ .name = "IB6_FN_MOD2", .decode.addr = A_IB6_FN_MOD2,
677 .reset = 0,
678 },{ .name = "IB6_FN_MOD", .decode.addr = A_IB6_FN_MOD,
679 .reset = 0,
680 },{ .name = "IB6_QOS_CNTL", .decode.addr = A_IB6_QOS_CNTL,
681 .reset = 0,
682 },{ .name = "IB6_MAX_OT", .decode.addr = A_IB6_MAX_OT,
683 .reset = 0,
684 },{ .name = "IB6_MAX_COMB_OT", .decode.addr = A_IB6_MAX_COMB_OT,
685 .reset = 0,
686 },{ .name = "IB6_AW_P", .decode.addr = A_IB6_AW_P,
687 .reset = 0,
688 },{ .name = "IB6_AW_B", .decode.addr = A_IB6_AW_B,
689 .reset = 0,
690 },{ .name = "IB6_AW_R", .decode.addr = A_IB6_AW_R,
691 .reset = 0,
692 },{ .name = "IB6_AR_P", .decode.addr = A_IB6_AR_P,
693 .reset = 0,
694 },{ .name = "IB6_AR_B", .decode.addr = A_IB6_AR_B,
695 .reset = 0,
696 },{ .name = "IB6_AR_R", .decode.addr = A_IB6_AR_R,
697 .reset = 0,
698 },{ .name = "IB8_FN_MOD_ISS_BM", .decode.addr = A_IB8_FN_MOD_ISS_BM,
699 .reset = 0,
700 },{ .name = "IB8_FN_MOD2", .decode.addr = A_IB8_FN_MOD2,
701 .reset = 0,
702 },{ .name = "IB8_FN_MOD", .decode.addr = A_IB8_FN_MOD,
703 .reset = 0,
704 },{ .name = "IB8_QOS_CNTL", .decode.addr = A_IB8_QOS_CNTL,
705 .reset = 0,
706 },{ .name = "IB8_MAX_OT", .decode.addr = A_IB8_MAX_OT,
707 .reset = 0,
708 },{ .name = "IB8_MAX_COMB_OT", .decode.addr = A_IB8_MAX_COMB_OT,
709 .reset = 0,
710 },{ .name = "IB8_AW_P", .decode.addr = A_IB8_AW_P,
711 .reset = 0,
712 },{ .name = "IB8_AW_B", .decode.addr = A_IB8_AW_B,
713 .reset = 0,
714 },{ .name = "IB8_AW_R", .decode.addr = A_IB8_AW_R,
715 .reset = 0,
716 },{ .name = "IB8_AR_P", .decode.addr = A_IB8_AR_P,
717 .reset = 0,
718 },{ .name = "IB8_AR_B", .decode.addr = A_IB8_AR_B,
719 .reset = 0,
720 },{ .name = "IB8_AR_R", .decode.addr = A_IB8_AR_R,
721 .reset = 0,
722 },{ .name = "IB0_FN_MOD_ISS_BM", .decode.addr = A_IB0_FN_MOD_ISS_BM,
723 .reset = 0,
724 },{ .name = "IB0_FN_MOD2", .decode.addr = A_IB0_FN_MOD2,
725 .reset = 0,
726 },{ .name = "IB0_FN_MOD", .decode.addr = A_IB0_FN_MOD,
727 .reset = 0,
728 },{ .name = "IB0_QOS_CNTL", .decode.addr = A_IB0_QOS_CNTL,
729 .reset = 0,
730 },{ .name = "IB0_MAX_OT", .decode.addr = A_IB0_MAX_OT,
731 .reset = 0,
732 },{ .name = "IB0_MAX_COMB_OT", .decode.addr = A_IB0_MAX_COMB_OT,
733 .reset = 0,
734 },{ .name = "IB0_AW_P", .decode.addr = A_IB0_AW_P,
735 .reset = 0,
736 },{ .name = "IB0_AW_B", .decode.addr = A_IB0_AW_B,
737 .reset = 0,
738 },{ .name = "IB0_AW_R", .decode.addr = A_IB0_AW_R,
739 .reset = 0,
740 },{ .name = "IB0_AR_P", .decode.addr = A_IB0_AR_P,
741 .reset = 0,
742 },{ .name = "IB0_AR_B", .decode.addr = A_IB0_AR_B,
743 .reset = 0,
744 },{ .name = "IB0_AR_R", .decode.addr = A_IB0_AR_R,
745 .reset = 0,
746 },{ .name = "IB11_FN_MOD_ISS_BM", .decode.addr = A_IB11_FN_MOD_ISS_BM,
747 .reset = 0,
748 },{ .name = "IB11_FN_MOD2", .decode.addr = A_IB11_FN_MOD2,
749 .reset = 0,
750 },{ .name = "IB11_FN_MOD", .decode.addr = A_IB11_FN_MOD,
751 .reset = 0,
752 },{ .name = "IB11_QOS_CNTL", .decode.addr = A_IB11_QOS_CNTL,
753 .reset = 0,
754 },{ .name = "IB11_MAX_OT", .decode.addr = A_IB11_MAX_OT,
755 .reset = 0,
756 },{ .name = "IB11_MAX_COMB_OT", .decode.addr = A_IB11_MAX_COMB_OT,
757 .reset = 0,
758 },{ .name = "IB11_AW_P", .decode.addr = A_IB11_AW_P,
759 .reset = 0,
760 },{ .name = "IB11_AW_B", .decode.addr = A_IB11_AW_B,
761 .reset = 0,
762 },{ .name = "IB11_AW_R", .decode.addr = A_IB11_AW_R,
763 .reset = 0,
764 },{ .name = "IB11_AR_P", .decode.addr = A_IB11_AR_P,
765 .reset = 0,
766 },{ .name = "IB11_AR_B", .decode.addr = A_IB11_AR_B,
767 .reset = 0,
768 },{ .name = "IB11_AR_R", .decode.addr = A_IB11_AR_R,
769 .reset = 0,
770 },{ .name = "IB12_FN_MOD_ISS_BM", .decode.addr = A_IB12_FN_MOD_ISS_BM,
771 .reset = 0,
772 },{ .name = "IB12_FN_MOD2", .decode.addr = A_IB12_FN_MOD2,
773 .reset = 0,
774 },{ .name = "IB12_FN_MOD", .decode.addr = A_IB12_FN_MOD,
775 .reset = 0,
776 },{ .name = "IB12_QOS_CNTL", .decode.addr = A_IB12_QOS_CNTL,
777 .reset = 0,
778 },{ .name = "IB12_MAX_OT", .decode.addr = A_IB12_MAX_OT,
779 .reset = 0,
780 },{ .name = "IB12_MAX_COMB_OT", .decode.addr = A_IB12_MAX_COMB_OT,
781 .reset = 0,
782 },{ .name = "IB12_AW_P", .decode.addr = A_IB12_AW_P,
783 .reset = 0,
784 },{ .name = "IB12_AW_B", .decode.addr = A_IB12_AW_B,
785 .reset = 0,
786 },{ .name = "IB12_AW_R", .decode.addr = A_IB12_AW_R,
787 .reset = 0,
788 },{ .name = "IB12_AR_P", .decode.addr = A_IB12_AR_P,
789 .reset = 0,
790 },{ .name = "IB12_AR_B", .decode.addr = A_IB12_AR_B,
791 .reset = 0,
792 },{ .name = "IB12_AR_R", .decode.addr = A_IB12_AR_R,
793 .reset = 0,
794 },
795};
796
797static void lpd_gpv_reset(DeviceState *dev)
798{
799 XlnxLPDGPVState *s = XLNX_LPD_GPV(dev);
800 unsigned int i;
801
802 for (i = 0; i < ARRAY_SIZE(s->regs_info); ++i) {
803 register_reset(&s->regs_info[i]);
804 }
805}
806
807static uint64_t lpd_gpv_read(void *opaque, hwaddr addr, unsigned size)
808{
809 XlnxLPDGPVState *s = XLNX_LPD_GPV(opaque);
810 RegisterInfo *r = &s->regs_info[addr / 4];
811
812 if (!r->data) {
813 qemu_log("%s: Decode error: read from %" HWADDR_PRIx "\n",
814 object_get_canonical_path(OBJECT(s)),
815 addr);
816 return 0;
817 }
818 return register_read(r);
819}
820
821static void lpd_gpv_write(void *opaque, hwaddr addr, uint64_t value,
822 unsigned size)
823{
824 XlnxLPDGPVState *s = XLNX_LPD_GPV(opaque);
825 RegisterInfo *r = &s->regs_info[addr / 4];
826
827 if (!r->data) {
828 qemu_log("%s: Decode error: write to %" HWADDR_PRIx "=%" PRIx64 "\n",
829 object_get_canonical_path(OBJECT(s)),
830 addr, value);
831 return;
832 }
833 register_write(r, value, ~0);
834}
835
836static const MemoryRegionOps lpd_gpv_ops = {
837 .read = lpd_gpv_read,
838 .write = lpd_gpv_write,
839 .endianness = DEVICE_LITTLE_ENDIAN,
840 .valid = {
841 .min_access_size = 4,
842 .max_access_size = 4,
843 },
844};
845
846static void lpd_gpv_realize(DeviceState *dev, Error **errp)
847{
848 XlnxLPDGPVState *s = XLNX_LPD_GPV(dev);
849 const char *prefix = object_get_canonical_path(OBJECT(dev));
850 unsigned int i;
851
852 for (i = 0; i < ARRAY_SIZE(lpd_gpv_regs_info); ++i) {
853 RegisterInfo *r = &s->regs_info[lpd_gpv_regs_info[i].decode.addr/4];
854
855 *r = (RegisterInfo) {
856 .data = (uint8_t *)&s->regs[
857 lpd_gpv_regs_info[i].decode.addr/4],
858 .data_size = sizeof(uint32_t),
859 .access = &lpd_gpv_regs_info[i],
860 .debug = XLNX_LPD_GPV_ERR_DEBUG,
861 .prefix = prefix,
862 .opaque = s,
863 };
864 }
865}
866
867static void lpd_gpv_init(Object *obj)
868{
869 XlnxLPDGPVState *s = XLNX_LPD_GPV(obj);
870 SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
871
872 memory_region_init_io(&s->iomem, obj, &lpd_gpv_ops, s,
873 TYPE_XLNX_LPD_GPV, R_MAX * 4);
874 sysbus_init_mmio(sbd, &s->iomem);
875}
876
877static const VMStateDescription vmstate_lpd_gpv = {
878 .name = TYPE_XLNX_LPD_GPV,
879 .version_id = 1,
880 .minimum_version_id = 1,
881 .minimum_version_id_old = 1,
882 .fields = (VMStateField[]) {
883 VMSTATE_UINT32_ARRAY(regs, XlnxLPDGPVState, R_MAX),
884 VMSTATE_END_OF_LIST(),
885 }
886};
887
888static void lpd_gpv_class_init(ObjectClass *klass, void *data)
889{
890 DeviceClass *dc = DEVICE_CLASS(klass);
891
892 dc->reset = lpd_gpv_reset;
893 dc->realize = lpd_gpv_realize;
894 dc->vmsd = &vmstate_lpd_gpv;
895}
896
897static const TypeInfo lpd_gpv_info = {
898 .name = TYPE_XLNX_LPD_GPV,
899 .parent = TYPE_SYS_BUS_DEVICE,
900 .instance_size = sizeof(XlnxLPDGPVState),
901 .class_init = lpd_gpv_class_init,
902 .instance_init = lpd_gpv_init,
903};
904
905static void lpd_gpv_register_types(void)
906{
907 type_register_static(&lpd_gpv_info);
908}
909
910type_init(lpd_gpv_register_types)
911