summaryrefslogtreecommitdiff
path: root/drivers/edac
diff options
context:
space:
mode:
authorChunhe Lan <Chunhe.Lan@freescale.com>2013-08-22 06:41:22 (GMT)
committerRivera Jose-B46482 <German.Rivera@freescale.com>2013-08-28 14:06:13 (GMT)
commit4488d6690ec0fcddb9c01b6adfbae33169d52d58 (patch)
tree2afb803888720354978b27ceb98a20b334aade8e /drivers/edac
parent816fc95c83fc2dfbf9216eede8b7144c06baf276 (diff)
downloadlinux-fsl-qoriq-4488d6690ec0fcddb9c01b6adfbae33169d52d58.tar.xz
edac/85xx: Disable invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA access enable bit
When kernel PCIe bus code to initialize and configure these PCIe devices on booting will use some invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA, edac driver prints the much notice information as the following: PCIE error(s) detected PCIE ERR_DR register: 0x00020000 PCIE ERR_CAP_STAT register: 0x80000001 PCIE ERR_CAP_R0 register: 0x00000800 PCIE ERR_CAP_R1 register: 0x00000000 PCIE ERR_CAP_R2 register: 0x00000000 PCIE ERR_CAP_R3 register: 0x00000000 So disable the invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA access interrupt generation enable bit and invalid PEX_CONFIG_ADDR/PEX_CONFIG_DATA access detection enable bit to fix ugly print. Signed-off-by: Chunhe Lan <Chunhe.Lan@freescale.com> Change-Id: I966f0a277d1c211960ab30f8c5a9edf8b623448b Reviewed-on: http://git.am.freescale.net:8181/4141 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Zang Tiefei-R61911 <tie-fei.zang@freescale.com> Reviewed-by: Rivera Jose-B46482 <German.Rivera@freescale.com>
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