Мне нужно использовать два вывода, которые берут на узел, помеченный как fec2. Я попытался удалить его с помощью /delete-node/ &fec2
, но это дает мне ошибку компиляции, говорящую, что такого узла или метки нет.
Я хочу удалить fec2 и переместить его mdio на fec1, чтобы мое Ethernet-соединение все еще функционировало. Но когда я попробую именно это (см. Пример ниже), eth0 не получит IP-адрес.
imx6ul.dtsi содержит следующее:
/ {
soc {
/* Some soc configs */
aips1: aips-bus@02000000 {
/* aips configs */
fec2: ethernet@020b4000 {
compatible = "fsl,imx6ul-fec", "fsl,imx6q-fec";
reg = <0x020b4000 0x4000>;
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_ENET>,
<&clks IMX6UL_CLK_ENET_AHB>,
<&clks IMX6UL_CLK_ENET_PTP>,
<&clks IMX6UL_CLK_ENET2_REF_125M>,
<&clks IMX6UL_CLK_ENET2_REF_125M>;
clock-names = "ipg", "ahb", "ptp",
"enet_clk_ref", "enet_out";
stop-mode = <&gpr 0x10 4>;
fsl,num-tx-queues=<1>;
fsl,num-rx-queues=<1>;
fsl,magic-packet;
fsl,wakeup_irq = <0>;
status = "disabled";
};
};
aips2: aips-bus@02100000 {
/* aips configs */
fec1: ethernet@02188000 {
compatible = "fsl,imx6ul-fec", "fsl,imx6q-fec";
reg = <0x02188000 0x4000>;
interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_ENET>,
<&clks IMX6UL_CLK_ENET_AHB>,
<&clks IMX6UL_CLK_ENET_PTP>,
<&clks IMX6UL_CLK_ENET_REF>,
<&clks IMX6UL_CLK_ENET_REF>;
clock-names = "ipg", "ahb", "ptp",
"enet_clk_ref", "enet_out";
stop-mode = <&gpr 0x10 3>;
fsl,num-tx-queues=<1>;
fsl,num-rx-queues=<1>;
fsl,magic-packet;
fsl,wakeup_irq = <0>;
status = "disabled";
};
};
};
};
imx6ul-imx6ull-common.dtsi содержит следующую перезапись:
&fec1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet1>;
phy-mode = "rmii";
phy-reset-gpios=<&gpio5 0 1>;
phy-reset-duration=<100>;
phy-reset-on-resume;
phy-handle = <ðphy0>;
status = "okay";
};
&fec2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet2>;
phy-mode = "rmii";
phy-handle = <ðphy1>;
phy-reset-gpios=<&gpio1 10 1>;
phy-reset-duration=<100>;
phy-reset-on-resume;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
micrel,rmii-reference-clock-select-25-mhz;
clocks = <&rmii_ref_clk>;
clock-names = "rmii-ref";
reg = <1>;
};
ethphy1: ethernet-phy@3 {
compatible = "ethernet-phy-ieee802.3-c22";
micrel,rmii-reference-clock-select-25-mhz;
clocks = <&rmii_ref_clk>;
clock-names = "rmii-ref";
reg = <3>;
};
};
};
И мой device.dts содержит следующее:
#include "imx6ul.dtsi"
#include "imx6ul-imx6ull-var-dart-common.dtsi"
/* Disable the second ethernet port and remove the mdio for use in fec1 */
&fec2 {
status = "disabled";
/delete-node/ mdio;
};
/* Add the mdio to the fec1 interface */
&fec1 {
mdio {
#address-cells = <1>;
#size-cells = <0>;
ethphy0: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
micrel,rmii-reference-clock-select-25-mhz;
clocks = <&rmii_ref_clk>;
clock-names = "rmii-ref";
reg = <1>;
};
ethphy1: ethernet-phy@3 {
compatible = "ethernet-phy-ieee802.3-c22";
micrel,rmii-reference-clock-select-25-mhz;
clocks = <&rmii_ref_clk>;
clock-names = "rmii-ref";
reg = <3>;
};
};
};
Я ожидаю, что мое Ethernet-соединение все еще будет работать, а fec2 будет удалено.