--- f67a33c7f4156fd40354bf812b73ddc9a071fdc6 +++ ebdb85cf2686fa36702cd4d50b657f22de85b3bd @@ -145,10 +145,15 @@ static void __init ati_bugs(int num, int static u32 __init ati_sbx00_rev(int num, int slot, int func) { - u32 d; + u32 old, d; + d = read_pci_config(num, slot, func, 0x70); + old = d; + d &= ~(1<<8); + write_pci_config(num, slot, func, 0x70, d); d = read_pci_config(num, slot, func, 0x8); d &= 0xff; + write_pci_config(num, slot, func, 0x70, old); return d; } @@ -157,19 +162,11 @@ static void __init ati_bugs_contd(int nu { u32 d, rev; - rev = ati_sbx00_rev(num, slot, func); - if (rev >= 0x40) - acpi_fix_pin2_polarity = 1; - - /* - * SB600: revisions 0x11, 0x12, 0x13, 0x14, ... - * SB700: revisions 0x39, 0x3a, ... - * SB800: revisions 0x40, 0x41, ... - */ - if (rev >= 0x39) + if (acpi_use_timer_override) return; - if (acpi_use_timer_override) + rev = ati_sbx00_rev(num, slot, func); + if (rev > 0x13) return; /* check for IRQ0 interrupt swap */