aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Jones <arthur.jones@qlogic.com>2007-08-02 17:46:29 -0400
committerRoland Dreier <rolandd@cisco.com>2007-10-09 23:02:46 -0400
commit327a338d4fd018d33e7cacde46c0d82622b4bda8 (patch)
tree813d439197f63ff8b9512325afd8462c7853739e
parent76dea3bc2644e99cce1d98d0bbd3124314e5b50a (diff)
IB/ipath: iba6110 rev4 GPIO counters support
On iba6110 rev4, support for three more IB counters were added. The LocalLinkIntegrityError counter, the ExcessiveBufferOverrunErrors counter and support for error counting of flow control packets on an invalid VL. These counters trigger GPIO interrupts and the sw keeps track of the counts. Since we also use GPIO interrupts to signal packet reception, we need to turn off the fast interrupts, or we risk losing a GPIO interrupt. Signed-off-by: Arthur Jones <arthur.jones@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
-rw-r--r--drivers/infiniband/hw/ipath/ipath_iba6110.c8
-rw-r--r--drivers/infiniband/hw/ipath/ipath_intr.c4
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_iba6110.c b/drivers/infiniband/hw/ipath/ipath_iba6110.c
index 650745d83fa..e1c5998887e 100644
--- a/drivers/infiniband/hw/ipath/ipath_iba6110.c
+++ b/drivers/infiniband/hw/ipath/ipath_iba6110.c
@@ -1559,6 +1559,14 @@ static int ipath_ht_early_init(struct ipath_devdata *dd)
1559 ipath_dev_err(dd, "Unsupported InfiniPath serial " 1559 ipath_dev_err(dd, "Unsupported InfiniPath serial "
1560 "number %.16s!\n", dd->ipath_serial); 1560 "number %.16s!\n", dd->ipath_serial);
1561 1561
1562 if (dd->ipath_minrev >= 4) {
1563 /* Rev4+ reports extra errors via internal GPIO pins */
1564 dd->ipath_flags |= IPATH_GPIO_ERRINTRS;
1565 dd->ipath_gpio_mask |= IPATH_GPIO_ERRINTR_MASK;
1566 ipath_write_kreg(dd, dd->ipath_kregs->kr_gpio_mask,
1567 dd->ipath_gpio_mask);
1568 }
1569
1562 return 0; 1570 return 0;
1563} 1571}
1564 1572
diff --git a/drivers/infiniband/hw/ipath/ipath_intr.c b/drivers/infiniband/hw/ipath/ipath_intr.c
index b29fe7e9b11..11b361408ae 100644
--- a/drivers/infiniband/hw/ipath/ipath_intr.c
+++ b/drivers/infiniband/hw/ipath/ipath_intr.c
@@ -1085,8 +1085,8 @@ irqreturn_t ipath_intr(int irq, void *data)
1085 * GPIO_2 indicates (on some HT4xx boards) that a packet 1085 * GPIO_2 indicates (on some HT4xx boards) that a packet
1086 * has arrived for Port 0. Checking for this 1086 * has arrived for Port 0. Checking for this
1087 * is controlled by flag IPATH_GPIO_INTR. 1087 * is controlled by flag IPATH_GPIO_INTR.
1088 * GPIO_3..5 on IBA6120 Rev2 chips indicate errors 1088 * GPIO_3..5 on IBA6120 Rev2 and IBA6110 Rev4 chips indicate
1089 * that we need to count. Checking for this 1089 * errors that we need to count. Checking for this
1090 * is controlled by flag IPATH_GPIO_ERRINTRS. 1090 * is controlled by flag IPATH_GPIO_ERRINTRS.
1091 */ 1091 */
1092 u32 gpiostatus; 1092 u32 gpiostatus;