# Copyright (c) 2022 Andreas Sandberg
# Copyright (c) 2020, Phytec Messtechnik GmbH
# SPDX-License-Identifier: Apache-2.0

description: UltraChip UC81xx EPD display controller common properties

include: [spi-device.yaml, display-controller.yaml]

properties:
  reset-gpios:
    type: phandle-array
    required: true
    description: RESET pin.

      The RESET pin of UC81xx is active low.
      If connected directly the MCU pin should be configured
      as active low.

  dc-gpios:
    type: phandle-array
    required: true
    description: DC pin.

      The DC pin of UC81xx is active low (transmission command byte).
      If connected directly the MCU pin should be configured
      as active low.

  busy-gpios:
    type: phandle-array
    required: true
    description: BUSY pin.

      The BUSY pin of UC81xx is active low.
      If connected directly the MCU pin should be configured
      as active low.

  softstart:
    type: uint8-array
    description: Booster Soft Start (BTST) values

child-binding:
  description: |
    Child nodes describe refresh profiles. Each refresh profile
    specifies a set of voltages used to drive the refresh
    cycle. Refresh nodes are optional and are used to override
    defaults loaded from the controllers OTP memory.

    The partial refresh profile is used when performing a partial
    refresh (writes while blanking is off). Since the controller
    always supports partial updates, the driver uses the full refresh
    profile and scans the partial window corresponding to the write if
    no partial profile has been provided. An empty profile can be used
    to use the reset values from OTP instead of the values specified
    in the full profile.

    The driver typically looks for the following child nodes:

      - 'full' - Normal / full refresh.
      - 'partial' - Partial refresh, defaults to the values in the
        full profile if not present.

  properties:
    pwr:
      type: uint8-array
      description: Power Setting (PWR) values

    cdi:
      type: int
      description: |
        VCOM and data interval value. This value is optional but must
        be provided to enable border refresh control.

    tcon:
      type: int
      description: TCON setting value

    pll:
      type: int
      description: PLL / frame rate control

    vdcs:
      type: int
      description: VCOM DC settings

    lutc:
      type: uint8-array
      description: VCOM LUT

    lutww:
      type: uint8-array
      description: White-to-white LUT

    lutkw:
      type: uint8-array
      description: Black-to-white LUT

    lutwk:
      type: uint8-array
      description: White-to-black LUT

    lutkk:
      type: uint8-array
      description: White-to-black LUT

    lutbd:
      type: uint8-array
      description: Border LUT
