add fix from #1516
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 25 Mar 2007 16:25:15 +0000 (16:25 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Sun, 25 Mar 2007 16:25:15 +0000 (16:25 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6697 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/brcm47xx-2.6/files/drivers/ssb/driver_pci/pcicore.c

index e025834950b4b61361594d09cb675dfb7ec8cb1b..d9aa22b351376c79d59176a567e037dc9eaa34eb 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: