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 <spl.h>
9 #include <dm.h>
10 #include <ram.h>
11 #include <asm/io.h>
12 #include <power/pmic.h>
13 #include <power/stpmic1.h>
14 #include <asm/arch/ddr.h>
15
spl_board_init(void)16 void spl_board_init(void)
17 {
18 /* Keep vdd on during the reset cycle */
19 #if defined(CONFIG_PMIC_STPMIC1) && defined(CONFIG_SPL_POWER_SUPPORT)
20 struct udevice *dev;
21 int ret;
22
23 ret = uclass_get_device_by_driver(UCLASS_PMIC,
24 DM_GET_DRIVER(pmic_stpmic1), &dev);
25 if (!ret)
26 pmic_clrsetbits(dev,
27 STPMIC1_BUCKS_MRST_CR,
28 STPMIC1_MRST_BUCK(STPMIC1_BUCK3),
29 STPMIC1_MRST_BUCK(STPMIC1_BUCK3));
30
31 /* Check if debug is enabled to program PMIC according to the bit */
32 if ((readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_DEBUG_ON) && !ret) {
33 printf("Keep debug unit ON\n");
34
35 pmic_clrsetbits(dev, STPMIC1_BUCKS_MRST_CR,
36 STPMIC1_MRST_BUCK_DEBUG,
37 STPMIC1_MRST_BUCK_DEBUG);
38
39 if (STPMIC1_MRST_LDO_DEBUG)
40 pmic_clrsetbits(dev, STPMIC1_LDOS_MRST_CR,
41 STPMIC1_MRST_LDO_DEBUG,
42 STPMIC1_MRST_LDO_DEBUG);
43 }
44 #endif
45 }
46