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

title: Arm Mali Display Processor (Mali-DP)

maintainers:
  - Liviu Dudau <Liviu.Dudau@arm.com>
  - Andre Przywara <andre.przywara@arm.com>

description:
  The following bindings apply to a family of Display Processors sold as
  licensable IP by ARM Ltd. The bindings describe the Mali DP500, DP550 and
  DP650 processors that offer multiple composition layers, support for
  rotation and scaling output.

properties:
  compatible:
    enum:
      - arm,mali-dp500
      - arm,mali-dp550
      - arm,mali-dp650

  reg:
    maxItems: 1

  interrupts:
    items:
      - description:
          The interrupt used by the Display Engine (DE). Can be shared with
          the interrupt for the Scaling Engine (SE), but it will have to be
          listed individually.
      - description:
          The interrupt used by the Scaling Engine (SE). Can be shared with
          the interrupt for the Display Engine (DE), but it will have to be
          listed individually.

  interrupt-names:
    items:
      - const: DE
      - const: SE

  clock-names:
    items:
      - const: pxlclk
      - const: mclk
      - const: aclk
      - const: pclk

  clocks:
    items:
      - description: the pixel clock feeding the output PLL of the processor
      - description: the main processor clock
      - description: the AXI interface clock
      - description: the APB interface clock

  memory-region:
    maxItems: 1
    description:
      Phandle to a node describing memory to be used for the framebuffer.
      If not present, the framebuffer may be located anywhere in memory.

  arm,malidp-output-port-lines:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Number of output lines/bits for each colour channel.
    items:
      - description: number of output lines for the red channel (R)
      - description: number of output lines for the green channel (G)
      - description: number of output lines for the blue channel (B)

  arm,malidp-arqos-value:
    $ref: /schemas/types.yaml#/definitions/uint32
    description:
      Quality-of-Service value for the display engine FIFOs, to write
      into the RQOS register of the DP500.
      See the ARM Mali-DP500 TRM for details on the encoding.
      If omitted, the RQOS register will not be changed.

  port:
    $ref: /schemas/graph.yaml#/properties/port
    unevaluatedProperties: false
    description:
      Output endpoint of the controller, connecting the LCD panel signals.

additionalProperties: false

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - clocks
  - clock-names
  - port
  - arm,malidp-output-port-lines

examples:
  - |
    dp0: malidp@6f200000 {
        compatible = "arm,mali-dp650";
        reg = <0x6f200000 0x20000>;
        memory-region = <&display_reserved>;
        interrupts = <168>, <168>;
        interrupt-names = "DE", "SE";
        clocks = <&oscclk2>, <&fpgaosc0>, <&fpgaosc1>, <&fpgaosc1>;
        clock-names = "pxlclk", "mclk", "aclk", "pclk";
        arm,malidp-output-port-lines = /bits/ 8 <8 8 8>;
        arm,malidp-arqos-value = <0xd000d000>;

        port {
            dp0_output: endpoint {
                remote-endpoint = <&tda998x_2_input>;
            };
        };
    };
...