diff options
Diffstat (limited to 'board/samsung/trats/trats.c')
| -rw-r--r-- | board/samsung/trats/trats.c | 80 | 
1 files changed, 23 insertions, 57 deletions
| diff --git a/board/samsung/trats/trats.c b/board/samsung/trats/trats.c index e11a8922f..d5c681c05 100644 --- a/board/samsung/trats/trats.c +++ b/board/samsung/trats/trats.c @@ -29,6 +29,7 @@  #include <asm/arch/cpu.h>  #include <asm/arch/gpio.h>  #include <asm/arch/mmc.h> +#include <asm/arch/pinmux.h>  #include <asm/arch/clock.h>  #include <asm/arch/clk.h>  #include <asm/arch/mipi_dsim.h> @@ -93,7 +94,9 @@ void i2c_init_board(void)  int dram_init(void)  {  	gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE) + -		get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE); +		get_ram_size((long *)PHYS_SDRAM_2, PHYS_SDRAM_2_SIZE) + +		get_ram_size((long *)PHYS_SDRAM_3, PHYS_SDRAM_3_SIZE) + +		get_ram_size((long *)PHYS_SDRAM_4, PHYS_SDRAM_4_SIZE);  	return 0;  } @@ -104,6 +107,10 @@ void dram_init_banksize(void)  	gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;  	gd->bd->bi_dram[1].start = PHYS_SDRAM_2;  	gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE; +	gd->bd->bi_dram[2].start = PHYS_SDRAM_3; +	gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE; +	gd->bd->bi_dram[3].start = PHYS_SDRAM_4; +	gd->bd->bi_dram[3].size = PHYS_SDRAM_4_SIZE;  }  static unsigned int get_hw_revision(void) @@ -151,54 +158,22 @@ int board_mmc_init(bd_t *bis)  {  	struct exynos4_gpio_part2 *gpio =  		(struct exynos4_gpio_part2 *)samsung_get_base_gpio_part2(); -	int i, err; +	int err;  	/* eMMC_EN: SD_0_CDn: GPK0[2] Output High */  	s5p_gpio_direction_output(&gpio->k0, 2, 1);  	s5p_gpio_set_pull(&gpio->k0, 2, GPIO_PULL_NONE);  	/* -	 * eMMC GPIO: -	 * SDR 8-bit@48MHz at MMC0 -	 * GPK0[0]	SD_0_CLK(2) -	 * GPK0[1]	SD_0_CMD(2) -	 * GPK0[2]	SD_0_CDn	-> Not used -	 * GPK0[3:6]	SD_0_DATA[0:3](2) -	 * GPK1[3:6]	SD_0_DATA[0:3](3) -	 * -	 * DDR 4-bit@26MHz at MMC4 -	 * GPK0[0]	SD_4_CLK(3) -	 * GPK0[1]	SD_4_CMD(3) -	 * GPK0[2]	SD_4_CDn	-> Not used -	 * GPK0[3:6]	SD_4_DATA[0:3](3) -	 * GPK1[3:6]	SD_4_DATA[4:7](4) -	 */ -	for (i = 0; i < 7; i++) { -		if (i == 2) -			continue; -		/* GPK0[0:6] special function 2 */ -		s5p_gpio_cfg_pin(&gpio->k0, i, 0x2); -		/* GPK0[0:6] pull disable */ -		s5p_gpio_set_pull(&gpio->k0, i, GPIO_PULL_NONE); -		/* GPK0[0:6] drv 4x */ -		s5p_gpio_set_drv(&gpio->k0, i, GPIO_DRV_4X); -	} - -	for (i = 3; i < 7; i++) { -		/* GPK1[3:6] special function 3 */ -		s5p_gpio_cfg_pin(&gpio->k1, i, 0x3); -		/* GPK1[3:6] pull disable */ -		s5p_gpio_set_pull(&gpio->k1, i, GPIO_PULL_NONE); -		/* GPK1[3:6] drv 4x */ -		s5p_gpio_set_drv(&gpio->k1, i, GPIO_DRV_4X); -	} - -	/*  	 * MMC device init  	 * mmc0	 : eMMC (8-bit buswidth)  	 * mmc2	 : SD card (4-bit buswidth)  	 */ -	err = s5p_mmc_init(0, 8); +	err = exynos_pinmux_config(PERIPH_ID_SDMMC0, PINMUX_FLAG_8BIT_MODE); +	if (err) +		debug("SDMMC0 not configured\n"); +	else +		err = s5p_mmc_init(0, 8);  	/* T-flash detect */  	s5p_gpio_cfg_pin(&gpio->x3, 4, 0xf); @@ -209,24 +184,11 @@ int board_mmc_init(bd_t *bis)  	 * GPX3[4] T-flash detect pin  	 */  	if (!s5p_gpio_get_value(&gpio->x3, 4)) { -		/* -		 * SD card GPIO: -		 * GPK2[0]	SD_2_CLK(2) -		 * GPK2[1]	SD_2_CMD(2) -		 * GPK2[2]	SD_2_CDn	-> Not used -		 * GPK2[3:6]	SD_2_DATA[0:3](2) -		 */ -		for (i = 0; i < 7; i++) { -			if (i == 2) -				continue; -			/* GPK2[0:6] special function 2 */ -			s5p_gpio_cfg_pin(&gpio->k2, i, 0x2); -			/* GPK2[0:6] pull disable */ -			s5p_gpio_set_pull(&gpio->k2, i, GPIO_PULL_NONE); -			/* GPK2[0:6] drv 4x */ -			s5p_gpio_set_drv(&gpio->k2, i, GPIO_DRV_4X); -		} -		err = s5p_mmc_init(2, 4); +		err = exynos_pinmux_config(PERIPH_ID_SDMMC2, PINMUX_FLAG_NONE); +		if (err) +			debug("SDMMC2 not configured\n"); +		else +			err = s5p_mmc_init(2, 4);  	}  	return err; @@ -359,6 +321,10 @@ static void board_power_init(void)  	writel(0, (unsigned int)&pwr->lcd1_configuration);  	writel(0, (unsigned int)&pwr->gps_configuration);  	writel(0, (unsigned int)&pwr->gps_alive_configuration); + +	/* It is necessary to power down core 1 */ +	/* to successfully boot CPU1 in kernel */ +	writel(0, (unsigned int)&pwr->arm_core1_configuration);  }  static void board_uart_init(void) |