Вот, что сейчас у меня прописано из устройств, висящих на шине AHB:
Код
ahb@80080000 {
usb0: usb@80080000 {
pinctrl-names = "default";
pinctrl-0 = <&usb0_pins_a>;
vbus-supply = <®_usb0_vbus>;
status = "okay";
};
usb1: usb@80090000 {
pinctrl-names = "default";
pinctrl-0 = <&usb1_pins_a>;
vbus-supply = <®_usb1_vbus>;
status = "okay";
};
mac0: ethernet@800f0000 {
phy-mode = "rmii";
pinctrl-names = "default";
pinctrl-0 = <&mac0_pins_custom>;
phy-reset-gpios = <&gpio2 13 GPIO_ACTIVE_LOW>;
phy-reset-duration = <100>;
status = "okay";
};
mac1: ethernet@800f4000 {
phy-mode = "rmii";
pinctrl-names = "default";
pinctrl-0 = <&mac1_pins_a>;
status = "okay";
};
GPIO2.13 - пин сброса физики, определен как hog-pin
Как я понимаю, чтобы заставить систему думать, что микросхемы две, надо отключить MDIO. Некоторые микросхемы PHY не имеют такого интерфейса.
Вторая теория состоит в том, чтобы подменять как-то адреса(то есть система будет думать, что шлет сигналы на выводы ETH0, а на самом деле на ETH1). Но это по-моему, либо сложно, либо невозможно.
И да, до этого все работало как часы, т.е. обе физики. Теперь в Linux ни одна не работает.
Если о чем-то скажет, приложу еще вывод ифконфиг:
Код
root@OpenWrt:/# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:01:87:22:33:44
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
eth1 Link encap:Ethernet HWaddr 00:01:87:00:00:00
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:48 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3320 (3.2 KiB) TX bytes:3320 (3.2 KiB)
Код
root@OpenWrt:/etc/init.d# ifconfig eth1 up
[ 382.377131] fec 800f4000.ethernet eth1: no PHY, assuming direct connection to switch
[ 382.385056] libphy: PHY fixed-0:00 not found
[ 382.389372] fec 800f4000.ethernet eth1: could not attach to PHY
root@OpenWrt:/etc/init.d# ifconfig eth0 up
[ 425.739776] fec 800f0000.ethernet eth0: Freescale FEC PHY driver [SMSC LAN8710/LAN8720] (mii_bus:phy_addr=800f0000.etherne:01, irq=-1)
[ 425.752812] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
root@OpenWrt:/etc/init.d# [ 427.734581] fec 800f0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 427.742637] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready