cancel
Showing results for 
Search instead for 
Did you mean: 

STM32MP15 ECO 5.0.0 u-boot build fails with scmi_vdd_usb

debugging
Lead

The Device Tree configuration link . https://wiki.st.com/stm32mpu/wiki/STM32_MPU_device_tree does not include scmi.dsti

After a rough time lot to wade through trial an errors, we were able to reduce the SCMI errors. First we added #include "stm32mp15-scmi.dtsi" and then stm32mp157a-<board>-scmi.dtsi copied from the ev1-scmi.dts but removed i2C4 because this board if quite the same as EV1 but does not use PMIC/I2C4 .  if this is correct change is our biggest guess but it reduced most of the scmi error less one., as follows:

The U-boot build failed with:

/soc/usbphyc@5a006000/usb-phy@0: Reference to non-existent node or label "scmi_vdd_usb"

However, the workshop for STM32MP15 documentation shows the following to be added

/* USER CODE BEGIN usbphyc_port0 */
phy-supply = <&scmi_vdd_usb>;
/* USER CODE END usbphyc_port0 */

After searching the whole ecosystem with grep -Rnw . -e 'scmi_vdd_usb'
for this definition, only the following 3 files, besides our file,  in the whole ECO tree has this reference:

./arch/arm/dts/stm32mp135f-dk.dts:459: scmi_vdd_usb: voltd-vdd-usb {
./arch/arm/dts/stm32mp135f-dk.dts:656: phy-supply = <&scmi_vdd_usb>;
./arch/arm/dts/stm32mp135f-dk.dts:670: phy-supply = <&scmi_vdd_usb>;

But this is an STM32MP157AAA3 board. no other MP157 boards contains this label or value .

1. Why is this mentioned as requiired for the MP15 ?

2. is this needed ?

3. Why other MP157 boards to not use this ?

When we add  the definition from MP135, it results in an syntax error
FATAL ERROR: Unable to parse input tree. We removed the scmi_vdd_usb form the tree and compilation passed.

&scmi_regu {
scmi_vddcpu: voltd-vddcpu {
reg = <VOLTD_SCMI_STPMIC1_BUCK1>;
regulator-name = "vddcpu";
};
scmi_vdd: voltd-vdd {
reg = <VOLTD_SCMI_STPMIC1_BUCK3>;
regulator-name = "vdd";
};
scmi_vddcore: voltd-vddcore {
reg = <VOLTD_SCMI_STPMIC1_BUCK4>;
regulator-name = "vddcore";
};
scmi_vdd_adc: voltd-vdd-adc {
reg = <VOLTD_SCMI_STPMIC1_LDO1>;
regulator-name = "vdd_adc";
};
scmi_vdd_usb: voltd-vdd-usb {
reg = <VOLTD_SCMI_STPMIC1_LDO4>;
regulator-name = "vdd_usb";
};
scmi_vdd_sd: voltd-vdd-sd {
reg = <VOLTD_SCMI_STPMIC1_LDO5>;
regulator-name = "vdd_sd";
};
scmi_v1v8_periph: voltd-v1v8-periph {
reg = <VOLTD_SCMI_STPMIC1_LDO6>;
regulator-name = "v1v8_periph";
};
scmi_v3v3_sw: voltd-v3v3-sw {
reg = <VOLTD_SCMI_STPMIC1_PWR_SW2>;
regulator-name = "v3v3_sw";
};
};

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
debugging
Lead

1. Copied DT from the ev1-scmi.dts but removed i2C4 because this board if quite the same as EV1 but does not use PMIC (I2C4 )

2. Changed to phy-supply = <&vdd_usb>; to fix the error

 

so far TF-A and Op-TEE passes the boot. Such  should be part if how a WIKI how to build for discrete power board.

 

View solution in original post

3 REPLIES 3
debugging
Lead

We changed to phy-supply = <&vdd_usb>; to fix the error

 Could this cause issues ?

Still would like an answer if this change is correct and why CubeMX generated the DT with &scmi_vdd_usb>

debugging
Lead

1. Copied DT from the ev1-scmi.dts but removed i2C4 because this board if quite the same as EV1 but does not use PMIC (I2C4 )

2. Changed to phy-supply = <&vdd_usb>; to fix the error

 

so far TF-A and Op-TEE passes the boot. Such  should be part if how a WIKI how to build for discrete power board.