uboot/board/engicam/stm32mp1/stm32mp1.c
<<
>>
Prefs
   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
  17DECLARE_GLOBAL_DATA_PTR;
  18
  19int checkboard(void)
  20{
  21        char *mode;
  22        const char *fdt_compat;
  23        int fdt_compat_len;
  24
  25        if (IS_ENABLED(CONFIG_TFABOOT))
  26                mode = "trusted";
  27        else
  28                mode = "basic";
  29
  30        printf("Board: stm32mp1 in %s mode", mode);
  31        fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible",
  32                                 &fdt_compat_len);
  33        if (fdt_compat && fdt_compat_len)
  34                printf(" (%s)", fdt_compat);
  35        puts("\n");
  36
  37        return 0;
  38}
  39
  40/* board dependent setup after realloc */
  41int board_init(void)
  42{
  43        if (IS_ENABLED(CONFIG_DM_REGULATOR))
  44                regulators_enable_boot_on(_DEBUG);
  45
  46        return 0;
  47}
  48
  49int board_late_init(void)
  50{
  51        return 0;
  52}
  53
  54enum env_location env_get_location(enum env_operation op, int prio)
  55{
  56        u32 bootmode = get_bootmode();
  57
  58        if (prio)
  59                return ENVL_UNKNOWN;
  60
  61        switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
  62        case BOOT_FLASH_SD:
  63        case BOOT_FLASH_EMMC:
  64                if (CONFIG_IS_ENABLED(ENV_IS_IN_MMC))
  65                        return ENVL_MMC;
  66                else if (CONFIG_IS_ENABLED(ENV_IS_IN_EXT4))
  67                        return ENVL_EXT4;
  68                else
  69                        return ENVL_NOWHERE;
  70
  71        case BOOT_FLASH_NAND:
  72        case BOOT_FLASH_SPINAND:
  73                if (CONFIG_IS_ENABLED(ENV_IS_IN_UBI))
  74                        return ENVL_UBI;
  75                else
  76                        return ENVL_NOWHERE;
  77
  78        case BOOT_FLASH_NOR:
  79                if (CONFIG_IS_ENABLED(ENV_IS_IN_SPI_FLASH))
  80                        return ENVL_SPI_FLASH;
  81                else
  82                        return ENVL_NOWHERE;
  83
  84        default:
  85                return ENVL_NOWHERE;
  86        }
  87}
  88
  89const char *env_ext4_get_intf(void)
  90{
  91        u32 bootmode = get_bootmode();
  92
  93        switch (bootmode & TAMP_BOOT_DEVICE_MASK) {
  94        case BOOT_FLASH_SD:
  95        case BOOT_FLASH_EMMC:
  96                return "mmc";
  97        default:
  98                return "";
  99        }
 100}
 101
 102const char *env_ext4_get_dev_part(void)
 103{
 104        static char *const dev_part[] = {"0:auto", "1:auto", "2:auto"};
 105        u32 bootmode = get_bootmode();
 106
 107        return dev_part[(bootmode & TAMP_BOOT_INSTANCE_MASK) - 1];
 108}
 109
 110int mmc_get_env_dev(void)
 111{
 112        u32 bootmode = get_bootmode();
 113
 114        return (bootmode & TAMP_BOOT_INSTANCE_MASK) - 1;
 115}
 116
 117#if defined(CONFIG_OF_BOARD_SETUP)
 118int ft_board_setup(void *blob, struct bd_info *bd)
 119{
 120        return 0;
 121}
 122#endif
 123