debian/patches: Remove merged patches.
svn path=/dists/trunk/linux-2.6/; revision=13752
This commit is contained in:
parent
2285b9eaa5
commit
b22c88ae24
|
@ -1,60 +0,0 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Tue, 26 May 2009 23:09:39 +0000 (-0400)
|
||||
Subject: [MMC] mvsdio: fix config failure with some high speed SDHC cards
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=cbd9524f28b10662bd5d81e734e35737aeabb7a9
|
||||
|
||||
[MMC] mvsdio: fix config failure with some high speed SDHC cards
|
||||
|
||||
Especially with Sandisk SDHC cards, the second SWITCH command was failing
|
||||
with a timeout and the card was not recognized at all. However if the
|
||||
system was busy, or debugging was enabled, or a udelay(100) was inserted
|
||||
before the second SWITCH command in the core code, then the timing was
|
||||
so that the card started to work.
|
||||
|
||||
With some unusual block sizes, the data FIFO status doesn't indicate a
|
||||
"empty" state right away when the data transfer is done. Queuing another
|
||||
data transfer in that condition results in a transfer timeout.
|
||||
|
||||
The empty FIFO bit eventually get set by itself in less than 50 usecs
|
||||
when it is not set right away. So let's just poll for that bit before
|
||||
configuring the controller with a new data transfer.
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
---
|
||||
|
||||
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
|
||||
index 9d3cfa9..b56d72f 100644
|
||||
--- a/drivers/mmc/host/mvsdio.c
|
||||
+++ b/drivers/mmc/host/mvsdio.c
|
||||
@@ -64,6 +64,31 @@ static int mvsd_setup_data(struct mvsd_host *host, struct mmc_data *data)
|
||||
unsigned int tmout;
|
||||
int tmout_index;
|
||||
|
||||
+ /*
|
||||
+ * Hardware weirdness. The FIFO_EMPTY bit of the HW_STATE
|
||||
+ * register is sometimes not set before a while when some
|
||||
+ * "unusual" data block sizes are used (such as with the SWITCH
|
||||
+ * command), even despite the fact that the XFER_DONE interrupt
|
||||
+ * was raised. And if another data transfer starts before
|
||||
+ * this bit comes to good sense (which eventually happens by
|
||||
+ * itself) then the new transfer simply fails with a timeout.
|
||||
+ */
|
||||
+ if (!(mvsd_read(MVSD_HW_STATE) & (1 << 13))) {
|
||||
+ unsigned long t = jiffies + HZ;
|
||||
+ unsigned int hw_state, count = 0;
|
||||
+ do {
|
||||
+ if (time_after(jiffies, t)) {
|
||||
+ dev_warn(host->dev, "FIFO_EMPTY bit missing\n");
|
||||
+ break;
|
||||
+ }
|
||||
+ hw_state = mvsd_read(MVSD_HW_STATE);
|
||||
+ count++;
|
||||
+ } while (!(hw_state & (1 << 13)));
|
||||
+ dev_dbg(host->dev, "*** wait for FIFO_EMPTY bit "
|
||||
+ "(hw=0x%04x, count=%d, jiffies=%ld)\n",
|
||||
+ hw_state, count, jiffies - (t - HZ));
|
||||
+ }
|
||||
+
|
||||
/* If timeout=0 then maximum timeout index is used. */
|
||||
tmout = DIV_ROUND_UP(data->timeout_ns, host->ns_per_clk);
|
||||
tmout += data->timeout_clks;
|
|
@ -1,40 +0,0 @@
|
|||
From: Nicolas Pitre <nico@cam.org>
|
||||
Date: Fri, 15 May 2009 00:59:47 +0000 (-0400)
|
||||
Subject: [MMC] mvsdio: ignore high speed timing requests from the core
|
||||
X-Git-Url: http://git.marvell.com/?p=orion.git;a=commitdiff_plain;h=9154da39b1da931b60ff380d3172d797ccaed71e
|
||||
|
||||
[MMC] mvsdio: ignore high speed timing requests from the core
|
||||
|
||||
Empirical evidences show that this is causing far more problems than it
|
||||
solves when this mode is enabled in the host hardware. Amongst those
|
||||
cards that are known to be non functional when this bit is set are:
|
||||
|
||||
A-Data "Speedy" 2GB SD card
|
||||
Kodak 512MB SD card
|
||||
Ativa 1GB MicroSD card
|
||||
Marvell 8688 (WIFI/Bluetooth) SDIO card
|
||||
|
||||
Signed-off-by: Nicolas Pitre <nico@marvell.com>
|
||||
|
||||
|
||||
--- a/drivers/mmc/host/mvsdio.c~ 2009-05-16 08:48:15.000000000 +0000
|
||||
+++ b/drivers/mmc/host/mvsdio.c 2009-05-16 08:48:17.000000000 +0000
|
||||
@@ -617,9 +617,18 @@
|
||||
if (ios->bus_width == MMC_BUS_WIDTH_4)
|
||||
ctrl_reg |= MVSD_HOST_CTRL_DATA_WIDTH_4_BITS;
|
||||
|
||||
+ /*
|
||||
+ * The HI_SPEED_EN bit is causing trouble with many (but not all)
|
||||
+ * high speed SD, SDHC and SDIO cards. Not enabling that bit
|
||||
+ * makes all cards work. So let's just ignore that bit for now
|
||||
+ * and revisit this issue if problems for not enabling this bit
|
||||
+ * are ever reported.
|
||||
+ */
|
||||
+#if 0
|
||||
if (ios->timing == MMC_TIMING_MMC_HS ||
|
||||
ios->timing == MMC_TIMING_SD_HS)
|
||||
ctrl_reg |= MVSD_HOST_CTRL_HI_SPEED_EN;
|
||||
+#endif
|
||||
|
||||
host->ctrl = ctrl_reg;
|
||||
mvsd_write(MVSD_HOST_CTRL, ctrl_reg);
|
|
@ -1,9 +0,0 @@
|
|||
diff --git a/drivers/mmc/host/mvsdio.c b/drivers/mmc/host/mvsdio.c
|
||||
index c643d0f..1783043 100644
|
||||
--- a/drivers/mmc/host/mvsdio.c
|
||||
+++ b/drivers/mmc/host/mvsdio.c
|
||||
@@ -882,3 +882,4 @@ module_param(nodma, int, 0);
|
||||
MODULE_AUTHOR("Maen Suleiman, Nicolas Pitre");
|
||||
MODULE_DESCRIPTION("Marvell MMC,SD,SDIO Host Controller driver");
|
||||
MODULE_LICENSE("GPL");
|
||||
+MODULE_ALIAS("platform:mvsdio");
|
|
@ -31,9 +31,6 @@
|
|||
+ features/arm/copy_to_user-better_threshold.patch
|
||||
+ features/arm/nand-setup.patch
|
||||
+ features/arm/clock_gating.patch
|
||||
+ bugfix/all/mvsdio-platform.patch
|
||||
+ bugfix/all/mvsdio-ignore-high-speed.patch
|
||||
+ bugfix/all/mvsdio-config-failure.patch
|
||||
+ features/arm/kirkwood-cpu-idle.patch
|
||||
+ bugfix/sparc/arch-zimage-target.patch
|
||||
+ features/all/bnx2x-Separated-FW-from-the-source.patch
|
||||
|
|
Loading…
Reference in New Issue