xref: /rk3399_rockchip-uboot/board/engicam/common/board.c (revision 018f530323b2cc41be05be5b12375d3648f06554)
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