From: Niklas Cassel <niklas.cassel@linaro.org>
To: Vinod Koul <vkoul@kernel.org>
Cc: David S Miller <davem@davemloft.net>,
linux-arm-msm@vger.kernel.org,
Bjorn Andersson <bjorn.andersson@linaro.org>,
netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
"Nori, Sekhar" <nsekhar@ti.com>,
Peter Ujfalusi <peter.ujfalusi@ti.com>,
Marc Gonzalez <marc.w.gonzalez@free.fr>
Subject: Re: [PATCH] net: phy: at803x: disable delay only for RGMII mode
Date: Wed, 13 Feb 2019 14:12:06 +0100 [thread overview]
Message-ID: <20190213131206.GA460@centauri.lan> (raw)
In-Reply-To: <20190212141922.12849-1-vkoul@kernel.org>
On Tue, Feb 12, 2019 at 07:49:22PM +0530, Vinod Koul wrote:
> Per "Documentation/devicetree/bindings/net/ethernet.txt" RGMII mode
> should not have delay in PHY whereas RGMII_ID and RGMII_RXID/RGMII_TXID
> can have delay in phy.
>
> So disable the delay only for RGMII mode and disable for other modes
>
> Fixes: cd28d1d6e52e: ("net: phy: at803x: Disable phy delay for RGMII mode")
> Reported-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
> Signed-off-by: Vinod Koul <vkoul@kernel.org>
> ---
> drivers/net/phy/at803x.c | 33 ++++++++++++++++++++++++++-------
> 1 file changed, 26 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c
> index 8ff12938ab47..7b54b54e3316 100644
> --- a/drivers/net/phy/at803x.c
> +++ b/drivers/net/phy/at803x.c
> @@ -110,6 +110,18 @@ static int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg,
> return phy_write(phydev, AT803X_DEBUG_DATA, val);
> }
>
> +static inline int at803x_enable_rx_delay(struct phy_device *phydev)
> +{
> + return at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_0, 0,
> + AT803X_DEBUG_RX_CLK_DLY_EN);
> +}
> +
> +static inline int at803x_enable_tx_delay(struct phy_device *phydev)
> +{
> + return at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_5, 0,
> + 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,
> @@ -255,18 +267,25 @@ static int at803x_config_init(struct phy_device *phydev)
> if (ret < 0)
> return ret;
>
> - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
> - phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
> - phydev->interface == PHY_INTERFACE_MODE_RGMII) {
> + 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;
> + };
> +
> + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
> + phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID) {
> + ret = at803x_enable_rx_delay(phydev);
> + if (ret < 0)
> + return ret;
> }
>
> - if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
> - phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
> - phydev->interface == PHY_INTERFACE_MODE_RGMII) {
> - ret = at803x_disable_tx_delay(phydev);
> + if (phydev->interface == PHY_INTERFACE_MODE_RGMII_ID ||
> + phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID) {
> + ret = at803x_enable_tx_delay(phydev);
> if (ret < 0)
> return ret;
> }
So we have these modes:
PHY_INTERFACE_MODE_RGMII: TX and RX delays disabled
PHY_INTERFACE_MODE_RGMII_ID: TX and RX delays enabled
PHY_INTERFACE_MODE_RGMII_RXID: RX delay enabled, TX delay disabled
PHY_INTERFACE_MODE_RGMII_TXID: TX delay enabled, RX delay disabled
What I don't like with this patch, is that if we specify phy-mode
PHY_INTERFACE_MODE_RGMII_TXID, this patch will enable TX delay,
but RX delay will not be explicitly set.
Thus it will use the default value of the PHY, and for this PHY
both TX and RX delays are enabled by default.
This means that someone specifying PHY_INTERFACE_MODE_RGMII_TXID
will actually be getting PHY_INTERFACE_MODE_RGMII_ID.
Marc's patch:
https://www.spinics.net/lists/netdev/msg445053.html
does explicitly either enable or disable each delay
(so it does not depend on default values).
However, Marc's patch was never merged, because someone reported
a regression on am335x-evm.
On Vinod's V1 submission Andrew replied that if this change
breaks some existing DT (because that DT specifies a phy-mode
that does not match with reality), then we should fix so that
DT specifies the correct phy-mode:
https://www.spinics.net/lists/netdev/msg542638.html
IMHO, this makes most sense, since if a DT specifies an
incorrect phy-mode, then that is what the user should get.
Kind regards,
Niklas
next prev parent reply other threads:[~2019-02-13 13:12 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-12 14:19 [PATCH] net: phy: at803x: disable delay only for RGMII mode Vinod Koul
2019-02-13 7:02 ` Peter Ujfalusi
2019-02-13 7:02 ` Peter Ujfalusi
2019-02-15 10:16 ` Vinod Koul
2019-02-13 13:12 ` Niklas Cassel [this message]
2019-02-13 13:29 ` Andrew Lunn
2019-02-13 13:40 ` Marc Gonzalez
2019-02-13 13:40 ` Marc Gonzalez
2019-02-13 17:40 ` Niklas Cassel
2019-02-13 17:40 ` Niklas Cassel
2019-02-13 17:59 ` Florian Fainelli
2019-02-13 20:07 ` Niklas Cassel
2019-02-13 21:38 ` Florian Fainelli
2019-02-14 10:49 ` Peter Ujfalusi
2019-02-14 10:49 ` Peter Ujfalusi
2019-02-14 12:39 ` Niklas Cassel
2019-02-14 13:22 ` Peter Ujfalusi
2019-02-14 13:22 ` Peter Ujfalusi
2019-02-14 15:06 ` Niklas Cassel
2019-02-15 0:14 ` Florian Fainelli
2019-02-14 16:38 ` David Miller
2019-02-14 16:46 ` Marc Gonzalez
2019-02-14 17:33 ` David Miller
2019-02-15 9:58 ` Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190213131206.GA460@centauri.lan \
--to=niklas.cassel@linaro.org \
--cc=andrew@lunn.ch \
--cc=bjorn.andersson@linaro.org \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=marc.w.gonzalez@free.fr \
--cc=netdev@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=peter.ujfalusi@ti.com \
--cc=vkoul@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.