* Nvidia sdhci-tegra controller This file documents differences between the core properties in mmc.txt and the properties used by the sdhci-tegra driver. Required properties: - compatible: Should be "nvidia,tegra210-sdhci" - reg: Specify start address and registers count details - interrupts: Specify the interrupts IRQ info for device - id: Specify device id Optional properties: - built-in: Add the check if the device is built-in device - bus-width: Specify device bus width details - max-clk-limit: Specify the maximum clock limit for the device - ddr-clk-limit: Specify the maximum clock frequency in kHz for device in DDR mode - mmc-ocr-mask: Specify OCR register masking details - uhs-mask: Specify modes that are masked for the device Mask HS200 mode: 0x20 Mask HS400 mode: 0x40 Mask SDR104 mode: 0x10 Mask SDR50 mode: 0x4 Mask DDR50 mode: 0x8 Mask SDR25 mode: 0x2 - pll_source: Specify list of clock parents - dqs-trim-delay: HS400 Tap value for incoming DQS path trimmer. - cd-gpios: details of GPIO port used for SD card detect - wp-gpios: details of GPIO port used for SD card write protect mode - power-gpios: details of GPIO port used to power up SDIO card - default-drv-type: Drive strength to select for SDIO devices is encoded as 8-bit char as follows Drive strength Type B: 0x0 Drive strength Type A: 0x1 Drive strength Type C: 0x2 Drive strength Type D: 0x3 - disable-dynamic-clock-gating: flag when set disables sdmmc clock gating - nvidia,disable-rtpm: Set this flag to disable runtime power management support for sdhci devices. - power-off-rail: flag when set enables sdmmc reboot notifier - pwrdet-support: flag when set indicates the sdmmc controller instance needs power detect bit programming for voltage switching. - 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 - nvidia,is-emmc: Enable this flag for eMMC devices - nvidia,is-sdio: Enable this flag for SDIO devices - nvidia,sd-device: Enable this flag for SD devices - fixed-clock-freq: The first element is for ID mode. The rest of the entries are for different modes indexed as per ios timings. ID MODE 0 MMC_TIMING_LEGACY 1 MMC_TIMING_MMC_HS 2 MMC_TIMING_SD_HS 3 MMC_TIMING_UHS_SDR12 4 MMC_TIMING_UHS_SDR25 5 MMC_TIMING_UHS_SDR50 6 MMC_TIMING_UHS_SDR104 7 MMC_TIMING_UHS_DDR50 8 MMC_TIMING_MMC_HS200 9 MMC_TIMING_MMC_HS400 10 - nvidia,enable-hwcq: Set this flag to enable HW Command Queue support. - nvidia,cd-wakeup-capable: Set this flag to enable card detect event as wake source. - nvidia,enable-strobe-mode: Enable enhance strobe mode when eMMC device runs at HS400 mode. - 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. - nvidia,parent_clk_list: Defines the list of parent clock corresponding to the speed mode. - nvidia,set-parent-clk: Use this flag, to select parent clock based on current speed mode, where parent-list available in DT. - nvidia,en-periodic-cflush: Set this flag to enable periodic cache flushing to improve write performance without overhead of flushing cache with every write. - force-non-removable-rescan: Set this flag to force rescan for non-removable devices. Used for SDIO devices to allow re-init during wifi module load/unload. - only-1-8-v: Set this flag to specify that only 1.8V IO voltage is supported and same should be configured by default. - nvidia,clk-en-before-freq-update: Set this flag to enable clock before updating clock frequency rate. This is needed for some SDMMC controller instances. -nvidia,min-tap-delay: Defines minimum tap delay in picoseconds seen on a SOC. This value is SOC specific and used to compute lowerthreshold, upperthreshold, fixed_tap values needed for post auto-tuning correction algorithm. -nvidia,max-tap-delay: Defines maximum tap delay in picoseconds seen on a SOC. This value is SOC specific and used to compute lowerthreshold, upperthreshold, fixed_tap values needed for post auto-tuning correction algorithm. Example: sdhci@700b0600 { compatible = "nvidia,tegra210-sdhci"; reg = <0x0 0x700b0600 0x0 0x200>; interrupts = < 0 31 0x04 >; tap-delay = <4>; trim-delay = <3>; mmc-ocr-mask = <0>; max-clk-limit = <200000000>; uhs-mask = <0x20>; /* Mask HS200 */ bus-width = <8>; id = <3>; pll_source = "pll_m", "pll_p"; built-in; compad-vref-3v3 = <0x7>; compad-vref-1v8 = <0x7>; disable-dynamic-clock-gating; nvidia,runtime-pm-type = <1>; nvidia,en-periodic-cflush; nvidia,set-parent-clk; nvidia,enable-hwcq; nvidia,parent_clk_list = <"pll_p", "pll_c4_out0", "pll_p">; nvidia,min-tap-delay = <96>; nvidia,max-tap-delay = <139>; only-1-8-v; status = "okay"; fixed-clock-freq = <25500000 25500000 24000000 47000000 24000000 47000000 94000000 204000000 0 0 0>; }; sdhci@700b0000 { tap-delay = <0>; trim-delay = <2>; mmc-ocr-mask = <3>; max-clk-limit = <136000000>; ddr-clk-limit = <41000000>; uhs-mask = <0x8>; bus-width = <4>; id = <0>; pll_source = "pll_m", "pll_p"; default-drive-type = <1>; force-non-removable-rescan; nvidia,min-tap-delay = <96>; nvidia,max-tap-delay = <139>; status = "okay"; };