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 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 24ac880e77SJagan Teki setenv_ulong("mmcdev", dev_no); 25ac880e77SJagan Teki 26ac880e77SJagan Teki /* Set mmcblk env */ 27ac880e77SJagan Teki sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw", dev_no); 28ac880e77SJagan Teki setenv("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 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 46f9247569SJagan Teki setenv("modeboot", "mmcboot"); 47f9247569SJagan Teki break; 48f9247569SJagan Teki case IMX6_BMODE_NAND: 49f9247569SJagan Teki setenv("modeboot", "nandboot"); 50f9247569SJagan Teki break; 51f9247569SJagan Teki default: 52f9247569SJagan Teki setenv("modeboot", ""); 53f9247569SJagan Teki break; 54f9247569SJagan Teki } 55f9247569SJagan Teki 56*46f9c839SJagan Teki if (is_mx6ul()) 57*46f9c839SJagan Teki setenv("console", "ttymxc0"); 58*46f9c839SJagan Teki else 59*46f9c839SJagan Teki setenv("console", "ttymxc3"); 60*46f9c839SJagan Teki 61f9247569SJagan Teki setenv_fdt_file(); 62f9247569SJagan Teki 63f9247569SJagan Teki return 0; 64f9247569SJagan Teki } 65f9247569SJagan Teki 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 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