1:fixed-link的常用配置
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fec1>;
fsl,magic-packet;
status = "okay";
phy-mode = "rgmii";
fsl,magic-packet;
#phy-handle = <ðphy0>;
status = "okay";
fixed-link {
speed = <1000>;
full-duplex;
};
ethphy0: ethernet-phy@0 {
compatible = "Microchip KSZ989X Switch";
reg = <0>;
};
};
&i2c3 {
clock-frequency = <100000>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c3>;
status = "okay";
i2c_ksz9897: ksz9897@5f {
compatible = "microchip,ksz9897";
reg = <0x5f>;
phy-mode = "rgmii-txid";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ksz9897_irq>;
interrupt-parent = <&gpio1>;
interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
label = "lan1";
};
port@1 {
reg = <1>;
label = "lan2";
};
port@2 {
reg = <2>;
label = "lan3";
};
port@3 {
reg = <3>;
label = "lan4";
};
port@4 {
reg = <4>;
label = "lan5";
};
port@5 {
reg = <5>;
label = "cpu";
ethernet = <&fec1>;
fixed-link {
speed = <1000>;
full-duplex;
};
};
port@6 {
reg = <6>;
label = "lan6";
fixed-link {
speed = <1000>;
full-duplex;
};
};
};
};
上面的配置中,我们需要关注:phy-mode = "rgmii"; phy-handle = <ðphy0>; phy-handle = <ðphy0>; 这些节点的定义,这个在imx的驱动中会对其进行解析,Ethernet对应的驱动程序如下
2:Generic PHY
这个是通用的PHY芯片的处理接口,在系统中找不到特定PHY对应的驱动设备的时候,使用此驱动程序。
在imx8mm的平台中接入KSZ9897的芯片,注意在没有加载9897的驱动i2c-ksz9897.ko的时候,可以只加载Generic PHY]来达到网络通,但是switch的功能完全没有利用起来。
上面的这些信息中,完全没有ksz9897的驱动的加载及初始化的信息。
同时请务必去除imx8mm中不相关的驱动程序,不然网络是不同的,
其对比内核配置以及启动过程,其主要差异在于下面:NXP PHY: loading NXP PHY driver: [autonomous mode]