Unable to implement board fdt-fixup for imx8m CPU

Hugo Villeneuve hugo at hugovil.com
Tue Apr 25 04:17:42 CEST 2023


On Mon, 24 Apr 2023 20:09:53 -0500
Adam Ford <aford173 at gmail.com> wrote:

> On Mon, Apr 24, 2023 at 4:57 PM Hugo Villeneuve <hugo at hugovil.com> wrote:
> >
> > On Mon, 24 Apr 2023 15:01:35 -0600
> > Simon Glass <sjg at chromium.org> wrote:
> >
> > > Hi Hugo,
> > >
> > > On Mon, 24 Apr 2023 at 14:53, Hugo Villeneuve <hugo at hugovil.com> wrote:
> > > >
> > > > Hi,
> > > > according to this document:
> > > >
> > > >     doc/develop/driver-model/fdt-fixup.rst
> > > >
> > > > it is suggested that boards implement the board_fix_fdt() function to tweak the device tree. I am trying to do just that, but unfortunately I cannot because the following source file already has an implementation of board_fix_fdt():
> > > >
> > > >     arch/arm/mach-imx/imx8m/soc.c
> > > >
> > > > For all boards using a imx8m CPU, how can we implement board_fix_fdt()?
> > >
> > > If you enable CONFIG_EVENT you can use EVT_FT_FIXUP to add as many
> > > fixup functions as you need.
> > >
> > > Migration to use that mechanism everywhere hasn't really started, but
> > > I think it would be useful.
> >
> > Hi Simon,
> > to be more precise, I need to modify the FDT used by U-Boot to tweak some ethernet PHY properties before initializing the ethernet controller. I do _not_ need to fix the FDT before booting in the OS.
> 
> Can you modify the -u-boot.dtsi file?  You can add additional device
> tree stuff to that.  I think a few boards do this already specifically
> for the Ethernet stuff.
> 
> adam

Hi Adam,
I need to detect at runtime the SOM configuration from an EEPROM, and based on that information adjust the ethernet PHY property inside the device tree.

I have already done that with success, it works great and as a temporary workaround I simply call my own function imx8m_board_fix_fdt() at the end of the function board_fix_fdt() of arch/arm/mach-imx/imx8m/soc.c.

But I don't think that a "board" level function should have been put in a SOC/arch source file in arch/arm/mach-imx/imx8m/soc.c in the first place. If it were not for that, there wouldn't be any need to define something new (event or other).

Maybe we should try to remove that board level function from arch/arm/mach-imx/imx8m/soc.c and use some other already existing mechanism for SOC-level device tree fixups?

Hugo.

> >
> > With that in mind, do you still think using CONFIG_EVENT is the way to go? I am not sure from my reading of the source code because it seems that fixup events are called just before booting into the OS.
> >
> > Thank you,
> > Hugo.


More information about the U-Boot mailing list