diff options
-rw-r--r-- | drivers/video/omap2/dss/dsi.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/drivers/video/omap2/dss/dsi.c b/drivers/video/omap2/dss/dsi.c index 18fe332d06e1..1358d301ac31 100644 --- a/drivers/video/omap2/dss/dsi.c +++ b/drivers/video/omap2/dss/dsi.c | |||
@@ -165,6 +165,14 @@ struct dsi_reg { u16 idx; }; | |||
165 | #define DSI_CIO_IRQ_ERRCONTENTIONLP1_3 (1 << 25) | 165 | #define DSI_CIO_IRQ_ERRCONTENTIONLP1_3 (1 << 25) |
166 | #define DSI_CIO_IRQ_ULPSACTIVENOT_ALL0 (1 << 30) | 166 | #define DSI_CIO_IRQ_ULPSACTIVENOT_ALL0 (1 << 30) |
167 | #define DSI_CIO_IRQ_ULPSACTIVENOT_ALL1 (1 << 31) | 167 | #define DSI_CIO_IRQ_ULPSACTIVENOT_ALL1 (1 << 31) |
168 | #define DSI_CIO_IRQ_ERROR_MASK \ | ||
169 | (DSI_CIO_IRQ_ERRSYNCESC1 | DSI_CIO_IRQ_ERRSYNCESC2 | \ | ||
170 | DSI_CIO_IRQ_ERRSYNCESC3 | DSI_CIO_IRQ_ERRESC1 | DSI_CIO_IRQ_ERRESC2 | \ | ||
171 | DSI_CIO_IRQ_ERRESC3 | DSI_CIO_IRQ_ERRCONTROL1 | \ | ||
172 | DSI_CIO_IRQ_ERRCONTROL2 | DSI_CIO_IRQ_ERRCONTROL3 | \ | ||
173 | DSI_CIO_IRQ_ERRCONTENTIONLP0_1 | DSI_CIO_IRQ_ERRCONTENTIONLP1_1 | \ | ||
174 | DSI_CIO_IRQ_ERRCONTENTIONLP0_2 | DSI_CIO_IRQ_ERRCONTENTIONLP1_2 | \ | ||
175 | DSI_CIO_IRQ_ERRCONTENTIONLP0_3 | DSI_CIO_IRQ_ERRCONTENTIONLP1_3) | ||
168 | 176 | ||
169 | #define DSI_DT_DCS_SHORT_WRITE_0 0x05 | 177 | #define DSI_DT_DCS_SHORT_WRITE_0 0x05 |
170 | #define DSI_DT_DCS_SHORT_WRITE_1 0x15 | 178 | #define DSI_DT_DCS_SHORT_WRITE_1 0x15 |
@@ -542,8 +550,12 @@ void dsi_irq_handler(void) | |||
542 | /* flush posted write */ | 550 | /* flush posted write */ |
543 | dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS); | 551 | dsi_read_reg(DSI_COMPLEXIO_IRQ_STATUS); |
544 | 552 | ||
545 | DSSERR("DSI CIO error, cio irqstatus %x\n", ciostatus); | 553 | if (ciostatus & DSI_CIO_IRQ_ERROR_MASK) { |
546 | print_irq_status_cio(ciostatus); | 554 | DSSERR("DSI CIO error, cio irqstatus %x\n", ciostatus); |
555 | print_irq_status_cio(ciostatus); | ||
556 | } else if (debug_irq) { | ||
557 | print_irq_status_cio(ciostatus); | ||
558 | } | ||
547 | } | 559 | } |
548 | 560 | ||
549 | dsi_write_reg(DSI_IRQSTATUS, irqstatus & ~DSI_IRQ_CHANNEL_MASK); | 561 | dsi_write_reg(DSI_IRQSTATUS, irqstatus & ~DSI_IRQ_CHANNEL_MASK); |
@@ -590,11 +602,8 @@ static void _dsi_initialize_irq(void) | |||
590 | for (i = 0; i < 4; ++i) | 602 | for (i = 0; i < 4; ++i) |
591 | dsi_write_reg(DSI_VC_IRQENABLE(i), l); | 603 | dsi_write_reg(DSI_VC_IRQENABLE(i), l); |
592 | 604 | ||
593 | /* XXX zonda responds incorrectly, causing control error: | 605 | l = DSI_CIO_IRQ_ERROR_MASK; |
594 | Exit from LP-ESC mode to LP11 uses wrong transition states on the | 606 | dsi_write_reg(DSI_COMPLEXIO_IRQ_ENABLE, l); |
595 | data lines LP0 and LN0. */ | ||
596 | dsi_write_reg(DSI_COMPLEXIO_IRQ_ENABLE, | ||
597 | -1 & (~DSI_CIO_IRQ_ERRCONTROL2)); | ||
598 | } | 607 | } |
599 | 608 | ||
600 | static u32 dsi_get_errors(void) | 609 | static u32 dsi_get_errors(void) |