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

# Common fields for Nordic nRF family SPI peripherals

include: spi-controller.yaml

properties:
    reg:
      required: true

    interrupts:
      required: true

    sck-pin:
      type: int
      required: true
      description: |
        The SCK pin to use.

        For pins P0.0 through P0.31, use the pin number. For example,
        to use P0.16 for SCK, set:

            sck-pin = <16>;

        For pins P1.0 through P1.31, add 32 to the pin number. For
        example, to use P1.2 for SCK, set:

            sck-pin = <34>;  /* 32 + 2 */

    mosi-pin:
      type: int
      required: true
      description: |
        The MOSI pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    miso-pin:
      type: int
      required: true
      description: |
        The MISO pin to use. The pin numbering scheme is the same as
        the sck-pin property's.
