diff mbox series

[U-Boot,2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO

Message ID 20190801061818.23585-2-peng.fan@nxp.com
State Accepted
Delegated to: Stefano Babic
Headers show
Series [U-Boot,1/2] imx: mx6ul_14x14_evk: Fix SPL boot | expand

Commit Message

Peng Fan Aug. 1, 2019, 6:02 a.m. UTC
To support DM_VIDEO,
 Add display node for lcdif
 Drop board iomuxc settings.
 Enable DM_VIDEO

Signed-off-by: Peng Fan <peng.fan@nxp.com>
---

V1:
 This patch could be applied directly, but it needs
 https://patchwork.ozlabs.org/patch/1133224/ patchset work let
 DM VIDEO work.

 arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi         | 49 ++++++++++++++++++-
 board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 57 ++++++++---------------
 configs/mx6ul_14x14_evk_defconfig                 |  2 +-
 include/configs/mx6ul_14x14_evk.h                 |  2 +-
 4 files changed, 70 insertions(+), 40 deletions(-)

Comments

Fabio Estevam Aug. 1, 2019, 2:06 p.m. UTC | #1
Hi Peng,

On Thu, Aug 1, 2019 at 3:02 AM Peng Fan <peng.fan@nxp.com> wrote:

> +       display0: display@0 {
> +               bits-per-pixel = <16>;
> +               bus-width = <24>;
> +
> +               display-timings {
> +                       native-mode = <&timing0>;
> +
> +                       timing0: timing0 {
> +                               clock-frequency = <9200000>;
> +                               hactive = <480>;
> +                               vactive = <272>;
> +                               hfront-porch = <8>;
> +                               hback-porch = <4>;
> +                               hsync-len = <41>;
> +                               vback-porch = <2>;
> +                               vfront-porch = <4>;
> +                               vsync-len = <10>;
> +                               hsync-active = <0>;
> +                               vsync-active = <0>;
> +                               de-active = <1>;
> +                               pixelclk-active = <0>;

So here we have the LCD timings in the device tree, which differs from
the the devicetree in mainline.

This is based on the old mxsfb fbdev driver, which has been removed in 5.3-rc.

In mainline we pass the innolux,at043tn24 LCD compatible.

Shouldn't U-Boot be able to handle the same dt-bindings as in the kernel?
Peng Fan Aug. 2, 2019, 6:35 a.m. UTC | #2
HI,

> Subject: Re: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> 
> Hi Peng,
> 
> On Thu, Aug 1, 2019 at 3:02 AM Peng Fan <peng.fan@nxp.com> wrote:
> 
> > +       display0: display@0 {
> > +               bits-per-pixel = <16>;
> > +               bus-width = <24>;
> > +
> > +               display-timings {
> > +                       native-mode = <&timing0>;
> > +
> > +                       timing0: timing0 {
> > +                               clock-frequency = <9200000>;
> > +                               hactive = <480>;
> > +                               vactive = <272>;
> > +                               hfront-porch = <8>;
> > +                               hback-porch = <4>;
> > +                               hsync-len = <41>;
> > +                               vback-porch = <2>;
> > +                               vfront-porch = <4>;
> > +                               vsync-len = <10>;
> > +                               hsync-active = <0>;
> > +                               vsync-active = <0>;
> > +                               de-active = <1>;
> > +                               pixelclk-active = <0>;
> 
> So here we have the LCD timings in the device tree, which differs from the the
> devicetree in mainline.
> 
> This is based on the old mxsfb fbdev driver, which has been removed in 5.3-rc.
> 
> In mainline we pass the innolux,at043tn24 LCD compatible.
> 
> Shouldn't U-Boot be able to handle the same dt-bindings as in the kernel?

I added this node in x-u-boot.dtsi, not in common dts. If drop this display-timings,
we need add a similar structure inside code just as kernel did.
And need to restructure mxsfb driver.

For simple, we could leave this in u-boot.dtsi.

Anatolij, what's your suggestion?

Thanks,
Peng.
Jagan Teki Aug. 2, 2019, 6:39 a.m. UTC | #3
On Fri, Aug 2, 2019 at 12:05 PM Peng Fan <peng.fan@nxp.com> wrote:
>
> HI,
>
> > Subject: Re: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> >
> > Hi Peng,
> >
> > On Thu, Aug 1, 2019 at 3:02 AM Peng Fan <peng.fan@nxp.com> wrote:
> >
> > > +       display0: display@0 {
> > > +               bits-per-pixel = <16>;
> > > +               bus-width = <24>;
> > > +
> > > +               display-timings {
> > > +                       native-mode = <&timing0>;
> > > +
> > > +                       timing0: timing0 {
> > > +                               clock-frequency = <9200000>;
> > > +                               hactive = <480>;
> > > +                               vactive = <272>;
> > > +                               hfront-porch = <8>;
> > > +                               hback-porch = <4>;
> > > +                               hsync-len = <41>;
> > > +                               vback-porch = <2>;
> > > +                               vfront-porch = <4>;
> > > +                               vsync-len = <10>;
> > > +                               hsync-active = <0>;
> > > +                               vsync-active = <0>;
> > > +                               de-active = <1>;
> > > +                               pixelclk-active = <0>;
> >
> > So here we have the LCD timings in the device tree, which differs from the the
> > devicetree in mainline.
> >
> > This is based on the old mxsfb fbdev driver, which has been removed in 5.3-rc.
> >
> > In mainline we pass the innolux,at043tn24 LCD compatible.
> >
> > Shouldn't U-Boot be able to handle the same dt-bindings as in the kernel?
>
> I added this node in x-u-boot.dtsi, not in common dts. If drop this display-timings,
> we need add a similar structure inside code just as kernel did.
> And need to restructure mxsfb driver.
>
> For simple, we could leave this in u-boot.dtsi.

How about adding panel timings in panel-simple we have similar in
u-boot and sync equivalent dts changes from Linux?
Peng Fan Aug. 2, 2019, 6:42 a.m. UTC | #4
> Subject: Re: [U-Boot] [PATCH 2/2] imx: mx6ul_14x14_evk: convert to
> DM_VIDEO
> 
> On Fri, Aug 2, 2019 at 12:05 PM Peng Fan <peng.fan@nxp.com> wrote:
> >
> > HI,
> >
> > > Subject: Re: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> > >
> > > Hi Peng,
> > >
> > > On Thu, Aug 1, 2019 at 3:02 AM Peng Fan <peng.fan@nxp.com> wrote:
> > >
> > > > +       display0: display@0 {
> > > > +               bits-per-pixel = <16>;
> > > > +               bus-width = <24>;
> > > > +
> > > > +               display-timings {
> > > > +                       native-mode = <&timing0>;
> > > > +
> > > > +                       timing0: timing0 {
> > > > +                               clock-frequency = <9200000>;
> > > > +                               hactive = <480>;
> > > > +                               vactive = <272>;
> > > > +                               hfront-porch = <8>;
> > > > +                               hback-porch = <4>;
> > > > +                               hsync-len = <41>;
> > > > +                               vback-porch = <2>;
> > > > +                               vfront-porch = <4>;
> > > > +                               vsync-len = <10>;
> > > > +                               hsync-active = <0>;
> > > > +                               vsync-active = <0>;
> > > > +                               de-active = <1>;
> > > > +                               pixelclk-active = <0>;
> > >
> > > So here we have the LCD timings in the device tree, which differs
> > > from the the devicetree in mainline.
> > >
> > > This is based on the old mxsfb fbdev driver, which has been removed in
> 5.3-rc.
> > >
> > > In mainline we pass the innolux,at043tn24 LCD compatible.
> > >
> > > Shouldn't U-Boot be able to handle the same dt-bindings as in the kernel?
> >
> > I added this node in x-u-boot.dtsi, not in common dts. If drop this
> > display-timings, we need add a similar structure inside code just as kernel
> did.
> > And need to restructure mxsfb driver.
> >
> > For simple, we could leave this in u-boot.dtsi.
> 
> How about adding panel timings in panel-simple we have similar in u-boot and
> sync equivalent dts changes from Linux?

The panel timings needs to be passed to display driver, kernel has drm-crtc for this,
but uboot does not have it.

The method is to let display driver to find the panel node/device to get the
timings.

Will this work?

Thanks,
Peng.
Peng Fan Aug. 2, 2019, 7:23 a.m. UTC | #5
> Subject: RE: [U-Boot] [PATCH 2/2] imx: mx6ul_14x14_evk: convert to
> DM_VIDEO
> 
> > Subject: Re: [U-Boot] [PATCH 2/2] imx: mx6ul_14x14_evk: convert to
> > DM_VIDEO
> >
> > On Fri, Aug 2, 2019 at 12:05 PM Peng Fan <peng.fan@nxp.com> wrote:
> > >
> > > HI,
> > >
> > > > Subject: Re: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> > > >
> > > > Hi Peng,
> > > >
> > > > On Thu, Aug 1, 2019 at 3:02 AM Peng Fan <peng.fan@nxp.com> wrote:
> > > >
> > > > > +       display0: display@0 {
> > > > > +               bits-per-pixel = <16>;
> > > > > +               bus-width = <24>;
> > > > > +
> > > > > +               display-timings {
> > > > > +                       native-mode = <&timing0>;
> > > > > +
> > > > > +                       timing0: timing0 {
> > > > > +                               clock-frequency = <9200000>;
> > > > > +                               hactive = <480>;
> > > > > +                               vactive = <272>;
> > > > > +                               hfront-porch = <8>;
> > > > > +                               hback-porch = <4>;
> > > > > +                               hsync-len = <41>;
> > > > > +                               vback-porch = <2>;
> > > > > +                               vfront-porch = <4>;
> > > > > +                               vsync-len = <10>;
> > > > > +                               hsync-active = <0>;
> > > > > +                               vsync-active = <0>;
> > > > > +                               de-active = <1>;
> > > > > +                               pixelclk-active = <0>;
> > > >
> > > > So here we have the LCD timings in the device tree, which differs
> > > > from the the devicetree in mainline.
> > > >
> > > > This is based on the old mxsfb fbdev driver, which has been
> > > > removed in
> > 5.3-rc.
> > > >
> > > > In mainline we pass the innolux,at043tn24 LCD compatible.
> > > >
> > > > Shouldn't U-Boot be able to handle the same dt-bindings as in the
> kernel?
> > >
> > > I added this node in x-u-boot.dtsi, not in common dts. If drop this
> > > display-timings, we need add a similar structure inside code just as
> > > kernel
> > did.
> > > And need to restructure mxsfb driver.
> > >
> > > For simple, we could leave this in u-boot.dtsi.
> >
> > How about adding panel timings in panel-simple we have similar in
> > u-boot and sync equivalent dts changes from Linux?
> 
> The panel timings needs to be passed to display driver, kernel has drm-crtc for
> this, but uboot does not have it.
> 
> The method is to let display driver to find the panel node/device to get the
> timings.
> 
> Will this work?

An issue is where to get bits-per-pixel?

Thanks,
Peng.

> 
> Thanks,
> Peng.
Igor Opaniuk Aug. 2, 2019, 12:05 p.m. UTC | #6
Hi Peng,

On Thu, Aug 1, 2019 at 9:03 AM Peng Fan <peng.fan@nxp.com> wrote:
>
> To support DM_VIDEO,
>  Add display node for lcdif
>  Drop board iomuxc settings.
>  Enable DM_VIDEO
>
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>
> V1:
>  This patch could be applied directly, but it needs
>  https://patchwork.ozlabs.org/patch/1133224/ patchset work let
>  DM VIDEO work.
>
>  arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi         | 49 ++++++++++++++++++-
>  board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 57 ++++++++---------------
>  configs/mx6ul_14x14_evk_defconfig                 |  2 +-
>  include/configs/mx6ul_14x14_evk.h                 |  2 +-
>  4 files changed, 70 insertions(+), 40 deletions(-)
>
> diff --git a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> index 77cb461a21..e9efdb9831 100644
> --- a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> @@ -3,8 +3,55 @@
>   * Copyright 2018 NXP
>   */
>
> +&{/aliases} {
> +       u-boot,dm-pre-reloc;
> +       display0 = &lcdif;
> +};
> +
>  &qspi {
>         flash0: n25q256a@0 {
>                 compatible = "jedec,spi-nor";
>         };
> -};
> \ No newline at end of file
> +};
> +
> +&{/soc} {
> +       u-boot,dm-pre-reloc;
> +};
> +
> +&aips2 {
> +       u-boot,dm-pre-reloc;
> +};
> +
> +&iomuxc {
> +       u-boot,dm-pre-reloc;
> +};
> +
> +&lcdif {
> +       display = <&display0>;
> +       u-boot,dm-pre-reloc;
> +
> +       display0: display@0 {
> +               bits-per-pixel = <16>;
> +               bus-width = <24>;
> +
> +               display-timings {
> +                       native-mode = <&timing0>;
> +
> +                       timing0: timing0 {
> +                               clock-frequency = <9200000>;
> +                               hactive = <480>;
> +                               vactive = <272>;
> +                               hfront-porch = <8>;
> +                               hback-porch = <4>;
> +                               hsync-len = <41>;
> +                               vback-porch = <2>;
> +                               vfront-porch = <4>;
> +                               vsync-len = <10>;
> +                               hsync-active = <0>;
> +                               vsync-active = <0>;
> +                               de-active = <1>;
> +                               pixelclk-active = <0>;
> +                       };
> +               };
> +       };
> +};
> diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> index af5af4d50a..126a805163 100644
> --- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> +++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> @@ -27,6 +27,10 @@
>  #include "../common/pfuze.h"
>  #include <usb.h>
>  #include <usb/ehci-ci.h>
> +#ifdef CONFIG_DM_VIDEO
> +#include <bmp_logo_data.h>
> +#include <video.h>
> +#endif
>
>  DECLARE_GLOBAL_DATA_PTR;
>
> @@ -420,40 +424,8 @@ int board_phy_config(struct phy_device *phydev)
>  }
>  #endif
>
> -#ifdef CONFIG_VIDEO_MXS
> +#ifdef CONFIG_DM_VIDEO
>  static iomux_v3_cfg_t const lcd_pads[] = {
> -       MX6_PAD_LCD_CLK__LCDIF_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_ENABLE__LCDIF_ENABLE | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_HSYNC__LCDIF_HSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_VSYNC__LCDIF_VSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA00__LCDIF_DATA00 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA01__LCDIF_DATA01 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA02__LCDIF_DATA02 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA03__LCDIF_DATA03 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA04__LCDIF_DATA04 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA05__LCDIF_DATA05 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA06__LCDIF_DATA06 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA07__LCDIF_DATA07 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA08__LCDIF_DATA08 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA09__LCDIF_DATA09 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA10__LCDIF_DATA10 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA11__LCDIF_DATA11 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA12__LCDIF_DATA12 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA13__LCDIF_DATA13 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA14__LCDIF_DATA14 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA15__LCDIF_DATA15 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA16__LCDIF_DATA16 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA17__LCDIF_DATA17 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA18__LCDIF_DATA18 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA19__LCDIF_DATA19 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA20__LCDIF_DATA20 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA21__LCDIF_DATA21 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA22__LCDIF_DATA22 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -       MX6_PAD_LCD_DATA23__LCDIF_DATA23 | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -
> -       /* LCD_RST */
> -       MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
> -
>         /* Use GPIO for Brightness adjustment, duty cycle = period. */
>         MX6_PAD_GPIO1_IO08__GPIO1_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
>  };
> @@ -504,10 +476,6 @@ int board_init(void)
>         board_qspi_init();
>  #endif
>
> -#ifdef CONFIG_VIDEO_MXS
> -       setup_lcd();
> -#endif
> -
>         return 0;
>  }
>
> @@ -536,6 +504,21 @@ int board_late_init(void)
>                 env_set("board_rev", "14X14");
>  #endif
>
> +#if defined(CONFIG_DM_VIDEO)
> +       struct udevice *dev;
> +       int ret;
> +
> +       ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
> +       if (ret)
> +               return ret;
> +
> +       setup_lcd();
> +
> +       ret = video_bmp_display(dev, (ulong)bmp_logo_bitmap, 0, 0, true);
> +       if (ret)
> +               return ret;
> +#endif
> +
What about this approach [1] for showing boot logo? Now it also works
for DM_VIDEO=y setups.

>         return 0;
>  }
>
> diff --git a/configs/mx6ul_14x14_evk_defconfig b/configs/mx6ul_14x14_evk_defconfig
> index 1d777b5fb2..10fb07dd2c 100644
> --- a/configs/mx6ul_14x14_evk_defconfig
> +++ b/configs/mx6ul_14x14_evk_defconfig
> @@ -67,4 +67,4 @@ CONFIG_FSL_QSPI=y
>  CONFIG_USB=y
>  CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
> -CONFIG_VIDEO=y
> +CONFIG_DM_VIDEO=y
> diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
> index 42e511591c..f8a5fd30f3 100644
> --- a/include/configs/mx6ul_14x14_evk.h
> +++ b/include/configs/mx6ul_14x14_evk.h
> @@ -196,7 +196,7 @@
>  #define CONFIG_IMX_THERMAL
>
>  #ifndef CONFIG_SPL_BUILD
> -#ifdef CONFIG_VIDEO
> +#if defined(CONFIG_DM_VIDEO)
>  #define CONFIG_VIDEO_MXS
>  #define CONFIG_VIDEO_LOGO
>  #define CONFIG_SPLASH_SCREEN
> --
> 2.16.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot

[1] https://patchwork.ozlabs.org/patch/1106985/
Peng Fan Aug. 5, 2019, 2:08 a.m. UTC | #7
> Subject: Re: [U-Boot] [PATCH 2/2] imx: mx6ul_14x14_evk: convert to
> DM_VIDEO
> 
> Hi Peng,
> 
> On Thu, Aug 1, 2019 at 9:03 AM Peng Fan <peng.fan@nxp.com> wrote:
> >
> > To support DM_VIDEO,
> >  Add display node for lcdif
> >  Drop board iomuxc settings.
> >  Enable DM_VIDEO
> >
> > Signed-off-by: Peng Fan <peng.fan@nxp.com>
> > ---
> >
> > V1:
> >  This patch could be applied directly, but it needs
> >
> >
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.ozlabs.org%2Fpatch%2F1133224%2F&amp;data=02%7C01%7Cpeng.fan
> %40nxp.com%7Ce7e18c4c27e24cf1a12508d71741b2bf%7C686ea1d3bc2b4c
> 6fa92cd99c5c301635%7C0%7C0%7C637003443252765100&amp;sdata=ZuS
> 8cCWMGCxr7PEPT2xe6cqAIz7Bqd38176FCUc2jsk%3D&amp;reserved=0
> patchset work let  DM VIDEO work.
> >
> >  arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi         | 49
> ++++++++++++++++++-
> >  board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 57
> ++++++++---------------
> >  configs/mx6ul_14x14_evk_defconfig                 |  2 +-
> >  include/configs/mx6ul_14x14_evk.h                 |  2 +-
> >  4 files changed, 70 insertions(+), 40 deletions(-)
> >
> > diff --git a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> > b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> > index 77cb461a21..e9efdb9831 100644
> > --- a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> > +++ b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> > @@ -3,8 +3,55 @@
> >   * Copyright 2018 NXP
> >   */
> >
> > +&{/aliases} {
> > +       u-boot,dm-pre-reloc;
> > +       display0 = &lcdif;
> > +};
> > +
> >  &qspi {
> >         flash0: n25q256a@0 {
> >                 compatible = "jedec,spi-nor";
> >         };
> > -};
> > \ No newline at end of file
> > +};
> > +
> > +&{/soc} {
> > +       u-boot,dm-pre-reloc;
> > +};
> > +
> > +&aips2 {
> > +       u-boot,dm-pre-reloc;
> > +};
> > +
> > +&iomuxc {
> > +       u-boot,dm-pre-reloc;
> > +};
> > +
> > +&lcdif {
> > +       display = <&display0>;
> > +       u-boot,dm-pre-reloc;
> > +
> > +       display0: display@0 {
> > +               bits-per-pixel = <16>;
> > +               bus-width = <24>;
> > +
> > +               display-timings {
> > +                       native-mode = <&timing0>;
> > +
> > +                       timing0: timing0 {
> > +                               clock-frequency = <9200000>;
> > +                               hactive = <480>;
> > +                               vactive = <272>;
> > +                               hfront-porch = <8>;
> > +                               hback-porch = <4>;
> > +                               hsync-len = <41>;
> > +                               vback-porch = <2>;
> > +                               vfront-porch = <4>;
> > +                               vsync-len = <10>;
> > +                               hsync-active = <0>;
> > +                               vsync-active = <0>;
> > +                               de-active = <1>;
> > +                               pixelclk-active = <0>;
> > +                       };
> > +               };
> > +       };
> > +};
> > diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> > b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> > index af5af4d50a..126a805163 100644
> > --- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> > +++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> > @@ -27,6 +27,10 @@
> >  #include "../common/pfuze.h"
> >  #include <usb.h>
> >  #include <usb/ehci-ci.h>
> > +#ifdef CONFIG_DM_VIDEO
> > +#include <bmp_logo_data.h>
> > +#include <video.h>
> > +#endif
> >
> >  DECLARE_GLOBAL_DATA_PTR;
> >
> > @@ -420,40 +424,8 @@ int board_phy_config(struct phy_device *phydev)
> > }  #endif
> >
> > -#ifdef CONFIG_VIDEO_MXS
> > +#ifdef CONFIG_DM_VIDEO
> >  static iomux_v3_cfg_t const lcd_pads[] = {
> > -       MX6_PAD_LCD_CLK__LCDIF_CLK |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_ENABLE__LCDIF_ENABLE |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_HSYNC__LCDIF_HSYNC |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_VSYNC__LCDIF_VSYNC |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA00__LCDIF_DATA00 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA01__LCDIF_DATA01 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA02__LCDIF_DATA02 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA03__LCDIF_DATA03 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA04__LCDIF_DATA04 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA05__LCDIF_DATA05 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA06__LCDIF_DATA06 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA07__LCDIF_DATA07 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA08__LCDIF_DATA08 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA09__LCDIF_DATA09 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA10__LCDIF_DATA10 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA11__LCDIF_DATA11 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA12__LCDIF_DATA12 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA13__LCDIF_DATA13 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA14__LCDIF_DATA14 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA15__LCDIF_DATA15 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA16__LCDIF_DATA16 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA17__LCDIF_DATA17 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA18__LCDIF_DATA18 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA19__LCDIF_DATA19 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA20__LCDIF_DATA20 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA21__LCDIF_DATA21 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA22__LCDIF_DATA22 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -       MX6_PAD_LCD_DATA23__LCDIF_DATA23 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> > -
> > -       /* LCD_RST */
> > -       MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 |
> MUX_PAD_CTRL(NO_PAD_CTRL),
> > -
> >         /* Use GPIO for Brightness adjustment, duty cycle = period. */
> >         MX6_PAD_GPIO1_IO08__GPIO1_IO08 |
> MUX_PAD_CTRL(NO_PAD_CTRL),
> > }; @@ -504,10 +476,6 @@ int board_init(void)
> >         board_qspi_init();
> >  #endif
> >
> > -#ifdef CONFIG_VIDEO_MXS
> > -       setup_lcd();
> > -#endif
> > -
> >         return 0;
> >  }
> >
> > @@ -536,6 +504,21 @@ int board_late_init(void)
> >                 env_set("board_rev", "14X14");  #endif
> >
> > +#if defined(CONFIG_DM_VIDEO)
> > +       struct udevice *dev;
> > +       int ret;
> > +
> > +       ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
> > +       if (ret)
> > +               return ret;
> > +
> > +       setup_lcd();
> > +
> > +       ret = video_bmp_display(dev, (ulong)bmp_logo_bitmap, 0, 0, true);
> > +       if (ret)
> > +               return ret;
> > +#endif
> > +
> What about this approach [1] for showing boot logo? Now it also works for
> DM_VIDEO=y setups.

It needs a bmp file in filesystem, however the current patch use bmp built in
U-Boot image.

Thanks,
Peng.

> 
> >         return 0;
> >  }
> >
> > diff --git a/configs/mx6ul_14x14_evk_defconfig
> > b/configs/mx6ul_14x14_evk_defconfig
> > index 1d777b5fb2..10fb07dd2c 100644
> > --- a/configs/mx6ul_14x14_evk_defconfig
> > +++ b/configs/mx6ul_14x14_evk_defconfig
> > @@ -67,4 +67,4 @@ CONFIG_FSL_QSPI=y
> >  CONFIG_USB=y
> >  CONFIG_DM_USB=y
> >  CONFIG_USB_STORAGE=y
> > -CONFIG_VIDEO=y
> > +CONFIG_DM_VIDEO=y
> > diff --git a/include/configs/mx6ul_14x14_evk.h
> > b/include/configs/mx6ul_14x14_evk.h
> > index 42e511591c..f8a5fd30f3 100644
> > --- a/include/configs/mx6ul_14x14_evk.h
> > +++ b/include/configs/mx6ul_14x14_evk.h
> > @@ -196,7 +196,7 @@
> >  #define CONFIG_IMX_THERMAL
> >
> >  #ifndef CONFIG_SPL_BUILD
> > -#ifdef CONFIG_VIDEO
> > +#if defined(CONFIG_DM_VIDEO)
> >  #define CONFIG_VIDEO_MXS
> >  #define CONFIG_VIDEO_LOGO
> >  #define CONFIG_SPLASH_SCREEN
> > --
> > 2.16.4
> >
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot@lists.denx.de
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flist
> >
> s.denx.de%2Flistinfo%2Fu-boot&amp;data=02%7C01%7Cpeng.fan%40nxp.co
> m%7C
> >
> e7e18c4c27e24cf1a12508d71741b2bf%7C686ea1d3bc2b4c6fa92cd99c5c301
> 635%7C
> >
> 0%7C0%7C637003443252765100&amp;sdata=MSb7v7%2BB8yes3A3OLBhl3
> Kw5hyHX%2B
> > 9aHBZQC43ZK93E%3D&amp;reserved=0
> 
> [1]
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpatch
> work.ozlabs.org%2Fpatch%2F1106985%2F&amp;data=02%7C01%7Cpeng.fan
> %40nxp.com%7Ce7e18c4c27e24cf1a12508d71741b2bf%7C686ea1d3bc2b4c
> 6fa92cd99c5c301635%7C0%7C0%7C637003443252765100&amp;sdata=bbR
> e%2BdOa3pj1y1EzjnqwCJvsgcNwMJQ4zz%2BZMOoI%2Brk%3D&amp;reserve
> d=0
> 
> --
> Best regards - Freundliche GrĂ¼sse - Meilleures salutations
> 
> Igor Opaniuk
> 
> mailto: igor.opaniuk@gmail.com
> skype: igor.opanyuk
> +380 (93) 836 40 67
> https://eur01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fua.linke
> din.com%2Fin%2Fiopaniuk&amp;data=02%7C01%7Cpeng.fan%40nxp.com%7
> Ce7e18c4c27e24cf1a12508d71741b2bf%7C686ea1d3bc2b4c6fa92cd99c5c3
> 01635%7C0%7C0%7C637003443252765100&amp;sdata=k1nlPVknC5zyKy8io
> OsbiE4J1WJGJoVxlDlGWEHdVEM%3D&amp;reserved=0
Peng Fan Aug. 5, 2019, 9:28 a.m. UTC | #8
Hi Anatolij,

> Subject: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> 
> To support DM_VIDEO,
>  Add display node for lcdif
>  Drop board iomuxc settings.
>  Enable DM_VIDEO

Would you please help review this patch?

Thanks,
Peng.

> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
> 
> V1:
>  This patch could be applied directly, but it needs
> https://patchwork.ozlabs.org/patch/1133224/ patchset work let  DM VIDEO
> work.
> 
>  arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi         | 49
> ++++++++++++++++++-
>  board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 57
> ++++++++---------------
>  configs/mx6ul_14x14_evk_defconfig                 |  2 +-
>  include/configs/mx6ul_14x14_evk.h                 |  2 +-
>  4 files changed, 70 insertions(+), 40 deletions(-)
> 
> diff --git a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> index 77cb461a21..e9efdb9831 100644
> --- a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> +++ b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
> @@ -3,8 +3,55 @@
>   * Copyright 2018 NXP
>   */
> 
> +&{/aliases} {
> +	u-boot,dm-pre-reloc;
> +	display0 = &lcdif;
> +};
> +
>  &qspi {
>  	flash0: n25q256a@0 {
>  		compatible = "jedec,spi-nor";
>  	};
> -};
> \ No newline at end of file
> +};
> +
> +&{/soc} {
> +	u-boot,dm-pre-reloc;
> +};
> +
> +&aips2 {
> +	u-boot,dm-pre-reloc;
> +};
> +
> +&iomuxc {
> +	u-boot,dm-pre-reloc;
> +};
> +
> +&lcdif {
> +	display = <&display0>;
> +	u-boot,dm-pre-reloc;
> +
> +	display0: display@0 {
> +		bits-per-pixel = <16>;
> +		bus-width = <24>;
> +
> +		display-timings {
> +			native-mode = <&timing0>;
> +
> +			timing0: timing0 {
> +				clock-frequency = <9200000>;
> +				hactive = <480>;
> +				vactive = <272>;
> +				hfront-porch = <8>;
> +				hback-porch = <4>;
> +				hsync-len = <41>;
> +				vback-porch = <2>;
> +				vfront-porch = <4>;
> +				vsync-len = <10>;
> +				hsync-active = <0>;
> +				vsync-active = <0>;
> +				de-active = <1>;
> +				pixelclk-active = <0>;
> +			};
> +		};
> +	};
> +};
> diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> index af5af4d50a..126a805163 100644
> --- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> +++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
> @@ -27,6 +27,10 @@
>  #include "../common/pfuze.h"
>  #include <usb.h>
>  #include <usb/ehci-ci.h>
> +#ifdef CONFIG_DM_VIDEO
> +#include <bmp_logo_data.h>
> +#include <video.h>
> +#endif
> 
>  DECLARE_GLOBAL_DATA_PTR;
> 
> @@ -420,40 +424,8 @@ int board_phy_config(struct phy_device *phydev)  }
> #endif
> 
> -#ifdef CONFIG_VIDEO_MXS
> +#ifdef CONFIG_DM_VIDEO
>  static iomux_v3_cfg_t const lcd_pads[] = {
> -	MX6_PAD_LCD_CLK__LCDIF_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_ENABLE__LCDIF_ENABLE |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_HSYNC__LCDIF_HSYNC |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_VSYNC__LCDIF_VSYNC |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA00__LCDIF_DATA00 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA01__LCDIF_DATA01 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA02__LCDIF_DATA02 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA03__LCDIF_DATA03 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA04__LCDIF_DATA04 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA05__LCDIF_DATA05 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA06__LCDIF_DATA06 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA07__LCDIF_DATA07 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA08__LCDIF_DATA08 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA09__LCDIF_DATA09 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA10__LCDIF_DATA10 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA11__LCDIF_DATA11 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA12__LCDIF_DATA12 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA13__LCDIF_DATA13 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA14__LCDIF_DATA14 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA15__LCDIF_DATA15 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA16__LCDIF_DATA16 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA17__LCDIF_DATA17 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA18__LCDIF_DATA18 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA19__LCDIF_DATA19 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA20__LCDIF_DATA20 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA21__LCDIF_DATA21 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA22__LCDIF_DATA22 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -	MX6_PAD_LCD_DATA23__LCDIF_DATA23 |
> MUX_PAD_CTRL(LCD_PAD_CTRL),
> -
> -	/* LCD_RST */
> -	MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 |
> MUX_PAD_CTRL(NO_PAD_CTRL),
> -
>  	/* Use GPIO for Brightness adjustment, duty cycle = period. */
>  	MX6_PAD_GPIO1_IO08__GPIO1_IO08 |
> MUX_PAD_CTRL(NO_PAD_CTRL),  }; @@ -504,10 +476,6 @@ int
> board_init(void)
>  	board_qspi_init();
>  #endif
> 
> -#ifdef CONFIG_VIDEO_MXS
> -	setup_lcd();
> -#endif
> -
>  	return 0;
>  }
> 
> @@ -536,6 +504,21 @@ int board_late_init(void)
>  		env_set("board_rev", "14X14");
>  #endif
> 
> +#if defined(CONFIG_DM_VIDEO)
> +	struct udevice *dev;
> +	int ret;
> +
> +	ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
> +	if (ret)
> +		return ret;
> +
> +	setup_lcd();
> +
> +	ret = video_bmp_display(dev, (ulong)bmp_logo_bitmap, 0, 0, true);
> +	if (ret)
> +		return ret;
> +#endif
> +
>  	return 0;
>  }
> 
> diff --git a/configs/mx6ul_14x14_evk_defconfig
> b/configs/mx6ul_14x14_evk_defconfig
> index 1d777b5fb2..10fb07dd2c 100644
> --- a/configs/mx6ul_14x14_evk_defconfig
> +++ b/configs/mx6ul_14x14_evk_defconfig
> @@ -67,4 +67,4 @@ CONFIG_FSL_QSPI=y
>  CONFIG_USB=y
>  CONFIG_DM_USB=y
>  CONFIG_USB_STORAGE=y
> -CONFIG_VIDEO=y
> +CONFIG_DM_VIDEO=y
> diff --git a/include/configs/mx6ul_14x14_evk.h
> b/include/configs/mx6ul_14x14_evk.h
> index 42e511591c..f8a5fd30f3 100644
> --- a/include/configs/mx6ul_14x14_evk.h
> +++ b/include/configs/mx6ul_14x14_evk.h
> @@ -196,7 +196,7 @@
>  #define CONFIG_IMX_THERMAL
> 
>  #ifndef CONFIG_SPL_BUILD
> -#ifdef CONFIG_VIDEO
> +#if defined(CONFIG_DM_VIDEO)
>  #define CONFIG_VIDEO_MXS
>  #define CONFIG_VIDEO_LOGO
>  #define CONFIG_SPLASH_SCREEN
> --
> 2.16.4
Anatolij Gustschin Aug. 5, 2019, 1:01 p.m. UTC | #9
On Thu, 1 Aug 2019 06:02:49 +0000
Peng Fan peng.fan@nxp.com wrote:
...
>  arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi         | 49 ++++++++++++++++++-
>  board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c | 57 ++++++++---------------
>  configs/mx6ul_14x14_evk_defconfig                 |  2 +-
>  include/configs/mx6ul_14x14_evk.h                 |  2 +-
>  4 files changed, 70 insertions(+), 40 deletions(-)

Reviewed-by: Anatolij Gustschin <agust@denx.de>
Anatolij Gustschin Aug. 5, 2019, 1:11 p.m. UTC | #10
On Fri, 2 Aug 2019 06:35:26 +0000
Peng Fan peng.fan@nxp.com wrote:

> > Shouldn't U-Boot be able to handle the same dt-bindings as in the kernel?  
> 
> I added this node in x-u-boot.dtsi, not in common dts. If drop this display-timings,
> we need add a similar structure inside code just as kernel did.
> And need to restructure mxsfb driver.
> 
> For simple, we could leave this in u-boot.dtsi.
> 
> Anatolij, what's your suggestion?

We do not have a panel driver with timing database in U-Boot.
For now I'd accept if you add timing info in U-Boot specific dts.

--
Anatolij
Anatolij Gustschin Aug. 5, 2019, 1:15 p.m. UTC | #11
Hi Peng,

On Mon, 5 Aug 2019 09:28:01 +0000
Peng Fan peng.fan@nxp.com wrote:
...
> > To support DM_VIDEO,
> >  Add display node for lcdif
> >  Drop board iomuxc settings.
> >  Enable DM_VIDEO  
> 
> Would you please help review this patch?

Done. This should be applied with other i.mx6ul patches via
u-boot-imx tree. Thanks!

--
Anatolij
Peng Fan Aug. 6, 2019, 1:11 a.m. UTC | #12
Hi Anatolij,

> Subject: Re: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> 
> Hi Peng,
> 
> On Mon, 5 Aug 2019 09:28:01 +0000
> Peng Fan peng.fan@nxp.com wrote:
> ...
> > > To support DM_VIDEO,
> > >  Add display node for lcdif
> > >  Drop board iomuxc settings.
> > >  Enable DM_VIDEO
> >
> > Would you please help review this patch?
> 
> Done. This should be applied with other i.mx6ul patches via u-boot-imx tree.
> Thanks!

Thanks. Get you R-b tag means you agree the display-timings approach
from DM VIDEO point.

Thanks,
Peng.

> 
> --
> Anatolij
Peng Fan Aug. 13, 2019, 8:24 a.m. UTC | #13
> Subject: [PATCH 2/2] imx: mx6ul_14x14_evk: convert to DM_VIDEO
> 
> To support DM_VIDEO,
>  Add display node for lcdif
>  Drop board iomuxc settings.
>  Enable DM_VIDEO
> 
> Signed-off-by: Peng Fan <peng.fan@nxp.com>

Applied to nxp-imx-8-13,
https://github.com/MrVan/u-boot/tree/nxp-imx-8-13

Regards,
Peng.
diff mbox series

Patch

diff --git a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
index 77cb461a21..e9efdb9831 100644
--- a/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
+++ b/arch/arm/dts/imx6ul-14x14-evk-u-boot.dtsi
@@ -3,8 +3,55 @@ 
  * Copyright 2018 NXP
  */
 
+&{/aliases} {
+	u-boot,dm-pre-reloc;
+	display0 = &lcdif;
+};
+
 &qspi {
 	flash0: n25q256a@0 {
 		compatible = "jedec,spi-nor";
 	};
-};
\ No newline at end of file
+};
+
+&{/soc} {
+	u-boot,dm-pre-reloc;
+};
+
+&aips2 {
+	u-boot,dm-pre-reloc;
+};
+
+&iomuxc {
+	u-boot,dm-pre-reloc;
+};
+
+&lcdif {
+	display = <&display0>;
+	u-boot,dm-pre-reloc;
+
+	display0: display@0 {
+		bits-per-pixel = <16>;
+		bus-width = <24>;
+
+		display-timings {
+			native-mode = <&timing0>;
+
+			timing0: timing0 {
+				clock-frequency = <9200000>;
+				hactive = <480>;
+				vactive = <272>;
+				hfront-porch = <8>;
+				hback-porch = <4>;
+				hsync-len = <41>;
+				vback-porch = <2>;
+				vfront-porch = <4>;
+				vsync-len = <10>;
+				hsync-active = <0>;
+				vsync-active = <0>;
+				de-active = <1>;
+				pixelclk-active = <0>;
+			};
+		};
+	};
+};
diff --git a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
index af5af4d50a..126a805163 100644
--- a/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
+++ b/board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
@@ -27,6 +27,10 @@ 
 #include "../common/pfuze.h"
 #include <usb.h>
 #include <usb/ehci-ci.h>
+#ifdef CONFIG_DM_VIDEO
+#include <bmp_logo_data.h>
+#include <video.h>
+#endif
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -420,40 +424,8 @@  int board_phy_config(struct phy_device *phydev)
 }
 #endif
 
-#ifdef CONFIG_VIDEO_MXS
+#ifdef CONFIG_DM_VIDEO
 static iomux_v3_cfg_t const lcd_pads[] = {
-	MX6_PAD_LCD_CLK__LCDIF_CLK | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_ENABLE__LCDIF_ENABLE | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_HSYNC__LCDIF_HSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_VSYNC__LCDIF_VSYNC | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA00__LCDIF_DATA00 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA01__LCDIF_DATA01 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA02__LCDIF_DATA02 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA03__LCDIF_DATA03 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA04__LCDIF_DATA04 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA05__LCDIF_DATA05 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA06__LCDIF_DATA06 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA07__LCDIF_DATA07 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA08__LCDIF_DATA08 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA09__LCDIF_DATA09 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA10__LCDIF_DATA10 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA11__LCDIF_DATA11 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA12__LCDIF_DATA12 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA13__LCDIF_DATA13 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA14__LCDIF_DATA14 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA15__LCDIF_DATA15 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA16__LCDIF_DATA16 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA17__LCDIF_DATA17 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA18__LCDIF_DATA18 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA19__LCDIF_DATA19 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA20__LCDIF_DATA20 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA21__LCDIF_DATA21 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA22__LCDIF_DATA22 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-	MX6_PAD_LCD_DATA23__LCDIF_DATA23 | MUX_PAD_CTRL(LCD_PAD_CTRL),
-
-	/* LCD_RST */
-	MX6_PAD_SNVS_TAMPER9__GPIO5_IO09 | MUX_PAD_CTRL(NO_PAD_CTRL),
-
 	/* Use GPIO for Brightness adjustment, duty cycle = period. */
 	MX6_PAD_GPIO1_IO08__GPIO1_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
@@ -504,10 +476,6 @@  int board_init(void)
 	board_qspi_init();
 #endif
 
-#ifdef CONFIG_VIDEO_MXS
-	setup_lcd();
-#endif
-
 	return 0;
 }
 
@@ -536,6 +504,21 @@  int board_late_init(void)
 		env_set("board_rev", "14X14");
 #endif
 
+#if defined(CONFIG_DM_VIDEO)
+	struct udevice *dev;
+	int ret;
+
+	ret = uclass_get_device(UCLASS_VIDEO, 0, &dev);
+	if (ret)
+		return ret;
+
+	setup_lcd();
+
+	ret = video_bmp_display(dev, (ulong)bmp_logo_bitmap, 0, 0, true);
+	if (ret)
+		return ret;
+#endif
+
 	return 0;
 }
 
diff --git a/configs/mx6ul_14x14_evk_defconfig b/configs/mx6ul_14x14_evk_defconfig
index 1d777b5fb2..10fb07dd2c 100644
--- a/configs/mx6ul_14x14_evk_defconfig
+++ b/configs/mx6ul_14x14_evk_defconfig
@@ -67,4 +67,4 @@  CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
-CONFIG_VIDEO=y
+CONFIG_DM_VIDEO=y
diff --git a/include/configs/mx6ul_14x14_evk.h b/include/configs/mx6ul_14x14_evk.h
index 42e511591c..f8a5fd30f3 100644
--- a/include/configs/mx6ul_14x14_evk.h
+++ b/include/configs/mx6ul_14x14_evk.h
@@ -196,7 +196,7 @@ 
 #define CONFIG_IMX_THERMAL
 
 #ifndef CONFIG_SPL_BUILD
-#ifdef CONFIG_VIDEO
+#if defined(CONFIG_DM_VIDEO)
 #define CONFIG_VIDEO_MXS
 #define CONFIG_VIDEO_LOGO
 #define CONFIG_SPLASH_SCREEN