From 0a49f0d1958440f7928047433c983eece05a3723 Mon Sep 17 00:00:00 2001 From: Christian Lamparter Date: Thu, 14 Dec 2017 19:51:50 +0100 Subject: [PATCH 3/3] net: ibm: emac: support RGMII-[RX|TX]ID phymode The RGMII spec allows compliance for devices that implement an internal delay on TXC and/or RXC inside the transmitter. This patch adds the necessary RGMII_[RX|TX]ID mode code to handle such PHYs with the emac driver. Signed-off-by: Christian Lamparter --- v3: - replace PHY_MODE_* with PHY_INTERFACE_MODE_* - replace rgmii_mode_name() with phy_modes[] v2: - utilize phy_interface_mode_is_rgmii() --- drivers/net/ethernet/ibm/emac/core.c | 4 ++-- drivers/net/ethernet/ibm/emac/rgmii.c | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) --- a/drivers/net/ethernet/ibm/emac/core.c +++ b/drivers/net/ethernet/ibm/emac/core.c @@ -199,8 +199,8 @@ static void __emac_set_multicast_list(st static inline int emac_phy_supports_gige(int phy_mode) { - return phy_mode == PHY_INTERFACE_MODE_GMII || - phy_mode == PHY_INTERFACE_MODE_RGMII || + return phy_interface_mode_is_rgmii(phy_mode) || + phy_mode == PHY_INTERFACE_MODE_GMII || phy_mode == PHY_INTERFACE_MODE_SGMII || phy_mode == PHY_INTERFACE_MODE_TBI || phy_mode == PHY_INTERFACE_MODE_RTBI; --- a/drivers/net/ethernet/ibm/emac/rgmii.c +++ b/drivers/net/ethernet/ibm/emac/rgmii.c @@ -52,9 +52,9 @@ /* RGMII bridge supports only GMII/TBI and RGMII/RTBI PHYs */ static inline int rgmii_valid_mode(int phy_mode) { - return phy_mode == PHY_INTERFACE_MODE_GMII || + return phy_interface_mode_is_rgmii(phy_mode) || + phy_mode == PHY_INTERFACE_MODE_GMII || phy_mode == PHY_INTERFACE_MODE_MII || - phy_mode == PHY_INTERFACE_MODE_RGMII || phy_mode == PHY_INTERFACE_MODE_TBI || phy_mode == PHY_INTERFACE_MODE_RTBI; } @@ -63,6 +63,9 @@ static inline u32 rgmii_mode_mask(int mo { switch (mode) { case PHY_INTERFACE_MODE_RGMII: + case PHY_INTERFACE_MODE_RGMII_ID: + case PHY_INTERFACE_MODE_RGMII_RXID: + case PHY_INTERFACE_MODE_RGMII_TXID: return RGMII_FER_RGMII(input); case PHY_INTERFACE_MODE_TBI: return RGMII_FER_TBI(input);