Skip to content

Commit e4d0c90

Browse files
Kamil Horák - 2Nkuba-moo
authored andcommitted
net: phy: bcm54811: Fix GMII/MII/MII-Lite selection
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: 3117a11 ("net: phy: bcm54811: PHY initialization") Signed-off-by: Kamil Horák - 2N <kamilh@axis.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Link: https://patch.msgid.link/20251009130656.1308237-2-kamilh@axis.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 70f92ab commit e4d0c90

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

drivers/net/phy/broadcom.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ static int bcm5481x_set_brrmode(struct phy_device *phydev, bool on)
405405
static int bcm54811_config_init(struct phy_device *phydev)
406406
{
407407
struct bcm54xx_phy_priv *priv = phydev->priv;
408-
int err, reg, exp_sync_ethernet;
408+
int err, reg, exp_sync_ethernet, aux_rgmii_en;
409409

410410
/* Enable CLK125 MUX on LED4 if ref clock is enabled. */
411411
if (!(phydev->dev_flags & PHY_BRCM_RX_REFCLK_UNUSED)) {
@@ -434,6 +434,24 @@ static int bcm54811_config_init(struct phy_device *phydev)
434434
if (err < 0)
435435
return err;
436436

437+
/* Enable RGMII if configured */
438+
if (phy_interface_is_rgmii(phydev))
439+
aux_rgmii_en = MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN |
440+
MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN;
441+
else
442+
aux_rgmii_en = 0;
443+
444+
/* Also writing Reserved bits 6:5 because the documentation requires
445+
* them to be written to 0b11
446+
*/
447+
err = bcm54xx_auxctl_write(phydev,
448+
MII_BCM54XX_AUXCTL_SHDWSEL_MISC,
449+
MII_BCM54XX_AUXCTL_MISC_WREN |
450+
aux_rgmii_en |
451+
MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RSVD);
452+
if (err < 0)
453+
return err;
454+
437455
return bcm5481x_set_brrmode(phydev, priv->brr_mode);
438456
}
439457

include/linux/brcmphy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137

138138
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC 0x07
139139
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_WIRESPEED_EN 0x0010
140+
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RSVD 0x0060
140141
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_EN 0x0080
141142
#define MII_BCM54XX_AUXCTL_SHDWSEL_MISC_RGMII_SKEW_EN 0x0100
142143
#define MII_BCM54XX_AUXCTL_MISC_FORCE_AMDIX 0x0200

0 commit comments

Comments
 (0)