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

title: Sharp Memory LCD panels

maintainers:
  - Alex Lanzano <lanzano.alex@gmail.com>

description:
  Sharp Memory LCDs are a series of monochrome displays that operate over
  a SPI bus. The displays require a signal (VCOM) to be generated to prevent
  DC bias build up resulting in pixels being unable to change. Three modes
  can be used to provide the VCOM signal ("software", "external", "pwm").

properties:
  compatible:
    enum:
      - sharp,ls010b7dh04
      - sharp,ls011b7dh03
      - sharp,ls012b7dd01
      - sharp,ls013b7dh03
      - sharp,ls013b7dh05
      - sharp,ls018b7dh02
      - sharp,ls027b7dh01
      - sharp,ls027b7dh01a
      - sharp,ls032b7dd02
      - sharp,ls044q7dh01

  reg:
    maxItems: 1

  spi-max-frequency:
    maximum: 2000000

  sharp,vcom-mode:
    $ref: /schemas/types.yaml#/definitions/string
    description: |
      software - This mode relies on a software operation to send a
      "maintain display" message to the display, toggling the vcom
      bit on and off with each message

      external - This mode relies on an external clock to generate
      the signal on the EXTCOMM pin

      pwm - This mode relies on a pwm device to generate the signal
      on the EXTCOMM pin

    enum: [software, external, pwm]

  enable-gpios: true

  pwms:
    maxItems: 1
    description: External VCOM signal

required:
  - compatible
  - reg
  - sharp,vcom-mode

allOf:
  - $ref: panel/panel-common.yaml#
  - $ref: /schemas/spi/spi-peripheral-props.yaml#

  - if:
      properties:
        sharp,vcom-mode:
          const: pwm
    then:
      required:
        - pwms

unevaluatedProperties: false

examples:
  - |
    spi {
        #address-cells = <1>;
        #size-cells = <0>;

        display@0 {
            compatible = "sharp,ls013b7dh03";
            reg = <0>;
            spi-cs-high;
            spi-max-frequency = <1000000>;
            sharp,vcom-mode = "software";
        };
    };
...
