hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/Documentation/devicetree/bindings/mmc/nvidia,tegra20-sdhci.txt
....@@ -14,8 +14,16 @@
1414 - "nvidia,tegra124-sdhci": for Tegra124 and Tegra132
1515 - "nvidia,tegra210-sdhci": for Tegra210
1616 - "nvidia,tegra186-sdhci": for Tegra186
17
-- clocks : Must contain one entry, for the module clock.
18
- See ../clocks/clock-bindings.txt for details.
17
+ - "nvidia,tegra194-sdhci": for Tegra194
18
+- clocks: For Tegra210, Tegra186 and Tegra194 must contain two entries.
19
+ One for the module clock and one for the timeout clock.
20
+ For all other Tegra devices, must contain a single entry for
21
+ the module clock. See ../clocks/clock-bindings.txt for details.
22
+- clock-names: For Tegra210, Tegra186 and Tegra194 must contain the
23
+ strings 'sdhci' and 'tmclk' to represent the module and
24
+ the timeout clocks, respectively.
25
+ For all other Tegra devices must contain the string 'sdhci'
26
+ to represent the module clock.
1927 - resets : Must contain an entry for each entry in reset-names.
2028 See ../reset/reset.txt for details.
2129 - reset-names : Must include the following entries:
....@@ -38,3 +46,98 @@
3846 power-gpios = <&gpio 155 0>; /* gpio PT3 */
3947 bus-width = <8>;
4048 };
49
+
50
+Optional properties for Tegra210, Tegra186 and Tegra194:
51
+- pinctrl-names, pinctrl-0, pinctrl-1 : Specify pad voltage
52
+ configurations. Valid pinctrl-names are "sdmmc-3v3" and "sdmmc-1v8"
53
+ for controllers supporting multiple voltage levels. The order of names
54
+ should correspond to the pin configuration states in pinctrl-0 and
55
+ pinctrl-1.
56
+- pinctrl-names : "sdmmc-3v3-drv" and "sdmmc-1v8-drv" are applicable for
57
+ Tegra210 where pad config registers are in the pinmux register domain
58
+ for pull-up-strength and pull-down-strength values configuration when
59
+ using pads at 3V3 and 1V8 levels.
60
+- nvidia,only-1-8-v : The presence of this property indicates that the
61
+ controller operates at a 1.8 V fixed I/O voltage.
62
+- nvidia,pad-autocal-pull-up-offset-3v3,
63
+ nvidia,pad-autocal-pull-down-offset-3v3 : Specify drive strength
64
+ calibration offsets for 3.3 V signaling modes.
65
+- nvidia,pad-autocal-pull-up-offset-1v8,
66
+ nvidia,pad-autocal-pull-down-offset-1v8 : Specify drive strength
67
+ calibration offsets for 1.8 V signaling modes.
68
+- nvidia,pad-autocal-pull-up-offset-3v3-timeout,
69
+ nvidia,pad-autocal-pull-down-offset-3v3-timeout : Specify drive
70
+ strength used as a fallback in case the automatic calibration times
71
+ out on a 3.3 V signaling mode.
72
+- nvidia,pad-autocal-pull-up-offset-1v8-timeout,
73
+ nvidia,pad-autocal-pull-down-offset-1v8-timeout : Specify drive
74
+ strength used as a fallback in case the automatic calibration times
75
+ out on a 1.8 V signaling mode.
76
+- nvidia,pad-autocal-pull-up-offset-sdr104,
77
+ nvidia,pad-autocal-pull-down-offset-sdr104 : Specify drive strength
78
+ calibration offsets for SDR104 mode.
79
+- nvidia,pad-autocal-pull-up-offset-hs400,
80
+ nvidia,pad-autocal-pull-down-offset-hs400 : Specify drive strength
81
+ calibration offsets for HS400 mode.
82
+- nvidia,default-tap : Specify the default inbound sampling clock
83
+ trimmer value for non-tunable modes.
84
+- nvidia,default-trim : Specify the default outbound clock trimmer
85
+ value.
86
+- nvidia,dqs-trim : Specify DQS trim value for HS400 timing
87
+
88
+ Notes on the pad calibration pull up and pulldown offset values:
89
+ - The property values are drive codes which are programmed into the
90
+ PD_OFFSET and PU_OFFSET sections of the
91
+ SDHCI_TEGRA_AUTO_CAL_CONFIG register.
92
+ - A higher value corresponds to higher drive strength. Please refer
93
+ to the reference manual of the SoC for correct values.
94
+ - The SDR104 and HS400 timing specific values are used in
95
+ corresponding modes if specified.
96
+
97
+ Notes on tap and trim values:
98
+ - The values are used for compensating trace length differences
99
+ by adjusting the sampling point.
100
+ - The values are programmed to the Vendor Clock Control Register.
101
+ Please refer to the reference manual of the SoC for correct
102
+ values.
103
+ - The DQS trim values are only used on controllers which support
104
+ HS400 timing. Only SDMMC4 on Tegra210 and Tegra 186 supports
105
+ HS400.
106
+
107
+Example:
108
+sdhci@700b0000 {
109
+ compatible = "nvidia,tegra124-sdhci";
110
+ reg = <0x0 0x700b0000 0x0 0x200>;
111
+ interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
112
+ clocks = <&tegra_car TEGRA210_CLK_SDMMC1>;
113
+ clock-names = "sdhci";
114
+ resets = <&tegra_car 14>;
115
+ reset-names = "sdhci";
116
+ pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
117
+ pinctrl-0 = <&sdmmc1_3v3>;
118
+ pinctrl-1 = <&sdmmc1_1v8>;
119
+ nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
120
+ nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
121
+ nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
122
+ nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
123
+ status = "disabled";
124
+};
125
+
126
+sdhci@700b0000 {
127
+ compatible = "nvidia,tegra210-sdhci";
128
+ reg = <0x0 0x700b0000 0x0 0x200>;
129
+ interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
130
+ clocks = <&tegra_car TEGRA210_CLK_SDMMC1>,
131
+ <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>;
132
+ clock-names = "sdhci", "tmclk";
133
+ resets = <&tegra_car 14>;
134
+ reset-names = "sdhci";
135
+ pinctrl-names = "sdmmc-3v3", "sdmmc-1v8";
136
+ pinctrl-0 = <&sdmmc1_3v3>;
137
+ pinctrl-1 = <&sdmmc1_1v8>;
138
+ nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>;
139
+ nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>;
140
+ nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>;
141
+ nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>;
142
+ status = "disabled";
143
+};