diff options
author | Iyappan Subramanian <isubramanian@apm.com> | 2016-10-06 14:35:57 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-10-12 01:53:55 -0400 |
commit | 751d6fd18fb3c6cc123dce844200ddbf5a8ad1a8 (patch) | |
tree | 62ad5a57f24c97e2421d57966759cda24e320d2b /drivers/net/ethernet/apm/xgene/xgene_enet_main.c | |
parent | c66549ffd666605831abf6cf19ce0571ad868e39 (diff) | |
download | linux-751d6fd18fb3c6cc123dce844200ddbf5a8ad1a8.tar.gz linux-751d6fd18fb3c6cc123dce844200ddbf5a8ad1a8.tar.bz2 linux-751d6fd18fb3c6cc123dce844200ddbf5a8ad1a8.zip |
drivers: net: xgene: fix: Use GPIO to get link status
The link value reported by the link status register is not
reliable when no SPF module inserted. This patchset fixes this
issue by using GPIO to determine the link status.
Signed-off-by: Iyappan Subramanian <isubramanian@apm.com>
Signed-off-by: Quan Nguyen <qnguyen@apm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/apm/xgene/xgene_enet_main.c')
-rw-r--r-- | drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c index 429f18fc5503..f75d9556152f 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -1381,9 +1381,13 @@ static void xgene_enet_gpiod_get(struct xgene_enet_pdata *pdata) { struct device *dev = &pdata->pdev->dev; - if (pdata->phy_mode != PHY_INTERFACE_MODE_XGMII) + pdata->sfp_gpio_en = false; + if (pdata->phy_mode != PHY_INTERFACE_MODE_XGMII || + (!device_property_present(dev, "sfp-gpios") && + !device_property_present(dev, "rxlos-gpios"))) return; + pdata->sfp_gpio_en = true; pdata->sfp_rdy = gpiod_get(dev, "rxlos", GPIOD_IN); if (IS_ERR(pdata->sfp_rdy)) pdata->sfp_rdy = gpiod_get(dev, "sfp", GPIOD_IN); |