summaryrefslogtreecommitdiff
path: root/drivers/net/fsl_enetc.c
diff options
context:
space:
mode:
authorAlex Marginean <alexandru.marginean@nxp.com>2019-11-14 19:58:46 +0300
committerJoe Hershberger <joe.hershberger@ni.com>2019-12-09 18:47:43 +0300
commita931f78307300070e3a6cb95958f7dcc5fce3bb6 (patch)
tree0a1f32ef84a1737ce56bd5de30700e4670aca75e /drivers/net/fsl_enetc.c
parent307f8a6d1f034fc23aa7a42fa121f7fa011a33e4 (diff)
downloadu-boot-a931f78307300070e3a6cb95958f7dcc5fce3bb6.tar.xz
drivers: net: fsl_enetc: move PCS and PHY config to probe
This reduces the time needed to establish a link as we don't reset the link each time the interface is used. Our Link capabilities do not change at run-time so there is no need to re-apply PHY configuration each time. Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/fsl_enetc.c')
-rw-r--r--drivers/net/fsl_enetc.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c
index 64dc244da2..e86f3dddb5 100644
--- a/drivers/net/fsl_enetc.c
+++ b/drivers/net/fsl_enetc.c
@@ -190,12 +190,6 @@ static void enetc_start_pcs(struct udevice *dev)
case PHY_INTERFACE_MODE_SGMII_2500:
enetc_init_sgmii(dev);
break;
- case PHY_INTERFACE_MODE_RGMII:
- case PHY_INTERFACE_MODE_RGMII_ID:
- case PHY_INTERFACE_MODE_RGMII_RXID:
- case PHY_INTERFACE_MODE_RGMII_TXID:
- enetc_init_rgmii(dev);
- break;
case PHY_INTERFACE_MODE_XGMII:
case PHY_INTERFACE_MODE_USXGMII:
case PHY_INTERFACE_MODE_XFI:
@@ -258,6 +252,9 @@ static int enetc_probe(struct udevice *dev)
dm_pci_clrset_config16(dev, PCI_COMMAND, 0, PCI_COMMAND_MEMORY);
+ enetc_start_pcs(dev);
+ enetc_config_phy(dev);
+
return 0;
}
@@ -433,8 +430,12 @@ static int enetc_start(struct udevice *dev)
enetc_setup_tx_bdr(dev);
enetc_setup_rx_bdr(dev);
- enetc_start_pcs(dev);
- enetc_config_phy(dev);
+ if (priv->if_type == PHY_INTERFACE_MODE_RGMII ||
+ priv->if_type == PHY_INTERFACE_MODE_RGMII_ID ||
+ priv->if_type == PHY_INTERFACE_MODE_RGMII_RXID ||
+ priv->if_type == PHY_INTERFACE_MODE_RGMII_TXID)
+ enetc_init_rgmii(dev);
+
if (priv->phy)
phy_startup(priv->phy);