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