summaryrefslogtreecommitdiff
path: root/drivers/edac
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/mpc85xx_edac.c13
-rw-r--r--drivers/edac/mpc85xx_edac.h2
2 files changed, 12 insertions, 3 deletions
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index 64b3410..07d1734 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -373,9 +373,16 @@ int mpc85xx_pci_err_probe(struct platform_device *op)
}
if (pdata->is_pcie) {
- /* enable all pcie error interrupt & error detect */
- out_be32(pdata->pci_vbase + MPC85XX_PCI_ERR_EN, ~0);
- out_be32(pdata->pci_vbase + MPC85XX_PCI_ERR_ADDR, 0);
+ /* enable all pcie error interrupt & error detect
+ * except invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA
+ * access interrupt generation enable bit and
+ * invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA access
+ * detection enable bit.
+ */
+ out_be32(pdata->pci_vbase + MPC85XX_PCI_ERR_EN, ~0
+ & ~PEX_ERR_ICCAIE_EN_BIT);
+ out_be32(pdata->pci_vbase + MPC85XX_PCI_ERR_ADDR, 0
+ | PEX_ERR_ICCAD_DISR_BIT);
}
devres_remove_group(&op->dev, mpc85xx_pci_err_probe);
diff --git a/drivers/edac/mpc85xx_edac.h b/drivers/edac/mpc85xx_edac.h
index 725c2ed..ffc1b23 100644
--- a/drivers/edac/mpc85xx_edac.h
+++ b/drivers/edac/mpc85xx_edac.h
@@ -135,8 +135,10 @@
#define MPC85XX_PCI_ERR_DR 0x0000
#define MPC85XX_PCI_ERR_CAP_DR 0x0004
#define MPC85XX_PCI_ERR_EN 0x0008
+#define PEX_ERR_ICCAIE_EN_BIT 0x00020000
#define MPC85XX_PCI_ERR_ATTRIB 0x000c
#define MPC85XX_PCI_ERR_ADDR 0x0010
+#define PEX_ERR_ICCAD_DISR_BIT 0x00020000
#define MPC85XX_PCI_ERR_EXT_ADDR 0x0014
#define MPC85XX_PCI_ERR_DL 0x0018
#define MPC85XX_PCI_ERR_DH 0x001c