summaryrefslogtreecommitdiffstats
path: root/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch')
-rw-r--r--patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch57
1 files changed, 57 insertions, 0 deletions
diff --git a/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch b/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch
new file mode 100644
index 0000000..52ece3b
--- /dev/null
+++ b/patches/linux-3.6.10/0045-sdcard-patch-improvements-from-naren.patch
@@ -0,0 +1,57 @@
+From: popcornmix <popcornmix@gmail.com>
+Date: Thu, 17 May 2012 14:44:19 +0100
+Subject: [PATCH] sdcard patch improvements from naren
+
+---
+ drivers/mmc/host/sdhci-bcm2708.c | 23 +++++++----------------
+ 1 file changed, 7 insertions(+), 16 deletions(-)
+
+diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c
+index cae6be9..7136998 100644
+--- a/drivers/mmc/host/sdhci-bcm2708.c
++++ b/drivers/mmc/host/sdhci-bcm2708.c
+@@ -896,8 +896,7 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
+ We get CRC and DEND errors unless we wait for
+ the SD controller to finish reading/writing to the card. */
+ u32 state_mask;
+- int timeout=1000000;
+- hptime_t now = hptime();
++ int timeout=1000;
+
+ DBG("PDMA over - sync card\n");
+ if (data->flags & MMC_DATA_READ)
+@@ -905,17 +904,12 @@ static void sdhci_bcm2708_dma_complete_irq(struct sdhci_host *host,
+ else
+ state_mask = SDHCI_DOING_WRITE;
+
+- while (0 != (sdhci_bcm2708_raw_readl(host,
+- SDHCI_PRESENT_STATE) &
+- state_mask) && --timeout > 0)
++ while (0 != (sdhci_bcm2708_raw_readl(host, SDHCI_PRESENT_STATE)
++ & state_mask) && --timeout > 0)
++ {
++ udelay(100);
+ continue;
+-
+- if (1000000-timeout > 4000) /*ave. is about 3250*/
+- DBG("%s: note - long %s sync %luns - "
+- "%d its.\n",
+- mmc_hostname(host->mmc),
+- data->flags & MMC_DATA_READ? "read": "write",
+- since_ns(now), 1000000-timeout);
++ }
+ if (timeout <= 0)
+ printk(KERN_ERR"%s: final %s to SD card still "
+ "running\n",
+@@ -1293,10 +1287,7 @@ static unsigned int sdhci_bcm2708_uhs_broken(struct sdhci_host *host)
+
+ static unsigned int sdhci_bcm2708_missing_status(struct sdhci_host *host)
+ {
+- if(host->last_cmdop == MMC_SEND_STATUS)
+- return 1;
+- else
+- return 0;
++ return 1;
+ }
+
+ /***************************************************************************** \