ARM: highbank: Only touch common coherency control register fields
authorRob Herring <rob.herring@calxeda.com>
Sun, 21 Jul 2013 19:53:37 +0000 (14:53 -0500)
committerOlof Johansson <olof@lixom.net>
Tue, 23 Jul 2013 03:03:59 +0000 (20:03 -0700)
Midway adds new register fields to the coherency control registers, so
writing absolute values will break on Midway. Change the register
accesses to only modify the necessary and common fields in order to
support both Midway and Highbank.

Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-highbank/highbank.c

index dc5d6becd8c7c13f54406eaebead83bf11ffd9d2..88815795fe2678f7c41e54fd296397ace8de9a62 100644 (file)
@@ -115,6 +115,7 @@ static int highbank_platform_notifier(struct notifier_block *nb,
 {
        struct resource *res;
        int reg = -1;
+       u32 val;
        struct device *dev = __dev;
 
        if (event != BUS_NOTIFY_ADD_DEVICE)
@@ -141,10 +142,10 @@ static int highbank_platform_notifier(struct notifier_block *nb,
                return NOTIFY_DONE;
 
        if (of_property_read_bool(dev->of_node, "dma-coherent")) {
-               writel(0xff31, sregs_base + reg);
+               val = readl(sregs_base + reg);
+               writel(val | 0xff01, sregs_base + reg);
                set_dma_ops(dev, &arm_coherent_dma_ops);
-       } else
-               writel(0, sregs_base + reg);
+       }
 
        return NOTIFY_OK;
 }