Lines 1372-1377
Link Here
|
1372 |
} |
1372 |
} |
1373 |
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NETMOS, PCI_ANY_ID, quirk_netmos); |
1373 |
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NETMOS, PCI_ANY_ID, quirk_netmos); |
1374 |
|
1374 |
|
|
|
1375 |
static void __devinit quirk_e100_interrupt(struct pci_dev *dev) |
1376 |
{ |
1377 |
u16 command; |
1378 |
u32 bar; |
1379 |
u8 __iomem *csr; |
1380 |
u8 cmd_hi; |
1381 |
|
1382 |
switch (dev->device) { |
1383 |
/* PCI IDs taken from drivers/net/e100.c */ |
1384 |
case 0x1029: |
1385 |
case 0x1030 ... 0x1034: |
1386 |
case 0x1038 ... 0x103E: |
1387 |
case 0x1050 ... 0x1057: |
1388 |
case 0x1059: |
1389 |
case 0x1064 ... 0x106B: |
1390 |
case 0x1091 ... 0x1095: |
1391 |
case 0x1209: |
1392 |
case 0x1229: |
1393 |
case 0x2449: |
1394 |
case 0x2459: |
1395 |
case 0x245D: |
1396 |
case 0x27DC: |
1397 |
break; |
1398 |
default: |
1399 |
return; |
1400 |
} |
1401 |
|
1402 |
/* |
1403 |
* Some firmware hands off the e100 with interrupts enabled, |
1404 |
* which can cause a flood of interrupts if packets are |
1405 |
* received before the driver attaches to the device. So |
1406 |
* disable all e100 interrupts here. The driver will |
1407 |
* re-enable them when it's ready. |
1408 |
*/ |
1409 |
pci_read_config_word(dev, PCI_COMMAND, &command); |
1410 |
pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar); |
1411 |
|
1412 |
if (!(command & PCI_COMMAND_MEMORY) || !bar) |
1413 |
return; |
1414 |
|
1415 |
csr = ioremap(bar, 8); |
1416 |
if (!csr) { |
1417 |
printk(KERN_WARNING "PCI: Can't map %s e100 registers\n", |
1418 |
pci_name(dev)); |
1419 |
return; |
1420 |
} |
1421 |
|
1422 |
cmd_hi = readb(csr + 3); |
1423 |
if (cmd_hi == 0) { |
1424 |
printk(KERN_WARNING "PCI: Firmware left %s e100 interrupts " |
1425 |
"enabled, disabling\n", pci_name(dev)); |
1426 |
writeb(1, csr + 3); |
1427 |
} |
1428 |
|
1429 |
iounmap(csr); |
1430 |
} |
1431 |
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_e100_interrupt); |
1375 |
|
1432 |
|
1376 |
static void __devinit fixup_rev1_53c810(struct pci_dev* dev) |
1433 |
static void __devinit fixup_rev1_53c810(struct pci_dev* dev) |
1377 |
{ |
1434 |
{ |