]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
one more .28 patch
authorGreg Kroah-Hartman <gregkh@suse.de>
Sat, 14 Mar 2009 00:34:04 +0000 (17:34 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Sat, 14 Mar 2009 00:34:04 +0000 (17:34 -0700)
queue-2.6.28/sdhci-add-quirk-for-controllers-with-no-end-of-busy-irq.patch [new file with mode: 0644]
queue-2.6.28/series

diff --git a/queue-2.6.28/sdhci-add-quirk-for-controllers-with-no-end-of-busy-irq.patch b/queue-2.6.28/sdhci-add-quirk-for-controllers-with-no-end-of-busy-irq.patch
new file mode 100644 (file)
index 0000000..d677d5b
--- /dev/null
@@ -0,0 +1,52 @@
+From f945405cdecd9e0ae3e58ff84cabd19b4522965e Mon Sep 17 00:00:00 2001
+From: Ben Dooks <ben-linux@fluff.org>
+Date: Fri, 20 Feb 2009 20:33:08 +0300
+Subject: sdhci: Add quirk for controllers with no end-of-busy IRQ
+
+From: Ben Dooks <ben-linux@fluff.org>
+
+commit f945405cdecd9e0ae3e58ff84cabd19b4522965e upstream.
+
+The Samsung SDHCI (and FSL eSDHC) controller block seems to fail
+to generate an INT_DATA_END after the transfer has completed and
+the bus busy state finished.
+
+Changes in e809517f6fa5803a5a1cd56026f0e2190fc13d5c to use the
+new busy method are the cause of the behaviour change.
+
+Signed-off-by: Ben Dooks <ben-linux@fluff.org>
+Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
+Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/mmc/host/sdhci.c |    5 ++++-
+ drivers/mmc/host/sdhci.h |    2 ++
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+--- a/drivers/mmc/host/sdhci.c
++++ b/drivers/mmc/host/sdhci.c
+@@ -1286,8 +1286,11 @@ static void sdhci_cmd_irq(struct sdhci_h
+               if (host->cmd->data)
+                       DBG("Cannot wait for busy signal when also "
+                               "doing a data transfer");
+-              else
++              else if (!(host->quirks & SDHCI_QUIRK_NO_BUSY_IRQ))
+                       return;
++
++              /* The controller does not support the end-of-busy IRQ,
++               * fall through and take the SDHCI_INT_RESPONSE */
+       }
+       if (intmask & SDHCI_INT_RESPONSE)
+--- a/drivers/mmc/host/sdhci.h
++++ b/drivers/mmc/host/sdhci.h
+@@ -210,6 +210,8 @@ struct sdhci_host {
+ #define SDHCI_QUIRK_BROKEN_SMALL_PIO                  (1<<13)
+ /* Controller supports high speed but doesn't have the caps bit set */
+ #define SDHCI_QUIRK_FORCE_HIGHSPEED                   (1<<14)
++/* Controller does not provide transfer-complete interrupt when not busy */
++#define SDHCI_QUIRK_NO_BUSY_IRQ                               (1<<15)
+       int                     irq;            /* Device IRQ */
+       void __iomem *          ioaddr;         /* Mapped address */
index 094d1d215c6687e9aa1b814c056135b2cd896498..36fa091e0efb49e36b3d4de667ce2886e9c2c6a9 100644 (file)
@@ -79,6 +79,7 @@ pci-add-pci-quirk-to-disable-l0s-aspm-state-for-82575-and-82598.patch
 copy_process-fix-clone_parent-parent_exec_id-interaction.patch
 proc-fix-pg_locked-reporting-in-proc-kpageflags.patch
 powerpc-fix-load-store-float-double-alignment-handler.patch
+sdhci-add-quirk-for-controllers-with-no-end-of-busy-irq.patch
 sdhci-add-no_busy_irq-quirk-for-marvell-cafe-host-chip.patch
 pipe_rdwr_fasync-fix-the-error-handling-to-prevent-the-leak-crash.patch
 0001-DVB-s5h1409-Perform-s5h1409-soft-reset-after-tunin.patch