1*48ed447cSLiu Ying# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*48ed447cSLiu Ying%YAML 1.2 3*48ed447cSLiu Ying--- 4*48ed447cSLiu Ying$id: http://devicetree.org/schemas/display/bridge/fsl,imx8qxp-ldb.yaml# 5*48ed447cSLiu Ying$schema: http://devicetree.org/meta-schemas/core.yaml# 6*48ed447cSLiu Ying 7*48ed447cSLiu Yingtitle: Freescale i.MX8qm/qxp LVDS Display Bridge 8*48ed447cSLiu Ying 9*48ed447cSLiu Yingmaintainers: 10*48ed447cSLiu Ying - Liu Ying <victor.liu@nxp.com> 11*48ed447cSLiu Ying 12*48ed447cSLiu Yingdescription: | 13*48ed447cSLiu Ying The Freescale i.MX8qm/qxp LVDS Display Bridge(LDB) has two channels. 14*48ed447cSLiu Ying 15*48ed447cSLiu Ying The i.MX8qm/qxp LDB is controlled by Control and Status Registers(CSR) module. 16*48ed447cSLiu Ying The CSR module, as a system controller, contains the LDB's configuration 17*48ed447cSLiu Ying registers. 18*48ed447cSLiu Ying 19*48ed447cSLiu Ying For i.MX8qxp LDB, each channel supports up to 24bpp parallel input color 20*48ed447cSLiu Ying format and can map the input to VESA or JEIDA standards. The two channels 21*48ed447cSLiu Ying cannot be used simultaneously, that is to say, the user should pick one of 22*48ed447cSLiu Ying them to use. Two LDB channels from two LDB instances can work together in 23*48ed447cSLiu Ying LDB split mode to support a dual link LVDS display. The channel indexes 24*48ed447cSLiu Ying have to be different. Channel0 outputs odd pixels and channel1 outputs 25*48ed447cSLiu Ying even pixels. 26*48ed447cSLiu Ying 27*48ed447cSLiu Ying For i.MX8qm LDB, each channel additionally supports up to 30bpp parallel 28*48ed447cSLiu Ying input color format. The two channels can be used simultaneously, either 29*48ed447cSLiu Ying in dual mode or split mode. In dual mode, the two channels output identical 30*48ed447cSLiu Ying data. In split mode, channel0 outputs odd pixels and channel1 outputs even 31*48ed447cSLiu Ying pixels. 32*48ed447cSLiu Ying 33*48ed447cSLiu Ying A side note is that i.MX8qm/qxp LDB is officially called pixel mapper in 34*48ed447cSLiu Ying the SoC reference manuals. The pixel mapper uses logic of LDBs embedded in 35*48ed447cSLiu Ying i.MX6qdl/sx SoCs, i.e., it is essentially based on them. To keep the naming 36*48ed447cSLiu Ying consistency, this binding calls it LDB. 37*48ed447cSLiu Ying 38*48ed447cSLiu Yingproperties: 39*48ed447cSLiu Ying compatible: 40*48ed447cSLiu Ying enum: 41*48ed447cSLiu Ying - fsl,imx8qm-ldb 42*48ed447cSLiu Ying - fsl,imx8qxp-ldb 43*48ed447cSLiu Ying 44*48ed447cSLiu Ying "#address-cells": 45*48ed447cSLiu Ying const: 1 46*48ed447cSLiu Ying 47*48ed447cSLiu Ying "#size-cells": 48*48ed447cSLiu Ying const: 0 49*48ed447cSLiu Ying 50*48ed447cSLiu Ying clocks: 51*48ed447cSLiu Ying items: 52*48ed447cSLiu Ying - description: pixel clock 53*48ed447cSLiu Ying - description: bypass clock 54*48ed447cSLiu Ying 55*48ed447cSLiu Ying clock-names: 56*48ed447cSLiu Ying items: 57*48ed447cSLiu Ying - const: pixel 58*48ed447cSLiu Ying - const: bypass 59*48ed447cSLiu Ying 60*48ed447cSLiu Ying power-domains: 61*48ed447cSLiu Ying maxItems: 1 62*48ed447cSLiu Ying 63*48ed447cSLiu Ying fsl,companion-ldb: 64*48ed447cSLiu Ying $ref: /schemas/types.yaml#/definitions/phandle 65*48ed447cSLiu Ying description: | 66*48ed447cSLiu Ying A phandle which points to companion LDB which is used in LDB split mode. 67*48ed447cSLiu Ying 68*48ed447cSLiu YingpatternProperties: 69*48ed447cSLiu Ying "^channel@[0-1]$": 70*48ed447cSLiu Ying type: object 71*48ed447cSLiu Ying description: Represents a channel of LDB. 72*48ed447cSLiu Ying 73*48ed447cSLiu Ying properties: 74*48ed447cSLiu Ying "#address-cells": 75*48ed447cSLiu Ying const: 1 76*48ed447cSLiu Ying 77*48ed447cSLiu Ying "#size-cells": 78*48ed447cSLiu Ying const: 0 79*48ed447cSLiu Ying 80*48ed447cSLiu Ying reg: 81*48ed447cSLiu Ying description: The channel index. 82*48ed447cSLiu Ying enum: [ 0, 1 ] 83*48ed447cSLiu Ying 84*48ed447cSLiu Ying phys: 85*48ed447cSLiu Ying description: A phandle to the phy module representing the LVDS PHY. 86*48ed447cSLiu Ying maxItems: 1 87*48ed447cSLiu Ying 88*48ed447cSLiu Ying phy-names: 89*48ed447cSLiu Ying const: lvds_phy 90*48ed447cSLiu Ying 91*48ed447cSLiu Ying port@0: 92*48ed447cSLiu Ying $ref: /schemas/graph.yaml#/properties/port 93*48ed447cSLiu Ying description: Input port of the channel. 94*48ed447cSLiu Ying 95*48ed447cSLiu Ying port@1: 96*48ed447cSLiu Ying $ref: /schemas/graph.yaml#/properties/port 97*48ed447cSLiu Ying description: Output port of the channel. 98*48ed447cSLiu Ying 99*48ed447cSLiu Ying required: 100*48ed447cSLiu Ying - "#address-cells" 101*48ed447cSLiu Ying - "#size-cells" 102*48ed447cSLiu Ying - reg 103*48ed447cSLiu Ying - phys 104*48ed447cSLiu Ying - phy-names 105*48ed447cSLiu Ying 106*48ed447cSLiu Ying additionalProperties: false 107*48ed447cSLiu Ying 108*48ed447cSLiu Yingrequired: 109*48ed447cSLiu Ying - compatible 110*48ed447cSLiu Ying - "#address-cells" 111*48ed447cSLiu Ying - "#size-cells" 112*48ed447cSLiu Ying - clocks 113*48ed447cSLiu Ying - clock-names 114*48ed447cSLiu Ying - power-domains 115*48ed447cSLiu Ying - channel@0 116*48ed447cSLiu Ying - channel@1 117*48ed447cSLiu Ying 118*48ed447cSLiu YingallOf: 119*48ed447cSLiu Ying - if: 120*48ed447cSLiu Ying properties: 121*48ed447cSLiu Ying compatible: 122*48ed447cSLiu Ying contains: 123*48ed447cSLiu Ying const: fsl,imx8qm-ldb 124*48ed447cSLiu Ying then: 125*48ed447cSLiu Ying properties: 126*48ed447cSLiu Ying fsl,companion-ldb: false 127*48ed447cSLiu Ying 128*48ed447cSLiu YingadditionalProperties: false 129*48ed447cSLiu Ying 130*48ed447cSLiu Yingexamples: 131*48ed447cSLiu Ying - | 132*48ed447cSLiu Ying #include <dt-bindings/firmware/imx/rsrc.h> 133*48ed447cSLiu Ying ldb { 134*48ed447cSLiu Ying #address-cells = <1>; 135*48ed447cSLiu Ying #size-cells = <0>; 136*48ed447cSLiu Ying compatible = "fsl,imx8qxp-ldb"; 137*48ed447cSLiu Ying clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>, 138*48ed447cSLiu Ying <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>; 139*48ed447cSLiu Ying clock-names = "pixel", "bypass"; 140*48ed447cSLiu Ying power-domains = <&pd IMX_SC_R_LVDS_0>; 141*48ed447cSLiu Ying 142*48ed447cSLiu Ying channel@0 { 143*48ed447cSLiu Ying #address-cells = <1>; 144*48ed447cSLiu Ying #size-cells = <0>; 145*48ed447cSLiu Ying reg = <0>; 146*48ed447cSLiu Ying phys = <&mipi_lvds_0_phy>; 147*48ed447cSLiu Ying phy-names = "lvds_phy"; 148*48ed447cSLiu Ying 149*48ed447cSLiu Ying port@0 { 150*48ed447cSLiu Ying reg = <0>; 151*48ed447cSLiu Ying 152*48ed447cSLiu Ying mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint { 153*48ed447cSLiu Ying remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>; 154*48ed447cSLiu Ying }; 155*48ed447cSLiu Ying }; 156*48ed447cSLiu Ying }; 157*48ed447cSLiu Ying 158*48ed447cSLiu Ying channel@1 { 159*48ed447cSLiu Ying #address-cells = <1>; 160*48ed447cSLiu Ying #size-cells = <0>; 161*48ed447cSLiu Ying reg = <1>; 162*48ed447cSLiu Ying phys = <&mipi_lvds_0_phy>; 163*48ed447cSLiu Ying phy-names = "lvds_phy"; 164*48ed447cSLiu Ying 165*48ed447cSLiu Ying port@0 { 166*48ed447cSLiu Ying reg = <0>; 167*48ed447cSLiu Ying 168*48ed447cSLiu Ying mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint { 169*48ed447cSLiu Ying remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>; 170*48ed447cSLiu Ying }; 171*48ed447cSLiu Ying }; 172*48ed447cSLiu Ying }; 173*48ed447cSLiu Ying }; 174