xref: /rk3399_rockchip-uboot/board/isee/igep00x0/common.c (revision 331c2375688d79920fb06b8f0c4c52a7df56fb29)
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 Michl void 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 Michl int 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 Michl int 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 Michl void board_mmc_power_init(void)
654c699a47SLadislav Michl {
664c699a47SLadislav Michl 	twl4030_power_mmc_init(0);
674c699a47SLadislav Michl }
684c699a47SLadislav Michl #endif
69