1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface
8
9maintainers:
10  - Mark Brown <broonie@kernel.org>
11
12allOf:
13  - $ref: spi-controller.yaml#
14  - if:
15      properties:
16        compatible:
17          contains:
18            enum:
19              - mscc,ocelot-spi
20              - mscc,jaguar2-spi
21    then:
22      properties:
23        reg:
24          minItems: 2
25  - if:
26      properties:
27        compatible:
28          contains:
29            enum:
30              - baikal,bt1-sys-ssi
31    then:
32      properties:
33        mux-controls:
34          maxItems: 1
35      required:
36        - mux-controls
37    else:
38      required:
39        - interrupts
40  - if:
41      properties:
42        compatible:
43          contains:
44            const: amd,pensando-elba-spi
45    then:
46      required:
47        - amd,pensando-elba-syscon
48    else:
49      properties:
50        amd,pensando-elba-syscon: false
51
52properties:
53  compatible:
54    oneOf:
55      - description: Generic DW SPI Controller
56        enum:
57          - snps,dw-apb-ssi
58          - snps,dwc-ssi-1.01a
59      - description: Microsemi Ocelot/Jaguar2 SoC SPI Controller
60        items:
61          - enum:
62              - mscc,ocelot-spi
63              - mscc,jaguar2-spi
64          - const: snps,dw-apb-ssi
65      - description: Microchip Sparx5 SoC SPI Controller
66        const: microchip,sparx5-spi
67      - description: Amazon Alpine SPI Controller
68        const: amazon,alpine-dw-apb-ssi
69      - description: Renesas RZ/N1 SPI Controller
70        items:
71          - const: renesas,rzn1-spi
72          - const: snps,dw-apb-ssi
73      - description: Intel Keem Bay SPI Controller
74        const: intel,keembay-ssi
75      - description: Intel Mount Evans Integrated Management Complex SPI Controller
76        const: intel,mountevans-imc-ssi
77      - description: AMD Pensando Elba SoC SPI Controller
78        const: amd,pensando-elba-spi
79      - description: Baikal-T1 SPI Controller
80        const: baikal,bt1-ssi
81      - description: Baikal-T1 System Boot SPI Controller
82        const: baikal,bt1-sys-ssi
83      - description: Canaan Kendryte K210 SoS SPI Controller
84        const: canaan,k210-spi
85      - description: Renesas RZ/N1 SPI Controller
86        items:
87          - enum:
88              - renesas,r9a06g032-spi # RZ/N1D
89              - renesas,r9a06g033-spi # RZ/N1S
90          - const: renesas,rzn1-spi   # RZ/N1
91
92  reg:
93    minItems: 1
94    items:
95      - description: DW APB SSI controller memory mapped registers
96      - description: SPI MST region map or directly mapped SPI ROM
97
98  interrupts:
99    maxItems: 1
100
101  clocks:
102    minItems: 1
103    items:
104      - description: SPI Controller reference clock source
105      - description: APB interface clock source
106
107  clock-names:
108    minItems: 1
109    items:
110      - const: ssi_clk
111      - const: pclk
112
113  resets:
114    maxItems: 1
115
116  reset-names:
117    const: spi
118
119  reg-io-width:
120    description: I/O register width (in bytes) implemented by this device
121    default: 4
122    enum: [ 2, 4 ]
123
124  num-cs:
125    default: 4
126    minimum: 1
127    maximum: 4
128
129  dmas:
130    items:
131      - description: TX DMA Channel
132      - description: RX DMA Channel
133
134  dma-names:
135    items:
136      - const: tx
137      - const: rx
138
139  rx-sample-delay-ns:
140    default: 0
141    description: |
142      Default value of the rx-sample-delay-ns property.
143      This value will be used if the property is not explicitly defined
144      for a SPI slave device.
145
146      SPI Rx sample delay offset, unit is nanoseconds.
147      The delay from the default sample time before the actual sample of the
148      rxd input signal occurs. The "rx_sample_delay" is an optional feature
149      of the designware controller, and the upper limit is also subject to
150      controller configuration.
151
152  amd,pensando-elba-syscon:
153    $ref: /schemas/types.yaml#/definitions/phandle-array
154    description:
155      Block address to control SPI chip-selects. The Elba SoC system controller
156      provides an interface to override the native DWC SSI CS control.
157
158patternProperties:
159  "^.*@[0-9a-f]+$":
160    type: object
161    additionalProperties: true
162
163    properties:
164      reg:
165        minimum: 0
166        maximum: 3
167
168unevaluatedProperties: false
169
170required:
171  - compatible
172  - reg
173  - "#address-cells"
174  - "#size-cells"
175  - clocks
176
177examples:
178  - |
179    spi@fff00000 {
180      compatible = "snps,dw-apb-ssi";
181      reg = <0xfff00000 0x1000>;
182      #address-cells = <1>;
183      #size-cells = <0>;
184      interrupts = <0 154 4>;
185      clocks = <&spi_m_clk>;
186      num-cs = <2>;
187      cs-gpios = <&gpio0 13 0>,
188                 <&gpio0 14 0>;
189      rx-sample-delay-ns = <3>;
190      flash@1 {
191        compatible = "spi-nand";
192        reg = <1>;
193        rx-sample-delay-ns = <7>;
194      };
195    };
196  - |
197    spi@1f040100 {
198      compatible = "baikal,bt1-sys-ssi";
199      reg = <0x1f040100 0x900>,
200            <0x1c000000 0x1000000>;
201      #address-cells = <1>;
202      #size-cells = <0>;
203      mux-controls = <&boot_mux>;
204      clocks = <&ccu_sys>;
205      clock-names = "ssi_clk";
206    };
207...
208