[Uboot-stm32] [PATCH v2 7/9] board: stm32mp1: update vddcore in SPL
Patrice CHOTARD
patrice.chotard at st.com
Fri Jul 3 09:05:56 CEST 2020
Hi Patrick
On 5/25/20 12:19 PM, Patrick Delaunay wrote:
> For board using STPMIC1, the vddcore is provided by BUCK1 of STPMIC1
> and need to be updated for 800MHz support and only after the clock
> tree initialization.
>
> The VDDCORE voltage value is provided by clock driver, saved in global
> variable opp_voltage_mv and udpated in SPL board_early_init_f(),
> just after clock tree initialization.
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay at st.com>
> ---
>
> Changes in v2:
> - stmpic_buck1_set is a static function called in stpmic1_init
> (with new parameter for vddcore value)
> - update also dh_stm32mp1 board
>
> board/dhelectronics/dh_stm32mp1/board.c | 9 ++++++++-
> board/st/common/stpmic1.c | 23 ++++++++++++++++++++++-
> board/st/common/stpmic1.h | 2 +-
> board/st/stm32mp1/spl.c | 11 ++++++++++-
> 4 files changed, 41 insertions(+), 4 deletions(-)
>
> diff --git a/board/dhelectronics/dh_stm32mp1/board.c b/board/dhelectronics/dh_stm32mp1/board.c
> index df0810dbda..2ae97f677b 100644
> --- a/board/dhelectronics/dh_stm32mp1/board.c
> +++ b/board/dhelectronics/dh_stm32mp1/board.c
> @@ -136,6 +136,7 @@ int checkboard(void)
> static u8 brdcode __section("data");
> static u8 ddr3code __section("data");
> static u8 somcode __section("data");
> +static u32 opp_voltage_mv __section(".data");
>
> static void board_get_coding_straps(void)
> {
> @@ -193,10 +194,16 @@ int board_stm32mp1_ddr_config_name_match(struct udevice *dev,
> return -EINVAL;
> }
>
> +void board_vddcore_init(u32 voltage_mv)
> +{
> + if (IS_ENABLED(CONFIG_SPL_BUILD))
> + opp_voltage_mv = voltage_mv;
> +}
> +
> int board_early_init_f(void)
> {
> if (IS_ENABLED(CONFIG_SPL_BUILD))
> - stpmic1_init();
> + stpmic1_init(opp_voltage_mv);
> board_get_coding_straps();
>
> return 0;
> diff --git a/board/st/common/stpmic1.c b/board/st/common/stpmic1.c
> index 64f24f1f6f..47f9d95c29 100644
> --- a/board/st/common/stpmic1.c
> +++ b/board/st/common/stpmic1.c
> @@ -162,8 +162,25 @@ int board_ddr_power_init(enum ddr_type ddr_type)
> return 0;
> }
>
> +static int stmpic_buck1_set(struct udevice *dev, u32 voltage_mv)
> +{
> + u32 value;
> +
> + /* VDDCORE= STMPCI1 BUCK1 ramp=+25mV, 5 => 725mV, 36 => 1500mV */
> + value = ((voltage_mv - 725) / 25) + 5;
> + if (value < 5)
> + value = 5;
> + if (value > 36)
> + value = 36;
> +
> + return pmic_clrsetbits(dev,
> + STPMIC1_BUCKX_MAIN_CR(STPMIC1_BUCK1),
> + STPMIC1_BUCK_VOUT_MASK,
> + STPMIC1_BUCK_VOUT(value));
> +}
> +
> /* early init of PMIC */
> -void stpmic1_init(void)
> +void stpmic1_init(u32 voltage_mv)
> {
> struct udevice *dev;
>
> @@ -171,6 +188,10 @@ void stpmic1_init(void)
> DM_GET_DRIVER(pmic_stpmic1), &dev))
> return;
>
> + /* update VDDCORE = BUCK1 */
> + if (voltage_mv)
> + stmpic_buck1_set(dev, voltage_mv);
> +
> /* Keep vdd on during the reset cycle */
> pmic_clrsetbits(dev,
> STPMIC1_BUCKS_MRST_CR,
> diff --git a/board/st/common/stpmic1.h b/board/st/common/stpmic1.h
> index ecc3276697..b17d6f1633 100644
> --- a/board/st/common/stpmic1.h
> +++ b/board/st/common/stpmic1.h
> @@ -3,4 +3,4 @@
> * Copyright (C) 2020, STMicroelectronics - All Rights Reserved
> */
>
> -void stpmic1_init(void);
> +void stpmic1_init(u32 voltage_mv);
> diff --git a/board/st/stm32mp1/spl.c b/board/st/stm32mp1/spl.c
> index 28efc5c0ae..96ab671169 100644
> --- a/board/st/stm32mp1/spl.c
> +++ b/board/st/stm32mp1/spl.c
> @@ -7,10 +7,19 @@
> #include <common.h>
> #include "../common/stpmic1.h"
>
> +/* board early initialisation in board_f: need to use global variable */
> +static u32 opp_voltage_mv __section(".data");
> +
> +void board_vddcore_init(u32 voltage_mv)
> +{
> + if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER_SUPPORT))
> + opp_voltage_mv = voltage_mv;
> +}
> +
> int board_early_init_f(void)
> {
> if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER_SUPPORT))
> - stpmic1_init();
> + stpmic1_init(opp_voltage_mv);
>
> return 0;
> }
Reviewed-by: Patrice Chotard <patrice.chotard at st.com>
Thanks
More information about the U-Boot
mailing list