⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txc_envoy_spi3_api.h

📁 TranSwitch Envoy CE2 & Envoy CE4 设备驱动及编程指南
💻 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 + -