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); |