1
2
3
4
5
6
7
8
9
10
11#ifndef _ASM_SGI_SN_SN0_HUBIO_H
12#define _ASM_SGI_SN_SN0_HUBIO_H
13
14
15
16
17
18
19
20
21
22
23
24
25#define IIO_WIDGET IIO_WID
26#define IIO_WIDGET_STAT IIO_WSTAT
27#define IIO_WIDGET_CTRL IIO_WCR
28#define IIO_WIDGET_TOUT IIO_WRTO
29#define IIO_WIDGET_FLUSH IIO_WTFR
30#define IIO_PROTECT IIO_ILAPR
31#define IIO_PROTECT_OVRRD IIO_ILAPO
32#define IIO_OUTWIDGET_ACCESS IIO_IOWA
33#define IIO_INWIDGET_ACCESS IIO_IIWA
34#define IIO_INDEV_ERR_MASK IIO_IIDEM
35#define IIO_LLP_CSR IIO_ILCSR
36#define IIO_LLP_LOG IIO_ILLR
37#define IIO_XTALKCC_TOUT IIO_IXCC
38#define IIO_XTALKTT_TOUT IIO_IXTT
39#define IIO_IO_ERR_CLR IIO_IECLR
40#define IIO_BTE_CRB_CNT IIO_IBCN
41
42#define IIO_LLP_CSR_IS_UP 0x00002000
43#define IIO_LLP_CSR_LLP_STAT_MASK 0x00003000
44#define IIO_LLP_CSR_LLP_STAT_SHFT 12
45
46
47#define IIO_PROTECT_OVRRD_KEY 0x53474972756c6573ull
48
49
50#define IIO_BTE_STAT_0 IIO_IBLS_0
51#define IIO_BTE_SRC_0 IIO_IBSA_0
52#define IIO_BTE_DEST_0 IIO_IBDA_0
53#define IIO_BTE_CTRL_0 IIO_IBCT_0
54#define IIO_BTE_NOTIFY_0 IIO_IBNA_0
55#define IIO_BTE_INT_0 IIO_IBIA_0
56#define IIO_BTE_OFF_0 0
57#define IIO_BTE_OFF_1 IIO_IBLS_1 - IIO_IBLS_0
58
59
60#define BTEOFF_STAT 0
61#define BTEOFF_SRC (IIO_BTE_SRC_0 - IIO_BTE_STAT_0)
62#define BTEOFF_DEST (IIO_BTE_DEST_0 - IIO_BTE_STAT_0)
63#define BTEOFF_CTRL (IIO_BTE_CTRL_0 - IIO_BTE_STAT_0)
64#define BTEOFF_NOTIFY (IIO_BTE_NOTIFY_0 - IIO_BTE_STAT_0)
65#define BTEOFF_INT (IIO_BTE_INT_0 - IIO_BTE_STAT_0)
66
67
68
69
70
71
72
73
74#define IIO_BASE 0x400000
75#define IIO_BASE_BTE0 0x410000
76#define IIO_BASE_BTE1 0x420000
77#define IIO_BASE_PERF 0x430000
78#define IIO_PERF_CNT 0x430008
79
80#define IO_PERF_SETS 32
81
82#define IIO_WID 0x400000
83#define IIO_WSTAT 0x400008
84#define IIO_WCR 0x400020
85
86#define IIO_WSTAT_ECRAZY (1ULL << 32)
87#define IIO_WSTAT_TXRETRY (1ULL << 9)
88#define IIO_WSTAT_TXRETRY_MASK (0x7F)
89#define IIO_WSTAT_TXRETRY_SHFT (16)
90#define IIO_WSTAT_TXRETRY_CNT(w) (((w) >> IIO_WSTAT_TXRETRY_SHFT) & \
91 IIO_WSTAT_TXRETRY_MASK)
92
93#define IIO_ILAPR 0x400100
94#define IIO_ILAPO 0x400108
95#define IIO_IOWA 0x400110
96#define IIO_IIWA 0x400118
97#define IIO_IIDEM 0x400120
98#define IIO_ILCSR 0x400128
99#define IIO_ILLR 0x400130
100#define IIO_IIDSR 0x400138
101
102#define IIO_IIBUSERR 0x1400208
103
104
105#define IIO_IIDSR_SENT_SHIFT 28
106#define IIO_IIDSR_SENT_MASK 0x10000000
107#define IIO_IIDSR_ENB_SHIFT 24
108#define IIO_IIDSR_ENB_MASK 0x01000000
109#define IIO_IIDSR_NODE_SHIFT 8
110#define IIO_IIDSR_NODE_MASK 0x0000ff00
111#define IIO_IIDSR_LVL_SHIFT 0
112#define IIO_IIDSR_LVL_MASK 0x0000003f
113
114
115
116#define IIO_IGFX_0 0x400140
117#define IIO_IGFX_1 0x400148
118#define IIO_IGFX_W_NUM_BITS 4
119#define IIO_IGFX_W_NUM_MASK ((1<<IIO_IGFX_W_NUM_BITS)-1)
120#define IIO_IGFX_W_NUM_SHIFT 0
121#define IIO_IGFX_N_NUM_BITS 9
122#define IIO_IGFX_N_NUM_MASK ((1<<IIO_IGFX_N_NUM_BITS)-1)
123#define IIO_IGFX_N_NUM_SHIFT 4
124#define IIO_IGFX_P_NUM_BITS 1
125#define IIO_IGFX_P_NUM_MASK ((1<<IIO_IGFX_P_NUM_BITS)-1)
126#define IIO_IGFX_P_NUM_SHIFT 16
127#define IIO_IGFX_VLD_BITS 1
128#define IIO_IGFX_VLD_MASK ((1<<IIO_IGFX_VLD_BITS)-1)
129#define IIO_IGFX_VLD_SHIFT 20
130#define IIO_IGFX_INIT(widget, node, cpu, valid) (\
131 (((widget) & IIO_IGFX_W_NUM_MASK) << IIO_IGFX_W_NUM_SHIFT) | \
132 (((node) & IIO_IGFX_N_NUM_MASK) << IIO_IGFX_N_NUM_SHIFT) | \
133 (((cpu) & IIO_IGFX_P_NUM_MASK) << IIO_IGFX_P_NUM_SHIFT) | \
134 (((valid) & IIO_IGFX_VLD_MASK) << IIO_IGFX_VLD_SHIFT) )
135
136
137#define IIO_SCRATCH_REG0 0x400150
138#define IIO_SCRATCH_REG1 0x400158
139#define IIO_SCRATCH_MASK 0x0000000f00f11fff
140
141#define IIO_SCRATCH_BIT0_0 0x0000000800000000
142#define IIO_SCRATCH_BIT0_1 0x0000000400000000
143#define IIO_SCRATCH_BIT0_2 0x0000000200000000
144#define IIO_SCRATCH_BIT0_3 0x0000000100000000
145#define IIO_SCRATCH_BIT0_4 0x0000000000800000
146#define IIO_SCRATCH_BIT0_5 0x0000000000400000
147#define IIO_SCRATCH_BIT0_6 0x0000000000200000
148#define IIO_SCRATCH_BIT0_7 0x0000000000100000
149#define IIO_SCRATCH_BIT0_8 0x0000000000010000
150#define IIO_SCRATCH_BIT0_9 0x0000000000001000
151#define IIO_SCRATCH_BIT0_R 0x0000000000000fff
152
153
154#define IIO_NUM_ITTES 7
155
156
157
158
159
160
161#define HUB_NUM_BIG_WINDOW IIO_NUM_ITTES - 1
162
163
164
165
166#define SWIN0_BIGWIN HUB_NUM_BIG_WINDOW
167
168#define ILCSR_WARM_RESET 0x100
169
170
171
172#ifndef __ASSEMBLY__
173
174typedef union hubii_wid_u {
175 u64 wid_reg_value;
176 struct {
177 u64 wid_rsvd: 32,
178 wid_rev_num: 4,
179 wid_part_num: 16,
180 wid_mfg_num: 11,
181 wid_rsvd1: 1;
182 } wid_fields_s;
183} hubii_wid_t;
184
185
186typedef union hubii_wcr_u {
187 u64 wcr_reg_value;
188 struct {
189 u64 wcr_rsvd: 41,
190 wcr_e_thresh: 5,
191 wcr_dir_con: 1,
192 wcr_f_bad_pkt: 1,
193 wcr_xbar_crd: 3,
194 wcr_rsvd1: 8,
195 wcr_tag_mode: 1,
196 wcr_widget_id: 4;
197 } wcr_fields_s;
198} hubii_wcr_t;
199
200#define iwcr_dir_con wcr_fields_s.wcr_dir_con
201
202typedef union hubii_wstat_u {
203 u64 reg_value;
204 struct {
205 u64 rsvd1: 31,
206 crazy: 1,
207 rsvd2: 8,
208 llp_tx_cnt: 8,
209 rsvd3: 6,
210 tx_max_rtry: 1,
211 rsvd4: 2,
212 xt_tail_to: 1,
213 xt_crd_to: 1,
214 pending: 4;
215 } wstat_fields_s;
216} hubii_wstat_t;
217
218
219typedef union hubii_ilcsr_u {
220 u64 icsr_reg_value;
221 struct {
222 u64 icsr_rsvd: 22,
223 icsr_max_burst: 10,
224 icsr_rsvd4: 6,
225 icsr_max_retry: 10,
226 icsr_rsvd3: 2,
227 icsr_lnk_stat: 2,
228 icsr_bm8: 1,
229 icsr_llp_en: 1,
230 icsr_rsvd2: 1,
231 icsr_wrm_reset: 1,
232 icsr_rsvd1: 2,
233 icsr_null_to: 6;
234
235 } icsr_fields_s;
236} hubii_ilcsr_t;
237
238
239typedef union hubii_iowa_u {
240 u64 iowa_reg_value;
241 struct {
242 u64 iowa_rsvd: 48,
243 iowa_wxoac: 8,
244 iowa_rsvd1: 7,
245 iowa_w0oac: 1;
246 } iowa_fields_s;
247} hubii_iowa_t;
248
249typedef union hubii_iiwa_u {
250 u64 iiwa_reg_value;
251 struct {
252 u64 iiwa_rsvd: 48,
253 iiwa_wxiac: 8,
254 iiwa_rsvd1: 7,
255 iiwa_w0iac: 1;
256 } iiwa_fields_s;
257} hubii_iiwa_t;
258
259typedef union hubii_illr_u {
260 u64 illr_reg_value;
261 struct {
262 u64 illr_rsvd: 32,
263 illr_cb_cnt: 16,
264 illr_sn_cnt: 16;
265 } illr_fields_s;
266} hubii_illr_t;
267
268
269
270
271
272
273typedef union io_perf_sel {
274 u64 perf_sel_reg;
275 struct {
276 u64 perf_rsvd : 48,
277 perf_icct : 8,
278 perf_ippr1 : 4,
279 perf_ippr0 : 4;
280 } perf_sel_bits;
281} io_perf_sel_t;
282
283
284
285
286typedef union io_perf_cnt {
287 u64 perf_cnt;
288 struct {
289 u64 perf_rsvd1 : 32,
290 perf_rsvd2 : 12,
291 perf_cnt : 20;
292 } perf_cnt_bits;
293} io_perf_cnt_t;
294
295#endif
296
297
298#define LNK_STAT_WORKING 0x2
299
300#define IIO_LLP_CB_MAX 0xffff
301#define IIO_LLP_SN_MAX 0xffff
302
303
304#define IIO_NUM_IPRBS (9)
305#define IIO_IOPRB_0 0x400198
306#define IIO_IOPRB_8 0x4001a0
307#define IIO_IOPRB_9 0x4001a8
308#define IIO_IOPRB_A 0x4001b0
309#define IIO_IOPRB_B 0x4001b8
310#define IIO_IOPRB_C 0x4001c0
311#define IIO_IOPRB_D 0x4001c8
312#define IIO_IOPRB_E 0x4001d0
313#define IIO_IOPRB_F 0x4001d8
314
315
316#define IIO_IXCC 0x4001e0
317#define IIO_IXTCC IIO_IXCC
318#define IIO_IMEM 0x4001e8
319#define IIO_IXTT 0x4001f0
320#define IIO_IECLR 0x4001f8
321#define IIO_IBCN 0x400200
322
323
324
325
326#define IIO_IMEM_W0ESD 0x1
327#define IIO_IMEM_B0ESD (1 << 4)
328#define IIO_IMEM_B1ESD (1 << 8)
329
330
331#define IIO_IPCA 0x400300
332#define IIO_NUM_PRTES 8
333#define IIO_PRTE_0 0x400308
334#define IIO_PRTE(_x) (IIO_PRTE_0 + (8 * (_x)))
335#define IIO_WIDPRTE(x) IIO_PRTE(((x) - 8))
336#define IIO_IPDR 0x400388
337#define IIO_ICDR 0x400390
338#define IIO_IFDR 0x400398
339#define IIO_IIAP 0x4003a0
340#define IIO_IMMR IIO_IIAP
341#define IIO_ICMR 0x4003a8
342#define IIO_ICCR 0x4003b0
343#define IIO_ICTO 0x4003b8
344#define IIO_ICTP 0x4003c0
345
346
347
348
349
350#define IIO_ICMR_PC_VLD_SHFT 36
351#define IIO_ICMR_PC_VLD_MASK (0x7fffUL << IIO_ICMR_PC_VLD_SHFT)
352
353#define IIO_ICMR_CRB_VLD_SHFT 20
354#define IIO_ICMR_CRB_VLD_MASK (0x7fffUL << IIO_ICMR_CRB_VLD_SHFT)
355
356#define IIO_ICMR_FC_CNT_SHFT 16
357#define IIO_ICMR_FC_CNT_MASK (0xf << IIO_ICMR_FC_CNT_SHFT)
358
359#define IIO_ICMR_C_CNT_SHFT 4
360#define IIO_ICMR_C_CNT_MASK (0xf << IIO_ICMR_C_CNT_SHFT)
361
362#define IIO_ICMR_P_CNT_SHFT 0
363#define IIO_ICMR_P_CNT_MASK (0xf << IIO_ICMR_P_CNT_SHFT)
364
365#define IIO_ICMR_PRECISE (1UL << 52)
366#define IIO_ICMR_CLR_RPPD (1UL << 13)
367#define IIO_ICMR_CLR_RQPD (1UL << 12)
368
369
370
371
372#define IIO_IPDR_PND (1 << 4)
373
374
375
376
377#define IIO_ICDR_PND (1 << 4)
378
379
380
381
382#define IIO_ICCR_PENDING (0x10000)
383#define IIO_ICCR_CMD_MASK (0xFF)
384#define IIO_ICCR_CMD_SHFT (7)
385#define IIO_ICCR_CMD_NOP (0x0)
386#define IIO_ICCR_CMD_WAKE (0x100)
387#define IIO_ICCR_CMD_TIMEOUT (0x200)
388#define IIO_ICCR_CMD_EJECT (0x400)
389
390
391#define IIO_ICCR_CMD_FLUSH (0x800)
392
393
394
395
396
397
398#define IIO_NUM_CRBS 15
399#define IIO_NUM_NORMAL_CRBS 12
400#define IIO_NUM_PC_CRBS 4
401#define IIO_ICRB_OFFSET 8
402#define IIO_ICRB_0 0x400400
403
404
405
406
407#define IIO_ICRB_A(_x) (IIO_ICRB_0 + (4 * IIO_ICRB_OFFSET * (_x)))
408#define IIO_ICRB_B(_x) (IIO_ICRB_A(_x) + 1*IIO_ICRB_OFFSET)
409#define IIO_ICRB_C(_x) (IIO_ICRB_A(_x) + 2*IIO_ICRB_OFFSET)
410#define IIO_ICRB_D(_x) (IIO_ICRB_A(_x) + 3*IIO_ICRB_OFFSET)
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443#ifndef __ASSEMBLY__
444typedef union icrba_u {
445 u64 reg_value;
446 struct {
447 u64 resvd: 6,
448 stall_bte0: 1,
449 stall_bte1: 1,
450 error: 1,
451 ecode: 3,
452 lnetuce: 1,
453 mark: 1,
454 xerr: 1,
455 sidn: 4,
456 tnum: 5,
457 addr: 38,
458 valid: 1,
459 iow: 1;
460 } icrba_fields_s;
461} icrba_t;
462
463
464
465
466typedef union h1_icrba_u {
467 u64 reg_value;
468
469 struct {
470 u64 resvd: 6,
471 unused: 1,
472 error: 1,
473 ecode: 4,
474 lnetuce: 1,
475 mark: 1,
476 xerr: 1,
477 sidn: 4,
478 tnum: 5,
479 addr: 38,
480 valid: 1,
481 iow: 1;
482 } h1_icrba_fields_s;
483} h1_icrba_t;
484
485
486#define ICRBN_A_CERR_SHFT 54
487#define ICRBN_A_ERR_MASK 0x3ff
488
489#endif
490
491#define IIO_ICRB_ADDR_SHFT 2
492
493
494
495
496#define IIO_ICRB_ECODE_DERR 0
497#define IIO_ICRB_ECODE_PERR 1
498#define IIO_ICRB_ECODE_WERR 2
499
500
501#define IIO_ICRB_ECODE_AERR 3
502#define IIO_ICRB_ECODE_PWERR 4
503#define IIO_ICRB_ECODE_PRERR 5
504#define IIO_ICRB_ECODE_TOUT 6
505#define IIO_ICRB_ECODE_XTERR 7
506
507
508
509
510
511
512#ifndef __ASSEMBLY__
513typedef union icrbb_u {
514 u64 reg_value;
515 struct {
516 u64 rsvd1: 5,
517 btenum: 1,
518 cohtrans: 1,
519 xtsize: 2,
520
521
522
523
524
525 srcnode: 9,
526 srcinit: 2,
527
528
529 useold: 1,
530 imsgtype: 2,
531
532
533 imsg: 8,
534 initator: 3,
535
536
537 reqtype: 5,
538
539
540 rsvd2: 7,
541 ackcnt: 11,
542 resp: 1,
543 ack: 1,
544 hold: 1,
545 wb_pend:1,
546 intvn: 1,
547 stall_ib: 1,
548 stall_intr: 1;
549 } icrbb_field_s;
550} icrbb_t;
551
552
553
554
555typedef union h1_icrbb_u {
556 u64 reg_value;
557 struct {
558 u64 rsvd1: 5,
559 btenum: 1,
560 cohtrans: 1,
561 xtsize: 2,
562
563
564
565
566
567 srcnode: 9,
568 srcinit: 2,
569
570
571 useold: 1,
572 imsgtype: 2,
573
574
575 imsg: 8,
576 initator: 3,
577
578
579 rsvd2: 1,
580 pcache: 1,
581 reqtype: 5,
582
583
584 stl_ib: 1,
585 stl_intr: 1,
586 stl_bte0: 1,
587 stl_bte1: 1,
588 intrvn: 1,
589 ackcnt: 11,
590 resp: 1,
591 ack: 1,
592 hold: 1,
593 wb_pend:1,
594 sleep: 1,
595 pnd_reply: 1,
596 pnd_req: 1;
597 } h1_icrbb_field_s;
598} h1_icrbb_t;
599
600
601#define b_imsgtype icrbb_field_s.imsgtype
602#define b_btenum icrbb_field_s.btenum
603#define b_cohtrans icrbb_field_s.cohtrans
604#define b_xtsize icrbb_field_s.xtsize
605#define b_srcnode icrbb_field_s.srcnode
606#define b_srcinit icrbb_field_s.srcinit
607#define b_imsgtype icrbb_field_s.imsgtype
608#define b_imsg icrbb_field_s.imsg
609#define b_initiator icrbb_field_s.initiator
610
611#endif
612
613
614
615
616#define IIO_ICRB_XTSIZE_DW 0
617#define IIO_ICRB_XTSIZE_32 1
618#define IIO_ICRB_XTSIZE_128 2
619
620
621
622
623#define IIO_ICRB_PROC0 0
624#define IIO_ICRB_PROC1 1
625#define IIO_ICRB_GB_REQ 2
626#define IIO_ICRB_IO_REQ 3
627
628
629
630
631#define IIO_ICRB_IMSGT_XTALK 0
632#define IIO_ICRB_IMSGT_BTE 1
633#define IIO_ICRB_IMSGT_SN0NET 2
634#define IIO_ICRB_IMSGT_CRB 3
635
636
637
638
639#define IIO_ICRB_INIT_XTALK 0
640#define IIO_ICRB_INIT_BTE0 0x1
641#define IIO_ICRB_INIT_SN0NET 0x2
642#define IIO_ICRB_INIT_CRB 0x3
643#define IIO_ICRB_INIT_BTE1 0x5
644
645
646
647
648
649#define IIO_ICRB_REQ_DWRD 0
650#define IIO_ICRB_REQ_QCLRD 1
651#define IIO_ICRB_REQ_BLKRD 2
652#define IIO_ICRB_REQ_RSHU 6
653#define IIO_ICRB_REQ_REXU 7
654#define IIO_ICRB_REQ_RDEX 8
655#define IIO_ICRB_REQ_WINC 9
656#define IIO_ICRB_REQ_BWINV 10
657#define IIO_ICRB_REQ_PIORD 11
658#define IIO_ICRB_REQ_PIOWR 12
659#define IIO_ICRB_REQ_PRDM 13
660#define IIO_ICRB_REQ_PWRM 14
661#define IIO_ICRB_REQ_PTPWR 15
662#define IIO_ICRB_REQ_WB 16
663#define IIO_ICRB_REQ_DEX 17
664
665
666
667
668
669#ifndef __ASSEMBLY__
670
671typedef union icrbc_s {
672 u64 reg_value;
673 struct {
674 u64 rsvd: 6,
675 sleep: 1,
676 pricnt: 4,
677 pripsc: 4,
678 bteop: 1,
679 push_be: 34,
680
681
682
683
684
685 suppl: 11,
686 barrop: 1,
687 doresp: 1,
688 gbr: 1;
689 } icrbc_field_s;
690} icrbc_t;
691
692#define c_pricnt icrbc_field_s.pricnt
693#define c_pripsc icrbc_field_s.pripsc
694#define c_bteop icrbc_field_s.bteop
695#define c_bteaddr icrbc_field_s.push_be
696#define c_benable icrbc_field_s.push_be
697#define c_suppl icrbc_field_s.suppl
698#define c_barrop icrbc_field_s.barrop
699#define c_doresp icrbc_field_s.doresp
700#define c_gbr icrbc_field_s.gbr
701#endif
702
703
704
705
706
707#ifndef __ASSEMBLY__
708typedef union icrbd_s {
709 u64 reg_value;
710 struct {
711 u64 rsvd: 38,
712 toutvld: 1,
713 ctxtvld: 1,
714 rsvd2: 1,
715 context: 15,
716
717
718
719
720
721 timeout: 8;
722 } icrbd_field_s;
723} icrbd_t;
724
725#define icrbd_toutvld icrbd_field_s.toutvld
726#define icrbd_ctxtvld icrbd_field_s.ctxtvld
727#define icrbd_context icrbd_field_s.context
728
729
730typedef union hubii_ifdr_u {
731 u64 hi_ifdr_value;
732 struct {
733 u64 ifdr_rsvd: 49,
734 ifdr_maxrp: 7,
735 ifdr_rsvd1: 1,
736 ifdr_maxrq: 7;
737 } hi_ifdr_fields;
738} hubii_ifdr_t;
739
740#endif
741
742
743
744
745#define IIO_IBLS_0 0x410000
746#define IIO_IBSA_0 0x410008
747#define IIO_IBDA_0 0x410010
748#define IIO_IBCT_0 0x410018
749#define IIO_IBNA_0 0x410020
750#define IIO_IBNR_0 IIO_IBNA_0
751#define IIO_IBIA_0 0x410028
752
753#define IIO_IBLS_1 0x420000
754#define IIO_IBSA_1 0x420008
755#define IIO_IBDA_1 0x420010
756#define IIO_IBCT_1 0x420018
757#define IIO_IBNA_1 0x420020
758#define IIO_IBNR_1 IIO_IBNA_1
759#define IIO_IBIA_1 0x420028
760
761
762
763
764#define IIO_IPCR 0x430000
765#define IIO_IPPR 0x430008
766
767
768
769
770#define IECLR_BTE1 (1 << 18)
771#define IECLR_BTE0 (1 << 17)
772#define IECLR_CRAZY (1 << 16)
773#define IECLR_PRB_F (1 << 15)
774#define IECLR_PRB_E (1 << 14)
775#define IECLR_PRB_D (1 << 13)
776#define IECLR_PRB_C (1 << 12)
777#define IECLR_PRB_B (1 << 11)
778#define IECLR_PRB_A (1 << 10)
779#define IECLR_PRB_9 (1 << 9)
780#define IECLR_PRB_8 (1 << 8)
781#define IECLR_PRB_0 (1 << 0)
782
783
784
785
786
787#ifndef __ASSEMBLY__
788
789typedef union iprte_a {
790 u64 entry;
791 struct {
792 u64 rsvd1 : 7,
793 valid : 1,
794 rsvd2 : 1,
795 srcnode : 9,
796 initiator : 2,
797 rsvd3 : 3,
798 addr : 38,
799 rsvd4 : 3;
800 } iprte_fields;
801} iprte_a_t;
802
803#define iprte_valid iprte_fields.valid
804#define iprte_timeout iprte_fields.timeout
805#define iprte_srcnode iprte_fields.srcnode
806#define iprte_init iprte_fields.initiator
807#define iprte_addr iprte_fields.addr
808
809#endif
810
811#define IPRTE_ADDRSHFT 3
812
813
814
815
816
817#ifndef __ASSEMBLY__
818
819
820
821
822
823typedef union iprb_u {
824 u64 reg_value;
825 struct {
826 u64 rsvd1: 15,
827 error: 1,
828 ovflow: 5,
829 fire_and_forget: 1,
830 mode: 2,
831 rsvd2: 2,
832 bnakctr: 14,
833 rsvd3: 2,
834 anakctr: 14,
835 xtalkctr: 8;
836 } iprb_fields_s;
837} iprb_t;
838
839#define iprb_regval reg_value
840
841#define iprb_error iprb_fields_s.error
842#define iprb_ovflow iprb_fields_s.ovflow
843#define iprb_ff iprb_fields_s.fire_and_forget
844#define iprb_mode iprb_fields_s.mode
845#define iprb_bnakctr iprb_fields_s.bnakctr
846#define iprb_anakctr iprb_fields_s.anakctr
847#define iprb_xtalkctr iprb_fields_s.xtalkctr
848
849#endif
850
851
852
853
854
855
856#define IPRB_MODE_NORMAL (0)
857#define IPRB_MODE_COLLECT_A (1)
858#define IPRB_MODE_SERVICE_A (2)
859#define IPRB_MODE_SERVICE_B (3)
860
861
862
863
864#ifndef __ASSEMBLY__
865typedef union icrbp_a {
866 u64 ip_reg;
867 struct {
868 u64 error: 1,
869 ln_uce: 1,
870 ln_ae: 1,
871 ln_werr:1,
872 ln_aerr:1,
873 ln_perr:1,
874 timeout:1,
875 l_bdpkt:1,
876 c_bdpkt:1,
877 c_err: 1,
878 rsvd1: 12,
879 valid: 1,
880 sidn: 4,
881 tnum: 5,
882 bo: 1,
883 resprqd:1,
884 gbr: 1,
885 size: 2,
886 excl: 4,
887 stall: 3,
888 intvn: 1,
889 resp: 1,
890 ack: 1,
891 hold: 1,
892 wb: 1,
893 ack_cnt:11,
894 tscaler:4;
895 } ip_fmt;
896} icrbp_a_t;
897
898#endif
899
900
901
902
903#define ICRBP_A_CERR_SHFT 54
904#define ICRBP_A_ERR_MASK 0x3ff
905
906#ifndef __ASSEMBLY__
907typedef union hubii_idsr {
908 u64 iin_reg;
909 struct {
910 u64 rsvd1 : 35,
911 isent : 1,
912 rsvd2 : 3,
913 ienable: 1,
914 rsvd : 7,
915 node : 9,
916 rsvd4 : 1,
917 level : 7;
918 } iin_fmt;
919} hubii_idsr_t;
920#endif
921
922
923
924
925#define IBLS_BUSY (0x1 << 20)
926#define IBLS_ERROR_SHFT 16
927#define IBLS_ERROR (0x1 << IBLS_ERROR_SHFT)
928#define IBLS_LENGTH_MASK 0xffff
929
930
931
932
933#define IBCT_POISON (0x1 << 8)
934#define IBCT_NOTIFY (0x1 << 4)
935#define IBCT_ZFIL_MODE (0x1 << 0)
936
937
938
939
940#define IBIA_LEVEL_SHFT 16
941#define IBIA_LEVEL_MASK (0x7f << IBIA_LEVEL_SHFT)
942#define IBIA_NODE_ID_SHFT 0
943#define IBIA_NODE_ID_MASK (0x1ff)
944
945
946
947
948
949
950#define HUB_NUM_WIDGET 9
951#define HUB_WIDGET_ID_MIN 0x8
952#define HUB_WIDGET_ID_MAX 0xf
953
954#define HUB_WIDGET_PART_NUM 0xc101
955#define MAX_HUBS_PER_XBOW 2
956
957
958
959
960#define IIO_WCR_WID_GET(nasid) (REMOTE_HUB_L(nasid, III_WCR) & 0xf)
961#define IIO_WST_ERROR_MASK (UINT64_CAST 1 << 32)
962
963
964
965
966
967
968
969#define HUBII_XBOW_CREDIT 3
970#define HUBII_XBOW_REV2_CREDIT 4
971
972#endif
973