diff options
Diffstat (limited to 'arch/x86/kernel/early-quirks.c')
-rw-r--r-- | arch/x86/kernel/early-quirks.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/x86/kernel/early-quirks.c b/arch/x86/kernel/early-quirks.c index ebdb85cf2686..3755ef494390 100644 --- a/arch/x86/kernel/early-quirks.c +++ b/arch/x86/kernel/early-quirks.c | |||
@@ -97,7 +97,6 @@ static void __init nvidia_bugs(int num, int slot, int func) | |||
97 | } | 97 | } |
98 | 98 | ||
99 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) | 99 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) |
100 | #if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) | ||
101 | static u32 __init ati_ixp4x0_rev(int num, int slot, int func) | 100 | static u32 __init ati_ixp4x0_rev(int num, int slot, int func) |
102 | { | 101 | { |
103 | u32 d; | 102 | u32 d; |
@@ -115,7 +114,6 @@ static u32 __init ati_ixp4x0_rev(int num, int slot, int func) | |||
115 | d &= 0xff; | 114 | d &= 0xff; |
116 | return d; | 115 | return d; |
117 | } | 116 | } |
118 | #endif | ||
119 | 117 | ||
120 | static void __init ati_bugs(int num, int slot, int func) | 118 | static void __init ati_bugs(int num, int slot, int func) |
121 | { | 119 | { |
@@ -145,15 +143,10 @@ static void __init ati_bugs(int num, int slot, int func) | |||
145 | 143 | ||
146 | static u32 __init ati_sbx00_rev(int num, int slot, int func) | 144 | static u32 __init ati_sbx00_rev(int num, int slot, int func) |
147 | { | 145 | { |
148 | u32 old, d; | 146 | u32 d; |
149 | 147 | ||
150 | d = read_pci_config(num, slot, func, 0x70); | ||
151 | old = d; | ||
152 | d &= ~(1<<8); | ||
153 | write_pci_config(num, slot, func, 0x70, d); | ||
154 | d = read_pci_config(num, slot, func, 0x8); | 148 | d = read_pci_config(num, slot, func, 0x8); |
155 | d &= 0xff; | 149 | d &= 0xff; |
156 | write_pci_config(num, slot, func, 0x70, old); | ||
157 | 150 | ||
158 | return d; | 151 | return d; |
159 | } | 152 | } |
@@ -162,11 +155,19 @@ static void __init ati_bugs_contd(int num, int slot, int func) | |||
162 | { | 155 | { |
163 | u32 d, rev; | 156 | u32 d, rev; |
164 | 157 | ||
165 | if (acpi_use_timer_override) | 158 | rev = ati_sbx00_rev(num, slot, func); |
159 | if (rev >= 0x40) | ||
160 | acpi_fix_pin2_polarity = 1; | ||
161 | |||
162 | /* | ||
163 | * SB600: revisions 0x11, 0x12, 0x13, 0x14, ... | ||
164 | * SB700: revisions 0x39, 0x3a, ... | ||
165 | * SB800: revisions 0x40, 0x41, ... | ||
166 | */ | ||
167 | if (rev >= 0x39) | ||
166 | return; | 168 | return; |
167 | 169 | ||
168 | rev = ati_sbx00_rev(num, slot, func); | 170 | if (acpi_use_timer_override) |
169 | if (rev > 0x13) | ||
170 | return; | 171 | return; |
171 | 172 | ||
172 | /* check for IRQ0 interrupt swap */ | 173 | /* check for IRQ0 interrupt swap */ |