1 # SPDX-License-Identifier: GPL-2.0
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
10 - Ulf Hansson <ulf.hansson@linaro.org>
13 These properties are common to multiple MMC host controllers. Any host
14 that requires the respective functionality should implement them using
19 pattern: "^mmc(@.*)?$"
24 The cell is the slot ID if a function subnode is used.
30 # If none of these properties are supplied, the host native card
31 # detect will be used. Only one of them should be provided.
34 $ref: /schemas/types.yaml#/definitions/flag
36 There is no card detection available; polling must be used.
40 The card detection will be done using the GPIO provided.
43 $ref: /schemas/types.yaml#/definitions/flag
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.
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
67 $ref: /schemas/types.yaml#/definitions/flag
69 The Write Protect line polarity is inverted.
72 $ref: /schemas/types.yaml#/definitions/flag
74 The CD line polarity is inverted.
80 - $ref: /schemas/types.yaml#/definitions/uint32
88 - $ref: /schemas/types.yaml#/definitions/uint32
92 Maximum operating frequency of the bus.
95 $ref: /schemas/types.yaml#/definitions/flag
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 used
100 for the write-protect detection logic, it is sufficient to not
101 specify the wp-gpios property in the absence of a write-protect
102 line. Not used in combination with eMMC or SDIO.
106 GPIO to use for the write-protect detection.
108 cd-debounce-delay-ms:
110 Set delay time before detecting card after card insert
114 $ref: /schemas/types.yaml#/definitions/flag
116 When specified, denotes that 1.8V card voltage is not supported
117 on this system, even if the controller claims it.
120 $ref: /schemas/types.yaml#/definitions/flag
122 SD high-speed timing is supported.
125 $ref: /schemas/types.yaml#/definitions/flag
127 MMC high-speed timing is supported.
130 $ref: /schemas/types.yaml#/definitions/flag
132 SD UHS SDR12 speed is supported.
135 $ref: /schemas/types.yaml#/definitions/flag
137 SD UHS SDR25 speed is supported.
140 $ref: /schemas/types.yaml#/definitions/flag
142 SD UHS SDR50 speed is supported.
145 $ref: /schemas/types.yaml#/definitions/flag
147 SD UHS SDR104 speed is supported.
150 $ref: /schemas/types.yaml#/definitions/flag
152 SD UHS DDR50 speed is supported.
155 $ref: /schemas/types.yaml#/definitions/flag
157 Powering off the card is safe.
160 $ref: /schemas/types.yaml#/definitions/flag
162 eMMC hardware reset is supported
165 $ref: /schemas/types.yaml#/definitions/flag
167 enable SDIO IRQ signalling on this interface
170 $ref: /schemas/types.yaml#/definitions/flag
172 Full power cycle of the card is supported.
175 $ref: /schemas/types.yaml#/definitions/flag
177 eMMC high-speed DDR mode (1.2V I/O) is supported.
180 $ref: /schemas/types.yaml#/definitions/flag
182 eMMC high-speed DDR mode (1.8V I/O) is supported.
185 $ref: /schemas/types.yaml#/definitions/flag
187 eMMC high-speed DDR mode (3.3V I/O) is supported.
190 $ref: /schemas/types.yaml#/definitions/flag
192 eMMC HS200 mode (1.2V I/O) is supported.
195 $ref: /schemas/types.yaml#/definitions/flag
197 eMMC HS200 mode (1.8V I/O) is supported.
200 $ref: /schemas/types.yaml#/definitions/flag
202 eMMC HS400 mode (1.2V I/O) is supported.
205 $ref: /schemas/types.yaml#/definitions/flag
207 eMMC HS400 mode (1.8V I/O) is supported.
209 mmc-hs400-enhanced-strobe:
210 $ref: /schemas/types.yaml#/definitions/flag
212 eMMC HS400 enhanced strobe mode is supported
216 - $ref: /schemas/types.yaml#/definitions/uint32
220 Value the card Driver Stage Register (DSR) should be programmed
224 $ref: /schemas/types.yaml#/definitions/flag
226 Controller is limited to send SDIO commands during
230 $ref: /schemas/types.yaml#/definitions/flag
232 Controller is limited to send SD commands during initialization.
235 $ref: /schemas/types.yaml#/definitions/flag
237 Controller is limited to send MMC commands during
240 fixed-emmc-driver-type:
242 - $ref: /schemas/types.yaml#/definitions/uint32
246 For non-removable eMMC, enforce this driver type. The value is
247 the driver type as specified in the eMMC specification (table
248 206 in spec version 5.1)
250 post-power-on-delay-ms:
252 - $ref: /schemas/types.yaml#/definitions/uint32
255 It was invented for MMC pwrseq-simple which could be referred to
256 mmc-pwrseq-simple.txt. But now it\'s reused as a tunable delay
257 waiting for I/O signalling and card power supply to be stable,
258 regardless of whether pwrseq-simple is used. Default to 10ms if
262 $ref: /schemas/types.yaml#/definitions/flag
264 The presence of this property indicates that the corresponding
265 MMC host controller supports HW command queue feature.
268 $ref: /schemas/types.yaml#/definitions/flag
270 The presence of this property indicates that the MMC
271 controller\'s command queue engine (CQE) does not support direct
274 keep-power-in-suspend:
275 $ref: /schemas/types.yaml#/definitions/flag
277 SDIO only. Preserves card power during a suspend/resume cycle.
279 # Deprecated: enable-sdio-wakeup
281 $ref: /schemas/types.yaml#/definitions/flag
283 SDIO only. Enables wake up of host system on SDIO IRQ assertion.
287 Supply for the card power
291 Supply for the bus IO line power
294 $ref: /schemas/types.yaml#/definitions/phandle
296 System-on-Chip designs may specify a specific MMC power
297 sequence. To successfully detect an (e)MMC/SD/SDIO card, that
298 power sequence must be maintained while initializing the card.
304 On embedded systems the cards connected to a host may need
305 additional properties. These can be specified in subnodes to the
306 host controller node. The subnodes are identified by the
307 standard \'reg\' property. Which information exactly can be
308 specified depends on the bindings for the SDIO function driver
309 for the subnode, as specified by the compatible string.
314 Name of SDIO function following generic names recommended
322 Must contain the SDIO function number of the function this
323 subnode describes. A value of 0 denotes the memory SD
324 function, values from 1 to 7 denote the SDIO functions.
327 $ref: /schemas/types.yaml#/definitions/flag
329 Use this to indicate that the mmc-card has a broken hpi
330 implementation, and that hpi should not be used.
335 "^clk-phase-(legacy|sd-hs|mmc-(hs|hs[24]00|ddr52)|uhs-(sdr(12|25|50|104)|ddr50))$":
337 - $ref: /schemas/types.yaml#/definitions/uint32-array
344 Set the clock (phase) delays which are to be configured in the
345 controller while switching to particular speed mode. These values
346 are in pair of degrees.
349 cd-debounce-delay-ms: [ cd-gpios ]
350 fixed-emmc-driver-type: [ non-removable ]
355 compatible = "sdhci";
356 reg = <0xab000000 0x200>;
359 cd-gpios = <&gpio 69 0>;
361 wp-gpios = <&gpio 70 0>;
362 max-frequency = <50000000>;
363 keep-power-in-suspend;
365 mmc-pwrseq = <&sdhci0_pwrseq>;
366 clk-phase-sd-hs = <63>, <72>;
371 #address-cells = <1>;
373 reg = <0x1c12000 0x200>;
374 pinctrl-names = "default";
375 pinctrl-0 = <&mmc3_pins_a>;
376 vmmc-supply = <®_vmmc3>;
379 mmc-pwrseq = <&sdhci0_pwrseq>;
383 compatible = "brcm,bcm43xx-fmac";
384 interrupt-parent = <&pio>;
386 interrupt-names = "host-wake";