]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-ixp23xx/pci.c
x86: make c_idle.work have a static address.
[linux-2.6-omap-h63xx.git] / arch / arm / mach-ixp23xx / pci.c
index 5330ad78c1bb2df844695729ac95e159e58359aa..227f808dc0ecc8a52723d1003ed30d9c014907e9 100644 (file)
@@ -16,7 +16,6 @@
  * option) any later version.
  */
 
-#include <linux/config.h>
 #include <linux/sched.h>
 #include <linux/kernel.h>
 #include <linux/pci.h>
@@ -37,7 +36,7 @@
 
 extern int (*external_fault) (unsigned long, struct pt_regs *);
 
-static int pci_master_aborts = 0;
+static volatile int pci_master_aborts = 0;
 
 #ifdef DEBUG
 #define DBG(x...)      printk(x)
@@ -201,7 +200,7 @@ int clear_master_aborts(void)
        return 0;
 }
 
-void __init ixp23xx_pci_preinit(void)
+static void __init ixp23xx_pci_common_init(void)
 {
 #ifdef __ARMEB__
        *IXP23XX_PCI_CONTROL |= 0x20000;        /* set I/O swapping */
@@ -219,7 +218,18 @@ void __init ixp23xx_pci_preinit(void)
                *IXP23XX_PCI_CPP_ADDR_BITS &= ~(1 << 1);
        } else {
                *IXP23XX_PCI_CPP_ADDR_BITS |= (1 << 1);
+
+               /*
+                * Enable coherency on A2 silicon.
+                */
+               if (arch_is_coherent())
+                       *IXP23XX_CPP2XSI_CURR_XFER_REG3 &= ~IXP23XX_CPP2XSI_COH_OFF;
        }
+}
+
+void __init ixp23xx_pci_preinit(void)
+{
+       ixp23xx_pci_common_init();
 
        hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS,
                        "PCI config cycle to non-existent device");
@@ -273,3 +283,8 @@ int ixp23xx_pci_setup(int nr, struct pci_sys_data *sys)
 
        return 1;
 }
+
+void __init ixp23xx_pci_slave_init(void)
+{
+       ixp23xx_pci_common_init();
+}