| // SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause |
| /* |
| * Copyright (C) 2018, STMicroelectronics - All Rights Reserved |
| * Copyright (C) 2020 Engicam S.r.l. |
| * Copyright (C) 2020 Amarula Solutions(India) |
| * Author: Jagan Teki <jagan@amarulasolutions.com> |
| */ |
| |
| #include <common.h> |
| #include <env.h> |
| #include <env_internal.h> |
| #include <syscon.h> |
| #include <asm/io.h> |
| #include <asm/arch/sys_proto.h> |
| #include <power/regulator.h> |
| |
| DECLARE_GLOBAL_DATA_PTR; |
| |
| int checkboard(void) |
| { |
| char *mode; |
| const char *fdt_compat; |
| int fdt_compat_len; |
| |
| if (IS_ENABLED(CONFIG_TFABOOT)) |
| mode = "trusted"; |
| else |
| mode = "basic"; |
| |
| printf("Board: stm32mp1 in %s mode", mode); |
| fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible", |
| &fdt_compat_len); |
| if (fdt_compat && fdt_compat_len) |
| printf(" (%s)", fdt_compat); |
| puts("\n"); |
| |
| return 0; |
| } |
| |
| /* board dependent setup after realloc */ |
| int board_init(void) |
| { |
| /* address of boot parameters */ |
| gd->bd->bi_boot_params = STM32_DDR_BASE + 0x100; |
| |
| if (IS_ENABLED(CONFIG_DM_REGULATOR)) |
| regulators_enable_boot_on(_DEBUG); |
| |
| return 0; |
| } |
| |
| int board_late_init(void) |
| { |
| return 0; |
| } |
| |
| enum env_location env_get_location(enum env_operation op, int prio) |
| { |
| u32 bootmode = get_bootmode(); |
| |
| if (prio) |
| return ENVL_UNKNOWN; |
| |
| switch (bootmode & TAMP_BOOT_DEVICE_MASK) { |
| case BOOT_FLASH_SD: |
| case BOOT_FLASH_EMMC: |
| if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC)) |
| return ENVL_MMC; |
| else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4)) |
| return ENVL_EXT4; |
| else |
| return ENVL_NOWHERE; |
| |
| case BOOT_FLASH_NAND: |
| case BOOT_FLASH_SPINAND: |
| if (CONFIG_IS_ENABLED(ENV_IS_IN_UBI)) |
| return ENVL_UBI; |
| else |
| return ENVL_NOWHERE; |
| |
| case BOOT_FLASH_NOR: |
| if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH)) |
| return ENVL_SPI_FLASH; |
| else |
| return ENVL_NOWHERE; |
| |
| default: |
| return ENVL_NOWHERE; |
| } |
| } |
| |
| const char *env_ext4_get_intf(void) |
| { |
| u32 bootmode = get_bootmode(); |
| |
| switch (bootmode & TAMP_BOOT_DEVICE_MASK) { |
| case BOOT_FLASH_SD: |
| case BOOT_FLASH_EMMC: |
| return "mmc"; |
| default: |
| return ""; |
| } |
| } |
| |
| const char *env_ext4_get_dev_part(void) |
| { |
| static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"}; |
| u32 bootmode = get_bootmode(); |
| |
| return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1]; |
| } |
| |
| int mmc_get_env_dev(void) |
| { |
| u32 bootmode = get_bootmode(); |
| |
| return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1; |
| } |
| |
| #if defined(CONFIG_OF_BOARD_SETUP) |
| int ft_board_setup(void *blob, struct bd_info *bd) |
| { |
| return 0; |
| } |
| #endif |