zynq: Kconfig: extend the bootstrap malloc() pool
[oweals/u-boot.git] / arch / arm / mach-stm32mp / spl.c
1 // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2 /*
3  * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
4  */
5
6 #include <common.h>
7 #include <dm.h>
8 #include <spl.h>
9 #include <asm/io.h>
10
11 u32 spl_boot_device(void)
12 {
13         u32 boot_mode;
14
15         boot_mode = (readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_MODE_MASK) >>
16                     TAMP_BOOT_MODE_SHIFT;
17
18         switch (boot_mode) {
19         case BOOT_FLASH_SD_1:
20         case BOOT_FLASH_EMMC_1:
21                 return BOOT_DEVICE_MMC1;
22         case BOOT_FLASH_SD_2:
23         case BOOT_FLASH_EMMC_2:
24                 return BOOT_DEVICE_MMC2;
25         }
26
27         return BOOT_DEVICE_MMC1;
28 }
29
30 u32 spl_boot_mode(const u32 boot_device)
31 {
32         return MMCSD_MODE_RAW;
33 }
34
35 int spl_boot_partition(const u32 boot_device)
36 {
37         switch (boot_device) {
38         case BOOT_DEVICE_MMC1:
39                 return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION;
40         case BOOT_DEVICE_MMC2:
41                 return CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION_MMC2;
42         default:
43                 return -EINVAL;
44         }
45 }
46
47 void board_init_f(ulong dummy)
48 {
49         struct udevice *dev;
50         int ret;
51
52         arch_cpu_init();
53
54         ret = spl_early_init();
55         if (ret) {
56                 debug("spl_early_init() failed: %d\n", ret);
57                 hang();
58         }
59
60         ret = uclass_get_device(UCLASS_CLK, 0, &dev);
61         if (ret) {
62                 debug("Clock init failed: %d\n", ret);
63                 return;
64         }
65
66         ret = uclass_get_device(UCLASS_RESET, 0, &dev);
67         if (ret) {
68                 debug("Reset init failed: %d\n", ret);
69                 return;
70         }
71
72         ret = uclass_get_device(UCLASS_PINCTRL, 0, &dev);
73         if (ret) {
74                 debug("%s: Cannot find pinctrl device\n", __func__);
75                 return;
76         }
77
78         /* enable console uart printing */
79         preloader_console_init();
80
81         ret = uclass_get_device(UCLASS_RAM, 0, &dev);
82         if (ret) {
83                 debug("DRAM init failed: %d\n", ret);
84                 return;
85         }
86 }