blob: 56557d5642981f4f76c2d655b04795fcadc81863 [file] [log] [blame]
Jagan Teki30edf402021-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 Teki30edf402021-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 Teki30edf402021-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 Delaunay655100d2022-05-19 09:07:30 +020028 fdt_compat = ofnode_get_property(ofnode_root(), "compatible",
29 &fdt_compat_len);
Jagan Teki30edf402021-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 Teki30edf402021-03-16 21:52:03 +053040 return 0;
41}
42
43int board_late_init(void)
44{
45 return 0;
46}
47
48enum env_location env_get_location(enum env_operation op, int prio)
49{
50 u32 bootmode = get_bootmode();
51
52 if (prio)
53 return ENVL_UNKNOWN;
54
55 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
56 case BOOT_FLASH_SD:
57 case BOOT_FLASH_EMMC:
58 if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
59 return ENVL_MMC;
60 else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4))
61 return ENVL_EXT4;
62 else
63 return ENVL_NOWHERE;
64
65 case BOOT_FLASH_NAND:
66 case BOOT_FLASH_SPINAND:
Simon Glass821d1df2023-02-05 15:39:48 -070067 if (IS_ENABLED(CONFIG_ENV_IS_IN_UBI))
Jagan Teki30edf402021-03-16 21:52:03 +053068 return ENVL_UBI;
69 else
70 return ENVL_NOWHERE;
71
72 case BOOT_FLASH_NOR:
73 if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
74 return ENVL_SPI_FLASH;
75 else
76 return ENVL_NOWHERE;
77
78 default:
79 return ENVL_NOWHERE;
80 }
81}
82
83const char *env_ext4_get_intf(void)
84{
85 u32 bootmode = get_bootmode();
86
87 switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
88 case BOOT_FLASH_SD:
89 case BOOT_FLASH_EMMC:
90 return "mmc";
91 default:
92 return "";
93 }
94}
95
96const char *env_ext4_get_dev_part(void)
97{
98 static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"};
99 u32 bootmode = get_bootmode();
100
101 return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1];
102}
103
104int mmc_get_env_dev(void)
105{
106 u32 bootmode = get_bootmode();
107
108 return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1;
109}
110
111#if defined(CONFIG_OF_BOARD_SETUP)
112int ft_board_setup(void *blob, struct bd_info *bd)
113{
114 return 0;
115}
116#endif