# 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.
