* [PATCH net v3 1/1] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection
2025-10-09 13:06 [PATCH net v3 0/1] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection Kamil Horák - 2N
@ 2025-10-09 13:06 ` Kamil Horák - 2N
2025-10-13 22:27 ` Florian Fainelli
2025-10-14 0:43 ` Jakub Kicinski
2025-10-14 1:10 ` [PATCH net v3 0/1] " patchwork-bot+netdevbpf
1 sibling, 2 replies; 5+ messages in thread
From: Kamil Horák - 2N @ 2025-10-09 13:06 UTC (permalink / raw)
To: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
linux, davem, edumazet, kuba, pabeni
Cc: kamilh, netdev
The Broadcom bcm54811 is hardware-strapped to select among RGMII and
GMII/MII/MII-Lite modes. However, the corresponding bit, RGMII Enable
in Miscellaneous Control Register must be also set to select desired
RGMII or MII(-lite)/GMII mode.
Fixes: 3117a11fff5af9e7 ("net: phy: bcm54811: PHY initialization")
Signed-off-by: Kamil Horák - 2N <kamilh@axis•com>
---
drivers/net/phy/broadcom.c | 20 +++++++++++++++++++-
include/linux/brcmphy.h | 1 +
2 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/drivers/net/phy/broadcom.c b/drivers/net/phy/broadcom.c
index 3459a0e9d8b9..cb306f9e80cc 100644
--- a/drivers/net/phy/broadcom.c
+++ b/drivers/net/phy/broadcom.c
@@ -405,7 +405,7 @@ static int bcm5481x_set_brrmode(struct phy_device *phydev, bool on)
static int bcm54811_config_init(struct phy_device *phydev)
{
struct bcm54xx_phy_priv *priv = phydev->priv;
- int err, reg, exp_sync_ethernet;
+ int err, reg, exp_sync_ethernet, aux_rgmii_en;
/* Enable CLK125 MUX on LED4 if ref clock is enabled. */
if (!(phydev->dev_flags & PHY_BRCM_RX_REFCLK_UNUSED)) {
@@ -434,6 +434,24 @@ static int bcm54811_config_init(struct phy_device *phydev)
if (err < 0)
return err;
+ /* Enable RGMII if configured */
+ if (phy_interface_is_rgmii(phydev))
+ aux_rgmii_en = MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN |
+ MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
+ else
+ aux_rgmii_en = 0;
+
+ /* Also writing Reserved bits 6:5 because the documentation requires
+ * them to be written to 0b11
+ */
+ err = bcm54xx_auxctl_write(phydev,
+ MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
+ MII_BCM54XX_AUXCTL_MISC_WREN |
+ aux_rgmii_en |
+ MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RSVD);
+ if (err < 0)
+ return err;
+
return bcm5481x_set_brrmode(phydev, priv->brr_mode);
}
diff --git a/include/linux/brcmphy.h b/include/linux/brcmphy.h
index 15c35655f482..115a964f3006 100644
--- a/include/linux/brcmphy.h
+++ b/include/linux/brcmphy.h
@@ -137,6 +137,7 @@
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC 0x07
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN 0x0010
+#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RSVD 0x0060
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN 0x0080
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN 0x0100
#define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX 0x0200
--
2.39.5
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH net v3 0/1] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection
2025-10-09 13:06 [PATCH net v3 0/1] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection Kamil Horák - 2N
2025-10-09 13:06 ` [PATCH net v3 1/1] " Kamil Horák - 2N
@ 2025-10-14 1:10 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2025-10-14 1:10 UTC (permalink / raw)
To: =?utf-8?q?Kamil_Hor=C3=A1k_-_2N_=3Ckamilh=40axis=2Ecom=3E?=
Cc: florian.fainelli, bcm-kernel-feedback-list, andrew, hkallweit1,
linux, davem, edumazet, kuba, pabeni, netdev
Hello:
This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@kernel•org>:
On Thu, 9 Oct 2025 15:06:55 +0200 you wrote:
> Software RGMII - GMII/MII/MII-Lite selection.
>
> The bcm54811 PHY needs this bit to be configured in addition to hardware
> strapping of the PHY chip to desired mode.
>
> This configuration step got lost during the refining of previous patch.
>
> [...]
Here is the summary with links:
- [net,v3,1/1] net: phy: bcm54811: Fix GMII/MII/MII-Lite selection
https://git.kernel.org/netdev/net/c/e4d0c909bf83
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 5+ messages in thread