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