1 # SPDX-License-Identifier: GPL-2.0
4 $id: http://devicetree.org/schemas/mmc/mtk-sd.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: MTK MSDC Storage Host Controller
10 - Chaotian Jing <chaotian.jing@mediatek.com>
11 - Wenbin Mei <wenbin.mei@mediatek.com>
29 - const: mediatek,mt7623-mmc
30 - const: mediatek,mt2701-mmc
38 - const: mediatek,mt8183-mmc
43 - description: base register (required).
44 - description: top base register (required for MT8183).
48 Should contain phandle for the clock feeding the MMC controller.
58 Should at least contain MSDC GIC interrupt. To support SDIO in-band wakeup, an extended
59 interrupt is required and be configured as wakeup source irq.
70 Should at least contain default and state_uhs. To support SDIO in-band wakeup, dat1 pin
71 will be switched between GPIO mode and SDIO DAT1 mode, state_eint is mandatory in this
81 should contain default/high speed pin ctrl.
86 should contain uhs mode pin ctrl.
91 should switch dat1 pin to GPIO mode.
95 $ref: /schemas/types.yaml#/definitions/uint32
97 HS400 DS delay setting.
101 mediatek,hs200-cmd-int-delay:
102 $ref: /schemas/types.yaml#/definitions/uint32
104 HS200 command internal delay setting.
105 This field has total 32 stages.
106 The value is an integer from 0 to 31.
110 mediatek,hs400-cmd-int-delay:
111 $ref: /schemas/types.yaml#/definitions/uint32
113 HS400 command internal delay setting.
114 This field has total 32 stages.
115 The value is an integer from 0 to 31.
119 mediatek,hs400-cmd-resp-sel-rising:
120 $ref: /schemas/types.yaml#/definitions/flag
122 HS400 command response sample selection.
123 If present, HS400 command responses are sampled on rising edges.
124 If not present, HS400 command responses are sampled on falling edges.
126 mediatek,hs400-ds-dly3:
127 $ref: /schemas/types.yaml#/definitions/uint32
129 Gear of the third delay line for DS for input data latch in data
130 pad macro, there are 32 stages from 0 to 31.
131 For different corner IC, the time is different about one step, it is
133 The value is confirmed by doing scan and calibration to find a best
134 value with corner IC and it is valid only for HS400 mode.
139 $ref: /schemas/types.yaml#/definitions/uint32
141 Some SoCs do not support enhance_rx, need set correct latch-ck to avoid
142 data crc error caused by stop clock(fifo full) Valid range = [0:0x7].
143 if not present, default value is 0.
144 applied to compatible "mediatek,mt2701-mmc".
167 - $ref: mmc-controller.yaml#
172 - mediatek,mt2701-mmc
173 - mediatek,mt6779-mmc
174 - mediatek,mt6795-mmc
175 - mediatek,mt7620-mmc
176 - mediatek,mt7622-mmc
177 - mediatek,mt7623-mmc
178 - mediatek,mt8135-mmc
179 - mediatek,mt8173-mmc
180 - mediatek,mt8183-mmc
181 - mediatek,mt8186-mmc
182 - mediatek,mt8188-mmc
183 - mediatek,mt8195-mmc
184 - mediatek,mt8516-mmc
190 - description: source clock
191 - description: HCLK which used for host
192 - description: independent source clock gate
204 const: mediatek,mt2712-mmc
210 - description: source clock
211 - description: HCLK which used for host
212 - description: independent source clock gate
213 - description: bus clock used for internal register access (required for MSDC0/3).
226 const: mediatek,mt8183-mmc
237 - mediatek,mt7986-mmc
243 - description: source clock
244 - description: HCLK which used for host
245 - description: independent source clock gate
246 - description: bus clock used for internal register access (required for MSDC0/3).
247 - description: msdc subsys clock gate
261 - mediatek,mt8186-mmc
262 - mediatek,mt8188-mmc
263 - mediatek,mt8195-mmc
268 - description: source clock
269 - description: HCLK which used for host
270 - description: independent source clock gate
271 - description: crypto clock used for data encrypt/decrypt (optional)
283 const: mediatek,mt8192-mmc
288 - description: source clock
289 - description: HCLK which used for host
290 - description: independent source clock gate
291 - description: msdc subsys clock gate
292 - description: peripheral bus clock gate
293 - description: AXI bus clock gate
294 - description: AHB bus clock gate
305 unevaluatedProperties: false
309 #include <dt-bindings/interrupt-controller/irq.h>
310 #include <dt-bindings/interrupt-controller/arm-gic.h>
311 #include <dt-bindings/clock/mt8173-clk.h>
313 compatible = "mediatek,mt8173-mmc";
314 reg = <0x11230000 0x1000>;
315 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>;
316 vmmc-supply = <&mt6397_vemc_3v3_reg>;
317 vqmmc-supply = <&mt6397_vio18_reg>;
318 clocks = <&pericfg CLK_PERI_MSDC30_0>,
319 <&topckgen CLK_TOP_MSDC50_0_H_SEL>;
320 clock-names = "source", "hclk";
321 pinctrl-names = "default", "state_uhs";
322 pinctrl-0 = <&mmc0_pins_default>;
323 pinctrl-1 = <&mmc0_pins_uhs>;
324 assigned-clocks = <&topckgen CLK_TOP_MSDC50_0_SEL>;
325 assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>;
326 hs400-ds-delay = <0x14015>;
327 mediatek,hs200-cmd-int-delay = <26>;
328 mediatek,hs400-cmd-int-delay = <14>;
329 mediatek,hs400-cmd-resp-sel-rising;
333 compatible = "mediatek,mt8173-mmc";
334 reg = <0x11260000 0x1000>;
335 clock-names = "source", "hclk";
336 clocks = <&pericfg CLK_PERI_MSDC30_3>,
337 <&topckgen CLK_TOP_MSDC50_2_H_SEL>;
338 interrupt-names = "msdc", "sdio_wakeup";
339 interrupts-extended = <&gic GIC_SPI 74 IRQ_TYPE_LEVEL_LOW 0>,
340 <&pio 23 IRQ_TYPE_LEVEL_LOW>;
341 pinctrl-names = "default", "state_uhs", "state_eint";
342 pinctrl-0 = <&mmc2_pins_default>;
343 pinctrl-1 = <&mmc2_pins_uhs>;
344 pinctrl-2 = <&mmc2_pins_eint>;
346 max-frequency = <200000000>;
349 keep-power-in-suspend;
355 vmmc-supply = <&sdio_fixed_3v3>;
356 vqmmc-supply = <&mt6397_vgp3_reg>;
357 mmc-pwrseq = <&wifi_pwrseq>;