From 53fed9e6bf48509775dbedc4e52ba2739730aab3 Mon Sep 17 00:00:00 2001
From: juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Tue, 2 Dec 2008 08:46:37 +0000
Subject: [ar71xx] ag71xx driver: add some debug stuff

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13462 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 .../ar71xx/files/drivers/net/ag71xx/ag71xx_main.c  | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

(limited to 'target/linux')

diff --git a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
index 81ebe8db0..882b108e8 100644
--- a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
+++ b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
@@ -69,6 +69,18 @@ static void ag71xx_dump_regs(struct ag71xx *ag)
 		ag71xx_rr(ag, AG71XX_REG_FIFO_CFG5));
 }
 
+static inline void ag71xx_dump_intr(struct ag71xx *ag, char *label, u32 intr)
+{
+	DBG("%s: %s intr=%08x %s%s%s%s%s%s\n",
+		ag->dev->name, label, intr,
+		(intr & AG71XX_INT_TX_PS) ? "TXPS " : "",
+		(intr & AG71XX_INT_TX_UR) ? "TXUR " : "",
+		(intr & AG71XX_INT_TX_BE) ? "TXBE " : "",
+		(intr & AG71XX_INT_RX_PR) ? "RXPR " : "",
+		(intr & AG71XX_INT_RX_OF) ? "RXOF " : "",
+		(intr & AG71XX_INT_RX_BE) ? "RXBE " : "");
+}
+
 static void ag71xx_ring_free(struct ag71xx_ring *ring)
 {
 	kfree(ring->buf);
@@ -315,6 +327,14 @@ static void ag71xx_dma_reset(struct ag71xx *ag)
 	ag71xx_wr(ag, AG71XX_REG_RX_STATUS, RX_STATUS_BE | RX_STATUS_OF);
 	ag71xx_wr(ag, AG71XX_REG_TX_STATUS, TX_STATUS_BE | TX_STATUS_UR);
 
+	if (ag71xx_rr(ag, AG71XX_REG_RX_STATUS))
+		printk(KERN_ALERT "%s: unable to clear DMA Rx status\n",
+			ag->dev->name);
+
+	if (ag71xx_rr(ag, AG71XX_REG_TX_STATUS))
+		printk(KERN_ALERT "%s: unable to clear DMA Tx status\n",
+			ag->dev->name);
+
 	ag71xx_dump_dma_regs(ag);
 }
 
@@ -693,7 +713,9 @@ static irqreturn_t ag71xx_interrupt(int irq, void *dev_id)
 	u32 status;
 
 	status = ag71xx_rr(ag, AG71XX_REG_INT_STATUS);
+	ag71xx_dump_intr(ag, "raw", status);
 	status &= ag71xx_rr(ag, AG71XX_REG_INT_ENABLE);
+	ag71xx_dump_intr(ag, "masked", status);
 
 	if (unlikely(!status))
 		return IRQ_NONE;
-- 
cgit v1.2.3