Index: linux-2.6.21.7/arch/arm/mach-ixp4xx/avila-setup.c =================================================================== --- linux-2.6.21.7.orig/arch/arm/mach-ixp4xx/avila-setup.c +++ linux-2.6.21.7/arch/arm/mach-ixp4xx/avila-setup.c @@ -18,6 +18,10 @@ #include #include #include +#ifdef CONFIG_SENSORS_EEPROM +#include +#include +#endif #include #include @@ -188,9 +192,34 @@ static struct platform_device *avila_dev }; +#ifdef CONFIG_SENSORS_EEPROM +static int loft_eeprom_do(struct notifier_block *self, unsigned long event, void *t) +{ + struct eeprom_data *data = t; + + char macs[12]; + + /* The MACs are the first 12 bytes in the eeprom at address 0x51 */ + if (event == EEPROM_REGISTER && data->client.addr == 0x51) { + data->attr->read(&data->client.dev.kobj, macs, 0, 12); + memcpy(&plat_mac0.hwaddr, macs, 6); + memcpy(&plat_mac1.hwaddr, macs + 6, 6); + } + + return NOTIFY_DONE; +} + +static struct notifier_block loft_eeprom_notifier = { + .notifier_call = loft_eeprom_do +}; +#endif + static void __init avila_init(void) { ixp4xx_sys_init(); +#ifdef CONFIG_SENSORS_EEPROM + register_eeprom_notifier(&loft_eeprom_notifier); +#endif avila_flash_resource.start = IXP4XX_EXP_BUS_BASE(0); avila_flash_resource.end =