If the EEPROM content isn't valid, there is no point in registering the EEPROM device, as it will reject any read attempt anyway. Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> --- drivers/net/e1000/eeprom.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/net/e1000/eeprom.c b/drivers/net/e1000/eeprom.c index b0408107bbdd..319910103eee 100644 --- a/drivers/net/e1000/eeprom.c +++ b/drivers/net/e1000/eeprom.c @@ -1556,15 +1556,6 @@ int e1000_register_eeprom(struct e1000_hw *hw) eecd = e1000_read_reg(hw, E1000_EECD); - hw->eepromcdev.dev = hw->dev; - hw->eepromcdev.ops = &e1000_eeprom_ops; - hw->eepromcdev.name = xasprintf("e1000-eeprom%d", hw->dev->id); - hw->eepromcdev.size = 0x1000; - - ret = devfs_create(&hw->eepromcdev); - if (ret < 0) - return ret; - if (eecd & E1000_EECD_AUTO_RD) { if (eecd & E1000_EECD_EE_PRES) { if (eecd & E1000_EECD_FLASH_IN_USE) { @@ -1587,6 +1578,18 @@ int e1000_register_eeprom(struct e1000_hw *hw) dev_err(hw->dev, "Flash Auto-Read not done\n"); } + if (e1000_eeprom_valid(hw)) { + hw->eepromcdev.dev = hw->dev; + hw->eepromcdev.ops = &e1000_eeprom_ops; + hw->eepromcdev.name = xasprintf("e1000-eeprom%d", + hw->dev->id); + hw->eepromcdev.size = 0x1000; + + ret = devfs_create(&hw->eepromcdev); + if (ret < 0) + return ret; + } + if (eecd & E1000_EECD_I210_FLASH_DETECTED) { hw->mtd.parent = hw->dev; hw->mtd.read = e1000_mtd_read; @@ -1609,18 +1612,22 @@ int e1000_register_eeprom(struct e1000_hw *hw) ret = add_mtd_device(&hw->mtd, "e1000-nor", DEVICE_ID_DYNAMIC); - if (ret) { - devfs_remove(&hw->eepromcdev); - return ret; - } + if (ret) + goto out_eeprom; } ret = e1000_register_invm(hw); - if (ret < 0) { - if (eecd & E1000_EECD_I210_FLASH_DETECTED) - del_mtd_device(&hw->mtd); + if (ret < 0) + goto out_mtd; + + return E1000_SUCCESS; + +out_mtd: + if (eecd & E1000_EECD_I210_FLASH_DETECTED) + del_mtd_device(&hw->mtd); +out_eeprom: + if (e1000_eeprom_valid(hw)) devfs_remove(&hw->eepromcdev); - } return ret; } -- 2.15.1 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox