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

properties:
    reg:
      required: true

    interrupts:
      required: true

    sck-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        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: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The MOSI pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    miso-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The MISO pin to use. The pin numbering scheme is the same as
        the sck-pin property's.
