ARM64: DT: t210: sdhci: Enable periodic calibration
[linux-3.10.git] / Documentation / devicetree / bindings / mmc / sdhci-tegra.txt
1 * Nvidia sdhci-tegra controller
2
3 This file documents differences between the core properties in mmc.txt
4 and the properties used by the sdhci-tegra driver.
5
6 Required properties:
7 - compatible: Should be "nvidia,tegra210-sdhci"
8 - reg: Specify start address and registers count details
9 - interrupts: Specify the interrupts IRQ info for device
10 - id: Specify device id
11
12 Optional properties:
13 - built-in: Add the check if the device is built-in device
14 - bus-width: Specify device bus width details
15 - tap-delay: Specify number of cycles to delay for reading data from device
16 - nvidia,is-ddr-tap-delay: Specifies whether the tap value for ddr mode is available or not.
17 - nvidia,ddr-tap-delay: Specify number of cycles to delay for reading data from device in ddr mode.
18 - trim-delay: Specify number of cycles to delay for writing data to device
19 - nvidia,is-ddr-trim-delay: Specifies whether the trim value for ddr mode is available or not.
20 - ddr-trim-delay: Specify number of cycles to delay for writing data to device when in DDR mode
21 - max-clk-limit: Specify the maximum clock limit for the device
22 - ddr-clk-limit: Specify the maximum clock frequency in kHz for device in DDR mode
23 - mmc-ocr-mask: Specify OCR register masking details
24 - uhs-mask: Specify modes that are masked for the device
25         Mask HS200 mode: 0x20
26         Mask HS400 mode: 0x40
27         Mask SDR104 mode: 0x10
28         Mask SDR50 mode: 0x4
29         Mask DDR50 mode: 0x8
30 - calib-3v3-offsets and calib-1v8-offsets: Specify caliberation settings at 3.3V and at 1.8V
31 - auto_cal_step: Specify auto caliberation step value
32 - pll_source: Specify list of clock parents
33 - dqs-trim-delay: Specify number of cycles to delay for reading data from device when the device is enumerated in HS400, HS533 or HS667 modes and this value is applicable only for eMMC device.
34 - compad-vref-3v3 and compad-vref-1v8: used to control Vref_sel input of calibration pad. Should be set based on pads used for controller before starting pad drive strength calibration.
35 - cd-gpios: details of GPIO port used for SD card detect
36 - wp-gpios: details of GPIO port used for SD card write protect mode
37 - power-gpios: details of GPIO port used to power up SDIO card
38 - default-drv-type: Drive strength to select for SDIO devices is encoded as 8-bit char as follows
39         Drive strength Type B: 0x0
40         Drive strength Type A: 0x1
41         Drive strength Type C: 0x2
42         Drive strength Type D: 0x3
43 - disable-clock-gate: flag when set disables sdmmc clock gating
44 - power-off-rail: flag when set enables sdmmc reboot notifier
45 - pwrdet-support: flag when set indicates the sdmmc controller instance needs power detect bit programming for voltage switching.
46 - pwrdet-bit: Specify Tegra Power Management Controller power detect bit for the particular SDMMC controller instance. This field is specified only when the pwrdet-support is true
47 - vddio_sdmmc-supply: regulator with this name
48 - vddio_sd_slot-supply: regulator with this name
49 - update-pinctrl-settings: flag when set using pictrl apis for updating sdmmc pins
50 - nvidia,dll-calib-needed: DLL calibration is needed for SDMMC4 and SDMMC2 devices if they are enumerated
51 in HS400 mode.
52 - nvidia,disable-auto-cal: This flag when set will disable auto calibration
53 - nvidia,en-io-trim-volt: Enable IO trimmer voltage
54 - nvidia,is-emmc: Enable this flag for eMMC devices
55 - nvidia,sd-device: Enable this flag for SD devices
56 - nvidia,enable-ext-loopback: flag when set, enables external loopback
57 - nvidia,limit-vddio-max-volt: enable this flag for sdmmc1/3 if it has Vddio 3.3v support.
58 - nvidia,enable-hs533-mode: Set this Flag toenable HS533 mode.
59         ---> eMMC card does not advertise HS533 mode support in device registers.
60         ---> This flag has to be enabled only if the card supports HS533 mode, other wise the consequences are un-known.(Errors will be seen)
61 - fixed-clock-freq: The first element is for ID mode. The rest of the entries are for different modes indexed as per ios timings.
62         ID MODE                 0
63         MMC_TIMING_LEGACY       1
64         MMC_TIMING_MMC_HS       2
65         MMC_TIMING_SD_HS        3
66         MMC_TIMING_UHS_SDR12    4
67         MMC_TIMING_UHS_SDR25    5
68         MMC_TIMING_UHS_SDR50    6
69         MMC_TIMING_UHS_SDR104   7
70         MMC_TIMING_UHS_DDR50    8
71         MMC_TIMING_MMC_HS200    9
72         MMC_TIMING_MMC_HS400    10
73 - nvidia,auto-cal-slew-override: flag to set AUTO_CAL_SLW_OVERRIDE bit in SDMMC_AUTO_CAL_CONFIG_0 register.
74 - nvidia,enable-cq: Set this flag to enable CQ.
75 - nvidia,runtime-pm-type: Flag indicates the runtime power management implementation to use as follows:
76         ---> 0 indicates runtime power management implementation is used along with an independent custom delayed clock gate implementation.
77         ---> 1 indicates MMC runtime power management coupled clock gate is enabled.
78         When this flag is not specified explicitly the value is assumed to be 0.
79 - cd_wakeup_incapable: Set this flag to disable card detect event as wake source.
80 - nvidia,enable-strobe-mode: Enable enhance strobe mode when eMMC device runs at HS400 mode.
81 - nvidia,en-periodic-calib: Enable periodic calibration support for sdmmc1/sdmmc3. Auto calibration sequence will be run at interval of 100ms during sdmmc1/sdmmc3 interfaces are active.
82
83 Example:
84
85         sdhci@700b0600 {
86                 compatible = "nvidia,tegra210-sdhci";
87                 reg = <0x0 0x700b0600 0x0 0x200>;
88                 interrupts = < 0 31 0x04 >;
89                 tap-delay = <4>;
90                 trim-delay = <3>;
91                 mmc-ocr-mask = <0>;
92                 max-clk-limit = <200000000>;
93                 uhs-mask = <0x20>; /* Mask HS200 */
94                 bus-width = <8>;
95                 id = <3>;
96                 pll_source = "pll_m", "pll_p";
97                 built-in;
98                 compad-vref-3v3 = <0x7>;
99                 compad-vref-1v8 = <0x7>;
100                 disable-clock-gate;
101                 calib-3v3-offsets = <0x0202>;
102                 calib-1v8-offsets = <0x0202>;
103                 vddio_sdmmc-supply = <&max77620_sd3>;
104                 nvidia,dll-calib-needed;
105                 nvidia,runtime-pm-type = <1>;
106                 status = "okay";
107                 fixed-clock-freq = <25500000 25500000 24000000 47000000 24000000 47000000 94000000 204000000 0 0 0>;
108         };
109
110         sdhci@700b0000 {
111                 tap-delay = <0>;
112                 trim-delay = <2>;
113                 mmc-ocr-mask = <3>;
114                 max-clk-limit = <136000000>;
115                 ddr-clk-limit = <41000000>;
116                 uhs-mask = <0x8>;
117                 bus-width = <4>;
118                 id = <0>;
119                 pll_source = "pll_m", "pll_p";
120                 calib-3v3-offsets = <0x7676>;
121                 calib-1v8-offsets = <0x7676>;
122                 default-drive-type = <1>;
123                 vddio_sd_slot-supply = <&vdd_1v8>;
124                 status = "okay";
125         };