/* * 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 defination * */ #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__ */