On Wed, Sep 19, 2018 at 09:19:19AM +0000, Wang, Dongsheng wrote: > On 2018/9/18 20:35, Andrew Lunn wrote: > >>> If you want to describe the MDIO controller, then you embed a mdio > >>> subnode into your Ethernet MAC node: > >>> > >>> emac0: ethernet@feb20000 { > >>> mdio { > >>> #address-cells = <1>; > >>> #size-cells = <0>; > >>> > >>> phy0: ethernet-phy@0 { > >>> reg = <0>; > >>> }; > >>> }; > >>> }; > >>> > >>> And then each Ethernet MAC controller refers to their appropriate PHY > >>> device tree node using a phy-handle property to point to either their > >>> own MDIO controller, or another MAC's MDIO controller. > >> Sorry, I do not understand how phy-handle point to MDIO controller, > >> because phy-handle is defined to point to a phy. > > The MAC driver does not care what MDIO controller a PHY is on. All you > > need to do to register the PHY is: > > Yes, these are all things that must be done, and emac driver will > connect phy when mac up. > If we had a separate MDIO controller, the MAC would not care about MDIO > bus. But MDIO is integrated within the EMAC, and emac driver maintains > the mdio. > > Each EMAC do their mdio register/unregister. But in the shared scenario, > the EMACs that use the shared bus do not need to create an MDIO and > cannot release the Shared bus. Hi Dongsheng There is nothing new here. Many Ethernet drivers export an MDIO bus which is then used by some other device, often an Ethernet switch. Ordering should not be a problem, you just need to handle EPROBE_DEFER, which will happen if the MDIO bus has not yet been probed when you try to lookup the phy-handle. And once the phy has been connected, the MDIO bus will be locked, preventing it from being removed. > But ACPI environment my understand is this: ACPI is completely separate and should not affect the DT binding. I've not yet looked at the ACPI changes you added. > I will rework this patchset and maybe patches will be a delay for a few > days. Thanks Andrew