Skip to main content
Associate II
November 25, 2025
Question

STPMIC25A settings for DDR configuration

  • November 25, 2025
  • 1 reply
  • 160 views

Hii, 
I am using STPMIC25A with STM32mp257FAK3 with DDR3L in one custom design and LPDDR4 in second custom design.
_Vanshika_0-1764076307332.png
I am able to change o/p of Buck 4, Buck 6 and LDO 3 as per the requirement by changing the voltage for the same in the device tree, under fdts in Arm Trusted Firmware. I am sharing the node below:

&i2c7 {
pinctrl-names = "default";
pinctrl-0 = <&i2c7_pins_a>;
i2c-scl-rising-time-ns = <185>;
i2c-scl-falling-time-ns = <20>;
clock-frequency = <400000>;
status = "okay";
#address-cells = <1>;
#size-cells = <0>;

pmic2: stpmic@33 {
compatible = "st,stpmic2";
reg = <0x33>;
status = "okay";

regulators {
compatible = "st,stpmic2-regulators";

vddcpu: buck1 {
regulator-name = "vddcpu";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <910000>;
regulator-always-on;
};
vddcore: buck2 {
regulator-name = "vddcore";
regulator-min-microvolt = <820000>;
regulator-max-microvolt = <820000>;
regulator-always-on;
};
vddgpu: buck3 {
regulator-name = "vddgpu";
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <900000>;
regulator-always-on;
};
vddio_pmic: buck4 {
regulator-name = "vddio_pmic";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
v1v8: buck5 {
regulator-name = "v1v8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
vdd2_ddr: buck6 {
regulator-name = "vdd2_ddr";
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
};
v3v3: buck7 {
regulator-name = "v3v3";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vdda1v8_aon: ldo1 {
regulator-name = "vdda1v8_aon";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-always-on;
};
vdd_emmc: ldo2 {
regulator-name = "vdd_emmc";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vdd1_ddr: ldo3 {
regulator-name = "vdd1_ddr";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
};
vdd3v3_usb: ldo4 {
regulator-name = "vdd3v3_usb";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
v5v_hdmi: ldo5 {
regulator-name = "v5v_hdmi";
regulator-min-microvolt = <2000000>;
regulator-max-microvolt = <2000000>;
};
vdd_sdcard: ldo7 {
regulator-name = "vdd_sdcard";
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vddio_sdcard: ldo8 {
regulator-name = "vddio_sdcard";
st,regulator-bypass-microvolt = <3300000>;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};
};

Please confirm are there any other changes required for proper operation.

 

 

1 reply

Technical Moderator
December 2, 2025

Hello @_Vanshika,

Regarding the power supply part, you also need to update similarly the PMIC node in OP-TEE.

Each design will also need its own set of DDR settings that correspond to the required configuration. You will need a DTSI settings file for each design in TF-A, which must be included by the top DTS file for each design. These settings files can be generated by CubeMX and there are also examples in the TF-A source code (with names like "stm32mp25-lpddr4-1x32bits-1200MHz.dtsi" for example).

Depending on the design you may also use different memory sizes, that you will need to adapt the node memory in each component (U-Boot, TF-A, OP-TEE, Linux). You can find help on this matter in this wiki page: https://wiki.st.com/stm32mpu/wiki/How_to_setup_the_DDR_configuration#STM32MP2_series.

 

I hope this will helps you enough to make your designs work.

Best regards,

Thomas

 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.