xbow.h

来自「优龙2410linux2.6.8内核源代码」· C头文件 代码 · 共 676 行 · 第 1/2 页

H
676
字号
#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)#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 */typedef 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;#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. */typedef 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;#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 */typedef 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;typedef union xbow_linkctrl_u {    xbowreg_t               xbl_ctrlword;    struct {	uint32_t 		srcto_intr:1,                                maxto_intr:1,                                 rsvd3:1,                                trx_retry_intr:1,                                 rcv_err_intr:1,                                 trx_max_retry_intr:1,                                trxov_intr:1,                                 rcvov_intr:1,                                bwalloc_intr:1,                                 rsvd2:7,                                 obuf_intr:1,                                idest_intr:1,                                 llp_credit:5,                                 force_badllp:1,                                send_bm8:1,                                 inbuf_level:3,                                 perf_mode:2,                                rsvd1:1,        		                alive_intr:1;    } xb_linkcontrol;} xbow_linkctrl_t;#define	xbctl_accerr_intr	(xbw0_ctrlfield.accerr_intr)#define	xbctl_xtalkerr_intr	(xbw0_ctrlfield.xtalkerr_intr)#define	xbctl_cnntout_intr	(xbw0_ctrlfield.conntout_intr)#define	XBW0_CTRL_ACCERR_INTR	(1 << 5)#define	XBW0_CTRL_XTERR_INTR	(1 << 2)#define	XBW0_CTRL_CONNTOUT_INTR	(1 << 1)/* * Xbow Link specific Registers structure definitions. */typedef union xbow_linkX_status_u {    xbowreg_t               linkstatus;    struct {	uint32_t               pkt_toutsrc:1,                                pkt_toutconn:1, /* max_req_tout in Xbridge */                                pkt_toutdest:1, /* reserved in Xbridge */                                llp_xmitretry:1,                                llp_rcverror:1,                                llp_maxtxretry:1,                                llp_txovflow:1,                                llp_rxovflow:1,                                bw_errport:8,   /* BW allocation error port   */                                ioe:1,          /* Input overallocation error */                                illdest:1,                                merror:1,                                resvd1:12,				alive:1;    } xb_linkstatus;} xbwX_stat_t;#define	link_alive		xb_linkstatus.alive#define	link_multierror		xb_linkstatus.merror#define	link_illegal_dest	xb_linkstatus.illdest#define	link_ioe		xb_linkstatus.ioe#define link_max_req_tout	xb_linkstatus.pkt_toutconn  /* Xbridge */#define link_pkt_toutconn	xb_linkstatus.pkt_toutconn  /* Xbow */#define link_pkt_toutdest	xb_linkstatus.pkt_toutdest#define	link_pkt_toutsrc	xb_linkstatus.pkt_toutsrctypedef union xbow_aux_linkX_status_u {    xbowreg_t               aux_linkstatus;    struct {	uint32_t 		rsvd2:4,                                bit_mode_8:1,                                wid_present:1,                                fail_mode:1,                                rsvd1:1,                                to_src_loc:8,                                tx_retry_cnt:8,				rx_err_cnt:8;    } xb_aux_linkstatus;} xbow_aux_link_status_t;typedef union xbow_perf_count_u {    xbowreg_t               xb_counter_val;    struct {        uint32_t 		count:20,                                link_select:3,				rsvd:9;    } xb_perf;} xbow_perfcount_t;#define XBOW_COUNTER_MASK	0xFFFFFextern int              xbow_widget_present(xbow_t * xbow, int port);extern xwidget_intr_preset_f xbow_intr_preset;extern xswitch_reset_link_f xbow_reset_link;void                    xbow_mlreset(xbow_t *);/* ======================================================================== */#ifdef	MACROFIELD_LINE/* * This table forms a relation between the byte offset macros normally * used for ASM coding and the calculated byte offsets of the fields * in the C structure. * * See xbow_check.c xbow_html.c for further details. */#ifndef MACROFIELD_LINE_BITFIELD#define MACROFIELD_LINE_BITFIELD(m)	/* ignored */#endifstruct macrofield_s     xbow_macrofield[] ={    MACROFIELD_LINE(XBOW_WID_ID, xb_wid_id)    MACROFIELD_LINE(XBOW_WID_STAT, xb_wid_stat)    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xF))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xE))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xD))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xC))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xB))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0xA))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0x9))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_LINK_INTR(0x8))    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_WIDGET0_INTR)    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_REG_ACC_ERR)    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_XTALK_ERR)    MACROFIELD_LINE_BITFIELD(XB_WID_STAT_MULTI_ERR)    MACROFIELD_LINE(XBOW_WID_ERR_UPPER, xb_wid_err_upper)    MACROFIELD_LINE(XBOW_WID_ERR_LOWER, xb_wid_err_lower)    MACROFIELD_LINE(XBOW_WID_CONTROL, xb_wid_control)    MACROFIELD_LINE_BITFIELD(XB_WID_CTRL_REG_ACC_IE)    MACROFIELD_LINE_BITFIELD(XB_WID_CTRL_XTALK_IE)    MACROFIELD_LINE(XBOW_WID_REQ_TO, xb_wid_req_timeout)    MACROFIELD_LINE(XBOW_WID_INT_UPPER, xb_wid_int_upper)    MACROFIELD_LINE(XBOW_WID_INT_LOWER, xb_wid_int_lower)    MACROFIELD_LINE(XBOW_WID_ERR_CMDWORD, xb_wid_err_cmdword)    MACROFIELD_LINE(XBOW_WID_LLP, xb_wid_llp)    MACROFIELD_LINE(XBOW_WID_STAT_CLR, xb_wid_stat_clr)    MACROFIELD_LINE(XBOW_WID_ARB_RELOAD, xb_wid_arb_reload)    MACROFIELD_LINE(XBOW_WID_PERF_CTR_A, xb_perf_ctr_a)    MACROFIELD_LINE(XBOW_WID_PERF_CTR_B, xb_perf_ctr_b)    MACROFIELD_LINE(XBOW_WID_NIC, xb_nic)    MACROFIELD_LINE(XB_LINK_REG_BASE(8), xb_link(8))    MACROFIELD_LINE(XB_LINK_IBUF_FLUSH(8), xb_link(8).link_ibf)    MACROFIELD_LINE(XB_LINK_CTRL(8), xb_link(8).link_control)    MACROFIELD_LINE_BITFIELD(XB_CTRL_LINKALIVE_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_PERF_CTR_MODE_MSK)    MACROFIELD_LINE_BITFIELD(XB_CTRL_IBUF_LEVEL_MSK)    MACROFIELD_LINE_BITFIELD(XB_CTRL_8BIT_MODE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_BAD_LLP_PKT)    MACROFIELD_LINE_BITFIELD(XB_CTRL_WIDGET_CR_MSK)    MACROFIELD_LINE_BITFIELD(XB_CTRL_ILLEGAL_DST_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_OALLOC_IBUF_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_BNDWDTH_ALLOC_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_RCV_CNT_OFLOW_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_CNT_OFLOW_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_MAX_RTRY_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_RCV_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_XMT_RTRY_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_MAXREQ_TOUT_IE)    MACROFIELD_LINE_BITFIELD(XB_CTRL_SRC_TOUT_IE)    MACROFIELD_LINE(XB_LINK_STATUS(8), xb_link(8).link_status)    MACROFIELD_LINE_BITFIELD(XB_STAT_LINKALIVE)    MACROFIELD_LINE_BITFIELD(XB_STAT_MULTI_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_ILLEGAL_DST_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_OALLOC_IBUF_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_BNDWDTH_ALLOC_ID_MSK)    MACROFIELD_LINE_BITFIELD(XB_STAT_RCV_CNT_OFLOW_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_CNT_OFLOW_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_MAX_RTRY_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_RCV_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_XMT_RTRY_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_MAXREQ_TOUT_ERR)    MACROFIELD_LINE_BITFIELD(XB_STAT_SRC_TOUT_ERR)    MACROFIELD_LINE(XB_LINK_ARB_UPPER(8), xb_link(8).link_arb_upper)    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xb))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xb))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xa))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xa))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0x9))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0x9))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0x8))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0x8))    MACROFIELD_LINE(XB_LINK_ARB_LOWER(8), xb_link(8).link_arb_lower)    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xf))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xf))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xe))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xe))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xd))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xd))    MACROFIELD_LINE_BITFIELD(XB_ARB_RR_MSK << XB_ARB_RR_SHFT(0xc))    MACROFIELD_LINE_BITFIELD(XB_ARB_GBR_MSK << XB_ARB_GBR_SHFT(0xc))    MACROFIELD_LINE(XB_LINK_STATUS_CLR(8), xb_link(8).link_status_clr)    MACROFIELD_LINE(XB_LINK_RESET(8), xb_link(8).link_reset)    MACROFIELD_LINE(XB_LINK_AUX_STATUS(8), xb_link(8).link_aux_status)    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_RCV_CNT)    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_XMT_CNT)    MACROFIELD_LINE_BITFIELD(XB_AUX_LINKFAIL_RST_BAD)    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_PRESENT)    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_PORT_WIDTH)    MACROFIELD_LINE_BITFIELD(XB_AUX_STAT_TOUT_DST)    MACROFIELD_LINE(XB_LINK_REG_BASE(0x8), xb_link(0x8))    MACROFIELD_LINE(XB_LINK_REG_BASE(0x9), xb_link(0x9))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xA), xb_link(0xA))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xB), xb_link(0xB))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xC), xb_link(0xC))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xD), xb_link(0xD))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xE), xb_link(0xE))    MACROFIELD_LINE(XB_LINK_REG_BASE(0xF), xb_link(0xF))};				/* xbow_macrofield[] */#endif				/* MACROFIELD_LINE */#endif				/* __ASSEMBLY__ */#endif                          /* _ASM_IA64_SN_XTALK_XBOW_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?