1// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2/*
3 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
4 */
5
6#include <config.h>
7#include <common.h>
8#include <power/pmic.h>
9#include <power/stpmic1.h>
10#include <asm/arch/sys_proto.h>
11#include "../common/stpmic1.h"
12
13/* board early initialisation in board_f: need to use global variable */
14static u32 opp_voltage_mv __section(".data");
15
16void board_vddcore_init(u32 voltage_mv)
17{
18	if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER))
19		opp_voltage_mv = voltage_mv;
20}
21
22int board_early_init_f(void)
23{
24	if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER)) {
25		struct udevice *dev = stpmic1_init(opp_voltage_mv);
26
27		/* Keep vdd on during the reset cycle */
28		pmic_clrsetbits(dev,
29				STPMIC1_BUCKS_MRST_CR,
30				STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
31				STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
32	}
33
34	return 0;
35}
36
37