mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 00:22:00 +02:00
net: enetc: do not skip setting LaBCR[MDIO_PHYAD_PRTAD] for addr 0
Given that some platforms may use PHY address 0 (I suppose the PHY may
not treat address 0 as a broadcast address or default response address).
It is possible for some boards to connect multiple PHYs to the same
ENETC MAC, for example:
- a PHY with a non-zero address connects to ENETC MAC through SGMII
interface (selected via DTS_A)
- a PHY with address 0 connects to ENETC MAC through RGMII interface
(selected via DTS_B)
For the case where the ENETC port MDIO is used to manage the PHY, when
switching from DTS_A to DTS_B via soft reboot, LaBCR[MDIO_PHYAD_PRTAD]
must be updated to 0 because the NETCMIX block is not reset during soft
reboot. However, the current driver explicitly skips configuring address
0, causing LaBCR[MDIO_PHYAD_PRTAD] to retain its old value.
Therefore, remove the special-case skip of PHY address 0 so that valid
configurations using address 0 are properly supported.
Fixes: 6633df05f3 ("net: enetc: set the external PHY address in IERB for port MDIO usage")
Fixes: 50bfd9c06f ("net: enetc: set external PHY address in IERB for i.MX94 ENETC")
Reviewed-by: Clark Wang <xiaoning.wang@nxp.com>
Signed-off-by: Wei Fang <wei.fang@nxp.com>
Link: https://patch.msgid.link/20260305031211.904812-3-wei.fang@nxp.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
246953f33e
commit
dbe17e7783
|
|
@ -438,12 +438,6 @@ static int imx95_enetc_mdio_phyaddr_config(struct platform_device *pdev)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* The default value of LaBCR[MDIO_PHYAD_PRTAD ] is
|
||||
* 0, so no need to set the register.
|
||||
*/
|
||||
if (!addr)
|
||||
continue;
|
||||
|
||||
switch (bus_devfn) {
|
||||
case IMX95_ENETC0_BUS_DEVFN:
|
||||
netc_reg_write(priv->ierb, IERB_LBCR(0),
|
||||
|
|
@ -590,12 +584,6 @@ static int imx94_enetc_mdio_phyaddr_config(struct netc_blk_ctrl *priv,
|
|||
return addr;
|
||||
}
|
||||
|
||||
/* The default value of LaBCR[MDIO_PHYAD_PRTAD] is 0,
|
||||
* so no need to set the register.
|
||||
*/
|
||||
if (!addr)
|
||||
return 0;
|
||||
|
||||
if (phy_mask & BIT(addr)) {
|
||||
dev_err(dev,
|
||||
"Find same PHY address in EMDIO and ENETC node\n");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user