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

# Common fields for SPI controllers

include: base.yaml

bus: spi

properties:
    clock-frequency:
      type: int
      required: false
      description: |
        Clock frequency the SPI peripheral is being driven at, in Hz.
    "#address-cells":
      required: true
      const: 1
    "#size-cells":
      required: true
      const: 0
    cs-gpios:
      type: phandle-array
      required: false
      description: |
        An array of chip select GPIOs to use. Each element
        in the array specifies a GPIO. The index in the array
        corresponds to the child node that the CS gpio controls.

        Example:

          spi@... {
                  cs-gpios = <&gpio0 23 GPIO_ACTIVE_LOW>,
                                <&gpio1 10 GPIO_ACTIVE_LOW>,
                                ...;

                  spi-device@0 {
                          reg = <0>;
                          ...
                  };
                  spi-device@1 {
                          reg = <1>;
                          ...
                  };
                  ...
          };

        The child node "spi-device@0" specifies a SPI device with
        chip select controller gpio0, pin 23, and devicetree
        GPIO flags GPIO_ACTIVE_LOW. Similarly, "spi-device@1" has CS GPIO
        controller gpio1, pin 10, and flags GPIO_ACTIVE_LOW. Additional
        devices can be configured in the same way.

        If unsure about the flags cell, GPIO_ACTIVE_LOW is generally a safe
        choice for a typical "CSn" pin. GPIO_ACTIVE_HIGH may be used if
        intervening hardware inverts the signal to the peripheral device or
        the line itself is active high.

        If this property is not defined, no chip select GPIOs are set.
        SPI controllers with dedicated CS pins do not need to define
        the cs-gpios property.
