modify live DT with OF_LIVE breaking phy_connect?

Tim Harvey tharvey at gateworks.com
Fri Oct 11 00:05:02 CEST 2024


On Tue, Oct 8, 2024 at 6:56 PM Simon Glass <sjg at chromium.org> wrote:
>
> Hi Tim,
>
> On Mon, 7 Oct 2024 at 14:16, Tim Harvey <tharvey at gateworks.com> wrote:
> >
> > Greetings,
> >
> > I have a need to adjust the U-Boot device-tree live with some board
> > revision specific fixups. It would seem I need to enable OF_LIVE to do
> > so but when I do this on imx8mm U-Boot proper seems to fail
> > phy_connect() called from the network device probe.
> >
> > The board I'm working with is an imx8mm-venice board and using
> > imx8mm_venice_defconfig (without OF_LIVE) results in:
> > U-Boot 2024.10-00735-gc530f6079c70 (Oct 07 2024 - 12:58:38 -0700)
> >
> > CPU:   Freescale i.MX8MMQ rev1.0 1600 MHz (running at 1200 MHz)
> > CPU:   Industrial temperature grade (-40C to 105C) at 44C
> > Reset cause: POR
> > Model: Gateworks Venice GW73xx-0x i.MX8MM Development Kit
> > DRAM:  4 GiB
> > Core:  226 devices, 32 uclasses, devicetree: separate
> > WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> > MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> > Loading Environment from MMC... Reading from redundant MMC(2)... OK
> > In:    serial at 30890000
> > Out:   serial at 30890000
> > Err:   serial at 30890000
> > SEC0:  RNG instantiated
> > Net:   GPY111 eth0: ethernet at 30be0000 [PRIME]
> > GSC     : boot watchdog disabled
> > Thermal protection:enabled at 96C
> > Hit any key to stop autoboot:  0
> >
> > Yet as soon as I enable OF_LIVE:
> >
> > U-Boot 2024.10-00735-gc530f6079c70 (Oct 07 2024 - 12:59:35 -0700)
> >
> > CPU:   Freescale i.MX8MMQ rev1.0 1600 MHz (running at 1200 MHz)
> > CPU:   Industrial temperature grade (-40C to 105C) at 49C
> > Reset cause: POR
> > Model: Gateworks Venice GW73xx-0x i.MX8MM Development Kit
> > DRAM:  4 GiB
> > Core:  214 devices, 32 uclasses, devicetree: separate
> > WDT:   Started watchdog at 30280000 with servicing every 1000ms (60s timeout)
> > MMC:   FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
> > Loading Environment from MMC... Reading from redundant MMC(2)... OK
> > In:    serial at 30890000
> > Out:   serial at 30890000
> > Err:   serial at 30890000
> > SEC0:  RNG instantiated
> > Net:   Could not get PHY for mdio: addr 0
> > Could not get PHY for FEC0: addr 0
> > Could not get PHY for mdio: addr 0
> > Could not get PHY for FEC0: addr 0
> > No ethernet found.
> > ^^^ phy_connect failing
> >
> > Any idea what I'm missing here?
> >
> > Are there other ways I should be modifying the live dt in U-Boot?
>

Hi Simon, thanks for the response.

> I am not sure, but the best option would be to debug the PHY stuff and
> try to see what is going wrong.
>
> Since the number of devices is smaller, I suspect that there is some
> code which doesn't use the ofnode API. But it is hard to say what is
> going on.
>

ok, I will look into that

> For modifying the devicetree, you can do it just before relocation
> using the flattree if you like. The reason livetree is better is that
> the nodes don't move around when changes are made.
>

Where is relocation done in this case where I'm using SPL and U-Boot
proper for imx8m based boards?

If I want to utilize dt overlays in U-Boot proper can you point me to
what is needed or some examples?

I'm intending to detect the presence of an add-in card that has a port
expander on it so as to allow that port expander to be accessed via
U-Boot. As a bit of a hack I'm currently using flat dt (!OF_LIVE) and
putting the port expander in the board dt and attempting to disable it
via dt modification in board_init(). As a better approach I could
attempt to add it to dt but using an overlay would make so much more
sense.

Best Regards,

Tim


More information about the U-Boot mailing list