116 lines
3.5 KiB
Plaintext

* NVIDIA Tegra Secure Digital Host Controller
This controller on Tegra family SoCs provides an interface for MMC, SD,
and SDIO types of memory cards.
This file documents differences between the core properties described
by mmc.txt and the properties used by the sdhci-tegra driver.
Required properties:
- compatible : Should be "nvidia,<chip>-sdhci"
Optional properties:
- power-gpios : Specify GPIOs for power control
- nvidia,no-runtime-suspend : No runtime PM support on the host
- nvidia,host-off-card-on : The host is powered off while the card is powered
on during suspend
- tap-delay : initial tap delay value (for Rx at high freqs)
- trim-delay : trim delay value (for Tx at high freqs)
- ddr-trim-delay : trim delay value for DDR50
- calib-3v3-offsets : Autocal HW offset for 3v3
- calib-1v8-offsets : Autocal HW offset for 1v8
- calib-1v8-offsets-uhs-modes : Mask for UHS mode calibration. Valid values are:
Bit 1: SDR12
Bit 2: SDR25
Bit 3: SDR50
Bit 4: DDR50
Bit 5: SDR104
Bit 6: HS200
- uhs-mask : disables a UHS mode when corresponding bit set to 1. Valid values are:
Bit 1: SDR12
Bit 2: SDR25
Bit 3: SDR50
Bit 4: DDR50
Bit 5: SDR104
Bit 6: HS200
- ddr-clk-limit : max clock frequency in DDR mode
- nvidia,disable-ext-loopback : disable external loopback for controller in UHS modes
- nvidia,{vmin,vmax} : corresponding min/max core voltage (in mV) for tuning
coefficients
- nvidia,t2t-{vmin,vmax,vnom}-{slope,int} : tap-to-tap tuning coefficients
- per-frequency tuning data entries (should be in ascending order):
- compatible : should be "nvidia,sdhci-tuning-data"
- clock-frequency : tuning frequency in Hz
- nvidia,thole-{vmin,vmax,vnom}-{slope,int} : tap-hole tuning coefficients
Example:
sdhci@c8000200 {
compatible = "nvidia,tegra20-sdhci";
reg = <0xc8000200 0x200>;
interrupts = <47>;
cd-gpios = <&gpio 69 0>; /* gpio PI5 */
wp-gpios = <&gpio 57 0>; /* gpio PH1 */
power-gpios = <&gpio 155 0>; /* gpio PT3 */
bus-width = <8>;
nvidia,no-runtime-suspend;
nvidia,host-off-card-on;
};
Example 2:
sdhci@700b0600 {
compatible = "nvidia,tegra124-sdhci", "nvidia,tegra114-sdhci";
reg = <0x700b0600 0x200>;
interrupts = <0 31 0x04>;
clocks = <&tegra_car 15>;
tap-delay = <0x4>;
trim-delay = <0x4>;
ddr-trim-delay = <0x4>;
ddr-clk-limit = <51000000>;
calib-3v3-offsets = <0x0202>;
calib-1v8-offsets = <0x0202>;
calib-1v8-offsets-uhs-modes = <0x28>; /* DDR50 | HS200 */
uhs-mask = <0x00>;
nvidia,vmax = <1150>;
nvidia,vmin = <950>;
nvidia,t2t-vnom-slope = <27>;
nvidia,t2t-vnom-int = <118295>;
nvidia,t2t-vmax-slope = <27>;
nvidia,t2t-vmax-int = <118295>;
nvidia,t2t-vmin-slope = <48>;
nvidia,t2t-vmin-int = <188148>;
tuning-data@0 {
compatible = "nvidia,sdhci-tuning-data";
clock-frequency = <81600000>;
nvidia,thole-vnom-slope = <3090>;
nvidia,thole-vnom-int = <351666>;
nvidia,thole-vmax-slope = <3090>;
nvidia,thole-vmax-int = <351666>;
nvidia,thole-vmin-slope = <1583>;
nvidia,thole-vmin-int = <247913>;
};
tuning-data@1 {
compatible = "nvidia,sdhci-tuning-data";
clock-frequency = <136000000>;
nvidia,thole-vnom-slope = <1703>;
nvidia,thole-vnom-int = <186307>;
nvidia,thole-vmax-slope = <1703>;
nvidia,thole-vmax-int = <186307>;
nvidia,thole-vmin-slope = <890>;
nvidia,thole-vmin-int = <130617>;
};
tuning-data@2 {
compatible = "nvidia,sdhci-tuning-data";
clock-frequency = <204000000>;
nvidia,thole-vnom-slope = <1037>;
nvidia,thole-vnom-int = <106934>;
nvidia,thole-vmax-slope = <1037>;
nvidia,thole-vmax-int = <106934>;
nvidia,thole-vmin-slope = <558>;
nvidia,thole-vmin-int = <74315>;
};
};