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

# Common fields for Nordic nRF family SPI peripherals

include: [spi-controller.yaml, pinctrl-device.yaml, nordic-clockpin.yaml]

properties:
  reg:
    required: true

  interrupts:
    required: true

  pinctrl-0:
    required: true

  pinctrl-names:
    required: true

  max-frequency:
    type: int
    required: true
    description: |
      Maximum data rate the SPI peripheral can be driven at, in Hz. This
      property must be set at SoC level DTS files.

  overrun-character:
    default: 0xff
    description: |
      Configurable, defaults to 0xff (line high), the most common value used
      in SPI transfers.

  easydma-maxcnt-bits:
    type: int
    required: true
    description: |
      Maximum number of bits available in the EasyDMA MAXCNT register. This
      property must be set at SoC level DTS files.

  wake-gpios:
    type: phandle-array
    description: |
      Optional bi-directional line that allows SPI master to indicate to SPI
      slave (by setting the line high) that a transfer is to occur, so that
      the latter can prepare (and indicate its readiness) for handling that
      transfer when it is actually needed, and stay in any desired low-power
      state otherwise.
      The protocol is as follows:
      - initially, SPI slave configures its WAKE line pin as an input and SPI
        master keeps the line in the low state
      - when a transfer is to be performed, SPI master configures its WAKE
        line pin as an input with pull-up; this changes the line state to
        high but allows SPI slave to override that state
      - when SPI slave detects the high state of the WAKE line, it prepares
        for the transfer and when everything is ready, it drives the WAKE
        line low by configuring its pin as an output
      - the generated high-to-low transition on the WAKE line is a signal
        to SPI master that it can proceed with the transfer
      - SPI slave releases the line by configuring its pin back to be an input
        and SPI master again keeps the line in the low state
      Please note that the line must be configured and properly handled on
      both sides for the mechanism to work correctly.
