diff options
Diffstat (limited to 'firmware/target/arm/imx233/lcdif-imx233.c')
-rw-r--r-- | firmware/target/arm/imx233/lcdif-imx233.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/firmware/target/arm/imx233/lcdif-imx233.c b/firmware/target/arm/imx233/lcdif-imx233.c index ea4fcf8a63..01c7ec71e4 100644 --- a/firmware/target/arm/imx233/lcdif-imx233.c +++ b/firmware/target/arm/imx233/lcdif-imx233.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #if IMX233_SUBTARGET >= 3700 | 25 | #if IMX233_SUBTARGET >= 3700 |
26 | static lcdif_irq_cb_t g_cur_frame_cb = NULL; | 26 | static lcdif_irq_cb_t g_cur_frame_cb = NULL; |
27 | static lcdif_irq_cb_t g_vsync_edge_cb = NULL; | 27 | static lcdif_irq_cb_t g_vsync_edge_cb = NULL; |
28 | static lcdif_irq_cb_t g_underflow_cb = NULL; | ||
28 | #endif | 29 | #endif |
29 | 30 | ||
30 | /* for some crazy reason, all "non-dma" interrupts are routed to the ERROR irq */ | 31 | /* for some crazy reason, all "non-dma" interrupts are routed to the ERROR irq */ |
@@ -43,6 +44,12 @@ void INT_LCDIF_ERROR(void) | |||
43 | g_vsync_edge_cb(); | 44 | g_vsync_edge_cb(); |
44 | BF_CLR(LCDIF_CTRL1, VSYNC_EDGE_IRQ); | 45 | BF_CLR(LCDIF_CTRL1, VSYNC_EDGE_IRQ); |
45 | } | 46 | } |
47 | if(BF_RD(LCDIF_CTRL1, UNDERFLOW_IRQ)) | ||
48 | { | ||
49 | if(g_underflow_cb) | ||
50 | g_underflow_cb(); | ||
51 | BF_CLR(LCDIF_CTRL1, UNDERFLOW_IRQ); | ||
52 | } | ||
46 | } | 53 | } |
47 | #endif | 54 | #endif |
48 | 55 | ||
@@ -341,6 +348,20 @@ void imx233_lcdif_set_vsync_edge_cb(lcdif_irq_cb_t cb) | |||
341 | { | 348 | { |
342 | g_vsync_edge_cb = cb; | 349 | g_vsync_edge_cb = cb; |
343 | } | 350 | } |
351 | |||
352 | void imx233_lcdif_enable_underflow_irq(bool en) | ||
353 | { | ||
354 | if(en) | ||
355 | BF_SET(LCDIF_CTRL1, UNDERFLOW_IRQ_EN); | ||
356 | else | ||
357 | BF_CLR(LCDIF_CTRL1, UNDERFLOW_IRQ_EN); | ||
358 | BF_CLR(LCDIF_CTRL1, UNDERFLOW_IRQ); | ||
359 | } | ||
360 | |||
361 | void imx233_lcdif_set_underflow_cb(lcdif_irq_cb_t cb) | ||
362 | { | ||
363 | g_underflow_cb = cb; | ||
364 | } | ||
344 | #endif | 365 | #endif |
345 | 366 | ||
346 | #if IMX233_SUBTARGET >= 3780 | 367 | #if IMX233_SUBTARGET >= 3780 |