card 6 "NE2000, 3com 503 or WD based card (also emulated by Bochs)"
card 7 "AMD LANCE (also emulated by VMWare and VirtualBox)" "1022:2000"
card 8 "Intel PRO/1000 Gigabit" \
- "8086:100E" "8086:107C" "8086:10CD" "8086:10D3"
+ "8086:100E" "8086:107C" "8086:10CD" "8086:10D3" "8086:10DE"
card 9 "Attansic/Atheros L2 FastEthernet" "1969:2048"
card 10 "DEC Tulip 21140A in VirtualPC" "1011:0009"
{
E1000_DEV_ID_82540EM,
E1000_DEV_ID_82541GI_LF,
+ E1000_DEV_ID_ICH10_D_BM_LM,
E1000_DEV_ID_ICH10_R_BM_LF,
E1000_DEV_ID_82574L,
0,
*/
switch (did)
{
+ case E1000_DEV_ID_ICH10_D_BM_LM:
case E1000_DEV_ID_ICH10_R_BM_LF:
e->eeprom_read = eeprom_ich;
break;
- case E1000_DEV_ID_82574L:
+ case E1000_DEV_ID_82574L:
case E1000_DEV_ID_82541GI_LF:
e->eeprom_done_bit = (1 << 1);
e->eeprom_addr_off = 2;
did != E1000_DEV_ID_82540EP &&
pci_attr_r32(devind, PCI_BAR_2))
{
- if((e->flash = vm_map_phys(SELF,
- (void *) pci_attr_r32(devind, PCI_BAR_2), 0x10000)) == MAP_FAILED) {
- if((e->flash = vm_map_phys(SELF,
- (void *) pci_attr_r32(devind, PCI_BAR_2), 0x1000))
- == MAP_FAILED) {
- panic("e1000: couldn't map in flash.");
- }
- }
+ size_t flash_size;
+
+ /* 82566/82567/82562V series support mapping 4kB of flash memory */
+ switch(did)
+ {
+ case E1000_DEV_ID_ICH10_D_BM_LM:
+ case E1000_DEV_ID_ICH10_R_BM_LF:
+ flash_size = 0x1000;
+ break;
+ default:
+ flash_size = 0x10000;
+ }
+
+ if ((e->flash = vm_map_phys(SELF,
+ (void *) pci_attr_r32(devind, PCI_BAR_2),
+ flash_size)) == MAP_FAILED) {
+ panic("e1000: couldn't map in flash.");
+ }
gfpreg = E1000_READ_FLASH_REG(e, ICH_FLASH_GFPREG);
/*