On 2016/12/14 23:34, woojung....@microchip.com wrote: >> I just want to commit the unregister patch and found this patch. Good job! >> But I consider this patch may miss something. >> If one SoC has 2 MAC ports and each port uses the different network driver, >> the 2 drivers may register fixup for the same PHY chip with different >> "run" function because the PHY chip works in different mode. >> In such a case, this patch doesn't consider "run" function and may cause >> problem. >> When removing the driver which register fixup at last, it will remove another >> driver's fixup. >> Should this condition be considered and fixed? > Good point. > Current phy fixup is independent LIST from phydev structure, > and, fixup runs in two places of phy_device_register() and phy_init_hw(). > It's not clear that it needs two separate fixup, but it may be good idea to > pass phy fixup when calling phy_attach() or phy_attach_direct() and > put it under phydev structure. > So, fixup can be called at phy_init_hw() per phy device and remove > When phy detached. > Welcome any comments.
I rethink this problem and find that the "fixup->bus_id" may be a flag to distinguish different PHY device. In such condition, the driver should call "phy_register_fixup/phy_unregister_fixup" directly instead of "*_for_uid" interface. Regards, Dongpo .