Hi Josua My bisect showed me that after a device-tree sync the ethernet broke.
> > please take a look at this patch, I suspect it will (hack-)fix your > ethernet issue. > Yes.. it fixes the problem I am seeing. > > Unfortunately I had no time to revisit this yet and implement a correct > solution. > Would it be okay for you if I look into a proper solution? I have a handful of such devices here that are already or will be used in a CI farm so I am interested in using the latest U-Boot for them. > sincerely > Josua Mayer > > Am 28.07.22 um 09:08 schrieb Josua Mayer: > > Please hold off merging this patch until someone tested it, I can not do so > > this week. > > @Tom Can you confirm if this fixes the networking on your Cubox? > > Also note that the phy-handle property may or may not be required, I am not > > sure. > > > > sincerely > > Josua Mayer > > > > On Thu, Jul 28, 2022 at 7:05 AM Josua Mayer <jo...@solid-run.com> wrote: > > > > The i.MX6 Cubox-i and HummingBoards can have different PHYs at varying > > addresses. U-Boot needs to auto-detect which phy is actually present, > > and at which address it is responding. > > > > Auto-detection from multiple phy nodes specified in device-tree does not > > currently work correct. As a work-around merge all three possible phys > > into one node with the special address 0xffffffff which indicates to the > > generic phy driver to probe all addresses. > > Also fixup this fake address before booting Linux, *if* booting with > > U-Boot's internal dtb. > > > > Signed-off-by: Josua Mayer <jo...@solid-run.com> > > Fixes: d0399a46e7cd > > --- > > arch/arm/dts/imx6qdl-sr-som.dtsi | 30 +++++++++------------------- > > board/solidrun/mx6cuboxi/mx6cuboxi.c | 6 +++++- > > 2 files changed, 14 insertions(+), 22 deletions(-) > > > > diff --git a/arch/arm/dts/imx6qdl-sr-som.dtsi > > b/arch/arm/dts/imx6qdl-sr-som.dtsi > > index ce543e325c..2d7cbc26b3 100644 > > ---_a/arch/arm/dts/imx6qdl-sr-som.dtsi > > +++ b/arch/arm/dts/imx6qdl-sr-som.dtsi > > @@ -53,6 +53,7 @@ > > &fec { > > pinctrl-names = "default"; > > pinctrl-0 = <&pinctrl_microsom_enet_ar8035>; > > + phy-handle = <&phy>; > > phy-mode = "rgmii-id"; > > > > /* > > @@ -68,30 +69,17 @@ > > #address-cells = <1>; > > #size-cells = <0>; > > > > - /* > > - * The PHY can appear at either address 0 or 4 due to > > the > > - * configuration (LED) pin not being pulled > > sufficiently. > > - */ > > - ethernet-phy@0 { > > - reg = <0>; > > + phy: ethernet-phy@0 { > > + /* > > + * The PHY can appear either: > > + * - AR8035: at address 0 or 4 > > + * - ADIN1300: at address 1 > > + * Actual address being detected at runtime. > > + */ > > + reg = <0xffffffff>; > > qca,clk-out-frequency = <125000000>; > > qca,smarteee-tw-us-1g = <24>; > > - }; > > - > > - ethernet-phy@4 { > > - reg = <4>; > > - qca,clk-out-frequency = <125000000>; > > - qca,smarteee-tw-us-1g = <24>; > > - }; > > - > > - /* > > - * ADIN1300 (som rev 1.9 or later) is always at address > > 1. It > > - * will be enabled automatically by U-Boot if detected. > > - */ > > - ethernet-phy@1 { > > - reg = <1>; > > adi,phy-output-clock = "125mhz-free-running"; > > - status = "disabled"; > > }; > > }; > > }; > > diff --git a/board/solidrun/mx6cuboxi/mx6cuboxi.c > > b/board/solidrun/mx6cuboxi/mx6cuboxi.c > > index debf4f6a3b..52172a03b1 100644 > > ---_a/board/solidrun/mx6cuboxi/mx6cuboxi.c > > +++ b/board/solidrun/mx6cuboxi/mx6cuboxi.c > > @@ -446,7 +446,7 @@ static int find_ethernet_phy(void) > > */ > > int ft_board_setup(void *fdt, struct bd_info *bd) > > { > > - int node_phy0, node_phy1, node_phy4; > > + int node_phy, node_phy0, node_phy1, node_phy4; > > int ret, phy; > > bool enable_phy0 = false, enable_phy1 = false, enable_phy4 = > > false; > > enum board_type board; > > @@ -478,6 +478,10 @@ int ft_board_setup(void *fdt, struct bd_info *bd) > > return 0; > > } > > > > + // update U-Boot's own unified phy node phy address, if present > > + node_phy = fdt_path_offset(fdt, > > "/soc/bus@2100000/ethernet@2188000/mdio/phy"); > > + ret = fdt_setprop_u32(fdt, node_phy, "reg", phy); > > + > > // update all phy nodes status > > node_phy0 = fdt_path_offset(fdt, > > "/soc/bus@2100000/ethernet@2188000/mdio/ethernet-phy@0"); > > ret = fdt_setprop_string(fdt, node_phy0, "status", enable_phy0 > > ? "okay" : "disabled"); > > --_ > > 2.37.1 > > -- greets -- Christian Gmeiner, MSc https://christian-gmeiner.info/privacypolicy