diff options
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.patch | 57 |
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; + } + + /***************************************************************************** \ |