# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/soc/imx/fsl,imx8mp-media-blk-ctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: NXP i.MX8MP Media Block Control

maintainers:
  - Paul Elder <paul.elder@ideasonboard.com>

description:
  The i.MX8MP Media Block Control (MEDIA BLK_CTRL) is a top-level peripheral
  providing access to the NoC and ensuring proper power sequencing of the
  peripherals within the MEDIAMIX domain.

properties:
  compatible:
    items:
      - const: fsl,imx8mp-media-blk-ctrl
      - const: syscon

  reg:
    maxItems: 1

  '#address-cells':
    const: 1

  '#size-cells':
    const: 1

  '#power-domain-cells':
    const: 1

  power-domains:
    maxItems: 10

  power-domain-names:
    items:
      - const: bus
      - const: mipi-dsi1
      - const: mipi-csi1
      - const: lcdif1
      - const: isi
      - const: mipi-csi2
      - const: lcdif2
      - const: isp
      - const: dwe
      - const: mipi-dsi2

  clocks:
    items:
      - description: The APB clock
      - description: The AXI clock
      - description: The pixel clock for the first CSI2 receiver (aclk)
      - description: The pixel clock for the second CSI2 receiver (aclk)
      - description: The pixel clock for the first LCDIF (pix_clk)
      - description: The pixel clock for the second LCDIF (pix_clk)
      - description: The core clock for the ISP (clk)
      - description: The MIPI-PHY reference clock used by DSI

  clock-names:
    items:
      - const: apb
      - const: axi
      - const: cam1
      - const: cam2
      - const: disp1
      - const: disp2
      - const: isp
      - const: phy

  interconnects:
    maxItems: 8

  interconnect-names:
    items:
      - const: lcdif-rd
      - const: lcdif-wr
      - const: isi0
      - const: isi1
      - const: isi2
      - const: isp0
      - const: isp1
      - const: dwe

  bridge@5c:
    type: object
    $ref: /schemas/display/bridge/fsl,ldb.yaml#
    unevaluatedProperties: false

required:
  - compatible
  - reg
  - '#address-cells'
  - '#size-cells'
  - '#power-domain-cells'
  - power-domains
  - power-domain-names
  - clocks
  - clock-names

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/imx8mp-clock.h>
    #include <dt-bindings/power/imx8mp-power.h>

    blk-ctrl@32ec0000 {
        compatible = "fsl,imx8mp-media-blk-ctrl", "syscon";
        reg = <0x32ec0000 0x138>;
        power-domains = <&mediamix_pd>, <&mipi_phy1_pd>, <&mipi_phy1_pd>,
                        <&mediamix_pd>, <&mediamix_pd>, <&mipi_phy2_pd>,
                        <&mediamix_pd>, <&ispdwp_pd>, <&ispdwp_pd>,
                        <&mipi_phy2_pd>;
        power-domain-names = "bus", "mipi-dsi1", "mipi-csi1", "lcdif1", "isi",
                             "mipi-csi2", "lcdif2", "isp", "dwe", "mipi-dsi2";
        clocks = <&clk IMX8MP_CLK_MEDIA_APB_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_AXI_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_CAM1_PIX_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_CAM2_PIX_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_DISP1_PIX_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_DISP2_PIX_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_ISP_ROOT>,
                 <&clk IMX8MP_CLK_MEDIA_MIPI_PHY1_REF_ROOT>;
        clock-names = "apb", "axi", "cam1", "cam2", "disp1", "disp2",
                      "isp", "phy";
        #power-domain-cells = <1>;
        #address-cells = <1>;
        #size-cells = <1>;

        bridge@5c {
            compatible = "fsl,imx8mp-ldb";
            reg = <0x5c 0x4>, <0x128 0x4>;
            reg-names = "ldb", "lvds";
            clocks = <&clk IMX8MP_CLK_MEDIA_LDB>;
            clock-names = "ldb";

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

                port@0 {
                    reg = <0>;

                    ldb_from_lcdif2: endpoint {
                        remote-endpoint = <&lcdif2_to_ldb>;
                    };
                };

                port@1 {
                    reg = <1>;

                    ldb_lvds_ch0: endpoint {
                        remote-endpoint = <&ldb_to_lvdsx4panel>;
                    };
                };

                port@2 {
                    reg = <2>;

                    ldb_lvds_ch1: endpoint {
                    };
                };
            };
        };
    };
...
