20 dev_warn(&d->
dev,
"Searching for i450NX host bridges\n");
22 for(pxb = 0; pxb < 2; pxb++) {
23 pci_read_config_byte(d, reg++, &busno);
24 pci_read_config_byte(d, reg++, &suba);
25 pci_read_config_byte(d, reg++, &subb);
26 dev_dbg(&d->
dev,
"i450NX PXB %d: %02x/%02x/%02x\n", pxb, busno,
44 pci_read_config_byte(d, 0x4a, &busno);
45 dev_info(&d->
dev,
"i440KX/GX host bridge; secondary bus %02x\n", busno);
60 for(i = 0; i < 4; i++)
72 dev_warn(&d->
dev,
"Fixing NCR 53C810 class code\n");
84 dev_dbg(&d->
dev,
"Setting max latency to 32\n");
116 #define VIA_8363_KL133_REVISION_ID 0x81
117 #define VIA_8363_KM133_REVISION_ID 0x84
119 static void pci_fixup_via_northbridge_bug(
struct pci_dev *d)
140 pci_read_config_byte(d, where, &v);
142 dev_warn(&d->
dev,
"Disabling VIA memory write queue (PCI ID %04x, rev %02x): [%02x] %02x & %02x -> %02x\n", \
145 pci_write_config_byte(d, where, v);
168 if ((dev->
device & 0xff00) == 0x2400)
186 static void pci_fixup_nforce2(
struct pci_dev *dev)
198 pci_read_config_dword(dev, 0x6c, &val);
203 if ((val & 0x00FF0000) != 0x00010000) {
204 dev_warn(&dev->
dev,
"nForce2 C1 Halt Disconnect fixup\n");
205 pci_write_config_dword(dev, 0x6c, (val & 0xFF00FFFF) | 0x00010000);
212 #define MAX_PCIEROOT 6
215 #define GET_INDEX(a, b) ((((a) - PCI_DEVICE_ID_INTEL_MCH_PA) << 3) + ((b) & 7))
220 devfn, where, size, value);
231 offset = quirk_aspm_offset[
GET_INDEX(bus->
self->device, devfn)];
233 if ((offset) && (where == offset))
234 value = value & 0xfffffffc;
237 devfn, where, size, value);
240 static struct pci_ops quirk_pcie_aspm_ops = {
241 .read = quirk_pcie_aspm_read,
242 .write = quirk_pcie_aspm_write,
253 static void pcie_rootport_aspm_quirk(
struct pci_dev *pdev)
271 if (list_empty(&pbus->
devices)) {
279 quirk_aspm_offset[
i] = 0;
294 pbus->
ops = &quirk_pcie_aspm_ops;
362 .ident =
"MSI-K8T-Neo2Fir",
387 pci_read_config_byte(dev, 0x50, &val);
389 pci_write_config_byte(dev, 0x50, val & (~0x40));
392 pci_read_config_byte(dev, 0x50, &val);
395 "can't enable onboard soundcard!\n");
398 "enabled onboard soundcard\n");
402 pci_fixup_msi_k8t_onboard_sound);
404 pci_fixup_msi_k8t_onboard_sound);
415 static u16 toshiba_line_size;
419 .ident =
"Toshiba PS5 based laptop",
426 .ident =
"Toshiba PSM4 based laptop",
433 .ident =
"Toshiba A40 based laptop",
451 pci_pre_fixup_toshiba_ohci1394);
467 pci_post_fixup_toshiba_ohci1394);
474 static void pci_early_fixup_cyrix_5530(
struct pci_dev *dev)
478 pci_read_config_byte(dev, 0x42, &r);
480 pci_write_config_byte(dev, 0x42, r);
483 pci_early_fixup_cyrix_5530);
485 pci_early_fixup_cyrix_5530);
496 pci_siemens_interrupt_controller);
502 static void sb600_disable_hpet_bar(
struct pci_dev *dev)
513 pci_read_config_byte(dev, 0x08, &val);
521 outb(val | 0x80, 0xCD7);
537 pr_info(
"Reserving memory on Twinhead H12Y\n");