On Fri, Jan 26, 2018 at 02:32:28PM +0100, Lucas Stach wrote: > By returning early if the MAC type isn't e1000_igb. > > Signed-off-by: Lucas Stach <l.stach@xxxxxxxxxxxxxx> > --- > drivers/net/e1000/eeprom.c | 121 +++++++++++++++++++++++---------------------- > 1 file changed, 61 insertions(+), 60 deletions(-) Applied, thanks Sascha > > diff --git a/drivers/net/e1000/eeprom.c b/drivers/net/e1000/eeprom.c > index 748d8afe7922..ddac7de8a0e9 100644 > --- a/drivers/net/e1000/eeprom.c > +++ b/drivers/net/e1000/eeprom.c > @@ -1551,79 +1551,80 @@ int e1000_eeprom_valid(struct e1000_hw *hw) > */ > int e1000_register_eeprom(struct e1000_hw *hw) > { > - int ret = E1000_SUCCESS; > - > struct e1000_eeprom_info *eeprom = &hw->eeprom; > + uint32_t eecd; > + int ret; > > - if (hw->mac_type == e1000_igb) { > - uint32_t eecd = e1000_read_reg(hw, E1000_EECD); > + if (hw->mac_type != e1000_igb) > + return E1000_SUCCESS; > > - 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; > + eecd = e1000_read_reg(hw, E1000_EECD); > > - ret = devfs_create(&hw->eepromcdev); > - if (ret < 0) > - return ret; > + 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) { > - uint32_t fla = e1000_read_reg(hw, E1000_FLA); > - dev_info(hw->dev, > - "Hardware programmed from flash (%ssecure)\n", > - fla & E1000_FLA_LOCKED ? "" : "un"); > - } else { > - dev_info(hw->dev, "Hardware programmed from iNVM\n"); > - } > + if (eecd & E1000_EECD_AUTO_RD) { > + if (eecd & E1000_EECD_EE_PRES) { > + if (eecd & E1000_EECD_FLASH_IN_USE) { > + uint32_t fla = e1000_read_reg(hw, E1000_FLA); > + dev_info(hw->dev, > + "Hardware programmed from flash (%ssecure)\n", > + fla & E1000_FLA_LOCKED ? "" : "un"); > } else { > - dev_warn(hw->dev, "Shadow RAM invalid\n"); > + dev_info(hw->dev, "Hardware programmed from iNVM\n"); > } > } else { > - /* > - * I never saw this case in practise and I'm unsure how > - * to handle that. Maybe just wait until the hardware is > - * up enough that this bit is set? > - */ > - dev_err(hw->dev, "Flash Auto-Read not done\n"); > - } > - > - if (eecd & E1000_EECD_I210_FLASH_DETECTED) { > - hw->mtd.parent = hw->dev; > - hw->mtd.read = e1000_mtd_read; > - hw->mtd.write = e1000_mtd_write; > - hw->mtd.erase = e1000_mtd_erase; > - hw->mtd.lock = e1000_mtd_lock; > - hw->mtd.unlock = e1000_mtd_unlock; > - hw->mtd.size = eeprom->word_size * 2; > - hw->mtd.writesize = 1; > - hw->mtd.subpage_sft = 0; > - > - hw->mtd.eraseregions = xzalloc(sizeof(struct mtd_erase_region_info)); > - hw->mtd.erasesize = SZ_4K; > - hw->mtd.eraseregions[0].erasesize = SZ_4K; > - hw->mtd.eraseregions[0].numblocks = hw->mtd.size / SZ_4K; > - hw->mtd.numeraseregions = 1; > - > - hw->mtd.flags = MTD_CAP_NORFLASH; > - hw->mtd.type = MTD_NORFLASH; > - > - ret = add_mtd_device(&hw->mtd, "e1000-nor", > - DEVICE_ID_DYNAMIC); > - if (ret) { > - devfs_remove(&hw->eepromcdev); > - return ret; > - } > + dev_warn(hw->dev, "Shadow RAM invalid\n"); > } > + } else { > + /* > + * I never saw this case in practise and I'm unsure how > + * to handle that. Maybe just wait until the hardware is > + * up enough that this bit is set? > + */ > + dev_err(hw->dev, "Flash Auto-Read not done\n"); > + } > > - ret = e1000_register_invm(hw); > - if (ret < 0) { > - if (eecd & E1000_EECD_I210_FLASH_DETECTED) > - del_mtd_device(&hw->mtd); > + if (eecd & E1000_EECD_I210_FLASH_DETECTED) { > + hw->mtd.parent = hw->dev; > + hw->mtd.read = e1000_mtd_read; > + hw->mtd.write = e1000_mtd_write; > + hw->mtd.erase = e1000_mtd_erase; > + hw->mtd.lock = e1000_mtd_lock; > + hw->mtd.unlock = e1000_mtd_unlock; > + hw->mtd.size = eeprom->word_size * 2; > + hw->mtd.writesize = 1; > + hw->mtd.subpage_sft = 0; > + > + hw->mtd.eraseregions = xzalloc(sizeof(struct mtd_erase_region_info)); > + hw->mtd.erasesize = SZ_4K; > + hw->mtd.eraseregions[0].erasesize = SZ_4K; > + hw->mtd.eraseregions[0].numblocks = hw->mtd.size / SZ_4K; > + hw->mtd.numeraseregions = 1; > + > + hw->mtd.flags = MTD_CAP_NORFLASH; > + hw->mtd.type = MTD_NORFLASH; > + > + ret = add_mtd_device(&hw->mtd, "e1000-nor", > + DEVICE_ID_DYNAMIC); > + if (ret) { > devfs_remove(&hw->eepromcdev); > + return ret; > } > } > > + ret = e1000_register_invm(hw); > + if (ret < 0) { > + if (eecd & E1000_EECD_I210_FLASH_DETECTED) > + del_mtd_device(&hw->mtd); > + devfs_remove(&hw->eepromcdev); > + } > + > return ret; > } > -- > 2.15.1 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox