
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