xref: /openbmc/linux/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml (revision d7a48e27b38a94bf73c973c236461234610256d5)
1164c05f0SSerge Semin# SPDX-License-Identifier: GPL-2.0-only
2164c05f0SSerge Semin%YAML 1.2
3164c05f0SSerge Semin---
4164c05f0SSerge Semin$id: http://devicetree.org/schemas/spi/snps,dw-apb-ssi.yaml#
5164c05f0SSerge Semin$schema: http://devicetree.org/meta-schemas/core.yaml#
6164c05f0SSerge Semin
7164c05f0SSerge Semintitle: Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface
8164c05f0SSerge Semin
9164c05f0SSerge Seminmaintainers:
10164c05f0SSerge Semin  - Mark Brown <broonie@kernel.org>
11164c05f0SSerge Semin
12164c05f0SSerge SeminallOf:
13164c05f0SSerge Semin  - $ref: "spi-controller.yaml#"
14164c05f0SSerge Semin  - if:
15164c05f0SSerge Semin      properties:
16164c05f0SSerge Semin        compatible:
17164c05f0SSerge Semin          contains:
18164c05f0SSerge Semin            enum:
19164c05f0SSerge Semin              - mscc,ocelot-spi
20164c05f0SSerge Semin              - mscc,jaguar2-spi
21164c05f0SSerge Semin    then:
22164c05f0SSerge Semin      properties:
23164c05f0SSerge Semin        reg:
24164c05f0SSerge Semin          minItems: 2
25ca4e2ac2SSerge Semin  - if:
26ca4e2ac2SSerge Semin      properties:
27ca4e2ac2SSerge Semin        compatible:
28ca4e2ac2SSerge Semin          contains:
29ca4e2ac2SSerge Semin            enum:
30ca4e2ac2SSerge Semin              - baikal,bt1-sys-ssi
31ca4e2ac2SSerge Semin    then:
32ca4e2ac2SSerge Semin      properties:
33ca4e2ac2SSerge Semin        mux-controls:
34ca4e2ac2SSerge Semin          maxItems: 1
35ca4e2ac2SSerge Semin      required:
36ca4e2ac2SSerge Semin        - mux-controls
37ca4e2ac2SSerge Semin    else:
38ca4e2ac2SSerge Semin      required:
39ca4e2ac2SSerge Semin        - interrupts
40164c05f0SSerge Semin
41164c05f0SSerge Seminproperties:
42164c05f0SSerge Semin  compatible:
43164c05f0SSerge Semin    oneOf:
44164c05f0SSerge Semin      - description: Generic DW SPI Controller
45164c05f0SSerge Semin        enum:
46164c05f0SSerge Semin          - snps,dw-apb-ssi
47164c05f0SSerge Semin          - snps,dwc-ssi-1.01a
48164c05f0SSerge Semin      - description: Microsemi Ocelot/Jaguar2 SoC SPI Controller
49164c05f0SSerge Semin        items:
50164c05f0SSerge Semin          - enum:
51164c05f0SSerge Semin              - mscc,ocelot-spi
52164c05f0SSerge Semin              - mscc,jaguar2-spi
53164c05f0SSerge Semin          - const: snps,dw-apb-ssi
545ce78f44SLars Povlsen      - description: Microchip Sparx5 SoC SPI Controller
555ce78f44SLars Povlsen        const: microchip,sparx5-spi
56164c05f0SSerge Semin      - description: Amazon Alpine SPI Controller
57164c05f0SSerge Semin        const: amazon,alpine-dw-apb-ssi
58164c05f0SSerge Semin      - description: Renesas RZ/N1 SPI Controller
59164c05f0SSerge Semin        items:
60164c05f0SSerge Semin          - const: renesas,rzn1-spi
61164c05f0SSerge Semin          - const: snps,dw-apb-ssi
62164c05f0SSerge Semin      - description: Intel Keem Bay SPI Controller
63164c05f0SSerge Semin        const: intel,keembay-ssi
64ca4e2ac2SSerge Semin      - description: Baikal-T1 SPI Controller
65ca4e2ac2SSerge Semin        const: baikal,bt1-ssi
66ca4e2ac2SSerge Semin      - description: Baikal-T1 System Boot SPI Controller
67ca4e2ac2SSerge Semin        const: baikal,bt1-sys-ssi
687b14a272SDamien Le Moal      - description: Canaan Kendryte K210 SoS SPI Controller
697b14a272SDamien Le Moal        const: canaan,k210-spi
70029d32a8SGeert Uytterhoeven      - description: Renesas RZ/N1 SPI Controller
71029d32a8SGeert Uytterhoeven        items:
72029d32a8SGeert Uytterhoeven          - enum:
73029d32a8SGeert Uytterhoeven              - renesas,r9a06g032-spi # RZ/N1D
74029d32a8SGeert Uytterhoeven              - renesas,r9a06g033-spi # RZ/N1S
75029d32a8SGeert Uytterhoeven          - const: renesas,rzn1-spi   # RZ/N1
76164c05f0SSerge Semin
77164c05f0SSerge Semin  reg:
78164c05f0SSerge Semin    minItems: 1
79164c05f0SSerge Semin    items:
80164c05f0SSerge Semin      - description: DW APB SSI controller memory mapped registers
81ca4e2ac2SSerge Semin      - description: SPI MST region map or directly mapped SPI ROM
82164c05f0SSerge Semin
83164c05f0SSerge Semin  interrupts:
84164c05f0SSerge Semin    maxItems: 1
85164c05f0SSerge Semin
86164c05f0SSerge Semin  clocks:
87164c05f0SSerge Semin    minItems: 1
88164c05f0SSerge Semin    items:
89164c05f0SSerge Semin      - description: SPI Controller reference clock source
90164c05f0SSerge Semin      - description: APB interface clock source
91164c05f0SSerge Semin
92164c05f0SSerge Semin  clock-names:
93164c05f0SSerge Semin    minItems: 1
94164c05f0SSerge Semin    items:
95164c05f0SSerge Semin      - const: ssi_clk
96164c05f0SSerge Semin      - const: pclk
97164c05f0SSerge Semin
98164c05f0SSerge Semin  resets:
99164c05f0SSerge Semin    maxItems: 1
100164c05f0SSerge Semin
101164c05f0SSerge Semin  reset-names:
102164c05f0SSerge Semin    const: spi
103164c05f0SSerge Semin
104164c05f0SSerge Semin  reg-io-width:
105164c05f0SSerge Semin    $ref: /schemas/types.yaml#/definitions/uint32
106164c05f0SSerge Semin    description: I/O register width (in bytes) implemented by this device
107164c05f0SSerge Semin    default: 4
108164c05f0SSerge Semin    enum: [ 2, 4 ]
109164c05f0SSerge Semin
110164c05f0SSerge Semin  num-cs:
111164c05f0SSerge Semin    default: 4
112164c05f0SSerge Semin    minimum: 1
113164c05f0SSerge Semin    maximum: 4
114164c05f0SSerge Semin
115164c05f0SSerge Semin  dmas:
116164c05f0SSerge Semin    items:
117164c05f0SSerge Semin      - description: TX DMA Channel
118164c05f0SSerge Semin      - description: RX DMA Channel
119164c05f0SSerge Semin
120164c05f0SSerge Semin  dma-names:
121164c05f0SSerge Semin    items:
122164c05f0SSerge Semin      - const: tx
123164c05f0SSerge Semin      - const: rx
124164c05f0SSerge Semin
1255ce78f44SLars Povlsen  rx-sample-delay-ns:
1265ce78f44SLars Povlsen    default: 0
1275ce78f44SLars Povlsen    description: Default value of the rx-sample-delay-ns property.
1285ce78f44SLars Povlsen      This value will be used if the property is not explicitly defined
1295ce78f44SLars Povlsen      for a SPI slave device. See below.
1305ce78f44SLars Povlsen
131164c05f0SSerge SeminpatternProperties:
132164c05f0SSerge Semin  "^.*@[0-9a-f]+$":
133164c05f0SSerge Semin    type: object
134164c05f0SSerge Semin    properties:
135164c05f0SSerge Semin      reg:
136164c05f0SSerge Semin        minimum: 0
137164c05f0SSerge Semin        maximum: 3
138164c05f0SSerge Semin
139164c05f0SSerge Semin      spi-rx-bus-width:
140164c05f0SSerge Semin        const: 1
141164c05f0SSerge Semin
142164c05f0SSerge Semin      spi-tx-bus-width:
143164c05f0SSerge Semin        const: 1
144164c05f0SSerge Semin
1455ce78f44SLars Povlsen      rx-sample-delay-ns:
1465ce78f44SLars Povlsen        description: SPI Rx sample delay offset, unit is nanoseconds.
1475ce78f44SLars Povlsen          The delay from the default sample time before the actual
1485ce78f44SLars Povlsen          sample of the rxd input signal occurs. The "rx_sample_delay"
1495ce78f44SLars Povlsen          is an optional feature of the designware controller, and the
1505ce78f44SLars Povlsen          upper limit is also subject to controller configuration.
1515ce78f44SLars Povlsen
152164c05f0SSerge SeminunevaluatedProperties: false
153164c05f0SSerge Semin
154164c05f0SSerge Seminrequired:
155164c05f0SSerge Semin  - compatible
156164c05f0SSerge Semin  - reg
157164c05f0SSerge Semin  - "#address-cells"
158164c05f0SSerge Semin  - "#size-cells"
159164c05f0SSerge Semin  - clocks
160164c05f0SSerge Semin
161164c05f0SSerge Seminexamples:
162164c05f0SSerge Semin  - |
163164c05f0SSerge Semin    spi@fff00000 {
164164c05f0SSerge Semin      compatible = "snps,dw-apb-ssi";
165164c05f0SSerge Semin      reg = <0xfff00000 0x1000>;
166164c05f0SSerge Semin      #address-cells = <1>;
167164c05f0SSerge Semin      #size-cells = <0>;
168164c05f0SSerge Semin      interrupts = <0 154 4>;
169164c05f0SSerge Semin      clocks = <&spi_m_clk>;
170164c05f0SSerge Semin      num-cs = <2>;
171164c05f0SSerge Semin      cs-gpios = <&gpio0 13 0>,
172164c05f0SSerge Semin                 <&gpio0 14 0>;
1735ce78f44SLars Povlsen      rx-sample-delay-ns = <3>;
174*d7a48e27SApurva Nandan      flash@1 {
1755ce78f44SLars Povlsen        compatible = "spi-nand";
1765ce78f44SLars Povlsen        reg = <1>;
1775ce78f44SLars Povlsen        rx-sample-delay-ns = <7>;
1785ce78f44SLars Povlsen      };
179164c05f0SSerge Semin    };
180ca4e2ac2SSerge Semin  - |
181ca4e2ac2SSerge Semin    spi@1f040100 {
182ca4e2ac2SSerge Semin      compatible = "baikal,bt1-sys-ssi";
183ca4e2ac2SSerge Semin      reg = <0x1f040100 0x900>,
184ca4e2ac2SSerge Semin            <0x1c000000 0x1000000>;
185ca4e2ac2SSerge Semin      #address-cells = <1>;
186ca4e2ac2SSerge Semin      #size-cells = <0>;
187ca4e2ac2SSerge Semin      mux-controls = <&boot_mux>;
188ca4e2ac2SSerge Semin      clocks = <&ccu_sys>;
189ca4e2ac2SSerge Semin      clock-names = "ssi_clk";
190ca4e2ac2SSerge Semin    };
191164c05f0SSerge Semin...
192