Back to home page

OSCL-LXR

 
 

    


0001 Device-Tree bindings for LVDS Display Bridge (ldb)
0002 
0003 LVDS Display Bridge
0004 ===================
0005 
0006 The LVDS Display Bridge device tree node contains up to two lvds-channel
0007 nodes describing each of the two LVDS encoder channels of the bridge.
0008 
0009 Required properties:
0010  - #address-cells : should be <1>
0011  - #size-cells : should be <0>
0012  - compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb".
0013                 Both LDB versions are similar, but i.MX6 has an additional
0014                 multiplexer in the front to select any of the four IPU display
0015                 interfaces as input for each LVDS channel.
0016  - gpr : should be <&gpr> on i.MX53 and i.MX6q.
0017          The phandle points to the iomuxc-gpr region containing the LVDS
0018          control register.
0019 - clocks, clock-names : phandles to the LDB divider and selector clocks and to
0020                         the display interface selector clocks, as described in
0021                         Documentation/devicetree/bindings/clock/clock-bindings.txt
0022         The following clocks are expected on i.MX53:
0023                 "di0_pll" - LDB LVDS channel 0 mux
0024                 "di1_pll" - LDB LVDS channel 1 mux
0025                 "di0" - LDB LVDS channel 0 gate
0026                 "di1" - LDB LVDS channel 1 gate
0027                 "di0_sel" - IPU1 DI0 mux
0028                 "di1_sel" - IPU1 DI1 mux
0029         On i.MX6q the following additional clocks are needed:
0030                 "di2_sel" - IPU2 DI0 mux
0031                 "di3_sel" - IPU2 DI1 mux
0032         The needed clock numbers for each are documented in
0033         Documentation/devicetree/bindings/clock/imx5-clock.yaml, and in
0034         Documentation/devicetree/bindings/clock/imx6q-clock.yaml.
0035 
0036 Optional properties:
0037  - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
0038  - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53,
0039                not used on i.MX6q
0040  - fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should
0041    be configured - one input will be distributed on both outputs in dual
0042    channel mode
0043 
0044 LVDS Channel
0045 ============
0046 
0047 Each LVDS Channel has to contain either an of graph link to a panel device node
0048 or a display-timings node that describes the video timings for the connected
0049 LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
0050 
0051 Required properties:
0052  - reg : should be <0> or <1>
0053  - port: Input and output port nodes with endpoint definitions as defined in
0054    Documentation/devicetree/bindings/graph.txt.
0055    On i.MX5, the internal two-input-multiplexer is used. Due to hardware
0056    limitations, only one input port (port@[0,1]) can be used for each channel
0057    (lvds-channel@[0,1], respectively).
0058    On i.MX6, there should be four input ports (port@[0-3]) that correspond
0059    to the four LVDS multiplexer inputs.
0060    A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
0061    to a panel input port. Optionally, the output port can be left out if
0062    display-timings are used instead.
0063 
0064 Optional properties (required if display-timings are used):
0065  - ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
0066  - display-timings : A node that describes the display timings as defined in
0067    Documentation/devicetree/bindings/display/panel/display-timing.txt.
0068  - fsl,data-mapping : should be "spwg" or "jeida"
0069                       This describes how the color bits are laid out in the
0070                       serialized LVDS signal.
0071  - fsl,data-width : should be <18> or <24>
0072 
0073 example:
0074 
0075 gpr: iomuxc-gpr@53fa8000 {
0076         /* ... */
0077 };
0078 
0079 ldb: ldb@53fa8008 {
0080         #address-cells = <1>;
0081         #size-cells = <0>;
0082         compatible = "fsl,imx53-ldb";
0083         gpr = <&gpr>;
0084         clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
0085                  <&clks IMX5_CLK_LDB_DI1_SEL>,
0086                  <&clks IMX5_CLK_IPU_DI0_SEL>,
0087                  <&clks IMX5_CLK_IPU_DI1_SEL>,
0088                  <&clks IMX5_CLK_LDB_DI0_GATE>,
0089                  <&clks IMX5_CLK_LDB_DI1_GATE>;
0090         clock-names = "di0_pll", "di1_pll",
0091                       "di0_sel", "di1_sel",
0092                       "di0", "di1";
0093 
0094         /* Using an of-graph endpoint link to connect the panel */
0095         lvds-channel@0 {
0096                 #address-cells = <1>;
0097                 #size-cells = <0>;
0098                 reg = <0>;
0099 
0100                 port@0 {
0101                         reg = <0>;
0102 
0103                         lvds0_in: endpoint {
0104                                 remote-endpoint = <&ipu_di0_lvds0>;
0105                         };
0106                 };
0107 
0108                 port@2 {
0109                         reg = <2>;
0110 
0111                         lvds0_out: endpoint {
0112                                 remote-endpoint = <&panel_in>;
0113                         };
0114                 };
0115         };
0116 
0117         /* Using display-timings and fsl,data-mapping/width instead */
0118         lvds-channel@1 {
0119                 #address-cells = <1>;
0120                 #size-cells = <0>;
0121                 reg = <1>;
0122                 fsl,data-mapping = "spwg";
0123                 fsl,data-width = <24>;
0124 
0125                 display-timings {
0126                         /* ... */
0127                 };
0128 
0129                 port@1 {
0130                         reg = <1>;
0131 
0132                         lvds1_in: endpoint {
0133                                 remote-endpoint = <&ipu_di1_lvds1>;
0134                         };
0135                 };
0136         };
0137 };
0138 
0139 panel: lvds-panel {
0140         /* ... */
0141 
0142         port {
0143                 panel_in: endpoint {
0144                         remote-endpoint = <&lvds0_out>;
0145                 };
0146         };
0147 };