| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/display/bridge/fsl,imx8qxp-ldb.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Freescale i.MX8qm/qxp LVDS Display Bridge |
| |
| maintainers: |
| - Liu Ying <victor.liu@nxp.com> |
| |
| description: | |
| The Freescale i.MX8qm/qxp LVDS Display Bridge(LDB) has two channels. |
| |
| The i.MX8qm/qxp LDB is controlled by Control and Status Registers(CSR) module. |
| The CSR module, as a system controller, contains the LDB's configuration |
| registers. |
| |
| For i.MX8qxp LDB, each channel supports up to 24bpp parallel input color |
| format and can map the input to VESA or JEIDA standards. The two channels |
| cannot be used simultaneously, that is to say, the user should pick one of |
| them to use. Two LDB channels from two LDB instances can work together in |
| LDB split mode to support a dual link LVDS display. The channel indexes |
| have to be different. Channel0 outputs odd pixels and channel1 outputs |
| even pixels. |
| |
| For i.MX8qm LDB, each channel additionally supports up to 30bpp parallel |
| input color format. The two channels can be used simultaneously, either |
| in dual mode or split mode. In dual mode, the two channels output identical |
| data. In split mode, channel0 outputs odd pixels and channel1 outputs even |
| pixels. |
| |
| A side note is that i.MX8qm/qxp LDB is officially called pixel mapper in |
| the SoC reference manuals. The pixel mapper uses logic of LDBs embedded in |
| i.MX6qdl/sx SoCs, i.e., it is essentially based on them. To keep the naming |
| consistency, this binding calls it LDB. |
| |
| properties: |
| compatible: |
| enum: |
| - fsl,imx8qm-ldb |
| - fsl,imx8qxp-ldb |
| |
| "#address-cells": |
| const: 1 |
| |
| "#size-cells": |
| const: 0 |
| |
| clocks: |
| items: |
| - description: pixel clock |
| - description: bypass clock |
| |
| clock-names: |
| items: |
| - const: pixel |
| - const: bypass |
| |
| power-domains: |
| maxItems: 1 |
| |
| fsl,companion-ldb: |
| $ref: /schemas/types.yaml#/definitions/phandle |
| description: | |
| A phandle which points to companion LDB which is used in LDB split mode. |
| |
| patternProperties: |
| "^channel@[0-1]$": |
| type: object |
| description: Represents a channel of LDB. |
| |
| properties: |
| "#address-cells": |
| const: 1 |
| |
| "#size-cells": |
| const: 0 |
| |
| reg: |
| description: The channel index. |
| enum: [ 0, 1 ] |
| |
| phys: |
| description: A phandle to the phy module representing the LVDS PHY. |
| maxItems: 1 |
| |
| phy-names: |
| const: lvds_phy |
| |
| port@0: |
| $ref: /schemas/graph.yaml#/properties/port |
| description: Input port of the channel. |
| |
| port@1: |
| $ref: /schemas/graph.yaml#/properties/port |
| description: Output port of the channel. |
| |
| required: |
| - "#address-cells" |
| - "#size-cells" |
| - reg |
| - phys |
| - phy-names |
| |
| additionalProperties: false |
| |
| required: |
| - compatible |
| - "#address-cells" |
| - "#size-cells" |
| - clocks |
| - clock-names |
| - power-domains |
| - channel@0 |
| - channel@1 |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: fsl,imx8qm-ldb |
| then: |
| properties: |
| fsl,companion-ldb: false |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/firmware/imx/rsrc.h> |
| ldb { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| compatible = "fsl,imx8qxp-ldb"; |
| clocks = <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_MISC2>, |
| <&clk IMX_SC_R_LVDS_0 IMX_SC_PM_CLK_BYPASS>; |
| clock-names = "pixel", "bypass"; |
| power-domains = <&pd IMX_SC_R_LVDS_0>; |
| |
| channel@0 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <0>; |
| phys = <&mipi_lvds_0_phy>; |
| phy-names = "lvds_phy"; |
| |
| port@0 { |
| reg = <0>; |
| |
| mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi: endpoint { |
| remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0>; |
| }; |
| }; |
| }; |
| |
| channel@1 { |
| #address-cells = <1>; |
| #size-cells = <0>; |
| reg = <1>; |
| phys = <&mipi_lvds_0_phy>; |
| phy-names = "lvds_phy"; |
| |
| port@0 { |
| reg = <0>; |
| |
| mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi: endpoint { |
| remote-endpoint = <&mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1>; |
| }; |
| }; |
| }; |
| }; |