From mboxrd@z Thu Jan 1 00:00:00 1970 From: shawn.guo@linaro.org (Shawn Guo) Date: Tue, 19 Mar 2013 13:51:19 +0800 Subject: [PATCH] ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0 In-Reply-To: <1363631042-5321-1-git-send-email-marex@denx.de> References: <1363631042-5321-1-git-send-email-marex@denx.de> Message-ID: <20130319055118.GJ12462@S2101-09.ap.freescale.net> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org 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 > Cc: Fabio Estevam > Cc: Linux ARM > Cc: Linux FBDEV > Cc: Lothar Wa?mann > Cc: Sascha Hauer > Cc: Shawn Guo > Tested-by: Fabio Estevam 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 > }