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