blob: 2cf3affa1be705b37a1bf95879980df3ffc4e157 [file] [log] [blame]
Grant Likely275173b2011-08-23 12:15:33 -06001* NVIDIA Tegra Secure Digital Host Controller
2
3This controller on Tegra family SoCs provides an interface for MMC, SD,
4and SDIO types of memory cards.
5
Chris Ball4efafee2012-06-11 21:48:16 -04006This file documents differences between the core properties described
7by mmc.txt and the properties used by the sdhci-tegra driver.
8
Grant Likely275173b2011-08-23 12:15:33 -06009Required properties:
Thierry Reding4166b302017-03-14 20:01:51 +010010- compatible : should be one of:
11 - "nvidia,tegra20-sdhci": for Tegra20
12 - "nvidia,tegra30-sdhci": for Tegra30
13 - "nvidia,tegra114-sdhci": for Tegra114
14 - "nvidia,tegra124-sdhci": for Tegra124 and Tegra132
15 - "nvidia,tegra210-sdhci": for Tegra210
Thierry Redinge8ce6742017-03-14 20:01:52 +010016 - "nvidia,tegra186-sdhci": for Tegra186
Sowjanya Komatineniad64a7902019-03-23 21:45:21 -070017 - "nvidia,tegra194-sdhci": for Tegra194
Stephen Warrend8f64792013-11-06 14:00:25 -070018- clocks : Must contain one entry, for the module clock.
19 See ../clocks/clock-bindings.txt for details.
Stephen Warren07999582013-11-07 10:11:27 -070020- resets : Must contain an entry for each entry in reset-names.
21 See ../reset/reset.txt for details.
22- reset-names : Must include the following entries:
23 - sdhci
Grant Likely275173b2011-08-23 12:15:33 -060024
25Optional properties:
Grant Likely275173b2011-08-23 12:15:33 -060026- power-gpios : Specify GPIOs for power control
27
28Example:
29
30sdhci@c8000200 {
31 compatible = "nvidia,tegra20-sdhci";
32 reg = <0xc8000200 0x200>;
33 interrupts = <47>;
Stephen Warrend8f64792013-11-06 14:00:25 -070034 clocks = <&tegra_car 14>;
Stephen Warren07999582013-11-07 10:11:27 -070035 resets = <&tegra_car 14>;
36 reset-names = "sdhci";
Grant Likely275173b2011-08-23 12:15:33 -060037 cd-gpios = <&gpio 69 0>; /* gpio PI5 */
38 wp-gpios = <&gpio 57 0>; /* gpio PH1 */
39 power-gpios = <&gpio 155 0>; /* gpio PT3 */
Arnd Bergmann7f217792012-05-13 00:14:24 -040040 bus-width = <8>;
Grant Likely275173b2011-08-23 12:15:33 -060041};
Aapo Vienamo3700cdf2018-08-30 18:06:03 +030042
Sowjanya Komatineni7c3cf5c2019-01-10 14:46:01 -080043Optional properties for Tegra210, Tegra186 and Tegra194:
Aapo Vienamo3700cdf2018-08-30 18:06:03 +030044- pinctrl-names, pinctrl-0, pinctrl-1 : Specify pad voltage
45 configurations. Valid pinctrl-names are "sdmmc-3v3" and "sdmmc-1v8"
46 for controllers supporting multiple voltage levels. The order of names
47 should correspond to the pin configuration states in pinctrl-0 and
48 pinctrl-1.
Sowjanya Komatineni7c3cf5c2019-01-10 14:46:01 -080049- pinctrl-names : "sdmmc-3v3-drv" and "sdmmc-1v8-drv" are applicable for
50 Tegra210 where pad config registers are in the pinmux register domain
51 for pull-up-strength and pull-down-strength values configuration when
52 using pads at 3V3 and 1V8 levels.
Aapo Vienamo1dd2a752018-08-30 18:06:04 +030053- nvidia,only-1-8-v : The presence of this property indicates that the
54 controller operates at a 1.8 V fixed I/O voltage.
55- nvidia,pad-autocal-pull-up-offset-3v3,
56 nvidia,pad-autocal-pull-down-offset-3v3 : Specify drive strength
57 calibration offsets for 3.3 V signaling modes.
58- nvidia,pad-autocal-pull-up-offset-1v8,
59 nvidia,pad-autocal-pull-down-offset-1v8 : Specify drive strength
60 calibration offsets for 1.8 V signaling modes.
61- nvidia,pad-autocal-pull-up-offset-3v3-timeout,
62 nvidia,pad-autocal-pull-down-offset-3v3-timeout : Specify drive
63 strength used as a fallback in case the automatic calibration times
64 out on a 3.3 V signaling mode.
65- nvidia,pad-autocal-pull-up-offset-1v8-timeout,
66 nvidia,pad-autocal-pull-down-offset-1v8-timeout : Specify drive
67 strength used as a fallback in case the automatic calibration times
68 out on a 1.8 V signaling mode.
69- nvidia,pad-autocal-pull-up-offset-sdr104,
70 nvidia,pad-autocal-pull-down-offset-sdr104 : Specify drive strength
71 calibration offsets for SDR104 mode.
72- nvidia,pad-autocal-pull-up-offset-hs400,
73 nvidia,pad-autocal-pull-down-offset-hs400 : Specify drive strength
74 calibration offsets for HS400 mode.
Aapo Vienamob7783cf2018-08-30 18:06:05 +030075- nvidia,default-tap : Specify the default inbound sampling clock
76 trimmer value for non-tunable modes.
77- nvidia,default-trim : Specify the default outbound clock trimmer
78 value.
Aapo Vienamo3ecea592018-08-10 21:13:58 +030079- nvidia,dqs-trim : Specify DQS trim value for HS400 timing
Aapo Vienamo1dd2a752018-08-30 18:06:04 +030080
81 Notes on the pad calibration pull up and pulldown offset values:
82 - The property values are drive codes which are programmed into the
83 PD_OFFSET and PU_OFFSET sections of the
84 SDHCI_TEGRA_AUTO_CAL_CONFIG register.
85 - A higher value corresponds to higher drive strength. Please refer
86 to the reference manual of the SoC for correct values.
87 - The SDR104 and HS400 timing specific values are used in
88 corresponding modes if specified.
Aapo Vienamo3700cdf2018-08-30 18:06:03 +030089
Aapo Vienamob7783cf2018-08-30 18:06:05 +030090 Notes on tap and trim values:
91 - The values are used for compensating trace length differences
92 by adjusting the sampling point.
93 - The values are programmed to the Vendor Clock Control Register.
94 Please refer to the reference manual of the SoC for correct
95 values.
Aapo Vienamo3ecea592018-08-10 21:13:58 +030096 - The DQS trim values are only used on controllers which support
97 HS400 timing. Only SDMMC4 on Tegra210 and Tegra 186 supports
98 HS400.
Aapo Vienamob7783cf2018-08-30 18:06:05 +030099
Aapo Vienamo3700cdf2018-08-30 18:06:03 +0300100Example:
101sdhci@700b0000 {
102 compatible = "nvidia,tegra210-sdhci", "nvidia,tegra124-sdhci";
103 reg = <0x0 0x700b0000 0x0 0x200>;
104 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
105 clocks = <&tegra_car TEGRA210_CLK_SDMMC1>;
106 clock-names = "sdhci";
107 resets = <&tegra_car 14>;
108 reset-names = "sdhci";
109 pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
110 pinctrl-0 = <&sdmmc1_3v3>;
111 pinctrl-1 = <&sdmmc1_1v8>;
Aapo Vienamo1dd2a752018-08-30 18:06:04 +0300112 nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
113 nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
114 nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
115 nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
Aapo Vienamo3700cdf2018-08-30 18:06:03 +0300116 status = "disabled";
117};