From 289b50696df036db1228d7247f8b8b743f3eda13 Mon Sep 17 00:00:00 2001 From: Christoph Muellner Date: Thu, 15 Mar 2018 19:13:37 +0100 Subject: [noupstream] Add gryphon support. * arm64: dts: apm: Add serial 1 to shadowcat.dts * arm64: dts: Add apm-gryphon.dts * drivers: xgene: Allow to run the ethernet controller in MAC-to-MAC mode. Signed-off-by: Christoph Muellner --- drivers/net/ethernet/apm/xgene/xgene_enet_main.c | 4 ++++ drivers/net/ethernet/apm/xgene/xgene_enet_main.h | 1 + drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c | 11 +++++++++-- 3 files changed, 14 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c index 3b889efddf78..029ec75e5498 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c @@ -1765,6 +1765,10 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata) return -ENODEV; } + ret = device_property_read_u32(dev, "mac-to-mac-speed", &pdata->mac_to_mac_speed); + if (ret) + pdata->mac_to_mac_speed = 0; + ret = xgene_get_tx_delay(pdata); if (ret) return ret; diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h index 985768596900..b257c0d7fa49 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.h +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.h @@ -250,6 +250,7 @@ struct xgene_enet_pdata { u32 pause_autoneg; bool tx_pause; bool rx_pause; + u32 mac_to_mac_speed; }; struct xgene_indirect_ctl { diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c b/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c index b1a83fdbefb8..4134da1aa2e2 100644 --- a/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c +++ b/drivers/net/ethernet/apm/xgene/xgene_enet_sgmac.c @@ -349,7 +349,8 @@ static void xgene_sgmac_init(struct xgene_enet_pdata *p) if (!(p->enet_id == XGENE_ENET2 && p->mdio_driver)) xgene_sgmac_reset(p); - xgene_sgmii_enable_autoneg(p); + if (p->mac_to_mac_speed == 0) + xgene_sgmii_enable_autoneg(p); xgene_sgmac_set_speed(p); xgene_sgmac_set_mac_addr(p); @@ -548,7 +549,13 @@ static void xgene_enet_link_state(struct work_struct *work) struct net_device *ndev = p->ndev; u32 link, poll_interval; - link = xgene_enet_link_status(p); + if (p->mac_to_mac_speed == 0) { + link = xgene_enet_link_status(p); + } else { + p->phy_speed = p->mac_to_mac_speed; + link = 1; + } + if (link) { if (!netif_carrier_ok(ndev)) { netif_carrier_on(ndev); -- cgit v1.2.3