960 lines
30 KiB
C
960 lines
30 KiB
C
/*
|
|
* Copyright (C) 2013 Realtek Semiconductor Corp.
|
|
* All Rights Reserved.
|
|
*
|
|
* Unless you and Realtek execute a separate written software license
|
|
* agreement governing use of this software, this software is licensed
|
|
* to you under the terms of the GNU General Public License version 2,
|
|
* available at https://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
|
|
*
|
|
* Purpose : RTL8367/RTL8367C switch high-level API
|
|
*
|
|
* Feature : The file includes port module high-layer API definition
|
|
*
|
|
*/
|
|
|
|
#ifndef __RTK_API_PORT_H__
|
|
#define __RTK_API_PORT_H__
|
|
|
|
/*
|
|
* Data Type Declaration
|
|
*/
|
|
|
|
#define PHY_CONTROL_REG 0
|
|
#define PHY_STATUS_REG 1
|
|
#define PHY_AN_ADVERTISEMENT_REG 4
|
|
#define PHY_AN_LINKPARTNER_REG 5
|
|
#define PHY_1000_BASET_CONTROL_REG 9
|
|
#define PHY_1000_BASET_STATUS_REG 10
|
|
#define PHY_RESOLVED_REG 26
|
|
|
|
#define RTK_EFID_MAX 0x7
|
|
|
|
#define RTK_FIBER_FORCE_1000M 3
|
|
#define RTK_FIBER_FORCE_100M 5
|
|
#define RTK_FIBER_FORCE_100M1000M 7
|
|
|
|
#define RTK_INDRECT_ACCESS_CRTL 0x1f00
|
|
#define RTK_INDRECT_ACCESS_STATUS 0x1f01
|
|
#define RTK_INDRECT_ACCESS_ADDRESS 0x1f02
|
|
#define RTK_INDRECT_ACCESS_WRITE_DATA 0x1f03
|
|
#define RTK_INDRECT_ACCESS_READ_DATA 0x1f04
|
|
#define RTK_INDRECT_ACCESS_DELAY 0x1f80
|
|
#define RTK_INDRECT_ACCESS_BURST 0x1f81
|
|
#define RTK_RW_MASK 0x2
|
|
#define RTK_CMD_MASK 0x1
|
|
#define RTK_PHY_BUSY_OFFSET 2
|
|
|
|
|
|
typedef enum rtk_mode_ext_e
|
|
{
|
|
MODE_EXT_DISABLE = 0,
|
|
MODE_EXT_RGMII,
|
|
MODE_EXT_MII_MAC,
|
|
MODE_EXT_MII_PHY,
|
|
MODE_EXT_TMII_MAC,
|
|
MODE_EXT_TMII_PHY,
|
|
MODE_EXT_GMII,
|
|
MODE_EXT_RMII_MAC,
|
|
MODE_EXT_RMII_PHY,
|
|
MODE_EXT_SGMII,
|
|
MODE_EXT_HSGMII,
|
|
MODE_EXT_1000X_100FX,
|
|
MODE_EXT_1000X,
|
|
MODE_EXT_100FX,
|
|
MODE_EXT_RGMII_2,
|
|
MODE_EXT_MII_MAC_2,
|
|
MODE_EXT_MII_PHY_2,
|
|
MODE_EXT_TMII_MAC_2,
|
|
MODE_EXT_TMII_PHY_2,
|
|
MODE_EXT_RMII_MAC_2,
|
|
MODE_EXT_RMII_PHY_2,
|
|
MODE_EXT_END
|
|
} rtk_mode_ext_t;
|
|
|
|
typedef enum rtk_port_duplex_e
|
|
{
|
|
PORT_HALF_DUPLEX = 0,
|
|
PORT_FULL_DUPLEX,
|
|
PORT_DUPLEX_END
|
|
} rtk_port_duplex_t;
|
|
|
|
typedef enum rtk_port_linkStatus_e
|
|
{
|
|
PORT_LINKDOWN = 0,
|
|
PORT_LINKUP,
|
|
PORT_LINKSTATUS_END
|
|
} rtk_port_linkStatus_t;
|
|
|
|
typedef struct rtk_port_mac_ability_s
|
|
{
|
|
rtk_uint32 forcemode;
|
|
rtk_uint32 speed;
|
|
rtk_uint32 duplex;
|
|
rtk_uint32 link;
|
|
rtk_uint32 nway;
|
|
rtk_uint32 txpause;
|
|
rtk_uint32 rxpause;
|
|
}rtk_port_mac_ability_t;
|
|
|
|
typedef struct rtk_port_phy_ability_s
|
|
{
|
|
rtk_uint32 AutoNegotiation; /*PHY register 0.12 setting for auto-negotiation process*/
|
|
rtk_uint32 Half_10; /*PHY register 4.5 setting for 10BASE-TX half duplex capable*/
|
|
rtk_uint32 Full_10; /*PHY register 4.6 setting for 10BASE-TX full duplex capable*/
|
|
rtk_uint32 Half_100; /*PHY register 4.7 setting for 100BASE-TX half duplex capable*/
|
|
rtk_uint32 Full_100; /*PHY register 4.8 setting for 100BASE-TX full duplex capable*/
|
|
rtk_uint32 Full_1000; /*PHY register 9.9 setting for 1000BASE-T full duplex capable*/
|
|
rtk_uint32 FC; /*PHY register 4.10 setting for flow control capability*/
|
|
rtk_uint32 AsyFC; /*PHY register 4.11 setting for asymmetric flow control capability*/
|
|
} rtk_port_phy_ability_t;
|
|
|
|
typedef rtk_uint32 rtk_port_phy_data_t; /* phy page */
|
|
|
|
typedef enum rtk_port_phy_mdix_mode_e
|
|
{
|
|
PHY_AUTO_CROSSOVER_MODE= 0,
|
|
PHY_FORCE_MDI_MODE,
|
|
PHY_FORCE_MDIX_MODE,
|
|
PHY_FORCE_MODE_END
|
|
} rtk_port_phy_mdix_mode_t;
|
|
|
|
typedef enum rtk_port_phy_mdix_status_e
|
|
{
|
|
PHY_STATUS_AUTO_MDI_MODE= 0,
|
|
PHY_STATUS_AUTO_MDIX_MODE,
|
|
PHY_STATUS_FORCE_MDI_MODE,
|
|
PHY_STATUS_FORCE_MDIX_MODE,
|
|
PHY_STATUS_FORCE_MODE_END
|
|
} rtk_port_phy_mdix_status_t;
|
|
|
|
typedef rtk_uint32 rtk_port_phy_page_t; /* phy page */
|
|
|
|
typedef enum rtk_port_phy_reg_e
|
|
{
|
|
PHY_REG_CONTROL = 0,
|
|
PHY_REG_STATUS,
|
|
PHY_REG_IDENTIFIER_1,
|
|
PHY_REG_IDENTIFIER_2,
|
|
PHY_REG_AN_ADVERTISEMENT,
|
|
PHY_REG_AN_LINKPARTNER,
|
|
PHY_REG_1000_BASET_CONTROL = 9,
|
|
PHY_REG_1000_BASET_STATUS,
|
|
PHY_REG_END = 32
|
|
} rtk_port_phy_reg_t;
|
|
|
|
typedef enum rtk_port_phy_test_mode_e
|
|
{
|
|
PHY_TEST_MODE_NORMAL= 0,
|
|
PHY_TEST_MODE_1,
|
|
PHY_TEST_MODE_2,
|
|
PHY_TEST_MODE_3,
|
|
PHY_TEST_MODE_4,
|
|
PHY_TEST_MODE_END
|
|
} rtk_port_phy_test_mode_t;
|
|
|
|
typedef enum rtk_port_speed_e
|
|
{
|
|
PORT_SPEED_10M = 0,
|
|
PORT_SPEED_100M,
|
|
PORT_SPEED_1000M,
|
|
PORT_SPEED_500M,
|
|
PORT_SPEED_2500M,
|
|
PORT_SPEED_END
|
|
} rtk_port_speed_t;
|
|
|
|
typedef enum rtk_port_media_e
|
|
{
|
|
PORT_MEDIA_COPPER = 0,
|
|
PORT_MEDIA_FIBER,
|
|
PORT_MEDIA_END
|
|
}rtk_port_media_t;
|
|
|
|
typedef struct rtk_rtctResult_s
|
|
{
|
|
rtk_port_speed_t linkType;
|
|
union
|
|
{
|
|
struct fe_result_s
|
|
{
|
|
rtk_uint32 isRxShort;
|
|
rtk_uint32 isTxShort;
|
|
rtk_uint32 isRxOpen;
|
|
rtk_uint32 isTxOpen;
|
|
rtk_uint32 isRxMismatch;
|
|
rtk_uint32 isTxMismatch;
|
|
rtk_uint32 isRxLinedriver;
|
|
rtk_uint32 isTxLinedriver;
|
|
rtk_uint32 rxLen;
|
|
rtk_uint32 txLen;
|
|
} fe_result;
|
|
|
|
struct ge_result_s
|
|
{
|
|
rtk_uint32 channelAShort;
|
|
rtk_uint32 channelBShort;
|
|
rtk_uint32 channelCShort;
|
|
rtk_uint32 channelDShort;
|
|
|
|
rtk_uint32 channelAOpen;
|
|
rtk_uint32 channelBOpen;
|
|
rtk_uint32 channelCOpen;
|
|
rtk_uint32 channelDOpen;
|
|
|
|
rtk_uint32 channelAMismatch;
|
|
rtk_uint32 channelBMismatch;
|
|
rtk_uint32 channelCMismatch;
|
|
rtk_uint32 channelDMismatch;
|
|
|
|
rtk_uint32 channelALinedriver;
|
|
rtk_uint32 channelBLinedriver;
|
|
rtk_uint32 channelCLinedriver;
|
|
rtk_uint32 channelDLinedriver;
|
|
|
|
rtk_uint32 channelALen;
|
|
rtk_uint32 channelBLen;
|
|
rtk_uint32 channelCLen;
|
|
rtk_uint32 channelDLen;
|
|
} ge_result;
|
|
}result;
|
|
} rtk_rtctResult_t;
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyAutoNegoAbility_set
|
|
* Description:
|
|
* Set Ethernet PHY auto-negotiation desired ability.
|
|
* Input:
|
|
* port - port id.
|
|
* pAbility - Ability structure
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* If Full_1000 bit is set to 1, the AutoNegotiation will be automatic set to 1. While both AutoNegotiation and Full_1000 are set to 0, the PHY speed and duplex selection will
|
|
* be set as following 100F > 100H > 10F > 10H priority sequence.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyAutoNegoAbility_set(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyAutoNegoAbility_get
|
|
* Description:
|
|
* Get PHY ability through PHY registers.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pAbility - Ability structure
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* Get the capability of specified PHY.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyAutoNegoAbility_get(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyForceModeAbility_set
|
|
* Description:
|
|
* Set the port speed/duplex mode/pause/asy_pause in the PHY force mode.
|
|
* Input:
|
|
* port - port id.
|
|
* pAbility - Ability structure
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* While both AutoNegotiation and Full_1000 are set to 0, the PHY speed and duplex selection will
|
|
* be set as following 100F > 100H > 10F > 10H priority sequence.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyForceModeAbility_set(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyForceModeAbility_get
|
|
* Description:
|
|
* Get PHY ability through PHY registers.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pAbility - Ability structure
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* Get the capability of specified PHY.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyForceModeAbility_get(rtk_port_t port, rtk_port_phy_ability_t *pAbility);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyStatus_get
|
|
* Description:
|
|
* Get Ethernet PHY linking status
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* linkStatus - PHY link status
|
|
* speed - PHY link speed
|
|
* duplex - PHY duplex mode
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* API will return auto negotiation status of phy.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyStatus_get(rtk_port_t port, rtk_port_linkStatus_t *pLinkStatus, rtk_port_speed_t *pSpeed, rtk_port_duplex_t *pDuplex);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macForceLink_set
|
|
* Description:
|
|
* Set port force linking configuration.
|
|
* Input:
|
|
* port - port id.
|
|
* pPortability - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API can set Port/MAC force mode properties.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macForceLink_set(rtk_port_t port, rtk_port_mac_ability_t *pPortability);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macForceLink_get
|
|
* Description:
|
|
* Get port force linking configuration.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pPortability - port ability configuration
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API can get Port/MAC force mode properties.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macForceLink_get(rtk_port_t port, rtk_port_mac_ability_t *pPortability);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macForceLinkExt_set
|
|
* Description:
|
|
* Set external interface force linking configuration.
|
|
* Input:
|
|
* port - external port ID
|
|
* mode - external interface mode
|
|
* pPortability - port ability configuration
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API can set external interface force mode properties.
|
|
* The external interface can be set to:
|
|
* - MODE_EXT_DISABLE,
|
|
* - MODE_EXT_RGMII,
|
|
* - MODE_EXT_MII_MAC,
|
|
* - MODE_EXT_MII_PHY,
|
|
* - MODE_EXT_TMII_MAC,
|
|
* - MODE_EXT_TMII_PHY,
|
|
* - MODE_EXT_GMII,
|
|
* - MODE_EXT_RMII_MAC,
|
|
* - MODE_EXT_RMII_PHY,
|
|
* - MODE_EXT_SGMII,
|
|
* - MODE_EXT_HSGMII,
|
|
* - MODE_EXT_1000X_100FX,
|
|
* - MODE_EXT_1000X,
|
|
* - MODE_EXT_100FX,
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macForceLinkExt_set(rtk_port_t port, rtk_mode_ext_t mode, rtk_port_mac_ability_t *pPortability);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macForceLinkExt_get
|
|
* Description:
|
|
* Set external interface force linking configuration.
|
|
* Input:
|
|
* port - external port ID
|
|
* Output:
|
|
* pMode - external interface mode
|
|
* pPortability - port ability configuration
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API can get external interface force mode properties.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macForceLinkExt_get(rtk_port_t port, rtk_mode_ext_t *pMode, rtk_port_mac_ability_t *pPortability);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macStatus_get
|
|
* Description:
|
|
* Get port link status.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pPortstatus - port ability configuration
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API can get Port/PHY properties.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macStatus_get(rtk_port_t port, rtk_port_mac_ability_t *pPortstatus);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macLocalLoopbackEnable_set
|
|
* Description:
|
|
* Set Port Local Loopback. (Redirect TX to RX.)
|
|
* Input:
|
|
* port - Port id.
|
|
* enable - Loopback state, 0:disable, 1:enable
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API can enable/disable Local loopback in MAC.
|
|
* For UTP port, This API will also enable the digital
|
|
* loopback bit in PHY register for sync of speed between
|
|
* PHY and MAC. For EXT port, users need to force the
|
|
* link state by themselves.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macLocalLoopbackEnable_set(rtk_port_t port, rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_macLocalLoopbackEnable_get
|
|
* Description:
|
|
* Get Port Local Loopback. (Redirect TX to RX.)
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pEnable - Loopback state, 0:disable, 1:enable
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* None.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_macLocalLoopbackEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyReg_set
|
|
* Description:
|
|
* Set PHY register data of the specific port.
|
|
* Input:
|
|
* port - port id.
|
|
* reg - Register id
|
|
* regData - Register data
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* This API can set PHY register data of the specific port.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyReg_set(rtk_port_t port, rtk_port_phy_reg_t reg, rtk_port_phy_data_t value);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyReg_get
|
|
* Description:
|
|
* Get PHY register data of the specific port.
|
|
* Input:
|
|
* port - Port id.
|
|
* reg - Register id
|
|
* Output:
|
|
* pData - Register data
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PHY_REG_ID - Invalid PHY address
|
|
* RT_ERR_BUSYWAIT_TIMEOUT - PHY access busy
|
|
* Note:
|
|
* This API can get PHY register data of the specific port.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyReg_get(rtk_port_t port, rtk_port_phy_reg_t reg, rtk_port_phy_data_t *pData);
|
|
|
|
/* Function Name:
|
|
* rtk_port_backpressureEnable_set
|
|
* Description:
|
|
* Set the half duplex back-pressure enable status of the specific port.
|
|
* Input:
|
|
* port - port id.
|
|
* enable - Back pressure status.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_ENABLE - Invalid enable input.
|
|
* Note:
|
|
* This API can set the half duplex back-pressure enable status of the specific port.
|
|
* The half duplex back-pressure enable status of the port is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_backpressureEnable_set(rtk_port_t port, rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_backpressureEnable_get
|
|
* Description:
|
|
* Get the half duplex back-pressure enable status of the specific port.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pEnable - Back pressure status.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API can get the half duplex back-pressure enable status of the specific port.
|
|
* The half duplex back-pressure enable status of the port is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_backpressureEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_adminEnable_set
|
|
* Description:
|
|
* Set port admin configuration of the specific port.
|
|
* Input:
|
|
* port - port id.
|
|
* enable - Back pressure status.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_ENABLE - Invalid enable input.
|
|
* Note:
|
|
* This API can set port admin configuration of the specific port.
|
|
* The port admin configuration of the port is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_adminEnable_set(rtk_port_t port, rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_adminEnable_get
|
|
* Description:
|
|
* Get port admin configuration of the specific port.
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pEnable - Back pressure status.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API can get port admin configuration of the specific port.
|
|
* The port admin configuration of the port is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_adminEnable_get(rtk_port_t port, rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_isolation_set
|
|
* Description:
|
|
* Set permitted port isolation portmask
|
|
* Input:
|
|
* port - port id.
|
|
* pPortmask - Permit port mask
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* RT_ERR_PORT_MASK - Invalid portmask.
|
|
* Note:
|
|
* This API set the port mask that a port can transmit packet to of each port
|
|
* A port can only transmit packet to ports included in permitted portmask
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_isolation_set(rtk_port_t port, rtk_portmask_t *pPortmask);
|
|
|
|
/* Function Name:
|
|
* rtk_port_isolation_get
|
|
* Description:
|
|
* Get permitted port isolation portmask
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pPortmask - Permit port mask
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port number.
|
|
* Note:
|
|
* This API get the port mask that a port can transmit packet to of each port
|
|
* A port can only transmit packet to ports included in permitted portmask
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_isolation_get(rtk_port_t port, rtk_portmask_t *pPortmask);
|
|
|
|
/* Function Name:
|
|
* rtk_port_rgmiiDelayExt_set
|
|
* Description:
|
|
* Set RGMII interface delay value for TX and RX.
|
|
* Input:
|
|
* txDelay - TX delay value, 1 for delay 2ns and 0 for no-delay
|
|
* rxDelay - RX delay value, 0~7 for delay setup.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API can set external interface 2 RGMII delay.
|
|
* In TX delay, there are 2 selection: no-delay and 2ns delay.
|
|
* In RX delay, there are 8 steps for delay tuning. 0 for no-delay, and 7 for maximum delay.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_rgmiiDelayExt_set(rtk_port_t port, rtk_data_t txDelay, rtk_data_t rxDelay);
|
|
|
|
/* Function Name:
|
|
* rtk_port_rgmiiDelayExt_get
|
|
* Description:
|
|
* Get RGMII interface delay value for TX and RX.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pTxDelay - TX delay value
|
|
* pRxDelay - RX delay value
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* This API can set external interface 2 RGMII delay.
|
|
* In TX delay, there are 2 selection: no-delay and 2ns delay.
|
|
* In RX delay, there are 8 steps for delay tuning. 0 for n0-delay, and 7 for maximum delay.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_rgmiiDelayExt_get(rtk_port_t port, rtk_data_t *pTxDelay, rtk_data_t *pRxDelay);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyEnableAll_set
|
|
* Description:
|
|
* Set all PHY enable status.
|
|
* Input:
|
|
* enable - PHY Enable State.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_ENABLE - Invalid enable input.
|
|
* Note:
|
|
* This API can set all PHY status.
|
|
* The configuration of all PHY is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyEnableAll_set(rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyEnableAll_get
|
|
* Description:
|
|
* Get all PHY enable status.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pEnable - PHY Enable State.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* This API can set all PHY status.
|
|
* The configuration of all PHY is as following:
|
|
* - DISABLE
|
|
* - ENABLE
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyEnableAll_get(rtk_enable_t *pEnable);
|
|
|
|
/* Function Name:
|
|
* rtk_port_efid_set
|
|
* Description:
|
|
* Set port-based enhanced filtering database
|
|
* Input:
|
|
* port - Port id.
|
|
* efid - Specified enhanced filtering database.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_L2_FID - Invalid fid.
|
|
* RT_ERR_INPUT - Invalid input parameter.
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can set port-based enhanced filtering database.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_efid_set(rtk_port_t port, rtk_data_t efid);
|
|
|
|
/* Function Name:
|
|
* rtk_port_efid_get
|
|
* Description:
|
|
* Get port-based enhanced filtering database
|
|
* Input:
|
|
* port - Port id.
|
|
* Output:
|
|
* pEfid - Specified enhanced filtering database.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can get port-based enhanced filtering database status.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_efid_get(rtk_port_t port, rtk_data_t *pEfid);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyComboPortMedia_set
|
|
* Description:
|
|
* Set Combo port media type
|
|
* Input:
|
|
* port - Port id. (Should be Port 4)
|
|
* media - Media (COPPER or FIBER)
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can Set Combo port media type.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyComboPortMedia_set(rtk_port_t port, rtk_port_media_t media);
|
|
|
|
/* Function Name:
|
|
* rtk_port_phyComboPortMedia_get
|
|
* Description:
|
|
* Get Combo port media type
|
|
* Input:
|
|
* port - Port id. (Should be Port 4)
|
|
* Output:
|
|
* pMedia - Media (COPPER or FIBER)
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can Set Combo port media type.
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_phyComboPortMedia_get(rtk_port_t port, rtk_port_media_t *pMedia);
|
|
|
|
/* Function Name:
|
|
* rtk_port_rtctEnable_set
|
|
* Description:
|
|
* Enable RTCT test
|
|
* Input:
|
|
* pPortmask - Port mask of RTCT enabled port
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid port mask.
|
|
* Note:
|
|
* The API can enable RTCT Test
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_rtctEnable_set(rtk_portmask_t *pPortmask);
|
|
|
|
/* Function Name:
|
|
* rtk_port_rtctDisable_set
|
|
* Description:
|
|
* Disable RTCT test
|
|
* Input:
|
|
* pPortmask - Port mask of RTCT disabled port
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_MASK - Invalid port mask.
|
|
* Note:
|
|
* The API can disable RTCT Test
|
|
*/
|
|
rtk_api_ret_t rtk_port_rtctDisable_set(rtk_portmask_t *pPortmask);
|
|
|
|
|
|
/* Function Name:
|
|
* rtk_port_rtctResult_get
|
|
* Description:
|
|
* Get the result of RTCT test
|
|
* Input:
|
|
* port - Port ID
|
|
* Output:
|
|
* pRtctResult - The result of RTCT result
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* RT_ERR_PHY_RTCT_NOT_FINISH - Testing does not finish.
|
|
* Note:
|
|
* The API can get RTCT test result.
|
|
* RTCT test may takes 4.8 seconds to finish its test at most.
|
|
* Thus, if this API return RT_ERR_PHY_RTCT_NOT_FINISH or
|
|
* other error code, the result can not be referenced and
|
|
* user should call this API again until this API returns
|
|
* a RT_ERR_OK.
|
|
* The result is stored at pRtctResult->ge_result
|
|
* pRtctResult->linkType is unused.
|
|
* The unit of channel length is 2.5cm. Ex. 300 means 300 * 2.5 = 750cm = 7.5M
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_rtctResult_get(rtk_port_t port, rtk_rtctResult_t *pRtctResult);
|
|
|
|
/* Function Name:
|
|
* rtk_port_sds_reset
|
|
* Description:
|
|
* Reset Serdes
|
|
* Input:
|
|
* port - Port ID
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can reset Serdes
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_sds_reset(rtk_port_t port);
|
|
|
|
/* Function Name:
|
|
* rtk_port_sgmiiLinkStatus_get
|
|
* Description:
|
|
* Get SGMII status
|
|
* Input:
|
|
* port - Port ID
|
|
* Output:
|
|
* pSignalDetect - Signal detect
|
|
* pSync - Sync
|
|
* pLink - Link
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can reset Serdes
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_sgmiiLinkStatus_get(rtk_port_t port, rtk_data_t *pSignalDetect, rtk_data_t *pSync, rtk_port_linkStatus_t *pLink);
|
|
|
|
/* Function Name:
|
|
* rtk_port_sgmiiNway_set
|
|
* Description:
|
|
* Configure SGMII/HSGMII port Nway state
|
|
* Input:
|
|
* port - Port ID
|
|
* state - Nway state
|
|
* Output:
|
|
* None.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API configure SGMII/HSGMII port Nway state
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_sgmiiNway_set(rtk_port_t port, rtk_enable_t state);
|
|
|
|
/* Function Name:
|
|
* rtk_port_sgmiiNway_get
|
|
* Description:
|
|
* Get SGMII/HSGMII port Nway state
|
|
* Input:
|
|
* port - Port ID
|
|
* Output:
|
|
* pState - Nway state
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_PORT_ID - Invalid port ID.
|
|
* Note:
|
|
* The API can get SGMII/HSGMII port Nway state
|
|
*/
|
|
extern rtk_api_ret_t rtk_port_sgmiiNway_get(rtk_port_t port, rtk_enable_t *pState);
|
|
|
|
#endif /* __RTK_API_PORT_H__ */
|
|
|
|
|
|
|