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

title: ST-Ericsson Multi Channel Display Engine MCDE

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

properties:
  compatible:
    const: ste,mcde

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    description: an array of the MCDE clocks
    items:
      - description: MCDECLK (main MCDE clock)
      - description: LCDCLK (LCD clock)
      - description: PLLDSI (HDMI clock)

  clock-names:
    items:
      - const: mcde
      - const: lcd
      - const: hdmi

  resets:
    maxItems: 1

  epod-supply:
    description: a phandle to the EPOD regulator

  vana-supply:
    description: a phandle to the analog voltage regulator

  port:
    $ref: /schemas/graph.yaml#/properties/port
    description:
      A DPI port node

  "#address-cells":
    const: 1

  "#size-cells":
    const: 1

  ranges: true

patternProperties:
  "^dsi@[0-9a-f]+$":
    description: subnodes for the three DSI host adapters
    type: object
    $ref: dsi-controller.yaml#

    properties:
      compatible:
        const: ste,mcde-dsi

      reg:
        maxItems: 1

      vana-supply:
        description: a phandle to the analog voltage regulator

      clocks:
        description: phandles to the high speed and low power (energy save) clocks
          the high speed clock is not present on the third (dsi2) block, so it
          should only have the "lp" clock
        minItems: 1
        maxItems: 2

      clock-names:
        oneOf:
          - items:
              - const: hs
              - const: lp
          - items:
              - const: lp

    required:
      - compatible
      - reg
      - vana-supply
      - clocks
      - clock-names

    unevaluatedProperties: false

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - epod-supply
  - vana-supply

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/mfd/dbx500-prcmu.h>
    #include <dt-bindings/gpio/gpio.h>

    mcde@a0350000 {
      compatible = "ste,mcde";
      reg = <0xa0350000 0x1000>;
      interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
      epod-supply = <&db8500_b2r2_mcde_reg>;
      vana-supply = <&ab8500_ldo_ana_reg>;
      clocks = <&prcmu_clk PRCMU_MCDECLK>,
               <&prcmu_clk PRCMU_LCDCLK>,
               <&prcmu_clk PRCMU_PLLDSI>;
      clock-names = "mcde", "lcd", "hdmi";
      #address-cells = <1>;
      #size-cells = <1>;
      ranges;

      dsi0: dsi@a0351000 {
        compatible = "ste,mcde-dsi";
        reg = <0xa0351000 0x1000>;
        vana-supply = <&ab8500_ldo_ana_reg>;
        clocks = <&prcmu_clk PRCMU_DSI0CLK>, <&prcmu_clk PRCMU_DSI0ESCCLK>;
        clock-names = "hs", "lp";
        #address-cells = <1>;
        #size-cells = <0>;

        panel@0 {
          compatible = "samsung,s6d16d0";
          reg = <0>;
          vdd1-supply = <&ab8500_ldo_aux1_reg>;
          reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
        };
      };

      dsi1: dsi@a0352000 {
        compatible = "ste,mcde-dsi";
        reg = <0xa0352000 0x1000>;
        vana-supply = <&ab8500_ldo_ana_reg>;
        clocks = <&prcmu_clk PRCMU_DSI1CLK>, <&prcmu_clk PRCMU_DSI1ESCCLK>;
        clock-names = "hs", "lp";
        #address-cells = <1>;
        #size-cells = <0>;
      };

      dsi2: dsi@a0353000 {
        compatible = "ste,mcde-dsi";
        reg = <0xa0353000 0x1000>;
        vana-supply = <&ab8500_ldo_ana_reg>;
        /* This DSI port only has the Low Power / Energy Save clock */
        clocks = <&prcmu_clk PRCMU_DSI2ESCCLK>;
        clock-names = "lp";
        #address-cells = <1>;
        #size-cells = <0>;
      };
    };

...