# 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
