Add support for the 82567LM flavor of e1000

This commit is contained in:
Thomas Veerman 2011-03-15 10:04:35 +00:00
parent ba8af817fc
commit 898cce256f
3 changed files with 23 additions and 10 deletions

View File

@ -111,7 +111,7 @@ cards()
card 6 "NE2000, 3com 503 or WD based card (also emulated by Bochs)" 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 7 "AMD LANCE (also emulated by VMWare and VirtualBox)" "1022:2000"
card 8 "Intel PRO/1000 Gigabit" \ 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 9 "Attansic/Atheros L2 FastEthernet" "1969:2048"
card 10 "DEC Tulip 21140A in VirtualPC" "1011:0009" card 10 "DEC Tulip 21140A in VirtualPC" "1011:0009"

View File

@ -25,6 +25,7 @@ PRIVATE u16_t pcitab_e1000[] =
{ {
E1000_DEV_ID_82540EM, E1000_DEV_ID_82540EM,
E1000_DEV_ID_82541GI_LF, E1000_DEV_ID_82541GI_LF,
E1000_DEV_ID_ICH10_D_BM_LM,
E1000_DEV_ID_ICH10_R_BM_LF, E1000_DEV_ID_ICH10_R_BM_LF,
E1000_DEV_ID_82574L, E1000_DEV_ID_82574L,
0, 0,
@ -282,11 +283,12 @@ PRIVATE int e1000_probe(e1000_t *e, int skip)
*/ */
switch (did) switch (did)
{ {
case E1000_DEV_ID_ICH10_D_BM_LM:
case E1000_DEV_ID_ICH10_R_BM_LF: case E1000_DEV_ID_ICH10_R_BM_LF:
e->eeprom_read = eeprom_ich; e->eeprom_read = eeprom_ich;
break; break;
case E1000_DEV_ID_82574L: case E1000_DEV_ID_82574L:
case E1000_DEV_ID_82541GI_LF: case E1000_DEV_ID_82541GI_LF:
e->eeprom_done_bit = (1 << 1); e->eeprom_done_bit = (1 << 1);
e->eeprom_addr_off = 2; e->eeprom_addr_off = 2;
@ -326,14 +328,24 @@ PRIVATE int e1000_probe(e1000_t *e, int skip)
did != E1000_DEV_ID_82540EP && did != E1000_DEV_ID_82540EP &&
pci_attr_r32(devind, PCI_BAR_2)) pci_attr_r32(devind, PCI_BAR_2))
{ {
if((e->flash = vm_map_phys(SELF, size_t flash_size;
(void *) pci_attr_r32(devind, PCI_BAR_2), 0x10000)) == MAP_FAILED) {
if((e->flash = vm_map_phys(SELF, /* 82566/82567/82562V series support mapping 4kB of flash memory */
(void *) pci_attr_r32(devind, PCI_BAR_2), 0x1000)) switch(did)
== MAP_FAILED) { {
panic("e1000: couldn't map in flash."); 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); gfpreg = E1000_READ_FLASH_REG(e, ICH_FLASH_GFPREG);
/* /*

View File

@ -600,6 +600,7 @@ service e1000
pci device 8086/107c; pci device 8086/107c;
pci device 8086/10cd; pci device 8086/10cd;
pci device 8086/10d3; pci device 8086/10d3;
pci device 8086/10de;
ipc ipc
SYSTEM pm rs log tty ds vm SYSTEM pm rs log tty ds vm
pci inet ; pci inet ;