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 17int 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 */ 39int board_init(void) 40{ 41 if (IS_ENABLED(CONFIG_DM_REGULATOR)) 42 regulators_enable_boot_on(_DEBUG); 43 44 return 0; 45} 46 47int board_late_init(void) 48{ 49 return 0; 50} 51 52enum 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 87const 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 100const 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 108int 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) 116int ft_board_setup(void *blob, struct bd_info *bd) 117{ 118 return 0; 119} 120#endif 121