Vipin KUMAR wrote: > 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.ku...@st.com> > --- > board/spear/common/spr_misc.c | 23 ++++++++++++++++++++--- > 1 files changed, 20 insertions(+), 3 deletions(-) > > diff --git a/board/spear/common/spr_misc.c b/board/spear/common/spr_misc.c > index e356912..4af9436 100644 > --- a/board/spear/common/spr_misc.c > +++ b/board/spear/common/spr_misc.c > @@ -38,6 +38,10 @@ > DECLARE_GLOBAL_DATA_PTR; > static struct chip_data chip_data; > > +#if defined(CONFIG_CMD_NET) > +static int i2c_read_mac(uchar *buffer); > +#endif > + > int dram_init(void) > { > struct xloader_table *xloader_tb = > @@ -166,6 +170,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]; > @@ -205,15 +210,20 @@ static int write_mac(uchar *mac) > puts("I2C EEPROM writing failed \n"); > return -1; > } > +#endif > > int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) > { > void (*sram_setfreq) (unsigned int, unsigned int); > struct chip_data *chip = &chip_data; > - unsigned char mac[6]; > - unsigned int reg, frequency; > + unsigned int frequency; > + > +#if defined(CONFIG_CMD_NET) > + unsigned int reg; > char *s, *e; > char i2c_mac[20]; > + unsigned char mac[6]; > +#endif
These variable should be moved to "etheraddr" if-check scope This will clean up having multiple #if defined(CONFIG_CMD_NET) checks > > if ((argc > 3) || (argc < 2)) { > cmd_usage(cmdtp); > @@ -244,6 +254,8 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, > char *argv[]) > } > > return 0; > + > +#if defined(CONFIG_CMD_NET) > } else if (!strcmp(argv[1], "ethaddr")) { > > s = argv[2]; > @@ -255,6 +267,7 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, > char *argv[]) > write_mac(mac); > > return 0; > +#endif > } else if (!strcmp(argv[1], "print")) { > > if (chip->cpufreq == -1) > @@ -274,13 +287,14 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int > argc, char *argv[]) > else > printf("DDR Type = Not Known\n"); > > +#if defined(CONFIG_CMD_NET) > if (!i2c_read_mac(mac)) { > sprintf(i2c_mac, "%pM", mac); > printf("Ethaddr (from i2c mem) = %s\n", i2c_mac); > } else { > printf("Ethaddr (from i2c mem) = Not set\n"); > } From misc_init_r, the mac_id is stored in the enviromement. Because the enviroment has precendence over the i2c. Reporting the i2c mac address may be inconsistent or wrong. Tom > - > +#endif > printf("Xloader Rev = %s\n", chip->version); > > return 0; > @@ -293,4 +307,7 @@ int do_chip_config(cmd_tbl_t *cmdtp, int flag, int argc, > char *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"); _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot