diff options
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.patch | 63 |
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, |