blob: 8b4a529f759a28bd3a00302686c4e95d5d488349 [file] [log] [blame]
Tom Rini8b0c8a12018-05-06 18:27:01 -04001// SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01002/*
3 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +01004 */
5
6#include <config.h>
7#include <common.h>
Marek Vasut5bfe0a12023-05-18 00:02:39 +02008#include <power/pmic.h>
9#include <power/stpmic1.h>
Patrick Delaunayf2f25c32020-05-25 12:19:46 +020010#include <asm/arch/sys_proto.h>
11#include "../common/stpmic1.h"
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010012
Patrick Delaunay08c891a2020-05-25 12:19:47 +020013/* 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{
Simon Glasse91ac4c2021-07-10 21:14:24 -060018 if (IS_ENABLED(CONFIG_PMIC_STPMIC1) && CONFIG_IS_ENABLED(POWER))
Patrick Delaunay08c891a2020-05-25 12:19:47 +020019 opp_voltage_mv = voltage_mv;
20}
21
Patrick Delaunayf2f25c32020-05-25 12:19:46 +020022int board_early_init_f(void)
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010023{
Marek Vasut5bfe0a12023-05-18 00:02:39 +020024 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 }
Patrick Delaunaybff284f2019-07-30 19:16:20 +020033
Patrick Delaunayf2f25c32020-05-25 12:19:46 +020034 return 0;
Patrick Delaunay8eb3b1e2018-03-12 10:46:18 +010035}
Patrick Delaunay79c07912020-05-25 12:19:49 +020036