PCI/x86: write_pci_config_byte fix offset
authorYinghai Lu <yhlu.kernel@gmail.com>
Thu, 22 May 2008 21:35:21 +0000 (14:35 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Tue, 10 Jun 2008 17:59:51 +0000 (10:59 -0700)
also add write_pci_config_16

Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
arch/x86/pci/early.c
include/asm-x86/pci-direct.h

index 42df4b6606dfdbc6f21d2cce0cbb6e8ae3e3ea42..8e2821e8dac5aa78c13e31f3eac26b6962fad737 100644 (file)
@@ -49,7 +49,14 @@ void write_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset, u8 val)
 {
        PDprintk("%x writing to %x: %x\n", slot, offset, val);
        outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
-       outb(val, 0xcfc);
+       outb(val, 0xcfc + (offset&3));
+}
+
+void write_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset, u16 val)
+{
+       PDprintk("%x writing to %x: %x\n", slot, offset, val);
+       outl(0x80000000 | (bus<<16) | (slot<<11) | (func<<8) | offset, 0xcf8);
+       outw(val, 0xcfc + (offset&2));
 }
 
 int early_pci_allowed(void)
index 5b21485be573e12eb845a845fdffc463506b9c98..7bd40b4de751f8ca8c7801094f025b7e52b7bf14 100644 (file)
@@ -11,6 +11,7 @@ extern u8 read_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset);
 extern u16 read_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset);
 extern void write_pci_config(u8 bus, u8 slot, u8 func, u8 offset, u32 val);
 extern void write_pci_config_byte(u8 bus, u8 slot, u8 func, u8 offset, u8 val);
+extern void write_pci_config_16(u8 bus, u8 slot, u8 func, u8 offset, u16 val);
 
 extern int early_pci_allowed(void);