OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [include/] [asm-ia64/] [sn/] [pci/] [pic.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/* $Id: pic.h,v 1.1.1.1 2004-04-15 02:42:49 phoenix Exp $
2
 *
3
 * This file is subject to the terms and conditions of the GNU General Public
4
 * License.  See the file "COPYING" in the main directory of this archive
5
 * for more details.
6
 *
7
 * Copyright (C) 1992 - 1997, 2000-2003 Silicon Graphics, Inc. All rights reserved.
8
 */
9
#ifndef _ASM_SN_PCI_PIC_H
10
#define _ASM_SN_PCI_PIC_H
11
 
12
 
13
/*
14
 * The PIC ASIC is a follow-on to the Bridge and Xbridge ASICs.
15
 * It shares many of the same registers as those chips and therefore
16
 * the primary structure for the PIC will be bridge_s as defined
17
 * in irix/kern/sys/PCI/bridge.h.   This file is intended as a complement
18
 * to bridge.h, which includes this file.
19
 */
20
 
21
/*
22
 * PIC AS DEVICE ZERO
23
 * ------------------
24
 *
25
 * PIC handles PCI/X busses.  PCI/X requires that the 'bridge' (i.e. PIC)
26
 * be designated as 'device 0'.   That is a departure from earlier SGI
27
 * PCI bridges.  Because of that we use config space 1 to access the
28
 * config space of the first actual PCI device on the bus.
29
 * Here's what the PIC manual says:
30
 *
31
 *     The current PCI-X bus specification now defines that the parent
32
 *     hosts bus bridge (PIC for example) must be device 0 on bus 0. PIC
33
 *     reduced the total number of devices from 8 to 4 and removed the
34
 *     device registers and windows, now only supporting devices 0,1,2, and
35
 *     3. PIC did leave all 8 configuration space windows. The reason was
36
 *     there was nothing to gain by removing them. Here in lies the problem.
37
 *     The device numbering we do using 0 through 3 is unrelated to the device
38
 *     numbering which PCI-X requires in configuration space. In the past we
39
 *     correlated Configs pace and our device space 0 <-> 0, 1 <-> 1, etc.
40
 *     PCI-X requires we start a 1, not 0 and currently the PX brick
41
 *     does associate our:
42
 *
43
 *         device 0 with configuration space window 1,
44
 *         device 1 with configuration space window 2,
45
 *         device 2 with configuration space window 3,
46
 *         device 3 with configuration space window 4.
47
 *
48
 * The net effect is that all config space access are off-by-one with
49
 * relation to other per-slot accesses on the PIC.
50
 * Here is a table that shows some of that:
51
 *
52
 *                               Internal Slot#
53
 *           |
54
 *           |     0         1        2         3
55
 * ----------|---------------------------------------
56
 * config    |  0x21000   0x22000  0x23000   0x24000
57
 *           |
58
 * even rrb  |  0[0]      n/a      1[0]      n/a        [] == implied even/odd
59
 *           |
60
 * odd rrb   |  n/a       0[1]     n/a       1[1]
61
 *           |
62
 * int dev   |  00       01        10        11
63
 *           |
64
 * ext slot# |  1        2         3         4
65
 * ----------|---------------------------------------
66
 */
67
 
68
 
69
#ifndef __ASSEMBLY__
70
 
71
#ifdef __cplusplus
72
extern "C" {
73
#endif
74
 
75
 
76
/*********************************************************************
77
 *    bus provider function table
78
 *
79
 *      Normally, this table is only handed off explicitly
80
 *      during provider initialization, and the PCI generic
81
 *      layer will stash a pointer to it in the vertex; however,
82
 *      exporting it explicitly enables a performance hack in
83
 *      the generic PCI provider where if we know at compile
84
 *      time that the only possible PCI provider is a
85
 *      pcibr, we can go directly to this ops table.
86
 */
87
 
88
#ifdef __KERNEL__
89
#include <linux/config.h>
90
#include <asm/sn/pci/pciio.h>
91
extern pciio_provider_t pci_pic_provider;
92
#else
93
#include <linux/config.h>
94
#endif
95
 
96
 
97
/*********************************************************************
98
 * misc defines
99
 *
100
 */
101
#define PIC_WIDGET_PART_NUM_BUS0 0xd102
102
#define PIC_WIDGET_PART_NUM_BUS1 0xd112
103
#define PIC_WIDGET_MFGR_NUM 0x24
104
#define PIC_WIDGET_REV_A  0x1
105
 
106
#define IS_PIC_PART_REV_A(rev) \
107
        ((rev == (PIC_WIDGET_PART_NUM_BUS0 << 4 | PIC_WIDGET_REV_A)) || \
108
        (rev == (PIC_WIDGET_PART_NUM_BUS1 << 4 | PIC_WIDGET_REV_A)))
109
 
110
/*********************************************************************
111
 * register offset defines
112
 *
113
 */
114
        /* Identification Register  -- read-only */
115
#define PIC_IDENTIFICATION 0x00000000
116
 
117
        /* Status Register  -- read-only */
118
#define PIC_STATUS 0x00000008
119
 
120
        /* Upper Address Holding Register Bus Side Errors  -- read-only */
121
#define PIC_UPPER_ADDR_REG_BUS_SIDE_ERRS 0x00000010
122
 
123
        /* Lower Address Holding Register Bus Side Errors  -- read-only */
124
#define PIC_LOWER_ADDR_REG_BUS_SIDE_ERRS 0x00000018
125
 
126
        /* Control Register  -- read/write */
127
#define PIC_CONTROL 0x00000020
128
 
129
        /* PCI Request Time-out Value Register  -- read/write */
130
#define PIC_PCI_REQ_TIME_OUT_VALUE 0x00000028
131
 
132
        /* Interrupt Destination Upper Address Register  -- read/write */
133
#define PIC_INTR_DEST_UPPER_ADDR 0x00000030
134
 
135
        /* Interrupt Destination Lower Address Register  -- read/write */
136
#define PIC_INTR_DEST_LOWER_ADDR 0x00000038
137
 
138
        /* Command Word Holding Register Bus Side  -- read-only */
139
#define PIC_CMD_WORD_REG_BUS_SIDE 0x00000040
140
 
141
        /* LLP Configuration Register (Bus 0 Only)  -- read/write */
142
#define PIC_LLP_CFG_REG_(BUS_0_ONLY) 0x00000048
143
 
144
        /* PCI Target Flush Register  -- read-only */
145
#define PIC_PCI_TARGET_FLUSH 0x00000050
146
 
147
        /* Command Word Holding Register Link Side  -- read-only */
148
#define PIC_CMD_WORD_REG_LINK_SIDE 0x00000058
149
 
150
        /* Response Buffer Error Upper Address Holding  -- read-only */
151
#define PIC_RESP_BUF_ERR_UPPER_ADDR_ 0x00000060
152
 
153
        /* Response Buffer Error Lower Address Holding  -- read-only */
154
#define PIC_RESP_BUF_ERR_LOWER_ADDR_ 0x00000068
155
 
156
        /* Test Pin Control Register  -- read/write */
157
#define PIC_TEST_PIN_CONTROL 0x00000070
158
 
159
        /* Address Holding Register Link Side Errors  -- read-only */
160
#define PIC_ADDR_REG_LINK_SIDE_ERRS 0x00000078
161
 
162
        /* Direct Map Register  -- read/write */
163
#define PIC_DIRECT_MAP 0x00000080
164
 
165
        /* PCI Map Fault Address Register  -- read-only */
166
#define PIC_PCI_MAP_FAULT_ADDR 0x00000090
167
 
168
        /* Arbitration Priority Register  -- read/write */
169
#define PIC_ARBITRATION_PRIORITY 0x000000A0
170
 
171
        /* Internal Ram Parity Error Register  -- read-only */
172
#define PIC_INTERNAL_RAM_PARITY_ERR 0x000000B0
173
 
174
        /* PCI Time-out Register  -- read/write */
175
#define PIC_PCI_TIME_OUT 0x000000C0
176
 
177
        /* PCI Type 1 Configuration Register  -- read/write */
178
#define PIC_PCI_TYPE_1_CFG 0x000000C8
179
 
180
        /* PCI Bus Error Upper Address Holding Register  -- read-only */
181
#define PIC_PCI_BUS_ERR_UPPER_ADDR_ 0x000000D0
182
 
183
        /* PCI Bus Error Lower Address Holding Register  -- read-only */
184
#define PIC_PCI_BUS_ERR_LOWER_ADDR_ 0x000000D8
185
 
186
        /* PCIX Error Address Register  -- read-only */
187
#define PIC_PCIX_ERR_ADDR 0x000000E0
188
 
189
        /* PCIX Error Attribute Register  -- read-only */
190
#define PIC_PCIX_ERR_ATTRIBUTE 0x000000E8
191
 
192
        /* PCIX Error Data Register  -- read-only */
193
#define PIC_PCIX_ERR_DATA 0x000000F0
194
 
195
        /* PCIX Read Request Timeout Error Register  -- read-only */
196
#define PIC_PCIX_READ_REQ_TIMEOUT_ERR 0x000000F8
197
 
198
        /* Interrupt Status Register  -- read-only */
199
#define PIC_INTR_STATUS 0x00000100
200
 
201
        /* Interrupt Enable Register  -- read/write */
202
#define PIC_INTR_ENABLE 0x00000108
203
 
204
        /* Reset Interrupt Status Register  -- write-only */
205
#define PIC_RESET_INTR_STATUS 0x00000110
206
 
207
        /* Interrupt Mode Register  -- read/write */
208
#define PIC_INTR_MODE 0x00000118
209
 
210
        /* Interrupt Device Register  -- read/write */
211
#define PIC_INTR_DEVICE 0x00000120
212
 
213
        /* Host Error Field Register  -- read/write */
214
#define PIC_HOST_ERR_FIELD 0x00000128
215
 
216
        /* Interrupt Pin 0 Host Address Register  -- read/write */
217
#define PIC_INTR_PIN_0_HOST_ADDR 0x00000130
218
 
219
        /* Interrupt Pin 1 Host Address Register  -- read/write */
220
#define PIC_INTR_PIN_1_HOST_ADDR 0x00000138
221
 
222
        /* Interrupt Pin 2 Host Address Register  -- read/write */
223
#define PIC_INTR_PIN_2_HOST_ADDR 0x00000140
224
 
225
        /* Interrupt Pin 3 Host Address Register  -- read/write */
226
#define PIC_INTR_PIN_3_HOST_ADDR 0x00000148
227
 
228
        /* Interrupt Pin 4 Host Address Register  -- read/write */
229
#define PIC_INTR_PIN_4_HOST_ADDR 0x00000150
230
 
231
        /* Interrupt Pin 5 Host Address Register  -- read/write */
232
#define PIC_INTR_PIN_5_HOST_ADDR 0x00000158
233
 
234
        /* Interrupt Pin 6 Host Address Register  -- read/write */
235
#define PIC_INTR_PIN_6_HOST_ADDR 0x00000160
236
 
237
        /* Interrupt Pin 7 Host Address Register  -- read/write */
238
#define PIC_INTR_PIN_7_HOST_ADDR 0x00000168
239
 
240
        /* Error Interrupt View Register  -- read-only */
241
#define PIC_ERR_INTR_VIEW 0x00000170
242
 
243
        /* Multiple Interrupt Register  -- read-only */
244
#define PIC_MULTIPLE_INTR 0x00000178
245
 
246
        /* Force Always Interrupt 0 Register  -- write-only */
247
#define PIC_FORCE_ALWAYS_INTR_0 0x00000180
248
 
249
        /* Force Always Interrupt 1 Register  -- write-only */
250
#define PIC_FORCE_ALWAYS_INTR_1 0x00000188
251
 
252
        /* Force Always Interrupt 2 Register  -- write-only */
253
#define PIC_FORCE_ALWAYS_INTR_2 0x00000190
254
 
255
        /* Force Always Interrupt 3 Register  -- write-only */
256
#define PIC_FORCE_ALWAYS_INTR_3 0x00000198
257
 
258
        /* Force Always Interrupt 4 Register  -- write-only */
259
#define PIC_FORCE_ALWAYS_INTR_4 0x000001A0
260
 
261
        /* Force Always Interrupt 5 Register  -- write-only */
262
#define PIC_FORCE_ALWAYS_INTR_5 0x000001A8
263
 
264
        /* Force Always Interrupt 6 Register  -- write-only */
265
#define PIC_FORCE_ALWAYS_INTR_6 0x000001B0
266
 
267
        /* Force Always Interrupt 7 Register  -- write-only */
268
#define PIC_FORCE_ALWAYS_INTR_7 0x000001B8
269
 
270
        /* Force w/Pin Interrupt 0 Register  -- write-only */
271
#define PIC_FORCE_PIN_INTR_0 0x000001C0
272
 
273
        /* Force w/Pin Interrupt 1 Register  -- write-only */
274
#define PIC_FORCE_PIN_INTR_1 0x000001C8
275
 
276
        /* Force w/Pin Interrupt 2 Register  -- write-only */
277
#define PIC_FORCE_PIN_INTR_2 0x000001D0
278
 
279
        /* Force w/Pin Interrupt 3 Register  -- write-only */
280
#define PIC_FORCE_PIN_INTR_3 0x000001D8
281
 
282
        /* Force w/Pin Interrupt 4 Register  -- write-only */
283
#define PIC_FORCE_PIN_INTR_4 0x000001E0
284
 
285
        /* Force w/Pin Interrupt 5 Register  -- write-only */
286
#define PIC_FORCE_PIN_INTR_5 0x000001E8
287
 
288
        /* Force w/Pin Interrupt 6 Register  -- write-only */
289
#define PIC_FORCE_PIN_INTR_6 0x000001F0
290
 
291
        /* Force w/Pin Interrupt 7 Register  -- write-only */
292
#define PIC_FORCE_PIN_INTR_7 0x000001F8
293
 
294
        /* Device 0 Register  -- read/write */
295
#define PIC_DEVICE_0 0x00000200
296
 
297
        /* Device 1 Register  -- read/write */
298
#define PIC_DEVICE_1 0x00000208
299
 
300
        /* Device 2 Register  -- read/write */
301
#define PIC_DEVICE_2 0x00000210
302
 
303
        /* Device 3 Register  -- read/write */
304
#define PIC_DEVICE_3 0x00000218
305
 
306
        /* Device 0 Write Request Buffer Register  -- read-only */
307
#define PIC_DEVICE_0_WRITE_REQ_BUF 0x00000240
308
 
309
        /* Device 1 Write Request Buffer Register  -- read-only */
310
#define PIC_DEVICE_1_WRITE_REQ_BUF 0x00000248
311
 
312
        /* Device 2 Write Request Buffer Register  -- read-only */
313
#define PIC_DEVICE_2_WRITE_REQ_BUF 0x00000250
314
 
315
        /* Device 3 Write Request Buffer Register  -- read-only */
316
#define PIC_DEVICE_3_WRITE_REQ_BUF 0x00000258
317
 
318
        /* Even Device Response Buffer Register  -- read/write */
319
#define PIC_EVEN_DEVICE_RESP_BUF 0x00000280
320
 
321
        /* Odd Device Response Buffer Register  -- read/write */
322
#define PIC_ODD_DEVICE_RESP_BUF 0x00000288
323
 
324
        /* Read Response Buffer Status Register  -- read-only */
325
#define PIC_READ_RESP_BUF_STATUS 0x00000290
326
 
327
        /* Read Response Buffer Clear Register  -- write-only */
328
#define PIC_READ_RESP_BUF_CLEAR 0x00000298
329
 
330
        /* PCI RR 0 Upper Address Match Register  -- read-only */
331
#define PIC_PCI_RR_0_UPPER_ADDR_MATCH 0x00000300
332
 
333
        /* PCI RR 0 Lower Address Match Register  -- read-only */
334
#define PIC_PCI_RR_0_LOWER_ADDR_MATCH 0x00000308
335
 
336
        /* PCI RR 1 Upper Address Match Register  -- read-only */
337
#define PIC_PCI_RR_1_UPPER_ADDR_MATCH 0x00000310
338
 
339
        /* PCI RR 1 Lower Address Match Register  -- read-only */
340
#define PIC_PCI_RR_1_LOWER_ADDR_MATCH 0x00000318
341
 
342
        /* PCI RR 2 Upper Address Match Register  -- read-only */
343
#define PIC_PCI_RR_2_UPPER_ADDR_MATCH 0x00000320
344
 
345
        /* PCI RR 2 Lower Address Match Register  -- read-only */
346
#define PIC_PCI_RR_2_LOWER_ADDR_MATCH 0x00000328
347
 
348
        /* PCI RR 3 Upper Address Match Register  -- read-only */
349
#define PIC_PCI_RR_3_UPPER_ADDR_MATCH 0x00000330
350
 
351
        /* PCI RR 3 Lower Address Match Register  -- read-only */
352
#define PIC_PCI_RR_3_LOWER_ADDR_MATCH 0x00000338
353
 
354
        /* PCI RR 4 Upper Address Match Register  -- read-only */
355
#define PIC_PCI_RR_4_UPPER_ADDR_MATCH 0x00000340
356
 
357
        /* PCI RR 4 Lower Address Match Register  -- read-only */
358
#define PIC_PCI_RR_4_LOWER_ADDR_MATCH 0x00000348
359
 
360
        /* PCI RR 5 Upper Address Match Register  -- read-only */
361
#define PIC_PCI_RR_5_UPPER_ADDR_MATCH 0x00000350
362
 
363
        /* PCI RR 5 Lower Address Match Register  -- read-only */
364
#define PIC_PCI_RR_5_LOWER_ADDR_MATCH 0x00000358
365
 
366
        /* PCI RR 6 Upper Address Match Register  -- read-only */
367
#define PIC_PCI_RR_6_UPPER_ADDR_MATCH 0x00000360
368
 
369
        /* PCI RR 6 Lower Address Match Register  -- read-only */
370
#define PIC_PCI_RR_6_LOWER_ADDR_MATCH 0x00000368
371
 
372
        /* PCI RR 7 Upper Address Match Register  -- read-only */
373
#define PIC_PCI_RR_7_UPPER_ADDR_MATCH 0x00000370
374
 
375
        /* PCI RR 7 Lower Address Match Register  -- read-only */
376
#define PIC_PCI_RR_7_LOWER_ADDR_MATCH 0x00000378
377
 
378
        /* PCI RR 8 Upper Address Match Register  -- read-only */
379
#define PIC_PCI_RR_8_UPPER_ADDR_MATCH 0x00000380
380
 
381
        /* PCI RR 8 Lower Address Match Register  -- read-only */
382
#define PIC_PCI_RR_8_LOWER_ADDR_MATCH 0x00000388
383
 
384
        /* PCI RR 9 Upper Address Match Register  -- read-only */
385
#define PIC_PCI_RR_9_UPPER_ADDR_MATCH 0x00000390
386
 
387
        /* PCI RR 9 Lower Address Match Register  -- read-only */
388
#define PIC_PCI_RR_9_LOWER_ADDR_MATCH 0x00000398
389
 
390
        /* PCI RR 10 Upper Address Match Register  -- read-only */
391
#define PIC_PCI_RR_10_UPPER_ADDR_MATCH 0x000003A0
392
 
393
        /* PCI RR 10 Lower Address Match Register  -- read-only */
394
#define PIC_PCI_RR_10_LOWER_ADDR_MATCH 0x000003A8
395
 
396
        /* PCI RR 11 Upper Address Match Register  -- read-only */
397
#define PIC_PCI_RR_11_UPPER_ADDR_MATCH 0x000003B0
398
 
399
        /* PCI RR 11 Lower Address Match Register  -- read-only */
400
#define PIC_PCI_RR_11_LOWER_ADDR_MATCH 0x000003B8
401
 
402
        /* PCI RR 12 Upper Address Match Register  -- read-only */
403
#define PIC_PCI_RR_12_UPPER_ADDR_MATCH 0x000003C0
404
 
405
        /* PCI RR 12 Lower Address Match Register  -- read-only */
406
#define PIC_PCI_RR_12_LOWER_ADDR_MATCH 0x000003C8
407
 
408
        /* PCI RR 13 Upper Address Match Register  -- read-only */
409
#define PIC_PCI_RR_13_UPPER_ADDR_MATCH 0x000003D0
410
 
411
        /* PCI RR 13 Lower Address Match Register  -- read-only */
412
#define PIC_PCI_RR_13_LOWER_ADDR_MATCH 0x000003D8
413
 
414
        /* PCI RR 14 Upper Address Match Register  -- read-only */
415
#define PIC_PCI_RR_14_UPPER_ADDR_MATCH 0x000003E0
416
 
417
        /* PCI RR 14 Lower Address Match Register  -- read-only */
418
#define PIC_PCI_RR_14_LOWER_ADDR_MATCH 0x000003E8
419
 
420
        /* PCI RR 15 Upper Address Match Register  -- read-only */
421
#define PIC_PCI_RR_15_UPPER_ADDR_MATCH 0x000003F0
422
 
423
        /* PCI RR 15 Lower Address Match Register  -- read-only */
424
#define PIC_PCI_RR_15_LOWER_ADDR_MATCH 0x000003F8
425
 
426
        /* Buffer 0 Flush Count with Data Touch Register  -- read/write */
427
#define PIC_BUF_0_FLUSH_CNT_WITH_DATA_TOUCH 0x00000400
428
 
429
        /* Buffer 0 Flush Count w/o Data Touch Register  -- read/write */
430
#define PIC_BUF_0_FLUSH_CNT_W_O_DATA_TOUCH 0x00000408
431
 
432
        /* Buffer 0 Request in Flight Count Register  -- read/write */
433
#define PIC_BUF_0_REQ_IN_FLIGHT_CNT 0x00000410
434
 
435
        /* Buffer 0 Prefetch Request Count Register  -- read/write */
436
#define PIC_BUF_0_PREFETCH_REQ_CNT 0x00000418
437
 
438
        /* Buffer 0 Total PCI Retry Count Register  -- read/write */
439
#define PIC_BUF_0_TOTAL_PCI_RETRY_CNT 0x00000420
440
 
441
        /* Buffer 0 Max PCI Retry Count Register  -- read/write */
442
#define PIC_BUF_0_MAX_PCI_RETRY_CNT 0x00000428
443
 
444
        /* Buffer 0 Max Latency Count Register  -- read/write */
445
#define PIC_BUF_0_MAX_LATENCY_CNT 0x00000430
446
 
447
        /* Buffer 0 Clear All Register  -- read/write */
448
#define PIC_BUF_0_CLEAR_ALL 0x00000438
449
 
450
        /* Buffer 2 Flush Count with Data Touch Register  -- read/write */
451
#define PIC_BUF_2_FLUSH_CNT_WITH_DATA_TOUCH 0x00000440
452
 
453
        /* Buffer 2 Flush Count w/o Data Touch Register  -- read/write */
454
#define PIC_BUF_2_FLUSH_CNT_W_O_DATA_TOUCH 0x00000448
455
 
456
        /* Buffer 2 Request in Flight Count Register  -- read/write */
457
#define PIC_BUF_2_REQ_IN_FLIGHT_CNT 0x00000450
458
 
459
        /* Buffer 2 Prefetch Request Count Register  -- read/write */
460
#define PIC_BUF_2_PREFETCH_REQ_CNT 0x00000458
461
 
462
        /* Buffer 2 Total PCI Retry Count Register  -- read/write */
463
#define PIC_BUF_2_TOTAL_PCI_RETRY_CNT 0x00000460
464
 
465
        /* Buffer 2 Max PCI Retry Count Register  -- read/write */
466
#define PIC_BUF_2_MAX_PCI_RETRY_CNT 0x00000468
467
 
468
        /* Buffer 2 Max Latency Count Register  -- read/write */
469
#define PIC_BUF_2_MAX_LATENCY_CNT 0x00000470
470
 
471
        /* Buffer 2 Clear All Register  -- read/write */
472
#define PIC_BUF_2_CLEAR_ALL 0x00000478
473
 
474
        /* Buffer 4 Flush Count with Data Touch Register  -- read/write */
475
#define PIC_BUF_4_FLUSH_CNT_WITH_DATA_TOUCH 0x00000480
476
 
477
        /* Buffer 4 Flush Count w/o Data Touch Register  -- read/write */
478
#define PIC_BUF_4_FLUSH_CNT_W_O_DATA_TOUCH 0x00000488
479
 
480
        /* Buffer 4 Request in Flight Count Register  -- read/write */
481
#define PIC_BUF_4_REQ_IN_FLIGHT_CNT 0x00000490
482
 
483
        /* Buffer 4 Prefetch Request Count Register  -- read/write */
484
#define PIC_BUF_4_PREFETCH_REQ_CNT 0x00000498
485
 
486
        /* Buffer 4 Total PCI Retry Count Register  -- read/write */
487
#define PIC_BUF_4_TOTAL_PCI_RETRY_CNT 0x000004A0
488
 
489
        /* Buffer 4 Max PCI Retry Count Register  -- read/write */
490
#define PIC_BUF_4_MAX_PCI_RETRY_CNT 0x000004A8
491
 
492
        /* Buffer 4 Max Latency Count Register  -- read/write */
493
#define PIC_BUF_4_MAX_LATENCY_CNT 0x000004B0
494
 
495
        /* Buffer 4 Clear All Register  -- read/write */
496
#define PIC_BUF_4_CLEAR_ALL 0x000004B8
497
 
498
        /* Buffer 6 Flush Count with Data Touch Register  -- read/write */
499
#define PIC_BUF_6_FLUSH_CNT_WITH_DATA_TOUCH 0x000004C0
500
 
501
        /* Buffer 6 Flush Count w/o Data Touch Register  -- read/write */
502
#define PIC_BUF_6_FLUSH_CNT_W_O_DATA_TOUCH 0x000004C8
503
 
504
        /* Buffer 6 Request in Flight Count Register  -- read/write */
505
#define PIC_BUF_6_REQ_IN_FLIGHT_CNT 0x000004D0
506
 
507
        /* Buffer 6 Prefetch Request Count Register  -- read/write */
508
#define PIC_BUF_6_PREFETCH_REQ_CNT 0x000004D8
509
 
510
        /* Buffer 6 Total PCI Retry Count Register  -- read/write */
511
#define PIC_BUF_6_TOTAL_PCI_RETRY_CNT 0x000004E0
512
 
513
        /* Buffer 6 Max PCI Retry Count Register  -- read/write */
514
#define PIC_BUF_6_MAX_PCI_RETRY_CNT 0x000004E8
515
 
516
        /* Buffer 6 Max Latency Count Register  -- read/write */
517
#define PIC_BUF_6_MAX_LATENCY_CNT 0x000004F0
518
 
519
        /* Buffer 6 Clear All Register  -- read/write */
520
#define PIC_BUF_6_CLEAR_ALL 0x000004F8
521
 
522
        /* Buffer 8 Flush Count with Data Touch Register  -- read/write */
523
#define PIC_BUF_8_FLUSH_CNT_WITH_DATA_TOUCH 0x00000500
524
 
525
        /* Buffer 8 Flush Count w/o Data Touch Register  -- read/write */
526
#define PIC_BUF_8_FLUSH_CNT_W_O_DATA_TOUCH 0x00000508
527
 
528
        /* Buffer 8 Request in Flight Count Register  -- read/write */
529
#define PIC_BUF_8_REQ_IN_FLIGHT_CNT 0x00000510
530
 
531
        /* Buffer 8 Prefetch Request Count Register  -- read/write */
532
#define PIC_BUF_8_PREFETCH_REQ_CNT 0x00000518
533
 
534
        /* Buffer 8 Total PCI Retry Count Register  -- read/write */
535
#define PIC_BUF_8_TOTAL_PCI_RETRY_CNT 0x00000520
536
 
537
        /* Buffer 8 Max PCI Retry Count Register  -- read/write */
538
#define PIC_BUF_8_MAX_PCI_RETRY_CNT 0x00000528
539
 
540
        /* Buffer 8 Max Latency Count Register  -- read/write */
541
#define PIC_BUF_8_MAX_LATENCY_CNT 0x00000530
542
 
543
        /* Buffer 8 Clear All Register  -- read/write */
544
#define PIC_BUF_8_CLEAR_ALL 0x00000538
545
 
546
        /* Buffer 10 Flush Count with Data Touch Register  -- read/write */
547
#define PIC_BUF_10_FLUSH_CNT_WITH_DATA_TOUCH 0x00000540
548
 
549
        /* Buffer 10 Flush Count w/o Data Touch Register  -- read/write */
550
#define PIC_BUF_10_FLUSH_CNT_W_O_DATA_TOUCH 0x00000548
551
 
552
        /* Buffer 10 Request in Flight Count Register  -- read/write */
553
#define PIC_BUF_10_REQ_IN_FLIGHT_CNT 0x00000550
554
 
555
        /* Buffer 10 Prefetch Request Count Register  -- read/write */
556
#define PIC_BUF_10_PREFETCH_REQ_CNT 0x00000558
557
 
558
        /* Buffer 10 Total PCI Retry Count Register  -- read/write */
559
#define PIC_BUF_10_TOTAL_PCI_RETRY_CNT 0x00000560
560
 
561
        /* Buffer 10 Max PCI Retry Count Register  -- read/write */
562
#define PIC_BUF_10_MAX_PCI_RETRY_CNT 0x00000568
563
 
564
        /* Buffer 10 Max Latency Count Register  -- read/write */
565
#define PIC_BUF_10_MAX_LATENCY_CNT 0x00000570
566
 
567
        /* Buffer 10 Clear All Register  -- read/write */
568
#define PIC_BUF_10_CLEAR_ALL 0x00000578
569
 
570
        /* Buffer 12 Flush Count with Data Touch Register  -- read/write */
571
#define PIC_BUF_12_FLUSH_CNT_WITH_DATA_TOUCH 0x00000580
572
 
573
        /* Buffer 12 Flush Count w/o Data Touch Register  -- read/write */
574
#define PIC_BUF_12_FLUSH_CNT_W_O_DATA_TOUCH 0x00000588
575
 
576
        /* Buffer 12 Request in Flight Count Register  -- read/write */
577
#define PIC_BUF_12_REQ_IN_FLIGHT_CNT 0x00000590
578
 
579
        /* Buffer 12 Prefetch Request Count Register  -- read/write */
580
#define PIC_BUF_12_PREFETCH_REQ_CNT 0x00000598
581
 
582
        /* Buffer 12 Total PCI Retry Count Register  -- read/write */
583
#define PIC_BUF_12_TOTAL_PCI_RETRY_CNT 0x000005A0
584
 
585
        /* Buffer 12 Max PCI Retry Count Register  -- read/write */
586
#define PIC_BUF_12_MAX_PCI_RETRY_CNT 0x000005A8
587
 
588
        /* Buffer 12 Max Latency Count Register  -- read/write */
589
#define PIC_BUF_12_MAX_LATENCY_CNT 0x000005B0
590
 
591
        /* Buffer 12 Clear All Register  -- read/write */
592
#define PIC_BUF_12_CLEAR_ALL 0x000005B8
593
 
594
        /* Buffer 14 Flush Count with Data Touch Register  -- read/write */
595
#define PIC_BUF_14_FLUSH_CNT_WITH_DATA_TOUCH 0x000005C0
596
 
597
        /* Buffer 14 Flush Count w/o Data Touch Register  -- read/write */
598
#define PIC_BUF_14_FLUSH_CNT_W_O_DATA_TOUCH 0x000005C8
599
 
600
        /* Buffer 14 Request in Flight Count Register  -- read/write */
601
#define PIC_BUF_14_REQ_IN_FLIGHT_CNT 0x000005D0
602
 
603
        /* Buffer 14 Prefetch Request Count Register  -- read/write */
604
#define PIC_BUF_14_PREFETCH_REQ_CNT 0x000005D8
605
 
606
        /* Buffer 14 Total PCI Retry Count Register  -- read/write */
607
#define PIC_BUF_14_TOTAL_PCI_RETRY_CNT 0x000005E0
608
 
609
        /* Buffer 14 Max PCI Retry Count Register  -- read/write */
610
#define PIC_BUF_14_MAX_PCI_RETRY_CNT 0x000005E8
611
 
612
        /* Buffer 14 Max Latency Count Register  -- read/write */
613
#define PIC_BUF_14_MAX_LATENCY_CNT 0x000005F0
614
 
615
        /* Buffer 14 Clear All Register  -- read/write */
616
#define PIC_BUF_14_CLEAR_ALL 0x000005F8
617
 
618
        /* PCIX Read Buffer 0 Address Register  -- read-only */
619
#define PIC_PCIX_READ_BUF_0_ADDR 0x00000A00
620
 
621
        /* PCIX Read Buffer 0 Attribute Register  -- read-only */
622
#define PIC_PCIX_READ_BUF_0_ATTRIBUTE 0x00000A08
623
 
624
        /* PCIX Read Buffer 1 Address Register  -- read-only */
625
#define PIC_PCIX_READ_BUF_1_ADDR 0x00000A10
626
 
627
        /* PCIX Read Buffer 1 Attribute Register  -- read-only */
628
#define PIC_PCIX_READ_BUF_1_ATTRIBUTE 0x00000A18
629
 
630
        /* PCIX Read Buffer 2 Address Register  -- read-only */
631
#define PIC_PCIX_READ_BUF_2_ADDR 0x00000A20
632
 
633
        /* PCIX Read Buffer 2 Attribute Register  -- read-only */
634
#define PIC_PCIX_READ_BUF_2_ATTRIBUTE 0x00000A28
635
 
636
        /* PCIX Read Buffer 3 Address Register  -- read-only */
637
#define PIC_PCIX_READ_BUF_3_ADDR 0x00000A30
638
 
639
        /* PCIX Read Buffer 3 Attribute Register  -- read-only */
640
#define PIC_PCIX_READ_BUF_3_ATTRIBUTE 0x00000A38
641
 
642
        /* PCIX Read Buffer 4 Address Register  -- read-only */
643
#define PIC_PCIX_READ_BUF_4_ADDR 0x00000A40
644
 
645
        /* PCIX Read Buffer 4 Attribute Register  -- read-only */
646
#define PIC_PCIX_READ_BUF_4_ATTRIBUTE 0x00000A48
647
 
648
        /* PCIX Read Buffer 5 Address Register  -- read-only */
649
#define PIC_PCIX_READ_BUF_5_ADDR 0x00000A50
650
 
651
        /* PCIX Read Buffer 5 Attribute Register  -- read-only */
652
#define PIC_PCIX_READ_BUF_5_ATTRIBUTE 0x00000A58
653
 
654
        /* PCIX Read Buffer 6 Address Register  -- read-only */
655
#define PIC_PCIX_READ_BUF_6_ADDR 0x00000A60
656
 
657
        /* PCIX Read Buffer 6 Attribute Register  -- read-only */
658
#define PIC_PCIX_READ_BUF_6_ATTRIBUTE 0x00000A68
659
 
660
        /* PCIX Read Buffer 7 Address Register  -- read-only */
661
#define PIC_PCIX_READ_BUF_7_ADDR 0x00000A70
662
 
663
        /* PCIX Read Buffer 7 Attribute Register  -- read-only */
664
#define PIC_PCIX_READ_BUF_7_ATTRIBUTE 0x00000A78
665
 
666
        /* PCIX Read Buffer 8 Address Register  -- read-only */
667
#define PIC_PCIX_READ_BUF_8_ADDR 0x00000A80
668
 
669
        /* PCIX Read Buffer 8 Attribute Register  -- read-only */
670
#define PIC_PCIX_READ_BUF_8_ATTRIBUTE 0x00000A88
671
 
672
        /* PCIX Read Buffer 9 Address Register  -- read-only */
673
#define PIC_PCIX_READ_BUF_9_ADDR 0x00000A90
674
 
675
        /* PCIX Read Buffer 9 Attribute Register  -- read-only */
676
#define PIC_PCIX_READ_BUF_9_ATTRIBUTE 0x00000A98
677
 
678
        /* PCIX Read Buffer 10 Address Register  -- read-only */
679
#define PIC_PCIX_READ_BUF_10_ADDR 0x00000AA0
680
 
681
        /* PCIX Read Buffer 10 Attribute Register  -- read-only */
682
#define PIC_PCIX_READ_BUF_10_ATTRIBUTE 0x00000AA8
683
 
684
        /* PCIX Read Buffer 11 Address Register  -- read-only */
685
#define PIC_PCIX_READ_BUF_11_ADDR 0x00000AB0
686
 
687
        /* PCIX Read Buffer 11 Attribute Register  -- read-only */
688
#define PIC_PCIX_READ_BUF_11_ATTRIBUTE 0x00000AB8
689
 
690
        /* PCIX Read Buffer 12 Address Register  -- read-only */
691
#define PIC_PCIX_READ_BUF_12_ADDR 0x00000AC0
692
 
693
        /* PCIX Read Buffer 12 Attribute Register  -- read-only */
694
#define PIC_PCIX_READ_BUF_12_ATTRIBUTE 0x00000AC8
695
 
696
        /* PCIX Read Buffer 13 Address Register  -- read-only */
697
#define PIC_PCIX_READ_BUF_13_ADDR 0x00000AD0
698
 
699
        /* PCIX Read Buffer 13 Attribute Register  -- read-only */
700
#define PIC_PCIX_READ_BUF_13_ATTRIBUTE 0x00000AD8
701
 
702
        /* PCIX Read Buffer 14 Address Register  -- read-only */
703
#define PIC_PCIX_READ_BUF_14_ADDR 0x00000AE0
704
 
705
        /* PCIX Read Buffer 14 Attribute Register  -- read-only */
706
#define PIC_PCIX_READ_BUF_14_ATTRIBUTE 0x00000AE8
707
 
708
        /* PCIX Read Buffer 15 Address Register  -- read-only */
709
#define PIC_PCIX_READ_BUF_15_ADDR 0x00000AF0
710
 
711
        /* PCIX Read Buffer 15 Attribute Register  -- read-only */
712
#define PIC_PCIX_READ_BUF_15_ATTRIBUTE 0x00000AF8
713
 
714
        /* PCIX Write Buffer 0 Address Register  -- read-only */
715
#define PIC_PCIX_WRITE_BUF_0_ADDR 0x00000B00
716
 
717
        /* PCIX Write Buffer 0 Attribute Register  -- read-only */
718
#define PIC_PCIX_WRITE_BUF_0_ATTRIBUTE 0x00000B08
719
 
720
        /* PCIX Write Buffer 0 Valid Register  -- read-only */
721
#define PIC_PCIX_WRITE_BUF_0_VALID 0x00000B10
722
 
723
        /* PCIX Write Buffer 1 Address Register  -- read-only */
724
#define PIC_PCIX_WRITE_BUF_1_ADDR 0x00000B20
725
 
726
        /* PCIX Write Buffer 1 Attribute Register  -- read-only */
727
#define PIC_PCIX_WRITE_BUF_1_ATTRIBUTE 0x00000B28
728
 
729
        /* PCIX Write Buffer 1 Valid Register  -- read-only */
730
#define PIC_PCIX_WRITE_BUF_1_VALID 0x00000B30
731
 
732
        /* PCIX Write Buffer 2 Address Register  -- read-only */
733
#define PIC_PCIX_WRITE_BUF_2_ADDR 0x00000B40
734
 
735
        /* PCIX Write Buffer 2 Attribute Register  -- read-only */
736
#define PIC_PCIX_WRITE_BUF_2_ATTRIBUTE 0x00000B48
737
 
738
        /* PCIX Write Buffer 2 Valid Register  -- read-only */
739
#define PIC_PCIX_WRITE_BUF_2_VALID 0x00000B50
740
 
741
        /* PCIX Write Buffer 3 Address Register  -- read-only */
742
#define PIC_PCIX_WRITE_BUF_3_ADDR 0x00000B60
743
 
744
        /* PCIX Write Buffer 3 Attribute Register  -- read-only */
745
#define PIC_PCIX_WRITE_BUF_3_ATTRIBUTE 0x00000B68
746
 
747
        /* PCIX Write Buffer 3 Valid Register  -- read-only */
748
#define PIC_PCIX_WRITE_BUF_3_VALID 0x00000B70
749
 
750
        /* PCIX Write Buffer 4 Address Register  -- read-only */
751
#define PIC_PCIX_WRITE_BUF_4_ADDR 0x00000B80
752
 
753
        /* PCIX Write Buffer 4 Attribute Register  -- read-only */
754
#define PIC_PCIX_WRITE_BUF_4_ATTRIBUTE 0x00000B88
755
 
756
        /* PCIX Write Buffer 4 Valid Register  -- read-only */
757
#define PIC_PCIX_WRITE_BUF_4_VALID 0x00000B90
758
 
759
        /* PCIX Write Buffer 5 Address Register  -- read-only */
760
#define PIC_PCIX_WRITE_BUF_5_ADDR 0x00000BA0
761
 
762
        /* PCIX Write Buffer 5 Attribute Register  -- read-only */
763
#define PIC_PCIX_WRITE_BUF_5_ATTRIBUTE 0x00000BA8
764
 
765
        /* PCIX Write Buffer 5 Valid Register  -- read-only */
766
#define PIC_PCIX_WRITE_BUF_5_VALID 0x00000BB0
767
 
768
        /* PCIX Write Buffer 6 Address Register  -- read-only */
769
#define PIC_PCIX_WRITE_BUF_6_ADDR 0x00000BC0
770
 
771
        /* PCIX Write Buffer 6 Attribute Register  -- read-only */
772
#define PIC_PCIX_WRITE_BUF_6_ATTRIBUTE 0x00000BC8
773
 
774
        /* PCIX Write Buffer 6 Valid Register  -- read-only */
775
#define PIC_PCIX_WRITE_BUF_6_VALID 0x00000BD0
776
 
777
        /* PCIX Write Buffer 7 Address Register  -- read-only */
778
#define PIC_PCIX_WRITE_BUF_7_ADDR 0x00000BE0
779
 
780
        /* PCIX Write Buffer 7 Attribute Register  -- read-only */
781
#define PIC_PCIX_WRITE_BUF_7_ATTRIBUTE 0x00000BE8
782
 
783
        /* PCIX Write Buffer 7 Valid Register  -- read-only */
784
#define PIC_PCIX_WRITE_BUF_7_VALID 0x00000BF0
785
 
786
/*********************************************************************
787
 * misc typedefs
788
 *
789
 */
790
typedef uint64_t picreg_t;
791
 
792
/*********************************************************************
793
 * PIC register structures
794
 *
795
 */
796
 
797
/*
798
 * Identification Register
799
 *
800
 * The Identification register is a read only register used by the host CPU
801
 * during configuration to determine the type of the widget. The format is
802
 * the same as defined in IEEE 1149.1 JTAG Device Identification Register.
803
 */
804
        typedef union pic_id_reg_u {
805
                picreg_t        pic_id_reg_regval;
806
                struct {
807
                        picreg_t          :     32; /* 63:32 */
808
                        picreg_t rev_num  :     4; /* 31:28 */
809
                        picreg_t part_num :     16; /* 27:12 */
810
                        picreg_t mfg_num  :     11; /* 11:1 */
811
                        picreg_t          :     1; /* 0:0 */
812
                } pic_id_reg_fld_s;
813
        } pic_id_reg_u_t;
814
/*
815
 * Status Register
816
 *
817
 * The status register is a read register which holds status information of the
818
 * Bus Subsection.
819
 */
820
        typedef union pic_stat_reg_u {
821
                picreg_t        pic_stat_reg_regval;
822
                struct {
823
                        picreg_t                :       28; /* 63:36 */
824
                        picreg_t pci_x_speed    :       2; /* 35:34 */
825
                        picreg_t pci_x_active   :       1; /* 33:33 */
826
                        picreg_t                :       1; /* 32:32 */
827
                        picreg_t llp_rec_cnt    :       8; /* 31:24 */
828
                        picreg_t llp_tx_cnt     :       8; /* 23:16 */
829
                        picreg_t rx_credit_cnt  :       4; /* 15:12 */
830
                        picreg_t tx_credit_cnt  :       4; /* 11:8 */
831
                        picreg_t pci_misc_input :       8; /* 7:0 */
832
                } pic_stat_reg_fld_s;
833
        } pic_stat_reg_u_t;
834
/*
835
 * Upper Address Holding Register Bus Side Errors
836
 *
837
 * The upper address holding register is a read only register which contains
838
 * the upper 16-bits of the address when certain error occurs (see error cases
839
 * chapter). Subsequent errors are not logged until the error is cleared. The
840
 * last logged value is held until the group is cleared and enabled.
841
 */
842
        typedef union pic_upper_bus_err_u {
843
                picreg_t        pic_upper_bus_err_regval;
844
                struct {
845
                        picreg_t          :     32; /* 63:32 */
846
                        picreg_t          :     16; /* 31:16 */
847
                        picreg_t upp_addr :     16; /* 15:0 */
848
                } pic_upper_bus_err_fld_s;
849
        } pic_upper_bus_err_u_t;
850
/*
851
 * Lower Address Holding Register Bus Side Errors
852
 *
853
 * The lower address holding register is a read only register which contains
854
 * the address which either can be accessed as a word or double word. Sub-
855
 * sequent errors are not logged until the error is cleared. The last logged
856
 * value is held until the group is cleared and enabled.
857
 */
858
        typedef union pic_lower_bus_err_u {
859
                picreg_t        pic_lower_bus_err_regval;
860
                struct {
861
                        picreg_t          :     16; /* 63:48 */
862
                        picreg_t upp_addr :     16; /* 47:32 */
863
                        picreg_t low_addr :     32; /* 31:0 */
864
                } pic_lower_bus_err_fld_s;
865
        } pic_lower_bus_err_u_t;
866
/*
867
 * Control Register
868
 *
869
 * The control register is a read/write register which holds control informa-
870
 * tion for the bus subsection.
871
 */
872
        typedef union pic_control_reg_u {
873
                picreg_t        pic_control_reg_regval;
874
                struct {
875
                        picreg_t                :       32; /* 63:32 */
876
                        picreg_t                :       4; /* 31:28 */
877
                        picreg_t rst_pin_n      :       4; /* 27:24 */
878
                        picreg_t                :       1; /* 23:23 */
879
                        picreg_t mem_swap       :       1; /* 22:22 */
880
                        picreg_t page_size      :       1; /* 21:21 */
881
                        picreg_t                :       4; /* 20:17 */
882
                        picreg_t f_bad_pkt      :       1; /* 16:16 */
883
                        picreg_t llp_xbar_crd   :       4; /* 15:12 */
884
                        picreg_t clr_rllp_cnt   :       1; /* 11:11 */
885
                        picreg_t clr_tllp_cnt   :       1; /* 10:10 */
886
                        picreg_t sys_end        :       1; /* 9:9 */
887
                        picreg_t                :       3; /* 8:6 */
888
                        picreg_t pci_speed      :       2; /* 5:4 */
889
                        picreg_t widget_id      :       4; /* 3:0 */
890
                } pic_control_reg_fld_s;
891
        } pic_control_reg_u_t;
892
/*
893
 * PCI/PCI-X Request Time-out Value Register
894
 *
895
 * This register contains the reload value for the response timer. The request
896
 * timer counts every 960 nS (32 PCI clocks)
897
 */
898
        typedef union pic_pci_req_to_u {
899
                picreg_t        pic_pci_req_to_regval;
900
                struct {
901
                        picreg_t          :     32; /* 63:32 */
902
                        picreg_t          :     12; /* 31:20 */
903
                        picreg_t time_out :     20; /* 19:0 */
904
                } pic_pci_req_to_fld_s;
905
        } pic_pci_req_to_u_t;
906
/*
907
 * Interrupt Destination Upper Address Register
908
 *
909
 * The interrupt destination upper address register is a read/write register
910
 * containing the upper 16-bits of address of the host to which the interrupt
911
 * is targeted. In addition the target ID is also contained in this register for
912
 * use in Crosstalk mode.
913
 */
914
        typedef union pic_int_desc_upper_u {
915
                picreg_t        pic_int_desc_upper_regval;
916
                struct {
917
                        picreg_t           :    32; /* 63:32 */
918
                        picreg_t           :    12; /* 31:20 */
919
                        picreg_t target_id :    4; /* 19:16 */
920
                        picreg_t upp_addr  :    16; /* 15:0 */
921
                } pic_int_desc_upper_fld_s;
922
        } pic_int_desc_upper_u_t;
923
/*
924
 * Interrupt Destination Lower Address Register
925
 *
926
 * The interrupt destination lower address register is a read/write register
927
 * which contains the entire address of the host to which the interrupt is tar-
928
 * geted. In addition the target ID is also contained in this register for use in
929
 * Crosstalk mode.
930
 */
931
        typedef union pic_int_desc_lower_u {
932
                picreg_t        pic_int_desc_lower_regval;
933
                struct {
934
                        picreg_t           :    12; /* 63:52 */
935
                        picreg_t target_id :    4; /* 51:48 */
936
                        picreg_t upp_addr  :    16; /* 47:32 */
937
                        picreg_t low_addr  :    32; /* 31:0 */
938
                } pic_int_desc_lower_fld_s;
939
        } pic_int_desc_lower_u_t;
940
/*
941
 * Command Word Holding Register Bus Side Errors
942
 *
943
 * The command word holding is a read register that holds the command
944
 * word of a Crosstalk packet when errors occur on the link side (see error
945
 * chapter). Errors are indicated with error bits in the interrupt status regis-
946
 * ter. Subsequent errors are not logged until the interrupt is cleared..
947
 */
948
        typedef union pic_cmd_word_bus_err_u {
949
                picreg_t        pic_cmd_word_bus_err_regval;
950
                struct {
951
                        picreg_t          :     32; /* 63:32 */
952
                        picreg_t didn     :     4; /* 31:28 */
953
                        picreg_t sidn     :     4; /* 27:24 */
954
                        picreg_t pactyp   :     4; /* 23:20 */
955
                        picreg_t tnum     :     5; /* 19:15 */
956
                        picreg_t coherent :     1; /* 14:14 */
957
                        picreg_t ds       :     2; /* 13:12 */
958
                        picreg_t gbr      :     1; /* 11:11 */
959
                        picreg_t vbpm     :     1; /* 10:10 */
960
                        picreg_t error    :     1; /* 9:9 */
961
                        picreg_t barrier  :     1; /* 8:8 */
962
                        picreg_t          :     8; /* 7:0 */
963
                } pic_cmd_word_bus_err_fld_s;
964
        } pic_cmd_word_bus_err_u_t;
965
/*
966
 * LLP Configuration Register
967
 *
968
 * This register contains the configuration information for the LLP modules
969
 * and is only valid on bus 0 side.
970
 */
971
        typedef union pic_llp_cfg_u {
972
                picreg_t        pic_llp_cfg_regval;
973
                struct {
974
                        picreg_t                 :      32; /* 63:32 */
975
                        picreg_t                 :      6; /* 31:26 */
976
                        picreg_t llp_maxretry    :      10; /* 25:16 */
977
                        picreg_t llp_nulltimeout :      6; /* 15:10 */
978
                        picreg_t llp_maxburst    :      10; /* 9:0 */
979
                } pic_llp_cfg_fld_s;
980
        } pic_llp_cfg_u_t;
981
/*
982
 * PCI/PCI-X Target Flush Register
983
 *
984
 * When read, this register will return a 0x00 after all previous transfers to
985
 * the PCI bus subsection have completed.
986
 */
987
 
988
/*
989
 * Command Word Holding Register Link Side Errors
990
 *
991
 * The command word holding is a read-only register that holds the com-
992
 * mand word of a Crosstalk packet when request fifo overflow or unexpect-
993
 * ed response errors occur. Errors are indicated with error bits in the
994
 * interrupt status register. Subsequent errors are not logged until this inter-
995
 * rupt is cleared.
996
 */
997
        typedef union pic_cmd_word_link_err_u {
998
                picreg_t        pic_cmd_word_link_err_regval;
999
                struct {
1000
                        picreg_t          :     32; /* 63:32 */
1001
                        picreg_t didn     :     4; /* 31:28 */
1002
                        picreg_t sidn     :     4; /* 27:24 */
1003
                        picreg_t pactyp   :     4; /* 23:20 */
1004
                        picreg_t tnum     :     5; /* 19:15 */
1005
                        picreg_t coherent :     1; /* 14:14 */
1006
                        picreg_t ds       :     2; /* 13:12 */
1007
                        picreg_t gbr      :     1; /* 11:11 */
1008
                        picreg_t vbpm     :     1; /* 10:10 */
1009
                        picreg_t error    :     1; /* 9:9 */
1010
                        picreg_t barrier  :     1; /* 8:8 */
1011
                        picreg_t          :     8; /* 7:0 */
1012
                } pic_cmd_word_link_err_fld_s;
1013
        } pic_cmd_word_link_err_u_t;
1014
/*
1015
 * PCI Response Buffer Error Upper Address Holding Reg
1016
 *
1017
 * The response buffer error upper address holding register is a read only
1018
 * register which contains the upper 16-bits of the address when error asso-
1019
 * ciated with response buffer entries occur. Subsequent errors are not
1020
 * logged until the interrupt is cleared.
1021
 */
1022
        typedef union pic_pci_rbuf_err_upper_u {
1023
                picreg_t        pic_pci_rbuf_err_upper_regval;
1024
                struct {
1025
                        picreg_t          :     32; /* 63:32 */
1026
                        picreg_t          :     9; /* 31:23 */
1027
                        picreg_t dev_num  :     3; /* 22:20 */
1028
                        picreg_t buff_num :     4; /* 19:16 */
1029
                        picreg_t upp_addr :     16; /* 15:0 */
1030
                } pic_pci_rbuf_err_upper_fld_s;
1031
        } pic_pci_rbuf_err_upper_u_t;
1032
/*
1033
 * PCI Response Buffer Error Lower Address Holding Reg
1034
 *
1035
 * The response buffer error lower address holding register is a read only
1036
 * register which contains the address of the error associated with response
1037
 * buffer entries. Subsequent errors are not logged until the interrupt is
1038
 * cleared.
1039
 */
1040
        typedef union pic_pci_rbuf_err_lower_u {
1041
                picreg_t        pic_pci_rbuf_err_lower_regval;
1042
                struct {
1043
                        picreg_t          :     9; /* 63:55 */
1044
                        picreg_t dev_num  :     3; /* 54:52 */
1045
                        picreg_t buff_num :     4; /* 51:48 */
1046
                        picreg_t upp_addr :     16; /* 47:32 */
1047
                        picreg_t low_addr :     32; /* 31:0 */
1048
                } pic_pci_rbuf_err_lower_fld_s;
1049
        } pic_pci_rbuf_err_lower_u_t;
1050
/*
1051
 * Test Pin Control Register
1052
 *
1053
 * This register selects the output function and value to the four test pins on
1054
 * the PIC .
1055
 */
1056
        typedef union pic_test_pin_cntl_u {
1057
                picreg_t        pic_test_pin_cntl_regval;
1058
                struct {
1059
                        picreg_t            :   32; /* 63:32 */
1060
                        picreg_t            :   8; /* 31:24 */
1061
                        picreg_t tdata_out  :   8; /* 23:16 */
1062
                        picreg_t sel_tpin_7 :   2; /* 15:14 */
1063
                        picreg_t sel_tpin_6 :   2; /* 13:12 */
1064
                        picreg_t sel_tpin_5 :   2; /* 11:10 */
1065
                        picreg_t sel_tpin_4 :   2; /* 9:8 */
1066
                        picreg_t sel_tpin_3 :   2; /* 7:6 */
1067
                        picreg_t sel_tpin_2 :   2; /* 5:4 */
1068
                        picreg_t sel_tpin_1 :   2; /* 3:2 */
1069
                        picreg_t sel_tpin_0 :   2; /* 1:0 */
1070
                } pic_test_pin_cntl_fld_s;
1071
        } pic_test_pin_cntl_u_t;
1072
/*
1073
 * Address Holding Register Link Side Errors
1074
 *
1075
 * The address holding register is a read only register which contains the ad-
1076
 * dress which either can be accessed as a word or double word. Subsequent
1077
 * errors are not logged until the error is cleared. The last logged value is
1078
 * held until the group is cleared and enabled.
1079
 */
1080
        typedef union pic_p_addr_lkerr_u {
1081
                picreg_t        pic_p_addr_lkerr_regval;
1082
                struct {
1083
                        picreg_t          :     16; /* 63:48 */
1084
                        picreg_t upp_addr :     16; /* 47:32 */
1085
                        picreg_t low_addr :     32; /* 31:0 */
1086
                } pic_p_addr_lkerr_fld_s;
1087
        } pic_p_addr_lkerr_u_t;
1088
/*
1089
 * PCI Direct Mapping Register
1090
 *
1091
 * This register is used to relocate a 2 GByte region for PCI to Crosstalk
1092
 * transfers.
1093
 */
1094
        typedef union pic_p_dir_map_u {
1095
                picreg_t        pic_p_dir_map_regval;
1096
                struct {
1097
                        picreg_t            :   32; /* 63:32 */
1098
                        picreg_t            :   8; /* 31:24 */
1099
                        picreg_t dir_w_id   :   4; /* 23:20 */
1100
                        picreg_t            :   2; /* 19:18 */
1101
                        picreg_t dir_add512 :   1; /* 17:17 */
1102
                        picreg_t dir_off    :   17; /* 16:0 */
1103
                } pic_p_dir_map_fld_s;
1104
        } pic_p_dir_map_u_t;
1105
/*
1106
 * PCI Page Map Fault Address Register
1107
 *
1108
 * This register contains the address and device number when a page map
1109
 * fault occurred.
1110
 */
1111
        typedef union pic_p_map_fault_u {
1112
                picreg_t        pic_p_map_fault_regval;
1113
                struct {
1114
                        picreg_t             :  32; /* 63:32 */
1115
                        picreg_t             :  10; /* 31:22 */
1116
                        picreg_t pci_addr    :  18; /* 21:4 */
1117
                        picreg_t             :  1; /* 3:3 */
1118
                        picreg_t pci_dev_num :  3; /* 2:0 */
1119
                } pic_p_map_fault_fld_s;
1120
        } pic_p_map_fault_u_t;
1121
/*
1122
 * Arbitration Register
1123
 *
1124
 * This register defines the priority and bus time out timing in PCI bus arbi-
1125
 * tration.
1126
 */
1127
        typedef union pic_p_arb_u {
1128
                picreg_t        pic_p_arb_regval;
1129
                struct {
1130
                        picreg_t               :        32; /* 63:32 */
1131
                        picreg_t               :        8; /* 31:24 */
1132
                        picreg_t dev_broke     :        4; /* 23:20 */
1133
                        picreg_t               :        2; /* 19:18 */
1134
                        picreg_t req_wait_tick :        2; /* 17:16 */
1135
                        picreg_t               :        4; /* 15:12 */
1136
                        picreg_t req_wait_en   :        4; /* 11:8 */
1137
                        picreg_t disarb        :        1; /* 7:7 */
1138
                        picreg_t freeze_gnt    :        1; /* 6:6 */
1139
                        picreg_t               :        1; /* 5:5 */
1140
                        picreg_t en_bridge_hi  :        2; /* 4:3 */
1141
                        picreg_t               :        1; /* 2:2 */
1142
                        picreg_t en_bridge_lo  :        2; /* 1:0 */
1143
                } pic_p_arb_fld_s;
1144
        } pic_p_arb_u_t;
1145
/*
1146
 * Internal Ram Parity Error Register
1147
 *
1148
 * This register logs information about parity errors on internal ram access.
1149
 */
1150
        typedef union pic_p_ram_perr_u {
1151
                picreg_t        pic_p_ram_perr_regval;
1152
                struct {
1153
                        picreg_t                     :  6; /* 63:58 */
1154
                        picreg_t ate_err_addr        :  10; /* 57:48 */
1155
                        picreg_t                     :  7; /* 47:41 */
1156
                        picreg_t rd_resp_err_addr    :  9; /* 40:32 */
1157
                        picreg_t wrt_resp_err_addr   :  8; /* 31:24 */
1158
                        picreg_t                     :  2; /* 23:22 */
1159
                        picreg_t ate_err             :  1; /* 21:21 */
1160
                        picreg_t rd_resp_err         :  1; /* 20:20 */
1161
                        picreg_t wrt_resp_err        :  1; /* 19:19 */
1162
                        picreg_t dbe_ate             :  3; /* 18:16 */
1163
                        picreg_t dbe_rd              :  8; /* 15:8 */
1164
                        picreg_t dbe_wrt             :  8; /* 7:0 */
1165
                } pic_p_ram_perr_fld_s;
1166
        } pic_p_ram_perr_u_t;
1167
/*
1168
 * Time-out Register
1169
 *
1170
 * This register determines retry hold off and max retries allowed for PIO
1171
 * accesses to PCI/PCI-X.
1172
 */
1173
        typedef union pic_p_bus_timeout_u {
1174
                picreg_t        pic_p_bus_timeout_regval;
1175
                struct {
1176
                        picreg_t               :        32; /* 63:32 */
1177
                        picreg_t               :        11; /* 31:21 */
1178
                        picreg_t pci_retry_hld :        5; /* 20:16 */
1179
                        picreg_t               :        6; /* 15:10 */
1180
                        picreg_t pci_retry_cnt :        10; /* 9:0 */
1181
                } pic_p_bus_timeout_fld_s;
1182
        } pic_p_bus_timeout_u_t;
1183
/*
1184
 * PCI/PCI-X Type 1 Configuration Register
1185
 *
1186
 * This register is use during accesses to the PCI/PCI-X type 1 configuration
1187
 * space. The bits in this register are used to supplement the address during
1188
 * the configuration cycle to select the correct secondary bus and device.
1189
 */
1190
        typedef union pic_type1_cfg_u {
1191
                picreg_t        pic_type1_cfg_regval;
1192
                struct {
1193
                        picreg_t         :      32; /* 63:32 */
1194
                        picreg_t         :      8; /* 31:24 */
1195
                        picreg_t bus_num :      8; /* 23:16 */
1196
                        picreg_t dev_num :      5; /* 15:11 */
1197
                        picreg_t         :      11; /* 10:0 */
1198
                } pic_type1_cfg_fld_s;
1199
        } pic_type1_cfg_u_t;
1200
/*
1201
 * PCI Bus Error Upper Address Holding Register
1202
 *
1203
 * This register holds the value of the upper address on the PCI Bus when an
1204
 * error occurs.
1205
 */
1206
        typedef union pic_p_pci_err_upper_u {
1207
                picreg_t        pic_p_pci_err_upper_regval;
1208
                struct {
1209
                        picreg_t                :       32; /* 63:32 */
1210
                        picreg_t                :       4; /* 31:28 */
1211
                        picreg_t pci_xtalk_did  :       4; /* 27:24 */
1212
                        picreg_t                :       2; /* 23:22 */
1213
                        picreg_t pci_dac        :       1; /* 21:21 */
1214
                        picreg_t pci_dev_master :       1; /* 20:20 */
1215
                        picreg_t pci_vdev       :       1; /* 19:19 */
1216
                        picreg_t pci_dev_num    :       3; /* 18:16 */
1217
                        picreg_t pci_uaddr_err  :       16; /* 15:0 */
1218
                } pic_p_pci_err_upper_fld_s;
1219
        } pic_p_pci_err_upper_u_t;
1220
/*
1221
 * PCI Bus Error Lower Address Holding Register
1222
 *
1223
 * This register holds the value of the lower address on the PCI Bus when an
1224
 * error occurs.
1225
 */
1226
        typedef union pic_p_pci_err_lower_u {
1227
                picreg_t        pic_p_pci_err_lower_regval;
1228
                struct {
1229
                        picreg_t                :       4; /* 63:60 */
1230
                        picreg_t pci_xtalk_did  :       4; /* 59:56 */
1231
                        picreg_t                :       2; /* 55:54 */
1232
                        picreg_t pci_dac        :       1; /* 53:53 */
1233
                        picreg_t pci_dev_master :       1; /* 52:52 */
1234
                        picreg_t pci_vdev       :       1; /* 51:51 */
1235
                        picreg_t pci_dev_num    :       3; /* 50:48 */
1236
                        picreg_t pci_uaddr_err  :       16; /* 47:32 */
1237
                        picreg_t pci_laddr_err  :       32; /* 31:0 */
1238
                } pic_p_pci_err_lower_fld_s;
1239
        } pic_p_pci_err_lower_u_t;
1240
/*
1241
 * PCI-X Error Address Register
1242
 *
1243
 * This register contains the address on the PCI-X bus when an error oc-
1244
 * curred.
1245
 */
1246
        typedef union pic_p_pcix_err_addr_u {
1247
                picreg_t        pic_p_pcix_err_addr_regval;
1248
                struct {
1249
                        picreg_t pcix_err_addr :        64; /* 63:0 */
1250
                } pic_p_pcix_err_addr_fld_s;
1251
        } pic_p_pcix_err_addr_u_t;
1252
/*
1253
 * PCI-X Error Attribute Register
1254
 *
1255
 * This register contains the attribute data on the PCI-X bus when an error
1256
 * occurred.
1257
 */
1258
        typedef union pic_p_pcix_err_attr_u {
1259
                picreg_t        pic_p_pcix_err_attr_regval;
1260
                struct {
1261
                        picreg_t            :   16; /* 63:48 */
1262
                        picreg_t bus_cmd    :   4; /* 47:44 */
1263
                        picreg_t byte_cnt   :   12; /* 43:32 */
1264
                        picreg_t            :   1; /* 31:31 */
1265
                        picreg_t ns         :   1; /* 30:30 */
1266
                        picreg_t ro         :   1; /* 29:29 */
1267
                        picreg_t tag        :   5; /* 28:24 */
1268
                        picreg_t bus_num    :   8; /* 23:16 */
1269
                        picreg_t dev_num    :   5; /* 15:11 */
1270
                        picreg_t fun_num    :   3; /* 10:8 */
1271
                        picreg_t l_byte_cnt :   8; /* 7:0 */
1272
                } pic_p_pcix_err_attr_fld_s;
1273
        } pic_p_pcix_err_attr_u_t;
1274
/*
1275
 * PCI-X Error Data Register
1276
 *
1277
 * This register contains the Data on the PCI-X bus when an error occurred.
1278
 */
1279
        typedef union pic_p_pcix_err_data_u {
1280
                picreg_t        pic_p_pcix_err_data_regval;
1281
                struct {
1282
                        picreg_t pcix_err_data :        64; /* 63:0 */
1283
                } pic_p_pcix_err_data_fld_s;
1284
        } pic_p_pcix_err_data_u_t;
1285
/*
1286
 * PCI-X Read Request Timeout Error Register
1287
 *
1288
 * This register contains a pointer into the PCI-X read data structure.
1289
 */
1290
        typedef union pic_p_pcix_read_req_to_u {
1291
                picreg_t        pic_p_pcix_read_req_to_regval;
1292
                struct {
1293
                        picreg_t                :       55; /* 63:9 */
1294
                        picreg_t rd_buff_loc    :       5; /* 8:4 */
1295
                        picreg_t rd_buff_struct :       4; /* 3:0 */
1296
                } pic_p_pcix_read_req_to_fld_s;
1297
        } pic_p_pcix_read_req_to_u_t;
1298
/*
1299
 * INT_STATUS Register
1300
 *
1301
 * This is the current interrupt status register which maintains the current
1302
 * status of all the interrupting devices which generated a n interrupt. This
1303
 * register is read only and all the bits are active high. A high bit at
1304
 * INT_STATE means the corresponding INT_N pin has been asserted
1305
 * (low).
1306
 */
1307
        typedef union pic_p_int_status_u {
1308
                picreg_t        pic_p_int_status_regval;
1309
                struct {
1310
                        picreg_t                  :     22; /* 63:42 */
1311
                        picreg_t int_ram_perr     :     1; /* 41:41 */
1312
                        picreg_t bus_arb_broke    :     1; /* 40:40 */
1313
                        picreg_t pci_x_req_tout   :     1; /* 39:39 */
1314
                        picreg_t pci_x_tabort     :     1; /* 38:38 */
1315
                        picreg_t pci_x_perr       :     1; /* 37:37 */
1316
                        picreg_t pci_x_serr       :     1; /* 36:36 */
1317
                        picreg_t pci_x_mretry     :     1; /* 35:35 */
1318
                        picreg_t pci_x_mtout      :     1; /* 34:34 */
1319
                        picreg_t pci_x_da_parity  :     1; /* 33:33 */
1320
                        picreg_t pci_x_ad_parity  :     1; /* 32:32 */
1321
                        picreg_t                  :     1; /* 31:31 */
1322
                        picreg_t pmu_page_fault   :     1; /* 30:30 */
1323
                        picreg_t unexpected_resp  :     1; /* 29:29 */
1324
                        picreg_t bad_xresp_packet :     1; /* 28:28 */
1325
                        picreg_t bad_xreq_packet  :     1; /* 27:27 */
1326
                        picreg_t resp_xtalk_error :     1; /* 26:26 */
1327
                        picreg_t req_xtalk_error  :     1; /* 25:25 */
1328
                        picreg_t invalid_access   :     1; /* 24:24 */
1329
                        picreg_t unsupported_xop  :     1; /* 23:23 */
1330
                        picreg_t xreq_fifo_oflow  :     1; /* 22:22 */
1331
                        picreg_t llp_rec_snerror  :     1; /* 21:21 */
1332
                        picreg_t llp_rec_cberror  :     1; /* 20:20 */
1333
                        picreg_t llp_rcty         :     1; /* 19:19 */
1334
                        picreg_t llp_tx_retry     :     1; /* 18:18 */
1335
                        picreg_t llp_tcty         :     1; /* 17:17 */
1336
                        picreg_t                  :     1; /* 16:16 */
1337
                        picreg_t pci_abort        :     1; /* 15:15 */
1338
                        picreg_t pci_parity       :     1; /* 14:14 */
1339
                        picreg_t pci_serr         :     1; /* 13:13 */
1340
                        picreg_t pci_perr         :     1; /* 12:12 */
1341
                        picreg_t pci_master_tout  :     1; /* 11:11 */
1342
                        picreg_t pci_retry_cnt    :     1; /* 10:10 */
1343
                        picreg_t xread_req_tout   :     1; /* 9:9 */
1344
                        picreg_t                  :     1; /* 8:8 */
1345
                        picreg_t int_state        :     8; /* 7:0 */
1346
                } pic_p_int_status_fld_s;
1347
        } pic_p_int_status_u_t;
1348
/*
1349
 * Interrupt Enable Register
1350
 *
1351
 * This register enables the reporting of interrupt to the host. Each bit in this
1352
 * register corresponds to the same bit in Interrupt Status register. All bits
1353
 * are zero after reset.
1354
 */
1355
        typedef union pic_p_int_enable_u {
1356
                picreg_t        pic_p_int_enable_regval;
1357
                struct {
1358
                        picreg_t                     :  22; /* 63:42 */
1359
                        picreg_t en_int_ram_perr     :  1; /* 41:41 */
1360
                        picreg_t en_bus_arb_broke    :  1; /* 40:40 */
1361
                        picreg_t en_pci_x_req_tout   :  1; /* 39:39 */
1362
                        picreg_t en_pci_x_tabort     :  1; /* 38:38 */
1363
                        picreg_t en_pci_x_perr       :  1; /* 37:37 */
1364
                        picreg_t en_pci_x_serr       :  1; /* 36:36 */
1365
                        picreg_t en_pci_x_mretry     :  1; /* 35:35 */
1366
                        picreg_t en_pci_x_mtout      :  1; /* 34:34 */
1367
                        picreg_t en_pci_x_da_parity  :  1; /* 33:33 */
1368
                        picreg_t en_pci_x_ad_parity  :  1; /* 32:32 */
1369
                        picreg_t                     :  1; /* 31:31 */
1370
                        picreg_t en_pmu_page_fault   :  1; /* 30:30 */
1371
                        picreg_t en_unexpected_resp  :  1; /* 29:29 */
1372
                        picreg_t en_bad_xresp_packet :  1; /* 28:28 */
1373
                        picreg_t en_bad_xreq_packet  :  1; /* 27:27 */
1374
                        picreg_t en_resp_xtalk_error :  1; /* 26:26 */
1375
                        picreg_t en_req_xtalk_error  :  1; /* 25:25 */
1376
                        picreg_t en_invalid_access   :  1; /* 24:24 */
1377
                        picreg_t en_unsupported_xop  :  1; /* 23:23 */
1378
                        picreg_t en_xreq_fifo_oflow  :  1; /* 22:22 */
1379
                        picreg_t en_llp_rec_snerror  :  1; /* 21:21 */
1380
                        picreg_t en_llp_rec_cberror  :  1; /* 20:20 */
1381
                        picreg_t en_llp_rcty         :  1; /* 19:19 */
1382
                        picreg_t en_llp_tx_retry     :  1; /* 18:18 */
1383
                        picreg_t en_llp_tcty         :  1; /* 17:17 */
1384
                        picreg_t                     :  1; /* 16:16 */
1385
                        picreg_t en_pci_abort        :  1; /* 15:15 */
1386
                        picreg_t en_pci_parity       :  1; /* 14:14 */
1387
                        picreg_t en_pci_serr         :  1; /* 13:13 */
1388
                        picreg_t en_pci_perr         :  1; /* 12:12 */
1389
                        picreg_t en_pci_master_tout  :  1; /* 11:11 */
1390
                        picreg_t en_pci_retry_cnt    :  1; /* 10:10 */
1391
                        picreg_t en_xread_req_tout   :  1; /* 9:9 */
1392
                        picreg_t                     :  1; /* 8:8 */
1393
                        picreg_t en_int_state        :  8; /* 7:0 */
1394
                } pic_p_int_enable_fld_s;
1395
        } pic_p_int_enable_u_t;
1396
/*
1397
 * Reset Interrupt Register
1398
 *
1399
 * A write of a "1" clears the bit and rearms the error registers. Writes also
1400
 * clear the error view register.
1401
 */
1402
        typedef union pic_p_int_rst_u {
1403
                picreg_t        pic_p_int_rst_regval;
1404
                struct {
1405
                        picreg_t                       :        22; /* 63:42 */
1406
                        picreg_t logv_int_ram_perr     :        1; /* 41:41 */
1407
                        picreg_t logv_bus_arb_broke    :        1; /* 40:40 */
1408
                        picreg_t logv_pci_x_req_tout   :        1; /* 39:39 */
1409
                        picreg_t logv_pci_x_tabort     :        1; /* 38:38 */
1410
                        picreg_t logv_pci_x_perr       :        1; /* 37:37 */
1411
                        picreg_t logv_pci_x_serr       :        1; /* 36:36 */
1412
                        picreg_t logv_pci_x_mretry     :        1; /* 35:35 */
1413
                        picreg_t logv_pci_x_mtout      :        1; /* 34:34 */
1414
                        picreg_t logv_pci_x_da_parity  :        1; /* 33:33 */
1415
                        picreg_t logv_pci_x_ad_parity  :        1; /* 32:32 */
1416
                        picreg_t                       :        1; /* 31:31 */
1417
                        picreg_t logv_pmu_page_fault   :        1; /* 30:30 */
1418
                        picreg_t logv_unexpected_resp  :        1; /* 29:29 */
1419
                        picreg_t logv_bad_xresp_packet :        1; /* 28:28 */
1420
                        picreg_t logv_bad_xreq_packet  :        1; /* 27:27 */
1421
                        picreg_t logv_resp_xtalk_error :        1; /* 26:26 */
1422
                        picreg_t logv_req_xtalk_error  :        1; /* 25:25 */
1423
                        picreg_t logv_invalid_access   :        1; /* 24:24 */
1424
                        picreg_t logv_unsupported_xop  :        1; /* 23:23 */
1425
                        picreg_t logv_xreq_fifo_oflow  :        1; /* 22:22 */
1426
                        picreg_t logv_llp_rec_snerror  :        1; /* 21:21 */
1427
                        picreg_t logv_llp_rec_cberror  :        1; /* 20:20 */
1428
                        picreg_t logv_llp_rcty         :        1; /* 19:19 */
1429
                        picreg_t logv_llp_tx_retry     :        1; /* 18:18 */
1430
                        picreg_t logv_llp_tcty         :        1; /* 17:17 */
1431
                        picreg_t                       :        1; /* 16:16 */
1432
                        picreg_t logv_pci_abort        :        1; /* 15:15 */
1433
                        picreg_t logv_pci_parity       :        1; /* 14:14 */
1434
                        picreg_t logv_pci_serr         :        1; /* 13:13 */
1435
                        picreg_t logv_pci_perr         :        1; /* 12:12 */
1436
                        picreg_t logv_pci_master_tout  :        1; /* 11:11 */
1437
                        picreg_t logv_pci_retry_cnt    :        1; /* 10:10 */
1438
                        picreg_t logv_xread_req_tout   :        1; /* 9:9 */
1439
                        picreg_t                       :        2; /* 8:7 */
1440
                        picreg_t multi_clr             :        1; /* 6:6 */
1441
                        picreg_t                       :        6; /* 5:0 */
1442
                } pic_p_int_rst_fld_s;
1443
        } pic_p_int_rst_u_t;
1444
 
1445
/*
1446
 * Interrupt Mode Register
1447
 *
1448
 * This register defines the interrupting mode of the INT_N pins.
1449
 */
1450
        typedef union pic_p_int_mode_u {
1451
                picreg_t        pic_p_int_mode_regval;
1452
                struct {
1453
                        picreg_t            :   32; /* 63:32 */
1454
                        picreg_t            :   24; /* 31:8 */
1455
                        picreg_t en_clr_pkt :   8; /* 7:0 */
1456
                } pic_p_int_mode_fld_s;
1457
        } pic_p_int_mode_u_t;
1458
/*
1459
 * Interrupt Device Select Register
1460
 *
1461
 * This register associates interrupt pins with devices thus allowing buffer
1462
 * management (flushing) when a device interrupt occurs.
1463
 */
1464
        typedef union pic_p_int_device_u {
1465
                picreg_t        pic_p_int_device_regval;
1466
                struct {
1467
                        picreg_t          :     32; /* 63:32 */
1468
                        picreg_t          :     8; /* 31:24 */
1469
                        picreg_t int7_dev :     3; /* 23:21 */
1470
                        picreg_t int6_dev :     3; /* 20:18 */
1471
                        picreg_t int5_dev :     3; /* 17:15 */
1472
                        picreg_t int4_dev :     3; /* 14:12 */
1473
                        picreg_t int3_dev :     3; /* 11:9 */
1474
                        picreg_t int2_dev :     3; /* 8:6 */
1475
                        picreg_t int1_dev :     3; /* 5:3 */
1476
                        picreg_t int0_dev :     3; /* 2:0 */
1477
                } pic_p_int_device_fld_s;
1478
        } pic_p_int_device_u_t;
1479
/*
1480
 * Host Error Interrupt Field Register
1481
 *
1482
 * This register tells which bit location in the host's Interrupt Status register
1483
 * to set or reset when any error condition happens.
1484
 */
1485
        typedef union pic_p_int_host_err_u {
1486
                picreg_t        pic_p_int_host_err_regval;
1487
                struct {
1488
                        picreg_t                :       32; /* 63:32 */
1489
                        picreg_t                :       24; /* 31:8 */
1490
                        picreg_t bridge_err_fld :       8; /* 7:0 */
1491
                } pic_p_int_host_err_fld_s;
1492
        } pic_p_int_host_err_u_t;
1493
/*
1494
 * Interrupt (x) Host Address Register
1495
 *
1496
 * This register allow different host address to be assigned to each interrupt
1497
 * pin and the bit in the host.
1498
 */
1499
        typedef union pic_p_int_addr_u {
1500
                picreg_t        pic_p_int_addr_regval;
1501
                struct {
1502
                        picreg_t          :     8; /* 63:56 */
1503
                        picreg_t int_fld  :     8; /* 55:48 */
1504
                        picreg_t int_addr :     48; /* 47:0 */
1505
                } pic_p_int_addr_fld_s;
1506
        } pic_p_int_addr_u_t;
1507
/*
1508
 * Error Interrupt View Register
1509
 *
1510
 * This register contains the view of which interrupt occur even if they are
1511
 * not currently enabled. The group clear is used to clear these bits just like
1512
 * the interrupt status register bits.
1513
 */
1514
        typedef union pic_p_err_int_view_u {
1515
                picreg_t        pic_p_err_int_view_regval;
1516
                struct {
1517
                        picreg_t                  :     22; /* 63:42 */
1518
                        picreg_t int_ram_perr     :     1; /* 41:41 */
1519
                        picreg_t bus_arb_broke    :     1; /* 40:40 */
1520
                        picreg_t pci_x_req_tout   :     1; /* 39:39 */
1521
                        picreg_t pci_x_tabort     :     1; /* 38:38 */
1522
                        picreg_t pci_x_perr       :     1; /* 37:37 */
1523
                        picreg_t pci_x_serr       :     1; /* 36:36 */
1524
                        picreg_t pci_x_mretry     :     1; /* 35:35 */
1525
                        picreg_t pci_x_mtout      :     1; /* 34:34 */
1526
                        picreg_t pci_x_da_parity  :     1; /* 33:33 */
1527
                        picreg_t pci_x_ad_parity  :     1; /* 32:32 */
1528
                        picreg_t                  :     1; /* 31:31 */
1529
                        picreg_t pmu_page_fault   :     1; /* 30:30 */
1530
                        picreg_t unexpected_resp  :     1; /* 29:29 */
1531
                        picreg_t bad_xresp_packet :     1; /* 28:28 */
1532
                        picreg_t bad_xreq_packet  :     1; /* 27:27 */
1533
                        picreg_t resp_xtalk_error :     1; /* 26:26 */
1534
                        picreg_t req_xtalk_error  :     1; /* 25:25 */
1535
                        picreg_t invalid_access   :     1; /* 24:24 */
1536
                        picreg_t unsupported_xop  :     1; /* 23:23 */
1537
                        picreg_t xreq_fifo_oflow  :     1; /* 22:22 */
1538
                        picreg_t llp_rec_snerror  :     1; /* 21:21 */
1539
                        picreg_t llp_rec_cberror  :     1; /* 20:20 */
1540
                        picreg_t llp_rcty         :     1; /* 19:19 */
1541
                        picreg_t llp_tx_retry     :     1; /* 18:18 */
1542
                        picreg_t llp_tcty         :     1; /* 17:17 */
1543
                        picreg_t                  :     1; /* 16:16 */
1544
                        picreg_t pci_abort        :     1; /* 15:15 */
1545
                        picreg_t pci_parity       :     1; /* 14:14 */
1546
                        picreg_t pci_serr         :     1; /* 13:13 */
1547
                        picreg_t pci_perr         :     1; /* 12:12 */
1548
                        picreg_t pci_master_tout  :     1; /* 11:11 */
1549
                        picreg_t pci_retry_cnt    :     1; /* 10:10 */
1550
                        picreg_t xread_req_tout   :     1; /* 9:9 */
1551
                        picreg_t                  :     9; /* 8:0 */
1552
                } pic_p_err_int_view_fld_s;
1553
        } pic_p_err_int_view_u_t;
1554
 
1555
 
1556
/*
1557
 * Multiple Interrupt Register
1558
 *
1559
 * This register indicates if any interrupt occurs more than once without be-
1560
 * ing cleared.
1561
 */
1562
        typedef union pic_p_mult_int_u {
1563
                picreg_t        pic_p_mult_int_regval;
1564
                struct {
1565
                        picreg_t                  :     22; /* 63:42 */
1566
                        picreg_t int_ram_perr     :     1; /* 41:41 */
1567
                        picreg_t bus_arb_broke    :     1; /* 40:40 */
1568
                        picreg_t pci_x_req_tout   :     1; /* 39:39 */
1569
                        picreg_t pci_x_tabort     :     1; /* 38:38 */
1570
                        picreg_t pci_x_perr       :     1; /* 37:37 */
1571
                        picreg_t pci_x_serr       :     1; /* 36:36 */
1572
                        picreg_t pci_x_mretry     :     1; /* 35:35 */
1573
                        picreg_t pci_x_mtout      :     1; /* 34:34 */
1574
                        picreg_t pci_x_da_parity  :     1; /* 33:33 */
1575
                        picreg_t pci_x_ad_parity  :     1; /* 32:32 */
1576
                        picreg_t                  :     1; /* 31:31 */
1577
                        picreg_t pmu_page_fault   :     1; /* 30:30 */
1578
                        picreg_t unexpected_resp  :     1; /* 29:29 */
1579
                        picreg_t bad_xresp_packet :     1; /* 28:28 */
1580
                        picreg_t bad_xreq_packet  :     1; /* 27:27 */
1581
                        picreg_t resp_xtalk_error :     1; /* 26:26 */
1582
                        picreg_t req_xtalk_error  :     1; /* 25:25 */
1583
                        picreg_t invalid_access   :     1; /* 24:24 */
1584
                        picreg_t unsupported_xop  :     1; /* 23:23 */
1585
                        picreg_t xreq_fifo_oflow  :     1; /* 22:22 */
1586
                        picreg_t llp_rec_snerror  :     1; /* 21:21 */
1587
                        picreg_t llp_rec_cberror  :     1; /* 20:20 */
1588
                        picreg_t llp_rcty         :     1; /* 19:19 */
1589
                        picreg_t llp_tx_retry     :     1; /* 18:18 */
1590
                        picreg_t llp_tcty         :     1; /* 17:17 */
1591
                        picreg_t                  :     1; /* 16:16 */
1592
                        picreg_t pci_abort        :     1; /* 15:15 */
1593
                        picreg_t pci_parity       :     1; /* 14:14 */
1594
                        picreg_t pci_serr         :     1; /* 13:13 */
1595
                        picreg_t pci_perr         :     1; /* 12:12 */
1596
                        picreg_t pci_master_tout  :     1; /* 11:11 */
1597
                        picreg_t pci_retry_cnt    :     1; /* 10:10 */
1598
                        picreg_t xread_req_tout   :     1; /* 9:9 */
1599
                        picreg_t                  :     1; /* 8:8 */
1600
                        picreg_t int_state        :     8; /* 7:0 */
1601
                } pic_p_mult_int_fld_s;
1602
        } pic_p_mult_int_u_t;
1603
/*
1604
 * Force Always Interrupt (x) Register
1605
 *
1606
 * A write to this data independent write only register will force a set inter-
1607
 * rupt to occur as if the interrupt line had transitioned. If the interrupt line
1608
 * is already active an addition set interrupt packet is set. All buffer flush op-
1609
 * erations also occur on this operation.
1610
 */
1611
 
1612
 
1613
/*
1614
 * Force Interrupt (x) Register
1615
 *
1616
 * A write to this data independent write only register in conjunction with
1617
 * the assertion of the corresponding interrupt line will force a set interrupt
1618
 * to occur as if the interrupt line had transitioned. The interrupt line must
1619
 * be active for this operation to generate a set packet, otherwise the write
1620
 * PIO is ignored. All buffer flush operations also occur when the set packet
1621
 * is sent on this operation.
1622
 */
1623
 
1624
 
1625
/*
1626
 * Device Registers
1627
 *
1628
 * The Device registers contain device specific and mapping information.
1629
 */
1630
        typedef union pic_device_reg_u {
1631
                picreg_t        pic_device_reg_regval;
1632
                struct {
1633
                        picreg_t               :        32; /* 63:32 */
1634
                        picreg_t               :        2; /* 31:30 */
1635
                        picreg_t en_virtual1   :        1; /* 29:29 */
1636
                        picreg_t en_error_lock :        1; /* 28:28 */
1637
                        picreg_t en_page_chk   :        1; /* 27:27 */
1638
                        picreg_t force_pci_par :        1; /* 26:26 */
1639
                        picreg_t en_virtual0   :        1; /* 25:25 */
1640
                        picreg_t               :        1; /* 24:24 */
1641
                        picreg_t dir_wrt_gen   :        1; /* 23:23 */
1642
                        picreg_t dev_size      :        1; /* 22:22 */
1643
                        picreg_t real_time     :        1; /* 21:21 */
1644
                        picreg_t               :        1; /* 20:20 */
1645
                        picreg_t swap_direct   :        1; /* 19:19 */
1646
                        picreg_t prefetch      :        1; /* 18:18 */
1647
                        picreg_t precise       :        1; /* 17:17 */
1648
                        picreg_t coherent      :        1; /* 16:16 */
1649
                        picreg_t barrier       :        1; /* 15:15 */
1650
                        picreg_t gbr           :        1; /* 14:14 */
1651
                        picreg_t dev_swap      :        1; /* 13:13 */
1652
                        picreg_t dev_io_mem    :        1; /* 12:12 */
1653
                        picreg_t dev_off       :        12; /* 11:0 */
1654
                } pic_device_reg_fld_s;
1655
        } pic_device_reg_u_t;
1656
/*
1657
 * Device (x) Write Request Buffer Flush
1658
 *
1659
 * When read, this register will return a 0x00 after the write buffer associat-
1660
 * ed with the device has been flushed. (PCI Only)
1661
 */
1662
 
1663
 
1664
/*
1665
 * Even Device Read Response Buffer Register (PCI Only)
1666
 *
1667
 * This register is use to allocate the read response buffers for the even num-
1668
 * bered devices. (0,2)
1669
 */
1670
        typedef union pic_p_even_resp_u {
1671
                picreg_t        pic_p_even_resp_regval;
1672
                struct {
1673
                        picreg_t              : 32; /* 63:32 */
1674
                        picreg_t buff_14_en   : 1; /* 31:31 */
1675
                        picreg_t buff_14_vdev : 2; /* 30:29 */
1676
                        picreg_t buff_14_pdev : 1; /* 28:28 */
1677
                        picreg_t buff_12_en   : 1; /* 27:27 */
1678
                        picreg_t buff_12_vdev : 2; /* 26:25 */
1679
                        picreg_t buff_12_pdev : 1; /* 24:24 */
1680
                        picreg_t buff_10_en   : 1; /* 23:23 */
1681
                        picreg_t buff_10_vdev : 2; /* 22:21 */
1682
                        picreg_t buff_10_pdev : 1; /* 20:20 */
1683
                        picreg_t buff_8_en    : 1; /* 19:19 */
1684
                        picreg_t buff_8_vdev  : 2; /* 18:17 */
1685
                        picreg_t buff_8_pdev  : 1; /* 16:16 */
1686
                        picreg_t buff_6_en    : 1; /* 15:15 */
1687
                        picreg_t buff_6_vdev  : 2; /* 14:13 */
1688
                        picreg_t buff_6_pdev  : 1; /* 12:12 */
1689
                        picreg_t buff_4_en    : 1; /* 11:11 */
1690
                        picreg_t buff_4_vdev  : 2; /* 10:9 */
1691
                        picreg_t buff_4_pdev  : 1; /* 8:8 */
1692
                        picreg_t buff_2_en    : 1; /* 7:7 */
1693
                        picreg_t buff_2_vdev  : 2; /* 6:5 */
1694
                        picreg_t buff_2_pdev  : 1; /* 4:4 */
1695
                        picreg_t buff_0_en    : 1; /* 3:3 */
1696
                        picreg_t buff_0_vdev  : 2; /* 2:1 */
1697
                        picreg_t buff_0_pdev  : 1; /* 0:0 */
1698
                } pic_p_even_resp_fld_s;
1699
        } pic_p_even_resp_u_t;
1700
/*
1701
 * Odd Device Read Response Buffer Register (PCI Only)
1702
 *
1703
 * This register is use to allocate the read response buffers for the odd num-
1704
 * bered devices. (1,3))
1705
 */
1706
        typedef union pic_p_odd_resp_u {
1707
                picreg_t        pic_p_odd_resp_regval;
1708
                struct {
1709
                        picreg_t              : 32; /* 63:32 */
1710
                        picreg_t buff_15_en   : 1; /* 31:31 */
1711
                        picreg_t buff_15_vdev : 2; /* 30:29 */
1712
                        picreg_t buff_15_pdev : 1; /* 28:28 */
1713
                        picreg_t buff_13_en   : 1; /* 27:27 */
1714
                        picreg_t buff_13_vdev : 2; /* 26:25 */
1715
                        picreg_t buff_13_pdev : 1; /* 24:24 */
1716
                        picreg_t buff_11_en   : 1; /* 23:23 */
1717
                        picreg_t buff_11_vdev : 2; /* 22:21 */
1718
                        picreg_t buff_11_pdev : 1; /* 20:20 */
1719
                        picreg_t buff_9_en    : 1; /* 19:19 */
1720
                        picreg_t buff_9_vdev  : 2; /* 18:17 */
1721
                        picreg_t buff_9_pdev  : 1; /* 16:16 */
1722
                        picreg_t buff_7_en    : 1; /* 15:15 */
1723
                        picreg_t buff_7_vdev  : 2; /* 14:13 */
1724
                        picreg_t buff_7_pdev  : 1; /* 12:12 */
1725
                        picreg_t buff_5_en    : 1; /* 11:11 */
1726
                        picreg_t buff_5_vdev  : 2; /* 10:9 */
1727
                        picreg_t buff_5_pdev  : 1; /* 8:8 */
1728
                        picreg_t buff_3_en    : 1; /* 7:7 */
1729
                        picreg_t buff_3_vdev  : 2; /* 6:5 */
1730
                        picreg_t buff_3_pdev  : 1; /* 4:4 */
1731
                        picreg_t buff_1_en    : 1; /* 3:3 */
1732
                        picreg_t buff_1_vdev  : 2; /* 2:1 */
1733
                        picreg_t buff_1_pdev  : 1; /* 0:0 */
1734
                } pic_p_odd_resp_fld_s;
1735
        } pic_p_odd_resp_u_t;
1736
/*
1737
 * Read Response Buffer Status Register (PCI Only)
1738
 *
1739
 * This read only register contains the current response buffer status.
1740
 */
1741
        typedef union pic_p_resp_status_u {
1742
                picreg_t        pic_p_resp_status_regval;
1743
                struct {
1744
                        picreg_t           :    32; /* 63:32 */
1745
                        picreg_t rrb_valid :    16; /* 31:16 */
1746
                        picreg_t rrb_inuse :    16; /* 15:0 */
1747
                } pic_p_resp_status_fld_s;
1748
        } pic_p_resp_status_u_t;
1749
/*
1750
 * Read Response Buffer Clear Register (PCI Only)
1751
 *
1752
 * A write to this register clears the current contents of the buffer.
1753
 */
1754
        typedef union pic_p_resp_clear_u {
1755
                picreg_t        pic_p_resp_clear_regval;
1756
                struct {
1757
                        picreg_t           :    32; /* 63:32 */
1758
                        picreg_t           :    16; /* 31:16 */
1759
                        picreg_t rrb_clear :    16; /* 15:0 */
1760
                } pic_p_resp_clear_fld_s;
1761
        } pic_p_resp_clear_u_t;
1762
/*
1763
 * PCI Read Response Buffer (x) Upper Address Match
1764
 *
1765
 * The PCI Bridge read response buffer upper address register is a read only
1766
 * register which contains the upper 16-bits of the address and status used to
1767
 * select the buffer for a PCI transaction.
1768
 */
1769
        typedef union pic_p_buf_upper_addr_match_u {
1770
                picreg_t        pic_p_buf_upper_addr_match_regval;
1771
                struct {
1772
                        picreg_t          :     32; /* 63:32 */
1773
                        picreg_t filled   :     1; /* 31:31 */
1774
                        picreg_t armed    :     1; /* 30:30 */
1775
                        picreg_t flush    :     1; /* 29:29 */
1776
                        picreg_t xerr     :     1; /* 28:28 */
1777
                        picreg_t pkterr   :     1; /* 27:27 */
1778
                        picreg_t timeout  :     1; /* 26:26 */
1779
                        picreg_t prefetch :     1; /* 25:25 */
1780
                        picreg_t precise  :     1; /* 24:24 */
1781
                        picreg_t dw_be    :     8; /* 23:16 */
1782
                        picreg_t upp_addr :     16; /* 15:0 */
1783
                } pic_p_buf_upper_addr_match_fld_s;
1784
        } pic_p_buf_upper_addr_match_u_t;
1785
/*
1786
 * PCI Read Response Buffer (x) Lower Address Match
1787
 *
1788
 * The PCI Bridge read response buffer lower address Match register is a
1789
 * read only register which contains the address and status used to select the
1790
 * buffer for a PCI transaction.
1791
 */
1792
        typedef union pic_p_buf_lower_addr_match_u {
1793
                picreg_t        pic_p_buf_lower_addr_match_regval;
1794
                struct {
1795
                        picreg_t filled   :     1; /* 63:63 */
1796
                        picreg_t armed    :     1; /* 62:62 */
1797
                        picreg_t flush    :     1; /* 61:61 */
1798
                        picreg_t xerr     :     1; /* 60:60 */
1799
                        picreg_t pkterr   :     1; /* 59:59 */
1800
                        picreg_t timeout  :     1; /* 58:58 */
1801
                        picreg_t prefetch :     1; /* 57:57 */
1802
                        picreg_t precise  :     1; /* 56:56 */
1803
                        picreg_t dw_be    :     8; /* 55:48 */
1804
                        picreg_t upp_addr :     16; /* 47:32 */
1805
                        picreg_t low_addr :     32; /* 31:0 */
1806
                } pic_p_buf_lower_addr_match_fld_s;
1807
        } pic_p_buf_lower_addr_match_u_t;
1808
/*
1809
 * PCI Buffer (x) Flush Count with Data Touch Register
1810
 *
1811
 * This counter is incremented each time the corresponding response buffer
1812
 * is flushed after at least a single data element in the buffer is used. A word
1813
 * write to this address clears the count.
1814
 */
1815
        typedef union pic_flush_w_touch_u {
1816
                picreg_t        pic_flush_w_touch_regval;
1817
                struct {
1818
                        picreg_t           :    32; /* 63:32 */
1819
                        picreg_t           :    16; /* 31:16 */
1820
                        picreg_t touch_cnt :    16; /* 15:0 */
1821
                } pic_flush_w_touch_fld_s;
1822
        } pic_flush_w_touch_u_t;
1823
/*
1824
 * PCI Buffer (x) Flush Count w/o Data Touch Register
1825
 *
1826
 * This counter is incremented each time the corresponding response buffer
1827
 * is flushed without any data element in the buffer being used. A word
1828
 * write to this address clears the count.
1829
 */
1830
        typedef union pic_flush_wo_touch_u {
1831
                picreg_t        pic_flush_wo_touch_regval;
1832
                struct {
1833
                        picreg_t             :  32; /* 63:32 */
1834
                        picreg_t             :  16; /* 31:16 */
1835
                        picreg_t notouch_cnt :  16; /* 15:0 */
1836
                } pic_flush_wo_touch_fld_s;
1837
        } pic_flush_wo_touch_u_t;
1838
/*
1839
 * PCI Buffer (x) Request in Flight Count Register
1840
 *
1841
 * This counter is incremented on each bus clock while the request is in-
1842
 * flight. A word write to this address clears the count. ]
1843
 */
1844
        typedef union pic_inflight_u {
1845
                picreg_t        pic_inflight_regval;
1846
                struct {
1847
                        picreg_t              : 32; /* 63:32 */
1848
                        picreg_t              : 16; /* 31:16 */
1849
                        picreg_t inflight_cnt : 16; /* 15:0 */
1850
                } pic_inflight_fld_s;
1851
        } pic_inflight_u_t;
1852
/*
1853
 * PCI Buffer (x) Prefetch Request Count Register
1854
 *
1855
 * This counter is incremented each time the request using this buffer was
1856
 * generated from the prefetcher. A word write to this address clears the
1857
 * count.
1858
 */
1859
        typedef union pic_prefetch_u {
1860
                picreg_t        pic_prefetch_regval;
1861
                struct {
1862
                        picreg_t              : 32; /* 63:32 */
1863
                        picreg_t              : 16; /* 31:16 */
1864
                        picreg_t prefetch_cnt : 16; /* 15:0 */
1865
                } pic_prefetch_fld_s;
1866
        } pic_prefetch_u_t;
1867
/*
1868
 * PCI Buffer (x) Total PCI Retry Count Register
1869
 *
1870
 * This counter is incremented each time a PCI bus retry occurs and the ad-
1871
 * dress matches the tag for the selected buffer. The buffer must also has this
1872
 * request in-flight. A word write to this address clears the count.
1873
 */
1874
        typedef union pic_total_pci_retry_u {
1875
                picreg_t        pic_total_pci_retry_regval;
1876
                struct {
1877
                        picreg_t           :    32; /* 63:32 */
1878
                        picreg_t           :    16; /* 31:16 */
1879
                        picreg_t retry_cnt :    16; /* 15:0 */
1880
                } pic_total_pci_retry_fld_s;
1881
        } pic_total_pci_retry_u_t;
1882
/*
1883
 * PCI Buffer (x) Max PCI Retry Count Register
1884
 *
1885
 * This counter is contains the maximum retry count for a single request
1886
 * which was in-flight for this buffer. A word write to this address clears the
1887
 * count.
1888
 */
1889
        typedef union pic_max_pci_retry_u {
1890
                picreg_t        pic_max_pci_retry_regval;
1891
                struct {
1892
                        picreg_t               :        32; /* 63:32 */
1893
                        picreg_t               :        16; /* 31:16 */
1894
                        picreg_t max_retry_cnt :        16; /* 15:0 */
1895
                } pic_max_pci_retry_fld_s;
1896
        } pic_max_pci_retry_u_t;
1897
/*
1898
 * PCI Buffer (x) Max Latency Count Register
1899
 *
1900
 * This counter is contains the maximum count (in bus clocks) for a single
1901
 * request which was in-flight for this buffer. A word write to this address
1902
 * clears the count.
1903
 */
1904
        typedef union pic_max_latency_u {
1905
                picreg_t        pic_max_latency_regval;
1906
                struct {
1907
                        picreg_t                 :      32; /* 63:32 */
1908
                        picreg_t                 :      16; /* 31:16 */
1909
                        picreg_t max_latency_cnt :      16; /* 15:0 */
1910
                } pic_max_latency_fld_s;
1911
        } pic_max_latency_u_t;
1912
/*
1913
 * PCI Buffer (x) Clear All Register
1914
 *
1915
 * Any access to this register clears all the count values for the (x) registers.
1916
 */
1917
 
1918
 
1919
/*
1920
 * PCI-X Registers
1921
 *
1922
 * This register contains the address in the read buffer structure. There are
1923
 * 16 read buffer structures.
1924
 */
1925
        typedef union pic_rd_buf_addr_u {
1926
                picreg_t        pic_rd_buf_addr_regval;
1927
                struct {
1928
                        picreg_t pcix_err_addr :        64; /* 63:0 */
1929
                } pic_rd_buf_addr_fld_s;
1930
        } pic_rd_buf_addr_u_t;
1931
/*
1932
 * PCI-X Read Buffer (x) Attribute Register
1933
 *
1934
 * This register contains the attribute data in the read buffer structure. There
1935
 * are  16 read buffer structures.
1936
 */
1937
        typedef union pic_px_read_buf_attr_u {
1938
                picreg_t        pic_px_read_buf_attr_regval;
1939
                struct {
1940
                        picreg_t                :       16; /* 63:48 */
1941
                        picreg_t bus_cmd        :       4; /* 47:44 */
1942
                        picreg_t byte_cnt       :       12; /* 43:32 */
1943
                        picreg_t entry_valid    :       1; /* 31:31 */
1944
                        picreg_t ns             :       1; /* 30:30 */
1945
                        picreg_t ro             :       1; /* 29:29 */
1946
                        picreg_t tag            :       5; /* 28:24 */
1947
                        picreg_t bus_num        :       8; /* 23:16 */
1948
                        picreg_t dev_num        :       5; /* 15:11 */
1949
                        picreg_t fun_num        :       3; /* 10:8 */
1950
                        picreg_t                :       2; /* 7:6 */
1951
                        picreg_t f_buffer_index :       6; /* 5:0 */
1952
                } pic_px_read_buf_attr_fld_s;
1953
        } pic_px_read_buf_attr_u_t;
1954
/*
1955
 * PCI-X Write Buffer (x) Address Register
1956
 *
1957
 * This register contains the address in the write buffer structure. There are
1958
 * 8 write buffer structures.
1959
 */
1960
        typedef union pic_px_write_buf_addr_u {
1961
                picreg_t        pic_px_write_buf_addr_regval;
1962
                struct {
1963
                        picreg_t pcix_err_addr :        64; /* 63:0 */
1964
                } pic_px_write_buf_addr_fld_s;
1965
        } pic_px_write_buf_addr_u_t;
1966
/*
1967
 * PCI-X Write Buffer (x) Attribute Register
1968
 *
1969
 * This register contains the attribute data in the write buffer structure.
1970
 * There are 8 write buffer structures.
1971
 */
1972
        typedef union pic_px_write_buf_attr_u {
1973
                picreg_t        pic_px_write_buf_attr_regval;
1974
                struct {
1975
                        picreg_t                :       16; /* 63:48 */
1976
                        picreg_t bus_cmd        :       4; /* 47:44 */
1977
                        picreg_t byte_cnt       :       12; /* 43:32 */
1978
                        picreg_t entry_valid    :       1; /* 31:31 */
1979
                        picreg_t ns             :       1; /* 30:30 */
1980
                        picreg_t ro             :       1; /* 29:29 */
1981
                        picreg_t tag            :       5; /* 28:24 */
1982
                        picreg_t bus_num        :       8; /* 23:16 */
1983
                        picreg_t dev_num        :       5; /* 15:11 */
1984
                        picreg_t fun_num        :       3; /* 10:8 */
1985
                        picreg_t                :       2; /* 7:6 */
1986
                        picreg_t f_buffer_index :       6; /* 5:0 */
1987
                } pic_px_write_buf_attr_fld_s;
1988
        } pic_px_write_buf_attr_u_t;
1989
/*
1990
 * PCI-X Write Buffer (x) Valid Register
1991
 *
1992
 * This register contains the valid or inuse cache lines for this buffer struc-
1993
 * ture.
1994
 */
1995
        typedef union pic_px_write_buf_valid_u {
1996
                picreg_t        pic_px_write_buf_valid_regval;
1997
                struct {
1998
                        picreg_t                :       32; /* 63:32 */
1999
                        picreg_t wrt_valid_buff :       32; /* 31:0 */
2000
                } pic_px_write_buf_valid_fld_s;
2001
        } pic_px_write_buf_valid_u_t;
2002
 
2003
#endif                          /* __ASSEMBLY__ */
2004
#endif                          /* _ASM_SN_PCI_PIC_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.