From: "Heiko Stübner" <heiko@sntech.de>
To: Jonas Karlman <jonas@kwiboo.se>, Andrew Lunn <andrew@lunn.ch>
Cc: "robh@kernel.org" <robh@kernel.org>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"ukleinek@debian.org" <ukleinek@debian.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-rockchip@lists.infradead.org"
<linux-rockchip@lists.infradead.org>
Subject: Re: [PATCH 2/6] arm64: dts: rockchip: Fix the 1Ghz ethernet on Qnap TS433
Date: Wed, 12 Nov 2025 22:33:44 +0100 [thread overview]
Message-ID: <3380318.aeNJFYEL58@diego> (raw)
In-Reply-To: <e4d3127b-c879-4931-9ea0-de7449bc508c@lunn.ch>
Am Donnerstag, 25. September 2025, 19:11:29 Mitteleuropäische Normalzeit schrieb Andrew Lunn:
> On Thu, Sep 25, 2025 at 06:58:06PM +0200, Jonas Karlman wrote:
> > Hi Heiko,
> >
> > On 9/25/2025 11:29 AM, Heiko Stuebner wrote:
> > > While I want to remember that the dwmac on the TS433 was working at some
> > > point, it seems I had my network always connected to the 2.5G nic after
> > > that "point". And testing now revealed that the gmac does not actually
> > > manages to transfer data.
> > >
> > > Currently the gmac is set to rgmii-id with no rx-/tx-delay values set
> > > which makes the driver use default values. Setting the delays to 0
> > > also does not provide a working interface.
> > >
> > > The vendor kernel is running with phy-mode set to rgmii and delays of
> > > tx_delay = 0x3c, rx_delay = 0x2f
> > >
> > > As Andrew points out often, those delay values "are magic" and rgmii-id
> > > should definitly be used "with small values" for delays, if really needed.
> > >
> > > The Rockchip vendor-kernel actually contains additional code in the dwmac
> > > driver to use the loopback function of a phy to find a window of usable
> > > delay values. Code can be found for example on [0] and the process is
> > > described in a document called "Rockchip GMAC RGMII Delayline Guide"
> > > which has made its way onto the internet in a lot of places [1].
> > >
> > > So I used this process, with the interface set to rgmii-id to get values
> > > for this mode, which are in face lower than the ones for rgmii with
> > > tx_delay = 0x21, rx_delay = 0x15
> > > and results in a working interface on the dwmac.
> > >
> > > [0] https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr6.1/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
> > > [1] https://gitlab.com/firefly-linux/docs/-/blob/rk356x/firefly/Common/GMAC/Rockchip_Developer_Guide_Linux_GMAC_RGMII_Delayline_EN.pdf
> > >
> > > Cc: Andrew Lunn <andrew@lunn.ch>
> > > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > > ---
> > > arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts b/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > index 5656554ca284..e8af92a011d6 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > @@ -257,6 +257,8 @@ &gmac0_tx_bus2
> > > &gmac0_rx_bus2
> > > &gmac0_rgmii_clk
> > > &gmac0_rgmii_bus>;
> > > + rx_delay = <0x15>;
> > > + tx_delay = <0x21>;
> >
> > I do not understand why defining rx/tx_delay would change anything.
>
> I was also wondering why these two properties are added but no change
> to phy-mode.
>
> >
> > Setting these should currently not have any effect on the driver code
> > when phy-mode=rgmii-id is used, see below (next-20250924, dwmac-rk.c):
> >
> >
> > switch (bsp_priv->phy_iface) {
> > case PHY_INTERFACE_MODE_RGMII:
> > dev_info(dev, "init for RGMII\n");
> > bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay,
> > bsp_priv->rx_delay);
> > break;
> > case PHY_INTERFACE_MODE_RGMII_ID:
> > dev_info(dev, "init for RGMII_ID\n");
> > bsp_priv->ops->set_to_rgmii(bsp_priv, 0, 0);
> > break;
>
> And this explains it, thanks.
>
> > I have played around with a few patches that changes this and apply the
> > rx/tx_delay for rgmii-id modes (both Linux and U-Boot), see top of [2]
> > for Linux patches. Will try to get them on ML in a few days.
>
> We should not really be expanding the use of rx_delay and
> tx_delay. The standardized properties {tx|rx}-internal-delay-ps should
> be used.
as Jonas wrote the delays do nothing for rgmii-id. So the whole thing
must have been me doing something wonky, because on re-testing
everything, it is as expected - no delays necessary and ethernet just
works.
So I'll drop this patch altogether and adapt the TS233 one.
Heiko
Heiko
WARNING: multiple messages have this Message-ID (diff)
From: "Heiko Stübner" <heiko@sntech.de>
To: Jonas Karlman <jonas@kwiboo.se>, Andrew Lunn <andrew@lunn.ch>
Cc: "robh@kernel.org" <robh@kernel.org>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"ukleinek@debian.org" <ukleinek@debian.org>,
"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
"linux-rockchip@lists.infradead.org"
<linux-rockchip@lists.infradead.org>
Subject: Re: [PATCH 2/6] arm64: dts: rockchip: Fix the 1Ghz ethernet on Qnap TS433
Date: Wed, 12 Nov 2025 22:33:44 +0100 [thread overview]
Message-ID: <3380318.aeNJFYEL58@diego> (raw)
In-Reply-To: <e4d3127b-c879-4931-9ea0-de7449bc508c@lunn.ch>
Am Donnerstag, 25. September 2025, 19:11:29 Mitteleuropäische Normalzeit schrieb Andrew Lunn:
> On Thu, Sep 25, 2025 at 06:58:06PM +0200, Jonas Karlman wrote:
> > Hi Heiko,
> >
> > On 9/25/2025 11:29 AM, Heiko Stuebner wrote:
> > > While I want to remember that the dwmac on the TS433 was working at some
> > > point, it seems I had my network always connected to the 2.5G nic after
> > > that "point". And testing now revealed that the gmac does not actually
> > > manages to transfer data.
> > >
> > > Currently the gmac is set to rgmii-id with no rx-/tx-delay values set
> > > which makes the driver use default values. Setting the delays to 0
> > > also does not provide a working interface.
> > >
> > > The vendor kernel is running with phy-mode set to rgmii and delays of
> > > tx_delay = 0x3c, rx_delay = 0x2f
> > >
> > > As Andrew points out often, those delay values "are magic" and rgmii-id
> > > should definitly be used "with small values" for delays, if really needed.
> > >
> > > The Rockchip vendor-kernel actually contains additional code in the dwmac
> > > driver to use the loopback function of a phy to find a window of usable
> > > delay values. Code can be found for example on [0] and the process is
> > > described in a document called "Rockchip GMAC RGMII Delayline Guide"
> > > which has made its way onto the internet in a lot of places [1].
> > >
> > > So I used this process, with the interface set to rgmii-id to get values
> > > for this mode, which are in face lower than the ones for rgmii with
> > > tx_delay = 0x21, rx_delay = 0x15
> > > and results in a working interface on the dwmac.
> > >
> > > [0] https://github.com/armbian/linux-rockchip/blob/rk-6.1-rkr6.1/drivers/net/ethernet/stmicro/stmmac/dwmac-rk-tool.c
> > > [1] https://gitlab.com/firefly-linux/docs/-/blob/rk356x/firefly/Common/GMAC/Rockchip_Developer_Guide_Linux_GMAC_RGMII_Delayline_EN.pdf
> > >
> > > Cc: Andrew Lunn <andrew@lunn.ch>
> > > Signed-off-by: Heiko Stuebner <heiko@sntech.de>
> > > ---
> > > arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts b/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > index 5656554ca284..e8af92a011d6 100644
> > > --- a/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > +++ b/arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts
> > > @@ -257,6 +257,8 @@ &gmac0_tx_bus2
> > > &gmac0_rx_bus2
> > > &gmac0_rgmii_clk
> > > &gmac0_rgmii_bus>;
> > > + rx_delay = <0x15>;
> > > + tx_delay = <0x21>;
> >
> > I do not understand why defining rx/tx_delay would change anything.
>
> I was also wondering why these two properties are added but no change
> to phy-mode.
>
> >
> > Setting these should currently not have any effect on the driver code
> > when phy-mode=rgmii-id is used, see below (next-20250924, dwmac-rk.c):
> >
> >
> > switch (bsp_priv->phy_iface) {
> > case PHY_INTERFACE_MODE_RGMII:
> > dev_info(dev, "init for RGMII\n");
> > bsp_priv->ops->set_to_rgmii(bsp_priv, bsp_priv->tx_delay,
> > bsp_priv->rx_delay);
> > break;
> > case PHY_INTERFACE_MODE_RGMII_ID:
> > dev_info(dev, "init for RGMII_ID\n");
> > bsp_priv->ops->set_to_rgmii(bsp_priv, 0, 0);
> > break;
>
> And this explains it, thanks.
>
> > I have played around with a few patches that changes this and apply the
> > rx/tx_delay for rgmii-id modes (both Linux and U-Boot), see top of [2]
> > for Linux patches. Will try to get them on ML in a few days.
>
> We should not really be expanding the use of rx_delay and
> tx_delay. The standardized properties {tx|rx}-internal-delay-ps should
> be used.
as Jonas wrote the delays do nothing for rgmii-id. So the whole thing
must have been me doing something wonky, because on re-testing
everything, it is as expected - no delays necessary and ethernet just
works.
So I'll drop this patch altogether and adapt the TS233 one.
Heiko
Heiko
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-11-12 21:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-25 9:29 [PATCH 0/6] Some cleanups and addition of another Qnap TSx33 device Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 9:29 ` [PATCH 1/6] arm64: dts: rockchip: move cpu_thermal node to the correct position Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 9:29 ` [PATCH 2/6] arm64: dts: rockchip: Fix the 1Ghz ethernet on Qnap TS433 Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 16:58 ` Jonas Karlman
2025-09-25 16:58 ` Jonas Karlman
2025-09-25 17:11 ` Andrew Lunn
2025-09-25 17:11 ` Andrew Lunn
2025-11-12 21:33 ` Heiko Stübner [this message]
2025-11-12 21:33 ` Heiko Stübner
2025-09-25 9:29 ` [PATCH 3/6] arm64: dts: rockchip: describe mcu eeprom cells on rk3568-ts433 Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 9:29 ` [PATCH 4/6] arm64: dts: rockchip: move common qnap tsx33 parts to dtsi Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 9:29 ` [PATCH 5/6] dt-bindings: arm: rockchip: add TS233 to RK3568-based QNAP NAS devices Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
2025-09-25 19:27 ` Conor Dooley
2025-09-25 19:27 ` Conor Dooley
2025-09-25 9:29 ` [PATCH 6/6] arm64: dts: rockchip: add QNAP TS233 devicetree Heiko Stuebner
2025-09-25 9:29 ` Heiko Stuebner
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=3380318.aeNJFYEL58@diego \
--to=heiko@sntech.de \
--cc=andrew@lunn.ch \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jonas@kwiboo.se \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=robh@kernel.org \
--cc=ukleinek@debian.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.