我们的系统基于 sabresd i.MX6sx。
将 YOCTO 项目从 2.7 升级到 4.0 后,内核 4.9.87 到 5.15.87
现在不知何故 FEC 驱动程序未被探测到。
以太网控制器的 DTS 属性:
ethernet@2188000 {
fsl,num-tx-queues = <0x03>;
phy-handle = <0x2b>;
compa
tible = "fsl,imx6sx-fec fsl,imx6q-fec";
clocks = <0x02 0xac 0x02 0xe1 0x02 0xe4 0x02 0x11 0x02 0xe4>;
local-mac-address = [94 de 0e 03 01 a0];
eee-broken-100tx;
clock-names = "ipg ahb ptp enet_clk_ref enet_out";
fsl,num-rx-queues = <0x03>;
phy-reset-post-delay = <0x05>;
status = "okay";
interrupts = <0x00 0x76 0x04 0x00 0x77 0x04>;
eee-broken-1000t;
fsl,stop-mode = <0x06 0x10 0x03>;
pinctrl-assert-gpios = <0x11 0x10 0x00>;
reg = <0x2188000 0x4000>;
phy-mode = "rgmii-id";
pinctrl-0 = <0x28 0x29>;
phy-reset-duration = <0x0a>;
interrupt-names = "int0 pps";
phy-reset-gpios = <0x2a 0x07 0x00>;
pinctrl-names = "default";
mdio {
status = "okay";
#address-cells = <0x01>;
#size-cells = <0x00>;
ethernet-phy@1 {
phandle = <0x2b>;
reg = <0x01>;
};
};
};
我可以想象的内核 CONFIG 语句是相对于 FEC 驱动程序的:
builder@ubuntu-linux-18:~/projects/src/smartware_yocto4.0/build$ grep FEC ./tmp/work/smartoptics_dcp-poky-linux-gnueabi/linux-fslc-imx/5.15.87+gitAUTOINC+0eb4504bd3-r21/build/.config
CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
# CONFIG_XILINX_SDFEC is not set
CONFIG_FEC=y
# CONFIG_FEC_UIO is not set
builder@ubuntu-linux-18:~/projects/src/smartware_yocto4.0/build$
builder@ubuntu-linux-18:~/projects/src/smartware_yocto4.0/build$ grep PHYLIB ./tmp/work/smartoptics_dcp-poky-linux-gnueabi/linux-fslc-imx/5.15.87+gitAUTOINC+0eb4504bd3-r21/build/.config
CONFIG_PHYLIB=y
# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
builder@ubuntu-linux-18:~/projects/src/smartware_yocto4.0/build$ grep PHY ./tmp/work/smartoptics_dcp-poky-linux-gnueabi/linux-fslc-imx/5.15.87+gitAUTOINC+0eb4504bd3-r21/build/.config | egrep -v ^#
CONFIG_ARM_PATCH_PHYS_VIRT=y
CONFIG_ARCH_HAS_PHYS_TO_DMA=y
CONFIG_PHYLIB=y
CONFIG_SWPHY=y
CONFIG_FIXED_PHY=y
CONFIG_MICROSEMI_PHY=y
CONFIG_AT803X_PHY=y
CONFIG_GENERIC_PHY=y
CONFIG_PHY_FSL_IMX_PCIE=y
builder@ubuntu-linux-18:~/projects/src/smartware_yocto4.0/build$ grep MDIO ./tmp/work/smartoptics_dcp-poky-linux-gnueabi/linux-fslc-imx/5.15.87+gitAUTOINC+0eb4504bd3-r21/build/.config | egrep -v ^#
CONFIG_MDIO_DEVICE=y
CONFIG_MDIO_BUS=y
CONFIG_FWNODE_MDIO=y
CONFIG_OF_MDIO=y
CONFIG_MDIO_DEVRES=y
对于我们使用 phy 固定链路的另一种配置,FEC 被探测,使外部 MDIO phy 配置成为热门选择,我猜。
不确定这可能是什么,也不确定如何排除故障。