14c699a47SLadislav Michl /* 24c699a47SLadislav Michl * SPDX-License-Identifier: GPL-2.0+ 34c699a47SLadislav Michl */ 44c699a47SLadislav Michl #include <common.h> 54c699a47SLadislav Michl #include <twl4030.h> 64c699a47SLadislav Michl #include <asm/io.h> 74c699a47SLadislav Michl #include <asm/omap_mmc.h> 84c699a47SLadislav Michl #include <asm/arch/mux.h> 94c699a47SLadislav Michl #include <asm/arch/sys_proto.h> 104c699a47SLadislav Michl #include <jffs2/load_kernel.h> 11*331c2375SMasahiro Yamada #include <linux/mtd/rawnand.h> 124c699a47SLadislav Michl #include "igep00x0.h" 134c699a47SLadislav Michl 144c699a47SLadislav Michl DECLARE_GLOBAL_DATA_PTR; 154c699a47SLadislav Michl 164c699a47SLadislav Michl /* 174c699a47SLadislav Michl * Routine: set_muxconf_regs 184c699a47SLadislav Michl * Description: Setting up the configuration Mux registers specific to the 194c699a47SLadislav Michl * hardware. Many pins need to be moved from protect to primary 204c699a47SLadislav Michl * mode. 214c699a47SLadislav Michl */ set_muxconf_regs(void)224c699a47SLadislav Michlvoid set_muxconf_regs(void) 234c699a47SLadislav Michl { 244c699a47SLadislav Michl MUX_DEFAULT(); 254c699a47SLadislav Michl } 264c699a47SLadislav Michl 274c699a47SLadislav Michl /* 284c699a47SLadislav Michl * Routine: board_init 294c699a47SLadislav Michl * Description: Early hardware init. 304c699a47SLadislav Michl */ board_init(void)314c699a47SLadislav Michlint board_init(void) 324c699a47SLadislav Michl { 334c699a47SLadislav Michl int loops = 100; 344c699a47SLadislav Michl 354c699a47SLadislav Michl /* find out flash memory type, assume NAND first */ 364c699a47SLadislav Michl gpmc_cs0_flash = MTD_DEV_TYPE_NAND; 374c699a47SLadislav Michl gpmc_init(); 384c699a47SLadislav Michl 394c699a47SLadislav Michl /* Issue a RESET and then READID */ 404c699a47SLadislav Michl writeb(NAND_CMD_RESET, &gpmc_cfg->cs[0].nand_cmd); 414c699a47SLadislav Michl writeb(NAND_CMD_STATUS, &gpmc_cfg->cs[0].nand_cmd); 424c699a47SLadislav Michl while ((readl(&gpmc_cfg->cs[0].nand_dat) & NAND_STATUS_READY) 434c699a47SLadislav Michl != NAND_STATUS_READY) { 444c699a47SLadislav Michl udelay(1); 454c699a47SLadislav Michl if (--loops == 0) { 464c699a47SLadislav Michl gpmc_cs0_flash = MTD_DEV_TYPE_ONENAND; 474c699a47SLadislav Michl gpmc_init(); /* reinitialize for OneNAND */ 484c699a47SLadislav Michl break; 494c699a47SLadislav Michl } 504c699a47SLadislav Michl } 514c699a47SLadislav Michl 524c699a47SLadislav Michl /* boot param addr */ 534c699a47SLadislav Michl gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100); 544c699a47SLadislav Michl 554c699a47SLadislav Michl return 0; 564c699a47SLadislav Michl } 574c699a47SLadislav Michl 584c699a47SLadislav Michl #if defined(CONFIG_MMC) board_mmc_init(bd_t * bis)594c699a47SLadislav Michlint board_mmc_init(bd_t *bis) 604c699a47SLadislav Michl { 614c699a47SLadislav Michl return omap_mmc_init(0, 0, 0, -1, -1); 624c699a47SLadislav Michl } 634c699a47SLadislav Michl board_mmc_power_init(void)644c699a47SLadislav Michlvoid board_mmc_power_init(void) 654c699a47SLadislav Michl { 664c699a47SLadislav Michl twl4030_power_mmc_init(0); 674c699a47SLadislav Michl } 684c699a47SLadislav Michl #endif 69