ACPI: EC: Rework flushing of pending work
[linux/fpc-iii.git] / Documentation / devicetree / bindings / mmc / mmc-controller.yaml
blob080754e0ef352f582021437d0def4ff7f05cd308
1 # SPDX-License-Identifier: GPL-2.0
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mmc/mmc-controller.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: MMC Controller Generic Binding
9 maintainers:
10   - Ulf Hansson <ulf.hansson@linaro.org>
12 description: |
13   These properties are common to multiple MMC host controllers. Any host
14   that requires the respective functionality should implement them using
15   these definitions.
17 properties:
18   $nodename:
19     pattern: "^mmc(@.*)?$"
21   "#address-cells":
22     const: 1
23     description: |
24       The cell is the slot ID if a function subnode is used.
26   "#size-cells":
27     const: 0
29   # Card Detection.
30   # If none of these properties are supplied, the host native card
31   # detect will be used. Only one of them should be provided.
33   broken-cd:
34     $ref: /schemas/types.yaml#/definitions/flag
35     description:
36       There is no card detection available; polling must be used.
38   cd-gpios:
39     description:
40       The card detection will be done using the GPIO provided.
42   non-removable:
43     $ref: /schemas/types.yaml#/definitions/flag
44     description:
45       Non-removable slot (like eMMC); assume always present.
47   # *NOTE* on CD and WP polarity. To use common for all SD/MMC host
48   # controllers line polarity properties, we have to fix the meaning
49   # of the "normal" and "inverted" line levels. We choose to follow
50   # the SDHCI standard, which specifies both those lines as "active
51   # low." Therefore, using the "cd-inverted" property means, that the
52   # CD line is active high, i.e. it is high, when a card is
53   # inserted. Similar logic applies to the "wp-inverted" property.
54   #
55   # CD and WP lines can be implemented on the hardware in one of two
56   # ways: as GPIOs, specified in cd-gpios and wp-gpios properties, or
57   # as dedicated pins. Polarity of dedicated pins can be specified,
58   # using *-inverted properties. GPIO polarity can also be specified
59   # using the GPIO_ACTIVE_LOW flag. This creates an ambiguity in the
60   # latter case. We choose to use the XOR logic for GPIO CD and WP
61   # lines.  This means, the two properties are "superimposed," for
62   # example leaving the GPIO_ACTIVE_LOW flag clear and specifying the
63   # respective *-inverted property property results in a
64   # double-inversion and actually means the "normal" line polarity is
65   # in effect.
66   wp-inverted:
67     $ref: /schemas/types.yaml#/definitions/flag
68     description:
69       The Write Protect line polarity is inverted.
71   cd-inverted:
72     $ref: /schemas/types.yaml#/definitions/flag
73     description:
74       The CD line polarity is inverted.
76   # Other properties
78   bus-width:
79     allOf:
80       - $ref: /schemas/types.yaml#/definitions/uint32
81       - enum: [1, 4, 8]
82         default: 1
83     description:
84       Number of data lines.
86   max-frequency:
87     allOf:
88       - $ref: /schemas/types.yaml#/definitions/uint32
89       - minimum: 400000
90       - maximum: 200000000
91     description:
92       Maximum operating frequency of the bus.
94   disable-wp:
95     $ref: /schemas/types.yaml#/definitions/flag
96     description:
97       When set, no physical write-protect line is present. This
98       property should only be specified when the controller has a
99       dedicated write-protect detection logic. If a GPIO is always
100       used for the write-protect detection. If a GPIO is always used
101       for the write-protect detection logic, it is sufficient to not
102       specify the wp-gpios property in the absence of a write-protect
103       line.
105   wp-gpios:
106     description:
107       GPIO to use for the write-protect detection.
109   cd-debounce-delay-ms:
110     description:
111       Set delay time before detecting card after card insert
112       interrupt.
114   no-1-8-v:
115     $ref: /schemas/types.yaml#/definitions/flag
116     description:
117       When specified, denotes that 1.8V card voltage is not supported
118       on this system, even if the controller claims it.
120   cap-sd-highspeed:
121     $ref: /schemas/types.yaml#/definitions/flag
122     description:
123       SD high-speed timing is supported.
125   cap-mmc-highspeed:
126     $ref: /schemas/types.yaml#/definitions/flag
127     description:
128       MMC high-speed timing is supported.
130   sd-uhs-sdr12:
131     $ref: /schemas/types.yaml#/definitions/flag
132     description:
133       SD UHS SDR12 speed is supported.
135   sd-uhs-sdr25:
136     $ref: /schemas/types.yaml#/definitions/flag
137     description:
138       SD UHS SDR25 speed is supported.
140   sd-uhs-sdr50:
141     $ref: /schemas/types.yaml#/definitions/flag
142     description:
143       SD UHS SDR50 speed is supported.
145   sd-uhs-sdr104:
146     $ref: /schemas/types.yaml#/definitions/flag
147     description:
148       SD UHS SDR104 speed is supported.
150   sd-uhs-ddr50:
151     $ref: /schemas/types.yaml#/definitions/flag
152     description:
153       SD UHS DDR50 speed is supported.
155   cap-power-off-card:
156     $ref: /schemas/types.yaml#/definitions/flag
157     description:
158       Powering off the card is safe.
160   cap-mmc-hw-reset:
161     $ref: /schemas/types.yaml#/definitions/flag
162     description:
163       eMMC hardware reset is supported
165   cap-sdio-irq:
166     $ref: /schemas/types.yaml#/definitions/flag
167     description:
168       enable SDIO IRQ signalling on this interface
170   full-pwr-cycle:
171     $ref: /schemas/types.yaml#/definitions/flag
172     description:
173       Full power cycle of the card is supported.
175   mmc-ddr-1_2v:
176     $ref: /schemas/types.yaml#/definitions/flag
177     description:
178       eMMC high-speed DDR mode (1.2V I/O) is supported.
180   mmc-ddr-1_8v:
181     $ref: /schemas/types.yaml#/definitions/flag
182     description:
183       eMMC high-speed DDR mode (1.8V I/O) is supported.
185   mmc-ddr-3_3v:
186     $ref: /schemas/types.yaml#/definitions/flag
187     description:
188       eMMC high-speed DDR mode (3.3V I/O) is supported.
190   mmc-hs200-1_2v:
191     $ref: /schemas/types.yaml#/definitions/flag
192     description:
193       eMMC HS200 mode (1.2V I/O) is supported.
195   mmc-hs200-1_8v:
196     $ref: /schemas/types.yaml#/definitions/flag
197     description:
198       eMMC HS200 mode (1.8V I/O) is supported.
200   mmc-hs400-1_2v:
201     $ref: /schemas/types.yaml#/definitions/flag
202     description:
203       eMMC HS400 mode (1.2V I/O) is supported.
205   mmc-hs400-1_8v:
206     $ref: /schemas/types.yaml#/definitions/flag
207     description:
208       eMMC HS400 mode (1.8V I/O) is supported.
210   mmc-hs400-enhanced-strobe:
211     $ref: /schemas/types.yaml#/definitions/flag
212     description:
213       eMMC HS400 enhanced strobe mode is supported
215   dsr:
216     allOf:
217       - $ref: /schemas/types.yaml#/definitions/uint32
218       - minimum: 0
219       - maximum: 0xffff
220     description:
221       Value the card Driver Stage Register (DSR) should be programmed
222       with.
224   no-sdio:
225     $ref: /schemas/types.yaml#/definitions/flag
226     description:
227       Controller is limited to send SDIO commands during
228       initialization.
230   no-sd:
231     $ref: /schemas/types.yaml#/definitions/flag
232     description:
233       Controller is limited to send SD commands during initialization.
235   no-mmc:
236     $ref: /schemas/types.yaml#/definitions/flag
237     description:
238       Controller is limited to send MMC commands during
239       initialization.
241   fixed-emmc-driver-type:
242     allOf:
243       - $ref: /schemas/types.yaml#/definitions/uint32
244       - minimum: 0
245       - maximum: 4
246     description:
247       For non-removable eMMC, enforce this driver type. The value is
248       the driver type as specified in the eMMC specification (table
249       206 in spec version 5.1)
251   post-power-on-delay-ms:
252     allOf:
253       - $ref: /schemas/types.yaml#/definitions/uint32
254       - default: 10
255     description:
256       It was invented for MMC pwrseq-simple which could be referred to
257       mmc-pwrseq-simple.txt. But now it\'s reused as a tunable delay
258       waiting for I/O signalling and card power supply to be stable,
259       regardless of whether pwrseq-simple is used. Default to 10ms if
260       no available.
262   supports-cqe:
263     $ref: /schemas/types.yaml#/definitions/flag
264     description:
265       The presence of this property indicates that the corresponding
266       MMC host controller supports HW command queue feature.
268   disable-cqe-dcmd:
269     $ref: /schemas/types.yaml#/definitions/flag
270     description:
271       The presence of this property indicates that the MMC
272       controller\'s command queue engine (CQE) does not support direct
273       commands (DCMDs).
275   keep-power-in-suspend:
276     $ref: /schemas/types.yaml#/definitions/flag
277     description:
278       SDIO only. Preserves card power during a suspend/resume cycle.
280   # Deprecated: enable-sdio-wakeup
281   wakeup-source:
282     $ref: /schemas/types.yaml#/definitions/flag
283     description:
284       SDIO only. Enables wake up of host system on SDIO IRQ assertion.
286   vmmc-supply:
287     description:
288       Supply for the card power
290   vqmmc-supply:
291     description:
292       Supply for the bus IO line power
294   mmc-pwrseq:
295     $ref: /schemas/types.yaml#/definitions/phandle
296     description:
297       System-on-Chip designs may specify a specific MMC power
298       sequence. To successfully detect an (e)MMC/SD/SDIO card, that
299       power sequence must be maintained while initializing the card.
301 patternProperties:
302   "^.*@[0-9]+$":
303     type: object
304     description: |
305       On embedded systems the cards connected to a host may need
306       additional properties. These can be specified in subnodes to the
307       host controller node. The subnodes are identified by the
308       standard \'reg\' property. Which information exactly can be
309       specified depends on the bindings for the SDIO function driver
310       for the subnode, as specified by the compatible string.
312     properties:
313       compatible:
314         description: |
315           Name of SDIO function following generic names recommended
316           practice
318       reg:
319         items:
320           - minimum: 0
321             maximum: 7
322             description:
323               Must contain the SDIO function number of the function this
324               subnode describes. A value of 0 denotes the memory SD
325               function, values from 1 to 7 denote the SDIO functions.
327       broken-hpi:
328         $ref: /schemas/types.yaml#/definitions/flag
329         description:
330           Use this to indicate that the mmc-card has a broken hpi
331           implementation, and that hpi should not be used.
333     required:
334       - reg
336 dependencies:
337   cd-debounce-delay-ms: [ cd-gpios ]
338   fixed-emmc-driver-type: [ non-removable ]
340 examples:
341   - |
342     sdhci@ab000000 {
343         compatible = "sdhci";
344         reg = <0xab000000 0x200>;
345         interrupts = <23>;
346         bus-width = <4>;
347         cd-gpios = <&gpio 69 0>;
348         cd-inverted;
349         wp-gpios = <&gpio 70 0>;
350         max-frequency = <50000000>;
351         keep-power-in-suspend;
352         wakeup-source;
353         mmc-pwrseq = <&sdhci0_pwrseq>;
354     };
356   - |
357     mmc3: mmc@1c12000 {
358         #address-cells = <1>;
359         #size-cells = <0>;
360         pinctrl-names = "default";
361         pinctrl-0 = <&mmc3_pins_a>;
362         vmmc-supply = <&reg_vmmc3>;
363         bus-width = <4>;
364         non-removable;
365         mmc-pwrseq = <&sdhci0_pwrseq>;
367         brcmf: bcrmf@1 {
368             reg = <1>;
369             compatible = "brcm,bcm43xx-fmac";
370             interrupt-parent = <&pio>;
371             interrupts = <10 8>;
372             interrupt-names = "host-wake";
373         };
374     };