diff options
| author | Vipin KUMAR <vipin.kumar@st.com> | 2012-05-07 13:06:41 +0530 | 
|---|---|---|
| committer | Albert ARIBAUD <albert.u.boot@aribaud.net> | 2012-07-07 14:07:40 +0200 | 
| commit | 8026b1e42f533f14115bb629efeaaedec6eaf23b (patch) | |
| tree | b2e11daec61a70f7223cd50cb951439ef4a02876 | |
| parent | 70fdbefc6c50010cc56196b65a233369d2b2ce68 (diff) | |
| download | olio-uboot-2014.01-8026b1e42f533f14115bb629efeaaedec6eaf23b.tar.xz olio-uboot-2014.01-8026b1e42f533f14115bb629efeaaedec6eaf23b.zip | |
SPEAr: Place ethaddr write and read within CONFIG_CMD_NET
ethaddr can be optionally read from i2c memory. So, chip_config command supports
reading/writing hw mac id into i2c memory. Placing this code within
CONFIG_CMD_NET as this would only be needed when network interface is configured
Signed-off-by: Vipin Kumar <vipin.kumar@st.com>
Signed-off-by: Amit Virdi <amit.virdi@st.com>
Signed-off-by: Stefan Roese <sr@denx.de>
| -rw-r--r-- | board/spear/common/spr_misc.c | 29 | ||||
| -rw-r--r-- | doc/README.spear | 8 | 
2 files changed, 29 insertions, 8 deletions
| diff --git a/board/spear/common/spr_misc.c b/board/spear/common/spr_misc.c index be96c1504..e2918ff40 100644 --- a/board/spear/common/spr_misc.c +++ b/board/spear/common/spr_misc.c @@ -36,6 +36,10 @@  DECLARE_GLOBAL_DATA_PTR; +#if defined(CONFIG_CMD_NET) +static int i2c_read_mac(uchar *buffer); +#endif +  int dram_init(void)  {  	/* Store complete RAM size and return */ @@ -136,6 +140,7 @@ int spear_board_init(ulong mach_type)  	return 0;  } +#if defined(CONFIG_CMD_NET)  static int i2c_read_mac(uchar *buffer)  {  	u8 buf[2]; @@ -172,17 +177,18 @@ static int write_mac(uchar *mac)  		return 0;  	} -	puts("I2C EEPROM writing failed \n"); +	puts("I2C EEPROM writing failed\n");  	return -1;  } +#endif  int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  {  	void (*sram_setfreq) (unsigned int, unsigned int); +	unsigned int frequency; +#if defined(CONFIG_CMD_NET)  	unsigned char mac[6]; -	unsigned int reg, frequency; -	char *s, *e; -	char i2c_mac[20]; +#endif  	if ((argc > 3) || (argc < 2))  		return cmd_usage(cmdtp); @@ -207,9 +213,12 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  		}  		return 0; + +#if defined(CONFIG_CMD_NET)  	} else if (!strcmp(argv[1], "ethaddr")) { -		s = argv[2]; +		u32 reg; +		char *e, *s = argv[2];  		for (reg = 0; reg < 6; ++reg) {  			mac[reg] = s ? simple_strtoul(s, &e, 16) : 0;  			if (s) @@ -218,14 +227,15 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  		write_mac(mac);  		return 0; +#endif  	} else if (!strcmp(argv[1], "print")) { +#if defined(CONFIG_CMD_NET)  		if (!i2c_read_mac(mac)) { -			sprintf(i2c_mac, "%pM", mac); -			printf("Ethaddr (from i2c mem) = %s\n", i2c_mac); +			printf("Ethaddr (from i2c mem) = %pM\n", mac);  		} else {  			printf("Ethaddr (from i2c mem) = Not set\n");  		} - +#endif  		return 0;  	} @@ -235,4 +245,7 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  U_BOOT_CMD(chip_config, 3, 1, do_chip_config,  	   "configure chip",  	   "chip_config cpufreq/ddrfreq frequency\n" +#if defined(CONFIG_CMD_NET) +	   "chip_config ethaddr XX:XX:XX:XX:XX:XX\n" +#endif  	   "chip_config print"); diff --git a/doc/README.spear b/doc/README.spear index a8b105244..a6ff7fdae 100644 --- a/doc/README.spear +++ b/doc/README.spear @@ -46,3 +46,11 @@ Further options  	make FLASH=PNOR (supported by SPEAr310 and SPEAr320)  	- This option generates a uboot image that supports emi controller for  	CFI compliant parallel NOR flash + +Mac id storage and retrieval in spear platforms + +Please read doc/README.enetaddr for the implementation guidelines for mac id +usage. Basically, environment has precedence over board specific storage. The +ethaddr beeing used for the network interface is always taken only from +environment variables. Although, we can check the mac id programmed in i2c +memory by using chip_config command |