[linux-yocto] [PATCH 01/52] LSI AXM55xx RapidIO: Fixed a rare case of missing a RIO interrupt
Daniel Dragomir
daniel.dragomir at windriver.com
Wed Jan 28 09:18:15 PST 2015
From: Palani <palaniappan.ramanathan at lsi.com>
This happens during multiple mailbox messaging.
Removed the redundant serdes register (ncr) read for
link status check, as the driver checks the status
using the sRIO registers.
Signed-off-by: Palani <palaniappan.ramanathan at lsi.com>
---
arch/arm/mach-axxia/rapidio.c | 8 --------
drivers/rapidio/devices/lsi/axxia-rio-irq.c | 4 ++--
2 files changed, 2 insertions(+), 10 deletions(-)
diff --git a/arch/arm/mach-axxia/rapidio.c b/arch/arm/mach-axxia/rapidio.c
index 3721fb6..8e8961f 100644
--- a/arch/arm/mach-axxia/rapidio.c
+++ b/arch/arm/mach-axxia/rapidio.c
@@ -32,7 +32,6 @@
#include <linux/io.h>
#include <linux/signal.h>
-#include <mach/ncr.h>
#include <mach/rio.h>
/**
@@ -68,13 +67,6 @@ int axxia_rapidio_board_init(
iounmap(gpreg_base);
- /* Verify that this device is actually enabled */
- ncr_read(NCP_REGION_ID(0x115, 0), 0x23c, 4, ®);
- if ((reg & (1 << (21+(dev_num*4)))) == 0) {
- dev_dbg(&dev->dev, "%s: SRIO%d link not ready\n",
- dev->dev.of_node->full_name, dev_num);
- return -ENXIO;
- }
return 0;
}
diff --git a/drivers/rapidio/devices/lsi/axxia-rio-irq.c b/drivers/rapidio/devices/lsi/axxia-rio-irq.c
index 495735c..7f3f56c 100644
--- a/drivers/rapidio/devices/lsi/axxia-rio-irq.c
+++ b/drivers/rapidio/devices/lsi/axxia-rio-irq.c
@@ -1051,6 +1051,7 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h)
axxia_local_config_read(priv, RAB_INTR_STAT_ODME, &int_stat);
mask = int_stat;
+ axxia_local_config_write(priv, RAB_INTR_STAT_ODME, mask);
while (int_stat) {
dme_no = __fls(int_stat);
int_stat ^= (1 << dme_no);
@@ -1082,7 +1083,6 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h)
axxia_local_config_write(priv, RAB_OB_DME_STAT(dme_no),
dme_stat);
}
- axxia_local_config_write(priv, RAB_INTR_STAT_ODME, mask);
}
static int alloc_ob_dme_shared(struct rio_priv *priv,
@@ -1367,6 +1367,7 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h/*, u32 state*/)
axxia_local_config_read(priv, RAB_INTR_STAT_IDME, &dme_mask);
mask = dme_mask;
+ axxia_local_config_write(priv, RAB_INTR_STAT_IDME, mask);
/**
* Inbound mbox has 4 engines, 1 per letter.
* For each message engine that contributes to IRQ state,
@@ -1424,7 +1425,6 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h/*, u32 state*/)
}
}
- axxia_local_config_write(priv, RAB_INTR_STAT_IDME, mask);
}
/**
* open_inb_mbox - Initialize AXXIA inbound mailbox
--
1.8.1.4
More information about the linux-yocto
mailing list