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

Simon Glass sjg at chromium.org
Wed Jan 15 14:19:08 CET 2025


Hi Patrice,

On Wed, 15 Jan 2025 at 03:19, Patrice CHOTARD
<patrice.chotard at 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


More information about the U-Boot mailing list