diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.10/0022-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.10/0022-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch | 58 |
1 files changed, 0 insertions, 58 deletions
diff --git a/target/linux/brcm2708/patches-3.10/0022-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch b/target/linux/brcm2708/patches-3.10/0022-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch deleted file mode 100644 index b5f8754..0000000 --- a/target/linux/brcm2708/patches-3.10/0022-sdhci-bcm2708-use-multiblock-type-transfers-for-sing.patch +++ /dev/null @@ -1,58 +0,0 @@ -From d91049bd18e847ba86d661889b92a25cd7ce53cc Mon Sep 17 00:00:00 2001 -From: popcornmix <popcornmix@gmail.com> -Date: Wed, 3 Jul 2013 00:42:49 +0100 -Subject: [PATCH 022/196] sdhci-bcm2708: use multiblock-type transfers for - single blocks - -There are issues with both single block reads (missed completion) -and writes (data loss in some cases!). Just don't do single block -transfers anymore, and treat them like multiblock transfers. This -adds a quirk for this and uses it. ---- - drivers/mmc/card/block.c | 2 +- - drivers/mmc/host/sdhci-bcm2708.c | 3 +++ - include/linux/mmc/host.h | 1 + - 3 files changed, 5 insertions(+), 1 deletion(-) - -diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c -index 9aca946..0d0c4ad 100644 ---- a/drivers/mmc/card/block.c -+++ b/drivers/mmc/card/block.c -@@ -1333,7 +1333,7 @@ static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, - brq->data.blocks = 1; - } - -- if (brq->data.blocks > 1 || do_rel_wr) { -+ if (brq->data.blocks > 1 || do_rel_wr || card->host->caps2 & MMC_CAP2_FORCE_MULTIBLOCK) { - /* SPI multiblock writes terminate using a special - * token, not a STOP_TRANSMISSION request. - */ -diff --git a/drivers/mmc/host/sdhci-bcm2708.c b/drivers/mmc/host/sdhci-bcm2708.c -index 326b962..c6d6bb0 100644 ---- a/drivers/mmc/host/sdhci-bcm2708.c -+++ b/drivers/mmc/host/sdhci-bcm2708.c -@@ -1266,6 +1266,9 @@ static int sdhci_bcm2708_probe(struct platform_device *pdev) - - if (allow_highspeed) - host->mmc->caps |= MMC_CAP_SD_HIGHSPEED | MMC_CAP_MMC_HIGHSPEED; -+ -+ /* single block writes cause data loss with some SD cards! */ -+ host->mmc->caps2 |= MMC_CAP2_FORCE_MULTIBLOCK; - #endif - - ret = sdhci_add_host(host); -diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h -index e326ae2..70020e3 100644 ---- a/include/linux/mmc/host.h -+++ b/include/linux/mmc/host.h -@@ -281,6 +281,7 @@ struct mmc_host { - #define MMC_CAP2_PACKED_CMD (MMC_CAP2_PACKED_RD | \ - MMC_CAP2_PACKED_WR) - #define MMC_CAP2_NO_PRESCAN_POWERUP (1 << 14) /* Don't power up before scan */ -+#define MMC_CAP2_FORCE_MULTIBLOCK (1 << 31) /* Always use multiblock transfers */ - - mmc_pm_flag_t pm_caps; /* supported pm features */ - --- -1.9.1 - |