Device-Tree bindings for LVDS Display Bridge (ldb)

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" or
                "fsl,imx8qm-ldb" or "fsl,imx8qxp-ldb".
                All LDB versions are similar.
                i.MX6q/dl has an additional multiplexer in the front to select
                any of the two or four IPU display interfaces as input for each
                LVDS channel.
                i.MX8qm LDB supports 10bit RGB input and needs an additional
                phy.
                i.MX8qxp LDB only supports one LVDS encoder channel(either
                channel0 or channel1).
 - 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 following clocks are expected on i.MX8qm:
                "pixel" - pixel clock
                "bypass" - bypass clock
        The following clocks are expected on i.MX8qxp:
                "pixel" - pixel clock
                "bypass" - bypass clock
                "aux_pixel" - pixel clock of the auxiliary LDB
                "aux_bypass" - bypass clock of the auxiliary LDB
        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.
- power-domains : phandle pointing to power domain, only required by i.MX8qm and
                  i.MX8qxp.

Optional properties:
 - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q, i.MX8qm
                   and i.MX8qxp
 - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53,
               not used on i.MX6q, i.MX8qm and i.MX8qxp
 - 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(i.MX8qxp uses two LDBs to support this).  Note that when
   i.MX8qxp LDB works in dual channel mode, only the primary LDB node
   should be active and the auxiliary LDB node should be disabled.
 - aux-gpr : the phandle points to the auxiliary LVDS region containing
             the LVDS control register(only required by i.MX8qxp)

LVDS Channel
============

Each LVDS Channel has to contain either an of graph link to a panel device node
or a display-timings node that describes the video timings for the connected
LVDS display as well as the fsl,data-mapping and fsl,data-width properties.

Required properties:
 - reg : should be <0> or <1>
 - port: Input and output port nodes with endpoint definitions as defined in
   Documentation/devicetree/bindings/graph.txt.
   On i.MX5, the internal two-input-multiplexer is used. Due to hardware
   limitations, only one input port (port@[0,1]) can be used for each channel
   (lvds-channel@[0,1], respectively).
   On i.MX6, there should be four input ports (port@[0-3]) that correspond
   to the four LVDS multiplexer inputs.
   On i.MX8qm, the two channels of LDB connect to one display interface of DPU.
   A single output port (port@2 on i.MX5, port@4 on i.MX6, port@1 on i.MX8qm
   and i.MX8qxp) must be connected to a panel input port or a bridge input port.
   Optionally, the output port can be left out if display-timings are used
   instead.
 - phys: the phandle for the LVDS PHY devices. Valid only on i.MX8qm and
         i.MX8qxp.  For i.MX8qxp, two PHYs should be provided for LVDS
         channel0, one for primary LDB and the other for auxiliary LDB.
 - phy-names: should be "ldb_phy" for i.MX8qm, and "ldb_phy", "aux_ldb_phy"
              for i.MX8qxp.  Valid only on i.MX8qm and i.MX8qxp.

Optional properties (required if display-timings are used):
 - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
 - display-timings : A node that describes the display timings as defined in
   Documentation/devicetree/bindings/display/panel/display-timing.txt.
 - 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>
                    Additionally, <30> for i.MX8qm.

example:

gpr: iomuxc-gpr@53fa8000 {
	/* ... */
};

ldb: ldb@53fa8008 {
	#address-cells = <1>;
	#size-cells = <0>;
	compatible = "fsl,imx53-ldb";
	gpr = <&gpr>;
	clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
		 <&clks IMX5_CLK_LDB_DI1_SEL>,
		 <&clks IMX5_CLK_IPU_DI0_SEL>,
		 <&clks IMX5_CLK_IPU_DI1_SEL>,
		 <&clks IMX5_CLK_LDB_DI0_GATE>,
		 <&clks IMX5_CLK_LDB_DI1_GATE>;
	clock-names = "di0_pll", "di1_pll",
		      "di0_sel", "di1_sel",
		      "di0", "di1";

	/* Using an of-graph endpoint link to connect the panel */
	lvds-channel@0 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;

		port@0 {
			reg = <0>;

			lvds0_in: endpoint {
				remote-endpoint = <&ipu_di0_lvds0>;
			};
		};

		port@2 {
			reg = <2>;

			lvds0_out: endpoint {
				remote-endpoint = <&panel_in>;
			};
		};
	};

	/* Using display-timings and fsl,data-mapping/width instead */
	lvds-channel@1 {
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <1>;
		fsl,data-mapping = "spwg";
		fsl,data-width = <24>;

		display-timings {
			/* ... */
		};

		port@1 {
			reg = <1>;

			lvds1_in: endpoint {
				remote-endpoint = <&ipu_di1_lvds1>;
			};
		};
	};
};

panel: lvds-panel {
	/* ... */

	port {
		panel_in: endpoint {
			remote-endpoint = <&lvds0_out>;
		};
	};
};
