board: st: stpmic1: add function stpmic1_init
Add a function stmpic_init to early initialize the PMIC STPMIC1 - keep vdd on during the reset cycle (to avoid issue when backup battery is absent) - Check if debug is enabled to program PMIC according to the bit This patch allows to remove the compilation of spl.c file from stm32mp1 board in dh_stm32mp1. CONFIG_SPL_BOARD_INIT is removed as the new function is called earlier in SPL, in the function board_early_init_f. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Patrice Chotard <patrice.chotard@st.com>
This commit is contained in:
parent
4e62642aef
commit
d1a4b09de6
arch/arm/mach-stm32mp
board
configs
@ -1,7 +1,6 @@
|
|||||||
if ARCH_STM32MP
|
if ARCH_STM32MP
|
||||||
|
|
||||||
config SPL
|
config SPL
|
||||||
select SPL_BOARD_INIT
|
|
||||||
select SPL_CLK
|
select SPL_CLK
|
||||||
select SPL_DM
|
select SPL_DM
|
||||||
select SPL_DM_SEQ_ALIAS
|
select SPL_DM_SEQ_ALIAS
|
||||||
|
@ -3,10 +3,6 @@
|
|||||||
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
||||||
#
|
#
|
||||||
|
|
||||||
ifdef CONFIG_SPL_BUILD
|
|
||||||
obj-y += ../../st/stm32mp1/spl.o
|
|
||||||
endif
|
|
||||||
|
|
||||||
obj-y += ../../st/common/stpmic1.o board.o
|
obj-y += ../../st/common/stpmic1.o board.o
|
||||||
|
|
||||||
obj-$(CONFIG_SYS_MTDPARTS_RUNTIME) += ../../st/common/stm32mp_mtdparts.o
|
obj-$(CONFIG_SYS_MTDPARTS_RUNTIME) += ../../st/common/stm32mp_mtdparts.o
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include <usb.h>
|
#include <usb.h>
|
||||||
#include <usb/dwc2_udc.h>
|
#include <usb/dwc2_udc.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
|
#include "../../st/common/stpmic1.h"
|
||||||
|
|
||||||
/* SYSCFG registers */
|
/* SYSCFG registers */
|
||||||
#define SYSCFG_BOOTR 0x00
|
#define SYSCFG_BOOTR 0x00
|
||||||
@ -198,6 +199,8 @@ int board_stm32mp1_ddr_config_name_match(struct udevice *dev,
|
|||||||
|
|
||||||
int board_early_init_f(void)
|
int board_early_init_f(void)
|
||||||
{
|
{
|
||||||
|
if (IS_ENABLED(CONFIG_SPL_BUILD))
|
||||||
|
stpmic1_init();
|
||||||
board_get_coding_straps();
|
board_get_coding_straps();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
|
#include <asm/io.h>
|
||||||
#include <asm/arch/ddr.h>
|
#include <asm/arch/ddr.h>
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
@ -162,3 +163,33 @@ int board_ddr_power_init(enum ddr_type ddr_type)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* early init of PMIC */
|
||||||
|
void stpmic1_init(void)
|
||||||
|
{
|
||||||
|
struct udevice *dev;
|
||||||
|
|
||||||
|
if (uclass_get_device_by_driver(UCLASS_PMIC,
|
||||||
|
DM_GET_DRIVER(pmic_stpmic1), &dev))
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* Keep vdd on during the reset cycle */
|
||||||
|
pmic_clrsetbits(dev,
|
||||||
|
STPMIC1_BUCKS_MRST_CR,
|
||||||
|
STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
|
||||||
|
STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
|
||||||
|
|
||||||
|
/* Check if debug is enabled to program PMIC according to the bit */
|
||||||
|
if (readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_DEBUG_ON) {
|
||||||
|
printf("Keep debug unit ON\n");
|
||||||
|
|
||||||
|
pmic_clrsetbits(dev, STPMIC1_BUCKS_MRST_CR,
|
||||||
|
STPMIC1_MRST_BUCK_DEBUG,
|
||||||
|
STPMIC1_MRST_BUCK_DEBUG);
|
||||||
|
|
||||||
|
if (STPMIC1_MRST_LDO_DEBUG)
|
||||||
|
pmic_clrsetbits(dev, STPMIC1_LDOS_MRST_CR,
|
||||||
|
STPMIC1_MRST_LDO_DEBUG,
|
||||||
|
STPMIC1_MRST_LDO_DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
6
board/st/common/stpmic1.h
Normal file
6
board/st/common/stpmic1.h
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2020, STMicroelectronics - All Rights Reserved
|
||||||
|
*/
|
||||||
|
|
||||||
|
void stpmic1_init(void);
|
@ -5,41 +5,14 @@
|
|||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <spl.h>
|
#include <init.h>
|
||||||
#include <dm.h>
|
#include <asm/arch/sys_proto.h>
|
||||||
#include <ram.h>
|
#include "../common/stpmic1.h"
|
||||||
#include <asm/io.h>
|
|
||||||
#include <power/pmic.h>
|
|
||||||
#include <power/stpmic1.h>
|
|
||||||
#include <asm/arch/ddr.h>
|
|
||||||
|
|
||||||
void spl_board_init(void)
|
int board_early_init_f(void)
|
||||||
{
|
{
|
||||||
/* Keep vdd on during the reset cycle */
|
if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER_SUPPORT))
|
||||||
#if defined(CONFIG_PMIC_STPMIC1) && defined(CONFIG_SPL_POWER_SUPPORT)
|
stpmic1_init();
|
||||||
struct udevice *dev;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = uclass_get_device_by_driver(UCLASS_PMIC,
|
return 0;
|
||||||
DM_GET_DRIVER(pmic_stpmic1), &dev);
|
|
||||||
if (!ret)
|
|
||||||
pmic_clrsetbits(dev,
|
|
||||||
STPMIC1_BUCKS_MRST_CR,
|
|
||||||
STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
|
|
||||||
STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
|
|
||||||
|
|
||||||
/* Check if debug is enabled to program PMIC according to the bit */
|
|
||||||
if ((readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_DEBUG_ON) && !ret) {
|
|
||||||
printf("Keep debug unit ON\n");
|
|
||||||
|
|
||||||
pmic_clrsetbits(dev, STPMIC1_BUCKS_MRST_CR,
|
|
||||||
STPMIC1_MRST_BUCK_DEBUG,
|
|
||||||
STPMIC1_MRST_BUCK_DEBUG);
|
|
||||||
|
|
||||||
if (STPMIC1_MRST_LDO_DEBUG)
|
|
||||||
pmic_clrsetbits(dev, STPMIC1_LDOS_MRST_CR,
|
|
||||||
STPMIC1_MRST_LDO_DEBUG,
|
|
||||||
STPMIC1_MRST_LDO_DEBUG);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -84,6 +84,12 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||||||
#define USB_START_LOW_THRESHOLD_UV 1230000
|
#define USB_START_LOW_THRESHOLD_UV 1230000
|
||||||
#define USB_START_HIGH_THRESHOLD_UV 2150000
|
#define USB_START_HIGH_THRESHOLD_UV 2150000
|
||||||
|
|
||||||
|
int board_early_init_f(void)
|
||||||
|
{
|
||||||
|
/* nothing to do, only used in SPL */
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int checkboard(void)
|
int checkboard(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -18,6 +18,7 @@ CONFIG_DEFAULT_DEVICE_TREE="stm32mp157c-ev1"
|
|||||||
CONFIG_DISTRO_DEFAULTS=y
|
CONFIG_DISTRO_DEFAULTS=y
|
||||||
CONFIG_FIT=y
|
CONFIG_FIT=y
|
||||||
CONFIG_BOOTCOMMAND="run bootcmd_stm32mp"
|
CONFIG_BOOTCOMMAND="run bootcmd_stm32mp"
|
||||||
|
CONFIG_BOARD_EARLY_INIT_F=y
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
|
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y
|
||||||
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
|
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=3
|
||||||
CONFIG_SPL_I2C_SUPPORT=y
|
CONFIG_SPL_I2C_SUPPORT=y
|
||||||
|
Loading…
Reference in New Issue
Block a user