From 23fd3e4bab3478f2b620732c0a4e07b3567b9f1c Mon Sep 17 00:00:00 2001 From: Liu Gang Date: Wed, 29 Oct 2014 19:56:26 +0800 Subject: UIO/RapidIO: Add workaround for erratum A-008116 Erratum A-008116 can cause a SRIO phyiscal or logical/transport error interrupt (PINTn) that orginates on port 2 is incorrectly reported as originating on port 1. Valid workaround needed if using Serial RapidIO port 2. Upon detection of a Serial RapidIO interrupt, each port's LTLEDCSR and PnEDCSR registers must be read to determine the port origin. Signed-off-by: Liu Gang Change-Id: I309106e79853cf08b9b546924a41ec74ad4b8b53 Reviewed-on: http://git.am.freescale.net:8181/22437 Tested-by: Review Code-CDREVIEW Reviewed-by: Minghuan Lian Reviewed-by: Mingkai Hu Reviewed-by: Richard Schmitt diff --git a/drivers/uio/fsl_srio_uio.c b/drivers/uio/fsl_srio_uio.c index 840872b..c46aab5 100644 --- a/drivers/uio/fsl_srio_uio.c +++ b/drivers/uio/fsl_srio_uio.c @@ -111,7 +111,6 @@ static irqreturn_t srio_uio_irq_handler(int irq, struct uio_info *dev_info) out_be32(sriodev->regs.regs_win + LTLEECSR, 0); for (i = 0; i < sriodev->port_num; i++) { - if (port_bits & (1 << (31 - i))) { /* Clear retry error threshold exceeded */ out_be32(sriodev->regs.regs_win + IECSR + 0x80 * i, SRIO_IECSR_CLEAR); @@ -121,7 +120,6 @@ static irqreturn_t srio_uio_irq_handler(int irq, struct uio_info *dev_info) /* Clear EDCSR */ out_be32(sriodev->regs.regs_win + EDCSR + 0x40 * i, 0); - } } return IRQ_HANDLED; -- cgit v0.10.2