diff options
Diffstat (limited to 'arch/x86/kernel/quirks.c')
| -rw-r--r-- | arch/x86/kernel/quirks.c | 18 | 
1 files changed, 11 insertions, 7 deletions
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index 26ee48a33dc..04ee1e2e4c0 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c @@ -354,18 +354,22 @@ static void ati_force_hpet_resume(void)  static u32 ati_ixp4x0_rev(struct pci_dev *dev)  { -	u32 d; -	u8  b; +	int err = 0; +	u32 d = 0; +	u8  b = 0; -	pci_read_config_byte(dev, 0xac, &b); +	err = pci_read_config_byte(dev, 0xac, &b);  	b &= ~(1<<5); -	pci_write_config_byte(dev, 0xac, b); -	pci_read_config_dword(dev, 0x70, &d); +	err |= pci_write_config_byte(dev, 0xac, b); +	err |= pci_read_config_dword(dev, 0x70, &d);  	d |= 1<<8; -	pci_write_config_dword(dev, 0x70, d); -	pci_read_config_dword(dev, 0x8, &d); +	err |= pci_write_config_dword(dev, 0x70, d); +	err |= pci_read_config_dword(dev, 0x8, &d);  	d &= 0xff;  	dev_printk(KERN_DEBUG, &dev->dev, "SB4X0 revision 0x%x\n", d); + +	WARN_ON_ONCE(err); +  	return d;  }  |