1 // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
2 /*
3 * Copyright (C) 2018, STMicroelectronics - All Rights Reserved
4 * Copyright (C) 2020 Engicam S.r.l.
5 * Copyright (C) 2020 Amarula Solutions(India)
6 * Author: Jagan Teki <jagan@amarulasolutions.com>
7 */
8
9 #include <common.h>
10 #include <env.h>
11 #include <env_internal.h>
12 #include <syscon.h>
13 #include <asm/io.h>
14 #include <asm/arch/sys_proto.h>
15 #include <power/regulator.h>
16
checkboard(void)17 int checkboard(void)
18 {
19 char *mode;
20 const char *fdt_compat;
21 int fdt_compat_len;
22
23 if (IS_ENABLED(CONFIG_TFABOOT))
24 mode = "trusted";
25 else
26 mode = "basic";
27
28 printf("Board: stm32mp1 in %s mode", mode);
29 fdt_compat = ofnode_get_property(ofnode_root(), "compatible",
30 &fdt_compat_len);
31 if (fdt_compat && fdt_compat_len)
32 printf(" (%s)", fdt_compat);
33 puts("\n");
34
35 return 0;
36 }
37
38 /* board dependent setup after realloc */
board_init(void)39 int board_init(void)
40 {
41 if (IS_ENABLED(CONFIG_DM_REGULATOR))
42 regulators_enable_boot_on(_DEBUG);
43
44 return 0;
45 }
46
board_late_init(void)47 int board_late_init(void)
48 {
49 return 0;
50 }
51
env_get_location(enum env_operation op,int prio)52 enum env_location env_get_location(enum env_operation op, int prio)
53 {
54 u32 bootmode = get_bootmode();
55
56 if (prio)
57 return ENVL_UNKNOWN;
58
59 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
60 case BOOT_FLASH_SD:
61 case BOOT_FLASH_EMMC:
62 if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
63 return ENVL_MMC;
64 else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4))
65 return ENVL_EXT4;
66 else
67 return ENVL_NOWHERE;
68
69 case BOOT_FLASH_NAND:
70 case BOOT_FLASH_SPINAND:
71 if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
72 return ENVL_UBI;
73 else
74 return ENVL_NOWHERE;
75
76 case BOOT_FLASH_NOR:
77 if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
78 return ENVL_SPI_FLASH;
79 else
80 return ENVL_NOWHERE;
81
82 default:
83 return ENVL_NOWHERE;
84 }
85 }
86
env_ext4_get_intf(void)87 const char *env_ext4_get_intf(void)
88 {
89 u32 bootmode = get_bootmode();
90
91 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
92 case BOOT_FLASH_SD:
93 case BOOT_FLASH_EMMC:
94 return "mmc";
95 default:
96 return "";
97 }
98 }
99
env_ext4_get_dev_part(void)100 const char *env_ext4_get_dev_part(void)
101 {
102 static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"};
103 u32 bootmode = get_bootmode();
104
105 return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1];
106 }
107
mmc_get_env_dev(void)108 int mmc_get_env_dev(void)
109 {
110 u32 bootmode = get_bootmode();
111
112 return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1;
113 }
114
115 #if defined(CONFIG_OF_BOARD_SETUP)
ft_board_setup(void * blob,struct bd_info * bd)116 int ft_board_setup(void *blob, struct bd_info *bd)
117 {
118 return 0;
119 }
120 #endif
121