[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <07c540a2-c645-460c-bfad-c9229d5d5ad0@kernel.org>
Date: Wed, 30 Apr 2025 17:56:29 +0300
From: Roger Quadros <rogerq@...nel.org>
To: Matthias Schiffer <matthias.schiffer@...tq-group.com>,
Andrew Lunn <andrew+netdev@...n.ch>, "David S. Miller"
<davem@...emloft.net>, Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>, Paolo Abeni <pabeni@...hat.com>,
Rob Herring <robh@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Andy Whitcroft <apw@...onical.com>
Cc: Dwaipayan Ray <dwaipayanray1@...il.com>,
Lukas Bulwahn <lukas.bulwahn@...il.com>, Joe Perches <joe@...ches.com>,
Jonathan Corbet <corbet@....net>, Nishanth Menon <nm@...com>,
Vignesh Raghavendra <vigneshr@...com>,
Siddharth Vadapalli <s-vadapalli@...com>, Tero Kristo <kristo@...nel.org>,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org,
netdev@...r.kernel.org, devicetree@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux@...tq-group.com
Subject: Re: [PATCH net-next 3/4] net: ethernet: ti: am65-cpsw: fixup PHY mode
for fixed RGMII TX delay
Matthias,
On 15/04/2025 13:18, Matthias Schiffer wrote:
> All am65-cpsw controllers have a fixed TX delay, so the PHY interface
> mode must be fixed up to account for this.
>
> Modes that claim to a delay on the PCB can't actually work. Warn people
Could you please help me understand this statement? Which delay? TX or RX?
Isn't this patch forcing the device tree to have TX delay mentioned in it?
> to update their Device Trees if one of the unsupported modes is specified.
>
> Signed-off-by: Matthias Schiffer <matthias.schiffer@...tq-group.com>
> ---
> drivers/net/ethernet/ti/am65-cpsw-nuss.c | 27 ++++++++++++++++++++++--
> 1 file changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> index c9fd34787c998..a1d32735c7512 100644
> --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> @@ -2602,6 +2602,7 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
> return -ENOENT;
>
> for_each_child_of_node(node, port_np) {
> + phy_interface_t phy_if;
> struct am65_cpsw_port *port;
> u32 port_id;
>
> @@ -2667,14 +2668,36 @@ static int am65_cpsw_nuss_init_slave_ports(struct am65_cpsw_common *common)
>
> /* get phy/link info */
> port->slave.port_np = port_np;
> - ret = of_get_phy_mode(port_np, &port->slave.phy_if);
> + ret = of_get_phy_mode(port_np, &phy_if);
> if (ret) {
> dev_err(dev, "%pOF read phy-mode err %d\n",
> port_np, ret);
> goto of_node_put;
> }
>
> - ret = phy_set_mode_ext(port->slave.ifphy, PHY_MODE_ETHERNET, port->slave.phy_if);
> + /* CPSW controllers supported by this driver have a fixed
> + * internal TX delay in RGMII mode. Fix up PHY mode to account
> + * for this and warn about Device Trees that claim to have a TX
> + * delay on the PCB.
> + */
> + switch (phy_if) {
> + case PHY_INTERFACE_MODE_RGMII_ID:
> + phy_if = PHY_INTERFACE_MODE_RGMII_RXID;
> + break;
> + case PHY_INTERFACE_MODE_RGMII_TXID:
> + phy_if = PHY_INTERFACE_MODE_RGMII;
> + break;
> + case PHY_INTERFACE_MODE_RGMII:
> + case PHY_INTERFACE_MODE_RGMII_RXID:
> + dev_warn(dev,
> + "RGMII mode without internal TX delay unsupported; please fix your Device Tree\n");
> + break;
> + default:
> + break;
> + }
> +
> + port->slave.phy_if = phy_if;
> + ret = phy_set_mode_ext(port->slave.ifphy, PHY_MODE_ETHERNET, phy_if);
> if (ret)
> goto of_node_put;
>
--
cheers,
-roger
Powered by blists - more mailing lists