📄 txc_envoy_spi3_api.h
字号:
/*--------------------------------------------------------------------------
******* ****
* ***** ** * * * * * * ***** **** * *
* * * * * ** * * * * * * * * * *
* * * * * * * * **** * * * * * ******
* ***** ****** * * * * * ** * * * * * *
* * * * * * ** * * ** ** * * * * * *
* * * * * * * **** * * * * **** * *
Proprietary and Confidential
This program is made available only to customers and prospective customers
of TranSwitch Corporation under license and may be used only with TranSwitch
semi-conductor products.
Copyright(c) 2004 TranSwitch Inc.
--------------------------------------------------------------------------
******* ** ** ** ** ******** ** **
******* *** ** ** ** ********** ** **
** ** * ** ** ** ** ** ** **
***** ** * ** ** ** ** ** * *
***** ** * ** ** ** ** ** **
** ** * ** ** ** ** ** **
******* ** *** **** ********** **
******* ** ** ** ******** **
--------------------------------------------------------------------------
TranSwitch Envoy-CE2/CE4
Device Driver
--------------------------------------------------------------------------
Workfile: txc_envoy_spi3_api.h
Description: This header file contains the defines and prototypes
for the SPI3 interface.
--------------------------------------------------------------------------
Revision History
--------------------------------------------------------------------------
Rev # Date Author Description
----- ------- ------------ ----------------------
0.5.0 6/03/04 F. Giannella Initial release (beta)
*--------------------------------------------------------------------------*/
#ifndef TXC_ENVOY_SPI3_API_H
#define TXC_ENVOY_SPI3_API_H
/****************************************************************************
** Defines **
****************************************************************************/
/* these defines are used by all SPI-3 functions */
#define ENVOY_SPI3_ALL_PORTS 0xFFFF
#define ENVOY_MAX_SPI3_BASE_ADDR 7
/****************************************************************************
** Data Structures **
****************************************************************************/
/* these enumerated data types are used by TXC_IfSPI3_InputIfaceSet and
TXC_IfSPI3_InputIfaceGet functions */
typedef enum
{
TXC_IfSPI3_PHY_LAYER_SINGLE_PHY = 0,
TXC_IfSPI3_PHY_LAYER_MULTI_PHY,
TXC_IfSPI3_LINK_LAYER_SINGLE_PHY,
TXC_IfSPI3_LINK_LAYER_MULTI_PHY,
TXC_IfSPI3_END_OF_MODE_ENUM,
TXC_IfSPI3_MODE_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_MODE_ENUM;
typedef enum
{
TXC_IfSPI3_BUS_WIDTH_NONE = 0,
TXC_IfSPI3_BUS_WIDTH_32BIT,
TXC_IfSPI3_BUS_WIDTH_16BIT,
TXC_IfSPI3_BUS_WIDTH_8BIT,
TXC_IfSPI3_END_OF_BUS_WIDTH_ENUM,
TXC_IfSPI3_BUS_WIDTH_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_BUS_WIDTH_ENUM;
typedef enum
{
TXC_IfSPI3_NO_PARITY = 0,
TXC_IfSPI3_ODD_PARITY,
TXC_IfSPI3_EVEN_PARITY,
TXC_IfSPI3_END_OF_PARITY_ENUM,
TXC_IfSPI3_PARITY_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_PARITY_ENUM;
typedef enum
{
TXC_IfSPI3_INPUT_AGGR_DISABLED = 0,
TXC_IfSPI3_INPUT_AGGR_PORT_POS_BYTE0,
TXC_IfSPI3_INPUT_AGGR_PORT_POS_BYTE1,
TXC_IfSPI3_INPUT_AGGR_PORT_POS_BYTE2,
TXC_IfSPI3_INPUT_AGGR_PORT_POS_BYTE3,
TXC_IfSPI3_END_OF_INPUT_AGGR_ENUM,
TXC_IfSPI3_INPUT_AGGR_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_INPUT_AGGR_ENUM;
typedef struct
{
TXC_IfSPI3_INPUT_AGGR_ENUM inputAggregationMode;
TXC_BOOL inputStpaViolationDiscardEnable;
} TXC_IfSPI3_EXT_ENVOYCE2CE4_INPUT_STRUCT;
typedef struct
{
TXC_BOOL dummy;
} TXC_IfSPI3_EXT_PLACEHOLDER_INPUT_STRUCT;
typedef struct
{
TXC_IfSPI3_MODE_ENUM inputMode;
TXC_IfSPI3_BUS_WIDTH_ENUM inputBusWidth;
TXC_IfSPI3_PARITY_ENUM inputParityCheckingMode;
union {
TXC_IfSPI3_EXT_ENVOYCE2CE4_INPUT_STRUCT envoyCe2Ce4InputAttr;
TXC_IfSPI3_EXT_PLACEHOLDER_INPUT_STRUCT placeholderInputAttr;
} inputDeviceExtension;
} TXC_IfSPI3_INPUT_STRUCT;
/* in progress below */
typedef enum
{
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_NONE,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_STPA,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_PTPA,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_STPA_PTPA,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_DTPA,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_STPA_DTPA,
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_OUTPUT_FLOW_CONTROL_ENUM ;
/* Note: TXC_IfSPI3_OUTPUT_FLOW_CONTROL_DTPA is used as a de facto END of enumeration */
typedef enum
{
TXC_IfSPI3_OUTPUT_PAUSE_0_CYCLE = 0,
TXC_IfSPI3_OUTPUT_PAUSE_2_CYCLE,
TXC_IfSPI3_END_OF_OUTPUT_PAUSE_TIMER_ENUM,
TXC_IfSPI3_OUTPUT_PAUSE_TIMER_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_OUTPUT_PAUSE_TIMER_ENUM;
typedef struct
{
TXC_BOOL outputAggregationEnable;
TXC_U8BIT outputBaseAddress;
} TXC_IfSPI3_EXT_ENVOYCE2CE4_OUTPUT_STRUCT;
typedef struct
{
TXC_BOOL dummy;
} TXC_IfSPI3_EXT_PLACEHOLDER_OUTPUT_STRUCT;
typedef struct
{
TXC_IfSPI3_MODE_ENUM outputMode;
TXC_IfSPI3_BUS_WIDTH_ENUM outputBusWidth;
TXC_IfSPI3_PARITY_ENUM outputParityGenerationMode;
TXC_IfSPI3_OUTPUT_FLOW_CONTROL_ENUM outputFlowControlMode;
TXC_IfSPI3_OUTPUT_PAUSE_TIMER_ENUM outputPauseTimerMode;
union {
TXC_IfSPI3_EXT_ENVOYCE2CE4_OUTPUT_STRUCT envoyCe2Ce4OutputAttr;
TXC_IfSPI3_EXT_PLACEHOLDER_OUTPUT_STRUCT placeholderOutputAttr;
} outputDeviceExtension;
} TXC_IfSPI3_OUTPUT_STRUCT;
typedef enum
{
TXC_IfSPI3_NO_DIR_ENABLED = 0,
TXC_IfSPI3_INPUT_ENABLED_ONLY,
TXC_IfSPI3_OUTPUT_ENABLED_ONLY,
TXC_IfSPI3_BOTH_DIR_ENABLED,
TXC_IfSPI3_END_OF_PORT_ENABLE_MODE_ENUM,
TXC_IfSPI3_PORT_ENABLE_MODE_ENUM_ERR = 0xFFFE
} TXC_IfSPI3_PORT_ENABLE_MODE_ENUM;
typedef struct
{
TXC_IfSPI3_PORT_ENABLE_MODE_ENUM spi3PortEnableMode;
} TXC_IfSPI3_PORT_CTRL_STRUCT;
typedef struct
{
TXC_U16BIT inputHiPhyWmarkStpa;
TXC_U16BIT inputLoPhyWmarkStpa;
TXC_U16BIT inputHiPhyWmarkPtpa;
TXC_U16BIT inputLoPhyWmarkPtpa;
} TXC_IfSPI3_INPUT_FLOW_CTRL_STRUCT;
typedef struct
{
TXC_U16BIT outputLinkStpaWatermark;
TXC_U16BIT outputPtpaChunkSize;
} TXC_IfSPI3_OUTPUT_FLOW_CTRL_STRUCT;
typedef struct
{
TXC_BOOL dummy;
} TXC_IfSPI3_EXT_PLACEHOLDER_GLBL_CTR_STRUCT;
typedef struct
{
TXC_U32BIT inputSpi3ParityCheckErrorCounter;
TXC_U32BIT inputSpi3SopErrorCounter;
TXC_U32BIT inputSpi3DiscardCounter;
} TXC_IfSPI3_EXT_ENVOYCE2CE4_GLBL_CTR_STRUCT;
typedef struct
{
union {
TXC_IfSPI3_EXT_ENVOYCE2CE4_GLBL_CTR_STRUCT envoyCe2Ce4GlobalCtrAttr;
TXC_IfSPI3_EXT_PLACEHOLDER_GLBL_CTR_STRUCT placeholderGlobalCtrAttr;
} globalCtrDeviceExtension;
} TXC_IfSPI3_EXT_GLBL_CTR_STRUCT;
typedef struct
{
TXC_BOOL dummy;
} TXC_IfSPI3_EXT_PLACEHOLDER_GLBL_STATUS_STRUCT;
typedef struct
{
TXC_BOOL inputSpi3OverflowDropStatus;
TXC_BOOL inputSpi3ParityCheckErrorStatus;
TXC_BOOL inputSpi3PacketErrorStatus;
TXC_BOOL inputSpi3SopErrorStatus;
TXC_BOOL reserved;
} TXC_IfSPI3_EXT_ENVOYCE2CE4_GLBL_STATUS_STRUCT;
typedef struct
{
union {
TXC_IfSPI3_EXT_ENVOYCE2CE4_GLBL_STATUS_STRUCT envoyCe2Ce4GlobalStatusAttr;
TXC_IfSPI3_EXT_PLACEHOLDER_GLBL_STATUS_STRUCT placeholderGlobalStatusAttr;
} globalStatusDeviceExtension;
} TXC_IfSPI3_EXT_INPUT_GLBL_STATUS_STRUCT;
typedef struct
{
TXC_BOOL dummy;
} TXC_IfSPI3_EXT_PLACEHOLDER_OUTPUT_PORT_STRUCT;
typedef struct
{
TXC_U32BIT outputSpi3AggrTag;
} TXC_IfSPI3_EXT_ENVOYCE2CE4_OUTPUT_PORT_STRUCT;
typedef struct
{
union {
TXC_IfSPI3_EXT_ENVOYCE2CE4_OUTPUT_PORT_STRUCT envoyCe2Ce4OutputPortAttr;
TXC_IfSPI3_EXT_PLACEHOLDER_OUTPUT_PORT_STRUCT placeholderOutputPortAttr;
} outputPortDeviceExtension;
} TXC_IfSPI3_EXT_OUTPUT_PORT_CFG_STRUCT;
typedef struct
{
TXC_U32BIT inputSpi3ErroredPktCounter[SPI3_NUM_PORTS];
TXC_U32BIT inputSpi3UnerroredPktCounter[SPI3_NUM_PORTS];
TXC_U32BIT inputSpi3DiscardPktCounter[SPI3_NUM_PORTS];
TXC_U32BIT outputSpi3PktCounter[SPI3_NUM_PORTS];
TXC_U32BIT outputSpi3DiscardPktCounter[SPI3_NUM_PORTS];
} TXC_IfSPI3_PORT_STATISTICS_STRUCT;
/****************************************************************************
** Function Prototypes **
****************************************************************************/
TXC_U16BIT TXC_IfSPI3_InputIfaceSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_INPUT_STRUCT *spi3InputIfaceDataPtr);
TXC_U16BIT TXC_IfSPI3_InputIfaceGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_INPUT_STRUCT *spi3InputIfaceDataPtr);
TXC_U16BIT TXC_IfSPI3_OutputIfaceSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_OUTPUT_STRUCT *spi3OutputIfaceDataPtr);
TXC_U16BIT TXC_IfSPI3_OutputIfaceGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_OUTPUT_STRUCT *spi3OutputIfaceDataPtr);
TXC_U16BIT TXC_IfSPI3_PortCtrlSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_PORT_CTRL_STRUCT *spi3PortCtrlPtr);
TXC_U16BIT TXC_IfSPI3_PortCtrlGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_PORT_CTRL_STRUCT *spi3PortCtrlPtr);
TXC_U16BIT TXC_IfSPI3_InputFlowCtrlCfgSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_INPUT_FLOW_CTRL_STRUCT *spi3InputFlowCtrlDataPtr);
TXC_U16BIT TXC_IfSPI3_InputFlowCtrlCfgGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_INPUT_FLOW_CTRL_STRUCT *spi3InputFlowCtrlDataPtr);
TXC_U16BIT TXC_IfSPI3_OutputFlowCtrlCfgSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_OUTPUT_FLOW_CTRL_STRUCT *spi3OutputFlowCtrlDataPtr);
TXC_U16BIT TXC_IfSPI3_OutputFlowCtrlCfgGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_OUTPUT_FLOW_CTRL_STRUCT *spi3OutputFlowCtrlDataPtr);
/* Prototypes for extensions to generic SPI-3 functions to accomodate the
Envoy-CE2/CE4 implementation */
TXC_U16BIT TXC_IfSPI3_Ext_InputGlobalCntRtrv (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_EXT_GLBL_CTR_STRUCT *spi3ExtGlobalCountersDataPtr);
TXC_U16BIT TXC_IfSPI3_Ext_InputGlobalStatusRtrv (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_IfSPI3_EXT_INPUT_GLBL_STATUS_STRUCT *spi3InputGlobalStatusDataPtr);
TXC_U16BIT TXC_IfSPI3_Ext_OutputPortCfgSet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_EXT_OUTPUT_PORT_CFG_STRUCT *spi3OutputPortCfgDataPtr);
TXC_U16BIT TXC_IfSPI3_Ext_OutputPortCfgGet (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_EXT_OUTPUT_PORT_CFG_STRUCT *spi3OutputPortCfgDataPtr);
TXC_U16BIT TXC_IfSPI3_PortStatisticsRtrv (TXC_U16BIT handle, TXC_U8BIT interfaceId,
TXC_U16BIT port, TXC_IfSPI3_PORT_STATISTICS_STRUCT *spi3PortStatisticsDataPtr);
/****************************************************************************
** Callback Function Typedef **
****************************************************************************/
/* none */
/****************************************************************************
** End of Module **
****************************************************************************/
#endif /* TXC_ENVOY_SPI3_API_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -