summaryrefslogtreecommitdiff
path: root/target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch')
-rw-r--r--target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch63
1 files changed, 63 insertions, 0 deletions
diff --git a/target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch b/target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch
new file mode 100644
index 0000000..08dafdd
--- /dev/null
+++ b/target/linux/layerscape/patches-4.4/7068-dpaa_ethernet-fix-link-state-detect-for-10G-interfac.patch
@@ -0,0 +1,63 @@
+From f77f25498902f84d53a64a6397db2fa4b0d0dd4b Mon Sep 17 00:00:00 2001
+From: Shaohui Xie <Shaohui.Xie@nxp.com>
+Date: Thu, 31 Mar 2016 10:53:06 +0800
+Subject: [PATCH 68/70] dpaa_ethernet: fix link state detect for 10G interface
+
+There are drivers to support 10G PHYs with copper interface, so we
+change binding between MAC and 10G PHY to use phy_state_machine to
+detect link state.
+
+Signed-off-by: Shaohui Xie <Shaohui.Xie@nxp.com>
+---
+ drivers/net/ethernet/freescale/sdk_dpaa/mac-api.c | 20 ++++++++------------
+ 1 file changed, 8 insertions(+), 12 deletions(-)
+
+--- a/drivers/net/ethernet/freescale/sdk_dpaa/mac-api.c
++++ b/drivers/net/ethernet/freescale/sdk_dpaa/mac-api.c
+@@ -279,20 +279,15 @@ static int __cold start(struct mac_devic
+
+ _errno = fm_mac_enable(mac_dev->get_mac_handle(mac_dev));
+
+- if (!_errno && phy_dev) {
+- if (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000)
+- phy_start(phy_dev);
+- else if (phy_dev->drv->read_status)
+- phy_dev->drv->read_status(phy_dev);
+- }
++ if (!_errno && phy_dev)
++ phy_start(phy_dev);
+
+ return _errno;
+ }
+
+ static int __cold stop(struct mac_device *mac_dev)
+ {
+- if (mac_dev->phy_dev &&
+- (macdev2enetinterface(mac_dev) != e_ENET_MODE_XGMII_10000))
++ if (mac_dev->phy_dev)
+ phy_stop(mac_dev->phy_dev);
+
+ return fm_mac_disable(mac_dev->get_mac_handle(mac_dev));
+@@ -477,8 +472,8 @@ static int xgmac_init_phy(struct net_dev
+ phy_dev = phy_attach(net_dev, mac_dev->fixed_bus_id,
+ mac_dev->phy_if);
+ else
+- phy_dev = of_phy_attach(net_dev, mac_dev->phy_node, 0,
+- mac_dev->phy_if);
++ phy_dev = of_phy_connect(net_dev, mac_dev->phy_node,
++ &adjust_link, 0, mac_dev->phy_if);
+ if (unlikely(phy_dev == NULL) || IS_ERR(phy_dev)) {
+ netdev_err(net_dev, "Could not attach to PHY %s\n",
+ mac_dev->phy_node ?
+@@ -510,8 +505,9 @@ static int memac_init_phy(struct net_dev
+ mac_dev->phy_dev = NULL;
+ return 0;
+ } else
+- phy_dev = of_phy_attach(net_dev, mac_dev->phy_node, 0,
+- mac_dev->phy_if);
++ phy_dev = of_phy_connect(net_dev, mac_dev->phy_node,
++ &adjust_link, 0,
++ mac_dev->phy_if);
+ } else {
+ if (!mac_dev->phy_node)
+ phy_dev = phy_connect(net_dev, mac_dev->fixed_bus_id,