2023-12-12 14:12:09

by Stefan Eichenberger

[permalink] [raw]
Subject: [PATCH net-next v2] net: mvpp2: add support for mii

Currently, mvpp2 only supports RGMII. This commit adds support for MII.
The description in Marvell's functional specification seems to be wrong.
To enable MII, we need to set GENCONF_CTRL0_PORT3_RGMII, while for RGMII
we need to clear it. This is also how U-Boot handles it.

Signed-off-by: Stefan Eichenberger <[email protected]>
---
v2:
- Remove PHY_INTERFACE_MODE_100BASEX from supported_interfaces (Maxime)
---
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 21 ++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 93137606869e..c5f72a1ef928 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -1513,10 +1513,21 @@ static void mvpp22_gop_init_rgmii(struct mvpp2_port *port)
regmap_write(priv->sysctrl_base, GENCONF_PORT_CTRL0, val);

regmap_read(priv->sysctrl_base, GENCONF_CTRL0, &val);
- if (port->gop_id == 2)
+ if (port->gop_id == 2) {
val |= GENCONF_CTRL0_PORT2_RGMII;
- else if (port->gop_id == 3)
+ } else if (port->gop_id == 3) {
val |= GENCONF_CTRL0_PORT3_RGMII_MII;
+
+ /* According to the specification, GENCONF_CTRL0_PORT3_RGMII
+ * should be set to 1 for RGMII and 0 for MII. However, tests
+ * show that it is the other way around. This is also what
+ * U-Boot does for mvpp2, so it is assumed to be correct.
+ */
+ if (port->phy_interface == PHY_INTERFACE_MODE_MII)
+ val |= GENCONF_CTRL0_PORT3_RGMII;
+ else
+ val &= ~GENCONF_CTRL0_PORT3_RGMII;
+ }
regmap_write(priv->sysctrl_base, GENCONF_CTRL0, val);
}

@@ -1615,6 +1626,7 @@ static int mvpp22_gop_init(struct mvpp2_port *port, phy_interface_t interface)
return 0;

switch (interface) {
+ case PHY_INTERFACE_MODE_MII:
case PHY_INTERFACE_MODE_RGMII:
case PHY_INTERFACE_MODE_RGMII_ID:
case PHY_INTERFACE_MODE_RGMII_RXID:
@@ -6948,8 +6960,11 @@ static int mvpp2_port_probe(struct platform_device *pdev,
MAC_10000FD;
}

- if (mvpp2_port_supports_rgmii(port))
+ if (mvpp2_port_supports_rgmii(port)) {
phy_interface_set_rgmii(port->phylink_config.supported_interfaces);
+ __set_bit(PHY_INTERFACE_MODE_MII,
+ port->phylink_config.supported_interfaces);
+ }

if (comphy) {
/* If a COMPHY is present, we can support any of the
--
2.40.1


2023-12-12 16:07:31

by Maxime Chevallier

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvpp2: add support for mii

Hi Stefan,

On Tue, 12 Dec 2023 15:12:00 +0100
Stefan Eichenberger <[email protected]> wrote:

> Currently, mvpp2 only supports RGMII. This commit adds support for MII.
> The description in Marvell's functional specification seems to be wrong.
> To enable MII, we need to set GENCONF_CTRL0_PORT3_RGMII, while for RGMII
> we need to clear it. This is also how U-Boot handles it.
>
> Signed-off-by: Stefan Eichenberger <[email protected]>

Reviewed-by: Maxime Chevallier <[email protected]>

Thanks for the patch,

Maxime

2023-12-12 17:39:40

by Marcin Wojtas

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvpp2: add support for mii

Hi,

wt., 12 gru 2023 o 17:07 Maxime Chevallier
<[email protected]> napisaƂ(a):
>
> Hi Stefan,
>
> On Tue, 12 Dec 2023 15:12:00 +0100
> Stefan Eichenberger <[email protected]> wrote:
>
> > Currently, mvpp2 only supports RGMII. This commit adds support for MII.
> > The description in Marvell's functional specification seems to be wrong.
> > To enable MII, we need to set GENCONF_CTRL0_PORT3_RGMII, while for RGMII
> > we need to clear it. This is also how U-Boot handles it.
> >
> > Signed-off-by: Stefan Eichenberger <[email protected]>
>
> Reviewed-by: Maxime Chevallier <[email protected]>

LGTM, as well.
Reviewed-by: Marcin Wojtas <[email protected]>

Best regards,
Marcin

2023-12-12 19:19:27

by Russell King (Oracle)

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvpp2: add support for mii

On Tue, Dec 12, 2023 at 03:12:00PM +0100, Stefan Eichenberger wrote:
> Currently, mvpp2 only supports RGMII. This commit adds support for MII.
> The description in Marvell's functional specification seems to be wrong.
> To enable MII, we need to set GENCONF_CTRL0_PORT3_RGMII, while for RGMII
> we need to clear it. This is also how U-Boot handles it.
>
> Signed-off-by: Stefan Eichenberger <[email protected]>

LGTM.

Reviewed-by: Russell King (Oracle) <[email protected]>

Thanks!

--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!

2023-12-14 15:11:57

by patchwork-bot+netdevbpf

[permalink] [raw]
Subject: Re: [PATCH net-next v2] net: mvpp2: add support for mii

Hello:

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

On Tue, 12 Dec 2023 15:12:00 +0100 you wrote:
> Currently, mvpp2 only supports RGMII. This commit adds support for MII.
> The description in Marvell's functional specification seems to be wrong.
> To enable MII, we need to set GENCONF_CTRL0_PORT3_RGMII, while for RGMII
> we need to clear it. This is also how U-Boot handles it.
>
> Signed-off-by: Stefan Eichenberger <[email protected]>
>
> [...]

Here is the summary with links:
- [net-next,v2] net: mvpp2: add support for mii
https://git.kernel.org/netdev/net-next/c/1b666016d0ad

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