mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-25 20:43:32 +00:00
b3d97f8ce3
In case the DHSOM is in suspend state and either reset button is pushed or IWDG2 triggers a watchdog reset, then DRAM initialization could fail as follows: " RAM: DDR3L 32bits 2x4Gb 533MHz DDR invalid size : 0x4, expected 0x40000000 DRAM init failed: -22 ### ERROR ### Please RESET the board ### " Avoid this failure by not keeping any Buck regulators enabled during reset, let the SoC and DRAMs power cycle fully. Since the change which keeps Buck3 VDD enabled during reset is ST specific, move this addition to ST specific SPL board initialization so that it wouldn't affect the DHSOM . Signed-off-by: Marek Vasut <marex@denx.de> Reviewed-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
36 lines
884 B
C
36 lines
884 B
C
// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
|
/*
|
|
* Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
|
*/
|
|
|
|
#include <config.h>
|
|
#include <common.h>
|
|
#include <power/pmic.h>
|
|
#include <power/stpmic1.h>
|
|
#include <asm/arch/sys_proto.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))
|
|
opp_voltage_mv = voltage_mv;
|
|
}
|
|
|
|
int board_early_init_f(void)
|
|
{
|
|
if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER)) {
|
|
struct udevice *dev = stpmic1_init(opp_voltage_mv);
|
|
|
|
/* Keep vdd on during the reset cycle */
|
|
pmic_clrsetbits(dev,
|
|
STPMIC1_BUCKS_MRST_CR,
|
|
STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
|
|
STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|