summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/freescale/fman
diff options
context:
space:
mode:
authorMandy Lavi <mandy.lavi@freescale.com>2014-11-10 16:57:36 (GMT)
committerHonghua Yin <Hong-Hua.Yin@freescale.com>2015-03-17 07:05:31 (GMT)
commit2462b796f59d627774e8dc796bb5aad26652c12e (patch)
tree3d72f1ec8383e0dbfe50fe127a0635c6ab4e82af /drivers/net/ethernet/freescale/fman
parent71702d053d60b5d53931f7d8cd62e1a9e37c7939 (diff)
downloadlinux-fsl-qoriq-2462b796f59d627774e8dc796bb5aad26652c12e.tar.xz
fmd: disable auto-neg if ports is SGMII2.5G
In order to do so it was also required to introduce a new if type for SGMII2.5G Change-Id: Iddbe223d8b716c3ed348c7a8a53bee0c037f04f4 Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com> Reviewed-on: http://git.am.freescale.net:8181/23474 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Reviewed-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman')
-rw-r--r--drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c2
-rw-r--r--drivers/net/ethernet/freescale/fman/inc/enet_ext.h2
-rw-r--r--drivers/net/ethernet/freescale/fman/inc/flib/fsl_enet.h1
3 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c
index 9566521..73c7769 100644
--- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c
+++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c
@@ -93,6 +93,8 @@ static void SetupSgmiiInternalPhy(t_Memac *p_Memac, uint8_t phyAddr)
/* SGMII mode + AN enable */
tmpReg16 = PHY_SGMII_IF_MODE_AN | PHY_SGMII_IF_MODE_SGMII;
+ if ((p_Memac->enetMode) == e_ENET_MODE_SGMII_2500)
+ tmpReg16 = PHY_SGMII_CR_PHY_RESET | PHY_SGMII_IF_MODE_SGMII;
MEMAC_MII_WritePhyReg(p_Memac, phyAddr, 0x14, tmpReg16);
/* Device ability according to SGMII specification */
diff --git a/drivers/net/ethernet/freescale/fman/inc/enet_ext.h b/drivers/net/ethernet/freescale/fman/inc/enet_ext.h
index c6b9071..ef3bee5 100644
--- a/drivers/net/ethernet/freescale/fman/inc/enet_ext.h
+++ b/drivers/net/ethernet/freescale/fman/inc/enet_ext.h
@@ -104,6 +104,7 @@ typedef enum e_EnetSpeed
e_ENET_SPEED_10 = E_ENET_SPEED_10, /**< 10 Mbps */
e_ENET_SPEED_100 = E_ENET_SPEED_100, /**< 100 Mbps */
e_ENET_SPEED_1000 = E_ENET_SPEED_1000, /**< 1000 Mbps = 1 Gbps */
+ e_ENET_SPEED_2500 = E_ENET_SPEED_2500, /**< 2500 Mbps = 2.5 Gbps */
e_ENET_SPEED_10000 = E_ENET_SPEED_10000 /**< 10000 Mbps = 10 Gbps */
} e_EnetSpeed;
@@ -134,6 +135,7 @@ typedef enum e_EnetMode
e_ENET_MODE_SGMII_1000 = (e_ENET_IF_SGMII | e_ENET_SPEED_1000),
/**< 1000 Mbps SGMII with auto-negotiation between MAC and
SGMII phy according to Cisco SGMII specification */
+ e_ENET_MODE_SGMII_2500 = (e_ENET_IF_SGMII | e_ENET_SPEED_2500),
e_ENET_MODE_SGMII_BASEX_10 = (ENET_IF_SGMII_BASEX | e_ENET_IF_SGMII | e_ENET_SPEED_10),
/**< 10 Mbps SGMII with 1000BaseX auto-negotiation between
MAC and SGMII phy or backplane */
diff --git a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_enet.h b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_enet.h
index dde6a4e..caa87fc 100644
--- a/drivers/net/ethernet/freescale/fman/inc/flib/fsl_enet.h
+++ b/drivers/net/ethernet/freescale/fman/inc/flib/fsl_enet.h
@@ -58,6 +58,7 @@ enum enet_speed {
E_ENET_SPEED_10 = 10, /**< 10 Mbps */
E_ENET_SPEED_100 = 100, /**< 100 Mbps */
E_ENET_SPEED_1000 = 1000, /**< 1000 Mbps = 1 Gbps */
+ E_ENET_SPEED_2500 = 2500, /**< 2500 Mbps = 2.5 Gbps */
E_ENET_SPEED_10000 = 10000 /**< 10000 Mbps = 10 Gbps */
};