uboot/board/engicam/common/board.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Copyright (C) 2016 Amarula Solutions B.V.
   4 * Copyright (C) 2016 Engicam S.r.l.
   5 * Author: Jagan Teki <jagan@amarulasolutions.com>
   6 */
   7
   8#include <common.h>
   9#include <mmc.h>
  10#include <asm/arch/sys_proto.h>
  11
  12#include "board.h"
  13
  14DECLARE_GLOBAL_DATA_PTR;
  15
  16#ifdef CONFIG_ENV_IS_IN_MMC
  17static void mmc_late_init(void)
  18{
  19        char cmd[32];
  20        char mmcblk[32];
  21        u32 dev_no = mmc_get_env_dev();
  22
  23        env_set_ulong("mmcdev", dev_no);
  24
  25        /* Set mmcblk env */
  26        sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw", dev_no);
  27        env_set("mmcroot", mmcblk);
  28
  29        sprintf(cmd, "mmc dev %d", dev_no);
  30        run_command(cmd, 0);
  31}
  32#endif
  33
  34static void setenv_fdt_file(void)
  35{
  36        const char *cmp_dtb = CONFIG_DEFAULT_DEVICE_TREE;
  37
  38        if (!strcmp(cmp_dtb, "imx6q-icore")) {
  39                if (is_mx6dq())
  40                        env_set("fdt_file", "imx6q-icore.dtb");
  41                else if (is_mx6dl() || is_mx6solo())
  42                        env_set("fdt_file", "imx6dl-icore.dtb");
  43        } else if (!strcmp(cmp_dtb, "imx6q-icore-mipi")) {
  44                if (is_mx6dq())
  45                        env_set("fdt_file", "imx6q-icore-mipi.dtb");
  46                else if (is_mx6dl() || is_mx6solo())
  47                        env_set("fdt_file", "imx6dl-icore-mipi.dtb");
  48        } else if (!strcmp(cmp_dtb, "imx6q-icore-rqs")) {
  49                if (is_mx6dq())
  50                        env_set("fdt_file", "imx6q-icore-rqs.dtb");
  51                else if (is_mx6dl() || is_mx6solo())
  52                        env_set("fdt_file", "imx6dl-icore-rqs.dtb");
  53        } else if (!strcmp(cmp_dtb, "imx6ul-geam"))
  54                env_set("fdt_file", "imx6ul-geam.dtb");
  55        else if (!strcmp(cmp_dtb, "imx6ul-isiot-mmc"))
  56                env_set("fdt_file", "imx6ul-isiot-emmc.dtb");
  57        else if (!strcmp(cmp_dtb, "imx6ul-isiot-emmc"))
  58                env_set("fdt_file", "imx6ul-isiot-emmc.dtb");
  59        else if (!strcmp(cmp_dtb, "imx6ul-isiot-nand"))
  60                env_set("fdt_file", "imx6ul-isiot-nand.dtb");
  61}
  62
  63int board_late_init(void)
  64{
  65        switch ((imx6_src_get_boot_mode() & IMX6_BMODE_MASK) >>
  66                        IMX6_BMODE_SHIFT) {
  67        case IMX6_BMODE_SD:
  68        case IMX6_BMODE_ESD:
  69        case IMX6_BMODE_MMC:
  70        case IMX6_BMODE_EMMC:
  71#ifdef CONFIG_ENV_IS_IN_MMC
  72                mmc_late_init();
  73#endif
  74                env_set("modeboot", "mmcboot");
  75                break;
  76        case IMX6_BMODE_NAND_MIN ... IMX6_BMODE_NAND_MAX:
  77                env_set("modeboot", "nandboot");
  78                break;
  79        default:
  80                env_set("modeboot", "");
  81                break;
  82        }
  83
  84        if (is_mx6ul())
  85                env_set("console", "ttymxc0");
  86        else
  87                env_set("console", "ttymxc3");
  88
  89        setenv_fdt_file();
  90
  91        return 0;
  92}
  93
  94int board_init(void)
  95{
  96        /* Address of boot parameters */
  97        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
  98
  99#ifdef CONFIG_NAND_MXS
 100        setup_gpmi_nand();
 101#endif
 102
 103#ifdef CONFIG_VIDEO_IPUV3
 104        setup_display();
 105#endif
 106
 107        return 0;
 108}
 109
 110int dram_init(void)
 111{
 112        gd->ram_size = imx_ddr_size();
 113
 114        return 0;
 115}
 116