aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch')
-rwxr-xr-xcommon/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch125
1 files changed, 0 insertions, 125 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch
deleted file mode 100755
index 3cd99eaf..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.14.71/0094-mmc-sdhci-acpi-Add-support-for-ACPI-HID-of-AMD-Contr.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 047b0e5412203f56a29d0c450e8e5523f566233e Mon Sep 17 00:00:00 2001
-From: Shah Nehal-Bakulchandra <Nehal-bakulchandra.Shah@amd.com>
-Date: Fri, 1 Dec 2017 15:38:52 +0530
-Subject: [PATCH 94/95] mmc: sdhci-acpi: Add support for ACPI HID of AMD
- Controller with HS400
-
-This patch supports HS400 for AMD upcoming emmc 5.0 controller.The
-HS400 and HS200 mode requires hardware work around also. This patch
-adds the quirks for the same.
-
-Signed-off-by: Nehal-bakulchandra Shah <Nehal-bakulchandra.Shah@amd.com>
-Acked-by: Adrian Hunter <adrian.hunter@intel.com>
-Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
----
- drivers/mmc/host/sdhci-acpi.c | 79 +++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 79 insertions(+)
-
-diff --git a/drivers/mmc/host/sdhci-acpi.c b/drivers/mmc/host/sdhci-acpi.c
-index 08ae0ff..c2e7048 100644
---- a/drivers/mmc/host/sdhci-acpi.c
-+++ b/drivers/mmc/host/sdhci-acpi.c
-@@ -367,6 +367,83 @@ static const struct sdhci_acpi_slot sdhci_acpi_slot_qcom_sd = {
- .caps = MMC_CAP_NONREMOVABLE,
- };
-
-+/* AMD sdhci reset dll register. */
-+#define SDHCI_AMD_RESET_DLL_REGISTER 0x908
-+
-+static int amd_select_drive_strength(struct mmc_card *card,
-+ unsigned int max_dtr, int host_drv,
-+ int card_drv, int *drv_type)
-+{
-+ return MMC_SET_DRIVER_TYPE_A;
-+}
-+
-+static void sdhci_acpi_amd_hs400_dll(struct sdhci_host *host)
-+{
-+ /* AMD Platform requires dll setting */
-+ sdhci_writel(host, 0x40003210, SDHCI_AMD_RESET_DLL_REGISTER);
-+ usleep_range(10, 20);
-+ sdhci_writel(host, 0x40033210, SDHCI_AMD_RESET_DLL_REGISTER);
-+}
-+
-+/*
-+ * For AMD Platform it is required to disable the tuning
-+ * bit first controller to bring to HS Mode from HS200
-+ * mode, later enable to tune to HS400 mode.
-+ */
-+static void amd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
-+{
-+ struct sdhci_host *host = mmc_priv(mmc);
-+ unsigned int old_timing = host->timing;
-+
-+ sdhci_set_ios(mmc, ios);
-+ if (old_timing == MMC_TIMING_MMC_HS200 &&
-+ ios->timing == MMC_TIMING_MMC_HS)
-+ sdhci_writew(host, 0x9, SDHCI_HOST_CONTROL2);
-+ if (old_timing != MMC_TIMING_MMC_HS400 &&
-+ ios->timing == MMC_TIMING_MMC_HS400) {
-+ sdhci_writew(host, 0x80, SDHCI_HOST_CONTROL2);
-+ sdhci_acpi_amd_hs400_dll(host);
-+ }
-+}
-+
-+static const struct sdhci_ops sdhci_acpi_ops_amd = {
-+ .set_clock = sdhci_set_clock,
-+ .set_bus_width = sdhci_set_bus_width,
-+ .reset = sdhci_reset,
-+ .set_uhs_signaling = sdhci_set_uhs_signaling,
-+};
-+
-+static const struct sdhci_acpi_chip sdhci_acpi_chip_amd = {
-+ .ops = &sdhci_acpi_ops_amd,
-+};
-+
-+static int sdhci_acpi_emmc_amd_probe_slot(struct platform_device *pdev,
-+ const char *hid, const char *uid)
-+{
-+ struct sdhci_acpi_host *c = platform_get_drvdata(pdev);
-+ struct sdhci_host *host = c->host;
-+
-+ sdhci_read_caps(host);
-+ if (host->caps1 & SDHCI_SUPPORT_DDR50)
-+ host->mmc->caps = MMC_CAP_1_8V_DDR;
-+
-+ if ((host->caps1 & SDHCI_SUPPORT_SDR104) &&
-+ (host->mmc->caps & MMC_CAP_1_8V_DDR))
-+ host->mmc->caps2 = MMC_CAP2_HS400_1_8V;
-+
-+ host->mmc_host_ops.select_drive_strength = amd_select_drive_strength;
-+ host->mmc_host_ops.set_ios = amd_set_ios;
-+ return 0;
-+}
-+
-+static const struct sdhci_acpi_slot sdhci_acpi_slot_amd_emmc = {
-+ .chip = &sdhci_acpi_chip_amd,
-+ .caps = MMC_CAP_8_BIT_DATA | MMC_CAP_NONREMOVABLE,
-+ .quirks = SDHCI_QUIRK_32BIT_DMA_ADDR | SDHCI_QUIRK_32BIT_DMA_SIZE |
-+ SDHCI_QUIRK_32BIT_ADMA_SIZE,
-+ .probe_slot = sdhci_acpi_emmc_amd_probe_slot,
-+};
-+
- struct sdhci_acpi_uid_slot {
- const char *hid;
- const char *uid;
-@@ -390,6 +467,7 @@ static const struct sdhci_acpi_uid_slot sdhci_acpi_uids[] = {
- { "PNP0D40" },
- { "QCOM8051", NULL, &sdhci_acpi_slot_qcom_sd_3v },
- { "QCOM8052", NULL, &sdhci_acpi_slot_qcom_sd },
-+ { "AMDI0040", NULL, &sdhci_acpi_slot_amd_emmc },
- { },
- };
-
-@@ -406,6 +484,7 @@ static const struct acpi_device_id sdhci_acpi_ids[] = {
- { "PNP0D40" },
- { "QCOM8051" },
- { "QCOM8052" },
-+ { "AMDI0040" },
- { },
- };
- MODULE_DEVICE_TABLE(acpi, sdhci_acpi_ids);
---
-2.7.4
-