blob: 47228343b4b421f3bc426a7bb141716e52f7fe18 [file] [log] [blame]
/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates
This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms. Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.
********************************************************************************
Marvell Commercial License Option
If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.
********************************************************************************
Marvell GPL License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED. The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option
If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Marvell nor the names of its contributors may be
used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
#ifndef __INCmvCtrlEthCompLibh
#define __INCmvCtrlEthCompLibh
#include "ctrlEnv/mvCtrlEnvSpec.h"
#include "mvSysEthConfig.h"
/* QSGMII Control 0/1 Register. */
#define MV_ETHCOMP_QSGMII_CONTROL_REG(id) (MV_ETH_COMPLEX_BASE + (id * 4))
/* QSGMII Control 1 Register. */
#define QSGCTRL_INV_SIG_DET_OFFSET 25
#define QSGCTRL_INV_SIG_DET_MASK (0x1 << QSGCTRL_INV_SIG_DET_OFFSET)
#define QSGCTRL_RESETN_OFFSET 31
#define QSGCTRL_RESETN_MASK (0x1 << QSGCTRL_RESETN_OFFSET)
#define MV_ETHCOMP_QSGMII_STATUS_REG (MV_ETH_COMPLEX_BASE + 0x8)
#define MV_ETHCOMP_CTRL_REG(id) (MV_ETH_COMPLEX_BASE + 0x10 + (id * 4))
/* Ethernet Complex Control 0 */
#define ETHCC_LPPHYMODE_OFFSET 0
#define ETHCC_LPPHYMODE_MASK (0x3 << ETHCC_LPPHYMODE_OFFSET)
#define ETHCC_GBE_PHY_SMI_SRC_OFFSET 2
#define ETHCC_GBE_PHY_SMI_SRC_MASK (0x1 << ETHCC_GBE_PHY_SMI_SRC_OFFSET)
#define ETHCC_SW_PORT6_MPP_OFFSET 3
#define ETHCC_SW_PORT6_MPP_MASK (0x1 << ETHCC_SW_PORT6_MPP_OFFSET)
#define ETHCC_SW_PORT_0_SRC_OFFSET 4
#define ETHCC_SW_PORT_0_SRC_MASK (0x3 << ETHCC_SW_PORT_0_SRC_OFFSET)
#define ETHCC_SW_PORT_123_SRC_OFFSET 6
#define ETHCC_SW_PORT_123_SRC_MASK (0x1 << ETHCC_SW_PORT_123_SRC_OFFSET)
#define ETHCC_SW_PORT_5_SRC_OFFSET 8
#define ETHCC_SW_PORT_5_SRC_MASK (0x3 << ETHCC_SW_PORT_5_SRC_OFFSET)
#define ETHCC_GPORT_0_SRC_OFFSET 10
#define ETHCC_GPORT_0_SRC_MASK (0x3 << ETHCC_GPORT_0_SRC_OFFSET)
#define ETHCC_GPORT_1_SRC_OFFSET 12
#define ETHCC_GPORT_1_SRC_MASK (0x3 << ETHCC_GPORT_1_SRC_OFFSET)
#define ETHCC_BGE_PHY_SRC_OFFSET 14
#define ETHCC_BGE_PHY_SRC_MASK (0x3 << ETHCC_BGE_PHY_SRC_OFFSET)
#define ETHCC_SW_PORT5_MPP_OFFSET 16
#define ETHCC_SW_PORT5_MPP_MASK (0x1 << ETHCC_SW_PORT5_MPP_OFFSET)
#define ETHCC_SW_FI_125_CLK_OFFSET 17
#define ETHCC_SW_FI_125_CLK_MASK (0x3 << ETHCC_SW_FI_125_CLK_OFFSET)
#define ETHCC_GBE_PHY_SMI_ADD_OFFSET 19
#define ETHCC_GBE_PHY_SMI_ADD_MASK (0x1F << ETHCC_GBE_PHY_SMI_ADD_OFFSET)
#define ETHCC_SW_P5_INBAND_SRC_OFFSET 24
#define ETHCC_SW_P5_INBAND_SRC_MASK (0x1 << ETHCC_SW_P5_INBAND_SRC_OFFSET)
#define ETHCC_RFU2SW_P5_INBAND_OFFSET 25
#define ETHCC_RFU2SW_P5_INBAND_MASK (0xF << ETHCC_RFU2SW_P5_INBAND_OFFSET)
#define ETHCC_LP_SERDES_DATA_SWAP_TX_OFFSET 29
#define ETHCC_LP_SERDES_DATA_SWAP_TX_MASK (0x1 << ETHCC_LP_SERDES_DATA_SWAP_TX_OFFSET)
#define ETHCC_LP_SERDES_DATA_SWAP_RX_OFFSET 30
#define ETHCC_LP_SERDES_DATA_SWAP_RX_MASK (0x1 << ETHCC_LP_SERDES_DATA_SWAP_RX_OFFSET)
#define ETHCC_SWP5_GBEPHY_TC_CLK_OFFSET 31
#define ETHCC_SWP5_GBEPHY_TC_CLK_MASK (0x1 << ETHCC_SWP5_GBEPHY_TC_CLK_OFFSET)
/* Ethernet Complex Control 1 */
#define ETHCC_SWTCH_RESET_OFFSET 0
#define ETHCC_SWTCH_RESET_MASK (0x1 << ETHCC_SWTCH_RESET_OFFSET)
#define ETHCC_SWTCH_MODE_OFFSET 8
#define ETHCC_SWTCH_MODE_MASK (0xF << ETHCC_SWTCH_MODE_OFFSET)
#define ETHCC_SWTCH_CHIP_TYPE_OFFSET 12
#define ETHCC_SWTCH_CHIP_TYPE_MASK (0xF << ETHCC_SWTCH_CHIP_TYPE_OFFSET)
#define ETHCC_SWTCH_P5_MODE_OFFSET 16
#define ETHCC_SWTCH_P5_MODE_MASK (0x7 << ETHCC_SWTCH_P5_MODE_OFFSET)
#define ETHCC_SWTCH_P5_HD_OFFSET 19
#define ETHCC_SWTCH_P5_HD_MASK (0x1 << ETHCC_SWTCH_P5_HD_OFFSET)
#define ETHCC_SWTCH_P6_MODE_OFFSET 20
#define ETHCC_SWTCH_P6_MODE_MASK (0x7 << ETHCC_SWTCH_P6_MODE_OFFSET)
#define ETHCC_SWTCH_P6_HD_OFFSET 23
#define ETHCC_SWTCH_P6_HD_MASK (0x1 << ETHCC_SWTCH_P6_HD_OFFSET)
#define ETHCC_SWTCH_PTP_EXT_CLK_OFFSET 24
#define ETHCC_SWTCH_PTP_EXT_CLK_MASK (0x1 << ETHCC_SWTCH_PTP_EXT_CLK_OFFSET)
#define ETHCC_SWTCH_ADDR_OFFSET 25
#define ETHCC_SWTCH_ADDR_MASK (0x1F << ETHCC_SWTCH_ADDR_OFFSET)
#define ETHCC_SWTCH_JUMBO_EN_OFFSET 30
#define ETHCC_SWTCH_JUMBO_EN_MASK (0x1 << ETHCC_SWTCH_JUMBO_EN_OFFSET)
#define ETHCC_SWTCH_DIS_AUTO_MED_OFFSET 31
#define ETHCC_SWTCH_DIS_AUTO_MED_MASK (0x1 << ETHCC_SWTCH_DIS_AUTO_MED_OFFSET)
/* Ethernet Complex Control 2 */
#define ETHCC_SW_USE_EEPROM_OFFSET 8
#define ETHCC_SW_USE_EEPROM_MASK (0x1 << ETHCC_SW_USE_EEPROM_OFFSET)
#define ETHCC_SW_FD_FLOW_DIS_OFFSET 9
#define ETHCC_SW_FD_FLOW_DIS_MASK (0x1 << ETHCC_SW_FD_FLOW_DIS_OFFSET)
#define ETHCC_SW_HD_FLOW_DIS_OFFSET 10
#define ETHCC_SW_HD_FLOW_DIS_MASK (0x1 << ETHCC_SW_HD_FLOW_DIS_OFFSET)
#define ETHCC_SW_100FX_MODE_OFFSET 11
#define ETHCC_SW_100FX_MODE_MASK (0x7F << ETHCC_SW_100FX_MODE_OFFSET)
#define ETHCC_SW_PRT_STATE_OFFSET 18
#define ETHCC_SW_PRT_STATE_MASK (0x7F << ETHCC_SW_PRT_STATE_OFFSET)
#define ETHCC_SW_CLK_125_OFFSET 25
#define ETHCC_SW_CLK_125_MASK (0x1 << ETHCC_SW_CLK_125_OFFSET)
/* Ethernet Complex Control 3 */
#define ETHCC_SW_PX_FRC_SPD_OFFSET(prt) (prt * 4)
#define ETHCC_SW_PX_FRC_SPD_MASK(prt) (0x1 << ETHCC_SW_PX_FRC_SPD_OFFSET(prt))
#define ETHCC_SW_PX_FRC_GMII_SPD_OFFSET(prt) ((prt * 4) + 1)
#define ETHCC_SW_PX_FRC_GMII_SPD_MASK(prt) (0x1 << ETHCC_SW_PX_FRC_GMII_SPD_OFFSET(prt))
#define ETHCC_SW_PX_FRC_MII_SPD_OFFSET(prt) ((prt * 4) + 2)
#define ETHCC_SW_PX_FRC_MII_SPD_MASK(prt) (0x1 << ETHCC_SW_PX_FRC_MII_SPD_OFFSET(prt))
#define ETHCC_FEPHY_TX_DATA_SMPL_OFFSET 26
#define ETHCC_FEPHY_TX_DATA_SMPL_MASK (0x1 << ETHCC_FEPHY_TX_DATA_SMPL_OFFSET)
#define ETHCC_GEPHY_TX_DATA_SMPL_OFFSET 28
#define ETHCC_GEPHY_TX_DATA_SMPL_MASK (0x3 << ETHCC_GEPHY_TX_DATA_SMPL_OFFSET)
/* PCSn Control Register. */
#define MV_ETHCOMP_PCS_CTRL_REG(id) (MV_ETH_COMPLEX_BASE + 0x30 + (id * 4))
#define PCSCTRL_PORT_ANEG_AN_OFFSET 1
#define PCSCTRL_PORT_RESTART_AN_OFFSET 2
#define PCSCTRL_PORT_ADV_PAUSE_OFFSET 3
#define PCSCTRL_PORT_ADV_ASM_PAUSE_OFFSET 10
#define PCSCTRL_PORT_ANEG_DUPLEX_AN_OFFSET 17
#define PCSCTRL_PORT_FC_AN_OFFSET 19
#define PCSCTRL_PORT_SPEED_AN_OFFSET 21
#define PCSCTRL_PORT_ACTIVE_OFFSET 25
#define PCSCTRL_PORT_ACTIVE_MASK (0x1 << PCSCTRL_PORT_ACTIVE_OFFSET)
#define PCSCTRL_PORT_EN_OFFSET 26
#define PCSCTRL_PORT_EN_MASK (0x1 << PCSCTRL_PORT_EN_OFFSET)
#define PCSCTRL_PORT_RESET_OFFSET 27
#define PCSCTRL_PORT_RESET_MASK (0x1 << PCSCTRL_PORT_RESET_OFFSET)
#define MV_ETHCOMP_PCS_STATUS_REG(id) (MV_ETH_COMPLEX_BASE + 0x40 + (id * 4))
#define MV_ETHCOMP_INT_MAIN_CAUSE_REG (MV_ETH_COMPLEX_BASE + 0x50)
#define MV_ETHCOMP_INT_MAIN_MASK_REG (MV_ETH_COMPLEX_BASE + 0x54)
#define MV_ETHCOMP_FE_PHY_CTRL_REG (MV_ETH_COMPLEX_BASE + 0x80)
#define MV_ETHCOMP_SWITCH_INT_OFFSET 0
#define MV_ETHCOMP_SWITCH_INT_MASK (0x1 << MV_ETHCOMP_SWITCH_INT_OFFSET)
#define MV_ETHCOMP_PCS0_LINK_INT_OFFSET 1
#define MV_ETHCOMP_PCS0_LINK_INT_MASK (0x1 << MV_ETHCOMP_PCS0_LINK_INT_OFFSET)
#define MV_ETHCOMP_PCS1_LINK_INT_OFFSET 4
#define MV_ETHCOMP_PCS1_LINK_INT_MASK (0x1 << MV_ETHCOMP_PCS1_LINK_INT_OFFSET)
#define MV_ETHCOMP_PCS2_LINK_INT_OFFSET 7
#define MV_ETHCOMP_PCS2_LINK_INT_MASK (0x1 << MV_ETHCOMP_PCS2_LINK_INT_OFFSET)
#define MV_ETHCOMP_PCS3_LINK_INT_OFFSET 10
#define MV_ETHCOMP_PCS3_LINK_INT_MASK (0x1 << MV_ETHCOMP_PCS3_LINK_INT_OFFSET)
#define MV_ETHCOMP_GEPHY_INT_OFFSET 13
#define MV_ETHCOMP_GEPHY_INT_MASK (0x1 << MV_ETHCOMP_GEPHY_INT_OFFSET)
/* FE PHY Control Register. */
#define MV_ETHCOMP_FE_PHY_STATUS_REG (MV_ETH_COMPLEX_BASE + 0x84)
#define ETHCC_FE_PHY_AN_MODE_OFFSET(prt) ((prt + 1) * 3)
#define ETHCC_FE_PHY_AN_MODE_MASK(prt) (0xF << ETHCC_FE_PHY_AN_MODE_OFFSET(prt))
#define ETHCC_FE_PHY_XOVER_EN_OFFSET 14
#define ETHCC_FE_PHY_XOVER_EN_MASK (1 << ETHCC_FE_PHY_XOVER_EN_OFFSET)
#define ETHCC_FE_PHY_RESET_OFFSET 15
#define ETHCC_FE_PHY_RESET_MASK (0x1 << ETHCC_FE_PHY_RESET_OFFSET)
#define ETHCC_FE_PHY_EXT_PWR_DOWM_OFFSET 16
#define ETHCC_FE_PHY_EXT_PWR_DOWM_MASK (0x7 << ETHCC_FE_PHY_EXT_PWR_DOWM_OFFSET)
#define MV_ETHCOMP_LP_SERDES_CTRL_REG (MV_ETH_COMPLEX_BASE + 0x94)
/* GbE PHY Control Register. */
#define MV_ETHCOMP_GE_PHY_CTRL_REG (MV_ETH_COMPLEX_BASE + 0xA0)
#define PHYCTRL_ENRGY_DETECT_OFFSET 0x0
#define PHYCTRL_ENRGY_DETECT_MASK (0x1 << PHYCTRL_ENRGY_DETECT_OFFSET)
#define PHYCTRL_CFG_ANEG_ADV_OFFSET 1
#define PHYCTRL_CFG_ANEG_ADV_MASK (0x3 << PHYCTRL_CFG_ANEG_ADV_OFFSET)
#define PHYCTRL_CONF_MSTR_SLAVE_OFFSET 3
#define PHYCTRL_CONF_MSTR_SLAVE_MASK (0x1 << PHYCTRL_CONF_MSTR_SLAVE_OFFSET)
#define PHYCTRL_XOVER_EN_OFFSET 4
#define PHYCTRL_XOVER_EN_MASK (0x1 << PHYCTRL_XOVER_EN_OFFSET)
#define PHYCTRL_PHY_PWR_DOWN_OFFSET 5
#define PHYCTRL_PHY_PWR_DOWN_MASK (0x1 << PHYCTRL_PHY_PWR_DOWN_OFFSET)
#define PHYCTRL_PG_PORT_NUM_OFFSET 6
#define PHYCTRL_PG_PORT_NUM_MASK (0x7 << PHYCTRL_PG_PORT_NUM_OFFSET)
#define PHYCTRL_CONF_ADV_EEE_OFFSET 9
#define PHYCTRL_CONF_ADV_EEE_MASK (0x1 << PHYCTRL_CONF_ADV_EEE_OFFSET)
#define PHYCTRL_CONF_NORMAL_MODE_OFFSET 10
#define PHYCTRL_CONF_NORMAL_MODE_MASK (0x1 << PHYCTRL_CONF_NORMAL_MODE_OFFSET)
#define PHYCTRL_THERM_SENS_EN_OFFSET 11
#define PHYCTRL_THERM_SENS_EN_MASK (0x1 << PHYCTRL_THERM_SENS_EN_OFFSET)
#define PHYCTRL_RESET_OFFSET 14
#define PHYCTRL_RESET_MASK (0x1 << PHYCTRL_RESET_OFFSET)
#define PHYCTRL_DPLL_RESET_OFFSET 16
#define PHYCTRL_DPLL_RESET_MASK (0x1 << PHYCTRL_DPLL_RESET_OFFSET)
#define PHYCTRL_CLCK125_EN_OFFSET 17
#define PHYCTRL_CLCK125_EN_MASK (0x1 << PHYCTRL_CLCK125_EN_OFFSET)
#define PHYCTRL_CLCK50_EN_OFFSET 18
#define PHYCTRL_CLCK50_EN_MASK (0x1 << PHYCTRL_CLCK50_EN_OFFSET)
#define PHYCTRL_EXT_PWR_DOWN_SRC_OFFSET 25
#define PHYCTRL_EXT_PWR_DOWN_SRC_MASK (0x1 << PHYCTRL_EXT_PWR_DOWN_SRC_OFFSET)
#define MV_ETHCOMP_GE_PHY_CTRL1_REG (MV_ETH_COMPLEX_BASE + 0xA4)
#define PHYCTRL_PS_ENA_XC_A_OFFSET 12
#define PHYCTRL_PS_ENA_XC_A_MASK (0x3 << PHYCTRL_PS_ENA_XC_A_OFFSET)
#define MV_ETHCOMP_GE_PHY_STATUS_REG (MV_ETH_COMPLEX_BASE + 0xA8)
/* Serdes Configuration Register */
#define MV_ETHCOMP_SERDESCFG_REG (MV_ETH_ONLY_REGS_BASE + 0x4A0)
#define MV_SATACOMP_SERDESCFG_REG (MV_SATA_REGS_OFFSET + 0x2058)
#define SERDES_CFG_PU_PLL_OFFSET 0
#define SERDES_CFG_PU_PLL_MASK (0x1 << SERDES_CFG_PU_PLL_OFFSET)
#define SERDES_CFG_PU_RX_OFFSET 1
#define SERDES_CFG_PU_RX_MASK (0x1 << SERDES_CFG_PU_RX_OFFSET)
#define SERDES_CFG_PU_TX_OFFSET 2
#define SERDES_CFG_PU_TX_MASK (0x1 << SERDES_CFG_PU_TX_OFFSET)
#define SERDES_CFG_TX_IDLE_OFFSET 3
#define SERDES_CFG_TX_IDLE_MASK (0x1 << SERDES_CFG_TX_IDLE_OFFSET)
#define SERDES_CFG_RX_INIT_OFFSET 4
#define SERDES_CFG_RX_INIT_MASK (0x1 << SERDES_CFG_RX_INIT_OFFSET)
#define SERDES_CFG_PHY_GEN_TX_OFFSET 5
#define SERDES_CFG_PHY_GEN_TX_MASK (0xF << SERDES_CFG_PHY_GEN_TX_OFFSET)
#define SERDES_CFG_PHY_GEN_RX_OFFSET 9
#define SERDES_CFG_PHY_GEN_RX_MASK (0xF << SERDES_CFG_PHY_GEN_RX_OFFSET)
#define SERDES_CFG_DIG_TEST_EN_OFFSET 13
#define SERDES_CFG_DIG_TEST_EN_MASK (0x1 << SERDES_CFG_DIG_TEST_EN_OFFSET)
#define SERDES_CFG_IDDQ_OFFSET 14
#define SERDES_CFG_IDDQ_MASK (0x1 << SERDES_CFG_IDDQ_OFFSET)
/* MAC Configuration Register */
#define MV_MAC_SERIAL_CTRL1_REG (MV_ETH_ONLY_REGS_BASE + 0x44C)
#define MV_MAC_SERIAL_CTRL0_REG (MV_ETH_ONLY_REGS_BASE + 0x43C)
/* Serdes Status Register */
#define MV_ETHCOMP_SERDESSTS_REG (MV_ETH_ONLY_REGS_BASE + 0x4A4)
#define MV_SATACOMP_SERDESSTS_REG (MV_SATA_REGS_OFFSET + 0x205C)
void mvEthCompSkipInitSet(MV_BOOL skip);
MV_STATUS mvEthCompMac2SwitchConfig(MV_U32 ethCompCfg, MV_BOOL muxCfgOnly);
MV_STATUS mvEthCompSwitchReset(MV_U32 ethCompCfg);
MV_STATUS mvEthCompMac2RgmiiConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompMac1ToGePhyConfig(MV_U32 ethCompCfg, MV_U32 smiAddr);
MV_STATUS mvEthCompSwP45ToGePhyConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompSwP5ToRgmiiConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompSwTo3FePhyConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompSataConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompSwToQsgmiiPhyConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompMac0ToSgmiiConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthCompSwP1ToSgmiiConfig(MV_U32 ethCompCfg);
MV_STATUS mvEthernetComplexShutdownIf(MV_BOOL integSwitch, MV_BOOL gePhy, MV_BOOL fePhy);
MV_STATUS mvEthernetComplexInit(void);
MV_STATUS mvEthernetComplexChangeMode(MV_U32 oldCfg, MV_U32 newCfg);
#endif /* __INCmvCtrlEthCompLibh */