diff options
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/mpc85xx_edac.c | 13 | ||||
-rw-r--r-- | drivers/edac/mpc85xx_edac.h | 2 |
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 |