View | Details | Raw Unified | Return to bug 18482 | Differences between
and this patch

Collapse All | Expand All

(-)a/arch/x86/kernel/quirks.c (+21 lines)
Lines 507-512 static void force_disable_hpet_msi(struct pci_dev *unused) Link Here
507
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
507
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS,
508
			 force_disable_hpet_msi);
508
			 force_disable_hpet_msi);
509
509
510
static void disable_pci_hpet(struct pci_dev *dev)
511
{
512
	int i;
513
514
	if (!hpet_address)
515
		return;
516
517
	for (i = 0; i < 6; i++) {
518
		struct resource *res = &dev->resource[i];
519
520
		if (resource_type(res) == IORESOURCE_MEM &&
521
		    res->start == hpet_address) {
522
			dev_info(&dev->dev, "BAR %d: %pR is an HPET we found earlier; ignoring this BAR\n",
523
				 i, res);
524
			res->flags = 0;
525
			res->start = 0;
526
			res->end = 0;
527
		}
528
	}
529
}
530
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, disable_pci_hpet);
510
#endif
531
#endif
511
532
512
#if defined(CONFIG_PCI) && defined(CONFIG_NUMA)
533
#if defined(CONFIG_PCI) && defined(CONFIG_NUMA)
(-)a/arch/x86/pci/fixup.c (-28 lines)
Lines 493-523 static void __devinit pci_siemens_interrupt_controller(struct pci_dev *dev) Link Here
493
}
493
}
494
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SIEMENS, 0x0015,
494
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_SIEMENS, 0x0015,
495
			  pci_siemens_interrupt_controller);
495
			  pci_siemens_interrupt_controller);
496
497
/*
498
 * SB600: Disable BAR1 on device 14.0 to avoid HPET resources from
499
 * confusing the PCI engine:
500
 */
501
static void sb600_disable_hpet_bar(struct pci_dev *dev)
502
{
503
	u8 val;
504
505
	/*
506
	 * The SB600 and SB700 both share the same device
507
	 * ID, but the PM register 0x55 does something different
508
	 * for the SB700, so make sure we are dealing with the
509
	 * SB600 before touching the bit:
510
	 */
511
512
	pci_read_config_byte(dev, 0x08, &val);
513
514
	if (val < 0x2F) {
515
		outb(0x55, 0xCD6);
516
		val = inb(0xCD7);
517
518
		/* Set bit 7 in PM register 0x55 */
519
		outb(0x55, 0xCD6);
520
		outb(val | 0x80, 0xCD7);
521
	}
522
}
523
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);

Return to bug 18482