xref: /openbmc/linux/Documentation/devicetree/bindings/spi/spi-pl022.yaml (revision 99a7fa0e75a3a595a577fb5efa4b84a491f664a2)
1cc0f6e96SRob Herring# SPDX-License-Identifier: GPL-2.0
2cc0f6e96SRob Herring%YAML 1.2
3cc0f6e96SRob Herring---
4cc0f6e96SRob Herring$id: http://devicetree.org/schemas/spi/spi-pl022.yaml#
5cc0f6e96SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
6cc0f6e96SRob Herring
7cc0f6e96SRob Herringtitle: ARM PL022 SPI controller
8cc0f6e96SRob Herring
9cc0f6e96SRob Herringmaintainers:
10cc0f6e96SRob Herring  - Linus Walleij <linus.walleij@linaro.org>
11cc0f6e96SRob Herring
12cc0f6e96SRob HerringallOf:
13*99a7fa0eSKrzysztof Kozlowski  - $ref: spi-controller.yaml#
14cc0f6e96SRob Herring
15cc0f6e96SRob Herring# We need a select here so we don't match all nodes with 'arm,primecell'
16cc0f6e96SRob Herringselect:
17cc0f6e96SRob Herring  properties:
18cc0f6e96SRob Herring    compatible:
19cc0f6e96SRob Herring      contains:
20cc0f6e96SRob Herring        const: arm,pl022
21cc0f6e96SRob Herring  required:
22cc0f6e96SRob Herring    - compatible
23cc0f6e96SRob Herring
24cc0f6e96SRob Herringproperties:
25cc0f6e96SRob Herring  compatible:
26cc0f6e96SRob Herring    items:
27cc0f6e96SRob Herring      - const: arm,pl022
28cc0f6e96SRob Herring      - const: arm,primecell
29cc0f6e96SRob Herring
30cc0f6e96SRob Herring  reg:
31cc0f6e96SRob Herring    maxItems: 1
32cc0f6e96SRob Herring
33cc0f6e96SRob Herring  interrupts:
34cc0f6e96SRob Herring    maxItems: 1
35cc0f6e96SRob Herring
36cc0f6e96SRob Herring  clocks:
37cc0f6e96SRob Herring    maxItems: 2
38cc0f6e96SRob Herring
39cc0f6e96SRob Herring  clock-names:
40cc0f6e96SRob Herring    items:
411889421aSKuldeep Singh      - const: sspclk
42cc0f6e96SRob Herring      - const: apb_pclk
43cc0f6e96SRob Herring
44cc0f6e96SRob Herring  pl022,autosuspend-delay:
45cc0f6e96SRob Herring    description: delay in ms following transfer completion before the
46cc0f6e96SRob Herring      runtime power management system suspends the device. A setting of 0
47cc0f6e96SRob Herring      indicates no delay and the device will be suspended immediately.
48*99a7fa0eSKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/uint32
49cc0f6e96SRob Herring
50cc0f6e96SRob Herring  pl022,rt:
51cc0f6e96SRob Herring    description: indicates the controller should run the message pump with realtime
52cc0f6e96SRob Herring      priority to minimise the transfer latency on the bus (boolean)
53cc0f6e96SRob Herring    type: boolean
54cc0f6e96SRob Herring
55cc0f6e96SRob Herring  dmas:
56cc0f6e96SRob Herring    description:
57cc0f6e96SRob Herring      Two or more DMA channel specifiers following the convention outlined
58cc0f6e96SRob Herring      in bindings/dma/dma.txt
59cc0f6e96SRob Herring    minItems: 2
60cc0f6e96SRob Herring    maxItems: 32
61cc0f6e96SRob Herring
62cc0f6e96SRob Herring  dma-names:
63cc0f6e96SRob Herring    description:
64cc0f6e96SRob Herring      There must be at least one channel named "tx" for transmit and named "rx"
65cc0f6e96SRob Herring      for receive.
66cc0f6e96SRob Herring    minItems: 2
67cc0f6e96SRob Herring    maxItems: 32
68cc0f6e96SRob Herring    additionalItems: true
69cc0f6e96SRob Herring    items:
70cc0f6e96SRob Herring      - const: rx
71cc0f6e96SRob Herring      - const: tx
72cc0f6e96SRob Herring
73d94758b3SLinus Walleij  resets:
74d94758b3SLinus Walleij    maxItems: 1
75d94758b3SLinus Walleij
76cc0f6e96SRob HerringpatternProperties:
77cc0f6e96SRob Herring  "^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-f]+$":
78cc0f6e96SRob Herring    type: object
79cc0f6e96SRob Herring    # SPI slave nodes must be children of the SPI master node and can
80cc0f6e96SRob Herring    # contain the following properties.
81cc0f6e96SRob Herring    properties:
82cc0f6e96SRob Herring      pl022,interface:
83cc0f6e96SRob Herring        description: SPI interface type
84*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
853d21a460SRob Herring        enum:
86cc0f6e96SRob Herring          - 0      # SPI
87cc0f6e96SRob Herring          - 1      # Texas Instruments Synchronous Serial Frame Format
88cc0f6e96SRob Herring          - 2      # Microwire (Half Duplex)
89cc0f6e96SRob Herring
90cc0f6e96SRob Herring      pl022,com-mode:
91cc0f6e96SRob Herring        description: Specifies the transfer mode
92*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
933d21a460SRob Herring        enum:
94cc0f6e96SRob Herring          - 0      # interrupt mode
95cc0f6e96SRob Herring          - 1      # polling mode
96cc0f6e96SRob Herring          - 2      # DMA mode
97cc0f6e96SRob Herring        default: 1
98cc0f6e96SRob Herring
99cc0f6e96SRob Herring      pl022,rx-level-trig:
100cc0f6e96SRob Herring        description: Rx FIFO watermark level
101*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
1023d21a460SRob Herring        minimum: 0
103cc0f6e96SRob Herring        maximum: 4
104cc0f6e96SRob Herring
105cc0f6e96SRob Herring      pl022,tx-level-trig:
106cc0f6e96SRob Herring        description: Tx FIFO watermark level
107*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
1083d21a460SRob Herring        minimum: 0
109cc0f6e96SRob Herring        maximum: 4
110cc0f6e96SRob Herring
111cc0f6e96SRob Herring      pl022,ctrl-len:
112cc0f6e96SRob Herring        description: Microwire interface - Control length
113*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
1143d21a460SRob Herring        minimum: 0x03
115cc0f6e96SRob Herring        maximum: 0x1f
116cc0f6e96SRob Herring
117cc0f6e96SRob Herring      pl022,wait-state:
118cc0f6e96SRob Herring        description: Microwire interface - Wait state
119*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
1203d21a460SRob Herring        enum: [0, 1]
121cc0f6e96SRob Herring
122cc0f6e96SRob Herring      pl022,duplex:
123cc0f6e96SRob Herring        description: Microwire interface - Full/Half duplex
124*99a7fa0eSKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
1253d21a460SRob Herring        enum: [0, 1]
126cc0f6e96SRob Herring
127cc0f6e96SRob Herringrequired:
128cc0f6e96SRob Herring  - compatible
129cc0f6e96SRob Herring  - reg
130cc0f6e96SRob Herring  - interrupts
131cc0f6e96SRob Herring
1326fdc6e23SRob HerringunevaluatedProperties: false
1336fdc6e23SRob Herring
134cc0f6e96SRob Herringexamples:
135cc0f6e96SRob Herring  - |
136cc0f6e96SRob Herring    spi@e0100000 {
137cc0f6e96SRob Herring      compatible = "arm,pl022", "arm,primecell";
138cc0f6e96SRob Herring      reg = <0xe0100000 0x1000>;
139cc0f6e96SRob Herring      #address-cells = <1>;
140cc0f6e96SRob Herring      #size-cells = <0>;
141cc0f6e96SRob Herring      interrupts = <0 31 0x4>;
142cc0f6e96SRob Herring      dmas = <&dma_controller 23 1>,
143cc0f6e96SRob Herring        <&dma_controller 24 0>;
144cc0f6e96SRob Herring      dma-names = "rx", "tx";
145cc0f6e96SRob Herring
146673283a3SKrzysztof Kozlowski      flash@1 {
147cc0f6e96SRob Herring        compatible = "st,m25p80";
148cc0f6e96SRob Herring        reg = <1>;
149cc0f6e96SRob Herring        spi-max-frequency = <12000000>;
150cc0f6e96SRob Herring        spi-cpol;
151cc0f6e96SRob Herring        spi-cpha;
152cc0f6e96SRob Herring        pl022,interface = <0>;
153cc0f6e96SRob Herring        pl022,com-mode = <0x2>;
154cc0f6e96SRob Herring        pl022,rx-level-trig = <0>;
155cc0f6e96SRob Herring        pl022,tx-level-trig = <0>;
156cc0f6e96SRob Herring        pl022,ctrl-len = <0x11>;
157cc0f6e96SRob Herring        pl022,wait-state = <0>;
158cc0f6e96SRob Herring        pl022,duplex = <0>;
159cc0f6e96SRob Herring      };
160cc0f6e96SRob Herring    };
161cc0f6e96SRob Herring...
162