• Marek Vasut's avatar
    ARM: video: mxs: Fix mxsfb misconfiguring VDCTRL0 · 6a15075e
    Marek Vasut authored
    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: default avatarMarek Vasut <marex@denx.de>
    Cc: Fabio Estevam <fabio.estevam@freescale.com>
    Cc: Linux ARM <linux-arm-kernel@lists.infradead.org>
    Cc: Linux FBDEV <linux-fbdev@vger.kernel.org>
    Cc: Lothar Waßmann <LW@karo-electronics.de>
    Cc: Sascha Hauer <kernel@pengutronix.de>
    Tested-by: default avatarFabio Estevam <fabio.estevam@freescale.com>
    Signed-off-by: default avatarShawn Guo <shawn.guo@linaro.org>
    6a15075e
mxsfb.c 24.9 KB