diff options
| author | Chander Kashyap <chander.kashyap@linaro.org> | 2012-02-09 01:26:19 +0000 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-02-12 10:11:30 +0100 | 
| commit | bf936210dacaaf5d712178122b31c5f1ae46b42f (patch) | |
| tree | d8db007e3186f4605bfbf397403bbd134e15cad5 | |
| parent | 81e352032ccbf00e756083adc70d418a6ea80b14 (diff) | |
| download | olio-uboot-2014.01-bf936210dacaaf5d712178122b31c5f1ae46b42f.tar.xz olio-uboot-2014.01-bf936210dacaaf5d712178122b31c5f1ae46b42f.zip | |
SMDK5250: Add ethernet support
This patch enable support for SMC911X based ethernet device.
Signed-off-by: Chander Kashyap <chander.kashyap@linaro.org>
Acked-by: Mike Frysinger <vapier@gentoo.org>
Acked-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
| -rw-r--r-- | board/samsung/smdk5250/smdk5250.c | 94 | ||||
| -rw-r--r-- | include/configs/smdk5250.h | 11 | 
2 files changed, 103 insertions, 2 deletions
| diff --git a/board/samsung/smdk5250/smdk5250.c b/board/samsung/smdk5250/smdk5250.c index 04c863adf..928c08f9b 100644 --- a/board/samsung/smdk5250/smdk5250.c +++ b/board/samsung/smdk5250/smdk5250.c @@ -31,6 +31,91 @@  DECLARE_GLOBAL_DATA_PTR;  struct exynos5_gpio_part1 *gpio1; +#ifdef CONFIG_SMC911X +static void smc9115_pre_init(void) +{ +	u32 smc_bw_conf, smc_bc_conf; +	int i; + +	/* +	 * SROM:CS1 and EBI +	 * +	 * GPY0[0]	SROM_CSn[0] +	 * GPY0[1]	SROM_CSn[1](2) +	 * GPY0[2]	SROM_CSn[2] +	 * GPY0[3]	SROM_CSn[3] +	 * GPY0[4]	EBI_OEn(2) +	 * GPY0[5]	EBI_EEn(2) +	 * +	 * GPY1[0]	EBI_BEn[0](2) +	 * GPY1[1]	EBI_BEn[1](2) +	 * GPY1[2]	SROM_WAIT(2) +	 * GPY1[3]	EBI_DATA_RDn(2) +	 */ +	s5p_gpio_cfg_pin(&gpio1->y0, CONFIG_ENV_SROM_BANK, GPIO_FUNC(2)); +	s5p_gpio_cfg_pin(&gpio1->y0, 4, GPIO_FUNC(2)); +	s5p_gpio_cfg_pin(&gpio1->y0, 5, GPIO_FUNC(2)); + +	for (i = 0; i < 4; i++) +		s5p_gpio_cfg_pin(&gpio1->y1, i, GPIO_FUNC(2)); + +	/* +	 * EBI: 8 Addrss Lines +	 * +	 * GPY3[0]	EBI_ADDR[0](2) +	 * GPY3[1]	EBI_ADDR[1](2) +	 * GPY3[2]	EBI_ADDR[2](2) +	 * GPY3[3]	EBI_ADDR[3](2) +	 * GPY3[4]	EBI_ADDR[4](2) +	 * GPY3[5]	EBI_ADDR[5](2) +	 * GPY3[6]	EBI_ADDR[6](2) +	 * GPY3[7]	EBI_ADDR[7](2) +	 * +	 * EBI: 16 Data Lines +	 * +	 * GPY5[0]	EBI_DATA[0](2) +	 * GPY5[1]	EBI_DATA[1](2) +	 * GPY5[2]	EBI_DATA[2](2) +	 * GPY5[3]	EBI_DATA[3](2) +	 * GPY5[4]	EBI_DATA[4](2) +	 * GPY5[5]	EBI_DATA[5](2) +	 * GPY5[6]	EBI_DATA[6](2) +	 * GPY5[7]	EBI_DATA[7](2) +	 * +	 * GPY6[0]	EBI_DATA[8](2) +	 * GPY6[1]	EBI_DATA[9](2) +	 * GPY6[2]	EBI_DATA[10](2) +	 * GPY6[3]	EBI_DATA[11](2) +	 * GPY6[4]	EBI_DATA[12](2) +	 * GPY6[5]	EBI_DATA[13](2) +	 * GPY6[6]	EBI_DATA[14](2) +	 * GPY6[7]	EBI_DATA[15](2) +	 */ +	for (i = 0; i < 8; i++) { +		s5p_gpio_cfg_pin(&gpio1->y3, i, GPIO_FUNC(2)); +		s5p_gpio_set_pull(&gpio1->y3, i, GPIO_PULL_UP); + +		s5p_gpio_cfg_pin(&gpio1->y5, i, GPIO_FUNC(2)); +		s5p_gpio_set_pull(&gpio1->y5, i, GPIO_PULL_UP); + +		s5p_gpio_cfg_pin(&gpio1->y6, i, GPIO_FUNC(2)); +		s5p_gpio_set_pull(&gpio1->y6, i, GPIO_PULL_UP); +	} + +	/* Ethernet needs data bus width of 16 bits */ +	smc_bw_conf = SROMC_DATA16_WIDTH(CONFIG_ENV_SROM_BANK) +			| SROMC_BYTE_ENABLE(CONFIG_ENV_SROM_BANK); + +	smc_bc_conf = SROMC_BC_TACS(0x01) | SROMC_BC_TCOS(0x01) +			| SROMC_BC_TACC(0x06) | SROMC_BC_TCOH(0x01) +			| SROMC_BC_TAH(0x0C)  | SROMC_BC_TACP(0x09) +			| SROMC_BC_PMC(0x01); + +	/* Select and configure the SROMC bank */ +	s5p_config_sromc(CONFIG_ENV_SROM_BANK, smc_bw_conf, smc_bc_conf); +} +#endif +  int board_init(void)  {  	gpio1 = (struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1(); @@ -80,6 +165,15 @@ void dram_init_banksize(void)  							PHYS_SDRAM_8_SIZE);  } +int board_eth_init(bd_t *bis) +{ +#ifdef CONFIG_SMC911X +	smc9115_pre_init(); +	return smc911x_initialize(0, CONFIG_SMC911X_BASE); +#endif +	return 0; +} +  #ifdef CONFIG_DISPLAY_BOARDINFO  int checkboard(void)  { diff --git a/include/configs/smdk5250.h b/include/configs/smdk5250.h index f54d7ac44..9659f9ebd 100644 --- a/include/configs/smdk5250.h +++ b/include/configs/smdk5250.h @@ -96,8 +96,7 @@  #define CONFIG_CMD_MMC  #define CONFIG_CMD_EXT2  #define CONFIG_CMD_FAT -#undef CONFIG_CMD_NET -#undef CONFIG_CMD_NFS +#define CONFIG_CMD_NET  #define CONFIG_BOOTDELAY		3  #define CONFIG_ZERO_BOOTDELAY_CHECK @@ -191,6 +190,14 @@  #define CONFIG_SYS_INIT_SP_ADDR	(CONFIG_SYS_LOAD_ADDR - 0x1000000) +/* Ethernet Controllor Driver */ +#ifdef CONFIG_CMD_NET +#define CONFIG_SMC911X +#define CONFIG_SMC911X_BASE		0x5000000 +#define CONFIG_SMC911X_16_BIT +#define CONFIG_ENV_SROM_BANK		1 +#endif /*CONFIG_CMD_NET*/ +  /* Enable devicetree support */  #define CONFIG_OF_LIBFDT |