All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Tony Lindgren <tony@atomide.com>,
	Adrian Hunter <adrian.hunter@intel.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	<linux-mmc@vger.kernel.org>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>
Subject: [PATCH v2 09/16] mmc: sdhci: Add quirk to disable HW timeout
Date: Mon, 5 Feb 2018 18:20:22 +0530	[thread overview]
Message-ID: <20180205125029.21570-10-kishon@ti.com> (raw)
In-Reply-To: <20180205125029.21570-1-kishon@ti.com>

Add quirk to disable HW timeout if the requested timeout is more than
the maximum obtainable timeout.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
 drivers/mmc/host/sdhci.c | 12 ++++++++++++
 drivers/mmc/host/sdhci.h |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 070aff9c108f..1aa74b4682f3 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -735,6 +735,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
 		DBG("Too large timeout 0x%x requested for CMD%d!\n",
 		    count, cmd->opcode);
 		count = 0xE;
+		if (host->quirks2 & SDHCI_QUIRK2_DISABLE_HW_TIMEOUT) {
+			host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
+			sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+			sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+			host->hw_timeout_disabled = true;
+		}
 	}
 
 	return count;
@@ -2349,6 +2355,12 @@ static bool sdhci_request_done(struct sdhci_host *host)
 	}
 
 	sdhci_del_timer(host, mrq);
+	if (sdhci_data_line_cmd(mrq->cmd) && host->hw_timeout_disabled) {
+		host->ier |= SDHCI_INT_DATA_TIMEOUT;
+		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+		host->hw_timeout_disabled = false;
+	}
 
 	/*
 	 * Always unmap the data buffers if they were mapped by
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index afab26fd70e6..3a967a56fcc3 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -437,6 +437,11 @@ struct sdhci_host {
 #define SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN		(1<<15)
 /* Controller has CRC in 136 bit Command Response */
 #define SDHCI_QUIRK2_RSP_136_HAS_CRC			(1<<16)
+/*
+ * Disable HW timeout if the requested timeout is more than the maximum
+ * obtainable timeout
+ */
+#define SDHCI_QUIRK2_DISABLE_HW_TIMEOUT			(1<<17)
 
 	int irq;		/* Device IRQ */
 	void __iomem *ioaddr;	/* Mapped address */
@@ -522,6 +527,8 @@ struct sdhci_host {
 	unsigned int            ocr_avail_mmc;
 	u32 ocr_mask;		/* available voltages */
 
+	bool			hw_timeout_disabled;
+
 	unsigned		timing;		/* Current timing */
 
 	u32			thread_isr;
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: Kishon Vijay Abraham I <kishon@ti.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Tony Lindgren <tony@atomide.com>,
	Adrian Hunter <adrian.hunter@intel.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Mark Rutland <mark.rutland@arm.com>,
	Russell King <linux@armlinux.org.uk>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	linux-mmc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 09/16] mmc: sdhci: Add quirk to disable HW timeout
Date: Mon, 5 Feb 2018 18:20:22 +0530	[thread overview]
Message-ID: <20180205125029.21570-10-kishon@ti.com> (raw)
In-Reply-To: <20180205125029.21570-1-kishon@ti.com>

Add quirk to disable HW timeout if the requested timeout is more than
the maximum obtainable timeout.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
 drivers/mmc/host/sdhci.c | 12 ++++++++++++
 drivers/mmc/host/sdhci.h |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 070aff9c108f..1aa74b4682f3 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -735,6 +735,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
 		DBG("Too large timeout 0x%x requested for CMD%d!\n",
 		    count, cmd->opcode);
 		count = 0xE;
+		if (host->quirks2 & SDHCI_QUIRK2_DISABLE_HW_TIMEOUT) {
+			host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
+			sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+			sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+			host->hw_timeout_disabled = true;
+		}
 	}
 
 	return count;
@@ -2349,6 +2355,12 @@ static bool sdhci_request_done(struct sdhci_host *host)
 	}
 
 	sdhci_del_timer(host, mrq);
