drivers: net: fsl_enetc: move PCS and PHY config to probe
authorAlex Marginean <alexandru.marginean@nxp.com>
Thu, 14 Nov 2019 16:58:46 +0000 (18:58 +0200)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 9 Dec 2019 15:47:43 +0000 (09:47 -0600)
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>
drivers/net/fsl_enetc.c

index 64dc244da2701ef43fa0c8701a07433ab14c85c5..e86f3dddb55084c8f5403ceab455f7fcdbcd75df 100644 (file)
@@ -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);