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>
This commit is contained in:
		
							parent
							
								
									70fdbefc6c
								
							
						
					
					
						commit
						8026b1e42f
					
				|  | @ -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"); | ||||
|  |  | |||
|  | @ -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 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue