Difference between revisions of "IoTGateway/BSP/Android/Gettingstarted/How to set LCD"

From ESS-WIKI
Jump to: navigation, search
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
If wanting to set LCD as default display, you can modify the '''/device/fsl/rom_xxxx_a1/BoardConfig.mk as follows.'''
+
1. ROM 3420 (Current default display is LVDS)
<pre>BOARD_KERNEL_CMDLINE := console=ttymxc0,115200 init=/init<span style="color:#FF0000;">'''video=mxcfb0:dev=ldb,bpp=32'''</span> video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M</pre>
+
 
 +
'''<span style="font-size:medium;">a.&nbsp;If wanting to set LCD as default display, you can modify the&nbsp;device/fsl/rom_3420_a1/BoardConfig.mk&nbsp;as follows.&nbsp;</span>'''
 +
 
 +
BOARD_KERNEL_CMDLINE := console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M<br/>
 +
 
 +
For '''ROM7421 '''(Current default display is LVDS), please refer to&nbsp;device/fsl/rom_7421_a1/BoardConfig.mk
 +
 
 +
<span style="font-size:medium;">'''b. If you want to change the panel for your product, please modify the LDB parameters in /kernel_imx/arch/arm/boot/dts/imx6qdl-advantech.dtsi'''</span>
 +
 
 +
Pleae refer to the&nbsp;Device-Tree bindings for LVDS Display Bridge (ldb) as follows
 +
 
 +
&nbsp;
 +
 
 +
LVDS Display Bridge
 +
 
 +
====== ======= ======
 +
 
 +
&nbsp;
 +
 
 +
The LVDS Display Bridge device tree node contains up to two lvds-channel
 +
 
 +
nodes describing each of the two LVDS encoder channels of the bridge.
 +
 
 +
&nbsp;
 +
 
 +
Required properties:
 +
 
 +
&nbsp;- #address-cells&nbsp;: should be &lt;1&gt;
 +
 
 +
&nbsp;- #size-cells&nbsp;: should be &lt;0&gt;
 +
 
 +
&nbsp;- compatible&nbsp;: should be "fsl,imx53-ldb" or "fsl,imx6q-ldb".
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Both LDB versions are similar, but i.MX6 has an additional
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multiplexer in the front to select any of the four IPU display
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; interfaces as input for each LVDS channel.
 +
 
 +
&nbsp;- gpr&nbsp;: should be &lt;&gpr&gt; on i.MX53 and i.MX6q.
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The phandle points to the iomuxc-gpr region containing the LVDS
 +
 
 +
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;control register.
 +
 
 +
- clocks, clock-names&nbsp;: phandles to the LDB divider and selector clocks and to
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the display interface selector clocks, as described in
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Documentation/devicetree/bindings/clock/clock-bindings.txt
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The following clocks are expected on i.MX53:
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di0_pll" - LDB LVDS channel 0 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di1_pll" - LDB LVDS channel 1 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di0" - LDB LVDS channel 0 gate
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di1" - LDB LVDS channel 1 gate
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di0_sel" - IPU1 DI0 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di1_sel" - IPU1 DI1 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; On i.MX6q the following additional clocks are needed:
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di2_sel" - IPU2 DI0 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "di3_sel" - IPU2 DI1 mux
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The needed clock numbers for each are documented in
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Documentation/devicetree/bindings/clock/imx5-clock.txt, and in
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Documentation/devicetree/bindings/clock/imx6q-clock.txt.
 +
 
 +
&nbsp;
 +
 
 +
Optional properties:
 +
 
 +
&nbsp;- pinctrl-names&nbsp;: should be "default" on i.MX53, not used on i.MX6q
 +
 
 +
&nbsp;- pinctrl-0&nbsp;: a phandle pointing to LVDS pin settings on i.MX53,
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not used on i.MX6q
 +
 
 +
&nbsp;- fsl,dual-channel&nbsp;: boolean. if it exists, only LVDS channel 0 should
 +
 
 +
&nbsp;&nbsp; be configured - one input will be distributed on both outputs in dual
 +
 
 +
&nbsp;&nbsp; channel mode
 +
 
 +
&nbsp;
 +
 
 +
LVDS Channel
 +
 
 +
===== == =====
 +
 
 +
&nbsp;
 +
 
 +
Each LVDS Channel has to contain a display-timings node that describes the
 +
 
 +
video timings for the connected LVDS display. For detailed information, also
 +
 
 +
have a look at Documentation/devicetree/bindings/video/display-timing.txt.
 +
 
 +
&nbsp;
 +
 
 +
Required properties:
 +
 
 +
&nbsp;- reg&nbsp;: should be &lt;0&gt; or &lt;1&gt;
 +
 
 +
&nbsp;- crtcs&nbsp;: a list of phandles with index pointing to the IPU display interfaces
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; that can be used as video source for this channel.
 +
 
 +
&nbsp;- fsl,data-mapping&nbsp;: should be "spwg" or "jeida"
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; This describes how the color bits are laid out in the
 +
 
 +
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serialized LVDS signal.
 +
 
 +
&nbsp;- fsl,data-width&nbsp;: should be &lt;18&gt; or &lt;24&gt;
 +
 
 +
&nbsp;
 +
 
 +
example:
 +
 
 +
&nbsp;
 +
<pre>gpr: iomuxc-gpr@53fa8000 {
 +
 
 +
        /* ... */
 +
 
 +
};
 +
 
 +
 +
 
 +
