# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/bridge/fsl,imx8qxp-pxl2dpi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Freescale i.MX8qxp Pixel Link to Display Pixel Interface

maintainers:
  - Liu Ying <victor.liu@nxp.com>

description: |
  The Freescale i.MX8qxp Pixel Link to Display Pixel Interface(PXL2DPI)
  interfaces the pixel link 36-bit data output and the DSI controller’s
  MIPI-DPI 24-bit data input, and inputs of LVDS Display Bridge(LDB) module
  used in LVDS mode, to remap the pixel color codings between those modules.
  This module is purely combinatorial.

  The i.MX8qxp PXL2DPI is controlled by Control and Status Registers(CSR) module.
  The CSR module, as a system controller, contains the PXL2DPI's configuration
  register.

properties:
  compatible:
    const: fsl,imx8qxp-pxl2dpi

  fsl,sc-resource:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: The SCU resource ID associated with this PXL2DPI instance.

  power-domains:
    maxItems: 1

  fsl,companion-pxl2dpi:
    $ref: /schemas/types.yaml#/definitions/phandle
    description: |
      A phandle which points to companion PXL2DPI which is used by downstream
      LVDS Display Bridge(LDB) in split mode.

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: The PXL2DPI input port node from pixel link.

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: The PXL2DPI output port node to downstream bridge.

    required:
      - port@0
      - port@1

required:
  - compatible
  - fsl,sc-resource
  - power-domains
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/firmware/imx/rsrc.h>
    pxl2dpi {
        compatible = "fsl,imx8qxp-pxl2dpi";
        fsl,sc-resource = <IMX_SC_R_MIPI_0>;
        power-domains = <&pd IMX_SC_R_MIPI_0>;

        ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <0>;

                mipi_lvds_0_pxl2dpi_dc_pixel_link0: endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&dc_pixel_link0_mipi_lvds_0_pxl2dpi>;
                };

                mipi_lvds_0_pxl2dpi_dc_pixel_link1: endpoint@1 {
                     reg = <1>;
                     remote-endpoint = <&dc_pixel_link1_mipi_lvds_0_pxl2dpi>;
                };
            };

            port@1 {
                #address-cells = <1>;
                #size-cells = <0>;
                reg = <1>;

                mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch0: endpoint@0 {
                    reg = <0>;
                    remote-endpoint = <&mipi_lvds_0_ldb_ch0_mipi_lvds_0_pxl2dpi>;
                };

                mipi_lvds_0_pxl2dpi_mipi_lvds_0_ldb_ch1: endpoint@1 {
                    reg = <1>;
                    remote-endpoint = <&mipi_lvds_0_ldb_ch1_mipi_lvds_0_pxl2dpi>;
                };
            };
        };
    };