On 9.8.2018 18:14, Andrew Lunn wrote: > Hi Anssi Hi!
>> macb_reset_hw() is called in init path too, though, so maybe clearing >> all bits is intentional / wanted to get the controller to a known state, >> even though the comment only mentions TX/RX? > You need to be careful here. Once of_mdiobus_register() is called, the > MDIO should be usable. If you happen to have an Ethernet switch on the > bus, it could be probed then. The DSA driver will start using the bus. > Or if you have a second PHY, connected to some other MAC, it could be > used by the other MAC. This all happens in the macb_probe function. > > Sometime later, the interface will be up'ed. At this point macb_open() > is called, which calls macb_init_hw(), which calls > macb_reset_hw(). What you don't want happening is changes to the NCR > at this point breaking an MDIO transaction which might be going on. > > Ideally, the MPE should be enabled before of_mdiobus_register(), and > left alone until mdiobus_unregister() is called in macb_remove(). Yep, fixing the use case of having PHYs of other MACs is why I wrote the patch :) Currently the reset code disables MPE while other MACs are using PHYs on the bus. -- Anssi Hannula / Bitwise Oy +358 503803997