add fix from #1516
[openwrt/svn-archive/archive.git] / target / linux / brcm47xx-2.6 / files / drivers / ssb / driver_pci / pcicore.c
index e025834..d9aa22b 100644 (file)
@@ -162,7 +162,6 @@ static int ssb_extpci_read_config(struct ssb_pcicore *pc,
                goto unmap;
        }
        
-       val = readl(mmio);
        val >>= (8 * (off & 3));
 
        switch (len) {
@@ -210,12 +209,10 @@ static int ssb_extpci_write_config(struct ssb_pcicore *pc,
 
        switch (len) {
        case 1:
-               val = readl(mmio);
                val &= ~(0xFF << (8 * (off & 3)));
                val |= *((const u8 *)buf) << (8 * (off & 3));
                break;
        case 2:
-               val = readl(mmio);
                val &= ~(0xFFFF << (8 * (off & 3)));
                val |= *((const u16 *)buf) << (8 * (off & 3));
                break;
@@ -223,7 +220,7 @@ static int ssb_extpci_write_config(struct ssb_pcicore *pc,
                val = *((const u32 *)buf);
                break;
        }
-       writel(*((const u32 *)buf), mmio);
+       writel(val, mmio);
 
        err = 0;
 unmap: