Experimenting with e1000 driver
This commit is contained in:
parent
751c4e46c2
commit
53e9c38017
23
i825xx.c
23
i825xx.c
@ -315,20 +315,29 @@ unsigned char i825xx_detect_eeprom(struct i825xx_device_t *net_dev) {
|
|||||||
return eeprom_exists;
|
return eeprom_exists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
unsigned short e1000_dev_ids[] = {
|
||||||
|
0x100e,
|
||||||
|
0x153a,
|
||||||
|
0x10ea
|
||||||
|
};
|
||||||
|
|
||||||
struct ether_t *init_i825xx(int count) {
|
struct ether_t *init_i825xx(int count) {
|
||||||
struct pci_device *pci_dev;
|
struct pci_device *pci_dev;
|
||||||
struct i825xx_device_t *i825xx_dev;
|
struct i825xx_device_t *i825xx_dev;
|
||||||
struct ether_t *ether_dev;
|
struct ether_t *ether_dev;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
unsigned short j;
|
unsigned short j;
|
||||||
if (!pci_find_device_by_vendor(0x8086, 0x100E, &pci_dev, count)) {
|
unsigned char found = 0;
|
||||||
if (!pci_find_device_by_vendor(0x8086, 0x153A, &pci_dev, count)) {
|
|
||||||
if (!pci_find_device_by_vendor(0x8086, 0x10EA, &pci_dev, count)) {
|
for (int d = 0; d < 3; d++) {
|
||||||
return (void *)0;
|
if (pci_find_device_by_vendor(0x8086, e1000_dev_ids[d], &pci_dev, count)) {
|
||||||
}
|
found = 1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!found) return (void *)0;
|
||||||
|
|
||||||
i825xx_dev = (struct i825xx_device_t *)malloc(sizeof(struct i825xx_device_t));
|
i825xx_dev = (struct i825xx_device_t *)malloc(sizeof(struct i825xx_device_t));
|
||||||
ether_dev = (struct ether_t *)malloc(sizeof(struct ether_t));
|
ether_dev = (struct ether_t *)malloc(sizeof(struct ether_t));
|
||||||
@ -358,7 +367,11 @@ struct ether_t *init_i825xx(int count) {
|
|||||||
mmio_write(i825xx_dev, REG_CTRL, CTRL_RESET);
|
mmio_write(i825xx_dev, REG_CTRL, CTRL_RESET);
|
||||||
mmio_write(i825xx_dev, REG_IMC, 0xffffffff);
|
mmio_write(i825xx_dev, REG_IMC, 0xffffffff);
|
||||||
|
|
||||||
|
if (pci_dev->device != 0x1502) {
|
||||||
i825xx_dev->have_eeprom = i825xx_detect_eeprom(i825xx_dev);
|
i825xx_dev->have_eeprom = i825xx_detect_eeprom(i825xx_dev);
|
||||||
|
} else {
|
||||||
|
i825xx_dev->have_eeprom = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (i825xx_dev->have_eeprom) {
|
if (i825xx_dev->have_eeprom) {
|
||||||
unsigned short temp;
|
unsigned short temp;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user