cancel
Showing results for 
Search instead for 
Did you mean: 

STPMIC25A settings for DDR configuration

_Vanshika
Associate II

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 1
ThomasB
ST Employee

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.