Update: It turns out the reset controller I was using only reset the on-die switch, Benjamin found the reset register for the external switch and now everything is behaving MUCH more like normal. I'd say at this point I'm no longer stuck.

Thanks,

Caleb


On 27/01/2026 18:26, Caleb James DeLisle wrote:

Would there be any reason not to set BMCR_PDOWN in mt7530_phy_config_init() so we know they're in a consistent state?

Also if you happen to have an MT7621 sitting there running, would you mind setting BMCR_ANENABLE | BMCR_ANRESTART with mdio on a running port to see if it's the same behavior? The port should immediately die and then go into a loop trying to connect every few seconds / minutes depending on what it's connected to.

Whoops, spoke too soon. dsa_register_switch() (indirectly) calls phy_resume() so the phy is up while the port is down. However, adding this to mt7530_port_enable() does make it work:

    if (priv->id == ID_EN751221_EXT && phy)
        genphy_soft_reset(phy);

I note that if the port is brought up within seconds of having been reset, then it seems to work (at least sporadically) despite the BMCR_ANENABLE bug. I imagine this is something that can be tuned out, but given it's happening in the bootloader, I don't have much confidence that I'm going to find the knob to fix it. I've got a problem with my vendor OS image, but when I get that fixed I'll check that as well.

In the mean time, if any likely culprits come to mind, do let me know.

Thanks,

Caleb


_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to