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

title: Sharp Microelectronics 7.9" WQXGA TFT LCD panel

maintainers:
  - Svyatoslav Ryhel <clamor95@gmail.com>

description: >
  This panel requires a dual-channel DSI host to operate and it supports
  only left-right split mode, where each channel drives the left or right
  half of the screen and only video mode.

  Each of the DSI channels controls a separate DSI peripheral.
  The peripheral driven by the first link (DSI-LINK1), left one, is
  considered the primary peripheral and controls the device.

allOf:
  - $ref: panel-common-dual.yaml#

properties:
  compatible:
    const: sharp,lq079l1sx01

  reg:
    maxItems: 1

  avdd-supply:
    description: regulator that supplies the analog voltage

  vddio-supply:
    description: regulator that supplies the I/O voltage

  vsp-supply:
    description: positive boost supply regulator

  vsn-supply:
    description: negative boost supply regulator

  reset-gpios:
    maxItems: 1

  backlight: true
  ports: true

required:
  - compatible
  - reg
  - avdd-supply
  - vddio-supply
  - ports

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

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

        panel@0 {
            compatible = "sharp,lq079l1sx01";
            reg = <0>;

            reset-gpios = <&gpio 59 GPIO_ACTIVE_LOW>;

            avdd-supply = <&avdd_lcd>;
            vddio-supply = <&vdd_lcd_io>;
            vsp-supply = <&vsp_5v5_lcd>;
            vsn-supply = <&vsn_5v5_lcd>;

            backlight = <&backlight>;

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

                port@0 {
                    reg = <0>;
                    panel_in0: endpoint {
                        remote-endpoint = <&dsi0_out>;
                    };
                };

                port@1 {
                    reg = <1>;
                    panel_in1: endpoint {
                        remote-endpoint = <&dsi1_out>;
                    };
                };
            };
        };
    };
...
