ConnectCore i.MX6UL SBC: trouble disabling one of the ethernet ports

Hi,

I am trying to disable fec2 in the Device Tree.

If I disable fec1 but keep fec2 enabled in the device tree, everything works fine:
&fec1 {status = “disabled”;};
&fec2 {status = “okay”;};
An ifconfig -a returns only eth1 and no eth0, as expected. And I can manually change the IP address of eth1.

If I do the opposite, then I can no longer talk to eth0.
&fec1 {status = “okay”;};
&fec2 {status = “disabled”;};
An ifconfig -a returns only eth0 and no eth1, as expected.
root@ccimx6ulsbc:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:40:9D:98:B6:86
inet addr:192.168.42.30 Bcast:192.168.42.255 Mask:255.255.255.0

But I can no longer acces eth0 to change its IP address:
root@ccimx6ulsbc:~# ifconfig eth0 192.168.1.99
ifconfig: SIOCSIFFLAGS: No such device

Any thoughts are welcome.

Thanks!

The problem was in file imx6ul-ccimx6ulsbc.dtsi:

  • fec2 includes node mdio
  • if fec2 is disabled, so is node mdio
  • so I had to move node mdio into fec1

The file actually explains that in the following comment:
/*
* The MDIO bus is shared between ENET1 and ENET2. If you only want
* to enable ENET1, this node must be moved to fec1 node, and the
* pinctrl-0 of fec1 must contain the IOMUX for the MDIO bus on ENET1
* (pintrl_enet1_mdio).
*/