Signed-off-by: Stefan Weil <w...@mail.berlios.de> --- hw/eepro100.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/hw/eepro100.c b/hw/eepro100.c index c647322..01bcd6d 100644 --- a/hw/eepro100.c +++ b/hw/eepro100.c @@ -272,6 +272,21 @@ typedef enum { eeprom_smbus_addr = 0x90, } EEPROMOffset; +/* Bit values for EEPROM ID word. */ +typedef enum { + eeprom_id_mdm = BIT(0), /* Modem */ + eeprom_id_stb = BIT(1), /* Standby Enable */ + eeprom_id_wmr = BIT(2), /* ??? */ + eeprom_id_wol = BIT(5), /* Wake on LAN */ + eeprom_id_dpd = BIT(6), /* Deep Power Down */ + eeprom_id_alt = BIT(7), /* */ + /* BITS(10, 8) device revision */ + eeprom_id_bd = BIT(11), /* boot disable */ + eeprom_id_id = BIT(13), /* id bit */ + /* BITS(15, 14) signature */ + eeprom_id_valid = BIT(14), /* signature for valid eeprom */ +} eeprom_id_bit; + /* Default values for MDI (PHY) registers */ static const uint16_t eepro100_mdi_default[] = { /* MDI Registers 0 - 6, 7 */ @@ -643,7 +658,7 @@ static void nic_selective_reset(EEPRO100State * s) uint16_t *eeprom_contents = eeprom93xx_data(s->eeprom); //~ eeprom93xx_reset(s->eeprom); memcpy(eeprom_contents, s->conf.macaddr.a, 6); - eeprom_contents[eeprom_id] = 0x4000; + eeprom_contents[eeprom_id] = eeprom_id_valid; if (s->device == i82557B || s->device == i82557C) eeprom_contents[5] = 0x0100; eeprom_contents[eeprom_phy_id] = 1; -- 1.6.6.1