# Copyright (c) 2018, I-SENSE group of ICCS
# SPDX-License-Identifier: Apache-2.0

# Common fields for SPI devices

include: [base.yaml, power.yaml]

on-bus: spi

properties:
  reg:
    required: true
  spi-max-frequency:
    type: int
    required: true
    description: Maximum clock frequency of device's SPI interface in Hz
  duplex:
    type: int
    default: 0
    description: |
      Duplex mode, full or half. By default it's always full duplex thus 0
      as this is, by far, the most common mode.
      Use the macros not the actual enum value, here is the concordance
      list (see dt-bindings/spi/spi.h)
        0    SPI_FULL_DUPLEX
        2048 SPI_HALF_DUPLEX
    enum:
      - 0
      - 2048
  frame-format:
    type: int
    default: 0
    description: |
      Motorola or TI frame format. By default it's always Motorola's,
      thus 0 as this is, by far, the most common format.
      Use the macros not the actual enum value, here is the concordance
      list (see dt-bindings/spi/spi.h)
        0     SPI_FRAME_FORMAT_MOTOROLA
        32768 SPI_FRAME_FORMAT_TI
    enum:
      - 0
      - 32768
  spi-cpol:
    type: boolean
    description: |
      SPI clock polarity which indicates the clock idle state.
      If it is used, the clock idle state is logic high; otherwise, low.
  spi-cpha:
    type: boolean
    description: |
      SPI clock phase that indicates on which edge data is sampled.
      If it is used, data is sampled on the second edge; otherwise, on the first edge.
  spi-hold-cs:
    type: boolean
    description: |
      In some cases, it is necessary for the master to manage SPI chip select
      under software control, so that multiple spi transactions can be performed
      without releasing it. A typical use case is variable length SPI packets
      where the first spi transaction reads the length and the second spi transaction
      reads length bytes.
