[U-Boot] [PATCH] mx6sabresd: Fix wrong colors in LVDS display

Liu Ying liu.y.victor at gmail.com
Fri Nov 22 03:29:20 CET 2013


Hi Fabio,


2013/11/9 Fabio Estevam <fabio.estevam at freescale.com>

> Currently HDMI splash screen is selected by default on mx6sabresd boards.
>
> As LVDS is also always enabled, this causes incorrect colors to be
> displayed in
> the LVDS panel due to the different pixel format in HDMI and LVDS.
>
> Fix this by selecting the LVDS panel as the default splash output and also
> by
> ensuring that LVDS is turned off when HDMI output is active.
>
> Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
> ---
>  board/freescale/mx6sabresd/mx6sabresd.c | 30
> ++++++++++++++++++++++--------
>  1 file changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/board/freescale/mx6sabresd/mx6sabresd.c
> b/board/freescale/mx6sabresd/mx6sabresd.c
> index 9dbe605..ba1f289 100644
> --- a/board/freescale/mx6sabresd/mx6sabresd.c
> +++ b/board/freescale/mx6sabresd/mx6sabresd.c
> @@ -249,8 +249,21 @@ static int detect_hdmi(struct display_info_t const
> *dev)
>         return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
>  }
>
> +static void disable_lvds(struct display_info_t const *dev)
> +{
> +       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
> +
> +       int reg = readl(&iomux->gpr[2]);
> +
> +       reg &= ~(IOMUXC_GPR2_LVDS_CH0_MODE_DISABLED  |
> +                 IOMUXC_GPR2_LVDS_CH1_MODE_ENABLED_DI0);
>

Should change the above logic to this to make sure both the LDB two
channels are disabled correctly:
reg &= ~(IOMUXC_GPR2_LVDS_CH0_MODE_MASK | IOMUXC_GPR2_LVDS_CH1_MODE_MASK);

Otherwise, Acked-by: Liu Ying <liu.y.victor at gmail.com<Ying.Liu at freescale.com>
>

Regards,
Liu Ying

+
> +       writel(reg, &iomux->gpr[2]);
> +}
> +
>  static void do_enable_hdmi(struct display_info_t const *dev)
>  {
> +       disable_lvds(dev);
>         imx_enable_hdmi_phy();
>  }
>
> @@ -263,14 +276,15 @@ static void enable_lvds(struct display_info_t const
> *dev)
>                IOMUXC_GPR2_DATA_WIDTH_CH1_24BIT;
>         writel(reg, &iomux->gpr[2]);
>  }
> +
>  static struct display_info_t const displays[] = {{
>         .bus    = -1,
>         .addr   = 0,
> -       .pixfmt = IPU_PIX_FMT_RGB24,
> -       .detect = detect_hdmi,
> -       .enable = do_enable_hdmi,
> +       .pixfmt = IPU_PIX_FMT_LVDS666,
> +       .detect = NULL,
> +       .enable = enable_lvds,
>         .mode   = {
> -               .name           = "HDMI",
> +               .name           = "Hannstar-XGA",
>                 .refresh        = 60,
>                 .xres           = 1024,
>                 .yres           = 768,
> @@ -286,11 +300,11 @@ static struct display_info_t const displays[] = {{
>  } }, {
>         .bus    = -1,
>         .addr   = 0,
> -       .pixfmt = IPU_PIX_FMT_LVDS666,
> -       .detect = NULL,
> -       .enable = enable_lvds,
> +       .pixfmt = IPU_PIX_FMT_RGB24,
> +       .detect = detect_hdmi,
> +       .enable = do_enable_hdmi,
>         .mode   = {
> -               .name           = "Hannstar-XGA",
> +               .name           = "HDMI",
>                 .refresh        = 60,
>                 .xres           = 1024,
>                 .yres           = 768,
> --
> 1.8.1.2
>
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>


More information about the U-Boot mailing list