summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2009-10-29 16:20:55 +0800
committerJason Chen <b02280@freescale.com>2009-10-30 14:27:17 +0800
commit20a3b86cabf84a3fc57ef270ee29b3c23a603bb8 (patch)
treebfc17280979b3f52bd0f10db2c781fba3950cea3 /drivers/video
parent184037d77cbececdfc475d00400e53ce451e4c50 (diff)
ENGR00117872 FB ipuv3: pan display fail after switch DP to TVOUT
irq handler should be re-register to the correct FB's ipu channel. Signed-off-by: Jason Chen <b02280@freescale.com> (cherry picked from commit 37140ac9a62a382a6d206aa0754eedac90a151c0)
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/mxc/mxc_ipuv3_fb.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c
index 279764d9a3a4..604185faf054 100644
--- a/drivers/video/mxc/mxc_ipuv3_fb.c
+++ b/drivers/video/mxc/mxc_ipuv3_fb.c
@@ -446,6 +446,11 @@ static int swap_channels(struct fb_info *fbi)
if (fbi_to == NULL)
return -1;
+ ipu_clear_irq(mxc_fbi_from->ipu_ch_irq);
+ ipu_clear_irq(mxc_fbi_to->ipu_ch_irq);
+ ipu_free_irq(mxc_fbi_from->ipu_ch_irq, fbi);
+ ipu_free_irq(mxc_fbi_to->ipu_ch_irq, fbi_to);
+
if (mxc_fbi_from->blank == FB_BLANK_UNBLANK) {
if (mxc_fbi_to->blank == FB_BLANK_UNBLANK)
swap_mode = BOTH_ON;
@@ -496,6 +501,19 @@ static int swap_channels(struct fb_info *fbi)
break;
}
+ if (ipu_request_irq(mxc_fbi_from->ipu_ch_irq, mxcfb_irq_handler, 0,
+ MXCFB_NAME, fbi) != 0) {
+ dev_err(fbi->device, "Error registering irq %d\n",
+ mxc_fbi_from->ipu_ch_irq);
+ return -EBUSY;
+ }
+ if (ipu_request_irq(mxc_fbi_to->ipu_ch_irq, mxcfb_irq_handler, 0,
+ MXCFB_NAME, fbi_to) != 0) {
+ dev_err(fbi_to->device, "Error registering irq %d\n",
+ mxc_fbi_to->ipu_ch_irq);
+ return -EBUSY;
+ }
+
return 0;
}