summaryrefslogtreecommitdiffstats
path: root/bcm283x-mmc-imp-speed.patch
diff options
context:
space:
mode:
authorPeter Robinson <pbrobinson@gmail.com>2017-01-09 02:47:37 +0000
committerPeter Robinson <pbrobinson@gmail.com>2017-01-09 02:47:37 +0000
commitb50b299d4959607466a7069701904909039dac64 (patch)
treeeee1e6289a4bf430b3b207212953efd342a694bd /bcm283x-mmc-imp-speed.patch
parenteb69f22dd8b4aada75aa3a4582f98b951fa42cd8 (diff)
downloadkernel-b50b299d4959607466a7069701904909039dac64.tar.gz
kernel-b50b299d4959607466a7069701904909039dac64.tar.xz
kernel-b50b299d4959607466a7069701904909039dac64.zip
Add patch to improve MMC/SD speed on Raspberry Pi (bcm283x)
Diffstat (limited to 'bcm283x-mmc-imp-speed.patch')
-rw-r--r--bcm283x-mmc-imp-speed.patch107
1 files changed, 107 insertions, 0 deletions
diff --git a/bcm283x-mmc-imp-speed.patch b/bcm283x-mmc-imp-speed.patch
new file mode 100644
index 000000000..bad003a3c
--- /dev/null
+++ b/bcm283x-mmc-imp-speed.patch
@@ -0,0 +1,107 @@
+From patchwork Fri Dec 30 15:24:32 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [1/2] mmc: sdhci-iproc: Apply caps from bcm2835-mmc driver
+From: Stefan Wahren <stefan.wahren@i2se.com>
+X-Patchwork-Id: 9492281
+Message-Id: <1483111474-29907-2-git-send-email-stefan.wahren@i2se.com>
+To: Eric Anholt <eric@anholt.net>, Gerd Hoffmann <kraxel@redhat.com>,
+ Adrian Hunter <adrian.hunter@intel.com>,
+ Ulf Hansson <ulf.hansson@linaro.org>
+Cc: Stefan Wahren <stefan.wahren@i2se.com>,
+ Scott Branden <sbranden@broadcom.com>, Jon Mason <jonmason@broadcom.com>,
+ Ray Jui <rjui@broadcom.com>, linux-mmc@vger.kernel.org,
+ bcm-kernel-feedback-list@broadcom.com,
+ linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
+Date: Fri, 30 Dec 2016 15:24:32 +0000
+
+Since the mmc module on bcm2835 neither provide a capabilities register nor
+free documentation we must rely on the downstream implementation [1].
+
+So enable the following capabilities for bcm2835:
+
+MMC_CAP_MMC_HIGHSPEED
+MMC_CAP_SD_HIGHSPEED
+MMC_CAP_DRIVER_TYPE_A
+MMC_CAP_DRIVER_TYPE_C
+
+[1] - https://github.com/raspberrypi/linux/blob/rpi-4.4.y/drivers/mmc/host/bcm2835-mmc.c
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+---
+ drivers/mmc/host/sdhci-iproc.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
+index d7046d6..30b3fdf 100644
+--- a/drivers/mmc/host/sdhci-iproc.c
++++ b/drivers/mmc/host/sdhci-iproc.c
+@@ -211,14 +211,17 @@ static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+ static const struct sdhci_pltfm_data sdhci_bcm2835_pltfm_data = {
+ .quirks = SDHCI_QUIRK_BROKEN_CARD_DETECTION |
+ SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+- SDHCI_QUIRK_MISSING_CAPS,
++ SDHCI_QUIRK_MISSING_CAPS |
++ SDHCI_QUIRK_NO_HISPD_BIT,
+ .ops = &sdhci_iproc_32only_ops,
+ };
+
+ static const struct sdhci_iproc_data bcm2835_data = {
+ .pdata = &sdhci_bcm2835_pltfm_data,
+- .caps = SDHCI_CAN_VDD_330,
+- .caps1 = 0x00000000,
++ .caps = SDHCI_CAN_VDD_330 |
++ SDHCI_CAN_DO_HISPD,
++ .caps1 = SDHCI_DRIVER_TYPE_A |
++ SDHCI_DRIVER_TYPE_C,
+ .mmc_caps = 0x00000000,
+ };
+
+From patchwork Fri Dec 30 15:24:33 2016
+Content-Type: text/plain; charset="utf-8"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Subject: [2/2] mmc: sdhci-iproc: Increase max_blk_size for bcm2835
+From: Stefan Wahren <stefan.wahren@i2se.com>
+X-Patchwork-Id: 9492273
+Message-Id: <1483111474-29907-3-git-send-email-stefan.wahren@i2se.com>
+To: Eric Anholt <eric@anholt.net>, Gerd Hoffmann <kraxel@redhat.com>,
+ Adrian Hunter <adrian.hunter@intel.com>,
+ Ulf Hansson <ulf.hansson@linaro.org>
+Cc: Stefan Wahren <stefan.wahren@i2se.com>,
+ Scott Branden <sbranden@broadcom.com>, Jon Mason <jonmason@broadcom.com>,
+ Ray Jui <rjui@broadcom.com>, linux-mmc@vger.kernel.org,
+ bcm-kernel-feedback-list@broadcom.com,
+ linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org
+Date: Fri, 30 Dec 2016 15:24:33 +0000
+
+According to the BCM2835 datasheet the maximum block size for the
+eMMC module is restricted to the internal data FIFO which is 1024 byte.
+But this is still an improvement to the default of 512 byte.
+
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Acked-by: Scott Branden <scott.branden@broadcom.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+---
+ drivers/mmc/host/sdhci-iproc.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
+index 30b3fdf..3275d49 100644
+--- a/drivers/mmc/host/sdhci-iproc.c
++++ b/drivers/mmc/host/sdhci-iproc.c
+@@ -218,7 +218,9 @@ static void sdhci_iproc_writeb(struct sdhci_host *host, u8 val, int reg)
+
+ static const struct sdhci_iproc_data bcm2835_data = {
+ .pdata = &sdhci_bcm2835_pltfm_data,
+- .caps = SDHCI_CAN_VDD_330 |
++ .caps = ((0x1 << SDHCI_MAX_BLOCK_SHIFT)
++ & SDHCI_MAX_BLOCK_MASK) |
++ SDHCI_CAN_VDD_330 |
+ SDHCI_CAN_DO_HISPD,
+ .caps1 = SDHCI_DRIVER_TYPE_A |
+ SDHCI_DRIVER_TYPE_C,