+	if (sdhci_data_line_cmd(mrq->cmd) && host->hw_timeout_disabled) {
+		host->ier |= SDHCI_INT_DATA_TIMEOUT;
+		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+		host->hw_timeout_disabled = false;
+	}
 
 	/*
 	 * Always unmap the data buffers if they were mapped by
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index afab26fd70e6..3a967a56fcc3 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -437,6 +437,11 @@ struct sdhci_host {
 #define SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN		(1<<15)
 /* Controller has CRC in 136 bit Command Response */
 #define SDHCI_QUIRK2_RSP_136_HAS_CRC			(1<<16)
+/*
+ * Disable HW timeout if the requested timeout is more than the maximum
+ * obtainable timeout
+ */
+#define SDHCI_QUIRK2_DISABLE_HW_TIMEOUT			(1<<17)
 
 	int irq;		/* Device IRQ */
 	void __iomem *ioaddr;	/* Mapped address */
@@ -522,6 +527,8 @@ struct sdhci_host {
 	unsigned int            ocr_avail_mmc;
 	u32 ocr_mask;		/* available voltages */
 
+	bool			hw_timeout_disabled;
+
 	unsigned		timing;		/* Current timing */
 
 	u32			thread_isr;
-- 
2.11.0

WARNING: multiple messages have this Message-ID (diff)
From: kishon@ti.com (Kishon Vijay Abraham I)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 09/16] mmc: sdhci: Add quirk to disable HW timeout
Date: Mon, 5 Feb 2018 18:20:22 +0530	[thread overview]
Message-ID: <20180205125029.21570-10-kishon@ti.com> (raw)
In-Reply-To: <20180205125029.21570-1-kishon@ti.com>

Add quirk to disable HW timeout if the requested timeout is more than
the maximum obtainable timeout.

Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
---
 drivers/mmc/host/sdhci.c | 12 ++++++++++++
 drivers/mmc/host/sdhci.h |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 070aff9c108f..1aa74b4682f3 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -735,6 +735,12 @@ static u8 sdhci_calc_timeout(struct sdhci_host *host, struct mmc_command *cmd)
 		DBG("Too large timeout 0x%x requested for CMD%d!\n",
 		    count, cmd->opcode);
 		count = 0xE;
+		if (host->quirks2 & SDHCI_QUIRK2_DISABLE_HW_TIMEOUT) {
+			host->ier &= ~SDHCI_INT_DATA_TIMEOUT;
+			sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+			sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+			host->hw_timeout_disabled = true;
+		}
 	}
 
 	return count;
@@ -2349,6 +2355,12 @@ static bool sdhci_request_done(struct sdhci_host *host)
 	}
 
 	sdhci_del_timer(host, mrq);
+	if (sdhci_data_line_cmd(mrq->cmd) && host->hw_timeout_disabled) {
+		host->ier |= SDHCI_INT_DATA_TIMEOUT;
+		sdhci_writel(host, host->ier, SDHCI_INT_ENABLE);
+		sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
+		host->hw_timeout_disabled = false;
+	}
 
 	/*
 	 * Always unmap the data buffers if they were mapped by
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index afab26fd70e6..3a967a56fcc3 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -437,6 +437,11 @@ struct sdhci_host {
 #define SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN		(1<<15)
 /* Controller has CRC in 136 bit Command Response */
 #define SDHCI_QUIRK2_RSP_136_HAS_CRC			(1<<16)
+/*
+ * Disable HW timeout if the requested timeout is more than the maximum
+ * obtainable timeout
+ */
+#define SDHCI_QUIRK2_DISABLE_HW_TIMEOUT			(1<<17)
 
 	int irq;		/* Device IRQ */
 	void __iomem *ioaddr;	/* Mapped address */
