linux/drivers/net/phy
Thanh Quan 298574936a net: phy: dp83869: fix STRAP_OPMODE bitmask
According to the TI DP83869HM datasheet Revision D (June 2025), section
7.6.1.41 STRAP_STS Register, the STRAP_OPMODE bitmask is bit [11:9].
Fix this.

In case the PHY is auto-detected via PHY ID registers, or not described
in DT, or, in case the PHY is described in DT but the optional DT property
"ti,op-mode" is not present, then the driver reads out the PHY functional
mode (RGMII, SGMII, ...) from hardware straps.

Currently, all upstream users of this PHY specify both DT compatible string
"ethernet-phy-id2000.a0f1" and ti,op-mode = <DP83869_RGMII_COPPER_ETHERNET>
property, therefore it seems no upstream users are affected by this bug.

The driver currently interprets bits [2:0] of STRAP_STS register as PHY
functional mode. Those bits are controlled by ANEG_DIS, ANEGSEL_0 straps
and an always-zero reserved bit. Systems that use RGMII-to-Copper functional
mode are unlikely to disable auto-negotiation via ANEG_DIS strap, or change
auto-negotiation behavior via ANEGSEL_0 strap. Therefore, even with this bug
in place, the STRAP_STS register content is likely going to be interpreted
by the driver as RGMII-to-Copper mode.

However, for a system with PHY functional mode strapping set to other mode
than RGMII-to-Copper, the driver is likely to misinterpret the strapping
as RGMII-to-Copper and misconfigure the PHY.

For example, on a system with SGMII-to-Copper strapping, the STRAP_STS
register reads as 0x0c20, but the PHY ends up being configured for
incompatible RGMII-to-Copper mode.

