Hi Andrew, Florian, Heiner

You are all Ethernet MDIO bus and PHY experts, I have some questions may need 
your help, thanks a lot in advance.

For many board designs, if it has dual MAC instances, they always share one 
MDIO bus to save PINs. Such as, i.MX6UL EVK board:

&fec1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet1>;
        phy-mode = "rmii";
        phy-handle = <&ethphy0>;
        phy-supply = <&reg_peri_3v3>;
        status = "okay";
};

&fec2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet2>;
        phy-mode = "rmii";
        phy-handle = <&ethphy1>;
        phy-supply = <&reg_peri_3v3>;
        status = "okay";

        mdio {
                #address-cells = <1>;
                #size-cells = <0>;

                ethphy0: ethernet-phy@2 {
                        compatible = "ethernet-phy-id0022.1560";
                        reg = <2>;
                        micrel,led-mode = <1>;
                        clocks = <&clks IMX6UL_CLK_ENET_REF>;
                        clock-names = "rmii-ref";

                };

                ethphy1: ethernet-phy@1 {
                        compatible = "ethernet-phy-id0022.1560";
                        reg = <1>;
                        micrel,led-mode = <1>;
                        clocks = <&clks IMX6UL_CLK_ENET2_REF>;
                        clock-names = "rmii-ref";
                };
        };
};

For FEC driver now, there is a patch from Fabio to prevent unbind/bind feature 
since dual FEC controllers share one MDIO bus. 
(https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/drivers/net/ethernet/freescale/fec_main.c?h=next-20210324&id=272bb0e9e8cdc76e04baeefa0cd43019daa0841b)
If we unbind fec2 and then fec1 can't work since MDIO bus is controlled by 
FEC1, FEC2 can't use it independently.

My question is that if we want to implement unbind/bind feature, what need we 
do? It seems to abstract an independent MDIO bus for dual FEC instances. I look 
at the MDIO dt bindings, it seems support such case as it has "reg" property. 
(Documentation/devicetree/bindings/net/mdio.yaml)

Is there any implements existing in the Linux kernel for a reference? From your 
opinions, do you think it is necessary to improve it?

Best Regards,
Joakim Zhang

Reply via email to