1c626695eSWenbin Mei# SPDX-License-Identifier: GPL-2.0 2c626695eSWenbin Mei%YAML 1.2 3c626695eSWenbin Mei--- 4c626695eSWenbin Mei$id: http://devicetree.org/schemas/mmc/mtk-sd.yaml# 5c626695eSWenbin Mei$schema: http://devicetree.org/meta-schemas/core.yaml# 6c626695eSWenbin Mei 7c626695eSWenbin Meititle: MTK MSDC Storage Host Controller Binding 8c626695eSWenbin Mei 9c626695eSWenbin Meimaintainers: 10c626695eSWenbin Mei - Chaotian Jing <chaotian.jing@mediatek.com> 11c626695eSWenbin Mei - Wenbin Mei <wenbin.mei@mediatek.com> 12c626695eSWenbin Mei 13c626695eSWenbin Meiproperties: 14c626695eSWenbin Mei compatible: 15c626695eSWenbin Mei oneOf: 16c626695eSWenbin Mei - enum: 17c626695eSWenbin Mei - mediatek,mt2701-mmc 18c626695eSWenbin Mei - mediatek,mt2712-mmc 19c626695eSWenbin Mei - mediatek,mt6779-mmc 2055e7dceeSAngeloGioacchino Del Regno - mediatek,mt6795-mmc 21c626695eSWenbin Mei - mediatek,mt7620-mmc 22c626695eSWenbin Mei - mediatek,mt7622-mmc 23c626695eSWenbin Mei - mediatek,mt8135-mmc 24c626695eSWenbin Mei - mediatek,mt8173-mmc 25c626695eSWenbin Mei - mediatek,mt8183-mmc 26c626695eSWenbin Mei - mediatek,mt8516-mmc 27c626695eSWenbin Mei - items: 28c626695eSWenbin Mei - const: mediatek,mt7623-mmc 29c626695eSWenbin Mei - const: mediatek,mt2701-mmc 3059a23395SWenbin Mei - items: 314ec43b87SJohnson Wang - enum: 324ec43b87SJohnson Wang - mediatek,mt8186-mmc 334ec43b87SJohnson Wang - mediatek,mt8188-mmc 344ec43b87SJohnson Wang - mediatek,mt8192-mmc 354ec43b87SJohnson Wang - mediatek,mt8195-mmc 3659a23395SWenbin Mei - const: mediatek,mt8183-mmc 37c626695eSWenbin Mei 384df297aaSRob Herring reg: 397792fdf6STinghan Shen minItems: 1 407792fdf6STinghan Shen items: 417792fdf6STinghan Shen - description: base register (required). 427792fdf6STinghan Shen - description: top base register (required for MT8183). 434df297aaSRob Herring 44c626695eSWenbin Mei clocks: 45c626695eSWenbin Mei description: 46c626695eSWenbin Mei Should contain phandle for the clock feeding the MMC controller. 47c626695eSWenbin Mei minItems: 2 48*0b36b7cdSNícolas F. R. A. Prado maxItems: 7 49c626695eSWenbin Mei 50c626695eSWenbin Mei clock-names: 51c626695eSWenbin Mei minItems: 2 52*0b36b7cdSNícolas F. R. A. Prado maxItems: 7 53c626695eSWenbin Mei 544df297aaSRob Herring interrupts: 55035cc395SAxe Yang description: 56035cc395SAxe Yang Should at least contain MSDC GIC interrupt. To support SDIO in-band wakeup, an extended 57035cc395SAxe Yang interrupt is required and be configured as wakeup source irq. 58035cc395SAxe Yang minItems: 1 59035cc395SAxe Yang maxItems: 2 60035cc395SAxe Yang 61035cc395SAxe Yang interrupt-names: 62035cc395SAxe Yang items: 63035cc395SAxe Yang - const: msdc 64035cc395SAxe Yang - const: sdio_wakeup 654df297aaSRob Herring 66c626695eSWenbin Mei pinctrl-names: 67035cc395SAxe Yang description: 68035cc395SAxe Yang Should at least contain default and state_uhs. To support SDIO in-band wakeup, dat1 pin 69035cc395SAxe Yang will be switched between GPIO mode and SDIO DAT1 mode, state_eint is mandatory in this 70035cc395SAxe Yang scenario. 71035cc395SAxe Yang minItems: 2 72c626695eSWenbin Mei items: 73c626695eSWenbin Mei - const: default 74c626695eSWenbin Mei - const: state_uhs 75035cc395SAxe Yang - const: state_eint 76c626695eSWenbin Mei 77c626695eSWenbin Mei pinctrl-0: 78c626695eSWenbin Mei description: 79c626695eSWenbin Mei should contain default/high speed pin ctrl. 80c626695eSWenbin Mei maxItems: 1 81c626695eSWenbin Mei 82c626695eSWenbin Mei pinctrl-1: 83c626695eSWenbin Mei description: 84c626695eSWenbin Mei should contain uhs mode pin ctrl. 85c626695eSWenbin Mei maxItems: 1 86c626695eSWenbin Mei 87035cc395SAxe Yang pinctrl-2: 88035cc395SAxe Yang description: 89035cc395SAxe Yang should switch dat1 pin to GPIO mode. 90035cc395SAxe Yang maxItems: 1 91035cc395SAxe Yang 92c626695eSWenbin Mei assigned-clocks: 93c626695eSWenbin Mei description: 94c626695eSWenbin Mei PLL of the source clock. 95c626695eSWenbin Mei maxItems: 1 96c626695eSWenbin Mei 97c626695eSWenbin Mei assigned-clock-parents: 98c626695eSWenbin Mei description: 99c626695eSWenbin Mei parent of source clock, used for HS400 mode to get 400Mhz source clock. 100c626695eSWenbin Mei maxItems: 1 101c626695eSWenbin Mei 102c626695eSWenbin Mei hs400-ds-delay: 103c626695eSWenbin Mei $ref: /schemas/types.yaml#/definitions/uint32 104c626695eSWenbin Mei description: 105c626695eSWenbin Mei HS400 DS delay setting. 106c626695eSWenbin Mei minimum: 0 107c626695eSWenbin Mei maximum: 0xffffffff 108c626695eSWenbin Mei 109c626695eSWenbin Mei mediatek,hs200-cmd-int-delay: 110c626695eSWenbin Mei $ref: /schemas/types.yaml#/definitions/uint32 111c626695eSWenbin Mei description: 112c626695eSWenbin Mei HS200 command internal delay setting. 113c626695eSWenbin Mei This field has total 32 stages. 114c626695eSWenbin Mei The value is an integer from 0 to 31. 115c626695eSWenbin Mei minimum: 0 116c626695eSWenbin Mei maximum: 31 117c626695eSWenbin Mei 118c626695eSWenbin Mei mediatek,hs400-cmd-int-delay: 119c626695eSWenbin Mei $ref: /schemas/types.yaml#/definitions/uint32 120c626695eSWenbin Mei description: 121c626695eSWenbin Mei HS400 command internal delay setting. 122c626695eSWenbin Mei This field has total 32 stages. 123c626695eSWenbin Mei The value is an integer from 0 to 31. 124c626695eSWenbin Mei minimum: 0 125c626695eSWenbin Mei maximum: 31 126c626695eSWenbin Mei 127c626695eSWenbin Mei mediatek,hs400-cmd-resp-sel-rising: 128c626695eSWenbin Mei $ref: /schemas/types.yaml#/definitions/flag 129c626695eSWenbin Mei description: 130c626695eSWenbin Mei HS400 command response sample selection. 131c626695eSWenbin Mei If present, HS400 command responses are sampled on rising edges. 132c626695eSWenbin Mei If not present, HS400 command responses are sampled on falling edges. 133c626695eSWenbin Mei 134fb4708e6SWenbin Mei mediatek,hs400-ds-dly3: 135fb4708e6SWenbin Mei $ref: /schemas/types.yaml#/definitions/uint32 136fb4708e6SWenbin Mei description: 137fb4708e6SWenbin Mei Gear of the third delay line for DS for input data latch in data 138fb4708e6SWenbin Mei pad macro, there are 32 stages from 0 to 31. 139fb4708e6SWenbin Mei For different corner IC, the time is different about one step, it is 140fb4708e6SWenbin Mei about 100ps. 141fb4708e6SWenbin Mei The value is confirmed by doing scan and calibration to find a best 142fb4708e6SWenbin Mei value with corner IC and it is valid only for HS400 mode. 143fb4708e6SWenbin Mei minimum: 0 144fb4708e6SWenbin Mei maximum: 31 145fb4708e6SWenbin Mei 146c626695eSWenbin Mei mediatek,latch-ck: 147c626695eSWenbin Mei $ref: /schemas/types.yaml#/definitions/uint32 148c626695eSWenbin Mei description: 149c626695eSWenbin Mei Some SoCs do not support enhance_rx, need set correct latch-ck to avoid 150c626695eSWenbin Mei data crc error caused by stop clock(fifo full) Valid range = [0:0x7]. 151c626695eSWenbin Mei if not present, default value is 0. 152c626695eSWenbin Mei applied to compatible "mediatek,mt2701-mmc". 153c626695eSWenbin Mei minimum: 0 154c626695eSWenbin Mei maximum: 7 155c626695eSWenbin Mei 156c626695eSWenbin Mei resets: 157c626695eSWenbin Mei maxItems: 1 158c626695eSWenbin Mei 159c626695eSWenbin Mei reset-names: 160c626695eSWenbin Mei const: hrst 161c626695eSWenbin Mei 162c626695eSWenbin Meirequired: 163c626695eSWenbin Mei - compatible 164c626695eSWenbin Mei - reg 165c626695eSWenbin Mei - interrupts 166c626695eSWenbin Mei - clocks 167c626695eSWenbin Mei - clock-names 168c626695eSWenbin Mei - pinctrl-names 169c626695eSWenbin Mei - pinctrl-0 170c626695eSWenbin Mei - pinctrl-1 171c626695eSWenbin Mei - vmmc-supply 172c626695eSWenbin Mei - vqmmc-supply 173c626695eSWenbin Mei 174*0b36b7cdSNícolas F. R. A. PradoallOf: 175*0b36b7cdSNícolas F. R. A. Prado - $ref: mmc-controller.yaml# 176*0b36b7cdSNícolas F. R. A. Prado - if: 177*0b36b7cdSNícolas F. R. A. Prado properties: 178*0b36b7cdSNícolas F. R. A. Prado compatible: 179*0b36b7cdSNícolas F. R. A. Prado enum: 180*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt2701-mmc 181*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt6779-mmc 182*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt6795-mmc 183*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt7620-mmc 184*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt7622-mmc 185*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt7623-mmc 186*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8135-mmc 187*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8173-mmc 188*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8183-mmc 189*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8186-mmc 190*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8188-mmc 191*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8195-mmc 192*0b36b7cdSNícolas F. R. A. Prado - mediatek,mt8516-mmc 193*0b36b7cdSNícolas F. R. A. Prado then: 194*0b36b7cdSNícolas F. R. A. Prado properties: 195*0b36b7cdSNícolas F. R. A. Prado clocks: 196*0b36b7cdSNícolas F. R. A. Prado minItems: 2 197*0b36b7cdSNícolas F. R. A. Prado items: 198*0b36b7cdSNícolas F. R. A. Prado - description: source clock 199*0b36b7cdSNícolas F. R. A. Prado - description: HCLK which used for host 200*0b36b7cdSNícolas F. R. A. Prado - description: independent source clock gate 201*0b36b7cdSNícolas F. R. A. Prado clock-names: 202*0b36b7cdSNícolas F. R. A. Prado minItems: 2 203*0b36b7cdSNícolas F. R. A. Prado items: 204*0b36b7cdSNícolas F. R. A. Prado - const: source 205*0b36b7cdSNícolas F. R. A. Prado - const: hclk 206*0b36b7cdSNícolas F. R. A. Prado - const: source_cg 207*0b36b7cdSNícolas F. R. A. Prado 208*0b36b7cdSNícolas F. R. A. Prado - if: 209*0b36b7cdSNícolas F. R. A. Prado properties: 210*0b36b7cdSNícolas F. R. A. Prado compatible: 211*0b36b7cdSNícolas F. R. A. Prado contains: 212*0b36b7cdSNícolas F. R. A. Prado const: mediatek,mt2712-mmc 213*0b36b7cdSNícolas F. R. A. Prado then: 214*0b36b7cdSNícolas F. R. A. Prado properties: 215*0b36b7cdSNícolas F. R. A. Prado clocks: 216*0b36b7cdSNícolas F. R. A. Prado minItems: 3 217*0b36b7cdSNícolas F. R. A. Prado items: 218*0b36b7cdSNícolas F. R. A. Prado - description: source clock 219*0b36b7cdSNícolas F. R. A. Prado - description: HCLK which used for host 220*0b36b7cdSNícolas F. R. A. Prado - description: independent source clock gate 221*0b36b7cdSNícolas F. R. A. Prado - description: bus clock used for internal register access (required for MSDC0/3). 222*0b36b7cdSNícolas F. R. A. Prado clock-names: 223*0b36b7cdSNícolas F. R. A. Prado minItems: 3 224*0b36b7cdSNícolas F. R. A. Prado items: 225*0b36b7cdSNícolas F. R. A. Prado - const: source 226*0b36b7cdSNícolas F. R. A. Prado - const: hclk 227*0b36b7cdSNícolas F. R. A. Prado - const: source_cg 228*0b36b7cdSNícolas F. R. A. Prado - const: bus_clk 229*0b36b7cdSNícolas F. R. A. Prado 230*0b36b7cdSNícolas F. R. A. Prado - if: 2317792fdf6STinghan Shen properties: 2327792fdf6STinghan Shen compatible: 2337792fdf6STinghan Shen contains: 2347792fdf6STinghan Shen const: mediatek,mt8183-mmc 2357792fdf6STinghan Shen then: 2367792fdf6STinghan Shen properties: 2377792fdf6STinghan Shen reg: 2387792fdf6STinghan Shen minItems: 2 2397792fdf6STinghan Shen 240*0b36b7cdSNícolas F. R. A. Prado - if: 241*0b36b7cdSNícolas F. R. A. Prado properties: 242*0b36b7cdSNícolas F. R. A. Prado compatible: 243*0b36b7cdSNícolas F. R. A. Prado contains: 244*0b36b7cdSNícolas F. R. A. Prado const: mediatek,mt8192-mmc 245*0b36b7cdSNícolas F. R. A. Prado then: 246*0b36b7cdSNícolas F. R. A. Prado properties: 247*0b36b7cdSNícolas F. R. A. Prado clocks: 248*0b36b7cdSNícolas F. R. A. Prado items: 249*0b36b7cdSNícolas F. R. A. Prado - description: source clock 250*0b36b7cdSNícolas F. R. A. Prado - description: HCLK which used for host 251*0b36b7cdSNícolas F. R. A. Prado - description: independent source clock gate 252*0b36b7cdSNícolas F. R. A. Prado - description: msdc subsys clock gate 253*0b36b7cdSNícolas F. R. A. Prado - description: peripheral bus clock gate 254*0b36b7cdSNícolas F. R. A. Prado - description: AXI bus clock gate 255*0b36b7cdSNícolas F. R. A. Prado - description: AHB bus clock gate 256*0b36b7cdSNícolas F. R. A. Prado clock-names: 257*0b36b7cdSNícolas F. R. A. Prado items: 258*0b36b7cdSNícolas F. R. A. Prado - const: source 259*0b36b7cdSNícolas F. R. A. Prado - const: hclk 260*0b36b7cdSNícolas F. R. A. Prado - const: source_cg 261*0b36b7cdSNícolas F. R. A. Prado - const: sys_cg 262*0b36b7cdSNícolas F. R. A. Prado - const: pclk_cg 263*0b36b7cdSNícolas F. R. A. Prado - const: axi_cg 264*0b36b7cdSNícolas F. R. A. Prado - const: ahb_cg 265*0b36b7cdSNícolas F. R. A. Prado 266c626695eSWenbin MeiunevaluatedProperties: false 267c626695eSWenbin Mei 268c626695eSWenbin Meiexamples: 269c626695eSWenbin Mei - | 270c626695eSWenbin Mei #include <dt-bindings/interrupt-controller/irq.h> 271c626695eSWenbin Mei #include <dt-bindings/interrupt-controller/arm-gic.h> 272c626695eSWenbin Mei #include <dt-bindings/clock/mt8173-clk.h> 273c626695eSWenbin Mei mmc0: mmc@11230000 { 274c626695eSWenbin Mei compatible = "mediatek,mt8173-mmc"; 275c626695eSWenbin Mei reg = <0x11230000 0x1000>; 276c626695eSWenbin Mei interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_LOW>; 277c626695eSWenbin Mei vmmc-supply = <&mt6397_vemc_3v3_reg>; 278c626695eSWenbin Mei vqmmc-supply = <&mt6397_vio18_reg>; 279c626695eSWenbin Mei clocks = <&pericfg CLK_PERI_MSDC30_0>, 280c626695eSWenbin Mei <&topckgen CLK_TOP_MSDC50_0_H_SEL>; 281c626695eSWenbin Mei clock-names = "source", "hclk"; 282c626695eSWenbin Mei pinctrl-names = "default", "state_uhs"; 283c626695eSWenbin Mei pinctrl-0 = <&mmc0_pins_default>; 284c626695eSWenbin Mei pinctrl-1 = <&mmc0_pins_uhs>; 285c626695eSWenbin Mei assigned-clocks = <&topckgen CLK_TOP_MSDC50_0_SEL>; 286c626695eSWenbin Mei assigned-clock-parents = <&topckgen CLK_TOP_MSDCPLL_D2>; 287c626695eSWenbin Mei hs400-ds-delay = <0x14015>; 288c626695eSWenbin Mei mediatek,hs200-cmd-int-delay = <26>; 289c626695eSWenbin Mei mediatek,hs400-cmd-int-delay = <14>; 290c626695eSWenbin Mei mediatek,hs400-cmd-resp-sel-rising; 291c626695eSWenbin Mei }; 292c626695eSWenbin Mei 293035cc395SAxe Yang mmc3: mmc@11260000 { 294035cc395SAxe Yang compatible = "mediatek,mt8173-mmc"; 295035cc395SAxe Yang reg = <0x11260000 0x1000>; 296035cc395SAxe Yang clock-names = "source", "hclk"; 297035cc395SAxe Yang clocks = <&pericfg CLK_PERI_MSDC30_3>, 298035cc395SAxe Yang <&topckgen CLK_TOP_MSDC50_2_H_SEL>; 299035cc395SAxe Yang interrupt-names = "msdc", "sdio_wakeup"; 300035cc395SAxe Yang interrupts-extended = <&gic GIC_SPI 74 IRQ_TYPE_LEVEL_LOW 0>, 301035cc395SAxe Yang <&pio 23 IRQ_TYPE_LEVEL_LOW>; 302035cc395SAxe Yang pinctrl-names = "default", "state_uhs", "state_eint"; 303035cc395SAxe Yang pinctrl-0 = <&mmc2_pins_default>; 304035cc395SAxe Yang pinctrl-1 = <&mmc2_pins_uhs>; 305035cc395SAxe Yang pinctrl-2 = <&mmc2_pins_eint>; 306035cc395SAxe Yang bus-width = <4>; 307035cc395SAxe Yang max-frequency = <200000000>; 308035cc395SAxe Yang cap-sd-highspeed; 309035cc395SAxe Yang sd-uhs-sdr104; 310035cc395SAxe Yang keep-power-in-suspend; 311035cc395SAxe Yang wakeup-source; 312035cc395SAxe Yang cap-sdio-irq; 313035cc395SAxe Yang no-mmc; 314035cc395SAxe Yang no-sd; 315035cc395SAxe Yang non-removable; 316035cc395SAxe Yang vmmc-supply = <&sdio_fixed_3v3>; 317035cc395SAxe Yang vqmmc-supply = <&mt6397_vgp3_reg>; 318035cc395SAxe Yang mmc-pwrseq = <&wifi_pwrseq>; 319035cc395SAxe Yang }; 320035cc395SAxe Yang 321c626695eSWenbin Mei... 322