📄 xbow.h
字号:
#define XB_LINK_AUX_STATUS(x) (XB_LINK_REG_BASE(x) + 0x3c)/* link_control(x) */#define XB_CTRL_LINKALIVE_IE 0x80000000 /* link comes alive */ /* reserved: 0x40000000 */#define XB_CTRL_PERF_CTR_MODE_MSK 0x30000000 /* perf counter mode */#define XB_CTRL_IBUF_LEVEL_MSK 0x0e000000 /* input packet buffer level */#define XB_CTRL_8BIT_MODE 0x01000000 /* force link into 8 bit mode */#define XB_CTRL_BAD_LLP_PKT 0x00800000 /* force bad LLP packet */#define XB_CTRL_WIDGET_CR_MSK 0x007c0000 /* LLP widget credit mask */#define XB_CTRL_WIDGET_CR_SHFT 18 /* LLP widget credit shift */#define XB_CTRL_ILLEGAL_DST_IE 0x00020000 /* illegal destination */#define XB_CTRL_OALLOC_IBUF_IE 0x00010000 /* overallocated input buffer */ /* reserved: 0x0000fe00 */#define XB_CTRL_BNDWDTH_ALLOC_IE 0x00000100 /* bandwidth alloc */#define XB_CTRL_RCV_CNT_OFLOW_IE 0x00000080 /* rcv retry overflow */#define XB_CTRL_XMT_CNT_OFLOW_IE 0x00000040 /* xmt retry overflow */#define XB_CTRL_XMT_MAX_RTRY_IE 0x00000020 /* max transmit retry */#define XB_CTRL_RCV_IE 0x00000010 /* receive */#define XB_CTRL_XMT_RTRY_IE 0x00000008 /* transmit retry */ /* reserved: 0x00000004 */#define XB_CTRL_MAXREQ_TOUT_IE 0x00000002 /* maximum request timeout */#define XB_CTRL_SRC_TOUT_IE 0x00000001 /* source timeout *//* link_status(x) */#define XB_STAT_LINKALIVE XB_CTRL_LINKALIVE_IE /* reserved: 0x7ff80000 */#define XB_STAT_MULTI_ERR 0x00040000 /* multi error */#define XB_STAT_ILLEGAL_DST_ERR XB_CTRL_ILLEGAL_DST_IE#define XB_STAT_OALLOC_IBUF_ERR XB_CTRL_OALLOC_IBUF_IE#define XB_STAT_BNDWDTH_ALLOC_ID_MSK 0x0000ff00 /* port bitmask */#define XB_STAT_RCV_CNT_OFLOW_ERR XB_CTRL_RCV_CNT_OFLOW_IE#define XB_STAT_XMT_CNT_OFLOW_ERR XB_CTRL_XMT_CNT_OFLOW_IE#define XB_STAT_XMT_MAX_RTRY_ERR XB_CTRL_XMT_MAX_RTRY_IE#define XB_STAT_RCV_ERR XB_CTRL_RCV_IE#define XB_STAT_XMT_RTRY_ERR XB_CTRL_XMT_RTRY_IE /* reserved: 0x00000004 */#define XB_STAT_MAXREQ_TOUT_ERR XB_CTRL_MAXREQ_TOUT_IE#define XB_STAT_SRC_TOUT_ERR XB_CTRL_SRC_TOUT_IE/* link_aux_status(x) */#define XB_AUX_STAT_RCV_CNT 0xff000000#define XB_AUX_STAT_XMT_CNT 0x00ff0000#define XB_AUX_STAT_TOUT_DST 0x0000ff00#define XB_AUX_LINKFAIL_RST_BAD 0x00000040#define XB_AUX_STAT_PRESENT 0x00000020#define XB_AUX_STAT_PORT_WIDTH 0x00000010 /* reserved: 0x0000000f *//* * link_arb_upper/link_arb_lower(x), (reg) should be the link_arb_upper * register if (x) is 0x8..0xb, link_arb_lower if (x) is 0xc..0xf */#define XB_ARB_GBR_MSK 0x1f#define XB_ARB_RR_MSK 0x7#define XB_ARB_GBR_SHFT(x) (((x) & 0x3) * 8)#define XB_ARB_RR_SHFT(x) (((x) & 0x3) * 8 + 5)#define XB_ARB_GBR_CNT(reg,x) ((reg) >> XB_ARB_GBR_SHFT(x) & XB_ARB_GBR_MSK)#define XB_ARB_RR_CNT(reg,x) ((reg) >> XB_ARB_RR_SHFT(x) & XB_ARB_RR_MSK)/* XBOW_WID_STAT */#define XB_WID_STAT_LINK_INTR_SHFT (24)#define XB_WID_STAT_LINK_INTR_MASK (0xFF << XB_WID_STAT_LINK_INTR_SHFT)#define XB_WID_STAT_LINK_INTR(x) (0x1 << (((x)&7) + XB_WID_STAT_LINK_INTR_SHFT))#define XB_WID_STAT_WIDGET0_INTR 0x00800000#define XB_WID_STAT_SRCID_MASK 0x000003c0 /* Xbridge only */#define XB_WID_STAT_REG_ACC_ERR 0x00000020#define XB_WID_STAT_RECV_TOUT 0x00000010 /* Xbridge only */#define XB_WID_STAT_ARB_TOUT 0x00000008 /* Xbridge only */#define XB_WID_STAT_XTALK_ERR 0x00000004#define XB_WID_STAT_DST_TOUT 0x00000002 /* Xbridge only */#define XB_WID_STAT_MULTI_ERR 0x00000001#define XB_WID_STAT_SRCID_SHFT 6/* XBOW_WID_CONTROL */#define XB_WID_CTRL_REG_ACC_IE XB_WID_STAT_REG_ACC_ERR#define XB_WID_CTRL_RECV_TOUT XB_WID_STAT_RECV_TOUT#define XB_WID_CTRL_ARB_TOUT XB_WID_STAT_ARB_TOUT#define XB_WID_CTRL_XTALK_IE XB_WID_STAT_XTALK_ERR/* XBOW_WID_INT_UPPER *//* defined in xwidget.h for WIDGET_INTDEST_UPPER_ADDR *//* XBOW WIDGET part number, in the ID register */#define XBOW_WIDGET_PART_NUM 0x0 /* crossbow */#define XXBOW_WIDGET_PART_NUM 0xd000 /* Xbridge */#define XBOW_WIDGET_MFGR_NUM 0x0#define XXBOW_WIDGET_MFGR_NUM 0x0#define PXBOW_WIDGET_PART_NUM 0xd100 /* PIC */#define XBOW_REV_1_0 0x1 /* xbow rev 1.0 is "1" */#define XBOW_REV_1_1 0x2 /* xbow rev 1.1 is "2" */#define XBOW_REV_1_2 0x3 /* xbow rev 1.2 is "3" */#define XBOW_REV_1_3 0x4 /* xbow rev 1.3 is "4" */#define XBOW_REV_2_0 0x5 /* xbow rev 2.0 is "5" */#define XXBOW_PART_REV_1_0 (XXBOW_WIDGET_PART_NUM << 4 | 0x1 )#define XXBOW_PART_REV_2_0 (XXBOW_WIDGET_PART_NUM << 4 | 0x2 )/* XBOW_WID_ARB_RELOAD */#define XBOW_WID_ARB_RELOAD_INT 0x3f /* GBR reload interval */#define IS_XBRIDGE_XBOW(wid) \ (XWIDGET_PART_NUM(wid) == XXBOW_WIDGET_PART_NUM && \ XWIDGET_MFG_NUM(wid) == XXBOW_WIDGET_MFGR_NUM)#define IS_PIC_XBOW(wid) \ (XWIDGET_PART_NUM(wid) == PXBOW_WIDGET_PART_NUM && \ XWIDGET_MFG_NUM(wid) == XXBOW_WIDGET_MFGR_NUM)#define XBOW_WAR_ENABLED(pv, widid) ((1 << XWIDGET_REV_NUM(widid)) & pv)#define PV854827 (~0) /* PIC: fake widget 0xf presence bit. permanent */#define PV863579 (1 << 1) /* PIC: PIO to PIC register */#ifndef __ASSEMBLY__/* * XBOW Widget 0 Register formats. * Format for many of these registers are similar to the standard * widget register format described as part of xtalk specification * Standard widget register field format description is available in * xwidget.h * Following structures define the format for xbow widget 0 registers *//* * Xbow Widget 0 Command error word */#ifdef LITTLE_ENDIANtypedef union xbw0_cmdword_u { xbowreg_t cmdword; struct { uint32_t rsvd:8, /* Reserved */ barr:1, /* Barrier operation */ error:1, /* Error Occured */ vbpm:1, /* Virtual Backplane message */ gbr:1, /* GBR enable ? */ ds:2, /* Data size */ ct:1, /* Is it a coherent transaction */ tnum:5, /* Transaction Number */ pactyp:4, /* Packet type: */ srcid:4, /* Source ID number */ destid:4; /* Desination ID number */ } xbw0_cmdfield;} xbw0_cmdword_t;#elsetypedef union xbw0_cmdword_u { xbowreg_t cmdword; struct { uint32_t destid:4, /* Desination ID number */ srcid:4, /* Source ID number */ pactyp:4, /* Packet type: */ tnum:5, /* Transaction Number */ ct:1, /* Is it a coherent transaction */ ds:2, /* Data size */ gbr:1, /* GBR enable ? */ vbpm:1, /* Virtual Backplane message */ error:1, /* Error Occured */ barr:1, /* Barrier operation */ rsvd:8; /* Reserved */ } xbw0_cmdfield;} xbw0_cmdword_t;#endif#define xbcmd_destid xbw0_cmdfield.destid#define xbcmd_srcid xbw0_cmdfield.srcid#define xbcmd_pactyp xbw0_cmdfield.pactyp#define xbcmd_tnum xbw0_cmdfield.tnum#define xbcmd_ct xbw0_cmdfield.ct#define xbcmd_ds xbw0_cmdfield.ds#define xbcmd_gbr xbw0_cmdfield.gbr#define xbcmd_vbpm xbw0_cmdfield.vbpm#define xbcmd_error xbw0_cmdfield.error#define xbcmd_barr xbw0_cmdfield.barr/* * Values for field PACTYP in xbow error command word */#define XBCMDTYP_READREQ 0 /* Read Request packet */#define XBCMDTYP_READRESP 1 /* Read Response packet */#define XBCMDTYP_WRREQ_RESP 2 /* Write Request with response */#define XBCMDTYP_WRRESP 3 /* Write Response */#define XBCMDTYP_WRREQ_NORESP 4 /* Write request with No Response */#define XBCMDTYP_FETCHOP 6 /* Fetch & Op packet */#define XBCMDTYP_STOREOP 8 /* Store & Op packet */#define XBCMDTYP_SPLPKT_REQ 0xE /* Special packet request */#define XBCMDTYP_SPLPKT_RESP 0xF /* Special packet response *//* * Values for field ds (datasize) in xbow error command word */#define XBCMDSZ_DOUBLEWORD 0#define XBCMDSZ_QUARTRCACHE 1#define XBCMDSZ_FULLCACHE 2/* * Xbow widget 0 Status register format. */#ifdef LITTLE_ENDIANtypedef union xbw0_status_u { xbowreg_t statusword; struct { uint32_t mult_err:1, /* Multiple error occurred */ connect_tout:1, /* Connection timeout */ xtalk_err:1, /* Xtalk pkt with error bit */ /* End of Xbridge only */ w0_arb_tout, /* arbiter timeout err */ w0_recv_tout, /* receive timeout err */ /* Xbridge only */ regacc_err:1, /* Reg Access error */ src_id:4, /* source id. Xbridge only */ resvd1:13, wid0intr:1; /* Widget 0 err intr */ } xbw0_stfield;} xbw0_status_t;#elsetypedef union xbw0_status_u { xbowreg_t statusword; struct { uint32_t linkXintr:8, /* link(x) error intr */ wid0intr:1, /* Widget 0 err intr */ resvd1:13, src_id:4, /* source id. Xbridge only */ regacc_err:1, /* Reg Access error */ /* Xbridge only */ w0_recv_tout, /* receive timeout err */ w0_arb_tout, /* arbiter timeout err */ /* End of Xbridge only */ xtalk_err:1, /* Xtalk pkt with error bit */ connect_tout:1, /* Connection timeout */ mult_err:1; /* Multiple error occurred */ } xbw0_stfield;} xbw0_status_t;#endif#define xbst_linkXintr xbw0_stfield.linkXintr#define xbst_w0intr xbw0_stfield.wid0intr#define xbst_regacc_err xbw0_stfield.regacc_err#define xbst_xtalk_err xbw0_stfield.xtalk_err#define xbst_connect_tout xbw0_stfield.connect_tout#define xbst_mult_err xbw0_stfield.mult_err#define xbst_src_id xbw0_stfield.src_id /* Xbridge only */#define xbst_w0_recv_tout xbw0_stfield.w0_recv_tout /* Xbridge only */#define xbst_w0_arb_tout xbw0_stfield.w0_arb_tout /* Xbridge only *//* * Xbow widget 0 Control register format */#ifdef LITTLE_ENDIANtypedef union xbw0_ctrl_u { xbowreg_t ctrlword; struct { uint32_t resvd3:1, conntout_intr:1, xtalkerr_intr:1, w0_arg_tout_intr:1, /* Xbridge only */ w0_recv_tout_intr:1, /* Xbridge only */ accerr_intr:1, enable_w0_tout_cntr:1, /* Xbridge only */ enable_watchdog:1, /* Xbridge only */ resvd1:24; } xbw0_ctrlfield;} xbw0_ctrl_t;#elsetypedef union xbw0_ctrl_u { xbowreg_t ctrlword; struct { uint32_t resvd1:24, enable_watchdog:1, /* Xbridge only */ enable_w0_tout_cntr:1, /* Xbridge only */ accerr_intr:1, w0_recv_tout_intr:1, /* Xbridge only */ w0_arg_tout_intr:1, /* Xbridge only */ xtalkerr_intr:1, conntout_intr:1, resvd3:1; } xbw0_ctrlfield;} xbw0_ctrl_t;#endif#ifdef LITTLE_ENDIANtypedef union xbow_linkctrl_u { xbowreg_t xbl_ctrlword; struct { uint32_t srcto_intr:1, maxto_intr:1, rsvd3:1, trx_retry_intr:1,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -