dtc: "syntax error" linked to &{label/subnode} syntax

Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Thanks Patrice

Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
You could try DTC=`which dtc` if you already have that in your system.
Regards, Simon

On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I also submited my branch on U-Boot CI, and i got the same issue, see https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/24185
Issue reproduced with DT file dts/upstream/src/arm/st/stm32mp151a-prtt1l.dtsi:72.1-2 syntax error
Thansk Patrice
You could try DTC=`which dtc` if you already have that in your system.
Regards, Simon

On 1/15/25 15:24, Patrice CHOTARD wrote:
On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I mean, it's ok with newer version of dtc : DTC 1.7.0-gbcd02b52.
and in U-Boot CI we got the issue as shown just below
I also submited my branch on U-Boot CI, and i got the same issue, see https://source.denx.de/u-boot/custodians/u-boot-stm/-/pipelines/24185
Issue reproduced with DT file dts/upstream/src/arm/st/stm32mp151a-prtt1l.dtsi:72.1-2 syntax error
Thansk Patrice
You could try DTC=`which dtc` if you already have that in your system.
Regards, Simon

On Wed, Jan 15, 2025 at 03:39:20PM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:24, Patrice CHOTARD wrote:
On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I mean, it's ok with newer version of dtc : DTC 1.7.0-gbcd02b52.
Ah, so, sigh, we need to update DTC. I stopped my last upgrade there because other changes it made grew the binary size for everyone and didn't get back to it. I guess another attempt is in order.

On 1/15/25 15:44, Tom Rini wrote:
On Wed, Jan 15, 2025 at 03:39:20PM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:24, Patrice CHOTARD wrote:
On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I mean, it's ok with newer version of dtc : DTC 1.7.0-gbcd02b52.
Ah, so, sigh, we need to update DTC. I stopped my last upgrade there because other changes it made grew the binary size for everyone and didn't get back to it. I guess another attempt is in order.
Hi Tom
Do you know when you will be able to provide a DTC update in master or next branch ?
Thanks Patrice

On Tue, Jan 28, 2025 at 08:47:37AM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:44, Tom Rini wrote:
On Wed, Jan 15, 2025 at 03:39:20PM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:24, Patrice CHOTARD wrote:
On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote:
Hi
I am currently converting STM32MP platforms to OF_UPSTREAM. As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y and CONFIG_OF_UPSTREAM_VENDOR="st" are set.
So all dts/upstream/src/arm/st/* dts files are compiled.
I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and dts/upstream/src/arm/st/stm32mp15*-mec*.* files.
To be more precise, these files are using a syntax which follows this format &{label/subnode} to override some nodes.
This leads to DTC error:
AR drivers/usb/gadget/built-in.o LD u-boot OBJCOPY u-boot.srec OBJCOPY u-boot-nodtb.bin SYM u-boot.sym DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb DTC dts/upstream/src/arm/st/stm32746g-eval.dtb DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error FATAL ERROR: Unable to parse input tree
At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got :
&{qspi_bk1_pins_a/pins} { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; };
If i update it as following , the DTC compilation is OK :
&qspi_bk1_pins_a { pins { pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ /delete-property/ bias-disable; bias-pull-up; }; };
On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference.
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I mean, it's ok with newer version of dtc : DTC 1.7.0-gbcd02b52.
Ah, so, sigh, we need to update DTC. I stopped my last upgrade there because other changes it made grew the binary size for everyone and didn't get back to it. I guess another attempt is in order.
Hi Tom
Do you know when you will be able to provide a DTC update in master or next branch ?
Unfortunately trying to update resync-dtc-v1.6.0-31-gcbca977ea121-v5 to be on top of current (the first step to moving to 1.7.0 or 1.7.1) produced some test failures that don't exist when using the host dtc. Can you confirm if dtc 1.7.0 is new enough for this syntax? We might just need to change to building pylibfdt and not dtc as well (as having pylibfdt come via system python or pipx is differently tricky it seems).

On Tue, Jan 28, 2025 at 08:04:56AM -0600, Tom Rini wrote:
On Tue, Jan 28, 2025 at 08:47:37AM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:44, Tom Rini wrote:
On Wed, Jan 15, 2025 at 03:39:20PM +0100, Patrice CHOTARD wrote:
On 1/15/25 15:24, Patrice CHOTARD wrote:
On 1/15/25 14:19, Simon Glass wrote:
Hi Patrice,
On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD patrice.chotard@foss.st.com wrote: > > Hi > > I am currently converting STM32MP platforms to OF_UPSTREAM. > As we use same binary for several boards, flags CONFIG_OF_UPSTREAM_BUILD_VENDOR=y > and CONFIG_OF_UPSTREAM_VENDOR="st" are set. > > So all dts/upstream/src/arm/st/* dts files are compiled. > > I am facing an issue with dts/upstream/src/arm/st/stm32mp151a-prtt1* and > dts/upstream/src/arm/st/stm32mp15*-mec*.* files. > > To be more precise, these files are using a syntax which follows this > format &{label/subnode} to override some nodes. > > This leads to DTC error: > > AR drivers/usb/gadget/built-in.o > LD u-boot > OBJCOPY u-boot.srec > OBJCOPY u-boot-nodtb.bin > SYM u-boot.sym > DTC dts/upstream/src/arm/st/stm32mp157c-dhcom-picoitx.dtb > DTC dts/upstream/src/arm/st/stm32h750i-art-pi.dtb > DTC dts/upstream/src/arm/st/stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb > DTC dts/upstream/src/arm/st/stm32mp157a-iot-box.dtb > DTC dts/upstream/src/arm/st/stm32746g-eval.dtb > DTC dts/upstream/src/arm/st/stm32mp151c-mecio1r0.dtb > DTC dts/upstream/src/arm/st/stm32mp157a-dhcor-avenger96.dtb > DTC dts/upstream/src/arm/st/ste-nomadik-s8815.dtb > Error: ../dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi:338.1-2 syntax error > FATAL ERROR: Unable to parse input tree > > > At line 338 in dts/upstream/src/arm/st/stm32mp15x-mecio1-io.dtsi we got : > > &{qspi_bk1_pins_a/pins} { > pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ > <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ > <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ > <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ > /delete-property/ bias-disable; > bias-pull-up; > }; > > If i update it as following , the DTC compilation is OK : > > &qspi_bk1_pins_a { > pins { > pinmux = <STM32_PINMUX('F', 8, AF10)>, /* QSPI_BK1_IO0 */ > <STM32_PINMUX('F', 9, AF10)>, /* QSPI_BK1_IO1 */ > <STM32_PINMUX('F', 7, AF9)>, /* QSPI_BK1_IO2 */ > <STM32_PINMUX('F', 6, AF9)>; /* QSPI_BK1_IO3 */ > /delete-property/ bias-disable; > bias-pull-up; > }; > }; > > On kernel side, the DTC compilation is ok, but not on U-Boot side. I am not able to understand the difference. >
Could it be that the kernel dtc is newer?
I have tested with dtc Version: DTC 1.7.0-gbcd02b52 which is the same dtc version than kernel tag next-20250114
I mean, it's ok with newer version of dtc : DTC 1.7.0-gbcd02b52.
Ah, so, sigh, we need to update DTC. I stopped my last upgrade there because other changes it made grew the binary size for everyone and didn't get back to it. I guess another attempt is in order.
Hi Tom
Do you know when you will be able to provide a DTC update in master or next branch ?
Unfortunately trying to update resync-dtc-v1.6.0-31-gcbca977ea121-v5 to be on top of current (the first step to moving to 1.7.0 or 1.7.1) produced some test failures that don't exist when using the host dtc. Can you confirm if dtc 1.7.0 is new enough for this syntax? We might just need to change to building pylibfdt and not dtc as well (as having pylibfdt come via system python or pipx is differently tricky it seems).
The pipeline is at https://source.denx.de/u-boot/u-boot/-/pipelines/24243 and that's just the v5 branch currently under WIP/ rebased to then-current master.
participants (3)
-
Patrice CHOTARD
-
Simon Glass
-
Tom Rini