|
@@ -45,7 +45,6 @@
|
|
|
#include "dss.h"
|
|
|
#include "dss_features.h"
|
|
|
|
|
|
-/*#define VERBOSE_IRQ*/
|
|
|
#define DSI_CATCH_MISSING_TE
|
|
|
|
|
|
struct dsi_reg { u16 idx; };
|
|
@@ -526,42 +525,38 @@ static inline void dsi_perf_show(struct platform_device *dsidev,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+static int verbose_irq;
|
|
|
+
|
|
|
static void print_irq_status(u32 status)
|
|
|
{
|
|
|
if (status == 0)
|
|
|
return;
|
|
|
|
|
|
-#ifndef VERBOSE_IRQ
|
|
|
- if ((status & ~DSI_IRQ_CHANNEL_MASK) == 0)
|
|
|
+ if (!verbose_irq && (status & ~DSI_IRQ_CHANNEL_MASK) == 0)
|
|
|
return;
|
|
|
-#endif
|
|
|
- printk(KERN_DEBUG "DSI IRQ: 0x%x: ", status);
|
|
|
|
|
|
-#define PIS(x) \
|
|
|
- if (status & DSI_IRQ_##x) \
|
|
|
- printk(#x " ");
|
|
|
-#ifdef VERBOSE_IRQ
|
|
|
- PIS(VC0);
|
|
|
- PIS(VC1);
|
|
|
- PIS(VC2);
|
|
|
- PIS(VC3);
|
|
|
-#endif
|
|
|
- PIS(WAKEUP);
|
|
|
- PIS(RESYNC);
|
|
|
- PIS(PLL_LOCK);
|
|
|
- PIS(PLL_UNLOCK);
|
|
|
- PIS(PLL_RECALL);
|
|
|
- PIS(COMPLEXIO_ERR);
|
|
|
- PIS(HS_TX_TIMEOUT);
|
|
|
- PIS(LP_RX_TIMEOUT);
|
|
|
- PIS(TE_TRIGGER);
|
|
|
- PIS(ACK_TRIGGER);
|
|
|
- PIS(SYNC_LOST);
|
|
|
- PIS(LDO_POWER_GOOD);
|
|
|
- PIS(TA_TIMEOUT);
|
|
|
+#define PIS(x) (status & DSI_IRQ_##x) ? (#x " ") : ""
|
|
|
+
|
|
|
+ pr_debug("DSI IRQ: 0x%x: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
|
|
|
+ status,
|
|
|
+ verbose_irq ? PIS(VC0) : "",
|
|
|
+ verbose_irq ? PIS(VC1) : "",
|
|
|
+ verbose_irq ? PIS(VC2) : "",
|
|
|
+ verbose_irq ? PIS(VC3) : "",
|
|
|
+ PIS(WAKEUP),
|
|
|
+ PIS(RESYNC),
|
|
|
+ PIS(PLL_LOCK),
|
|
|
+ PIS(PLL_UNLOCK),
|
|
|
+ PIS(PLL_RECALL),
|
|
|
+ PIS(COMPLEXIO_ERR),
|
|
|
+ PIS(HS_TX_TIMEOUT),
|
|
|
+ PIS(LP_RX_TIMEOUT),
|
|
|
+ PIS(TE_TRIGGER),
|
|
|
+ PIS(ACK_TRIGGER),
|
|
|
+ PIS(SYNC_LOST),
|
|
|
+ PIS(LDO_POWER_GOOD),
|
|
|
+ PIS(TA_TIMEOUT));
|
|
|
#undef PIS
|
|
|
-
|
|
|
- printk("\n");
|
|
|
}
|
|
|
|
|
|
static void print_irq_status_vc(int channel, u32 status)
|
|
@@ -569,28 +564,24 @@ static void print_irq_status_vc(int channel, u32 status)
|
|
|
if (status == 0)
|
|
|
return;
|
|
|
|
|
|
-#ifndef VERBOSE_IRQ
|
|
|
- if ((status & ~DSI_VC_IRQ_PACKET_SENT) == 0)
|
|
|
+ if (!verbose_irq && (status & ~DSI_VC_IRQ_PACKET_SENT) == 0)
|
|
|
return;
|
|
|
-#endif
|
|
|
- printk(KERN_DEBUG "DSI VC(%d) IRQ 0x%x: ", channel, status);
|
|
|
|
|
|
-#define PIS(x) \
|
|
|
- if (status & DSI_VC_IRQ_##x) \
|
|
|
- printk(#x " ");
|
|
|
- PIS(CS);
|
|
|
- PIS(ECC_CORR);
|
|
|
-#ifdef VERBOSE_IRQ
|
|
|
- PIS(PACKET_SENT);
|
|
|
-#endif
|
|
|
- PIS(FIFO_TX_OVF);
|
|
|
- PIS(FIFO_RX_OVF);
|
|
|
- PIS(BTA);
|
|
|
- PIS(ECC_NO_CORR);
|
|
|
- PIS(FIFO_TX_UDF);
|
|
|
- PIS(PP_BUSY_CHANGE);
|
|
|
+#define PIS(x) (status & DSI_VC_IRQ_##x) ? (#x " ") : ""
|
|
|
+
|
|
|
+ pr_debug("DSI VC(%d) IRQ 0x%x: %s%s%s%s%s%s%s%s%s\n",
|
|
|
+ channel,
|
|
|
+ status,
|
|
|
+ PIS(CS),
|
|
|
+ PIS(ECC_CORR),
|
|
|
+ PIS(ECC_NO_CORR),
|
|
|
+ verbose_irq ? PIS(PACKET_SENT) : "",
|
|
|
+ PIS(BTA),
|
|
|
+ PIS(FIFO_TX_OVF),
|
|
|
+ PIS(FIFO_RX_OVF),
|
|
|
+ PIS(FIFO_TX_UDF),
|
|
|
+ PIS(PP_BUSY_CHANGE));
|
|
|
#undef PIS
|
|
|
- printk("\n");
|
|
|
}
|
|
|
|
|
|
static void print_irq_status_cio(u32 status)
|
|
@@ -598,34 +589,31 @@ static void print_irq_status_cio(u32 status)
|
|
|
if (status == 0)
|
|
|
return;
|
|
|
|
|
|
- printk(KERN_DEBUG "DSI CIO IRQ 0x%x: ", status);
|
|
|
-
|
|
|
-#define PIS(x) \
|
|
|
- if (status & DSI_CIO_IRQ_##x) \
|
|
|
- printk(#x " ");
|
|
|
- PIS(ERRSYNCESC1);
|
|
|
- PIS(ERRSYNCESC2);
|
|
|
- PIS(ERRSYNCESC3);
|
|
|
- PIS(ERRESC1);
|
|
|
- PIS(ERRESC2);
|
|
|
- PIS(ERRESC3);
|
|
|
- PIS(ERRCONTROL1);
|
|
|
- PIS(ERRCONTROL2);
|
|
|
- PIS(ERRCONTROL3);
|
|
|
- PIS(STATEULPS1);
|
|
|
- PIS(STATEULPS2);
|
|
|
- PIS(STATEULPS3);
|
|
|
- PIS(ERRCONTENTIONLP0_1);
|
|
|
- PIS(ERRCONTENTIONLP1_1);
|
|
|
- PIS(ERRCONTENTIONLP0_2);
|
|
|
- PIS(ERRCONTENTIONLP1_2);
|
|
|
- PIS(ERRCONTENTIONLP0_3);
|
|
|
- PIS(ERRCONTENTIONLP1_3);
|
|
|
- PIS(ULPSACTIVENOT_ALL0);
|
|
|
- PIS(ULPSACTIVENOT_ALL1);
|
|
|
+#define PIS(x) (status & DSI_CIO_IRQ_##x) ? (#x " ") : ""
|
|
|
+
|
|
|
+ pr_debug("DSI CIO IRQ 0x%x: %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
|
|
|
+ status,
|
|
|
+ PIS(ERRSYNCESC1),
|
|
|
+ PIS(ERRSYNCESC2),
|
|
|
+ PIS(ERRSYNCESC3),
|
|
|
+ PIS(ERRESC1),
|
|
|
+ PIS(ERRESC2),
|
|
|
+ PIS(ERRESC3),
|
|
|
+ PIS(ERRCONTROL1),
|
|
|
+ PIS(ERRCONTROL2),
|
|
|
+ PIS(ERRCONTROL3),
|
|
|
+ PIS(STATEULPS1),
|
|
|
+ PIS(STATEULPS2),
|
|
|
+ PIS(STATEULPS3),
|
|
|
+ PIS(ERRCONTENTIONLP0_1),
|
|
|
+ PIS(ERRCONTENTIONLP1_1),
|
|
|
+ PIS(ERRCONTENTIONLP0_2),
|
|
|
+ PIS(ERRCONTENTIONLP1_2),
|
|
|
+ PIS(ERRCONTENTIONLP0_3),
|
|
|
+ PIS(ERRCONTENTIONLP1_3),
|
|
|
+ PIS(ULPSACTIVENOT_ALL0),
|
|
|
+ PIS(ULPSACTIVENOT_ALL1));
|
|
|
#undef PIS
|
|
|
-
|
|
|
- printk("\n");
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
|
|
@@ -1121,14 +1109,6 @@ static void _dsi_print_reset_status(struct platform_device *dsidev)
|
|
|
* I/O. */
|
|
|
l = dsi_read_reg(dsidev, DSI_DSIPHY_CFG5);
|
|
|
|
|
|
- printk(KERN_DEBUG "DSI resets: ");
|
|
|
-
|
|
|
- l = dsi_read_reg(dsidev, DSI_PLL_STATUS);
|
|
|
- printk("PLL (%d) ", FLD_GET(l, 0, 0));
|
|
|
-
|
|
|
- l = dsi_read_reg(dsidev, DSI_COMPLEXIO_CFG1);
|
|
|
- printk("CIO (%d) ", FLD_GET(l, 29, 29));
|
|
|
-
|
|
|
if (dss_has_feature(FEAT_DSI_REVERSE_TXCLKESC)) {
|
|
|
b0 = 28;
|
|
|
b1 = 27;
|
|
@@ -1139,14 +1119,20 @@ static void _dsi_print_reset_status(struct platform_device *dsidev)
|
|
|
b2 = 26;
|
|
|
}
|
|
|
|
|
|
- l = dsi_read_reg(dsidev, DSI_DSIPHY_CFG5);
|
|
|
- printk("PHY (%x%x%x, %d, %d, %d)\n",
|
|
|
- FLD_GET(l, b0, b0),
|
|
|
- FLD_GET(l, b1, b1),
|
|
|
- FLD_GET(l, b2, b2),
|
|
|
- FLD_GET(l, 29, 29),
|
|
|
- FLD_GET(l, 30, 30),
|
|
|
- FLD_GET(l, 31, 31));
|
|
|
+#define DSI_FLD_GET(fld, start, end)\
|
|
|
+ FLD_GET(dsi_read_reg(dsidev, DSI_##fld), start, end)
|
|
|
+
|
|
|
+ pr_debug("DSI resets: PLL (%d) CIO (%d) PHY (%x%x%x, %d, %d, %d)\n",
|
|
|
+ DSI_FLD_GET(PLL_STATUS, 0, 0),
|
|
|
+ DSI_FLD_GET(COMPLEXIO_CFG1, 29, 29),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, b0, b0),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, b1, b1),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, b2, b2),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, 29, 29),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, 30, 30),
|
|
|
+ DSI_FLD_GET(DSIPHY_CFG5, 31, 31));
|
|
|
+
|
|
|
+#undef DSI_FLD_GET
|
|
|
}
|
|
|
#else
|
|
|
#define _dsi_print_reset_status(x)
|