diff options
author | Jason Chen <b02280@freescale.com> | 2009-10-29 16:20:55 +0800 |
---|---|---|
committer | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-02-12 17:19:25 +0100 |
commit | eef4a57ca9fd4dc39a864641f8cd59e0c317dfff (patch) | |
tree | bfc17280979b3f52bd0f10db2c781fba3950cea3 /drivers/video | |
parent | 43e8c1cfec5c236547379c29406a8e91565991b7 (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.c | 18 |
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; } |