Armbianのpatch/u-boot/u-boot-sunxi/board_orangepi3-lts/0001-add-orange-pi-3-lts-support.patch
DTSのレベルで
+&mdio {
+ ext_rgmii_phy: ethernet-phy@1 {
+ compatible = "ethernet-phy-ieee802.3-c22";
+ reg = <1>;
+
+ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */
+ reset-assert-us = <15000>;
+ reset-deassert-us = <40000>;
+ };
+};
が仕込まれてる。
kernel/archive/sunxi-6.7/patches.megous/arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch
こいつが答えみたい。結局、3.3V系/2.5V系の電源投入タイミングに加え、PD14 resetを入れないとマトモに動かない。
https://github.com/armbian/build/blob/main/patch/kernel/archive/sunxi-6.1/patches.megous/arm64-dts-allwinner-orange-pi-3-Enable-ethernet.patch
これを実現するにはDTSに手を加える必要があるし、mdioのreset-gpiosにも対応できるようカーネル(ドライバ側)の対応も必要になる。
お手軽お気軽hackでは済みそうにないぞ、コレ。
電源投入タイミングがめちゃくちゃでも、リセットだけで回避できるっていうんならそれで回避したいところではあるかなあ。あまり大きく手を入れるというのもどうかなーというの、あるし。