2024-06-11 05:37:35

by Chris Packham

[permalink] [raw]
Subject: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
clause 45 MDIO interface and can leverage the support that has already
been added for the other 822x PHYs.

Signed-off-by: Chris Packham <[email protected]>
---

Notes:
I'm currently testing this on an older kernel because the board I'm
using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
I have tried to selectively back port the bits I need from the other
rtl822x work so this should be all that is required for the rtl8224.

There's quite a lot that would need forward porting get a working system
against a current kernel so hopefully this is small enough that it can
land while I'm trying to figure out how to untangle all the other bits.

One thing that may appear lacking is the lack of rate_matching support.
According to the documentation I have know the interface used on the
RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
trying to get things completely working that may change if I get new
information.

drivers/net/phy/realtek.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 7ab41f95dae5..2174893c974f 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
.resume = rtlgen_resume,
.read_page = rtl821x_read_page,
.write_page = rtl821x_write_page,
+ }, {
+ PHY_ID_MATCH_EXACT(0x001ccad0),
+ .name = "RTL8224 2.5Gbps PHY",
+ .get_features = rtl822x_c45_get_features,
+ .config_aneg = rtl822x_c45_config_aneg,
+ .read_status = rtl822x_c45_read_status,
+ .suspend = genphy_c45_pma_suspend,
+ .resume = rtlgen_c45_resume,
}, {
PHY_ID_MATCH_EXACT(0x001cc961),
.name = "RTL8366RB Gigabit Ethernet",
--
2.45.2



2024-06-11 13:21:35

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

On Tue, Jun 11, 2024 at 05:34:14PM +1200, Chris Packham wrote:
> The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> clause 45 MDIO interface and can leverage the support that has already
> been added for the other 822x PHYs.
>
> Signed-off-by: Chris Packham <[email protected]>

You probably should Cc: Eric Woudstra and Marek Beh?n who have both
worked on 2.5G variants of this PHY.

> Notes:
> I'm currently testing this on an older kernel because the board I'm
> using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
> I have tried to selectively back port the bits I need from the other
> rtl822x work so this should be all that is required for the rtl8224.
>
> There's quite a lot that would need forward porting get a working system
> against a current kernel so hopefully this is small enough that it can
> land while I'm trying to figure out how to untangle all the other bits.

I don't see this as being a problem. It should not be possible to
cause regressions by adding a new device like this. If it turns out to
be broken, you can fix it up later.

Andrew

2024-06-11 20:41:56

by Chris Packham

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY


On 12/06/24 01:21, Andrew Lunn wrote:
> On Tue, Jun 11, 2024 at 05:34:14PM +1200, Chris Packham wrote:
>> The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
>> clause 45 MDIO interface and can leverage the support that has already
>> been added for the other 822x PHYs.
>>
>> Signed-off-by: Chris Packham <[email protected]>
> You probably should Cc: Eric Woudstra and Marek Behún who have both
> worked on 2.5G variants of this PHY.
>
Hmm get_maintainer.pl didn't pick them up but does with the --git
option. Did something change with that recently? Or maybe I'm just
running it wrong. I'll add Cc them on the original patch and include
them if there is a v2.

>> Notes:
>> I'm currently testing this on an older kernel because the board I'm
>> using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
>> I have tried to selectively back port the bits I need from the other
>> rtl822x work so this should be all that is required for the rtl8224.
>>
>> There's quite a lot that would need forward porting get a working system
>> against a current kernel so hopefully this is small enough that it can
>> land while I'm trying to figure out how to untangle all the other bits.
>
> I don't see this as being a problem. It should not be possible to
> cause regressions by adding a new device like this. If it turns out to
> be broken, you can fix it up later.
>
> Andrew

2024-06-11 20:43:29

by Chris Packham

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

+cc Eric W and Marek.

On 11/06/24 17:34, Chris Packham wrote:
> The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> clause 45 MDIO interface and can leverage the support that has already
> been added for the other 822x PHYs.
>
> Signed-off-by: Chris Packham <[email protected]>
> ---
>
> Notes:
> I'm currently testing this on an older kernel because the board I'm
> using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
> I have tried to selectively back port the bits I need from the other
> rtl822x work so this should be all that is required for the rtl8224.
>
> There's quite a lot that would need forward porting get a working system
> against a current kernel so hopefully this is small enough that it can
> land while I'm trying to figure out how to untangle all the other bits.
>
> One thing that may appear lacking is the lack of rate_matching support.
> According to the documentation I have know the interface used on the
> RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
> trying to get things completely working that may change if I get new
> information.
>
> drivers/net/phy/realtek.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> index 7ab41f95dae5..2174893c974f 100644
> --- a/drivers/net/phy/realtek.c
> +++ b/drivers/net/phy/realtek.c
> @@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
> .resume = rtlgen_resume,
> .read_page = rtl821x_read_page,
> .write_page = rtl821x_write_page,
> + }, {
> + PHY_ID_MATCH_EXACT(0x001ccad0),
> + .name = "RTL8224 2.5Gbps PHY",
> + .get_features = rtl822x_c45_get_features,
> + .config_aneg = rtl822x_c45_config_aneg,
> + .read_status = rtl822x_c45_read_status,
> + .suspend = genphy_c45_pma_suspend,
> + .resume = rtlgen_c45_resume,
> }, {
> PHY_ID_MATCH_EXACT(0x001cc961),
> .name = "RTL8366RB Gigabit Ethernet",

2024-06-12 07:07:26

by Marek Behún

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

On Tue, 11 Jun 2024 20:42:43 +0000
Chris Packham <[email protected]> wrote:

> +cc Eric W and Marek.
>
> On 11/06/24 17:34, Chris Packham wrote:
> > The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> > clause 45 MDIO interface and can leverage the support that has already
> > been added for the other 822x PHYs.
> >
> > Signed-off-by: Chris Packham <[email protected]>
> > ---
> >
> > Notes:
> > I'm currently testing this on an older kernel because the board I'm
> > using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
> > I have tried to selectively back port the bits I need from the other
> > rtl822x work so this should be all that is required for the rtl8224.
> >
> > There's quite a lot that would need forward porting get a working system
> > against a current kernel so hopefully this is small enough that it can
> > land while I'm trying to figure out how to untangle all the other bits.
> >
> > One thing that may appear lacking is the lack of rate_matching support.
> > According to the documentation I have know the interface used on the
> > RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
> > trying to get things completely working that may change if I get new
> > information.
> >
> > drivers/net/phy/realtek.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> > index 7ab41f95dae5..2174893c974f 100644
> > --- a/drivers/net/phy/realtek.c
> > +++ b/drivers/net/phy/realtek.c
> > @@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
> > .resume = rtlgen_resume,
> > .read_page = rtl821x_read_page,
> > .write_page = rtl821x_write_page,
> > + }, {
> > + PHY_ID_MATCH_EXACT(0x001ccad0),
> > + .name = "RTL8224 2.5Gbps PHY",
> > + .get_features = rtl822x_c45_get_features,
> > + .config_aneg = rtl822x_c45_config_aneg,
> > + .read_status = rtl822x_c45_read_status,
> > + .suspend = genphy_c45_pma_suspend,
> > + .resume = rtlgen_c45_resume,
> > }, {
> > PHY_ID_MATCH_EXACT(0x001cc961),
> > .name = "RTL8366RB Gigabit Ethernet"

Don't you need rtl822xb_config_init for serdes configuration?

Marek

2024-06-12 20:40:03

by Chris Packham

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY


On 12/06/24 19:07, Marek Behún wrote:
> On Tue, 11 Jun 2024 20:42:43 +0000
> Chris Packham <[email protected]> wrote:
>
>> +cc Eric W and Marek.
>>
>> On 11/06/24 17:34, Chris Packham wrote:
>>> The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
>>> clause 45 MDIO interface and can leverage the support that has already
>>> been added for the other 822x PHYs.
>>>
>>> Signed-off-by: Chris Packham <[email protected]>
>>> ---
>>>
>>> Notes:
>>> I'm currently testing this on an older kernel because the board I'm
>>> using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
>>> I have tried to selectively back port the bits I need from the other
>>> rtl822x work so this should be all that is required for the rtl8224.
>>>
>>> There's quite a lot that would need forward porting get a working system
>>> against a current kernel so hopefully this is small enough that it can
>>> land while I'm trying to figure out how to untangle all the other bits.
>>>
>>> One thing that may appear lacking is the lack of rate_matching support.
>>> According to the documentation I have know the interface used on the
>>> RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
>>> trying to get things completely working that may change if I get new
>>> information.
>>>
>>> drivers/net/phy/realtek.c | 8 ++++++++
>>> 1 file changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
>>> index 7ab41f95dae5..2174893c974f 100644
>>> --- a/drivers/net/phy/realtek.c
>>> +++ b/drivers/net/phy/realtek.c
>>> @@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
>>> .resume = rtlgen_resume,
>>> .read_page = rtl821x_read_page,
>>> .write_page = rtl821x_write_page,
>>> + }, {
>>> + PHY_ID_MATCH_EXACT(0x001ccad0),
>>> + .name = "RTL8224 2.5Gbps PHY",
>>> + .get_features = rtl822x_c45_get_features,
>>> + .config_aneg = rtl822x_c45_config_aneg,
>>> + .read_status = rtl822x_c45_read_status,
>>> + .suspend = genphy_c45_pma_suspend,
>>> + .resume = rtlgen_c45_resume,
>>> }, {
>>> PHY_ID_MATCH_EXACT(0x001cc961),
>>> .name = "RTL8366RB Gigabit Ethernet"
> Don't you need rtl822xb_config_init for serdes configuration?

I more than likely need a config_init() function. I'm working with
incomplete datasheets so I'm not sure if rtl822xb_config_init() will
work for me (if anyone has a contact at Realtek I'd like to hear from
you). The MAC-PHY interface on the RTL8224 is qusxgmii and
rtl822xb_config_init() seems to only cater for 2500base-x or hsgmii so I
think I will need a different config_init() but quite what that looks
like I'm not sure.

That's also where I start running into the backporting problem because
the rtl822xb_config_init() decides the mode based on the host_interfaces
which doesn't exist in the kernel I have dsa drivers for. I do plan on
trying to bring the code I have forward but there's quite a lot I need
to sift through.

2024-06-14 08:19:47

by Paolo Abeni

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

On Wed, 2024-06-12 at 09:07 +0200, Marek Behún wrote:
> On Tue, 11 Jun 2024 20:42:43 +0000
> Chris Packham <[email protected]> wrote:
>
> > +cc Eric W and Marek.
> >
> > On 11/06/24 17:34, Chris Packham wrote:
> > > The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> > > clause 45 MDIO interface and can leverage the support that has already
> > > been added for the other 822x PHYs.
> > >
> > > Signed-off-by: Chris Packham <[email protected]>
> > > ---
> > >
> > > Notes:
> > > I'm currently testing this on an older kernel because the board I'm
> > > using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
> > > I have tried to selectively back port the bits I need from the other
> > > rtl822x work so this should be all that is required for the rtl8224.
> > >
> > > There's quite a lot that would need forward porting get a working system
> > > against a current kernel so hopefully this is small enough that it can
> > > land while I'm trying to figure out how to untangle all the other bits.
> > >
> > > One thing that may appear lacking is the lack of rate_matching support.
> > > According to the documentation I have know the interface used on the
> > > RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
> > > trying to get things completely working that may change if I get new
> > > information.
> > >
> > > drivers/net/phy/realtek.c | 8 ++++++++
> > > 1 file changed, 8 insertions(+)
> > >
> > > diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> > > index 7ab41f95dae5..2174893c974f 100644
> > > --- a/drivers/net/phy/realtek.c
> > > +++ b/drivers/net/phy/realtek.c
> > > @@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
> > > .resume = rtlgen_resume,
> > > .read_page = rtl821x_read_page,
> > > .write_page = rtl821x_write_page,
> > > + }, {
> > > + PHY_ID_MATCH_EXACT(0x001ccad0),
> > > + .name = "RTL8224 2.5Gbps PHY",
> > > + .get_features = rtl822x_c45_get_features,
> > > + .config_aneg = rtl822x_c45_config_aneg,
> > > + .read_status = rtl822x_c45_read_status,
> > > + .suspend = genphy_c45_pma_suspend,
> > > + .resume = rtlgen_c45_resume,
> > > }, {
> > > PHY_ID_MATCH_EXACT(0x001cc961),
> > > .name = "RTL8366RB Gigabit Ethernet"
>
> Don't you need rtl822xb_config_init for serdes configuration?

Marek, I read the above as you would prefer to have such support
included from the beginning, as such I'm looking forward a new version
of this patch.

Please raise a hand if I read too much in your reply.

Thanks!

Paolo


2024-06-14 08:26:17

by Marek Behún

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

On Fri, 14 Jun 2024 10:18:47 +0200
Paolo Abeni <[email protected]> wrote:

> On Wed, 2024-06-12 at 09:07 +0200, Marek Behún wrote:
> > On Tue, 11 Jun 2024 20:42:43 +0000
> > Chris Packham <[email protected]> wrote:
> >
> > > +cc Eric W and Marek.
> > >
> > > On 11/06/24 17:34, Chris Packham wrote:
> > > > The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> > > > clause 45 MDIO interface and can leverage the support that has already
> > > > been added for the other 822x PHYs.
> > > >
> > > > Signed-off-by: Chris Packham <[email protected]>
> > > > ---
> > > >
> > > > Notes:
> > > > I'm currently testing this on an older kernel because the board I'm
> > > > using has a SOC/DSA switch that has a driver in openwrt for Linux 5.15.
> > > > I have tried to selectively back port the bits I need from the other
> > > > rtl822x work so this should be all that is required for the rtl8224.
> > > >
> > > > There's quite a lot that would need forward porting get a working system
> > > > against a current kernel so hopefully this is small enough that it can
> > > > land while I'm trying to figure out how to untangle all the other bits.
> > > >
> > > > One thing that may appear lacking is the lack of rate_matching support.
> > > > According to the documentation I have know the interface used on the
> > > > RTL8224 is (q)uxsgmii so no rate matching is required. As I'm still
> > > > trying to get things completely working that may change if I get new
> > > > information.
> > > >
> > > > drivers/net/phy/realtek.c | 8 ++++++++
> > > > 1 file changed, 8 insertions(+)
> > > >
> > > > diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
> > > > index 7ab41f95dae5..2174893c974f 100644
> > > > --- a/drivers/net/phy/realtek.c
> > > > +++ b/drivers/net/phy/realtek.c
> > > > @@ -1317,6 +1317,14 @@ static struct phy_driver realtek_drvs[] = {
> > > > .resume = rtlgen_resume,
> > > > .read_page = rtl821x_read_page,
> > > > .write_page = rtl821x_write_page,
> > > > + }, {
> > > > + PHY_ID_MATCH_EXACT(0x001ccad0),
> > > > + .name = "RTL8224 2.5Gbps PHY",
> > > > + .get_features = rtl822x_c45_get_features,
> > > > + .config_aneg = rtl822x_c45_config_aneg,
> > > > + .read_status = rtl822x_c45_read_status,
> > > > + .suspend = genphy_c45_pma_suspend,
> > > > + .resume = rtlgen_c45_resume,
> > > > }, {
> > > > PHY_ID_MATCH_EXACT(0x001cc961),
> > > > .name = "RTL8366RB Gigabit Ethernet"
> >
> > Don't you need rtl822xb_config_init for serdes configuration?
>
> Marek, I read the above as you would prefer to have such support
> included from the beginning, as such I'm looking forward a new version
> of this patch.
>
> Please raise a hand if I read too much in your reply.

I am raising my hand :) I just wanted to point it out.
If this code works for Chris' hardware, it is okay even without the
.config_init.

Marek

2024-06-15 02:00:41

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY

Hello:

This patch was applied to netdev/net-next.git (main)
by Jakub Kicinski <[email protected]>:

On Tue, 11 Jun 2024 17:34:14 +1200 you wrote:
> The Realtek RTL8224 PHY is a 2.5Gbps capable PHY. It only uses the
> clause 45 MDIO interface and can leverage the support that has already
> been added for the other 822x PHYs.
>
> Signed-off-by: Chris Packham <[email protected]>
> ---
>
> [...]

Here is the summary with links:
- [next-next] net: phy: realtek: add support for rtl8224 2.5Gbps PHY
https://git.kernel.org/netdev/net-next/c/9e42a2ea7f67

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html