[PATCH 04/10] ARM: stm32: Add STM32MP13xx PMIC initialization for DDR3 DRAM type
Patrice CHOTARD
patrice.chotard at foss.st.com
Wed May 28 08:25:26 CEST 2025
On 5/12/25 19:21, Marek Vasut wrote:
> The STM32MP13xx PMIC initialization for DDR3 DRAM type is similar
> to the STM32MP15xx PMIC initialization, except the VTT rail is not
> enabled. Fill in the STM32MP13xx support.
>
> Signed-off-by: Marek Vasut <marek.vasut at mailbox.org>
> ---
> Cc: Cheick Traore <cheick.traore at foss.st.com>
> Cc: Fabrice Gasnier <fabrice.gasnier at foss.st.com>
> Cc: Gatien Chevallier <gatien.chevallier at foss.st.com>
> Cc: Lionel Debieve <lionel.debieve at foss.st.com>
> Cc: Pascal Zimmermann <pzimmermann at dh-electronics.com>
> Cc: Patrice Chotard <patrice.chotard at foss.st.com>
> Cc: Patrick Delaunay <patrick.delaunay at foss.st.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Sughosh Ganu <sughosh.ganu at linaro.org>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: u-boot at dh-electronics.com
> Cc: u-boot at lists.denx.de
> Cc: uboot-stm32 at st-md-mailman.stormreply.com
> ---
> board/st/common/stpmic1.c | 51 ++++++++++++++++++++++++++-------------
> 1 file changed, 34 insertions(+), 17 deletions(-)
>
> diff --git a/board/st/common/stpmic1.c b/board/st/common/stpmic1.c
> index 45c2bb5bcea..b46f89dacb9 100644
> --- a/board/st/common/stpmic1.c
> +++ b/board/st/common/stpmic1.c
> @@ -14,8 +14,19 @@
> #include <power/pmic.h>
> #include <power/stpmic1.h>
>
> +static bool is_stm32mp13xx(void)
> +{
> + if (!IS_ENABLED(CONFIG_STM32MP13X))
> + return false;
> +
> + return of_machine_is_compatible("st,stm32mp131") ||
> + of_machine_is_compatible("st,stm32mp133") ||
> + of_machine_is_compatible("st,stm32mp135");
> +}
> +
> int board_ddr_power_init(enum ddr_type ddr_type)
> {
> + bool is_mp13 = is_stm32mp13xx();
> struct udevice *dev;
> bool buck3_at_1800000v = false;
> int ret;
> @@ -30,18 +41,21 @@ int board_ddr_power_init(enum ddr_type ddr_type)
> switch (ddr_type) {
> case STM32MP_DDR3:
> /* VTT = Set LDO3 to sync mode */
> - ret = pmic_reg_read(dev, STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3));
> - if (ret < 0)
> - return ret;
> -
> - ret &= ~STPMIC1_LDO3_MODE;
> - ret &= ~STPMIC1_LDO12356_VOUT_MASK;
> - ret |= STPMIC1_LDO_VOUT(STPMIC1_LDO3_DDR_SEL);
> -
> - ret = pmic_reg_write(dev, STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3),
> - ret);
> - if (ret < 0)
> - return ret;
> + if (!is_mp13) {
> + /* Enable VTT only on STM32MP15xx */
> + ret = pmic_reg_read(dev, STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3));
> + if (ret < 0)
> + return ret;
> +
> + ret &= ~STPMIC1_LDO3_MODE;
> + ret &= ~STPMIC1_LDO12356_VOUT_MASK;
> + ret |= STPMIC1_LDO_VOUT(STPMIC1_LDO3_DDR_SEL);
> +
> + ret = pmic_reg_write(dev, STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3),
> + ret);
> + if (ret < 0)
> + return ret;
> + }
>
> /* VDD_DDR = Set BUCK2 to 1.35V */
> ret = pmic_clrsetbits(dev,
> @@ -69,11 +83,14 @@ int board_ddr_power_init(enum ddr_type ddr_type)
> mdelay(STPMIC1_DEFAULT_START_UP_DELAY_MS);
>
> /* Enable VTT = LDO3 */
> - ret = pmic_clrsetbits(dev,
> - STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3),
> - STPMIC1_LDO_ENA, STPMIC1_LDO_ENA);
> - if (ret < 0)
> - return ret;
> + if (!is_mp13) {
> + /* Enable VTT only on STM32MP15xx */
> + ret = pmic_clrsetbits(dev,
> + STPMIC1_LDOX_MAIN_CR(STPMIC1_LDO3),
> + STPMIC1_LDO_ENA, STPMIC1_LDO_ENA);
> + if (ret < 0)
> + return ret;
> + }
>
> mdelay(STPMIC1_DEFAULT_START_UP_DELAY_MS);
>
Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>
Thanks
Patrice
More information about the U-Boot
mailing list