Lines 95-101
static void __init nvidia_bugs(int num,
Link Here
|
95 |
|
95 |
|
96 |
} |
96 |
} |
97 |
|
97 |
|
98 |
static u32 ati_ixp4x0_rev(int num, int slot, int func) |
98 |
#if defined(CONFIG_ACPI) && defined(CONFIG_X86_IO_APIC) |
|
|
99 |
static u32 __init ati_ixp4x0_rev(int num, int slot, int func) |
99 |
{ |
100 |
{ |
100 |
u32 d; |
101 |
u32 d; |
101 |
u8 b; |
102 |
u8 b; |
Lines 115-121
static u32 ati_ixp4x0_rev(int num, int s
Link Here
|
115 |
|
116 |
|
116 |
static void __init ati_bugs(int num, int slot, int func) |
117 |
static void __init ati_bugs(int num, int slot, int func) |
117 |
{ |
118 |
{ |
118 |
#if defined(CONFIG_ACPI) && defined (CONFIG_X86_IO_APIC) |
|
|
119 |
u32 d; |
119 |
u32 d; |
120 |
u8 b; |
120 |
u8 b; |
121 |
|
121 |
|
Lines 138-146
static void __init ati_bugs(int num, int
Link Here
|
138 |
printk(KERN_INFO "If you got timer trouble " |
138 |
printk(KERN_INFO "If you got timer trouble " |
139 |
"try acpi_use_timer_override\n"); |
139 |
"try acpi_use_timer_override\n"); |
140 |
} |
140 |
} |
141 |
#endif |
|
|
142 |
} |
141 |
} |
143 |
|
142 |
|
|
|
143 |
static u32 __init ati_sbx00_rev(int num, int slot, int func) |
144 |
{ |
145 |
u32 old, d; |
146 |
|
147 |
d = read_pci_config(num, slot, func, 0x70); |
148 |
old = d; |
149 |
d &= ~(1<<8); |
150 |
write_pci_config(num, slot, func, 0x70, d); |
151 |
d = read_pci_config(num, slot, func, 0x8); |
152 |
d &= 0xff; |
153 |
write_pci_config(num, slot, func, 0x70, old); |
154 |
|
155 |
return d; |
156 |
} |
157 |
|
158 |
static void __init ati_bugs_contd(int num, int slot, int func) |
159 |
{ |
160 |
u32 d, rev; |
161 |
|
162 |
if (acpi_use_timer_override) |
163 |
return; |
164 |
|
165 |
rev = ati_sbx00_rev(num, slot, func); |
166 |
if (rev > 0x13) |
167 |
return; |
168 |
|
169 |
/* check for IRQ0 interrupt swap */ |
170 |
d = read_pci_config(num, slot, func, 0x64); |
171 |
if (!(d & (1<<14))) |
172 |
acpi_skip_timer_override = 1; |
173 |
|
174 |
if (acpi_skip_timer_override) { |
175 |
printk(KERN_INFO "SB600 revision 0x%x\n", rev); |
176 |
printk(KERN_INFO "Ignoring ACPI timer override.\n"); |
177 |
printk(KERN_INFO "If you got timer trouble " |
178 |
"try acpi_use_timer_override\n"); |
179 |
} |
180 |
} |
181 |
#else |
182 |
static void __init ati_bugs(int num, int slot, int func) |
183 |
{ |
184 |
} |
185 |
|
186 |
static void __init ati_bugs_contd(int num, int slot, int func) |
187 |
{ |
188 |
} |
189 |
#endif |
190 |
|
144 |
#define QFLAG_APPLY_ONCE 0x1 |
191 |
#define QFLAG_APPLY_ONCE 0x1 |
145 |
#define QFLAG_APPLIED 0x2 |
192 |
#define QFLAG_APPLIED 0x2 |
146 |
#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) |
193 |
#define QFLAG_DONE (QFLAG_APPLY_ONCE|QFLAG_APPLIED) |
Lines 162-167
static struct chipset early_qrk[] __init
Link Here
|
162 |
PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config }, |
209 |
PCI_CLASS_BRIDGE_HOST, PCI_ANY_ID, 0, fix_hypertransport_config }, |
163 |
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS, |
210 |
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_IXP400_SMBUS, |
164 |
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, |
211 |
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs }, |
|
|
212 |
{ PCI_VENDOR_ID_ATI, PCI_DEVICE_ID_ATI_SBX00_SMBUS, |
213 |
PCI_CLASS_SERIAL_SMBUS, PCI_ANY_ID, 0, ati_bugs_contd }, |
165 |
{} |
214 |
{} |
166 |
}; |
215 |
}; |
167 |
|
216 |
|