All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ulf Hansson <ulf.hansson@linaro.org>, Chris Ball <chris@printf.net>
Cc: linux-mmc <linux-mmc@vger.kernel.org>
Subject: [PATCH 06/13] mmc: sdhci: Add quirk for always getting TC with stop cmd
Date: Mon, 22 Sep 2014 13:17:37 +0300	[thread overview]
Message-ID: <1411381064-1703-7-git-send-email-adrian.hunter@intel.com> (raw)
In-Reply-To: <1411381064-1703-1-git-send-email-adrian.hunter@intel.com>

Add a quirk for a host controller that always sets
a Transfer Complete interrupt status for the stop
command even when a busy response is not indicated.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
---
 drivers/mmc/host/sdhci.c  | 8 ++++++--
 include/linux/mmc/sdhci.h | 2 ++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 7481bd8..d20d104 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -2224,7 +2224,7 @@ static void sdhci_tuning_timer(unsigned long data)
  *                                                                           *
 \*****************************************************************************/
 
-static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask)
+static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask, u32 *mask)
 {
 	BUG_ON(intmask == 0);
 
@@ -2271,6 +2271,9 @@ static void sdhci_cmd_irq(struct sdhci_host *host, u32 intmask)
 
 		/* The controller does not support the end-of-busy IRQ,
 		 * fall through and take the SDHCI_INT_RESPONSE */
+	} else if ((host->quirks2 & SDHCI_QUIRK2_STOP_WITH_TC) &&
+		   host->cmd->opcode == MMC_STOP_TRANSMISSION && !host->data) {
+		*mask &= ~SDHCI_INT_DATA_END;
 	}
 
 	if (intmask & SDHCI_INT_RESPONSE)
@@ -2480,7 +2483,8 @@ static irqreturn_t sdhci_irq(int irq, void *dev_id)
 		}
 
 		if (intmask & SDHCI_INT_CMD_MASK)
-			sdhci_cmd_irq(host, intmask & SDHCI_INT_CMD_MASK);
+			sdhci_cmd_irq(host, intmask & SDHCI_INT_CMD_MASK,
+				      &intmask);
 
 		if (intmask & SDHCI_INT_DATA_MASK)
 			sdhci_data_irq(host, intmask & SDHCI_INT_DATA_MASK);
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h
index 0aa85ca..dba793e 100644
--- a/include/linux/mmc/sdhci.h
+++ b/include/linux/mmc/sdhci.h
@@ -98,6 +98,8 @@ struct sdhci_host {
 #define SDHCI_QUIRK2_BROKEN_HS200			(1<<6)
 /* Controller does not support DDR50 */
 #define SDHCI_QUIRK2_BROKEN_DDR50			(1<<7)
+/* Stop command (CMD12) can set Transfer Complete when not using MMC_RSP_BUSY */
+#define SDHCI_QUIRK2_STOP_WITH_TC			(1<<8)
 
 	int irq;		/* Device IRQ */
 	void __iomem *ioaddr;	/* Mapped address */
-- 
1.8.3.2


  parent reply	other threads:[~2014-09-22 10:19 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-22 10:17 [PATCH 00/13] mmc: Some Braswell and misc patches Adrian Hunter
2014-09-22 10:17 ` [PATCH 01/13] mmc: Fix use of wrong device in mmc_gpiod_free_cd() Adrian Hunter
2014-09-22 10:17 ` [PATCH 02/13] mmc: Fix incorrect warning when setting 0 Hz via debugfs Adrian Hunter
2014-09-22 10:17 ` [PATCH 03/13] mmc: It is not an error for the card to be removed while suspended Adrian Hunter
2014-09-22 10:17 ` [PATCH 04/13] mmc: block: Fix error recovery stop cmd timeout calculation Adrian Hunter
2014-09-22 10:17 ` [PATCH 05/13] mmc: block: Fix SD card stop cmd response type Adrian Hunter
2014-09-22 10:17 ` Adrian Hunter [this message]
2014-09-22 10:17 ` [PATCH 07/13] mmc: sdhci-acpi: Set SDHCI_QUIRK2_STOP_WITH_TC for Intel host controllers Adrian Hunter
2014-09-22 10:17 ` [PATCH 08/13] mmc: sdhci-acpi: Add a HID and UID for a SD Card host controller Adrian Hunter
2014-09-22 10:17 ` [PATCH 09/13] mmc: sdhci-pci: Set SDHCI_QUIRK2_STOP_WITH_TC for Intel BYT host controllers Adrian Hunter
2014-09-22 10:17 ` [PATCH 10/13] mmc: sdhci-pci: Add Bay Trail and Braswell SD card detect Adrian Hunter
2014-09-22 10:17 ` [PATCH 11/13] mmc: sdhci: Let a driver override timeout clock frequency Adrian Hunter
2014-09-22 10:17 ` [PATCH 12/13] mmc: sdhci-pci: Fix Braswell eMMC " Adrian Hunter
2014-09-22 10:17 ` [PATCH 13/13] mmc: sdhci: Transfer Complete has higher priority than Data Timeout Error Adrian Hunter
2014-09-23  7:34 ` [PATCH 00/13] mmc: Some Braswell and misc patches Ulf Hansson
2014-09-24  7:45   ` Adrian Hunter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1411381064-1703-7-git-send-email-adrian.hunter@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=chris@printf.net \
    --cc=linux-mmc@vger.kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.