shubio.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:165k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* $Id: shubio.h,v 1.1 2002/02/28 17:31:25 marcelo 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-2002 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifndef _ASM_IA64_SN_SN2_SHUBIO_H
  10. #define _ASM_IA64_SN_SN2_SHUBIO_H
  11. #include <asm/sn/arch.h>
  12. #define HUB_WIDGET_ID_MAX 0xf
  13. #define IIO_NUM_ITTES   7
  14. #define HUB_NUM_BIG_WINDOW      (IIO_NUM_ITTES - 1)
  15. #define    IIO_WID                   0x00400000    /* Crosstalk Widget Identification */
  16.                                                    /* This register is also accessible from
  17.                                                     * Crosstalk at address 0x0.  */
  18. #define    IIO_WSTAT                 0x00400008    /* Crosstalk Widget Status */
  19. #define    IIO_WCR                   0x00400020    /* Crosstalk Widget Control Register */
  20. #define    IIO_ILAPR                 0x00400100    /* IO Local Access Protection Register */
  21. #define    IIO_ILAPO                 0x00400108    /* IO Local Access Protection Override */
  22. #define    IIO_IOWA                  0x00400110    /* IO Outbound Widget Access */
  23. #define    IIO_IIWA                  0x00400118    /* IO Inbound Widget Access */
  24. #define    IIO_IIDEM                 0x00400120    /* IO Inbound Device Error Mask */
  25. #define    IIO_ILCSR                 0x00400128    /* IO LLP Control and Status Register */
  26. #define    IIO_ILLR                  0x00400130    /* IO LLP Log Register    */
  27. #define    IIO_IIDSR                 0x00400138    /* IO Interrupt Destination */
  28. #define    IIO_IGFX0                 0x00400140    /* IO Graphics Node-Widget Map 0 */
  29. #define    IIO_IGFX1                 0x00400148    /* IO Graphics Node-Widget Map 1 */
  30. #define    IIO_ISCR0                 0x00400150    /* IO Scratch Register 0 */
  31. #define    IIO_ISCR1                 0x00400158    /* IO Scratch Register 1 */
  32. #define    IIO_ITTE1                 0x00400160    /* IO Translation Table Entry 1 */
  33. #define    IIO_ITTE2                 0x00400168    /* IO Translation Table Entry 2 */
  34. #define    IIO_ITTE3                 0x00400170    /* IO Translation Table Entry 3 */
  35. #define    IIO_ITTE4                 0x00400178    /* IO Translation Table Entry 4 */
  36. #define    IIO_ITTE5                 0x00400180    /* IO Translation Table Entry 5 */
  37. #define    IIO_ITTE6                 0x00400188    /* IO Translation Table Entry 6 */
  38. #define    IIO_ITTE7                 0x00400190    /* IO Translation Table Entry 7 */
  39. #define    IIO_IPRB0                 0x00400198    /* IO PRB Entry 0         */
  40. #define    IIO_IPRB8                 0x004001A0    /* IO PRB Entry 8         */
  41. #define    IIO_IPRB9                 0x004001A8    /* IO PRB Entry 9         */
  42. #define    IIO_IPRBA                 0x004001B0    /* IO PRB Entry A         */
  43. #define    IIO_IPRBB                 0x004001B8    /* IO PRB Entry B         */
  44. #define    IIO_IPRBC                 0x004001C0    /* IO PRB Entry C         */
  45. #define    IIO_IPRBD                 0x004001C8    /* IO PRB Entry D         */
  46. #define    IIO_IPRBE                 0x004001D0    /* IO PRB Entry E         */
  47. #define    IIO_IPRBF                 0x004001D8    /* IO PRB Entry F         */
  48. #define    IIO_IXCC                  0x004001E0    /* IO Crosstalk Credit Count Timeout */
  49. #define    IIO_IMEM                  0x004001E8    /* IO Miscellaneous Error Mask */
  50. #define    IIO_IXTT                  0x004001F0    /* IO Crosstalk Timeout Threshold */
  51. #define    IIO_IECLR                 0x004001F8    /* IO Error Clear Register */
  52. #define    IIO_IBCR                  0x00400200    /* IO BTE Control Register */
  53. #define    IIO_IXSM                  0x00400208    /* IO Crosstalk Spurious Message */
  54. #define    IIO_IXSS                  0x00400210    /* IO Crosstalk Spurious Sideband */
  55. #define    IIO_ILCT                  0x00400218    /* IO LLP Channel Test    */
  56. #define    IIO_IIEPH1                0x00400220    /* IO Incoming Error Packet Header, Part 1 */
  57. #define    IIO_IIEPH2                0x00400228    /* IO Incoming Error Packet Header, Part 2 */
  58. #define    IIO_ISLAPR                0x00400230    /* IO SXB Local Access Protection Regster */
  59. #define    IIO_ISLAPO                0x00400238    /* IO SXB Local Access Protection Override */
  60. #define    IIO_IWI                   0x00400240    /* IO Wrapper Interrupt Register */
  61. #define    IIO_IWEL                  0x00400248    /* IO Wrapper Error Log Register */
  62. #define    IIO_IWC                   0x00400250    /* IO Wrapper Control Register */
  63. #define    IIO_IWS                   0x00400258    /* IO Wrapper Status Register */
  64. #define    IIO_IWEIM                 0x00400260    /* IO Wrapper Error Interrupt Masking Register */
  65. #define    IIO_IPCA                  0x00400300    /* IO PRB Counter Adjust */
  66. #define    IIO_IPRTE0_A              0x00400308    /* IO PIO Read Address Table Entry 0, Part A */
  67. #define    IIO_IPRTE1_A              0x00400310    /* IO PIO Read Address Table Entry 1, Part A */
  68. #define    IIO_IPRTE2_A              0x00400318    /* IO PIO Read Address Table Entry 2, Part A */
  69. #define    IIO_IPRTE3_A               0x00400320    /* IO PIO Read Address Table Entry 3, Part A */
  70. #define    IIO_IPRTE4_A               0x00400328    /* IO PIO Read Address Table Entry 4, Part A */
  71. #define    IIO_IPRTE5_A               0x00400330    /* IO PIO Read Address Table Entry 5, Part A */
  72. #define    IIO_IPRTE6_A               0x00400338    /* IO PIO Read Address Table Entry 6, Part A */
  73. #define    IIO_IPRTE7_A               0x00400340    /* IO PIO Read Address Table Entry 7, Part A */
  74. #define    IIO_IPRTE0_B              0x00400348    /* IO PIO Read Address Table Entry 0, Part B */
  75. #define    IIO_IPRTE1_B              0x00400350    /* IO PIO Read Address Table Entry 1, Part B */
  76. #define    IIO_IPRTE2_B              0x00400358    /* IO PIO Read Address Table Entry 2, Part B */
  77. #define    IIO_IPRTE3_B               0x00400360    /* IO PIO Read Address Table Entry 3, Part B */
  78. #define    IIO_IPRTE4_B               0x00400368    /* IO PIO Read Address Table Entry 4, Part B */
  79. #define    IIO_IPRTE5_B               0x00400370    /* IO PIO Read Address Table Entry 5, Part B */
  80. #define    IIO_IPRTE6_B               0x00400378    /* IO PIO Read Address Table Entry 6, Part B */
  81. #define    IIO_IPRTE7_B               0x00400380    /* IO PIO Read Address Table Entry 7, Part B */
  82. #define    IIO_IPDR                  0x00400388    /* IO PIO Deallocation Register */
  83. #define    IIO_ICDR                  0x00400390    /* IO CRB Entry Deallocation Register */
  84. #define    IIO_IFDR                  0x00400398    /* IO IOQ FIFO Depth Register */
  85. #define    IIO_IIAP                  0x004003A0    /* IO IIQ Arbitration Parameters */
  86. #define    IIO_ICMR                  0x004003A8    /* IO CRB Management Register */
  87. #define    IIO_ICCR                  0x004003B0    /* IO CRB Control Register */
  88. #define    IIO_ICTO                  0x004003B8    /* IO CRB Timeout         */
  89. #define    IIO_ICTP                  0x004003C0    /* IO CRB Timeout Prescalar */
  90. #define    IIO_ICRB0_A               0x00400400    /* IO CRB Entry 0_A       */
  91. #define    IIO_ICRB0_B               0x00400408    /* IO CRB Entry 0_B       */
  92. #define    IIO_ICRB0_C               0x00400410    /* IO CRB Entry 0_C       */
  93. #define    IIO_ICRB0_D               0x00400418    /* IO CRB Entry 0_D       */
  94. #define    IIO_ICRB0_E               0x00400420    /* IO CRB Entry 0_E       */
  95. #define    IIO_ICRB1_A               0x00400430    /* IO CRB Entry 1_A       */
  96. #define    IIO_ICRB1_B               0x00400438    /* IO CRB Entry 1_B       */
  97. #define    IIO_ICRB1_C               0x00400440    /* IO CRB Entry 1_C       */
  98. #define    IIO_ICRB1_D               0x00400448    /* IO CRB Entry 1_D       */
  99. #define    IIO_ICRB1_E               0x00400450    /* IO CRB Entry 1_E       */
  100. #define    IIO_ICRB2_A               0x00400460    /* IO CRB Entry 2_A       */
  101. #define    IIO_ICRB2_B               0x00400468    /* IO CRB Entry 2_B       */
  102. #define    IIO_ICRB2_C               0x00400470    /* IO CRB Entry 2_C       */
  103. #define    IIO_ICRB2_D               0x00400478    /* IO CRB Entry 2_D       */
  104. #define    IIO_ICRB2_E               0x00400480    /* IO CRB Entry 2_E       */
  105. #define    IIO_ICRB3_A               0x00400490    /* IO CRB Entry 3_A       */
  106. #define    IIO_ICRB3_B               0x00400498    /* IO CRB Entry 3_B       */
  107. #define    IIO_ICRB3_C               0x004004a0    /* IO CRB Entry 3_C       */
  108. #define    IIO_ICRB3_D               0x004004a8    /* IO CRB Entry 3_D       */
  109. #define    IIO_ICRB3_E               0x004004b0    /* IO CRB Entry 3_E       */
  110. #define    IIO_ICRB4_A               0x004004c0    /* IO CRB Entry 4_A       */
  111. #define    IIO_ICRB4_B               0x004004c8    /* IO CRB Entry 4_B       */
  112. #define    IIO_ICRB4_C               0x004004d0    /* IO CRB Entry 4_C       */
  113. #define    IIO_ICRB4_D               0x004004d8    /* IO CRB Entry 4_D       */
  114. #define    IIO_ICRB4_E               0x004004e0    /* IO CRB Entry 4_E       */
  115. #define    IIO_ICRB5_A               0x004004f0    /* IO CRB Entry 5_A       */
  116. #define    IIO_ICRB5_B               0x004004f8    /* IO CRB Entry 5_B       */
  117. #define    IIO_ICRB5_C               0x00400500    /* IO CRB Entry 5_C       */
  118. #define    IIO_ICRB5_D               0x00400508    /* IO CRB Entry 5_D       */
  119. #define    IIO_ICRB5_E               0x00400510    /* IO CRB Entry 5_E       */
  120. #define    IIO_ICRB6_A               0x00400520    /* IO CRB Entry 6_A       */
  121. #define    IIO_ICRB6_B               0x00400528    /* IO CRB Entry 6_B       */
  122. #define    IIO_ICRB6_C               0x00400530    /* IO CRB Entry 6_C       */
  123. #define    IIO_ICRB6_D               0x00400538    /* IO CRB Entry 6_D       */
  124. #define    IIO_ICRB6_E               0x00400540    /* IO CRB Entry 6_E       */
  125. #define    IIO_ICRB7_A               0x00400550    /* IO CRB Entry 7_A       */
  126. #define    IIO_ICRB7_B               0x00400558    /* IO CRB Entry 7_B       */
  127. #define    IIO_ICRB7_C               0x00400560    /* IO CRB Entry 7_C       */
  128. #define    IIO_ICRB7_D               0x00400568    /* IO CRB Entry 7_D       */
  129. #define    IIO_ICRB7_E               0x00400570    /* IO CRB Entry 7_E       */
  130. #define    IIO_ICRB8_A               0x00400580    /* IO CRB Entry 8_A       */
  131. #define    IIO_ICRB8_B               0x00400588    /* IO CRB Entry 8_B       */
  132. #define    IIO_ICRB8_C               0x00400590    /* IO CRB Entry 8_C       */
  133. #define    IIO_ICRB8_D               0x00400598    /* IO CRB Entry 8_D       */
  134. #define    IIO_ICRB8_E               0x004005a0    /* IO CRB Entry 8_E       */
  135. #define    IIO_ICRB9_A               0x004005b0    /* IO CRB Entry 9_A       */
  136. #define    IIO_ICRB9_B               0x004005b8    /* IO CRB Entry 9_B       */
  137. #define    IIO_ICRB9_C               0x004005c0    /* IO CRB Entry 9_C       */
  138. #define    IIO_ICRB9_D               0x004005c8    /* IO CRB Entry 9_D       */
  139. #define    IIO_ICRB9_E               0x004005d0    /* IO CRB Entry 9_E       */
  140. #define    IIO_ICRBA_A               0x004005e0    /* IO CRB Entry A_A       */
  141. #define    IIO_ICRBA_B               0x004005e8    /* IO CRB Entry A_B       */
  142. #define    IIO_ICRBA_C               0x004005f0    /* IO CRB Entry A_C       */
  143. #define    IIO_ICRBA_D               0x004005f8    /* IO CRB Entry A_D       */
  144. #define    IIO_ICRBA_E               0x00400600    /* IO CRB Entry A_E       */
  145. #define    IIO_ICRBB_A               0x00400610    /* IO CRB Entry B_A       */
  146. #define    IIO_ICRBB_B               0x00400618    /* IO CRB Entry B_B       */
  147. #define    IIO_ICRBB_C               0x00400620    /* IO CRB Entry B_C       */
  148. #define    IIO_ICRBB_D               0x00400628    /* IO CRB Entry B_D       */
  149. #define    IIO_ICRBB_E               0x00400630    /* IO CRB Entry B_E       */
  150. #define    IIO_ICRBC_A               0x00400640    /* IO CRB Entry C_A       */
  151. #define    IIO_ICRBC_B               0x00400648    /* IO CRB Entry C_B       */
  152. #define    IIO_ICRBC_C               0x00400650    /* IO CRB Entry C_C       */
  153. #define    IIO_ICRBC_D               0x00400658    /* IO CRB Entry C_D       */
  154. #define    IIO_ICRBC_E               0x00400660    /* IO CRB Entry C_E       */
  155. #define    IIO_ICRBD_A               0x00400670    /* IO CRB Entry D_A       */
  156. #define    IIO_ICRBD_B               0x00400678    /* IO CRB Entry D_B       */
  157. #define    IIO_ICRBD_C               0x00400680    /* IO CRB Entry D_C       */
  158. #define    IIO_ICRBD_D               0x00400688    /* IO CRB Entry D_D       */
  159. #define    IIO_ICRBD_E               0x00400690    /* IO CRB Entry D_E       */
  160. #define    IIO_ICRBE_A               0x004006a0    /* IO CRB Entry E_A       */
  161. #define    IIO_ICRBE_B               0x004006a8    /* IO CRB Entry E_B       */
  162. #define    IIO_ICRBE_C               0x004006b0    /* IO CRB Entry E_C       */
  163. #define    IIO_ICRBE_D               0x004006b8    /* IO CRB Entry E_D       */
  164. #define    IIO_ICRBE_E               0x004006c0    /* IO CRB Entry E_E       */
  165. #define    IIO_ICSML                 0x00400700    /* IO CRB Spurious Message Low */
  166. #define    IIO_ICSMM                 0x00400708    /* IO CRB Spurious Message Middle */
  167. #define    IIO_ICSMH                 0x00400710    /* IO CRB Spurious Message High */
  168. #define    IIO_IDBSS                 0x00400718    /* IO Debug Submenu Select */
  169. #define    IIO_IBLS0                 0x00410000    /* IO BTE Length Status 0 */
  170. #define    IIO_IBSA0                 0x00410008    /* IO BTE Source Address 0 */
  171. #define    IIO_IBDA0                 0x00410010    /* IO BTE Destination Address 0 */
  172. #define    IIO_IBCT0                 0x00410018    /* IO BTE Control Terminate 0 */
  173. #define    IIO_IBNA0                 0x00410020    /* IO BTE Notification Address 0 */
  174. #define    IIO_IBIA0                 0x00410028    /* IO BTE Interrupt Address 0 */
  175. #define    IIO_IBLS1                 0x00420000    /* IO BTE Length Status 1 */
  176. #define    IIO_IBSA1                 0x00420008    /* IO BTE Source Address 1 */
  177. #define    IIO_IBDA1                 0x00420010    /* IO BTE Destination Address 1 */
  178. #define    IIO_IBCT1                 0x00420018    /* IO BTE Control Terminate 1 */
  179. #define    IIO_IBNA1                 0x00420020    /* IO BTE Notification Address 1 */
  180. #define    IIO_IBIA1                 0x00420028    /* IO BTE Interrupt Address 1 */
  181. #define    IIO_IPCR                  0x00430000    /* IO Performance Control */
  182. #define    IIO_IPPR                  0x00430008    /* IO Performance Profiling */
  183. #ifndef __ASSEMBLY__
  184. /************************************************************************
  185.  *                                                                      *
  186.  * Description:  This register echoes some information from the         *
  187.  * LB_REV_ID register. It is available through Crosstalk as described   *
  188.  * above. The REV_NUM and MFG_NUM fields receive their values from      *
  189.  * the REVISION and MANUFACTURER fields in the LB_REV_ID register.      *
  190.  * The PART_NUM field's value is the Crosstalk device ID number that    *
  191.  * Steve Miller assigned to the SHub chip.                              *
  192.  *                                                                      *
  193.  ************************************************************************/
  194. typedef union ii_wid_u {
  195. shubreg_t ii_wid_regval;
  196. struct {
  197. shubreg_t w_rsvd_1   :  1;
  198. shubreg_t w_mfg_num   : 11;
  199. shubreg_t w_part_num   : 16;
  200. shubreg_t w_rev_num   :  4;
  201. shubreg_t w_rsvd   : 32;
  202. } ii_wid_fld_s;
  203. } ii_wid_u_t;
  204. /************************************************************************
  205.  *                                                                      *
  206.  *  The fields in this register are set upon detection of an error      *
  207.  * and cleared by various mechanisms, as explained in the               *
  208.  * description.                                                         *
  209.  *                                                                      *
  210.  ************************************************************************/
  211. typedef union ii_wstat_u {
  212. shubreg_t ii_wstat_regval;
  213. struct {
  214. shubreg_t w_pending   :  4;
  215. shubreg_t w_xt_crd_to   :  1;
  216. shubreg_t w_xt_tail_to   :  1;
  217. shubreg_t w_rsvd_3   :  3;
  218. shubreg_t       w_tx_mx_rty               :      1;
  219. shubreg_t w_rsvd_2   :  6;
  220. shubreg_t w_llp_tx_cnt   :  8;
  221. shubreg_t w_rsvd_1   :  8;
  222. shubreg_t w_crazy   :  1;
  223. shubreg_t w_rsvd   : 31;
  224. } ii_wstat_fld_s;
  225. } ii_wstat_u_t;
  226. /************************************************************************
  227.  *                                                                      *
  228.  * Description:  This is a read-write enabled register. It controls     *
  229.  * various aspects of the Crosstalk flow control.                       *
  230.  *                                                                      *
  231.  ************************************************************************/
  232. typedef union ii_wcr_u {
  233. shubreg_t ii_wcr_regval;
  234. struct {
  235. shubreg_t w_wid   :  4;
  236. shubreg_t w_tag   :  1;
  237. shubreg_t w_rsvd_1   :  8;
  238. shubreg_t w_dst_crd   :  3;
  239. shubreg_t w_f_bad_pkt   :  1;
  240. shubreg_t w_dir_con   :  1;
  241. shubreg_t w_e_thresh   :  5;
  242. shubreg_t w_rsvd   : 41;
  243. } ii_wcr_fld_s;
  244. } ii_wcr_u_t;
  245. /************************************************************************
  246.  *                                                                      *
  247.  * Description:  This register's value is a bit vector that guards      *
  248.  * access to local registers within the II as well as to external       *
  249.  * Crosstalk widgets. Each bit in the register corresponds to a         *
  250.  * particular region in the system; a region consists of one, two or    *
  251.  * four nodes (depending on the value of the REGION_SIZE field in the   *
  252.  * LB_REV_ID register, which is documented in Section 8.3.1.1). The     *
  253.  * protection provided by this register applies to PIO read             *
  254.  * operations as well as PIO write operations. The II will perform a    *
  255.  * PIO read or write request only if the bit for the requestor's        *
  256.  * region is set; otherwise, the II will not perform the requested      *
  257.  * operation and will return an error response. When a PIO read or      *
  258.  * write request targets an external Crosstalk widget, then not only    *
  259.  * must the bit for the requestor's region be set in the ILAPR, but     *
  260.  * also the target widget's bit in the IOWA register must be set in     *
  261.  * order for the II to perform the requested operation; otherwise,      *
  262.  * the II will return an error response. Hence, the protection          *
  263.  * provided by the IOWA register supplements the protection provided    *
  264.  * by the ILAPR for requests that target external Crosstalk widgets.    *
  265.  * This register itself can be accessed only by the nodes whose         *
  266.  * region ID bits are enabled in this same register. It can also be     *
  267.  * accessed through the IAlias space by the local processors.           *
  268.  * The reset value of this register allows access by all nodes.         *
  269.  *                                                                      *
  270.  ************************************************************************/
  271. typedef union ii_ilapr_u {
  272. shubreg_t ii_ilapr_regval;
  273. struct  {
  274. shubreg_t i_region                  : 64;
  275. } ii_ilapr_fld_s;
  276. } ii_ilapr_u_t;
  277. /************************************************************************
  278.  *                                                                      *
  279.  * Description:  A write to this register of the 64-bit value           *
  280.  * "SGIrules" in ASCII, will cause the bit in the ILAPR register        *
  281.  * corresponding to the region of the requestor to be set (allow        *
  282.  * access). A write of any other value will be ignored. Access          *
  283.  * protection for this register is "SGIrules".                          *
  284.  * This register can also be accessed through the IAlias space.         *
  285.  * However, this access will not change the access permissions in the   *
  286.  * ILAPR.                                                               *
  287.  *                                                                      *
  288.  ************************************************************************/
  289. typedef union ii_ilapo_u {
  290. shubreg_t ii_ilapo_regval;
  291. struct {
  292. shubreg_t i_io_ovrride            : 64;
  293. } ii_ilapo_fld_s;
  294. } ii_ilapo_u_t;
  295. /************************************************************************
  296.  *                                                                      *
  297.  *  This register qualifies all the PIO and Graphics writes launched    *
  298.  * from the SHUB towards a widget.                                      *
  299.  *                                                                      *
  300.  ************************************************************************/
  301. typedef union ii_iowa_u {
  302. shubreg_t ii_iowa_regval;
  303. struct {
  304. shubreg_t i_w0_oac   :  1;
  305. shubreg_t i_rsvd_1   :  7;
  306.                 shubreg_t       i_wx_oac                  :      8;
  307. shubreg_t i_rsvd   : 48;
  308. } ii_iowa_fld_s;
  309. } ii_iowa_u_t;
  310. /************************************************************************
  311.  *                                                                      *
  312.  * Description:  This register qualifies all the requests launched      *
  313.  * from a widget towards the Shub. This register is intended to be      *
  314.  * used by software in case of misbehaving widgets.                     *
  315.  *                                                                      *
  316.  *                                                                      *
  317.  ************************************************************************/
  318. typedef union ii_iiwa_u {
  319. shubreg_t ii_iiwa_regval;
  320. struct  {
  321. shubreg_t i_w0_iac                  :  1;
  322. shubreg_t i_rsvd_1   :  7;
  323. shubreg_t i_wx_iac   :  8;
  324. shubreg_t i_rsvd   : 48;
  325. } ii_iiwa_fld_s;
  326. } ii_iiwa_u_t;
  327. /************************************************************************
  328.  *                                                                      *
  329.  * Description:  This register qualifies all the operations launched    *
  330.  * from a widget towards the SHub. It allows individual access          *
  331.  * control for up to 8 devices per widget. A device refers to           *
  332.  * individual DMA master hosted by a widget.                            *
  333.  * The bits in each field of this register are cleared by the Shub      *
  334.  * upon detection of an error which requires the device to be           *
  335.  * disabled. These fields assume that 0=TNUM=7 (i.e., Bridge-centric    *
  336.  * Crosstalk). Whether or not a device has access rights to this        *
  337.  * Shub is determined by an AND of the device enable bit in the         *
  338.  * appropriate field of this register and the corresponding bit in      *
  339.  * the Wx_IAC field (for the widget which this device belongs to).      *
  340.  * The bits in this field are set by writing a 1 to them. Incoming      *
  341.  * replies from Crosstalk are not subject to this access control        *
  342.  * mechanism.                                                           *
  343.  *                                                                      *
  344.  ************************************************************************/
  345. typedef union ii_iidem_u {
  346. shubreg_t ii_iidem_regval;
  347. struct {
  348. shubreg_t i_w8_dxs   :  8;
  349. shubreg_t i_w9_dxs   :  8;
  350. shubreg_t i_wa_dxs   :  8;
  351. shubreg_t i_wb_dxs   :  8;
  352. shubreg_t i_wc_dxs   :  8;
  353. shubreg_t i_wd_dxs   :  8;
  354. shubreg_t i_we_dxs   :  8;
  355. shubreg_t i_wf_dxs   :  8;
  356. } ii_iidem_fld_s;
  357. } ii_iidem_u_t;
  358. /************************************************************************
  359.  *                                                                      *
  360.  *  This register contains the various programmable fields necessary    *
  361.  * for controlling and observing the LLP signals.                       *
  362.  *                                                                      *
  363.  ************************************************************************/
  364. typedef union ii_ilcsr_u {
  365. shubreg_t ii_ilcsr_regval;
  366. struct  {
  367. shubreg_t i_nullto                  :  6;
  368. shubreg_t i_rsvd_4   :  2;
  369. shubreg_t i_wrmrst   :  1;
  370. shubreg_t i_rsvd_3   :  1;
  371. shubreg_t i_llp_en   :  1;
  372. shubreg_t i_bm8   :  1;
  373. shubreg_t i_llp_stat   :  2;
  374. shubreg_t i_remote_power   :  1;
  375. shubreg_t i_rsvd_2   :  1;
  376. shubreg_t i_maxrtry   : 10;
  377. shubreg_t i_d_avail_sel   :  2;
  378. shubreg_t i_rsvd_1   :  4;
  379. shubreg_t i_maxbrst   : 10;
  380.                 shubreg_t       i_rsvd                    :     22;
  381. } ii_ilcsr_fld_s;
  382. } ii_ilcsr_u_t;
  383. /************************************************************************
  384.  *                                                                      *
  385.  *  This is simply a status registers that monitors the LLP error       *
  386.  * rate.                                                                *
  387.  *                                                                      *
  388.  ************************************************************************/
  389. typedef union ii_illr_u {
  390. shubreg_t ii_illr_regval;
  391. struct {
  392. shubreg_t i_sn_cnt   : 16;
  393. shubreg_t i_cb_cnt   : 16;
  394. shubreg_t i_rsvd   : 32;
  395. } ii_illr_fld_s;
  396. } ii_illr_u_t;
  397. /************************************************************************
  398.  *                                                                      *
  399.  * Description:  All II-detected non-BTE error interrupts are           *
  400.  * specified via this register.                                         *
  401.  * NOTE: The PI interrupt register address is hardcoded in the II. If   *
  402.  * PI_ID==0, then the II sends an interrupt request (Duplonet PWRI      *
  403.  * packet) to address offset 0x0180_0090 within the local register      *
  404.  * address space of PI0 on the node specified by the NODE field. If     *
  405.  * PI_ID==1, then the II sends the interrupt request to address         *
  406.  * offset 0x01A0_0090 within the local register address space of PI1    *
  407.  * on the node specified by the NODE field.                             *
  408.  *                                                                      *
  409.  ************************************************************************/
  410. typedef union ii_iidsr_u {
  411. shubreg_t ii_iidsr_regval;
  412. struct  {
  413. shubreg_t i_level                   :  8;
  414. shubreg_t i_pi_id   :  1;
  415. shubreg_t i_node   : 11;
  416. shubreg_t       i_rsvd_3                  :      4;
  417. shubreg_t i_enable   :  1;
  418. shubreg_t i_rsvd_2   :  3;
  419. shubreg_t i_int_sent   :  2;
  420. shubreg_t       i_rsvd_1                  :      2;
  421. shubreg_t i_pi0_forward_int   :  1;
  422. shubreg_t i_pi1_forward_int   :  1;
  423. shubreg_t i_rsvd   : 30;
  424. } ii_iidsr_fld_s;
  425. } ii_iidsr_u_t;
  426. /************************************************************************
  427.  *                                                                      *
  428.  *  There are two instances of this register. This register is used     *
  429.  * for matching up the incoming responses from the graphics widget to   *
  430.  * the processor that initiated the graphics operation. The             *
  431.  * write-responses are converted to graphics credits and returned to    *
  432.  * the processor so that the processor interface can manage the flow    *
  433.  * control.                                                             *
  434.  *                                                                      *
  435.  ************************************************************************/
  436. typedef union ii_igfx0_u {
  437. shubreg_t ii_igfx0_regval;
  438. struct {
  439. shubreg_t i_w_num   :  4;
  440. shubreg_t       i_pi_id                   :      1;
  441. shubreg_t i_n_num   : 12;
  442. shubreg_t       i_p_num                   :      1;
  443. shubreg_t       i_rsvd                    :     46;
  444. } ii_igfx0_fld_s;
  445. } ii_igfx0_u_t;
  446. /************************************************************************
  447.  *                                                                      *
  448.  *  There are two instances of this register. This register is used     *
  449.  * for matching up the incoming responses from the graphics widget to   *
  450.  * the processor that initiated the graphics operation. The             *
  451.  * write-responses are converted to graphics credits and returned to    *
  452.  * the processor so that the processor interface can manage the flow    *
  453.  * control.                                                             *
  454.  *                                                                      *
  455.  ************************************************************************/
  456. typedef union ii_igfx1_u {
  457. shubreg_t ii_igfx1_regval;
  458. struct  {
  459. shubreg_t i_w_num   :  4;
  460. shubreg_t       i_pi_id                   :      1;
  461. shubreg_t i_n_num   : 12;
  462. shubreg_t       i_p_num                   :      1;
  463. shubreg_t       i_rsvd                    :     46;
  464. } ii_igfx1_fld_s;
  465. } ii_igfx1_u_t;
  466. /************************************************************************
  467.  *                                                                      *
  468.  *  There are two instances of this registers. These registers are      *
  469.  * used as scratch registers for software use.                          *
  470.  *                                                                      *
  471.  ************************************************************************/
  472. typedef union ii_iscr0_u {
  473. shubreg_t ii_iscr0_regval;
  474. struct  {
  475. shubreg_t i_scratch                 : 64;
  476. } ii_iscr0_fld_s;
  477. } ii_iscr0_u_t;
  478. /************************************************************************
  479.  *                                                                      *
  480.  *  There are two instances of this registers. These registers are      *
  481.  * used as scratch registers for software use.                          *
  482.  *                                                                      *
  483.  ************************************************************************/
  484. typedef union ii_iscr1_u {
  485. shubreg_t ii_iscr1_regval;
  486. struct  {
  487. shubreg_t i_scratch                 : 64;
  488. } ii_iscr1_fld_s;
  489. } ii_iscr1_u_t;
  490. /************************************************************************
  491.  *                                                                      *
  492.  * Description:  There are seven instances of translation table entry   *
  493.  * registers. Each register maps a Shub Big Window to a 48-bit          *
  494.  * address on Crosstalk.                                                *
  495.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  496.  * number) are used to select one of these 7 registers. The Widget      *
  497.  * number field is then derived from the W_NUM field for synthesizing   *
  498.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  499.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  500.  * are padded with zeros. Although the maximum Crosstalk space          *
  501.  * addressable by the SHub is thus the lower 16 GBytes per widget       * 
  502.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  503.  * space can be accessed.                                               *
  504.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  505.  * Window number) are used to select one of these 7 registers. The      *
  506.  * Widget number field is then derived from the W_NUM field for         *
  507.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  508.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  509.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  510.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  511.  * Crosstalk space addressable by the Shub is thus the lower            *
  512.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  513.  * of this space can be accessed.                                       *
  514.  *                                                                      *
  515.  ************************************************************************/
  516. typedef union ii_itte1_u {
  517. shubreg_t ii_itte1_regval;
  518. struct  {
  519. shubreg_t i_offset                  :  5;
  520. shubreg_t i_rsvd_1   :  3;
  521. shubreg_t i_w_num   :  4;
  522. shubreg_t i_iosp   :  1;
  523. shubreg_t i_rsvd   : 51;
  524. } ii_itte1_fld_s;
  525. } ii_itte1_u_t;
  526. /************************************************************************
  527.  *                                                                      *
  528.  * Description:  There are seven instances of translation table entry   *
  529.  * registers. Each register maps a Shub Big Window to a 48-bit          *
  530.  * address on Crosstalk.                                                *
  531.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  532.  * number) are used to select one of these 7 registers. The Widget      *
  533.  * number field is then derived from the W_NUM field for synthesizing   *
  534.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  535.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  536.  * are padded with zeros. Although the maximum Crosstalk space          *
  537.  * addressable by the Shub is thus the lower 16 GBytes per widget       *
  538.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  539.  * space can be accessed.                                               *
  540.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  541.  * Window number) are used to select one of these 7 registers. The      *
  542.  * Widget number field is then derived from the W_NUM field for         *
  543.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  544.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  545.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  546.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  547.  * Crosstalk space addressable by the Shub is thus the lower            *
  548.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  549.  * of this space can be accessed.                                       *
  550.  *                                                                      *
  551.  ************************************************************************/
  552. typedef union ii_itte2_u {
  553. shubreg_t ii_itte2_regval;
  554. struct {
  555. shubreg_t i_offset   :  5;
  556. shubreg_t i_rsvd_1   :  3;
  557. shubreg_t i_w_num   :  4;
  558. shubreg_t i_iosp   :  1;
  559. shubreg_t       i_rsvd                    :     51;
  560. } ii_itte2_fld_s;
  561. } ii_itte2_u_t;
  562. /************************************************************************
  563.  *                                                                      *
  564.  * Description:  There are seven instances of translation table entry   *
  565.  * registers. Each register maps a Shub Big Window to a 48-bit          *
  566.  * address on Crosstalk.                                                *
  567.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  568.  * number) are used to select one of these 7 registers. The Widget      *
  569.  * number field is then derived from the W_NUM field for synthesizing   *
  570.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  571.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  572.  * are padded with zeros. Although the maximum Crosstalk space          *
  573.  * addressable by the Shub is thus the lower 16 GBytes per widget       *
  574.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  575.  * space can be accessed.                                               *
  576.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  577.  * Window number) are used to select one of these 7 registers. The      *
  578.  * Widget number field is then derived from the W_NUM field for         *
  579.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  580.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  581.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  582.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  583.  * Crosstalk space addressable by the SHub is thus the lower            *
  584.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  585.  * of this space can be accessed.                                       *
  586.  *                                                                      *
  587.  ************************************************************************/
  588. typedef union ii_itte3_u {
  589. shubreg_t ii_itte3_regval;
  590. struct  {
  591. shubreg_t i_offset                  :  5;
  592. shubreg_t       i_rsvd_1                  :      3;
  593. shubreg_t       i_w_num                   :      4;
  594. shubreg_t       i_iosp                    :      1;
  595. shubreg_t       i_rsvd                    :     51;
  596. } ii_itte3_fld_s;
  597. } ii_itte3_u_t;
  598. /************************************************************************
  599.  *                                                                      *
  600.  * Description:  There are seven instances of translation table entry   *
  601.  * registers. Each register maps a SHub Big Window to a 48-bit          *
  602.  * address on Crosstalk.                                                *
  603.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  604.  * number) are used to select one of these 7 registers. The Widget      *
  605.  * number field is then derived from the W_NUM field for synthesizing   *
  606.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  607.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  608.  * are padded with zeros. Although the maximum Crosstalk space          *
  609.  * addressable by the SHub is thus the lower 16 GBytes per widget       *
  610.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  611.  * space can be accessed.                                               *
  612.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  613.  * Window number) are used to select one of these 7 registers. The      *
  614.  * Widget number field is then derived from the W_NUM field for         *
  615.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  616.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  617.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  618.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  619.  * Crosstalk space addressable by the SHub is thus the lower            *
  620.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  621.  * of this space can be accessed.                                       *
  622.  *                                                                      *
  623.  ************************************************************************/
  624. typedef union ii_itte4_u {
  625. shubreg_t ii_itte4_regval;
  626. struct  {
  627. shubreg_t i_offset                  :  5;
  628. shubreg_t i_rsvd_1   :  3;
  629. shubreg_t       i_w_num                   :      4;
  630. shubreg_t       i_iosp                    :      1;
  631. shubreg_t       i_rsvd                    :     51;
  632. } ii_itte4_fld_s;
  633. } ii_itte4_u_t;
  634. /************************************************************************
  635.  *                                                                      *
  636.  * Description:  There are seven instances of translation table entry   *
  637.  * registers. Each register maps a SHub Big Window to a 48-bit          *
  638.  * address on Crosstalk.                                                *
  639.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  640.  * number) are used to select one of these 7 registers. The Widget      *
  641.  * number field is then derived from the W_NUM field for synthesizing   *
  642.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  643.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  644.  * are padded with zeros. Although the maximum Crosstalk space          *
  645.  * addressable by the Shub is thus the lower 16 GBytes per widget       *
  646.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  647.  * space can be accessed.                                               *
  648.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  649.  * Window number) are used to select one of these 7 registers. The      *
  650.  * Widget number field is then derived from the W_NUM field for         *
  651.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  652.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  653.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  654.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  655.  * Crosstalk space addressable by the Shub is thus the lower            *
  656.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  657.  * of this space can be accessed.                                       *
  658.  *                                                                      *
  659.  ************************************************************************/
  660. typedef union ii_itte5_u {
  661. shubreg_t ii_itte5_regval;
  662. struct  {
  663. shubreg_t i_offset                  :  5;
  664. shubreg_t       i_rsvd_1                  :      3;
  665. shubreg_t       i_w_num                   :      4;
  666. shubreg_t       i_iosp                    :      1;
  667. shubreg_t       i_rsvd                    :     51;
  668. } ii_itte5_fld_s;
  669. } ii_itte5_u_t;
  670. /************************************************************************
  671.  *                                                                      *
  672.  * Description:  There are seven instances of translation table entry   *
  673.  * registers. Each register maps a Shub Big Window to a 48-bit          *
  674.  * address on Crosstalk.                                                *
  675.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  676.  * number) are used to select one of these 7 registers. The Widget      *
  677.  * number field is then derived from the W_NUM field for synthesizing   *
  678.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  679.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  680.  * are padded with zeros. Although the maximum Crosstalk space          *
  681.  * addressable by the Shub is thus the lower 16 GBytes per widget       *
  682.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  683.  * space can be accessed.                                               *
  684.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  685.  * Window number) are used to select one of these 7 registers. The      *
  686.  * Widget number field is then derived from the W_NUM field for         *
  687.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  688.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  689.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  690.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  691.  * Crosstalk space addressable by the Shub is thus the lower            *
  692.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  693.  * of this space can be accessed.                                       *
  694.  *                                                                      *
  695.  ************************************************************************/
  696. typedef union ii_itte6_u {
  697. shubreg_t ii_itte6_regval;
  698. struct  {
  699. shubreg_t i_offset                  :  5;
  700. shubreg_t       i_rsvd_1                  :      3;
  701. shubreg_t       i_w_num                   :      4;
  702. shubreg_t       i_iosp                    :      1;
  703. shubreg_t       i_rsvd                    :     51;
  704. } ii_itte6_fld_s;
  705. } ii_itte6_u_t;
  706. /************************************************************************
  707.  *                                                                      *
  708.  * Description:  There are seven instances of translation table entry   *
  709.  * registers. Each register maps a Shub Big Window to a 48-bit          *
  710.  * address on Crosstalk.                                                *
  711.  * For M-mode (128 nodes, 8 GBytes/node), SysAD[31:29] (Big Window      *
  712.  * number) are used to select one of these 7 registers. The Widget      *
  713.  * number field is then derived from the W_NUM field for synthesizing   *
  714.  * a Crosstalk packet. The 5 bits of OFFSET are concatenated with       *
  715.  * SysAD[28:0] to form Crosstalk[33:0]. The upper Crosstalk[47:34]      *
  716.  * are padded with zeros. Although the maximum Crosstalk space          *
  717.  * addressable by the Shub is thus the lower 16 GBytes per widget       *
  718.  * (M-mode), however only <SUP >7</SUP>/<SUB >32nds</SUB> of this       *
  719.  * space can be accessed.                                               *
  720.  * For the N-mode (256 nodes, 4 GBytes/node), SysAD[30:28] (Big         *
  721.  * Window number) are used to select one of these 7 registers. The      *
  722.  * Widget number field is then derived from the W_NUM field for         *
  723.  * synthesizing a Crosstalk packet. The 5 bits of OFFSET are            *
  724.  * concatenated with SysAD[27:0] to form Crosstalk[33:0]. The IOSP      *
  725.  * field is used as Crosstalk[47], and remainder of the Crosstalk       *
  726.  * address bits (Crosstalk[46:34]) are always zero. While the maximum   *
  727.  * Crosstalk space addressable by the SHub is thus the lower            *
  728.  * 8-GBytes per widget (N-mode), only <SUP >7</SUP>/<SUB >32nds</SUB>   *
  729.  * of this space can be accessed.                                       *
  730.  *                                                                      *
  731.  ************************************************************************/
  732. typedef union ii_itte7_u {
  733. shubreg_t ii_itte7_regval;
  734. struct  {
  735. shubreg_t i_offset                  :  5;
  736. shubreg_t i_rsvd_1   :  3;
  737. shubreg_t       i_w_num                   :      4;
  738. shubreg_t       i_iosp                    :      1;
  739. shubreg_t       i_rsvd                    :     51;
  740. } ii_itte7_fld_s;
  741. } ii_itte7_u_t;
  742. /************************************************************************
  743.  *                                                                      *
  744.  * Description:  There are 9 instances of this register, one per        *
  745.  * actual widget in this implementation of SHub and Crossbow.           *
  746.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  747.  * refers to Crossbow's internal space.                                 *
  748.  * This register contains the state elements per widget that are        *
  749.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  750.  * Router Network. See the PIO Flow Control chapter for a complete      *
  751.  * description of this register                                         *
  752.  * The SPUR_WR bit requires some explanation. When this register is     *
  753.  * written, the new value of the C field is captured in an internal     *
  754.  * register so the hardware can remember what the programmer wrote      *
  755.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  756.  * increments above this stored value, which indicates that there       *
  757.  * have been more responses received than requests sent. The SPUR_WR    *
  758.  * bit cannot be cleared until a value is written to the IPRBx          *
  759.  * register; the write will correct the C field and capture its new     *
  760.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  761.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  762.  * .                                                                    *
  763.  *                                                                      *
  764.  ************************************************************************/
  765. typedef union ii_iprb0_u {
  766. shubreg_t ii_iprb0_regval;
  767. struct  {
  768. shubreg_t i_c                       :  8;
  769. shubreg_t i_na   : 14;
  770. shubreg_t       i_rsvd_2                  :      2;
  771. shubreg_t i_nb   : 14;
  772. shubreg_t i_rsvd_1   :  2;
  773. shubreg_t i_m   :  2;
  774. shubreg_t i_f   :  1;
  775. shubreg_t i_of_cnt   :  5;
  776. shubreg_t i_error   :  1;
  777. shubreg_t i_rd_to   :  1;
  778. shubreg_t i_spur_wr   :  1;
  779. shubreg_t i_spur_rd   :  1;
  780. shubreg_t i_rsvd   : 11;
  781. shubreg_t i_mult_err   :  1;
  782. } ii_iprb0_fld_s;
  783. } ii_iprb0_u_t;
  784. /************************************************************************
  785.  *                                                                      *
  786.  * Description:  There are 9 instances of this register, one per        *
  787.  * actual widget in this implementation of SHub and Crossbow.           *
  788.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  789.  * refers to Crossbow's internal space.                                 *
  790.  * This register contains the state elements per widget that are        *
  791.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  792.  * Router Network. See the PIO Flow Control chapter for a complete      *
  793.  * description of this register                                         *
  794.  * The SPUR_WR bit requires some explanation. When this register is     *
  795.  * written, the new value of the C field is captured in an internal     *
  796.  * register so the hardware can remember what the programmer wrote      *
  797.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  798.  * increments above this stored value, which indicates that there       *
  799.  * have been more responses received than requests sent. The SPUR_WR    *
  800.  * bit cannot be cleared until a value is written to the IPRBx          *
  801.  * register; the write will correct the C field and capture its new     *
  802.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  803.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  804.  * .                                                                    *
  805.  *                                                                      *
  806.  ************************************************************************/
  807. typedef union ii_iprb8_u {
  808. shubreg_t ii_iprb8_regval;
  809. struct  {
  810. shubreg_t i_c                       :  8;
  811. shubreg_t i_na   : 14;
  812. shubreg_t       i_rsvd_2                  :      2;
  813. shubreg_t i_nb   : 14;
  814. shubreg_t       i_rsvd_1                  :      2;
  815. shubreg_t       i_m                       :      2;
  816. shubreg_t       i_f                       :      1;
  817. shubreg_t       i_of_cnt                  :      5;
  818. shubreg_t       i_error                   :      1;
  819. shubreg_t       i_rd_to                   :      1;
  820. shubreg_t       i_spur_wr                 :      1;
  821. shubreg_t i_spur_rd   :  1;
  822. shubreg_t       i_rsvd                    :     11;
  823. shubreg_t i_mult_err   :  1;
  824. } ii_iprb8_fld_s;
  825. } ii_iprb8_u_t;
  826. /************************************************************************
  827.  *                                                                      *
  828.  * Description:  There are 9 instances of this register, one per        *
  829.  * actual widget in this implementation of SHub and Crossbow.           *
  830.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  831.  * refers to Crossbow's internal space.                                 *
  832.  * This register contains the state elements per widget that are        *
  833.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  834.  * Router Network. See the PIO Flow Control chapter for a complete      *
  835.  * description of this register                                         *
  836.  * The SPUR_WR bit requires some explanation. When this register is     *
  837.  * written, the new value of the C field is captured in an internal     *
  838.  * register so the hardware can remember what the programmer wrote      *
  839.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  840.  * increments above this stored value, which indicates that there       *
  841.  * have been more responses received than requests sent. The SPUR_WR    *
  842.  * bit cannot be cleared until a value is written to the IPRBx          *
  843.  * register; the write will correct the C field and capture its new     *
  844.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  845.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  846.  * .                                                                    *
  847.  *                                                                      *
  848.  ************************************************************************/
  849. typedef union ii_iprb9_u {
  850. shubreg_t ii_iprb9_regval;
  851. struct {
  852. shubreg_t i_c   :  8;
  853. shubreg_t i_na   : 14;
  854. shubreg_t i_rsvd_2   :  2;
  855. shubreg_t i_nb   : 14;
  856. shubreg_t i_rsvd_1   :  2;
  857. shubreg_t i_m   :  2;
  858. shubreg_t i_f   :  1;
  859. shubreg_t i_of_cnt   :  5;
  860. shubreg_t i_error   :  1;
  861. shubreg_t i_rd_to   :  1;
  862. shubreg_t i_spur_wr   :  1;
  863. shubreg_t i_spur_rd   :  1;
  864. shubreg_t i_rsvd   : 11;
  865. shubreg_t i_mult_err   :  1;
  866. } ii_iprb9_fld_s;
  867. } ii_iprb9_u_t;
  868. /************************************************************************
  869.  *                                                                      *
  870.  * Description:  There are 9 instances of this register, one per        *
  871.  * actual widget in this implementation of SHub and Crossbow.        *
  872.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  873.  * refers to Crossbow's internal space.                                 *
  874.  * This register contains the state elements per widget that are        *
  875.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  876.  * Router Network. See the PIO Flow Control chapter for a complete      *
  877.  * description of this register                                         *
  878.  * The SPUR_WR bit requires some explanation. When this register is     *
  879.  * written, the new value of the C field is captured in an internal     *
  880.  * register so the hardware can remember what the programmer wrote      *
  881.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  882.  * increments above this stored value, which indicates that there       *
  883.  * have been more responses received than requests sent. The SPUR_WR    *
  884.  * bit cannot be cleared until a value is written to the IPRBx          *
  885.  * register; the write will correct the C field and capture its new     *
  886.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  887.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  888.  *                                                                      *
  889.  *                                                                      *
  890.  ************************************************************************/
  891. typedef union ii_iprba_u {
  892. shubreg_t ii_iprba_regval;
  893. struct  {
  894. shubreg_t i_c                       :  8;
  895. shubreg_t i_na   : 14;
  896. shubreg_t       i_rsvd_2                  :      2;
  897. shubreg_t i_nb   : 14;
  898. shubreg_t i_rsvd_1   :  2;
  899. shubreg_t i_m   :  2;
  900. shubreg_t i_f   :  1;
  901. shubreg_t i_of_cnt   :  5;
  902. shubreg_t i_error   :  1;
  903. shubreg_t i_rd_to   :  1;
  904. shubreg_t i_spur_wr   :  1;
  905. shubreg_t i_spur_rd   :  1;
  906. shubreg_t i_rsvd   : 11;
  907. shubreg_t i_mult_err   :  1;
  908. } ii_iprba_fld_s;
  909. } ii_iprba_u_t;
  910. /************************************************************************
  911.  *                                                                      *
  912.  * Description:  There are 9 instances of this register, one per        *
  913.  * actual widget in this implementation of SHub and Crossbow.           *
  914.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  915.  * refers to Crossbow's internal space.                                 *
  916.  * This register contains the state elements per widget that are        *
  917.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  918.  * Router Network. See the PIO Flow Control chapter for a complete      *
  919.  * description of this register                                         *
  920.  * The SPUR_WR bit requires some explanation. When this register is     *
  921.  * written, the new value of the C field is captured in an internal     *
  922.  * register so the hardware can remember what the programmer wrote      *
  923.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  924.  * increments above this stored value, which indicates that there       *
  925.  * have been more responses received than requests sent. The SPUR_WR    *
  926.  * bit cannot be cleared until a value is written to the IPRBx          *
  927.  * register; the write will correct the C field and capture its new     *
  928.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  929.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  930.  * .                                                                    *
  931.  *                                                                      *
  932.  ************************************************************************/
  933. typedef union ii_iprbb_u {
  934. shubreg_t ii_iprbb_regval;
  935. struct {
  936. shubreg_t i_c   :  8;
  937. shubreg_t i_na   : 14;
  938. shubreg_t i_rsvd_2   :  2;
  939. shubreg_t i_nb   : 14;
  940. shubreg_t i_rsvd_1   :  2;
  941. shubreg_t i_m   :  2;
  942. shubreg_t i_f   :  1;
  943. shubreg_t i_of_cnt   :  5;
  944. shubreg_t i_error   :  1;
  945. shubreg_t i_rd_to   :  1;
  946. shubreg_t i_spur_wr   :  1;
  947. shubreg_t i_spur_rd   :  1;
  948. shubreg_t i_rsvd   : 11;
  949. shubreg_t i_mult_err   :  1;
  950. } ii_iprbb_fld_s;
  951. } ii_iprbb_u_t;
  952. /************************************************************************
  953.  *                                                                      *
  954.  * Description:  There are 9 instances of this register, one per        *
  955.  * actual widget in this implementation of SHub and Crossbow.           *
  956.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  957.  * refers to Crossbow's internal space.                                 *
  958.  * This register contains the state elements per widget that are        *
  959.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  960.  * Router Network. See the PIO Flow Control chapter for a complete      *
  961.  * description of this register                                         *
  962.  * The SPUR_WR bit requires some explanation. When this register is     *
  963.  * written, the new value of the C field is captured in an internal     *
  964.  * register so the hardware can remember what the programmer wrote      *
  965.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  966.  * increments above this stored value, which indicates that there       *
  967.  * have been more responses received than requests sent. The SPUR_WR    *
  968.  * bit cannot be cleared until a value is written to the IPRBx          *
  969.  * register; the write will correct the C field and capture its new     *
  970.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  971.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  972.  * .                                                                    *
  973.  *                                                                      *
  974.  ************************************************************************/
  975. typedef union ii_iprbc_u {
  976. shubreg_t ii_iprbc_regval;
  977. struct {
  978. shubreg_t i_c   :  8;
  979. shubreg_t i_na   : 14;
  980. shubreg_t i_rsvd_2   :  2;
  981. shubreg_t i_nb   : 14;
  982. shubreg_t i_rsvd_1   :  2;
  983. shubreg_t i_m   :  2;
  984. shubreg_t i_f   :  1;
  985. shubreg_t i_of_cnt   :  5;
  986. shubreg_t i_error   :  1;
  987. shubreg_t i_rd_to   :  1;
  988. shubreg_t i_spur_wr   :  1;
  989. shubreg_t i_spur_rd   :  1;
  990. shubreg_t i_rsvd   : 11;
  991. shubreg_t i_mult_err   :  1;
  992. } ii_iprbc_fld_s;
  993. } ii_iprbc_u_t;
  994. /************************************************************************
  995.  *                                                                      *
  996.  * Description:  There are 9 instances of this register, one per        *
  997.  * actual widget in this implementation of SHub and Crossbow.           *
  998.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  999.  * refers to Crossbow's internal space.                                 *
  1000.  * This register contains the state elements per widget that are        *
  1001.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  1002.  * Router Network. See the PIO Flow Control chapter for a complete      *
  1003.  * description of this register                                         *
  1004.  * The SPUR_WR bit requires some explanation. When this register is     *
  1005.  * written, the new value of the C field is captured in an internal     *
  1006.  * register so the hardware can remember what the programmer wrote      *
  1007.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  1008.  * increments above this stored value, which indicates that there       *
  1009.  * have been more responses received than requests sent. The SPUR_WR    *
  1010.  * bit cannot be cleared until a value is written to the IPRBx          *
  1011.  * register; the write will correct the C field and capture its new     *
  1012.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  1013.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  1014.  * .                                                                    *
  1015.  *                                                                      *
  1016.  ************************************************************************/
  1017. typedef union ii_iprbd_u {
  1018. shubreg_t ii_iprbd_regval;
  1019. struct {
  1020. shubreg_t i_c   :  8;
  1021. shubreg_t i_na   : 14;
  1022. shubreg_t i_rsvd_2   :  2;
  1023. shubreg_t i_nb   : 14;
  1024. shubreg_t i_rsvd_1   :  2;
  1025. shubreg_t i_m   :  2;
  1026. shubreg_t i_f   :  1;
  1027. shubreg_t i_of_cnt   :  5;
  1028. shubreg_t i_error   :  1;
  1029. shubreg_t i_rd_to   :  1;
  1030. shubreg_t i_spur_wr   :  1;
  1031. shubreg_t i_spur_rd   :  1;
  1032. shubreg_t i_rsvd   : 11;
  1033. shubreg_t i_mult_err   :  1;
  1034. } ii_iprbd_fld_s;
  1035. } ii_iprbd_u_t;
  1036. /************************************************************************
  1037.  *                                                                      *
  1038.  * Description:  There are 9 instances of this register, one per        *
  1039.  * actual widget in this implementation of SHub and Crossbow.           *
  1040.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  1041.  * refers to Crossbow's internal space.                                 *
  1042.  * This register contains the state elements per widget that are        *
  1043.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  1044.  * Router Network. See the PIO Flow Control chapter for a complete      *
  1045.  * description of this register                                         *
  1046.  * The SPUR_WR bit requires some explanation. When this register is     *
  1047.  * written, the new value of the C field is captured in an internal     *
  1048.  * register so the hardware can remember what the programmer wrote      *
  1049.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  1050.  * increments above this stored value, which indicates that there       *
  1051.  * have been more responses received than requests sent. The SPUR_WR    *
  1052.  * bit cannot be cleared until a value is written to the IPRBx          *
  1053.  * register; the write will correct the C field and capture its new     *
  1054.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  1055.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  1056.  * .                                                                    *
  1057.  *                                                                      *
  1058.  ************************************************************************/
  1059. typedef union ii_iprbe_u {
  1060. shubreg_t ii_iprbe_regval;
  1061. struct {
  1062. shubreg_t i_c   :  8;
  1063. shubreg_t i_na   : 14;
  1064. shubreg_t i_rsvd_2   :  2;
  1065. shubreg_t i_nb   : 14;
  1066. shubreg_t i_rsvd_1   :  2;
  1067. shubreg_t i_m   :  2;
  1068. shubreg_t i_f   :  1;
  1069. shubreg_t i_of_cnt   :  5;
  1070. shubreg_t i_error   :  1;
  1071. shubreg_t i_rd_to   :  1;
  1072. shubreg_t i_spur_wr   :  1;
  1073. shubreg_t i_spur_rd   :  1;
  1074. shubreg_t i_rsvd   : 11;
  1075. shubreg_t i_mult_err   :  1;
  1076. } ii_iprbe_fld_s;
  1077. } ii_iprbe_u_t;
  1078. /************************************************************************
  1079.  *                                                                      *
  1080.  * Description:  There are 9 instances of this register, one per        *
  1081.  * actual widget in this implementation of Shub and Crossbow.           *
  1082.  * Note: Crossbow only has ports for Widgets 8 through F, widget 0      *
  1083.  * refers to Crossbow's internal space.                                 *
  1084.  * This register contains the state elements per widget that are        *
  1085.  * necessary to manage the PIO flow control on Crosstalk and on the     *
  1086.  * Router Network. See the PIO Flow Control chapter for a complete      *
  1087.  * description of this register                                         *
  1088.  * The SPUR_WR bit requires some explanation. When this register is     *
  1089.  * written, the new value of the C field is captured in an internal     *
  1090.  * register so the hardware can remember what the programmer wrote      *
  1091.  * into the credit counter. The SPUR_WR bit sets whenever the C field   *
  1092.  * increments above this stored value, which indicates that there       *
  1093.  * have been more responses received than requests sent. The SPUR_WR    *
  1094.  * bit cannot be cleared until a value is written to the IPRBx          *
  1095.  * register; the write will correct the C field and capture its new     *
  1096.  * value in the internal register. Even if IECLR[E_PRB_x] is set, the   *
  1097.  * SPUR_WR bit will persist if IPRBx hasn't yet been written.           *
  1098.  * .                                                                    *
  1099.  *                                                                      *
  1100.  ************************************************************************/
  1101. typedef union ii_iprbf_u {
  1102.         shubreg_t       ii_iprbf_regval;
  1103.         struct  {
  1104.                 shubreg_t       i_c                       :      8;
  1105.                 shubreg_t       i_na                      :     14;
  1106.                 shubreg_t       i_rsvd_2                  :      2;
  1107.                 shubreg_t       i_nb                      :     14;
  1108.                 shubreg_t       i_rsvd_1                  :      2;
  1109.                 shubreg_t       i_m                       :      2;
  1110.                 shubreg_t       i_f                       :      1;
  1111.                 shubreg_t       i_of_cnt                  :      5;
  1112.                 shubreg_t       i_error                   :      1;
  1113.                 shubreg_t       i_rd_to                   :      1;
  1114.                 shubreg_t       i_spur_wr                 :      1;
  1115.                 shubreg_t       i_spur_rd                 :      1;
  1116.                 shubreg_t       i_rsvd                    :     11;
  1117.                 shubreg_t       i_mult_err                :      1;
  1118.         } ii_iprbe_fld_s;
  1119. } ii_iprbf_u_t;
  1120. /************************************************************************
  1121.  *                                                                      *
  1122.  *  This register specifies the timeout value to use for monitoring     *
  1123.  * Crosstalk credits which are used outbound to Crosstalk. An           *
  1124.  * internal counter called the Crosstalk Credit Timeout Counter         *
  1125.  * increments every 128 II clocks. The counter starts counting          *
  1126.  * anytime the credit count drops below a threshold, and resets to      *
  1127.  * zero (stops counting) anytime the credit count is at or above the    *
  1128.  * threshold. The threshold is 1 credit in direct connect mode and 2    *
  1129.  * in Crossbow connect mode. When the internal Crosstalk Credit         *
  1130.  * Timeout Counter reaches the value programmed in this register, a     *
  1131.  * Crosstalk Credit Timeout has occurred. The internal counter is not   *
  1132.  * readable from software, and stops counting at its maximum value,     *
  1133.  * so it cannot cause more than one interrupt.                          *
  1134.  *                                                                      *
  1135.  ************************************************************************/
  1136. typedef union ii_ixcc_u {
  1137. shubreg_t ii_ixcc_regval;
  1138. struct  {
  1139. shubreg_t i_time_out                : 26;
  1140. shubreg_t i_rsvd   : 38;
  1141. } ii_ixcc_fld_s;
  1142. } ii_ixcc_u_t;
  1143. /************************************************************************
  1144.  *                                                                      *
  1145.  * Description:  This register qualifies all the PIO and DMA            *
  1146.  * operations launched from widget 0 towards the SHub. In               *
  1147.  * addition, it also qualifies accesses by the BTE streams.             *
  1148.  * The bits in each field of this register are cleared by the SHub      *
  1149.  * upon detection of an error which requires widget 0 or the BTE        *
  1150.  * streams to be terminated. Whether or not widget x has access         *
  1151.  * rights to this SHub is determined by an AND of the device            *
  1152.  * enable bit in the appropriate field of this register and bit 0 in    *
  1153.  * the Wx_IAC field. The bits in this field are set by writing a 1 to   *
  1154.  * them. Incoming replies from Crosstalk are not subject to this        *
  1155.  * access control mechanism.                                            *
  1156.  *                                                                      *
  1157.  ************************************************************************/
  1158. typedef union ii_imem_u {
  1159. shubreg_t ii_imem_regval;
  1160. struct  {
  1161. shubreg_t i_w0_esd                  :  1;
  1162. shubreg_t i_rsvd_3   :  3;
  1163. shubreg_t i_b0_esd   :  1;
  1164. shubreg_t i_rsvd_2   :  3;
  1165. shubreg_t i_b1_esd   :  1;
  1166. shubreg_t i_rsvd_1   :  3;
  1167. shubreg_t i_clr_precise   :  1;
  1168. shubreg_t       i_rsvd                    :     51;
  1169. } ii_imem_fld_s;
  1170. } ii_imem_u_t;
  1171. /************************************************************************
  1172.  *                                                                      *
  1173.  * Description:  This register specifies the timeout value to use for   *
  1174.  * monitoring Crosstalk tail flits coming into the Shub in the          *
  1175.  * TAIL_TO field. An internal counter associated with this register     *
  1176.  * is incremented every 128 II internal clocks (7 bits). The counter    *
  1177.  * starts counting anytime a header micropacket is received and stops   *
  1178.  * counting (and resets to zero) any time a micropacket with a Tail     *
  1179.  * bit is received. Once the counter reaches the threshold value        *
  1180.  * programmed in this register, it generates an interrupt to the        *
  1181.  * processor that is programmed into the IIDSR. The counter saturates   *
  1182.  * (does not roll over) at its maximum value, so it cannot cause        *
  1183.  * another interrupt until after it is cleared.                         *
  1184.  * The register also contains the Read Response Timeout values. The     *
  1185.  * Prescalar is 23 bits, and counts II clocks. An internal counter      *
  1186.  * increments on every II clock and when it reaches the value in the    *
  1187.  * Prescalar field, all IPRTE registers with their valid bits set       *
  1188.  * have their Read Response timers bumped. Whenever any of them match   *
  1189.  * the value in the RRSP_TO field, a Read Response Timeout has          *
  1190.  * occurred, and error handling occurs as described in the Error        *
  1191.  * Handling section of this document.                                   *
  1192.  *                                                                      *
  1193.  ************************************************************************/
  1194. typedef union ii_ixtt_u {
  1195. shubreg_t ii_ixtt_regval;
  1196. struct  {
  1197. shubreg_t i_tail_to                 : 26;
  1198. shubreg_t i_rsvd_1   :  6;
  1199. shubreg_t i_rrsp_ps   : 23;
  1200. shubreg_t i_rrsp_to   :  5;
  1201. shubreg_t i_rsvd   :  4;
  1202. } ii_ixtt_fld_s;
  1203. } ii_ixtt_u_t;
  1204. /************************************************************************
  1205.  *                                                                      *
  1206.  *  Writing a 1 to the fields of this register clears the appropriate   *
  1207.  * error bits in other areas of SHub. Note that when the                *
  1208.  * E_PRB_x bits are used to clear error bits in PRB registers,          *
  1209.  * SPUR_RD and SPUR_WR may persist, because they require additional     *
  1210.  * action to clear them. See the IPRBx and IXSS Register                *
  1211.  * specifications.                                                      *
  1212.  *                                                                      *
  1213.  ************************************************************************/
  1214. typedef union ii_ieclr_u {
  1215. shubreg_t ii_ieclr_regval;
  1216. struct  {
  1217. shubreg_t i_e_prb_0                 :  1;
  1218. shubreg_t i_rsvd   :  7;
  1219. shubreg_t i_e_prb_8   :  1;
  1220. shubreg_t i_e_prb_9   :  1;
  1221. shubreg_t i_e_prb_a   :  1;
  1222. shubreg_t i_e_prb_b   :  1;
  1223. shubreg_t i_e_prb_c   :  1;
  1224. shubreg_t i_e_prb_d   :  1;
  1225. shubreg_t i_e_prb_e   :  1;
  1226. shubreg_t i_e_prb_f   :  1;
  1227. shubreg_t i_e_crazy   :  1;
  1228. shubreg_t i_e_bte_0   :  1;
  1229. shubreg_t i_e_bte_1   :  1;
  1230. shubreg_t i_reserved_1   : 10;
  1231. shubreg_t i_spur_rd_hdr   :  1;
  1232. shubreg_t i_cam_intr_to   :  1;
  1233. shubreg_t i_cam_overflow   :  1;
  1234. shubreg_t i_cam_read_miss   :  1;
  1235. shubreg_t i_ioq_rep_underflow   :  1;
  1236. shubreg_t i_ioq_req_underflow   :  1;
  1237. shubreg_t i_ioq_rep_overflow   :  1;
  1238. shubreg_t i_ioq_req_overflow   :  1;
  1239. shubreg_t i_iiq_rep_overflow   :  1;
  1240. shubreg_t i_iiq_req_overflow   :  1;
  1241. shubreg_t i_ii_xn_rep_cred_overflow :  1;
  1242. shubreg_t i_ii_xn_req_cred_overflow :  1;
  1243. shubreg_t i_ii_xn_invalid_cmd   :  1;
  1244. shubreg_t i_xn_ii_invalid_cmd   :  1;
  1245. shubreg_t i_reserved_2   : 21;
  1246. } ii_ieclr_fld_s;
  1247. } ii_ieclr_u_t;
  1248. /************************************************************************
  1249.  *                                                                      *
  1250.  *  This register controls both BTEs. SOFT_RESET is intended for        *
  1251.  * recovery after an error. COUNT controls the total number of CRBs     *
  1252.  * that both BTEs (combined) can use, which affects total BTE           *
  1253.  * bandwidth.                                                           *
  1254.  *                                                                      *
  1255.  ************************************************************************/
  1256. typedef union ii_ibcr_u {
  1257. shubreg_t ii_ibcr_regval;
  1258. struct  {
  1259. shubreg_t i_count                   :  4;
  1260. shubreg_t i_rsvd_1   :  4;
  1261. shubreg_t i_soft_reset   :  1;
  1262. shubreg_t i_rsvd   : 55;
  1263. } ii_ibcr_fld_s;
  1264. } ii_ibcr_u_t;
  1265. /************************************************************************
  1266.  *                                                                      *
  1267.  *  This register contains the header of a spurious read response       *
  1268.  * received from Crosstalk. A spurious read response is defined as a    *
  1269.  * read response received by II from a widget for which (1) the SIDN    *
  1270.  * has a value between 1 and 7, inclusive (II never sends requests to   *
  1271.  * these widgets (2) there is no valid IPRTE register which             *
  1272.  * corresponds to the TNUM, or (3) the widget indicated in SIDN is      *
  1273.  * not the same as the widget recorded in the IPRTE register            *
  1274.  * referenced by the TNUM. If this condition is true, and if the        *
  1275.  * IXSS[VALID] bit is clear, then the header of the spurious read       *
  1276.  * response is capture in IXSM and IXSS, and IXSS[VALID] is set. The    *
  1277.  * errant header is thereby captured, and no further spurious read      *
  1278.  * respones are captured until IXSS[VALID] is cleared by setting the    *
  1279.  * appropriate bit in IECLR.Everytime a spurious read response is       *
  1280.  * detected, the SPUR_RD bit of the PRB corresponding to the incoming   *
  1281.  * message's SIDN field is set. This always happens, regarless of       *
  1282.  * whether a header is captured. The programmer should check            *
  1283.  * IXSM[SIDN] to determine which widget sent the spurious response,     *
  1284.  * because there may be more than one SPUR_RD bit set in the PRB        *
  1285.  * registers. The widget indicated by IXSM[SIDN] was the first          *
  1286.  * spurious read response to be received since the last time            *
  1287.  * IXSS[VALID] was clear. The SPUR_RD bit of the corresponding PRB      *
  1288.  * will be set. Any SPUR_RD bits in any other PRB registers indicate    *
  1289.  * spurious messages from other widets which were detected after the    *
  1290.  * header was captured..                                                *
  1291.  *                                                                      *
  1292.  ************************************************************************/
  1293. typedef union ii_ixsm_u {
  1294. shubreg_t ii_ixsm_regval;
  1295. struct  {
  1296. shubreg_t i_byte_en                 : 32;
  1297. shubreg_t i_reserved   :  1;
  1298. shubreg_t i_tag   :  3;
  1299. shubreg_t i_alt_pactyp   :  4;
  1300. shubreg_t i_bo   :  1;
  1301. shubreg_t i_error   :  1;
  1302. shubreg_t i_vbpm   :  1;
  1303. shubreg_t i_gbr   :  1;
  1304. shubreg_t i_ds   :  2;
  1305. shubreg_t i_ct   :  1;
  1306. shubreg_t i_tnum   :  5;
  1307. shubreg_t i_pactyp   :  4;
  1308. shubreg_t i_sidn   :  4;
  1309. shubreg_t i_didn   :  4;
  1310. } ii_ixsm_fld_s;
  1311. } ii_ixsm_u_t;
  1312. /************************************************************************
  1313.  *                                                                      *
  1314.  *  This register contains the sideband bits of a spurious read         *
  1315.  * response received from Crosstalk.                                    *
  1316.  *                                                                      *
  1317.  ************************************************************************/
  1318. typedef union ii_ixss_u {
  1319. shubreg_t ii_ixss_regval;
  1320. struct  {
  1321. shubreg_t i_sideband                :  8;
  1322. shubreg_t i_rsvd   : 55;
  1323. shubreg_t i_valid   :  1;
  1324. } ii_ixss_fld_s;
  1325. } ii_ixss_u_t;
  1326. /************************************************************************
  1327.  *                                                                      *
  1328.  *  This register enables software to access the II LLP's test port.    *
  1329.  * Refer to the LLP 2.5 documentation for an explanation of the test    *
  1330.  * port. Software can write to this register to program the values      *
  1331.  * for the control fields (TestErrCapture, TestClear, TestFlit,         *
  1332.  * TestMask and TestSeed). Similarly, software can read from this       *
  1333.  * register to obtain the values of the test port's status outputs      *
  1334.  * (TestCBerr, TestValid and TestData).                                 *
  1335.  *                                                                      *
  1336.  ************************************************************************/
  1337. typedef union ii_ilct_u {
  1338. shubreg_t ii_ilct_regval;
  1339. struct  {
  1340. shubreg_t i_test_seed               : 20;
  1341. shubreg_t i_test_mask               :  8;
  1342. shubreg_t i_test_data               : 20;
  1343. shubreg_t i_test_valid              :  1;
  1344. shubreg_t i_test_cberr              :  1;
  1345. shubreg_t i_test_flit               :  3;
  1346. shubreg_t i_test_clear              :  1;
  1347. shubreg_t i_test_err_capture        :  1;
  1348. shubreg_t i_rsvd                    :  9;
  1349. } ii_ilct_fld_s;
  1350. } ii_ilct_u_t;
  1351. /************************************************************************
  1352.  *                                                                      *
  1353.  *  If the II detects an illegal incoming Duplonet packet (request or   *
  1354.  * reply) when VALID==0 in the IIEPH1 register, then it saves the       *
  1355.  * contents of the packet's header flit in the IIEPH1 and IIEPH2        *
  1356.  * registers, sets the VALID bit in IIEPH1, clears the OVERRUN bit,     *
  1357.  * and assigns a value to the ERR_TYPE field which indicates the        *
  1358.  * specific nature of the error. The II recognizes four different       *
  1359.  * types of errors: short request packets (ERR_TYPE==2), short reply    *
  1360.  * packets (ERR_TYPE==3), long request packets (ERR_TYPE==4) and long   *
  1361.  * reply packets (ERR_TYPE==5). The encodings for these types of        *
  1362.  * errors were chosen to be consistent with the same types of errors    *
  1363.  * indicated by the ERR_TYPE field in the LB_ERROR_HDR1 register (in    *
  1364.  * the LB unit). If the II detects an illegal incoming Duplonet         *
  1365.  * packet when VALID==1 in the IIEPH1 register, then it merely sets     *
  1366.  * the OVERRUN bit to indicate that a subsequent error has happened,    *
  1367.  * and does nothing further.                                            *
  1368.  *                                                                      *
  1369.  ************************************************************************/
  1370. typedef union ii_iieph1_u {
  1371. shubreg_t ii_iieph1_regval;
  1372. struct {
  1373. shubreg_t i_command   :  7;
  1374. shubreg_t i_rsvd_5   :  1;
  1375. shubreg_t i_suppl   : 14;
  1376. shubreg_t i_rsvd_4   :  1;
  1377. shubreg_t i_source   : 14;
  1378. shubreg_t i_rsvd_3   :  1;
  1379. shubreg_t i_err_type   :  4;
  1380. shubreg_t i_rsvd_2   :  4;
  1381. shubreg_t i_overrun   :  1;
  1382. shubreg_t i_rsvd_1   :  3;
  1383. shubreg_t i_valid   :  1;
  1384. shubreg_t i_rsvd   : 13;
  1385. } ii_iieph1_fld_s;
  1386. } ii_iieph1_u_t;
  1387. /************************************************************************
  1388.  *                                                                      *
  1389.  *  This register holds the Address field from the header flit of an    *
  1390.  * incoming erroneous Duplonet packet, along with the tail bit which    *
  1391.  * accompanied this header flit. This register is essentially an        *
  1392.  * extension of IIEPH1. Two registers were necessary because the 64     *
  1393.  * bits available in only a single register were insufficient to        *
  1394.  * capture the entire header flit of an erroneous packet.               *
  1395.  *                                                                      *
  1396.  ************************************************************************/
  1397. typedef union ii_iieph2_u {
  1398. shubreg_t ii_iieph2_regval;
  1399. struct  {
  1400. shubreg_t i_rsvd_0   :  3;
  1401. shubreg_t i_address                 : 47;
  1402. shubreg_t i_rsvd_1   : 10;
  1403. shubreg_t i_tail   :  1;
  1404. shubreg_t i_rsvd   :  3;
  1405. } ii_iieph2_fld_s;
  1406. } ii_iieph2_u_t;
  1407. /******************************/
  1408. /************************************************************************
  1409.  *                                                                      *
  1410.  *  This register's value is a bit vector that guards access from SXBs  *
  1411.  * to local registers within the II as well as to external Crosstalk    *
  1412.  * widgets *
  1413.  *                                                                      *
  1414.  ************************************************************************/
  1415. typedef union ii_islapr_u {
  1416. shubreg_t ii_islapr_regval;
  1417. struct  {
  1418. shubreg_t i_region   : 64;
  1419. } ii_islapr_fld_s;
  1420. } ii_islapr_u_t;
  1421. /************************************************************************
  1422.  *                                                                      *
  1423.  *  A write to this register of the 56-bit value "Pup+Bun" will cause *
  1424.  * the bit in the ISLAPR register corresponding to the region of the *
  1425.  * requestor to be set (access allowed). (
  1426.  *                                                                      *
  1427.  ************************************************************************/
  1428. typedef union ii_islapo_u {
  1429. shubreg_t ii_islapo_regval;
  1430. struct  {
  1431. shubreg_t i_io_sbx_ovrride   : 56;
  1432. shubreg_t i_rsvd   :  8;
  1433. } ii_islapo_fld_s;
  1434. } ii_islapo_u_t;
  1435. /************************************************************************
  1436.  *                                                                      *
  1437.  *  Determines how long the wrapper will wait aftr an interrupt is *
  1438.  * initially issued from the II before it times out the outstanding *
  1439.  * interrupt and drops it from the interrupt queue. * 
  1440.  *                                                                      *
  1441.  ************************************************************************/
  1442. typedef union ii_iwi_u {
  1443. shubreg_t ii_iwi_regval;
  1444. struct  {
  1445. shubreg_t i_prescale   : 24;
  1446. shubreg_t i_rsvd   :  8;
  1447. shubreg_t i_timeout   :  8;
  1448. shubreg_t i_rsvd1   :  8;
  1449. shubreg_t i_intrpt_retry_period   :  8;
  1450. shubreg_t i_rsvd2   :  8;
  1451. } ii_iwi_fld_s;
  1452. } ii_iwi_u_t;
  1453. /************************************************************************
  1454.  *                                                                      *
  1455.  *  Log errors which have occurred in the II wrapper. The errors are *
  1456.  * cleared by writing to the IECLR register. * 
  1457.  *                                                                      *
  1458.  ************************************************************************/
  1459. typedef union ii_iwel_u {
  1460. shubreg_t ii_iwel_regval;
  1461. struct  {
  1462. shubreg_t i_intr_timed_out   :  1;
  1463. shubreg_t i_rsvd   :  7;
  1464. shubreg_t i_cam_overflow   :  1;
  1465. shubreg_t i_cam_read_miss   :  1;
  1466. shubreg_t i_rsvd1   :  2;
  1467. shubreg_t i_ioq_rep_underflow   :  1;
  1468. shubreg_t i_ioq_req_underflow   :  1;
  1469. shubreg_t i_ioq_rep_overflow   :  1;
  1470. shubreg_t i_ioq_req_overflow   :  1;
  1471. shubreg_t i_iiq_rep_overflow   :  1;
  1472. shubreg_t i_iiq_req_overflow   :  1;
  1473. shubreg_t i_rsvd2   :  6;
  1474. shubreg_t i_ii_xn_rep_cred_over_under:  1;
  1475. shubreg_t i_ii_xn_req_cred_over_under:  1;
  1476. shubreg_t i_rsvd3   :  6;
  1477. shubreg_t i_ii_xn_invalid_cmd   :  1;
  1478. shubreg_t i_xn_ii_invalid_cmd   :  1;
  1479. shubreg_t i_rsvd4   : 30;
  1480. } ii_iwel_fld_s;
  1481. } ii_iwel_u_t;
  1482. /************************************************************************
  1483.  *                                                                      *
  1484.  *  Controls the II wrapper. * 
  1485.  *                                                                      *
  1486.  ************************************************************************/
  1487. typedef union ii_iwc_u {
  1488. shubreg_t ii_iwc_regval;
  1489. struct  {
  1490. shubreg_t i_dma_byte_swap   :  1;
  1491. shubreg_t i_rsvd   :  3;
  1492. shubreg_t i_cam_read_lines_reset   :  1;
  1493. shubreg_t i_rsvd1   :  3;
  1494. shubreg_t i_ii_xn_cred_over_under_log:  1;
  1495. shubreg_t i_rsvd2   : 19;
  1496. shubreg_t i_xn_rep_iq_depth   :  5;
  1497. shubreg_t i_rsvd3   :  3;
  1498. shubreg_t i_xn_req_iq_depth   :  5;
  1499. shubreg_t i_rsvd4   :  3;
  1500. shubreg_t i_iiq_depth   :  6;
  1501. shubreg_t i_rsvd5   : 12;
  1502. shubreg_t i_force_rep_cred   :  1;
  1503. shubreg_t i_force_req_cred   :  1;
  1504. } ii_iwc_fld_s;
  1505. } ii_iwc_u_t;
  1506. /************************************************************************
  1507.  *                                                                      *
  1508.  *  Status in the II wrapper. * 
  1509.  *                                                                      *
  1510.  ************************************************************************/
  1511. typedef union ii_iws_u {
  1512. shubreg_t ii_iws_regval;
  1513. struct  {
  1514. shubreg_t i_xn_rep_iq_credits   :  5;
  1515. shubreg_t i_rsvd   :  3;
  1516. shubreg_t i_xn_req_iq_credits   :  5;
  1517. shubreg_t i_rsvd1   : 51;
  1518. } ii_iws_fld_s;
  1519. } ii_iws_u_t;
  1520. /************************************************************************
  1521.  *                                                                      *
  1522.  *  Masks errors in the IWEL register. *
  1523.  *                                                                      *
  1524.  ************************************************************************/
  1525. typedef union ii_iweim_u {
  1526. shubreg_t ii_iweim_regval;
  1527. struct  {
  1528. shubreg_t i_intr_timed_out   :  1;
  1529. shubreg_t i_rsvd   :  7;
  1530. shubreg_t i_cam_overflow   :  1;
  1531. shubreg_t i_cam_read_miss   :  1;
  1532. shubreg_t i_rsvd1   :  2;
  1533. shubreg_t i_ioq_rep_underflow   :  1;
  1534. shubreg_t i_ioq_req_underflow   :  1;
  1535. shubreg_t i_ioq_rep_overflow   :  1;
  1536. shubreg_t i_ioq_req_overflow   :  1;
  1537. shubreg_t i_iiq_rep_overflow   :  1;
  1538. shubreg_t i_iiq_req_overflow   :  1;
  1539. shubreg_t i_rsvd2   :  6;
  1540. shubreg_t i_ii_xn_rep_cred_overflow :  1;
  1541. shubreg_t i_ii_xn_req_cred_overflow :  1;
  1542. shubreg_t i_rsvd3   :  6;
  1543. shubreg_t i_ii_xn_invalid_cmd   :  1;
  1544. shubreg_t i_xn_ii_invalid_cmd   :  1;
  1545. shubreg_t i_rsvd4   : 30;
  1546. } ii_iweim_fld_s;
  1547. } ii_iweim_u_t;
  1548. /************************************************************************
  1549.  *                                                                      *
  1550.  *  A write to this register causes a particular field in the           *
  1551.  * corresponding widget's PRB entry to be adjusted up or down by 1.     *
  1552.  * This counter should be used when recovering from error and reset     *
  1553.  * conditions. Note that software would be capable of causing           *
  1554.  * inadvertent overflow or underflow of these counters.                 *
  1555.  *                                                                      *
  1556.  ************************************************************************/
  1557. typedef union ii_ipca_u {
  1558. shubreg_t ii_ipca_regval;
  1559. struct  {
  1560. shubreg_t i_wid                     :  4;
  1561. shubreg_t i_adjust   :  1;
  1562. shubreg_t i_rsvd_1   :  3;
  1563. shubreg_t i_field   :  2;
  1564. shubreg_t i_rsvd   : 54;
  1565. } ii_ipca_fld_s;
  1566. } ii_ipca_u_t;
  1567. /************************************************************************
  1568.  *                                                                      *
  1569.  *  There are 8 instances of this register. This register contains      *
  1570.  * the information that the II has to remember once it has launched a   *
  1571.  * PIO Read operation. The contents are used to form the correct        *
  1572.  * Router Network packet and direct the Crosstalk reply to the          *
  1573.  * appropriate processor.                                               *
  1574.  *                                                                      *
  1575.  ************************************************************************/
  1576. typedef union ii_iprte0a_u {
  1577. shubreg_t ii_iprte0a_regval;
  1578. struct  {
  1579. shubreg_t i_rsvd_1                  : 54;
  1580. shubreg_t i_widget   :  4;
  1581. shubreg_t i_to_cnt   :  5;
  1582. shubreg_t       i_vld                     :      1;
  1583. } ii_iprte0a_fld_s;
  1584. } ii_iprte0a_u_t;
  1585. /************************************************************************
  1586.  *                                                                      *
  1587.  *  There are 8 instances of this register. This register contains      *
  1588.  * the information that the II has to remember once it has launched a   *
  1589.  * PIO Read operation. The contents are used to form the correct        *
  1590.  * Router Network packet and direct the Crosstalk reply to the          *
  1591.  * appropriate processor.                                               *
  1592.  *                                                                      *
  1593.  ************************************************************************/
  1594. typedef union ii_iprte1a_u {
  1595. shubreg_t ii_iprte1a_regval;
  1596. struct  {
  1597. shubreg_t i_rsvd_1                  : 54;
  1598. shubreg_t i_widget   :  4;
  1599. shubreg_t i_to_cnt   :  5;
  1600. shubreg_t       i_vld                     :      1;
  1601. } ii_iprte1a_fld_s;
  1602. } ii_iprte1a_u_t;
  1603. /************************************************************************
  1604.  *                                                                      *
  1605.  *  There are 8 instances of this register. This register contains      *
  1606.  * the information that the II has to remember once it has launched a   *
  1607.  * PIO Read operation. The contents are used to form the correct        *
  1608.  * Router Network packet and direct the Crosstalk reply to the          *
  1609.  * appropriate processor.                                               *
  1610.  *                                                                      *
  1611.  ************************************************************************/
  1612. typedef union ii_iprte2a_u {
  1613. shubreg_t ii_iprte2a_regval;
  1614. struct  {
  1615. shubreg_t i_rsvd_1                  : 54;
  1616. shubreg_t i_widget   :  4;
  1617. shubreg_t i_to_cnt   :  5;
  1618. shubreg_t       i_vld                     :      1;