# Copyright (c) 2021, Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

description: Generic LED matrix driven by nRF SoC GPIOs

compatible: "nordic,nrf-led-matrix"

include: display-controller.yaml

properties:
  row-gpios:
    type: phandle-array
    required: true
    description: |
      Array of GPIOs to be used as rows of the matrix.

  col-gpios:
    type: phandle-array
    required: true
    description: |
      Array of GPIOs to be used as columns of the matrix.

  pixel-mapping:
    type: uint8-array
    required: true
    description: |
      Array of bytes that specify which rows and columns of the matrix
      control its particular pixels, line by line. Each byte in this
      array corresponds to one pixel of the matrix and specifies the row
      index in the high nibble and the column index in the low nibble.

      For example, the following snippet (from the bbc_microbit board DTS):

        width = <5>;
        height = <5>;
        pixel-mapping = [00 13 01 14 02
                         23 24 25 26 27
                         ...

      specifies that:
      - pixel (0,0) is controlled by row 0 and column 0
      - pixel (1,0) is controlled by row 1 and column 3
      - pixel (0,1) is controlled by row 2 and column 3
      - pixel (1,1) is controlled by row 2 and column 4
      and so on.

  refresh-frequency:
    type: int
    required: true
    description: |
      Frequency of refreshing the matrix, in Hz.

  timer:
    type: phandle
    required: true
    description: |
      Reference to a TIMER instance for controlling refreshing of the matrix.

  pwm:
    type: phandle
    description: |
      Reference to a PWM instance for generating pulse signals on column
      GPIOs. If not provided, GPIOTE and PPI channels are allocated and
      used instead for generating those pulses.

  pixel-group-size:
    type: int
    required: true
    description: |
      This value specifies the maximum number of LEDs in one row that can
      be lit simultaneously.
      If set to 1, only a single LED is turned on in a particular time slot.
      Bigger values increase the maximum achievable brightness of the LEDs
      and lower the CPU load by decreasing the frequency of execution of
      the timer interrupt handler.
      In case GPIOTE and PPI channels are used for generating the pixel pulse
      signals, the number of channels that need to be allocated is equal to
      this value.
      If GPIOTE and PPI channels are used, the upper limit for the value is
      defined by the number of CC channels in the used timer minus one.
      If PWM is used, the upper limit is the number of PWM channels.
