diff --git a/arch/arm/mach-mx5/mx51_efikamx_display.c b/arch/arm/mach-mx5/mx51_efikamx_display.c index c8355fd892c..c89bf7bd066 100644 --- a/arch/arm/mach-mx5/mx51_efikamx_display.c +++ b/arch/arm/mach-mx5/mx51_efikamx_display.c @@ -48,7 +48,7 @@ int cs8556_reinit(struct fb_var_screeninfo *var); #define MEGA 1000000 -#define EFIKAMX_DEFAULT_BPP 32 /* please keep synced with mxc_ipu3_fb.c */ +#define EFIKAMX_DEFAULT_BPP 16 /* please keep synced with mxc_ipu3_fb.c */ int __initdata video_output = { VIDEO_OUT_STATIC_HDMI }; int __initdata video_mode = { VIDEO_OUT_STATIC_HDMI }; diff --git a/drivers/video/mxc/mxc_ipuv3_fb.c b/drivers/video/mxc/mxc_ipuv3_fb.c index 28c7fb98179..f15a55c832f 100644 --- a/drivers/video/mxc/mxc_ipuv3_fb.c +++ b/drivers/video/mxc/mxc_ipuv3_fb.c @@ -70,7 +70,7 @@ extern void mxcfb_adjust(struct fb_var_screeninfo *var ); * Driver name */ #define MXCFB_NAME "mxc_sdc_fb" -#define MXCFB_DEFAULT_BPP 32 /* fsl default is 16 */ +#define MXCFB_DEFAULT_BPP 16 /* fsl default is 16 */ /*! * Structure containing the MXC specific framebuffer information. @@ -172,9 +172,14 @@ static int mxcfb_set_fix(struct fb_info *info) if( clock_auto && extsync ) { if ( var->pixclock < pixclk_limit ) { printk(KERN_INFO "exceed pixel clock limit %d, auto adjust to 720p\n", pixclk_limit ); - fb_find_mode( var, info, "1280x720-32@60", NULL, 0, NULL, 0 ); + if (MXCFB_DEFAULT_BPP == 32) + fb_find_mode( var, info, "1280x720-32@60", NULL, 0, NULL, 0 ); + else + fb_find_mode( var, info, "1280x720-16@60", NULL, 0, NULL, 0 ); + /* BUG: this should be the same bit depth as the current mode, or if it resyncs a 1280x720p mode it won't reclock */ + /* BUG: sprintf would be better than this */ } var->sync |= FB_SYNC_EXT; /* x window need it otherwise refresh rate will become bigger than user specified */ } @@ -671,7 +676,7 @@ static int mxcfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) var->red.msb_right = 0; var->green.length = 8; - var->green.offset = 8; + var->green.offset = 24; var->green.msb_right = 0; var->blue.length = 8; @@ -679,7 +684,7 @@ static int mxcfb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) var->blue.msb_right = 0; var->transp.length = 8; - var->transp.offset = 24; + var->transp.offset = 8; var->transp.msb_right = 0; break; } @@ -1715,7 +1720,7 @@ static int mxcfb_probe(struct platform_device *pdev) /* Default Y virtual size is 2x panel size */ #if defined(CONFIG_MACH_MX51_EFIKAMX) - if (0 || machine_is_mx51_efikamx()) /* disabled pending retest */ + if (machine_is_mx51_efikamx()) fbi->var.yres_virtual = fbi->var.yres * 2; else #else