# Copyright (c) 2018, Google LLC.
# SPDX-License-Identifier: Apache-2.0

description: Atmel SAM0 SERCOM SPI controller

compatible: "atmel,sam0-spi"

include:
  - name: spi-controller.yaml
  - name: pinctrl-device.yaml

properties:
  reg:
    required: true

  clocks:
    required: true

  clock-names:
    required: true

  dipo:
    type: int
    required: true
    description: Data In Pinout

  dopo:
    type: int
    required: true
    description: Data Out Pinout

  dmas:
    description: |
      Optional TX & RX dma specifiers.  Each specifier will have a phandle
      reference to the dmac controller, the channel number, and peripheral
      trigger source.

      For example dmas for TX, RX on SERCOM3
         dmas = <&dmac 0 0xb>, <&dmac 1 0xa>;

  dma-names:
    description: |
      Required if the dmas property exists.  This should be "tx" and "rx"
      to match the dmas property.

      For example
         dma-names = "tx", "rx";
