[PATCH] ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0

Shawn Guo shawn.guo at linaro.org
Tue Mar 19 01:51:19 EDT 2013


On Mon, Mar 18, 2013 at 07:24:02PM +0100, Marek Vasut wrote:
> The issue fixed by this patch manifests only then using X11
> with mxsfb driver. The X11 will display either shifted image
> or otherwise distorted image on the LCD.
> 
> The problem is that the X11 tries to reconfigure the framebuffer
> and along the way calls fb_ops.fb_set_par() with X11's desired
> configuration values. The field of particular interest is
> fb_info->var.sync which contains non-standard values if
> configured by kernel. These are either FB_SYNC_DATA_ENABLE_HIGH_ACT,
> FB_SYNC_DOTCLK_FAILING_ACT or both, depending on the platform
> configuration. Both of these values are defined in the
> include/linux/mxsfb.h file.
> 
> The driver interprets these values and configures the LCD controller
> accordingly. Yet X11 only has access to the standard values for this
> field defined in include/uapi/linux/fb.h and thus, unlike kernel,
> omits these special values. This results in distorted image on the
> LCD.
> 
> This patch moves these non-standard values into new field of the
> mxsfb_platform_data structure so the driver can in turn check this
> field instead of the video mode field for these specific portions.
> 
> Moreover, this patch prefixes these values with MXSFB_SYNC_ prefix
> instead of FB_SYNC_ prefix to prevent confusion of subsequent users.
> 
> Signed-off-by: Marek Vasut <marex at denx.de>
> Cc: Fabio Estevam <fabio.estevam at freescale.com>
> Cc: Linux ARM <linux-arm-kernel at lists.infradead.org>
> Cc: Linux FBDEV <linux-fbdev at vger.kernel.org>
> Cc: Lothar Waßmann <LW at karo-electronics.de>
> Cc: Sascha Hauer <kernel at pengutronix.de>
> Cc: Shawn Guo <shawn.guo at linaro.org>
> Tested-by: Fabio Estevam <fabio.estevam at freescale.com>

Applied with one trivial change below.

...

> @@ -407,6 +404,8 @@ static void __init cfa10049_init(void)
>  	mxsfb_pdata.mode_count = ARRAY_SIZE(cfa10049_video_modes);
>  	mxsfb_pdata.default_bpp = 32;
>  	mxsfb_pdata.ld_intf_width = STMLCDIF_18BIT;
> +	mxsfb_pdata.sync = MXSFB_SYNC_DATA_ENABLE_HIGH_ACT;
> +

I removed this unnecessary new line.

Shawn

>  }




More information about the linux-arm-kernel mailing list