Re: [PATCH net-next 2/3] net: phy: restore the interrupt after a generic-driver bind cycle
From: Andrew Lunn
Date: Sat Aug 22 2026 - 15:29:11 EST
> if (phydev->is_genphy_driven) {
> + /* Give back the interrupt phy_probe() parked when the generic
> + * driver bound, before the device becomes bindable again. A
> + * PHY that was in polling mode for any other reason had
> + * PHY_POLL saved, and the restore is skipped.
> + */
> + if (phydev->genphy_saved_irq > 0 && phydev->irq == PHY_POLL)
> + phydev->irq = phydev->genphy_saved_irq;
> + phydev->genphy_saved_irq = 0;
> +
I _think_ it can be simpler:
int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio,
struct phy_device *phy,
struct fwnode_handle *child, u32 addr)
{
int rc;
rc = fwnode_irq_get(child, 0);
/* Don't wait forever if the IRQ provider doesn't become available,
* just fall back to poll mode
*/
if (rc == -EPROBE_DEFER)
rc = driver_deferred_probe_check_state(&phy->mdio.dev);
if (rc == -EPROBE_DEFER)
return rc;
if (rc > 0) {
phy->irq = rc;
mdio->irq[addr] = rc;
} else {
phy->irq = mdio->irq[addr];
}
So if there was an interrupt in DT, mdio->irq[addr] has been set to
it. So all i think you need is
phydev->irq = mdio->irq[addr];
And a comment.
Andrew
---
pw-bot: cr