Skip to content

Commit d7451fc

Browse files
Jordan CrouseIngo Molnar
authored andcommitted
x86, hpet: SB600 - remove HPET resources from PCI device
Prevent the HPET resources from appearing in PCI device 14.0 which confuses the PCI resource engine. Signed-off-by: Jordan Crouse <jordan.crouse@amd.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
1 parent 83bd699 commit d7451fc

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

arch/x86/pci/fixup.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,3 +511,31 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1201, fam10h_pci_cfg_space_size);
511511
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1202, fam10h_pci_cfg_space_size);
512512
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1203, fam10h_pci_cfg_space_size);
513513
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AMD, 0x1204, fam10h_pci_cfg_space_size);
514+
515+
/*
516+
* SB600: Disable BAR1 on device 14.0 to avoid HPET resources from
517+
* confusing the PCI engine:
518+
*/
519+
static void sb600_disable_hpet_bar(struct pci_dev *dev)
520+
{
521+
u8 val;
522+
523+
/*
524+
* The SB600 and SB700 both share the same device
525+
* ID, but the PM register 0x55 does something different
526+
* for the SB700, so make sure we are dealing with the
527+
* SB600 before touching the bit:
528+
*/
529+
530+
pci_read_config_byte(dev, 0x08, &val);
531+
532+
if (val < 0x2F) {
533+
outb(0x55, 0xCD6);
534+
val = inb(0xCD7);
535+
536+
/* Set bit 7 in PM register 0x55 */
537+
outb(0x55, 0xCD6);
538+
outb(val | 0x80, 0xCD7);
539+
}
540+
}
541+
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ATI, 0x4385, sb600_disable_hpet_bar);

0 commit comments

Comments
 (0)