@@ -522,6 +527,8 @@ struct sdhci_host {
 	unsigned int            ocr_avail_mmc;
 	u32 ocr_mask;		/* available voltages */
 
+	bool			hw_timeout_disabled;
+
 	unsigned		timing;		/* Current timing */
 
 	u32			thread_isr;
-- 
2.11.0

  parent reply	other threads:[~2018-02-05 12:52 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 12:50 [PATCH v2 00/16] mmc: sdhci-omap: Add UHS/HS200 mode support Kishon Vijay Abraham I
2018-02-05 12:50 ` Kishon Vijay Abraham I
2018-02-05 12:50 ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 01/16] mmc: sdhci-omap: Update 'power_mode' outside sdhci_omap_init_74_clocks Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 02/16] mmc: sdhci-omap: Add card_busy host ops Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 03/16] mmc: sdhci-omap: Add custom set_uhs_signaling sdhci_host ops Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 04/16] mmc: sdhci-omap: Add tuning support Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 05/16] mmc: sdhci-omap: Workaround for Errata i802 Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 06/16] mmc: sdhci_omap: Add support to set IODELAY values Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 07/16] mmc: sdhci_omap: Fix sdhci-omap quirks Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 08/16] mmc: sdhci-omap: Add support to override f_max and iodelay from pdata Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-14  9:53   ` Ulf Hansson
2018-02-14  9:53     ` Ulf Hansson
2018-02-14 17:24     ` Tony Lindgren
2018-02-14 17:24       ` Tony Lindgren
2018-02-16  8:08       ` Kishon Vijay Abraham I
2018-02-16  8:08         ` Kishon Vijay Abraham I
2018-02-16  8:08         ` Kishon Vijay Abraham I
2018-02-05 12:50 ` Kishon Vijay Abraham I [this message]
2018-02-05 12:50   ` [PATCH v2 09/16] mmc: sdhci: Add quirk to disable HW timeout Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-19  8:51   ` Adrian Hunter
2018-02-19  8:51     ` Adrian Hunter
2018-02-19  8:51     ` Adrian Hunter
2018-03-05  9:30     ` Kishon Vijay Abraham I
2018-03-05  9:30       ` Kishon Vijay Abraham I
2018-03-05  9:30       ` Kishon Vijay Abraham I
2018-03-05  9:38       ` Adrian Hunter
2018-03-05  9:38         ` Adrian Hunter
2018-03-14 13:25         ` Kishon Vijay Abraham I
2018-03-14 13:25           ` Kishon Vijay Abraham I
2018-03-14 13:25           ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 10/16] mmc: sdhci: Fix to use data_timer only for data line commands Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-19  8:03   ` Adrian Hunter
2018-02-19  8:03     ` Adrian Hunter
2018-02-19  8:03     ` Adrian Hunter
2018-02-19 12:55     ` Kishon Vijay Abraham I
2018-02-19 12:55       ` Kishon Vijay Abraham I
2018-02-19 12:55       ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 11/16] mmc: sdhci: Program a relatively accurate SW timeout value Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-16  7:17   ` Kishon Vijay Abraham I
2018-02-16  7:17     ` Kishon Vijay Abraham I
2018-02-16  7:17     ` Kishon Vijay Abraham I
2018-02-19  9:24   ` Adrian Hunter
2018-02-19  9:24     ` Adrian Hunter
2018-02-19  9:24     ` Adrian Hunter
2018-02-19 13:13     ` Adrian Hunter
2018-02-19 13:13       ` Adrian Hunter
2018-02-19 13:13       ` Adrian Hunter
2018-02-05 12:50 ` [PATCH v2 12/16] mmc: sdhci-omap: Workaround for Errata i834 Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 13/16] dt-bindings: sdhci-omap: Add K2G specific binding Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 14/16] mmc: sdhci-omap: Add support for MMC/SD controller in k2g SoC Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50 ` [PATCH v2 15/16] mmc: sdhci-omap: Add SPDX identifier Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 21:50   ` Joe Perches
2018-02-05 21:50     ` Joe Perches
2018-02-05 21:50     ` Joe Perches
2018-02-19  9:33   ` Adrian Hunter
2018-02-19  9:33     ` Adrian Hunter
2018-02-19  9:33     ` Adrian Hunter
2018-02-05 12:50 ` [PATCH v2 16/16] ARM: OMAP2+: Use sdhci-omap specific pdata-quirks for MMC/SD on DRA74x EVM Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-05 12:50   ` Kishon Vijay Abraham I
2018-02-14 10:38 ` [PATCH v2 00/16] mmc: sdhci-omap: Add UHS/HS200 mode support Ulf Hansson
2018-02-14 10:38   ` Ulf Hansson
2018-02-14 10:38   ` Ulf Hansson

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=20180205125029.21570-10-kishon@ti.com \
    --to=kishon@ti.com \
    --cc=adrian.hunter@intel.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=tony@atomide.com \
    --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.