Need help with FDT overlay

Simon Glass sjg at chromium.org
Thu Apr 2 01:44:57 CEST 2026


Hi Matwey,

On Sun, 22 Mar 2026 at 07:03, Matwey V. Kornilov
<matwey.kornilov at gmail.com> wrote:
>
> сб, 21 мар. 2026 г. в 22:21, Simon Glass <sjg at chromium.org>:
> >
> > Hi Matwey,
> >
> > On Sat, 21 Mar 2026 at 11:20, Matwey V. Kornilov
> > <matwey.kornilov at gmail.com> wrote:
> > >
> > > I compile dtbo as the following;
> > >
> > > cpp -x assembler-with-cpp -I /home/matwey/lab/linux/include
> > > overlay.dtso overlay.i
> > > dtc -@ -O dtb -o overlay.dtbo overlay.i
> > >
> > > Decompiled overlay.dtbo looks like this:
> > >
> > > /dts-v1/;
> > >
> > > / {
> > >
> > >     fragment at 0 {
> > >         target = <0xffffffff>;
> > >
> > >         __overlay__ {
> > >             status = "okay";
> > >         };
> > >     };
> > >
> > >     fragment at 1 {
> > >         target = <0xffffffff>;
> > >
> > >         __overlay__ {
> > >             status = "okay";
> > >         };
> > >     };
> > >
> > >     fragment at 2 {
> > >         target-path = "/";
> > >
> > >         __overlay__ {
> > >
> > >             i2c-gpio {
> > >                 compatible = "i2c-gpio";
> > >                 sda-gpios = <0xffffffff 0x08 0x00 0x06>;
> > >                 scl-gpios = <0xffffffff 0x08 0x0f 0x06>;
> > >                 i2c-gpio,delay-us = <0x02>;
> > >                 #address-cells = <0x01>;
> > >                 #size-cells = <0x00>;
> > >                 status = "okay";
> > >                 phandle = <0x01>;
> > >             };
> > >         };
> > >     };
> > >
> > >     __symbols__ {
> > >         i2c_gpio = "/fragment at 2/__overlay__/i2c-gpio";
> > >     };
> > >
> > >     __fixups__ {
> > >         i2c0 = "/fragment at 0:target:0";
> > >         i2c1 = "/fragment at 1:target:0";
> > >         pio = "/fragment at 2/__overlay__/i2c-gpio:sda-gpios:0",
> > > "/fragment at 2/__overlay__/i2c-gpio:scl-gpios:0";
> > >     };
> > > };
> > >
> > >
> > > I am not sure about the size. How do I check it correctly? Now, I just do
> > >
> > > fdt resize 16384
> > >
> > > сб, 21 мар. 2026 г. в 18:02, Simon Glass <sjg at chromium.org>:
> > > >
> > > > Hi Matwey,
> > > >
> > > > On Sat, 21 Mar 2026 at 06:55, Matwey V. Kornilov
> > > > <matwey.kornilov at gmail.com> wrote:
> > > > >
> > > > > Hello,
> > > > >
> > > > > I am running U-boot 2026.01 with orangepi_zero2w config and I am
> > > > > trying to apply my hand-written dtbo via fdt apply.
> > > > > The issue is that the fdi apply command just hangs forever for me. The
> > > > > issue only appears when I try to append a new node to the root. How
> > > > > could I find what is going wrong here?
> > > > >
> > > > > The overlay source is the following:
> > > > >
> > > > > /dts-v1/;
> > > > > /plugin/;
> > > > >
> > > > > #include <dt-bindings/i2c/i2c.h>
> > > > > #include <dt-bindings/gpio/gpio.h>
> > > > >
> > > > >
> > > > > &i2c0 {
> > > > >     status = "okay";
> > > > > };
> > > > >
> > > > > &i2c1 {
> > > > >     status = "okay";
> > > > > };
> > > > >
> > > > > &{/} {
> > > > >     i2c_gpio: i2c-gpio {
> > > > >         compatible = "i2c-gpio";
> > > > >         sda-gpios = <&pio 8 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; // PI0  (29)
> > > > >         scl-gpios = <&pio 8 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; // PI15 (31)
> > > > >         i2c-gpio,delay-us = <2>;        /* ~100 kHz */
> > > > >         #address-cells = <1>;
> > > > >         #size-cells = <0>;
> > > > >         status = "okay";
> > > > >     };
> > > > > };
> > > > >
> > > >
> > > > Can you provide thte dtc command you are using to build this? Is there
> > > > enough spare space in the dtb? I'm not sure what would cause it to
> > > > hang.
> > > >
> > > > Regards,
> > > > Simon
> >
> > It might help to have the console log too. I can't see any way this
> > can hang unless the addreses are wrong and something important is
> > overwritten.
> >
> > Try this to see the address:
> >
> > fdt header
> >
> > Compare to 'meminfo' so you can tell that there is nothing important
> > above the fdt. Also where do you load the overlay?
> >
>
> Hi,
>
> I guess I found my mistake. I've been trying to apply the overlay to
> ${fdtcontroladdr}. It has been working while I updated only existing
> nodes.

OK good!

>
> Now, I do the following:
>
> cp.b ${fdtcontroladdr} ${fdt_addr_r} 0x8000
> fdt addr ${fdt_addr_r}
> fdt resize 10000
> fdt apply ${fdtoverlay_addr_r}
>
> I am not sure if there is a better way

Seems OK.

>
>
> > BTW U-Boot uses hex, so it should be 'fdt resize 4000'
>
> Then doc/usage/fdt_overlays.rst should be improved because now it says
> 'fdt resize 8192'.

Yes, please send a patch!

Regards,
Simon


More information about the U-Boot mailing list