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