255 lines
7.5 KiB
C
255 lines
7.5 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 Interrupt module high-layer API definition
|
|
*
|
|
*/
|
|
|
|
#ifndef __RTK_API_INTERRUPT_H__
|
|
#define __RTK_API_INTERRUPT_H__
|
|
|
|
|
|
/*
|
|
* Data Type Declaration
|
|
*/
|
|
#define RTK_MAX_NUM_OF_INTERRUPT_TYPE 1
|
|
|
|
|
|
typedef struct rtk_int_status_s
|
|
{
|
|
rtk_uint16 value[RTK_MAX_NUM_OF_INTERRUPT_TYPE];
|
|
} rtk_int_status_t;
|
|
|
|
typedef struct rtk_int_info_s
|
|
{
|
|
rtk_portmask_t portMask;
|
|
rtk_uint32 meterMask;
|
|
rtk_uint32 systemLearnOver;
|
|
}rtk_int_info_t;
|
|
|
|
typedef enum rtk_int_type_e
|
|
{
|
|
INT_TYPE_LINK_STATUS = 0,
|
|
INT_TYPE_METER_EXCEED,
|
|
INT_TYPE_LEARN_LIMIT,
|
|
INT_TYPE_LINK_SPEED,
|
|
INT_TYPE_CONGEST,
|
|
INT_TYPE_GREEN_FEATURE,
|
|
INT_TYPE_LOOP_DETECT,
|
|
INT_TYPE_8051,
|
|
INT_TYPE_CABLE_DIAG,
|
|
INT_TYPE_ACL,
|
|
INT_TYPE_RESERVED, /* Unused */
|
|
INT_TYPE_SLIENT,
|
|
INT_TYPE_END
|
|
}rtk_int_type_t;
|
|
|
|
typedef enum rtk_int_advType_e
|
|
{
|
|
ADV_L2_LEARN_PORT_MASK = 0,
|
|
ADV_SPEED_CHANGE_PORT_MASK,
|
|
ADV_SPECIAL_CONGESTION_PORT_MASK,
|
|
ADV_PORT_LINKDOWN_PORT_MASK,
|
|
ADV_PORT_LINKUP_PORT_MASK,
|
|
ADV_METER_EXCEED_MASK,
|
|
ADV_RLDP_LOOPED,
|
|
ADV_RLDP_RELEASED,
|
|
ADV_END,
|
|
} rtk_int_advType_t;
|
|
|
|
typedef enum rtk_int_polarity_e
|
|
{
|
|
INT_POLAR_HIGH = 0,
|
|
INT_POLAR_LOW,
|
|
INT_POLAR_END
|
|
} rtk_int_polarity_t;
|
|
|
|
/* Function Name:
|
|
* rtk_int_polarity_set
|
|
* Description:
|
|
* Set interrupt polarity configuration.
|
|
* Input:
|
|
* type - Interruptpolarity type.
|
|
* Output:
|
|
* None
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can set interrupt polarity configuration.
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_polarity_set(rtk_int_polarity_t type);
|
|
|
|
/* Function Name:
|
|
* rtk_int_polarity_get
|
|
* Description:
|
|
* Get interrupt polarity configuration.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pType - Interruptpolarity type.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* Note:
|
|
* The API can get interrupt polarity configuration.
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_polarity_get(rtk_int_polarity_t *pType);
|
|
|
|
/* Function Name:
|
|
* rtk_int_control_set
|
|
* Description:
|
|
* Set interrupt trigger status configuration.
|
|
* Input:
|
|
* type - Interrupt type.
|
|
* enable - Interrupt status.
|
|
* 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_ENABLE - Invalid enable input.
|
|
* Note:
|
|
* The API can set interrupt status configuration.
|
|
* The interrupt trigger status is shown in the following:
|
|
* - INT_TYPE_LINK_STATUS
|
|
* - INT_TYPE_METER_EXCEED
|
|
* - INT_TYPE_LEARN_LIMIT
|
|
* - INT_TYPE_LINK_SPEED
|
|
* - INT_TYPE_CONGEST
|
|
* - INT_TYPE_GREEN_FEATURE
|
|
* - INT_TYPE_LOOP_DETECT
|
|
* - INT_TYPE_8051,
|
|
* - INT_TYPE_CABLE_DIAG,
|
|
* - INT_TYPE_ACL,
|
|
* - INT_TYPE_SLIENT
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_control_set(rtk_int_type_t type, rtk_enable_t enable);
|
|
|
|
/* Function Name:
|
|
* rtk_int_control_get
|
|
* Description:
|
|
* Get interrupt trigger status configuration.
|
|
* Input:
|
|
* type - Interrupt type.
|
|
* Output:
|
|
* pEnable - Interrupt status.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can get interrupt status configuration.
|
|
* The interrupt trigger status is shown in the following:
|
|
* - INT_TYPE_LINK_STATUS
|
|
* - INT_TYPE_METER_EXCEED
|
|
* - INT_TYPE_LEARN_LIMIT
|
|
* - INT_TYPE_LINK_SPEED
|
|
* - INT_TYPE_CONGEST
|
|
* - INT_TYPE_GREEN_FEATURE
|
|
* - INT_TYPE_LOOP_DETECT
|
|
* - INT_TYPE_8051,
|
|
* - INT_TYPE_CABLE_DIAG,
|
|
* - INT_TYPE_ACL,
|
|
* - INT_TYPE_SLIENT
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_control_get(rtk_int_type_t type, rtk_enable_t* pEnable);
|
|
|
|
/* Function Name:
|
|
* rtk_int_status_set
|
|
* Description:
|
|
* Set interrupt trigger status to clean.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pStatusMask - Interrupt status bit mask.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can clean interrupt trigger status when interrupt happened.
|
|
* The interrupt trigger status is shown in the following:
|
|
* - INT_TYPE_LINK_STATUS (value[0] (Bit0))
|
|
* - INT_TYPE_METER_EXCEED (value[0] (Bit1))
|
|
* - INT_TYPE_LEARN_LIMIT (value[0] (Bit2))
|
|
* - INT_TYPE_LINK_SPEED (value[0] (Bit3))
|
|
* - INT_TYPE_CONGEST (value[0] (Bit4))
|
|
* - INT_TYPE_GREEN_FEATURE (value[0] (Bit5))
|
|
* - INT_TYPE_LOOP_DETECT (value[0] (Bit6))
|
|
* - INT_TYPE_8051 (value[0] (Bit7))
|
|
* - INT_TYPE_CABLE_DIAG (value[0] (Bit8))
|
|
* - INT_TYPE_ACL (value[0] (Bit9))
|
|
* - INT_TYPE_SLIENT (value[0] (Bit11))
|
|
* The status will be cleared after execute this API.
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_status_set(rtk_int_status_t *pStatusMask);
|
|
|
|
/* Function Name:
|
|
* rtk_int_status_get
|
|
* Description:
|
|
* Get interrupt trigger status.
|
|
* Input:
|
|
* None
|
|
* Output:
|
|
* pStatusMask - Interrupt status bit mask.
|
|
* Return:
|
|
* RT_ERR_OK - OK
|
|
* RT_ERR_FAILED - Failed
|
|
* RT_ERR_SMI - SMI access error
|
|
* RT_ERR_INPUT - Invalid input parameters.
|
|
* Note:
|
|
* The API can get interrupt trigger status when interrupt happened.
|
|
* The interrupt trigger status is shown in the following:
|
|
* - INT_TYPE_LINK_STATUS (value[0] (Bit0))
|
|
* - INT_TYPE_METER_EXCEED (value[0] (Bit1))
|
|
* - INT_TYPE_LEARN_LIMIT (value[0] (Bit2))
|
|
* - INT_TYPE_LINK_SPEED (value[0] (Bit3))
|
|
* - INT_TYPE_CONGEST (value[0] (Bit4))
|
|
* - INT_TYPE_GREEN_FEATURE (value[0] (Bit5))
|
|
* - INT_TYPE_LOOP_DETECT (value[0] (Bit6))
|
|
* - INT_TYPE_8051 (value[0] (Bit7))
|
|
* - INT_TYPE_CABLE_DIAG (value[0] (Bit8))
|
|
* - INT_TYPE_ACL (value[0] (Bit9))
|
|
* - INT_TYPE_SLIENT (value[0] (Bit11))
|
|
*
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_status_get(rtk_int_status_t* pStatusMask);
|
|
|
|
/* Function Name:
|
|
* rtk_int_advanceInfo_get
|
|
* Description:
|
|
* Get interrupt advanced information.
|
|
* Input:
|
|
* adv_type - Advanced interrupt type.
|
|
* Output:
|
|
* info - Information per type.
|
|
* 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 advanced information when interrupt happened.
|
|
* The status will be cleared after execute this API.
|
|
*/
|
|
extern rtk_api_ret_t rtk_int_advanceInfo_get(rtk_int_advType_t adv_type, rtk_int_info_t* info);
|
|
|
|
|
|
#endif /* __RTK_API_INTERRUPT_H__ */
|