Index: oldkernel/linux/drivers/net/eepro100.c diff -u linux/drivers/net/eepro100.c:1.4 linux/drivers/net/eepro100.c:1.5 --- linux/drivers/net/eepro100.c:1.4 Thu Jun 1 17:15:13 2000 +++ linux/drivers/net/eepro100.c Thu Jun 1 17:15:50 2000 @@ -316,6 +316,21 @@ }; #endif +struct eepro_revision_info { + const char *name; + unsigned char revision; +} static eepro_revisions [] = { + { "82557 (A-Step)", 0x1}, + { "82557 (B-Step)", 0x2}, + { "82557 (C-Step)", 0x3}, + { "82558 (A-Step)", 0x4}, + { "82558 (B-Step)", 0x5}, + { "82559 (A-Step)", 0x6}, + { "82559 (B-Step)", 0x7}, + { "82559 (C-Step)", 0x8}, + { "82559ER (A-Step)", 0x9}, +}; + #ifndef USE_IO #undef inb #undef inw @@ -682,6 +697,7 @@ int i, option; u16 eeprom[0x100]; int acpi_idle_state = 0; + unsigned char revision; #ifndef MODULE static int did_version = 0; /* Already printed version info. */ if (speedo_debug > 0 && did_version++ == 0) @@ -752,6 +768,22 @@ for (i = 0; i < 5; i++) printk("%2.2X:", dev->dev_addr[i]); printk("%2.2X, IRQ %d.\n", dev->dev_addr[i], irq); + + /* Get the chip revision. */ + pcibios_read_config_byte(pci_bus, pci_devfn, + PCI_REVISION_ID, &revision); + for (i = 0; + i < sizeof (eepro_revisions) / sizeof (eepro_revisions [0]); + i++) { + if (eepro_revisions [i].revision == revision) + break; + } + if (i < sizeof (eepro_revisions) / sizeof (eepro_revisions [0])) + printk(KERN_INFO " %s LAN controller\n", + eepro_revisions [i].name); + else + printk(KERN_INFO " Pro100 (0x%x) LAN controller\n", + revision); #if 1 || defined(kernel_bloat) /* OK, this is pure kernel bloat. I don't like it when other drivers