ACPI / property: Document RS485 _DSD properties
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / mmc / nvidia,tegra20-sdhci.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/mmc/nvidia,tegra20-sdhci.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: NVIDIA Tegra Secure Digital Host Controller
8
9 maintainers:
10   - Thierry Reding <thierry.reding@gmail.com>
11   - Jon Hunter <jonathanh@nvidia.com>
12
13 description: |
14   This controller on Tegra family SoCs provides an interface for MMC, SD, and
15   SDIO types of memory cards.
16
17   This file documents differences between the core properties described by
18   mmc-controller.yaml and the properties for the Tegra SDHCI controller.
19
20 properties:
21   compatible:
22     oneOf:
23       - enum:
24           - nvidia,tegra20-sdhci
25           - nvidia,tegra30-sdhci
26           - nvidia,tegra114-sdhci
27           - nvidia,tegra124-sdhci
28           - nvidia,tegra210-sdhci
29           - nvidia,tegra186-sdhci
30           - nvidia,tegra194-sdhci
31
32       - items:
33           - const: nvidia,tegra132-sdhci
34           - const: nvidia,tegra124-sdhci
35
36       - items:
37           - enum:
38               - nvidia,tegra194-sdhci
39               - nvidia,tegra234-sdhci
40           - const: nvidia,tegra186-sdhci
41
42   reg:
43     maxItems: 1
44
45   interrupts:
46     maxItems: 1
47
48   assigned-clocks: true
49   assigned-clock-parents: true
50   assigned-clock-rates: true
51
52   clocks:
53     minItems: 1
54     maxItems: 2
55
56   clock-names:
57     minItems: 1
58     maxItems: 2
59
60   resets:
61     items:
62       - description: module reset
63
64   reset-names:
65     items:
66       - const: sdhci
67
68   power-gpios:
69     description: specify GPIOs for power control
70     maxItems: 1
71
72   interconnects:
73     items:
74       - description: memory read client
75       - description: memory write client
76
77   interconnect-names:
78     items:
79       - const: dma-mem # read
80       - const: write
81
82   iommus:
83     maxItems: 1
84
85   operating-points-v2:
86     $ref: "/schemas/types.yaml#/definitions/phandle"
87
88   power-domains:
89     items:
90       - description: phandle to the core power domain
91
92   nvidia,default-tap:
93     description: Specify the default inbound sampling clock trimmer value for
94       non-tunable modes.
95
96       The values are used for compensating trace length differences by
97       adjusting the sampling point. The values are programmed to the Vendor
98       Clock Control Register. Please refer to the reference manual of the SoC
99       for correct values.
100
101       The DQS trim values are only used on controllers which support HS400
102       timing. Only SDMMC4 on Tegra210 and Tegra186 supports HS400.
103     $ref: "/schemas/types.yaml#/definitions/uint32"
104
105   nvidia,default-trim:
106     description: Specify the default outbound clock trimmer value.
107     $ref: "/schemas/types.yaml#/definitions/uint32"
108
109   nvidia,dqs-trim:
110     description: Specify DQS trim value for HS400 timing.
111     $ref: "/schemas/types.yaml#/definitions/uint32"
112
113   nvidia,pad-autocal-pull-down-offset-1v8:
114     description: Specify drive strength calibration offsets for 1.8 V
115       signaling modes.
116     $ref: "/schemas/types.yaml#/definitions/uint32"
117
118   nvidia,pad-autocal-pull-down-offset-1v8-timeout:
119     description: Specify drive strength used as a fallback in case the
120       automatic calibration times out on a 1.8 V signaling mode.
121     $ref: "/schemas/types.yaml#/definitions/uint32"
122
123   nvidia,pad-autocal-pull-down-offset-3v3:
124     description: Specify drive strength calibration offsets for 3.3 V
125       signaling modes.
126     $ref: "/schemas/types.yaml#/definitions/uint32"
127
128   nvidia,pad-autocal-pull-down-offset-3v3-timeout:
129     description: Specify drive strength used as a fallback in case the
130       automatic calibration times out on a 3.3 V signaling mode.
131     $ref: "/schemas/types.yaml#/definitions/uint32"
132
133   nvidia,pad-autocal-pull-down-offset-sdr104:
134     description: Specify drive strength calibration offsets for SDR104 mode.
135     $ref: "/schemas/types.yaml#/definitions/uint32"
136
137   nvidia,pad-autocal-pull-down-offset-hs400:
138     description: Specify drive strength calibration offsets for HS400 mode.
139     $ref: "/schemas/types.yaml#/definitions/uint32"
140
141   nvidia,pad-autocal-pull-up-offset-1v8:
142     description: Specify drive strength calibration offsets for 1.8 V
143       signaling modes.
144     $ref: "/schemas/types.yaml#/definitions/uint32"
145
146   nvidia,pad-autocal-pull-up-offset-1v8-timeout:
147     description: Specify drive strength used as a fallback in case the
148       automatic calibration times out on a 1.8 V signaling mode.
149     $ref: "/schemas/types.yaml#/definitions/uint32"
150
151   nvidia,pad-autocal-pull-up-offset-3v3:
152     description: Specify drive strength calibration offsets for 3.3 V
153       signaling modes.
154
155       The property values are drive codes which are programmed into the
156       PD_OFFSET and PU_OFFSET sections of the SDHCI_TEGRA_AUTO_CAL_CONFIG
157       register. A higher value corresponds to higher drive strength. Please
158       refer to the reference manual of the SoC for correct values. The SDR104
159       and HS400 timing specific values are used in corresponding modes if
160       specified.
161     $ref: "/schemas/types.yaml#/definitions/uint32"
162
163   nvidia,pad-autocal-pull-up-offset-3v3-timeout:
164     description: Specify drive strength used as a fallback in case the
165       automatic calibration times out on a 3.3 V signaling mode.
166     $ref: "/schemas/types.yaml#/definitions/uint32"
167
168   nvidia,pad-autocal-pull-up-offset-sdr104:
169     description: Specify drive strength calibration offsets for SDR104 mode.
170     $ref: "/schemas/types.yaml#/definitions/uint32"
171
172   nvidia,pad-autocal-pull-up-offset-hs400:
173     description: Specify drive strength calibration offsets for HS400 mode.
174     $ref: "/schemas/types.yaml#/definitions/uint32"
175
176   nvidia,only-1-8v:
177     description: The presence of this property indicates that the controller
178       operates at a 1.8 V fixed I/O voltage.
179     $ref: "/schemas/types.yaml#/definitions/flag"
180
181 required:
182   - compatible
183   - reg
184   - interrupts
185   - clocks
186   - resets
187   - reset-names
188
189 allOf:
190   - $ref: "mmc-controller.yaml"
191   - if:
192       properties:
193         compatible:
194           contains:
195             enum:
196               - nvidia,tegra20-sdhci
197               - nvidia,tegra30-sdhci
198               - nvidia,tegra114-sdhci
199               - nvidia,tegra124-sdhci
200         clocks:
201           items:
202             - description: module clock
203           minItems: 1
204           maxItems: 1
205     else:
206       properties:
207         clocks:
208           items:
209             - description: module clock
210             - description: timeout clock
211           minItems: 2
212           maxItems: 2
213         clock-names:
214           items:
215             - const: sdhci
216             - const: tmclk
217           minItems: 2
218           maxItems: 2
219       required:
220         - clock-names
221
222   - if:
223       properties:
224         compatible:
225           contains:
226             const: nvidia,tegra210-sdhci
227     then:
228       properties:
229         pinctrl-names:
230           oneOf:
231             - items:
232                 - const: sdmmc-3v3
233                   description: pad configuration for 3.3 V
234                 - const: sdmmc-1v8
235                   description: pad configuration for 1.8 V
236                 - const: sdmmc-3v3-drv
237                   description: pull-up/down configuration for 3.3 V
238                 - const: sdmmc-1v8-drv
239                   description: pull-up/down configuration for 1.8 V
240             - items:
241                 - const: sdmmc-3v3-drv
242                   description: pull-up/down configuration for 3.3 V
243                 - const: sdmmc-1v8-drv
244                   description: pull-up/down configuration for 1.8 V
245             - items:
246                 - const: sdmmc-1v8-drv
247                   description: pull-up/down configuration for 1.8 V
248       required:
249         - clock-names
250   - if:
251       properties:
252         compatible:
253           contains:
254             enum:
255               - nvidia,tegra186-sdhci
256               - nvidia,tegra194-sdhci
257     then:
258       properties:
259         pinctrl-names:
260           items:
261             - const: sdmmc-3v3
262               description: pad configuration for 3.3 V
263             - const: sdmmc-1v8
264               description: pad configuration for 1.8 V
265       required:
266         - clock-names
267
268 unevaluatedProperties: false
269
270 examples:
271   - |
272     #include <dt-bindings/interrupt-controller/arm-gic.h>
273
274     mmc@c8000200 {
275         compatible = "nvidia,tegra20-sdhci";
276         reg = <0xc8000200 0x200>;
277         interrupts = <47>;
278         clocks = <&tegra_car 14>;
279         resets = <&tegra_car 14>;
280         reset-names = "sdhci";
281         cd-gpios = <&gpio 69 0>; /* gpio PI5 */
282         wp-gpios = <&gpio 57 0>; /* gpio PH1 */
283         power-gpios = <&gpio 155 0>; /* gpio PT3 */
284         bus-width = <8>;
285     };
286
287   - |
288     #include <dt-bindings/clock/tegra210-car.h>
289     #include <dt-bindings/interrupt-controller/arm-gic.h>
290
291     mmc@700b0000 {
292         compatible = "nvidia,tegra210-sdhci";
293         reg = <0x700b0000 0x200>;
294         interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
295         clocks = <&tegra_car TEGRA210_CLK_SDMMC1>,
296                  <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>;
297         clock-names = "sdhci", "tmclk";
298         resets = <&tegra_car 14>;
299         reset-names = "sdhci";
300         pinctrl-names = "sdmmc-3v3", "sdmmc-1v8",
301                         "sdmmc-3v3-drv", "sdmmc-1v8-drv";
302         pinctrl-0 = <&sdmmc1_3v3>;
303         pinctrl-1 = <&sdmmc1_1v8>;
304         pinctrl-2 = <&sdmmc1_3v3_drv>;
305         pinctrl-3 = <&sdmmc1_1v8_drv>;
306         nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
307         nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
308         nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
309         nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
310         nvidia,default-tap = <0x2>;
311         nvidia,default-trim = <0x4>;
312         assigned-clocks = <&tegra_car TEGRA210_CLK_SDMMC4>,
313                           <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>,
314                           <&tegra_car TEGRA210_CLK_PLL_C4>;
315         assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
316         assigned-clock-rates = <200000000>, <1000000000>, <1000000000>;
317     };