ldb: ldb@53fa8008 {
 +
 
 +
        #address-cells = <1>;
 +
 
 +
        #size-cells = <0>;
 +
 
 +
        compatible = "fsl,imx53-ldb";
 +
 
 +
        gpr = <&gpr>;
 +
 
 +
        clocks = <&clks 122>, <&clks 120>,
 +
 
 +
                <&clks 115>, <&clks 116>,
 +
 
 +
                <&clks 123>, <&clks 85>;
 +
 
 +
        clock-names = "di0_pll", "di1_pll",
 +
 
 +
                      "di0_sel", "di1_sel",
 +
 
 +
                      "di0", "di1";
 +
 
 +
 +
 
 +
        lvds-channel@0 {
 +
 
 +
                reg = <0>;
 +
 
 +
                crtcs = <&ipu 0>;
 +
 
 +
                fsl,data-mapping = "spwg";
 +
 
 +
                fsl,data-width = <24>;
 +
 
 +
 +
 
 +
                display-timings {
 +
 
 +
                        /* ... */
 +
 
 +
                };
 +
 
 +
        };
 +
 
 +
 +
 
 +
        lvds-channel@1 {
 +
 
 +
                reg = <1>;
 +
 
 +
                crtcs = <&ipu 1>;
 +
 
 +
                fsl,data-mapping = "spwg";
 +
 
 +
                fsl,data-width = <24>;
 +
 
 +
 +
 
 +
                display-timings {
 +
 
 +
                        /* ... */
 +
 
 +
                };
 +
 
 +
        };
 +
 
 +
};</pre>

Latest revision as of 09:31, 3 February 2017

1. ROM 3420 (Current default display is LVDS)

a. If wanting to set LCD as default display, you can modify the device/fsl/rom_3420_a1/BoardConfig.mk as follows. 

BOARD_KERNEL_CMDLINE := console=ttymxc0,115200 init=/init video=mxcfb0:dev=ldb,bpp=32 video=mxcfb1:off video=mxcfb2:off video=mxcfb3:off vmalloc=256M androidboot.console=ttymxc0 consoleblank=0 androidboot.hardware=freescale cma=384M

For ROM7421 (Current default display is LVDS), please refer to device/fsl/rom_7421_a1/BoardConfig.mk

b. If you want to change the panel for your product, please modify the LDB parameters in /kernel_imx/arch/arm/boot/dts/imx6qdl-advantech.dtsi

Pleae refer to the Device-Tree bindings for LVDS Display Bridge (ldb) as follows

 

LVDS Display Bridge

=======

 

The LVDS Display Bridge device tree node contains up to two lvds-channel

nodes describing each of the two LVDS encoder channels of the bridge.

 

Required properties:

 - #address-cells : should be <1>

 - #size-cells : should be <0>

 - compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb".

                Both LDB versions are similar, but i.MX6 has an additional

                multiplexer in the front to select any of the four IPU display

                interfaces as input for each LVDS channel.

 - gpr : should be <&gpr> on i.MX53 and i.MX6q.

         The phandle points to the iomuxc-gpr region containing the LVDS

         control register.

- clocks, clock-names : phandles to the LDB divider and selector clocks and to

                        the display interface selector clocks, as described in

                        Documentation/devicetree/bindings/clock/clock-bindings.txt

        The following clocks are expected on i.MX53:

                "di0_pll" - LDB LVDS channel 0 mux

                "di1_pll" - LDB LVDS channel 1 mux

                "di0" - LDB LVDS channel 0 gate

                "di1" - LDB LVDS channel 1 gate

                "di0_sel" - IPU1 DI0 mux

                "di1_sel" - IPU1 DI1 mux

        On i.MX6q the following additional clocks are needed:

                "di2_sel" - IPU2 DI0 mux

                "di3_sel" - IPU2 DI1 mux

        The needed clock numbers for each are documented in

        Documentation/devicetree/bindings/clock/imx5-clock.txt, and in

        Documentation/devicetree/bindings/clock/imx6q-clock.txt.

 

Optional properties:

 - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q

 - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53,

               not used on i.MX6q

 - fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should

   be configured - one input will be distributed on both outputs in dual

   channel mode

 

LVDS Channel

==

 

Each LVDS Channel has to contain a display-timings node that describes the

video timings for the connected LVDS display. For detailed information, also

have a look at Documentation/devicetree/bindings/video/display-timing.txt.

 

Required properties:

 - reg : should be <0> or <1>

 - crtcs : a list of phandles with index pointing to the IPU display interfaces

           that can be used as video source for this channel.

 - fsl,data-mapping : should be "spwg" or "jeida"

                      This describes how the color bits are laid out in the

                      serialized LVDS signal.

 - fsl,data-width : should be <18> or <24>

 

example:

 

gpr: iomuxc-gpr@53fa8000 {

        /* ... */

};

 

ldb: ldb@53fa8008 {

        #address-cells = <1>;

        #size-cells = <0>;

        compatible = "fsl,imx53-ldb";

        gpr = <&gpr>;

        clocks = <&clks 122>, <&clks 120>,

                 <&clks 115>, <&clks 116>,

                 <&clks 123>, <&clks 85>;

        clock-names = "di0_pll", "di1_pll",

                      "di0_sel", "di1_sel",

                      "di0", "di1";

 

        lvds-channel@0 {

                reg = <0>;

                crtcs = <&ipu 0>;

                fsl,data-mapping = "spwg";

                fsl,data-width = <24>;

 

                display-timings {

                        /* ... */

                };

        };

 

        lvds-channel@1 {

                reg = <1>;

                crtcs = <&ipu 1>;

                fsl,data-mapping = "spwg";

                fsl,data-width = <24>;

 

                display-timings {

                        /* ... */

                };

        };

};