From mboxrd@z Thu Jan 1 00:00:00 1970 From: Florian Fainelli Subject: Re: [PATCH v2 4/5] net: phy: at803x: Disable phy delay for RGMII mode Date: Tue, 8 Jan 2019 09:59:09 -0800 Message-ID: <3baa95a5-5905-5d34-b656-698c792e6716@gmail.com> References: <20190108162926.17806-1-vkoul@kernel.org> <20190108162926.17806-5-vkoul@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, linux-arm-msm@vger.kernel.org, Niklas Cassel , Bjorn Andersson , Andrew Lunn To: Vinod Koul , David S Miller Return-path: Received: from mail-yw1-f67.google.com ([209.85.161.67]:43703 "EHLO mail-yw1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729548AbfAHR7T (ORCPT ); Tue, 8 Jan 2019 12:59:19 -0500 In-Reply-To: <20190108162926.17806-5-vkoul@kernel.org> Content-Language: en-US Sender: netdev-owner@vger.kernel.org List-ID: On 1/8/19 8:29 AM, Vinod Koul wrote: > For RGMII mode, phy delay should be disabled. Add this case along > with disable delay routines. > > Signed-off-by: Vinod Koul > --- > drivers/net/phy/at803x.c | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c > index f9432d053a22..e7cf1d5b0514 100644 > --- a/drivers/net/phy/at803x.c > +++ b/drivers/net/phy/at803x.c > @@ -122,6 +122,18 @@ static inline int at803x_enable_tx_delay(struct phy_device *phydev) > AT803X_DEBUG_TX_CLK_DLY_EN); > } > > +static inline int at803x_disable_rx_delay(struct phy_device *phydev) > +{ > + return at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_0, > + AT803X_DEBUG_RX_CLK_DLY_EN, 0); > +} > + > +static inline int at803x_disable_tx_delay(struct phy_device *phydev) > +{ > + return at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_5, > + AT803X_DEBUG_TX_CLK_DLY_EN, 0); > +} > + > /* save relevant PHY registers to private copy */ > static void at803x_context_save(struct phy_device *phydev, > struct at803x_context *context) > @@ -269,6 +281,15 @@ static int at803x_config_init(struct phy_device *phydev) > return ret; > } > > + if (phydev->interface == PHY_INTERFACE_MODE_RGMII) { > + ret = at803x_disable_rx_delay(phydev); > + if (ret < 0) > + return ret; > + ret = at803x_disable_tx_delay(phydev); > + if (ret < 0) > + return ret; > + } This looks right in that PHY_INTERFACE_MODE_RGMII from the perspective of the PHY means no TX/RX delays, but you would also have to take care of PHY_INTERFACE_MODE_RGMII_TXID and disable the RX delay in that case, and PHY_INTERFACE_MODE_RGMII_RXID and disabled the TX delay in that case. Thanks! -- Florian