Fixes: 0eaf8ccf20 ("net: phy: dp83869: Set opmode from straps")
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Thanh Quan <thanh.quan.xn@renesas.com>
Signed-off-by: Hai Pham <hai.pham.ud@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> # Port from U-Boot to Linux
Link: https://patch.msgid.link/20251027140320.8996-1-marek.vasut+renesas@mailbox.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2025-10-29 17:59:09 -07:00
..
aquantia net: phy: aquantia: delete aqr_firmware_read_fingerprint() prototype 2025-09-09 18:24:17 -07:00
mediatek net: phy: mtk-2p5ge: Add LED support for MT7988 2025-08-28 16:43:21 -07:00
mscc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2025-09-04 13:33:00 -07:00
qcom net: phy: update all PHYs to use sfp_get_module_caps() 2025-09-22 16:05:15 -07:00
realtek net: phy: realtek: fix rtl8221b-vm-cg name 2025-10-17 16:34:37 -07:00
adin.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
adin1100.c net: phy: Allow loopback speed selection for PHY drivers 2025-03-20 08:45:08 +01:00
air_en8811h.c net: phy: air_en8811h: Introduce resume/suspend and clk_restore_context to ensure correct CKO settings after network interface reinitialization. 2025-07-01 19:35:43 -07:00
amd.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
as21xxx.c net: phy: as21xxx: better handle PHY HW reset on soft-reboot 2025-08-26 17:09:27 -07:00
ax88796b.c net: phy: ax88796b: Replace hard-coded values with PHY_ID_MATCH_MODEL() 2025-09-22 16:38:59 -07:00
ax88796b_rust.rs rust: module: introduce authors key 2025-03-10 15:12:17 +01:00
bcm-cygnus.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm-phy-lib.c
bcm-phy-lib.h
bcm-phy-ptp.c broadcom: fix support for PTP_EXTTS_REQUEST2 ioctl 2025-09-22 11:36:30 -07:00
bcm7xxx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm63xx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
bcm87xx.c net: phy: bcm87xx: simplify .match_phy_device OP 2025-05-21 15:56:09 -07:00
bcm54140.c net: phy: move PHY package related code from phy.h to phy_package.c 2025-03-05 19:13:53 -08:00
bcm84881.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
broadcom.c net: phy: bcm54811: Fix GMII/MII/MII-Lite selection 2025-10-13 17:36:20 -07:00
cicada.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
cortina.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
davicom.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83tc811.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83td510.c net: phy: dp83td510: introduce LED framework support 2025-02-10 17:49:19 -08:00
dp83tg720.c net: phy: dp83tg720: switch to adaptive polling and remove random delays 2025-06-13 18:09:47 -07:00
dp83640.c net: phy: dp83640: improve phydev and driver removal handling 2025-09-23 16:58:42 -07:00
dp83640_reg.h
dp83822.c net: phy: simplify phy_get_internal_delay() 2025-06-12 18:23:54 -07:00
dp83848.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
dp83867.c net: phy: dp83867: Disable EEE support as not implemented 2025-10-24 19:10:03 -07:00
dp83869.c net: phy: dp83869: fix STRAP_OPMODE bitmask 2025-10-29 17:59:09 -07:00
et1011c.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
fixed_phy.c net: phy: fixed_phy: remove struct fixed_mdio_bus 2025-09-09 18:11:55 -07:00
icplus.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
intel-xway.c net: phy: simplify phy_get_internal_delay() 2025-06-12 18:23:54 -07:00
Kconfig net: phy: move config symbol MDIO_BUS to drivers/net/phy/Kconfig 2025-09-23 16:56:27 -07:00
linkmode.c
lxt.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
Makefile net: phy: remove mdio_board_info support from phylib 2025-09-17 15:24:01 -07:00
marvell-88q2xxx.c net: phy: marvell-88q2xxx: Enable temperature measurement in probe again 2025-05-15 12:32:09 +02:00
marvell-88x2222.c net: phy: update all PHYs to use sfp_get_module_caps() 2025-09-22 16:05:15 -07:00
marvell.c net: phy: update all PHYs to use sfp_get_module_caps() 2025-09-22 16:05:15 -07:00
marvell10g.c net: phy: update all PHYs to use sfp_get_module_caps() 2025-09-22 16:05:15 -07:00
mdio-open-alliance.h
mdio_bus.c net: mdiobus: release reset_gpio in mdiobus_unregister_device() 2025-08-12 12:32:58 +02:00
mdio_bus_provider.c net: phy: remove mdio_board_info support from phylib 2025-09-17 15:24:01 -07:00
mdio_device.c net: phy: assign default match function for non-PHY MDIO devices 2025-06-12 18:12:37 -07:00
mdio_devres.c
meson-gxl.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
micrel.c net: phy: micrel: always set shared->phydev for LAN8814 2025-10-23 07:11:48 -07:00
microchip.c net: phy: microchip: limit 100M workaround to link-down events on LAN88xx 2025-07-10 18:08:16 -07:00
microchip_rds_ptp.c net: ptp: introduce .supported_perout_flags to ptp_clock_info 2025-04-15 20:20:58 -07:00
microchip_rds_ptp.h net: phy: microchip_rds_ptp: Header file library changes for PEROUT 2025-01-16 17:27:56 -08:00
microchip_t1.c net: phy: microchip_t1: Enable pin out specific to lan887x phy for PEROUT signal 2025-01-16 17:27:56 -08:00
microchip_t1s.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
mii_timestamper.c
motorcomm.c net: phy: motorcomm: Add support for PHY LEDs on YT8521 2025-08-14 17:32:01 -07:00
mxl-86110.c net: phy: mxl-86110: add basic support for MxL86111 PHY 2025-08-25 17:07:01 -07:00
mxl-gpy.c net: phy: mxl-gpy: remove call to devm_hwmon_sanitize_name 2025-03-21 18:05:30 +01:00
national.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
ncn26000.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
nxp-c45-tja11xx-macsec.c net: phy: nxp-c45-tja11xx: use bitmap_empty() where appropriate 2025-09-16 12:15:49 +02:00
nxp-c45-tja11xx.c net: phy: nxp-c45-tja11xx: fix the PHY ID mismatch issue when using C45 2025-08-12 12:01:07 +02:00
nxp-c45-tja11xx.h
nxp-cbtx.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
nxp-tja11xx.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
open_alliance_helpers.c
open_alliance_helpers.h
phy-c45.c net: phy: move definition of genphy_c45_driver to phy_device.c 2025-06-12 18:23:08 -07:00
phy-caps.h net: phy: annotate linkmode initializers as not used after init phase 2025-09-30 13:17:31 +02:00
phy-core.c net: phy: MII-Lite PHY interface mode 2025-07-09 19:32:30 -07:00
phy.c net: phy: clear link parameters on admin link down 2025-09-18 15:43:26 -07:00
phy_caps.c net: phy: annotate linkmode initializers as not used after init phase 2025-09-30 13:17:31 +02:00
phy_device.c net: phy: annotate linkmode initializers as not used after init phase 2025-09-30 13:17:31 +02:00
phy_led_triggers.c net: phy: leds: fix memory leak 2025-04-22 18:25:18 -07:00
phy_link_topology.c phy: fix xa_alloc_cyclic() error handling 2025-03-19 09:57:37 +00:00
phy_package.c net: phy: make phy_package a separate module 2025-06-16 14:59:30 -07:00
phylib-internal.h net: phy: move __phy_package_[read|write]_mmd to phy_package.c 2025-06-16 14:59:29 -07:00
phylib.h net: phy: move PHY package MMD access function declarations from phy.h to phylib.h 2025-03-17 19:07:54 +01:00
phylink.c net: phylink: use sfp_get_module_caps() 2025-09-22 16:05:15 -07:00
qsemi.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
qt2025.rs Rust changes for v6.15 2025-03-30 17:03:26 -07:00
rockchip.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
sfp-bus.c net: sfp: remove old sfp_parse_* functions 2025-09-22 16:05:15 -07:00
sfp.c net: sfp: improve poll interval handling 2025-09-30 13:22:49 +02:00
sfp.h net: sfp: convert sfp quirks to modify struct sfp_module_support 2025-09-22 16:05:14 -07:00
smsc.c net: phy: smsc: add proper reset flags for LAN8710A 2025-07-30 18:14:11 -07:00
ste10Xp.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
stubs.c
swphy.c
swphy.h
teranetics.c net: phy: pass PHY driver to .match_phy_device OP 2025-05-21 15:56:09 -07:00
uPD60620.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
vitesse.c net: phy: Constify struct mdio_device_id 2025-01-14 15:01:32 -08:00
xilinx_gmii2rgmii.c net: phy: Allow loopback speed selection for PHY drivers 2025-03-20 08:45:08 +01:00