]> err.no Git - linux-2.6/blobdiff - arch/mips/pci/ops-au1000.c
Merge branch 'fixes-davem' of master.kernel.org:/pub/scm/linux/kernel/git/linville...
[linux-2.6] / arch / mips / pci / ops-au1000.c
index be1420126c42329e24c01c011784457c4a796c15..6b29904acf451936093ccbaa8d2af9b759502325 100644 (file)
@@ -28,7 +28,6 @@
  *  with this program; if not, write  to the Free Software Foundation, Inc.,
  *  675 Mass Ave, Cambridge, MA 02139, USA.
  */
-#include <linux/config.h>
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <linux/kernel.h>
@@ -111,9 +110,9 @@ static int config_access(unsigned char access_type, struct pci_bus *bus,
        if (first_cfg) {
                /* reserve a wired entry for pci config accesses */
                first_cfg = 0;
-               pci_cfg_vm = get_vm_area(0x2000, 0);
+               pci_cfg_vm = get_vm_area(0x2000, VM_IOREMAP);
                if (!pci_cfg_vm)
-                       panic (KERN_ERR "PCI unable to get vm area\n");
+                       panic(KERN_ERR "PCI unable to get vm area\n");
                pci_cfg_wired_entry = read_c0_wired();
                add_wired_entry(0, 0, (unsigned long)pci_cfg_vm->addr, PM_4K);
                last_entryLo0  = last_entryLo1 = 0xffffffff;
@@ -173,7 +172,11 @@ static int config_access(unsigned char access_type, struct pci_bus *bus,
                error = -1;
                DBG("Au1x Master Abort\n");
        } else if ((status >> 28) & 0xf) {
-               DBG("PCI ERR detected: status %x\n", status);
+               DBG("PCI ERR detected: device %d, status %x\n", device, ((status >> 28) & 0xf));
+
+               /* clear errors */
+               au_writel(status & 0xf000ffff, Au1500_PCI_STATCMD);
+
                *data = 0xffffffff;
                error = -1;
        }