Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: phy: broadcom: implement .disable_autonomous_eee for BCM54xx

Implement the .disable_autonomous_eee callback for the BCM54210E.

In AutogrEEEn mode the PHY manages EEE autonomously. Clearing the
AutogrEEEn enable bit in MII_BUF_CNTL_0 switches the PHY to Native
EEE mode.

Signed-off-by: Nicolai Buchwitz <nb@tipi-net.de>
Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://patch.msgid.link/20260406-devel-autonomous-eee-v1-2-b335e7143711@tipi-net.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Nicolai Buchwitz and committed by
Jakub Kicinski
bcb3e89f 7ef629b4

+10
+7
drivers/net/phy/broadcom.c
··· 1452 1452 return genphy_read_status(phydev); 1453 1453 } 1454 1454 1455 + static int bcm54xx_disable_autonomous_eee(struct phy_device *phydev) 1456 + { 1457 + return bcm_phy_modify_exp(phydev, BCM54XX_TOP_MISC_MII_BUF_CNTL0, 1458 + BCM54XX_MII_BUF_CNTL0_AUTOGREEEN_EN, 0); 1459 + } 1460 + 1455 1461 static struct phy_driver broadcom_drivers[] = { 1456 1462 { 1457 1463 PHY_ID_MATCH_MODEL(PHY_ID_BCM5411), ··· 1501 1495 .get_wol = bcm54xx_phy_get_wol, 1502 1496 .set_wol = bcm54xx_phy_set_wol, 1503 1497 .led_brightness_set = bcm_phy_led_brightness_set, 1498 + .disable_autonomous_eee = bcm54xx_disable_autonomous_eee, 1504 1499 }, { 1505 1500 PHY_ID_MATCH_MODEL(PHY_ID_BCM5461), 1506 1501 .name = "Broadcom BCM5461",
+3
include/linux/brcmphy.h
··· 266 266 #define BCM54XX_TOP_MISC_IDDQ_SD (1 << 2) 267 267 #define BCM54XX_TOP_MISC_IDDQ_SR (1 << 3) 268 268 269 + #define BCM54XX_TOP_MISC_MII_BUF_CNTL0 (MII_BCM54XX_EXP_SEL_TOP + 0x00) 270 + #define BCM54XX_MII_BUF_CNTL0_AUTOGREEEN_EN BIT(0) 271 + 269 272 #define BCM54XX_TOP_MISC_LED_CTL (MII_BCM54XX_EXP_SEL_TOP + 0x0C) 270 273 #define BCM54XX_LED4_SEL_INTR BIT(1) 271 274