1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mmc/fsl-imx-esdhc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Freescale Enhanced Secure Digital Host Controller (eSDHC) for i.MX
8
9maintainers:
10  - Shawn Guo <shawnguo@kernel.org>
11
12allOf:
13  - $ref: sdhci-common.yaml#
14
15description: |
16  The Enhanced Secure Digital Host Controller on Freescale i.MX family
17  provides an interface for MMC, SD, and SDIO types of memory cards.
18
19  This file documents differences between the core properties described
20  by mmc.txt and the properties used by the sdhci-esdhc-imx driver.
21
22properties:
23  compatible:
24    oneOf:
25      - enum:
26          - fsl,imx25-esdhc
27          - fsl,imx35-esdhc
28          - fsl,imx51-esdhc
29          - fsl,imx53-esdhc
30          - fsl,imx6q-usdhc
31          - fsl,imx6sl-usdhc
32          - fsl,imx6sx-usdhc
33          - fsl,imx7d-usdhc
34          - fsl,imx7ulp-usdhc
35          - fsl,imx8mm-usdhc
36          - fsl,imxrt1050-usdhc
37          - nxp,s32g2-usdhc
38      - items:
39          - const: fsl,imx50-esdhc
40          - const: fsl,imx53-esdhc
41      - items:
42          - enum:
43              - fsl,imx6sll-usdhc
44              - fsl,imx6ull-usdhc
45              - fsl,imx6ul-usdhc
46          - const: fsl,imx6sx-usdhc
47      - items:
48          - const: fsl,imx7d-usdhc
49          - const: fsl,imx6sl-usdhc
50      - items:
51          - enum:
52              - fsl,imx8mq-usdhc
53          - const: fsl,imx7d-usdhc
54      - items:
55          - enum:
56              - fsl,imx8mn-usdhc
57              - fsl,imx8mp-usdhc
58              - fsl,imx8ulp-usdhc
59              - fsl,imx93-usdhc
60              - fsl,imx95-usdhc
61          - const: fsl,imx8mm-usdhc
62      - items:
63          - enum:
64              - fsl,imx8dxl-usdhc
65              - fsl,imx8qm-usdhc
66          - const: fsl,imx8qxp-usdhc
67      - items:
68          - enum:
69              - fsl,imx8mm-usdhc
70              - fsl,imx8mn-usdhc
71              - fsl,imx8mp-usdhc
72              - fsl,imx8qm-usdhc
73              - fsl,imx8qxp-usdhc
74          - const: fsl,imx7d-usdhc
75        deprecated: true
76      - items:
77          - enum:
78              - fsl,imx8mn-usdhc
79              - fsl,imx8mp-usdhc
80          - const: fsl,imx8mm-usdhc
81          - const: fsl,imx7d-usdhc
82        deprecated: true
83      - items:
84          - enum:
85              - fsl,imx8dxl-usdhc
86              - fsl,imx8qm-usdhc
87          - const: fsl,imx8qxp-usdhc
88          - const: fsl,imx7d-usdhc
89        deprecated: true
90      - items:
91          - enum:
92              - fsl,imxrt1170-usdhc
93          - const: fsl,imxrt1050-usdhc
94      - items:
95          - const: nxp,s32g3-usdhc
96          - const: nxp,s32g2-usdhc
97
98  reg:
99    maxItems: 1
100
101  interrupts:
102    maxItems: 1
103
104  fsl,wp-controller:
105    description: |
106      boolean, if present, indicate to use controller internal write protection.
107    type: boolean
108
109  fsl,delay-line:
110    $ref: /schemas/types.yaml#/definitions/uint32
111    description: |
112      Specify the number of delay cells for override mode.
113      This is used to set the clock delay for DLL(Delay Line) on override mode
114      to select a proper data sampling window in case the clock quality is not good
115      because the signal path is too long on the board. Please refer to eSDHC/uSDHC
116      chapter, DLL (Delay Line) section in RM for details.
117    default: 0
118
119  voltage-ranges:
120    $ref: /schemas/types.yaml#/definitions/uint32-matrix
121    description: |
122      Specify the voltage range in case there are software transparent level
123      shifters on the outputs of the controller. Two cells are required, first
124      cell specifies minimum slot voltage (mV), second cell specifies maximum
125      slot voltage (mV).
126    items:
127      items:
128        - description: value for minimum slot voltage
129        - description: value for maximum slot voltage
130    maxItems: 1
131
132  fsl,tuning-start-tap:
133    $ref: /schemas/types.yaml#/definitions/uint32
134    description: |
135      Specify the start delay cell point when send first CMD19 in tuning procedure.
136    default: 0
137
138  fsl,tuning-step:
139    $ref: /schemas/types.yaml#/definitions/uint32
140    description: |
141      Specify the increasing delay cell steps in tuning procedure.
142      The uSDHC use one delay cell as default increasing step to do tuning process.
143      This property allows user to change the tuning step to more than one delay
144      cell which is useful for some special boards or cards when the default
145      tuning step can't find the proper delay window within limited tuning retries.
146    default: 0
147
148  fsl,strobe-dll-delay-target:
149    $ref: /schemas/types.yaml#/definitions/uint32
150    description: |
151      Specify the strobe dll control slave delay target.
152      This delay target programming host controller loopback read clock, and this
153      property allows user to change the delay target for the strobe input read clock.
154      If not use this property, driver default set the delay target to value 7.
155      Only eMMC HS400 mode need to take care of this property.
156    default: 0
157
158  clocks:
159    maxItems: 3
160    description:
161      Handle clocks for the sdhc controller.
162
163  clock-names:
164    items:
165      - const: ipg
166      - const: ahb
167      - const: per
168
169  iommus:
170    maxItems: 1
171
172  power-domains:
173    maxItems: 1
174
175  pinctrl-names:
176    oneOf:
177      - minItems: 3
178        items:
179          - const: default
180          - const: state_100mhz
181          - const: state_200mhz
182          - const: sleep
183      - minItems: 2
184        items:
185          - const: default
186          - const: state_100mhz
187          - const: sleep
188      - minItems: 1
189        items:
190          - const: default
191          - const: sleep
192
193required:
194  - compatible
195  - reg
196  - interrupts
197
198unevaluatedProperties: false
199
200examples:
201  - |
202    mmc@70004000 {
203        compatible = "fsl,imx51-esdhc";
204        reg = <0x70004000 0x4000>;
205        interrupts = <1>;
206        fsl,wp-controller;
207    };
208
209    mmc@70008000 {
210        compatible = "fsl,imx51-esdhc";
211        reg = <0x70008000 0x4000>;
212        interrupts = <2>;
213        cd-gpios = <&gpio1 6 0>; /* GPIO1_6 */
214        wp-gpios = <&gpio1 5 0>; /* GPIO1_5 */
215    };
216