summaryrefslogtreecommitdiff
path: root/recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch')
-rw-r--r--recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch b/recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch
new file mode 100644
index 0000000..9426107
--- /dev/null
+++ b/recipes-kernel/linux/linux-toradex-mainline-4.9/0004-mmc-tegra-apalis-tk1-hack-to-make-sd1-functional.patch
@@ -0,0 +1,52 @@
+From 3012bd5c49b1f0ce750767194f76e556fbe7e6e6 Mon Sep 17 00:00:00 2001
+From: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+Date: Thu, 15 Dec 2016 10:56:26 +0100
+Subject: [PATCH 4/4] mmc: tegra: apalis-tk1: hack to make sd1 functional
+
+Disable the external loopback and use the internal loopback as per
+SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits being set to
+0xfffd according to the TRM.
+
+Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
+Acked-by: Dominik Sliwa <dominik.sliwa@toradex.com>
+
+(cherry picked from toradex_tk1_l4t_r21.5 commit
+fc14b7601e5ca587afd97936ef3fd599f4e9281c)
+
+---
+
+ drivers/mmc/host/sdhci-tegra.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
+index 20b6ff5..6c84334 100644
+--- a/drivers/mmc/host/sdhci-tegra.c
++++ b/drivers/mmc/host/sdhci-tegra.c
+@@ -42,6 +42,7 @@
+ #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10
+ #define SDHCI_MISC_CTRL_ENABLE_SDHCI_SPEC_300 0x20
+ #define SDHCI_MISC_CTRL_ENABLE_DDR50 0x200
++#define SDHCI_MISC_CTRL_ENABLE_EXT_LOOPBACK 0x20000
+
+ #define SDHCI_TEGRA_AUTO_CAL_CONFIG 0x1e4
+ #define SDHCI_AUTO_CAL_START BIT(31)
+@@ -178,6 +179,16 @@ static void tegra_sdhci_reset(struct sdhci_host *host, u8 mask)
+ clk_ctrl |= SDHCI_CLOCK_CTRL_SDR50_TUNING_OVERRIDE;
+ }
+
++#define CONFIG_MACH_APALIS_TK1
++#ifdef CONFIG_MACH_APALIS_TK1
++ /*
++ * Disable the external loopback and use the internal loopback as per
++ * SDMMC_VENDOR_MISC_CNTRL_0 register's SDMMC_SPARE1 bits being set to
++ * 0xfffd according to the TRM.
++ */
++ misc_ctrl &= ~SDHCI_MISC_CTRL_ENABLE_EXT_LOOPBACK;
++#endif /* CONFIG_MACH_APALIS_TK1 */
++
+ sdhci_writel(host, misc_ctrl, SDHCI_TEGRA_VENDOR_MISC_CTRL);
+ sdhci_writel(host, clk_ctrl, SDHCI_TEGRA_VENDOR_CLOCK_CTRL);
+
+--
+2.9.3
+