blob: bc2af66d8e964143f1f2330f07903855598a1fc7 [file] [log] [blame]
Jagan Tekic0f218b2021-03-16 21:52:03 +05301// 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
Jagan Tekic0f218b2021-03-16 21:52:03 +05309#include <env.h>
10#include <env_internal.h>
11#include <syscon.h>
12#include <asm/io.h>
13#include <asm/arch/sys_proto.h>
14#include <power/regulator.h>
15
Jagan Tekic0f218b2021-03-16 21:52:03 +053016int checkboard(void)
17{
18 char *mode;
19 const char *fdt_compat;
20 int fdt_compat_len;
21
22 if (IS_ENABLED(CONFIG_TFABOOT))
23 mode = "trusted";
24 else
25 mode = "basic";
26
27 printf("Board: stm32mp1 in %s mode", mode);
Patrick Delaunayfbb07152022-05-19 09:07:30 +020028 fdt_compat = ofnode_get_property(ofnode_root(), "compatible",
29 &fdt_compat_len);
Jagan Tekic0f218b2021-03-16 21:52:03 +053030 if (fdt_compat && fdt_compat_len)
31 printf(" (%s)", fdt_compat);
32 puts("\n");
33
34 return 0;
35}
36
37/* board dependent setup after realloc */
38int board_init(void)
39{
Jagan Tekic0f218b2021-03-16 21:52:03 +053040 if (IS_ENABLED(CONFIG_DM_REGULATOR))
41 regulators_enable_boot_on(_DEBUG);
42
43 return 0;
44}
45
46int board_late_init(void)
47{
48 return 0;
49}
50
51enum env_location env_get_location(enum env_operation op, int prio)
52{
53 u32 bootmode = get_bootmode();
54
55 if (prio)
56 return ENVL_UNKNOWN;
57
58 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
59 case BOOT_FLASH_SD:
60 case BOOT_FLASH_EMMC:
61 if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
62 return ENVL_MMC;
63 else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4))
64 return ENVL_EXT4;
65 else
66 return ENVL_NOWHERE;
67
68 case BOOT_FLASH_NAND:
69 case BOOT_FLASH_SPINAND:
Simon Glassbd3ebf62023-02-05 15:39:48 -070070 if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
Jagan Tekic0f218b2021-03-16 21:52:03 +053071 return ENVL_UBI;
72 else
73 return ENVL_NOWHERE;
74
75 case BOOT_FLASH_NOR:
76 if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
77 return ENVL_SPI_FLASH;
78 else
79 return ENVL_NOWHERE;
80
81 default:
82 return ENVL_NOWHERE;
83 }
84}
85
86const char *env_ext4_get_intf(void)
87{
88 u32 bootmode = get_bootmode();
89
90 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
91 case BOOT_FLASH_SD:
92 case BOOT_FLASH_EMMC:
93 return "mmc";
94 default:
95 return "";
96 }
97}
98
99const char *env_ext4_get_dev_part(void)
100{
101 static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"};
102 u32 bootmode = get_bootmode();
103
104 return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1];
105}
106
107int mmc_get_env_dev(void)
108{
109 u32 bootmode = get_bootmode();
110
111 return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1;
112}
113
114#if defined(CONFIG_OF_BOARD_SETUP)
115int ft_board_setup(void *blob, struct bd_info *bd)
116{
117 return 0;
118}
119#endif