blob: ab7e3825929d5d52c15ed2fb198cb43ad7eea26d [file] [log] [blame]
/*
* Copyright (c) 2012, 2015-2019, The Linux Foundation. All rights reserved.
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all copies.
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
/*qca808x_start*/
/**
* @defgroup fal_port_ctrl FAL_PORT_CONTROL
* @{
*/
#ifndef _FAL_PORTCTRL_H_
#define _FAL_PORTCTRL_H_
#ifdef __cplusplus
extern "c" {
#endif
#include "sw.h"
#include "fal/fal_type.h"
typedef enum {
FAL_HALF_DUPLEX = 0,
FAL_FULL_DUPLEX,
FAL_DUPLEX_BUTT = 0xffff
} fal_port_duplex_t;
typedef enum {
FAL_SPEED_10 = 10,
FAL_SPEED_100 = 100,
FAL_SPEED_1000 = 1000,
FAL_SPEED_2500 = 2500,
FAL_SPEED_5000 = 5000,
FAL_SPEED_10000 = 10000,
FAL_SPEED_BUTT = 0xffff,
} fal_port_speed_t;
typedef enum {
FAL_CABLE_STATUS_NORMAL = 0,
FAL_CABLE_STATUS_SHORT = 1,
FAL_CABLE_STATUS_OPENED = 2,
FAL_CABLE_STATUS_INVALID = 3,
FAL_CABLE_STATUS_CROSSOVERA = 4,
FAL_CABLE_STATUS_CROSSOVERB = 5,
FAL_CABLE_STATUS_CROSSOVERC = 6,
FAL_CABLE_STATUS_CROSSOVERD = 7,
FAL_CABLE_STATUS_LOW_MISMATCH =8,
FAL_CABLE_STATUS_HIGH_MISMATCH =9,
FAL_CABLE_STATUS_BUTT = 0xffff,
} fal_cable_status_t;
struct port_phy_status
{
a_uint32_t link_status;
fal_port_speed_t speed;
fal_port_duplex_t duplex;
a_bool_t tx_flowctrl;
a_bool_t rx_flowctrl;
};
#define FAL_ENABLE 1
#define FAL_DISABLE 0
#define FAL_MAX_PORT_NUMBER 8
#define FAL_DEFAULT_LOOPBACK_RATE 14
//phy autoneg adv
#define FAL_PHY_ADV_10T_HD 0x01
#define FAL_PHY_ADV_10T_FD 0x02
#define FAL_PHY_ADV_100TX_HD 0x04
#define FAL_PHY_ADV_100TX_FD 0x08
//#define FAL_PHY_ADV_1000T_HD 0x100
#define FAL_PHY_ADV_1000T_FD 0x200
#define FAL_PHY_ADV_1000BX_HD 0x400
#define FAL_PHY_ADV_1000BX_FD 0x800
#define FAL_PHY_ADV_2500T_FD 0x1000
#define FAL_PHY_ADV_5000T_FD 0x2000
#define FAL_PHY_ADV_10000T_FD 0x4000
#define FAL_PHY_ADV_10G_R_FD 0x8000
#define FAL_DEFAULT_MAX_FRAME_SIZE 0x5ee
#define FAL_PHY_ADV_FE_SPEED_ALL \
(FAL_PHY_ADV_10T_HD | FAL_PHY_ADV_10T_FD | FAL_PHY_ADV_100TX_HD |\
FAL_PHY_ADV_100TX_FD)
#define FAL_PHY_ADV_GE_SPEED_ALL \
(FAL_PHY_ADV_10T_HD | FAL_PHY_ADV_10T_FD | FAL_PHY_ADV_100TX_HD |\
FAL_PHY_ADV_100TX_FD | FAL_PHY_ADV_1000T_FD)
#define FAL_PHY_ADV_BX_SPEED_ALL \
(FAL_PHY_ADV_1000BX_HD | FAL_PHY_ADV_1000BX_FD |FAL_PHY_ADV_10G_R_FD)
#define FAL_PHY_ADV_XGE_SPEED_ALL \
(FAL_PHY_ADV_2500T_FD | FAL_PHY_ADV_5000T_FD | FAL_PHY_ADV_10000T_FD)
#define FAL_PHY_ADV_PAUSE 0x10
#define FAL_PHY_ADV_ASY_PAUSE 0x20
#define FAL_PHY_FE_ADV_ALL \
(FAL_PHY_ADV_FE_SPEED_ALL | FAL_PHY_ADV_PAUSE | FAL_PHY_ADV_ASY_PAUSE)
#define FAL_PHY_GE_ADV_ALL \
(FAL_PHY_ADV_GE_SPEED_ALL | FAL_PHY_ADV_PAUSE | FAL_PHY_ADV_ASY_PAUSE)
#define FAL_PHY_COMBO_ADV_ALL \
(FAL_PHY_ADV_BX_SPEED_ALL | FAL_PHY_ADV_GE_SPEED_ALL | FAL_PHY_ADV_XGE_SPEED_ALL|\
FAL_PHY_ADV_PAUSE | FAL_PHY_ADV_ASY_PAUSE)
//phy capablity
#define FAL_PHY_AUTONEG_CAPS 0x01
#define FAL_PHY_100T2_HD_CAPS 0x02
#define FAL_PHY_100T2_FD_CAPS 0x04
#define FAL_PHY_10T_HD_CAPS 0x08
#define FAL_PHY_10T_FD_CAPS 0x10
#define FAL_PHY_100X_HD_CAPS 0x20
#define FAL_PHY_100X_FD_CAPS 0x40
#define FAL_PHY_100T4_CAPS 0x80
//#define FAL_PHY_1000T_HD_CAPS 0x100
#define FAL_PHY_1000T_FD_CAPS 0x200
//#define FAL_PHY_1000X_HD_CAPS 0x400
#define FAL_PHY_1000X_FD_CAPS 0x800
//phy partner capablity
#define FAL_PHY_PART_10T_HD 0x1
#define FAL_PHY_PART_10T_FD 0x2
#define FAL_PHY_PART_100TX_HD 0x4
#define FAL_PHY_PART_100TX_FD 0x8
//#define FAL_PHY_PART_1000T_HD 0x10
#define FAL_PHY_PART_1000T_FD 0x20
#define FAL_PHY_PART_2500T_FD 0x40
#define FAL_PHY_PART_5000T_FD 0x80
#define FAL_PHY_PART_10000T_FD 0x100
//phy interrupt flag
#define FAL_PHY_INTR_SPEED_CHANGE 0x1
#define FAL_PHY_INTR_DUPLEX_CHANGE 0x2
#define FAL_PHY_INTR_STATUS_UP_CHANGE 0x4
#define FAL_PHY_INTR_STATUS_DOWN_CHANGE 0x8
#define FAL_PHY_INTR_BX_FX_STATUS_UP_CHANGE 0x10
#define FAL_PHY_INTR_BX_FX_STATUS_DOWN_CHANGE 0x20
#define FAL_PHY_INTR_MEDIA_STATUS_CHANGE 0x40
#define FAL_PHY_INTR_WOL_STATUS 0x80
#define FAL_PHY_INTR_POE_STATUS 0x100
/* phy eee */
#define FAL_PHY_EEE_10BASE_T 0x1
#define FAL_PHY_EEE_100BASE_T 0x2
#define FAL_PHY_EEE_1000BASE_T 0x4
#define FAL_PHY_EEE_2500BASE_T 0x8
#define FAL_PHY_EEE_5000BASE_T 0x10
#define FAL_PHY_EEE_10000BASE_T 0x20
typedef enum {
FAL_NO_HEADER_EN = 0,
FAL_ONLY_MANAGE_FRAME_EN,
FAL_ALL_TYPE_FRAME_EN
} fal_port_header_mode_t;
typedef struct {
a_uint16_t pair_a_status;
a_uint16_t pair_b_status;
a_uint16_t pair_c_status;
a_uint16_t pair_d_status;
a_uint32_t pair_a_len;
a_uint32_t pair_b_len;
a_uint32_t pair_c_len;
a_uint32_t pair_d_len;
} fal_port_cdt_t;
/*below is new add for malibu phy*/
/** Phy mdix mode */
typedef enum {
PHY_MDIX_AUTO = 0,
/**< Auto MDI/MDIX */
PHY_MDIX_MDI = 1,
/**< Fixed MDI */
PHY_MDIX_MDIX = 2
/**< Fixed MDIX */
} fal_port_mdix_mode_t;
/** Phy mdix status */
typedef enum {
PHY_MDIX_STATUS_MDI = 0,
/**< Fixed MDI */
PHY_MDIX_STATUS_MDIX = 1
/**< Fixed MDIX */
} fal_port_mdix_status_t;
/** Phy master mode */
typedef enum {
PHY_MASTER_MASTER = 0,
/**< Phy manual MASTER configuration */
PHY_MASTER_SLAVE = 1,
/**< Phy manual SLAVE configuration */
PHY_MASTER_AUTO = 2
/**< Phy automatic MASTER/SLAVE configuration */
} fal_port_master_t;
/** Phy preferred medium type */
typedef enum {
PHY_MEDIUM_COPPER = 0,
/**< Copper */
PHY_MEDIUM_FIBER = 1,
/**< Fiber */
} fal_port_medium_t;
/** Phy pages */
typedef enum {
PHY_SGBX_PAGES = 0,
/**< sgbx pages */
PHY_COPPER_PAGES = 1
/**< copper pages */
} fal_port_reg_pages_t;
/** Phy preferred Fiber mode */
typedef enum {
PHY_FIBER_100FX = 0,
/**< 100FX fiber mode */
PHY_FIBER_1000BX = 1,
/**< 1000BX fiber mode */
PHY_FIBER_10G_R = 2,
} fal_port_fiber_mode_t;
/** Phy reset status */
typedef enum {
PHY_RESET_DONE = 0,
/**< Phy reset done */
PHY_RESET_BUSY = 1
/**< Phy still in reset process */
} fal_port_reset_status_t;
/** Phy auto-negotiation status */
typedef enum {
PHY_AUTO_NEG_STATUS_BUSY = 0,
/**< Phy still in auto-negotiation process */
PHY_AUTO_NEG_STATUS_DONE = 1
/**< Phy auto-negotiation done */
} fal_port_auto_neg_status_t;
/** Phy interface mode */
typedef enum {
PHY_PSGMII_BASET = 0,
/**< PSGMII mode */
PHY_PSGMII_BX1000 = 1,
/**< PSGMII BX1000 mode */
PHY_PSGMII_FX100 = 2,
/**< PSGMII FX100 mode */
PHY_PSGMII_AMDET = 3,
/**< PSGMII Auto mode */
PHY_SGMII_BASET = 4,
/**< SGMII mode */
PORT_QSGMII,
/**<QSGMII mode*/
PORT_SGMII_PLUS,
/**<PORT_SGMII_PLUS mode*/
PORT_USXGMII,
/**<PORT_USXGMII mode*/
PORT_10GBASE_R,
/**<PORT_10GBASE_R mode*/
PORT_RGMII_BASET,
/**< RGMII mode */
PORT_RGMII_BX1000,
/**< RGMII BX1000 mode */
PORT_RGMII_FX100,
/**< RGMII FX100 mode */
PORT_RGMII_AMDET,
/**< RGMII Auto mode */
PHY_PSGMII_FIBER,
/** <PHY_PSGMII_FIBER mode */
PORT_SGMII_FIBER,
/** <PORT SGMII_FIBER mode*/
PORT_INTERFACE_MODE_MAX = 0xFF
} fal_port_interface_mode_t;
/** Phy counter information */
typedef struct {
a_uint32_t RxGoodFrame;
a_uint32_t RxBadCRC;
a_uint32_t TxGoodFrame;
a_uint32_t TxBadCRC;
a_uint32_t SysRxGoodFrame;
a_uint32_t SysRxBadCRC;
a_uint32_t SysTxGoodFrame;
a_uint32_t SysTxBadCRC;
} fal_port_counter_info_t;
/*above is new add for malibu phy*/
/*qca808x_end*/
typedef struct {
a_bool_t enable;
a_uint32_t capability;
a_uint32_t lpi_sleep_timer; /* unit is us*/
a_uint32_t advertisement;
a_uint32_t lpi_tx_enable;
a_uint32_t eee_status;
a_uint32_t lpi_wakeup_timer; /* unit is us*/
a_uint32_t link_partner_advertisement;
} fal_port_eee_cfg_t;
enum
{
/*port contorl*/
FUNC_ADPT_PORT_LOCAL_LOOPBACK_GET = 0,
FUNC_ADPT_PORT_AUTONEG_RESTART,
FUNC_ADPT_PORT_DUPLEX_SET,
FUNC_ADPT_PORT_RXMAC_STATUS_GET,
FUNC_ADPT_PORT_CDT,
FUNC_ADPT_PORT_TXMAC_STATUS_SET,
FUNC_ADPT_PORT_COMBO_FIBER_MODE_SET,
FUNC_ADPT_PORT_COMBO_MEDIUM_STATUS_GET,
FUNC_ADPT_PORT_MAGIC_FRAME_MAC_SET,
FUNC_ADPT_PORT_POWERSAVE_SET,
FUNC_ADPT_PORT_HIBERNATE_SET,
FUNC_ADPT_PORT_8023AZ_GET,
FUNC_ADPT_PORT_RXFC_STATUS_GET,
FUNC_ADPT_PORT_TXFC_STATUS_GET,
FUNC_ADPT_PORT_REMOTE_LOOPBACK_SET,
FUNC_ADPT_PORT_FLOWCTRL_SET,
FUNC_ADPT_PORT_MRU_SET,
FUNC_ADPT_PORT_AUTONEG_STATUS_GET,
FUNC_ADPT_PORT_TXMAC_STATUS_GET,
FUNC_ADPT_PORT_MDIX_GET,
FUNC_ADPT_PORTS_LINK_STATUS_GET,
FUNC_ADPT_PORT_MAC_LOOPBACK_SET,
FUNC_ADPT_PORT_PHY_ID_GET,
FUNC_ADPT_PORT_MRU_GET,
FUNC_ADPT_PORT_POWER_ON,
FUNC_ADPT_PORT_SPEED_SET,
FUNC_ADPT_PORT_INTERFACE_MODE_GET,
FUNC_ADPT_PORT_DUPLEX_GET,
FUNC_ADPT_PORT_AUTONEG_ADV_GET,
FUNC_ADPT_PORT_MDIX_STATUS_GET,
FUNC_ADPT_PORT_MTU_SET,
FUNC_ADPT_PORT_LINK_STATUS_GET,
FUNC_ADPT_PORT_8023AZ_SET,
FUNC_ADPT_PORT_POWERSAVE_GET,
FUNC_ADPT_PORT_COMBO_PREFER_MEDIUM_GET,
FUNC_ADPT_PORT_COMBO_PREFER_MEDIUM_SET,
FUNC_ADPT_PORT_POWER_OFF,
FUNC_ADPT_PORT_TXFC_STATUS_SET,
FUNC_ADPT_PORT_COUNTER_SET,
FUNC_ADPT_PORT_COMBO_FIBER_MODE_GET,
FUNC_ADPT_PORT_LOCAL_LOOPBACK_SET,
FUNC_ADPT_PORT_WOL_STATUS_SET,
FUNC_ADPT_PORT_MAGIC_FRAME_MAC_GET,
FUNC_ADPT_PORT_FLOWCTRL_GET,
FUNC_ADPT_PORT_RXMAC_STATUS_SET,
FUNC_ADPT_PORT_COUNTER_GET,
FUNC_ADPT_PORT_INTERFACE_MODE_SET,
FUNC_ADPT_PORT_MAC_LOOPBACK_GET,
FUNC_ADPT_PORT_HIBERNATE_GET,
FUNC_ADPT_PORT_AUTONEG_ADV_SET,
FUNC_ADPT_PORT_REMOTE_LOOPBACK_GET,
FUNC_ADPT_PORT_COUNTER_SHOW,
FUNC_ADPT_PORT_AUTONEG_ENABLE,
FUNC_ADPT_PORT_MTU_GET,
FUNC_ADPT_PORT_INTERFACE_MODE_STATUS_GET,
FUNC_ADPT_PORT_RESET,
FUNC_ADPT_PORT_RXFC_STATUS_SET,
FUNC_ADPT_PORT_SPEED_GET,
FUNC_ADPT_PORT_MDIX_SET,
FUNC_ADPT_PORT_WOL_STATUS_GET,
FUNC_ADPT_PORT_MAX_FRAME_SIZE_SET,
FUNC_ADPT_PORT_MAX_FRAME_SIZE_GET,
FUNC_ADPT_PORT_SOURCE_FILTER_GET,
FUNC_ADPT_PORT_SOURCE_FILTER_SET,
FUNC_ADPT_PORT_INTERFACE_MODE_APPLY,
FUNC_ADPT_PORT_INTERFACE_3AZ_STATUS_SET,
FUNC_ADPT_PORT_INTERFACE_3AZ_STATUS_GET,
FUNC_ADPT_PORT_PROMISC_MODE_SET,
FUNC_ADPT_PORT_PROMISC_MODE_GET,
FUNC_ADPT_PORT_FLOWCTRL_FORCEMODE_SET,
FUNC_ADPT_PORT_FLOWCTRL_FORCEMODE_GET,
};
typedef struct {
a_uint32_t mtu_size;
fal_fwd_cmd_t action;
} fal_mtu_ctrl_t;
typedef struct {
a_uint32_t mru_size;
fal_fwd_cmd_t action;
} fal_mru_ctrl_t;
typedef enum {
FAL_SRC_FILTER_MODE_VP = 0,
FAL_SRC_FILTER_MODE_PHYSICAL = 1,
} fal_src_filter_mode_t;
typedef struct {
a_bool_t src_filter_enable;
fal_src_filter_mode_t src_filter_mode;
} fal_src_filter_config_t;
typedef struct {
a_bool_t enable;
a_bool_t crc_stripped;
a_uint32_t loopback_rate; /*Mpps*/
}fal_loopback_config_t;
sw_error_t
fal_port_max_frame_size_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t max_frame);
sw_error_t
fal_port_max_frame_size_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t *max_frame);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_mtu_set(a_uint32_t dev_id, fal_port_t port_id,
fal_mtu_ctrl_t *ctrl);
sw_error_t
fal_port_mtu_get(a_uint32_t dev_id, fal_port_t port_id,
fal_mtu_ctrl_t *ctrl);
sw_error_t
fal_port_mru_set(a_uint32_t dev_id, fal_port_t port_id,
fal_mru_ctrl_t *ctrl);
sw_error_t
fal_port_mru_get(a_uint32_t dev_id, fal_port_t port_id,
fal_mru_ctrl_t *ctrl);
#endif
/*qca808x_start*/
sw_error_t
fal_port_duplex_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_duplex_t duplex);
sw_error_t
fal_port_duplex_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_duplex_t * pduplex);
sw_error_t
fal_port_speed_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_speed_t speed);
sw_error_t
fal_port_speed_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_speed_t * pspeed);
sw_error_t
fal_port_autoneg_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * status);
sw_error_t
fal_port_autoneg_enable(a_uint32_t dev_id, fal_port_t port_id);
sw_error_t
fal_port_autoneg_restart(a_uint32_t dev_id, fal_port_t port_id);
sw_error_t
fal_port_autoneg_adv_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t autoadv);
sw_error_t
fal_port_autoneg_adv_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t * autoadv);
/*qca808x_end*/
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_hdr_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_hdr_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_flowctrl_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_flowctrl_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_mac_loopback_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_mac_loopback_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_flowctrl_forcemode_set(a_uint32_t dev_id,
fal_port_t port_id,
a_bool_t enable);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_flowctrl_forcemode_get(a_uint32_t dev_id,
fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_rxhdr_mode_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_header_mode_t mode);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_rxhdr_mode_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_header_mode_t * mode);
#endif
sw_error_t
fal_port_txhdr_mode_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_header_mode_t mode);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_txhdr_mode_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_header_mode_t * mode);
#endif
sw_error_t
fal_header_type_set(a_uint32_t dev_id, a_bool_t enable,
a_uint32_t type);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_header_type_get(a_uint32_t dev_id, a_bool_t * enable,
a_uint32_t * type);
#endif
sw_error_t
fal_port_txmac_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_txmac_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_rxmac_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_rxmac_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_txfc_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_txfc_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_rxfc_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_rxfc_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_bp_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_bp_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
#endif
sw_error_t
fal_port_link_forcemode_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_link_forcemode_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
/*qca808x_start*/
sw_error_t
fal_port_link_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * status);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_ports_link_status_get(a_uint32_t dev_id, a_uint32_t * status);
/*qca808x_end*/
sw_error_t
fal_port_congestion_drop_set(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t queue_id, a_bool_t enable);
sw_error_t
fal_port_congestion_drop_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t queue_id,
a_bool_t * enable);
sw_error_t
fal_ring_flow_ctrl_thres_set(a_uint32_t dev_id, a_uint32_t ring_id,
a_uint8_t on_thres,
a_uint8_t off_thres);
sw_error_t
fal_ring_flow_ctrl_thres_get(a_uint32_t dev_id, a_uint32_t ring_id,
a_uint8_t * on_thres,
a_uint8_t * off_thres);
/*qca808x_start*/
sw_error_t
fal_port_powersave_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_powersave_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_hibernate_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_hibernate_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_cdt(a_uint32_t dev_id, fal_port_t port_id,
a_uint32_t mdi_pair, fal_cable_status_t * cable_status,
a_uint32_t * cable_len);
sw_error_t
fal_port_8023az_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_8023az_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_mdix_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_mdix_mode_t mode);
sw_error_t
fal_port_mdix_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_mdix_mode_t * mode);
sw_error_t
fal_port_mdix_status_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_mdix_status_t * mode);
/*qca808x_end*/
sw_error_t
fal_port_combo_prefer_medium_set(a_uint32_t dev_id,
a_uint32_t port_id,
fal_port_medium_t medium);
sw_error_t
fal_port_combo_prefer_medium_get(a_uint32_t dev_id,
a_uint32_t port_id,
fal_port_medium_t *
medium);
sw_error_t
fal_port_combo_medium_status_get(a_uint32_t dev_id,
a_uint32_t port_id,
fal_port_medium_t *
medium);
sw_error_t
fal_port_combo_fiber_mode_set(a_uint32_t dev_id,
a_uint32_t port_id,
fal_port_fiber_mode_t mode);
sw_error_t
fal_port_combo_fiber_mode_get(a_uint32_t dev_id,
a_uint32_t port_id,
fal_port_fiber_mode_t * mode);
/*qca808x_start*/
sw_error_t
fal_port_local_loopback_set(a_uint32_t dev_id,
fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_local_loopback_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_remote_loopback_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_remote_loopback_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_reset(a_uint32_t dev_id, fal_port_t port_id);
#endif
sw_error_t
fal_port_power_off(a_uint32_t dev_id, fal_port_t port_id);
sw_error_t
fal_port_power_on(a_uint32_t dev_id, fal_port_t port_id);
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_magic_frame_mac_set(a_uint32_t dev_id, fal_port_t port_id,
fal_mac_addr_t * mac);
sw_error_t
fal_port_magic_frame_mac_get(a_uint32_t dev_id, fal_port_t port_id,
fal_mac_addr_t * mac);
sw_error_t
fal_port_phy_id_get(a_uint32_t dev_id, fal_port_t port_id,
a_uint16_t * org_id, a_uint16_t * rev_id);
sw_error_t
fal_port_wol_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
/*all indirect */
sw_error_t
fal_port_wol_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
/*qca808x_end*/
sw_error_t
fal_port_interface_mode_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_interface_mode_t mode);
sw_error_t
fal_port_interface_mode_apply(a_uint32_t dev_id);
sw_error_t
fal_port_interface_mode_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_interface_mode_t * mode);
/*qca808x_start*/
sw_error_t
fal_port_interface_mode_status_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_interface_mode_t * mode);
sw_error_t
fal_debug_phycounter_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_debug_phycounter_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_debug_phycounter_show(a_uint32_t dev_id, fal_port_t port_id,
fal_port_counter_info_t * port_counter_info);
#endif
/*qca808x_end*/
#ifndef IN_PORTCONTROL_MINI
sw_error_t
fal_port_source_filter_status_get(a_uint32_t dev_id,
fal_port_t port_id, a_bool_t * enable);
sw_error_t
fal_port_source_filter_enable(a_uint32_t dev_id,
fal_port_t port_id, a_bool_t enable);
sw_error_t
fal_port_source_filter_config_get(a_uint32_t dev_id,
fal_port_t port_id, fal_src_filter_config_t * src_filter_config);
sw_error_t
fal_port_source_filter_config_set(a_uint32_t dev_id,
fal_port_t port_id, fal_src_filter_config_t *src_filter_config);
sw_error_t
fal_port_interface_3az_status_set(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t enable);
sw_error_t
fal_port_interface_3az_status_get(a_uint32_t dev_id, fal_port_t port_id,
a_bool_t * enable);
sw_error_t
fal_port_promisc_mode_get(a_uint32_t dev_id,fal_port_t port_id,a_bool_t *enable);
#endif
sw_error_t
fal_port_promisc_mode_set(a_uint32_t dev_id,fal_port_t port_id,a_bool_t enable);
sw_error_t
fal_port_interface_eee_cfg_set(a_uint32_t dev_id, fal_port_t port_id,
fal_port_eee_cfg_t *port_eee_cfg);
sw_error_t
fal_port_interface_eee_cfg_get(a_uint32_t dev_id, fal_port_t port_id,
fal_port_eee_cfg_t *port_eee_cfg);
sw_error_t
fal_switch_port_loopback_set(a_uint32_t dev_id, fal_port_t port_id,
fal_loopback_config_t *loopback_cfg);
sw_error_t
fal_switch_port_loopback_get(a_uint32_t dev_id, fal_port_t port_id,
fal_loopback_config_t *loopback_cfg);
/*qca808x_start*/
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _FAL_PORTCTRL_H_ */
/**
* @}
*/
/*qca808x_end*/