aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/quirks.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/quirks.c')
-rw-r--r--drivers/pci/quirks.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index fb544d6d29f6..2b4b1ea158cf 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -2961,17 +2961,19 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
2961static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f, 2961static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f,
2962 struct pci_fixup *end) 2962 struct pci_fixup *end)
2963{ 2963{
2964 while (f < end) { 2964 for (; f < end; f++)
2965 if ((f->vendor == dev->vendor || f->vendor == (u16) PCI_ANY_ID) && 2965 if ((f->class == (u32) (dev->class >> f->class_shift) ||
2966 (f->device == dev->device || f->device == (u16) PCI_ANY_ID)) { 2966 f->class == (u32) PCI_ANY_ID) &&
2967 (f->vendor == dev->vendor ||
2968 f->vendor == (u16) PCI_ANY_ID) &&
2969 (f->device == dev->device ||
2970 f->device == (u16) PCI_ANY_ID)) {
2967 dev_dbg(&dev->dev, "calling %pF\n", f->hook); 2971 dev_dbg(&dev->dev, "calling %pF\n", f->hook);
2968 if (initcall_debug) 2972 if (initcall_debug)
2969 do_one_fixup_debug(f->hook, dev); 2973 do_one_fixup_debug(f->hook, dev);
2970 else 2974 else
2971 f->hook(dev); 2975 f->hook(dev);
2972 } 2976 }
2973 f++;
2974 }
2975} 2977}
2976 2978
2977extern struct pci_fixup __start_pci_fixups_early[]; 2979extern struct pci_fixup __start_pci_fixups_early[];