uboot/board/engicam/imx8mm/spl.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2020 Engicam s.r.l.
   4 * Copyright (C) 2020 Amarula Solutions(India)
   5 * Author: Jagan Teki <jagan@amarulasolutions.com>
   6 */
   7
   8#include <common.h>
   9#include <hang.h>
  10#include <init.h>
  11#include <log.h>
  12#include <spl.h>
  13#include <asm/mach-imx/iomux-v3.h>
  14#include <asm/arch/clock.h>
  15#include <asm/arch/imx8mm_pins.h>
  16#include <asm/arch/sys_proto.h>
  17#include <asm/mach-imx/boot_mode.h>
  18#include <asm/arch/ddr.h>
  19
  20DECLARE_GLOBAL_DATA_PTR;
  21
  22int spl_board_boot_device(enum boot_device boot_dev_spl)
  23{
  24        switch (boot_dev_spl) {
  25        case SD1_BOOT:
  26        case SD2_BOOT:
  27        case MMC2_BOOT:
  28                return BOOT_DEVICE_MMC1;
  29        case SD3_BOOT:
  30        case MMC3_BOOT:
  31                return BOOT_DEVICE_MMC2;
  32        default:
  33                return BOOT_DEVICE_NONE;
  34        }
  35}
  36
  37static void spl_dram_init(void)
  38{
  39        ddr_init(&dram_timing);
  40}
  41
  42void spl_board_init(void)
  43{
  44        debug("Normal Boot\n");
  45}
  46
  47#ifdef CONFIG_SPL_LOAD_FIT
  48int board_fit_config_name_match(const char *name)
  49{
  50        /* Just empty function now - can't decide what to choose */
  51        debug("%s: %s\n", __func__, name);
  52
  53        return 0;
  54}
  55#endif
  56
  57int board_early_init_f(void)
  58{
  59       return 0;
  60}
  61
  62void board_init_f(ulong dummy)
  63{
  64        int ret;
  65
  66        arch_cpu_init();
  67
  68        init_uart_clk(1);
  69
  70        board_early_init_f();
  71
  72        timer_init();
  73
  74        /* Clear the BSS. */
  75        memset(__bss_start, 0, __bss_end - __bss_start);
  76
  77        ret = spl_early_init();
  78        if (ret) {
  79                debug("spl_early_init() failed: %d\n", ret);
  80                hang();
  81        }
  82
  83        preloader_console_init();
  84
  85        enable_tzc380();
  86
  87        /* DDR initialization */
  88        spl_dram_init();
  89
  90        board_init_r(NULL, 0);
  91}
  92