diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0107-mmc-sdhci-Add-32-bit-block-count-support-for-v4-mode.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0107-mmc-sdhci-Add-32-bit-block-count-support-for-v4-mode.patch | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0107-mmc-sdhci-Add-32-bit-block-count-support-for-v4-mode.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0107-mmc-sdhci-Add-32-bit-block-count-support-for-v4-mode.patch deleted file mode 100644 index 407c8917..00000000 --- a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0107-mmc-sdhci-Add-32-bit-block-count-support-for-v4-mode.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 6f5130259bf48630d9bf77359e8f8e4badc55cfe Mon Sep 17 00:00:00 2001 -From: Sudheesh Mavila <sudheesh.mavila@amd.com> -Date: Tue, 22 Jan 2019 23:00:26 +0530 -Subject: [PATCH 107/131] mmc: sdhci: Add 32-bit block count support for v4 - mode - -Host Controller Version 4.10 re-defines SDMA System Address register -as 32-bit Block Count for v4 mode, and SDMA uses ADMA System -Address register (05Fh-058h) instead if v4 mode is enabled. Also -when using 32-bit block count, 16-bit block count register need -to be set to zero. - -Since using 32-bit Block Count would cause problems for auto-cmd23, -it can be chosen via host->quirk2. - -Signed-off-by: Chunyan Zhang <zhang.chunyan@linaro.org> -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.c | 14 +++++++++++++- - drivers/mmc/host/sdhci.h | 8 ++++++++ - 2 files changed, 21 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index 4b18f3f..da59b0a 100644 ---- a/drivers/mmc/host/sdhci.c -+++ b/drivers/mmc/host/sdhci.c -@@ -998,7 +998,19 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) - /* Set the DMA boundary value and block size */ - sdhci_writew(host, SDHCI_MAKE_BLKSZ(host->sdma_boundary, data->blksz), - SDHCI_BLOCK_SIZE); -- sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT); -+ -+ /* -+ * For Version 4.10 onwards, if v4 mode is enabled, 32-bit Block Count -+ * can be supported, in that case 16-bit block count register must be 0. -+ */ -+ if (host->version >= SDHCI_SPEC_410 && host->v4_mode && -+ (host->quirks2 & SDHCI_QUIRK2_USE_32BIT_BLK_CNT)) { -+ if (sdhci_readw(host, SDHCI_BLOCK_COUNT)) -+ sdhci_writew(host, 0, SDHCI_BLOCK_COUNT); -+ sdhci_writew(host, data->blocks, SDHCI_32BIT_BLK_CNT); -+ } else { -+ sdhci_writew(host, data->blocks, SDHCI_BLOCK_COUNT); -+ } - } - - static inline bool sdhci_auto_cmd12(struct sdhci_host *host, -diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h -index 0b5ac1c..5197966 100755 ---- a/drivers/mmc/host/sdhci.h -+++ b/drivers/mmc/host/sdhci.h -@@ -28,6 +28,7 @@ - - #define SDHCI_DMA_ADDRESS 0x00 - #define SDHCI_ARGUMENT2 SDHCI_DMA_ADDRESS -+#define SDHCI_32BIT_BLK_CNT SDHCI_DMA_ADDRESS - - #define SDHCI_BLOCK_SIZE 0x04 - #define SDHCI_MAKE_BLKSZ(dma, blksz) (((dma & 0x7) << 12) | (blksz & 0xFFF)) -@@ -449,6 +450,13 @@ struct sdhci_host { - #define SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN (1<<15) - /* Controller has CRC in 136 bit Command Response */ - #define SDHCI_QUIRK2_RSP_136_HAS_CRC (1<<16) -+/* -+ * 32-bit block count may not support eMMC where upper bits of CMD23 are used -+ * for other purposes. Consequently we support 16-bit block count by default. -+ * Otherwise, SDHCI_QUIRK2_USE_32BIT_BLK_CNT can be selected to use 32-bit -+ * block count. -+ */ -+#define SDHCI_QUIRK2_USE_32BIT_BLK_CNT (1<<18) - - int irq; /* Device IRQ */ - void __iomem *ioaddr; /* Mapped address */ --- -2.7.4 - |