Commit d6a4371c authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Rob Herring
Browse files

spi: dt-bindings: qcom,spi-qup: convert to dtschema



Convert the Qualcomm Universal Peripheral (QUP) Serial Peripheral
Interface (SPI) bindings to DT Schema.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: default avatarKuldeep Singh <singh.kuldeep87k@gmail.com>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220405063451.12011-7-krzysztof.kozlowski@linaro.org
parent 92298ea3
Loading
Loading
Loading
Loading
+0 −103
Original line number Diff line number Diff line
Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI)

The QUP core is an AHB slave that provides a common data path (an output FIFO
and an input FIFO) for serial peripheral interface (SPI) mini-core.

SPI in master mode supports up to 50MHz, up to four chip selects, programmable
data path from 4 bits to 32 bits and numerous protocol variants.

Required properties:
- compatible:     Should contain:
		  "qcom,spi-qup-v1.1.1" for 8660, 8960 and 8064.
		  "qcom,spi-qup-v2.1.1" for 8974 and later
		  "qcom,spi-qup-v2.2.1" for 8974 v2 and later.

- reg:            Should contain base register location and length
- interrupts:     Interrupt number used by this controller

- clocks:         Should contain the core clock and the AHB clock.
- clock-names:    Should be "core" for the core clock and "iface" for the
                  AHB clock.

- #address-cells: Number of cells required to define a chip select
                  address on the SPI bus. Should be set to 1.
- #size-cells:    Should be zero.

Optional properties:
- spi-max-frequency: Specifies maximum SPI clock frequency,
                     Units - Hz. Definition as per
                     Documentation/devicetree/bindings/spi/spi-bus.txt
- num-cs:	total number of chipselects
- cs-gpios:	should specify GPIOs used for chipselects.
		The gpios will be referred to as reg = <index> in the SPI child
		nodes.  If unspecified, a single SPI device without a chip
		select can be used.

- dmas:         Two DMA channel specifiers following the convention outlined
                in bindings/dma/dma.txt
- dma-names:    Names for the dma channels, if present. There must be at
                least one channel named "tx" for transmit and named "rx" for
                receive.

SPI slave nodes must be children of the SPI master node and can contain
properties described in Documentation/devicetree/bindings/spi/spi-bus.txt

Example:

	spi_8: spi@f9964000 { /* BLSP2 QUP2 */

		compatible = "qcom,spi-qup-v2";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0xf9964000 0x1000>;
		interrupts = <0 102 0>;
		spi-max-frequency = <19200000>;

		clocks = <&gcc GCC_BLSP2_QUP2_SPI_APPS_CLK>, <&gcc GCC_BLSP2_AHB_CLK>;
		clock-names = "core", "iface";

		dmas = <&blsp1_bam 13>, <&blsp1_bam 12>;
		dma-names = "rx", "tx";

		pinctrl-names = "default";
		pinctrl-0 = <&spi8_default>;

		device@0 {
			compatible = "arm,pl022-dummy";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0>; /* Chip select 0 */
			spi-max-frequency = <19200000>;
			spi-cpol;
		};

		device@1 {
			compatible = "arm,pl022-dummy";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <1>; /* Chip select 1 */
			spi-max-frequency = <9600000>;
			spi-cpha;
		};

		device@2 {
			compatible = "arm,pl022-dummy";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <2>; /* Chip select 2 */
			spi-max-frequency = <19200000>;
			spi-cpol;
			spi-cpha;
		};

		device@3 {
			compatible = "arm,pl022-dummy";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <3>; /* Chip select 3 */
			spi-max-frequency = <19200000>;
			spi-cpol;
			spi-cpha;
			spi-cs-high;
		};
	};
+81 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/spi/qcom,spi-qup.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm Universal Peripheral (QUP) Serial Peripheral Interface (SPI)

maintainers:
  - Andy Gross <agross@kernel.org>
  - Bjorn Andersson <bjorn.andersson@linaro.org>
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

description:
  The QUP core is an AHB slave that provides a common data path (an output FIFO
  and an input FIFO) for serial peripheral interface (SPI) mini-core.

  SPI in master mode supports up to 50MHz, up to four chip selects,
  programmable data path from 4 bits to 32 bits and numerous protocol variants.

allOf:
  - $ref: /schemas/spi/spi-controller.yaml#

properties:
  compatible:
    enum:
      - qcom,spi-qup-v1.1.1 # for 8660, 8960 and 8064
      - qcom,spi-qup-v2.1.1 # for 8974 and later
      - qcom,spi-qup-v2.2.1 # for 8974 v2 and later

  clocks:
    maxItems: 2

  clock-names:
    items:
      - const: core
      - const: iface

  dmas:
    maxItems: 2

  dma-names:
    items:
      - const: tx
      - const: rx

  interrupts:
    maxItems: 1

  reg:
    maxItems: 1

required:
  - compatible
  - clocks
  - clock-names
  - interrupts
  - reg

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    spi@7575000 {
        compatible = "qcom,spi-qup-v2.2.1";
        reg = <0x07575000 0x600>;
        interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
        clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
                 <&gcc GCC_BLSP1_AHB_CLK>;
        clock-names = "core", "iface";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&blsp1_spi1_default>;
        pinctrl-1 = <&blsp1_spi1_sleep>;
        dmas = <&blsp1_dma 12>, <&blsp1_dma 13>;
        dma-names = "tx", "rx";
        #address-cells = <1>;
        #size-cells = <0>;
    };