1*c66ec88fSEmmanuel Vadot* NVIDIA Tegra Secure Digital Host Controller 2*c66ec88fSEmmanuel Vadot 3*c66ec88fSEmmanuel VadotThis controller on Tegra family SoCs provides an interface for MMC, SD, 4*c66ec88fSEmmanuel Vadotand SDIO types of memory cards. 5*c66ec88fSEmmanuel Vadot 6*c66ec88fSEmmanuel VadotThis file documents differences between the core properties described 7*c66ec88fSEmmanuel Vadotby mmc.txt and the properties used by the sdhci-tegra driver. 8*c66ec88fSEmmanuel Vadot 9*c66ec88fSEmmanuel VadotRequired properties: 10*c66ec88fSEmmanuel Vadot- compatible : should be one of: 11*c66ec88fSEmmanuel Vadot - "nvidia,tegra20-sdhci": for Tegra20 12*c66ec88fSEmmanuel Vadot - "nvidia,tegra30-sdhci": for Tegra30 13*c66ec88fSEmmanuel Vadot - "nvidia,tegra114-sdhci": for Tegra114 14*c66ec88fSEmmanuel Vadot - "nvidia,tegra124-sdhci": for Tegra124 and Tegra132 15*c66ec88fSEmmanuel Vadot - "nvidia,tegra210-sdhci": for Tegra210 16*c66ec88fSEmmanuel Vadot - "nvidia,tegra186-sdhci": for Tegra186 17*c66ec88fSEmmanuel Vadot - "nvidia,tegra194-sdhci": for Tegra194 18*c66ec88fSEmmanuel Vadot- clocks: For Tegra210, Tegra186 and Tegra194 must contain two entries. 19*c66ec88fSEmmanuel Vadot One for the module clock and one for the timeout clock. 20*c66ec88fSEmmanuel Vadot For all other Tegra devices, must contain a single entry for 21*c66ec88fSEmmanuel Vadot the module clock. See ../clocks/clock-bindings.txt for details. 22*c66ec88fSEmmanuel Vadot- clock-names: For Tegra210, Tegra186 and Tegra194 must contain the 23*c66ec88fSEmmanuel Vadot strings 'sdhci' and 'tmclk' to represent the module and 24*c66ec88fSEmmanuel Vadot the timeout clocks, respectively. 25*c66ec88fSEmmanuel Vadot For all other Tegra devices must contain the string 'sdhci' 26*c66ec88fSEmmanuel Vadot to represent the module clock. 27*c66ec88fSEmmanuel Vadot- resets : Must contain an entry for each entry in reset-names. 28*c66ec88fSEmmanuel Vadot See ../reset/reset.txt for details. 29*c66ec88fSEmmanuel Vadot- reset-names : Must include the following entries: 30*c66ec88fSEmmanuel Vadot - sdhci 31*c66ec88fSEmmanuel Vadot 32*c66ec88fSEmmanuel VadotOptional properties: 33*c66ec88fSEmmanuel Vadot- power-gpios : Specify GPIOs for power control 34*c66ec88fSEmmanuel Vadot 35*c66ec88fSEmmanuel VadotExample: 36*c66ec88fSEmmanuel Vadot 37*c66ec88fSEmmanuel Vadotsdhci@c8000200 { 38*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra20-sdhci"; 39*c66ec88fSEmmanuel Vadot reg = <0xc8000200 0x200>; 40*c66ec88fSEmmanuel Vadot interrupts = <47>; 41*c66ec88fSEmmanuel Vadot clocks = <&tegra_car 14>; 42*c66ec88fSEmmanuel Vadot resets = <&tegra_car 14>; 43*c66ec88fSEmmanuel Vadot reset-names = "sdhci"; 44*c66ec88fSEmmanuel Vadot cd-gpios = <&gpio 69 0>; /* gpio PI5 */ 45*c66ec88fSEmmanuel Vadot wp-gpios = <&gpio 57 0>; /* gpio PH1 */ 46*c66ec88fSEmmanuel Vadot power-gpios = <&gpio 155 0>; /* gpio PT3 */ 47*c66ec88fSEmmanuel Vadot bus-width = <8>; 48*c66ec88fSEmmanuel Vadot}; 49*c66ec88fSEmmanuel Vadot 50*c66ec88fSEmmanuel VadotOptional properties for Tegra210, Tegra186 and Tegra194: 51*c66ec88fSEmmanuel Vadot- pinctrl-names, pinctrl-0, pinctrl-1 : Specify pad voltage 52*c66ec88fSEmmanuel Vadot configurations. Valid pinctrl-names are "sdmmc-3v3" and "sdmmc-1v8" 53*c66ec88fSEmmanuel Vadot for controllers supporting multiple voltage levels. The order of names 54*c66ec88fSEmmanuel Vadot should correspond to the pin configuration states in pinctrl-0 and 55*c66ec88fSEmmanuel Vadot pinctrl-1. 56*c66ec88fSEmmanuel Vadot- pinctrl-names : "sdmmc-3v3-drv" and "sdmmc-1v8-drv" are applicable for 57*c66ec88fSEmmanuel Vadot Tegra210 where pad config registers are in the pinmux register domain 58*c66ec88fSEmmanuel Vadot for pull-up-strength and pull-down-strength values configuration when 59*c66ec88fSEmmanuel Vadot using pads at 3V3 and 1V8 levels. 60*c66ec88fSEmmanuel Vadot- nvidia,only-1-8-v : The presence of this property indicates that the 61*c66ec88fSEmmanuel Vadot controller operates at a 1.8 V fixed I/O voltage. 62*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-3v3, 63*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-3v3 : Specify drive strength 64*c66ec88fSEmmanuel Vadot calibration offsets for 3.3 V signaling modes. 65*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-1v8, 66*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-1v8 : Specify drive strength 67*c66ec88fSEmmanuel Vadot calibration offsets for 1.8 V signaling modes. 68*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-3v3-timeout, 69*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-3v3-timeout : Specify drive 70*c66ec88fSEmmanuel Vadot strength used as a fallback in case the automatic calibration times 71*c66ec88fSEmmanuel Vadot out on a 3.3 V signaling mode. 72*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-1v8-timeout, 73*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-1v8-timeout : Specify drive 74*c66ec88fSEmmanuel Vadot strength used as a fallback in case the automatic calibration times 75*c66ec88fSEmmanuel Vadot out on a 1.8 V signaling mode. 76*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-sdr104, 77*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-sdr104 : Specify drive strength 78*c66ec88fSEmmanuel Vadot calibration offsets for SDR104 mode. 79*c66ec88fSEmmanuel Vadot- nvidia,pad-autocal-pull-up-offset-hs400, 80*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-hs400 : Specify drive strength 81*c66ec88fSEmmanuel Vadot calibration offsets for HS400 mode. 82*c66ec88fSEmmanuel Vadot- nvidia,default-tap : Specify the default inbound sampling clock 83*c66ec88fSEmmanuel Vadot trimmer value for non-tunable modes. 84*c66ec88fSEmmanuel Vadot- nvidia,default-trim : Specify the default outbound clock trimmer 85*c66ec88fSEmmanuel Vadot value. 86*c66ec88fSEmmanuel Vadot- nvidia,dqs-trim : Specify DQS trim value for HS400 timing 87*c66ec88fSEmmanuel Vadot 88*c66ec88fSEmmanuel Vadot Notes on the pad calibration pull up and pulldown offset values: 89*c66ec88fSEmmanuel Vadot - The property values are drive codes which are programmed into the 90*c66ec88fSEmmanuel Vadot PD_OFFSET and PU_OFFSET sections of the 91*c66ec88fSEmmanuel Vadot SDHCI_TEGRA_AUTO_CAL_CONFIG register. 92*c66ec88fSEmmanuel Vadot - A higher value corresponds to higher drive strength. Please refer 93*c66ec88fSEmmanuel Vadot to the reference manual of the SoC for correct values. 94*c66ec88fSEmmanuel Vadot - The SDR104 and HS400 timing specific values are used in 95*c66ec88fSEmmanuel Vadot corresponding modes if specified. 96*c66ec88fSEmmanuel Vadot 97*c66ec88fSEmmanuel Vadot Notes on tap and trim values: 98*c66ec88fSEmmanuel Vadot - The values are used for compensating trace length differences 99*c66ec88fSEmmanuel Vadot by adjusting the sampling point. 100*c66ec88fSEmmanuel Vadot - The values are programmed to the Vendor Clock Control Register. 101*c66ec88fSEmmanuel Vadot Please refer to the reference manual of the SoC for correct 102*c66ec88fSEmmanuel Vadot values. 103*c66ec88fSEmmanuel Vadot - The DQS trim values are only used on controllers which support 104*c66ec88fSEmmanuel Vadot HS400 timing. Only SDMMC4 on Tegra210 and Tegra 186 supports 105*c66ec88fSEmmanuel Vadot HS400. 106*c66ec88fSEmmanuel Vadot 107*c66ec88fSEmmanuel VadotExample: 108*c66ec88fSEmmanuel Vadotsdhci@700b0000 { 109*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra124-sdhci"; 110*c66ec88fSEmmanuel Vadot reg = <0x0 0x700b0000 0x0 0x200>; 111*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 112*c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_SDMMC1>; 113*c66ec88fSEmmanuel Vadot clock-names = "sdhci"; 114*c66ec88fSEmmanuel Vadot resets = <&tegra_car 14>; 115*c66ec88fSEmmanuel Vadot reset-names = "sdhci"; 116*c66ec88fSEmmanuel Vadot pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; 117*c66ec88fSEmmanuel Vadot pinctrl-0 = <&sdmmc1_3v3>; 118*c66ec88fSEmmanuel Vadot pinctrl-1 = <&sdmmc1_1v8>; 119*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>; 120*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>; 121*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>; 122*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>; 123*c66ec88fSEmmanuel Vadot status = "disabled"; 124*c66ec88fSEmmanuel Vadot}; 125*c66ec88fSEmmanuel Vadot 126*c66ec88fSEmmanuel Vadotsdhci@700b0000 { 127*c66ec88fSEmmanuel Vadot compatible = "nvidia,tegra210-sdhci"; 128*c66ec88fSEmmanuel Vadot reg = <0x0 0x700b0000 0x0 0x200>; 129*c66ec88fSEmmanuel Vadot interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 130*c66ec88fSEmmanuel Vadot clocks = <&tegra_car TEGRA210_CLK_SDMMC1>, 131*c66ec88fSEmmanuel Vadot <&tegra_car TEGRA210_CLK_SDMMC_LEGACY>; 132*c66ec88fSEmmanuel Vadot clock-names = "sdhci", "tmclk"; 133*c66ec88fSEmmanuel Vadot resets = <&tegra_car 14>; 134*c66ec88fSEmmanuel Vadot reset-names = "sdhci"; 135*c66ec88fSEmmanuel Vadot pinctrl-names = "sdmmc-3v3", "sdmmc-1v8"; 136*c66ec88fSEmmanuel Vadot pinctrl-0 = <&sdmmc1_3v3>; 137*c66ec88fSEmmanuel Vadot pinctrl-1 = <&sdmmc1_1v8>; 138*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-up-offset-3v3 = <0x00>; 139*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-3v3 = <0x7d>; 140*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-up-offset-1v8 = <0x7b>; 141*c66ec88fSEmmanuel Vadot nvidia,pad-autocal-pull-down-offset-1v8 = <0x7b>; 142*c66ec88fSEmmanuel Vadot status = "disabled"; 143*c66ec88fSEmmanuel Vadot}; 144