Go to the documentation of this file.
11 #ifndef _ASM_SGI_SN_SN0_HUBIO_H
12 #define _ASM_SGI_SN_SN0_HUBIO_H
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
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
47 #define IIO_PROTECT_OVRRD_KEY 0x53474972756c6573ull
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
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)
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
80 #define IO_PERF_SETS 32
82 #define IIO_WID 0x400000
83 #define IIO_WSTAT 0x400008
84 #define IIO_WCR 0x400020
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)
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
102 #define IIO_IIBUSERR 0x1400208
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
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) )
137 #define IIO_SCRATCH_REG0 0x400150
138 #define IIO_SCRATCH_REG1 0x400158
139 #define IIO_SCRATCH_MASK 0x0000000f00f11fff
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
154 #define IIO_NUM_ITTES 7
161 #define HUB_NUM_BIG_WINDOW IIO_NUM_ITTES - 1
166 #define SWIN0_BIGWIN HUB_NUM_BIG_WINDOW
168 #define ILCSR_WARM_RESET 0x100
200 #define iwcr_dir_con wcr_fields_s.wcr_dir_con
298 #define LNK_STAT_WORKING 0x2
300 #define IIO_LLP_CB_MAX 0xffff
301 #define IIO_LLP_SN_MAX 0xffff
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
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
326 #define IIO_IMEM_W0ESD 0x1
327 #define IIO_IMEM_B0ESD (1 << 4)
328 #define IIO_IMEM_B1ESD (1 << 8)
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
350 #define IIO_ICMR_PC_VLD_SHFT 36
351 #define IIO_ICMR_PC_VLD_MASK (0x7fffUL << IIO_ICMR_PC_VLD_SHFT)
353 #define IIO_ICMR_CRB_VLD_SHFT 20
354 #define IIO_ICMR_CRB_VLD_MASK (0x7fffUL << IIO_ICMR_CRB_VLD_SHFT)
356 #define IIO_ICMR_FC_CNT_SHFT 16
357 #define IIO_ICMR_FC_CNT_MASK (0xf << IIO_ICMR_FC_CNT_SHFT)
359 #define IIO_ICMR_C_CNT_SHFT 4
360 #define IIO_ICMR_C_CNT_MASK (0xf << IIO_ICMR_C_CNT_SHFT)
362 #define IIO_ICMR_P_CNT_SHFT 0
363 #define IIO_ICMR_P_CNT_MASK (0xf << IIO_ICMR_P_CNT_SHFT)
365 #define IIO_ICMR_PRECISE (1UL << 52)
366 #define IIO_ICMR_CLR_RPPD (1UL << 13)
367 #define IIO_ICMR_CLR_RQPD (1UL << 12)
372 #define IIO_IPDR_PND (1 << 4)
377 #define IIO_ICDR_PND (1 << 4)
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)
391 #define IIO_ICCR_CMD_FLUSH (0x800)
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
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)
486 #define ICRBN_A_CERR_SHFT 54
487 #define ICRBN_A_ERR_MASK 0x3ff
491 #define IIO_ICRB_ADDR_SHFT 2
496 #define IIO_ICRB_ECODE_DERR 0
497 #define IIO_ICRB_ECODE_PERR 1
498 #define IIO_ICRB_ECODE_WERR 2
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
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
616 #define IIO_ICRB_XTSIZE_DW 0
617 #define IIO_ICRB_XTSIZE_32 1
618 #define IIO_ICRB_XTSIZE_128 2
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
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
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
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
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
725 #define icrbd_toutvld icrbd_field_s.toutvld
726 #define icrbd_ctxtvld icrbd_field_s.ctxtvld
727 #define icrbd_context icrbd_field_s.context
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
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
764 #define IIO_IPCR 0x430000
765 #define IIO_IPPR 0x430008
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)
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
811 #define IPRTE_ADDRSHFT 3
839 #define iprb_regval reg_value
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
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)
903 #define ICRBP_A_CERR_SHFT 54
904 #define ICRBP_A_ERR_MASK 0x3ff
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
933 #define IBCT_POISON (0x1 << 8)
934 #define IBCT_NOTIFY (0x1 << 4)
935 #define IBCT_ZFIL_MODE (0x1 << 0)
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)
950 #define HUB_NUM_WIDGET 9
951 #define HUB_WIDGET_ID_MIN 0x8
952 #define HUB_WIDGET_ID_MAX 0xf
954 #define HUB_WIDGET_PART_NUM 0xc101
955 #define MAX_HUBS_PER_XBOW 2
960 #define IIO_WCR_WID_GET(nasid) (REMOTE_HUB_L(nasid, III_WCR) & 0xf)
961 #define IIO_WST_ERROR_MASK (UINT64_CAST 1 << 32)
969 #define HUBII_XBOW_CREDIT 3
970 #define HUBII_XBOW_REV2_CREDIT 4