1ac880e77SJagan Teki /*
2ac880e77SJagan Teki * Copyright (C) 2016 Amarula Solutions B.V.
3ac880e77SJagan Teki * Copyright (C) 2016 Engicam S.r.l.
4ac880e77SJagan Teki * Author: Jagan Teki <jagan@amarulasolutions.com>
5ac880e77SJagan Teki *
6ac880e77SJagan Teki * SPDX-License-Identifier: GPL-2.0+
7ac880e77SJagan Teki */
8ac880e77SJagan Teki
9ac880e77SJagan Teki #include <common.h>
10ac880e77SJagan Teki #include <mmc.h>
11ac880e77SJagan Teki #include <asm/arch/sys_proto.h>
12ac880e77SJagan Teki
13ac880e77SJagan Teki #include "board.h"
14ac880e77SJagan Teki
15ac880e77SJagan Teki DECLARE_GLOBAL_DATA_PTR;
16ac880e77SJagan Teki
17ac880e77SJagan Teki #ifdef CONFIG_ENV_IS_IN_MMC
mmc_late_init(void)18f9247569SJagan Teki static void mmc_late_init(void)
19ac880e77SJagan Teki {
20ac880e77SJagan Teki char cmd[32];
21ac880e77SJagan Teki char mmcblk[32];
22ac880e77SJagan Teki u32 dev_no = mmc_get_env_dev();
23ac880e77SJagan Teki
24*018f5303SSimon Glass env_set_ulong("mmcdev", dev_no);
25ac880e77SJagan Teki
26ac880e77SJagan Teki /* Set mmcblk env */
27ac880e77SJagan Teki sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw", dev_no);
28382bee57SSimon Glass env_set("mmcroot", mmcblk);
29ac880e77SJagan Teki
30ac880e77SJagan Teki sprintf(cmd, "mmc dev %d", dev_no);
31ac880e77SJagan Teki run_command(cmd, 0);
32ac880e77SJagan Teki }
33ac880e77SJagan Teki #endif
34ac880e77SJagan Teki
board_late_init(void)35f9247569SJagan Teki int board_late_init(void)
36f9247569SJagan Teki {
37f9247569SJagan Teki switch ((imx6_src_get_boot_mode() & IMX6_BMODE_MASK) >>
38f9247569SJagan Teki IMX6_BMODE_SHIFT) {
39f9247569SJagan Teki case IMX6_BMODE_SD:
40f9247569SJagan Teki case IMX6_BMODE_ESD:
41f9247569SJagan Teki case IMX6_BMODE_MMC:
42f9247569SJagan Teki case IMX6_BMODE_EMMC:
43f9247569SJagan Teki #ifdef CONFIG_ENV_IS_IN_MMC
44f9247569SJagan Teki mmc_late_init();
45f9247569SJagan Teki #endif
46382bee57SSimon Glass env_set("modeboot", "mmcboot");
47f9247569SJagan Teki break;
48f9247569SJagan Teki case IMX6_BMODE_NAND:
49382bee57SSimon Glass env_set("modeboot", "nandboot");
50f9247569SJagan Teki break;
51f9247569SJagan Teki default:
52382bee57SSimon Glass env_set("modeboot", "");
53f9247569SJagan Teki break;
54f9247569SJagan Teki }
55f9247569SJagan Teki
5646f9c839SJagan Teki if (is_mx6ul())
57382bee57SSimon Glass env_set("console", "ttymxc0");
5846f9c839SJagan Teki else
59382bee57SSimon Glass env_set("console", "ttymxc3");
6046f9c839SJagan Teki
61f9247569SJagan Teki setenv_fdt_file();
62f9247569SJagan Teki
63f9247569SJagan Teki return 0;
64f9247569SJagan Teki }
65f9247569SJagan Teki
board_init(void)66ac880e77SJagan Teki int board_init(void)
67ac880e77SJagan Teki {
68ac880e77SJagan Teki /* Address of boot parameters */
69ac880e77SJagan Teki gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
70ac880e77SJagan Teki
71ac880e77SJagan Teki #ifdef CONFIG_NAND_MXS
72ac880e77SJagan Teki setup_gpmi_nand();
73ac880e77SJagan Teki #endif
74ac880e77SJagan Teki
75ac880e77SJagan Teki #ifdef CONFIG_VIDEO_IPUV3
76ac880e77SJagan Teki setup_display();
77ac880e77SJagan Teki #endif
78ac880e77SJagan Teki
79ac880e77SJagan Teki return 0;
80ac880e77SJagan Teki }
81ac880e77SJagan Teki
dram_init(void)82ac880e77SJagan Teki int dram_init(void)
83ac880e77SJagan Teki {
84ac880e77SJagan Teki gd->ram_size = imx_ddr_size();
85ac880e77SJagan Teki
86ac880e77SJagan Teki return 0;
87ac880e77SJagan Teki }
88