diff options
author | Jason Chen <b02280@freescale.com> | 2010-02-11 10:45:34 +0800 |
---|---|---|
committer | Alejandro Gonzalez <alex.gonzalez@digi.com> | 2010-05-24 12:24:59 +0200 |
commit | 2d49ee02da0f17a6825465edddaed4e2be2402e6 (patch) | |
tree | 3f69d90225b709a4453d6399c39dbd7dee0b5fe3 /drivers/video/mxc | |
parent | a5bd196d5dafdc85b5244fb6196389104c8d1228 (diff) |
ENGR00120903 ipuv3 fb: make hdtv as primary display
1. Add "hdtv=2' to boot cmdline. HDTV should be primary display device.
2. Color key need be convert to YUV format when output is YUV, to
correct the convertion function, negative coefficents of RGB2YUV CSC
matrix could not use complement number.
Signed-off-by: Jason Chen <b02280@freescale.com>
Signed-off-by: Alejandro Gonzalez <alex.gonzalez@digi.com>
Diffstat (limited to 'drivers/video/mxc')
-rw-r--r-- | drivers/video/mxc/mxc_ipuv3_fb.c | 2 | ||||
-rw-r--r-- | drivers/video/mxc/tve.c | 22 |
2 files changed, 22 insertions, 2 deletions
diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c index 32c775bde1e4..0a63f4922f0b 100644 --- a/drivers/video/mxc/mxc_ipuv3_fb.c +++ b/drivers/video/mxc/mxc_ipuv3_fb.c @@ -510,12 +510,14 @@ static int swap_channels(struct fb_info *fbi) mxc_fbi_from->ipu_ch_irq); return -EBUSY; } + ipu_disable_irq(mxc_fbi_from->ipu_ch_irq); 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; } + ipu_disable_irq(mxc_fbi_to->ipu_ch_irq); return 0; } diff --git a/drivers/video/mxc/tve.c b/drivers/video/mxc/tve.c index 58738daeb11e..37bba3a8f9d8 100644 --- a/drivers/video/mxc/tve.c +++ b/drivers/video/mxc/tve.c @@ -1,5 +1,5 @@ /* - * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved. + * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved. */ /* @@ -649,7 +649,7 @@ static int _tve_get_revision(void) extern int g_di1_tvout; static int tve_probe(struct platform_device *pdev) { - int ret, i; + int ret, i, primary = 0; struct resource *res; struct tve_platform_data *plat_data = pdev->dev.platform_data; u32 conf_reg; @@ -683,6 +683,12 @@ static int tve_probe(struct platform_device *pdev) for (i = 0; i < num_registered_fb; i++) { if (strcmp(registered_fb[i]->fix.id, "DISP3 BG - DI1") == 0) { tve_fbi = registered_fb[i]; + if (i == 0) { + primary = 1; + acquire_console_sem(); + fb_blank(tve_fbi, FB_BLANK_POWERDOWN); + release_console_sem(); + } break; } } @@ -749,6 +755,18 @@ static int tve_probe(struct platform_device *pdev) clk_disable(tve.clk); + /* is primary display? */ + if (primary) { + struct fb_event event; + + event.info = tve_fbi; + tve_fb_event(NULL, FB_EVENT_MODE_CHANGE, &event); + acquire_console_sem(); + fb_blank(tve_fbi, FB_BLANK_UNBLANK); + release_console_sem(); + fb_show_logo(tve_fbi, 0); + } + ret = fb_register_client(&nb); if (ret < 0) goto err2; |