summaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2010-02-11 10:45:34 +0800
committerAlejandro Gonzalez <alex.gonzalez@digi.com>2010-05-24 12:24:59 +0200
commit2d49ee02da0f17a6825465edddaed4e2be2402e6 (patch)
tree3f69d90225b709a4453d6399c39dbd7dee0b5fe3 /drivers/video
parenta5bd196d5dafdc85b5244fb6196389104c8d1228 (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')
-rw-r--r--drivers/video/mxc/mxc_ipuv3_fb.c2
-rw-r--r--drivers/video/mxc/tve.c22
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;