From de44e81fa5c80f7c2ac76e1505dc97840e9539f5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Thu, 16 Apr 2020 13:39:47 +0200 Subject: [PATCH] drop sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch --- ...-tegra-specific-set_timeout-callback.patch | 93 ------------------- ...-tegra-specific-set_timeout-callback.patch | 93 ------------------- ...-tegra-specific-set_timeout-callback.patch | 93 ------------------- 3 files changed, 279 deletions(-) delete mode 100644 queue-5.4/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch delete mode 100644 queue-5.5/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch delete mode 100644 queue-5.6/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch diff --git a/queue-5.4/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch b/queue-5.4/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch deleted file mode 100644 index bdacd8d3ba2..00000000000 --- a/queue-5.4/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 Mon Sep 17 00:00:00 2001 -From: Sowjanya Komatineni -Date: Wed, 11 Mar 2020 08:47:54 -0700 -Subject: sdhci: tegra: Implement Tegra specific set_timeout callback - -From: Sowjanya Komatineni - -commit 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 upstream. - -Tegra host supports HW busy detection and timeouts based on the -count programmed in SDHCI_TIMEOUT_CONTROL register and max busy -timeout it supports is 11s in finite busy wait mode. - -Some operations like SLEEP_AWAKE, ERASE and flush cache through -SWITCH commands take longer than 11s and Tegra host supports -infinite HW busy wait mode where HW waits forever till the card -is busy without HW timeout. - -This patch implements Tegra specific set_timeout sdhci_ops to allow -switching between finite and infinite HW busy detection wait modes -based on the device command expected operation time. - -Signed-off-by: Sowjanya Komatineni -Cc: stable@vger.kernel.org -Link: https://lore.kernel.org/r/1583941675-9884-1-git-send-email-skomatineni@nvidia.com -Signed-off-by: Ulf Hansson -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/mmc/host/sdhci-tegra.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - ---- a/drivers/mmc/host/sdhci-tegra.c -+++ b/drivers/mmc/host/sdhci-tegra.c -@@ -45,6 +45,7 @@ - #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_SHIFT 8 - - #define SDHCI_TEGRA_VENDOR_MISC_CTRL 0x120 -+#define SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT BIT(0) - #define SDHCI_MISC_CTRL_ENABLE_SDR104 0x8 - #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 - #define SDHCI_MISC_CTRL_ENABLE_SDHCI_SPEC_300 0x20 -@@ -1227,6 +1228,34 @@ static u32 sdhci_tegra_cqhci_irq(struct - return 0; - } - -+static void tegra_sdhci_set_timeout(struct sdhci_host *host, -+ struct mmc_command *cmd) -+{ -+ u32 val; -+ -+ /* -+ * HW busy detection timeout is based on programmed data timeout -+ * counter and maximum supported timeout is 11s which may not be -+ * enough for long operations like cache flush, sleep awake, erase. -+ * -+ * ERASE_TIMEOUT_LIMIT bit of VENDOR_MISC_CTRL register allows -+ * host controller to wait for busy state until the card is busy -+ * without HW timeout. -+ * -+ * So, use infinite busy wait mode for operations that may take -+ * more than maximum HW busy timeout of 11s otherwise use finite -+ * busy wait mode. -+ */ -+ val = sdhci_readl(host, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ if (cmd && cmd->busy_timeout >= 11 * HZ) -+ val |= SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ else -+ val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ sdhci_writel(host, val, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ -+ __sdhci_set_timeout(host, cmd); -+} -+ - static const struct cqhci_host_ops sdhci_tegra_cqhci_ops = { - .write_l = tegra_cqhci_writel, - .enable = sdhci_tegra_cqe_enable, -@@ -1366,6 +1395,7 @@ static const struct sdhci_ops tegra210_s - .set_uhs_signaling = tegra_sdhci_set_uhs_signaling, - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra210_pdata = { -@@ -1403,6 +1433,7 @@ static const struct sdhci_ops tegra186_s - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, - .irq = sdhci_tegra_cqhci_irq, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra186_pdata = { diff --git a/queue-5.5/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch b/queue-5.5/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch deleted file mode 100644 index bdacd8d3ba2..00000000000 --- a/queue-5.5/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 Mon Sep 17 00:00:00 2001 -From: Sowjanya Komatineni -Date: Wed, 11 Mar 2020 08:47:54 -0700 -Subject: sdhci: tegra: Implement Tegra specific set_timeout callback - -From: Sowjanya Komatineni - -commit 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 upstream. - -Tegra host supports HW busy detection and timeouts based on the -count programmed in SDHCI_TIMEOUT_CONTROL register and max busy -timeout it supports is 11s in finite busy wait mode. - -Some operations like SLEEP_AWAKE, ERASE and flush cache through -SWITCH commands take longer than 11s and Tegra host supports -infinite HW busy wait mode where HW waits forever till the card -is busy without HW timeout. - -This patch implements Tegra specific set_timeout sdhci_ops to allow -switching between finite and infinite HW busy detection wait modes -based on the device command expected operation time. - -Signed-off-by: Sowjanya Komatineni -Cc: stable@vger.kernel.org -Link: https://lore.kernel.org/r/1583941675-9884-1-git-send-email-skomatineni@nvidia.com -Signed-off-by: Ulf Hansson -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/mmc/host/sdhci-tegra.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - ---- a/drivers/mmc/host/sdhci-tegra.c -+++ b/drivers/mmc/host/sdhci-tegra.c -@@ -45,6 +45,7 @@ - #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_SHIFT 8 - - #define SDHCI_TEGRA_VENDOR_MISC_CTRL 0x120 -+#define SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT BIT(0) - #define SDHCI_MISC_CTRL_ENABLE_SDR104 0x8 - #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 - #define SDHCI_MISC_CTRL_ENABLE_SDHCI_SPEC_300 0x20 -@@ -1227,6 +1228,34 @@ static u32 sdhci_tegra_cqhci_irq(struct - return 0; - } - -+static void tegra_sdhci_set_timeout(struct sdhci_host *host, -+ struct mmc_command *cmd) -+{ -+ u32 val; -+ -+ /* -+ * HW busy detection timeout is based on programmed data timeout -+ * counter and maximum supported timeout is 11s which may not be -+ * enough for long operations like cache flush, sleep awake, erase. -+ * -+ * ERASE_TIMEOUT_LIMIT bit of VENDOR_MISC_CTRL register allows -+ * host controller to wait for busy state until the card is busy -+ * without HW timeout. -+ * -+ * So, use infinite busy wait mode for operations that may take -+ * more than maximum HW busy timeout of 11s otherwise use finite -+ * busy wait mode. -+ */ -+ val = sdhci_readl(host, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ if (cmd && cmd->busy_timeout >= 11 * HZ) -+ val |= SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ else -+ val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ sdhci_writel(host, val, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ -+ __sdhci_set_timeout(host, cmd); -+} -+ - static const struct cqhci_host_ops sdhci_tegra_cqhci_ops = { - .write_l = tegra_cqhci_writel, - .enable = sdhci_tegra_cqe_enable, -@@ -1366,6 +1395,7 @@ static const struct sdhci_ops tegra210_s - .set_uhs_signaling = tegra_sdhci_set_uhs_signaling, - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra210_pdata = { -@@ -1403,6 +1433,7 @@ static const struct sdhci_ops tegra186_s - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, - .irq = sdhci_tegra_cqhci_irq, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra186_pdata = { diff --git a/queue-5.6/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch b/queue-5.6/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch deleted file mode 100644 index bdacd8d3ba2..00000000000 --- a/queue-5.6/sdhci-tegra-implement-tegra-specific-set_timeout-callback.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 Mon Sep 17 00:00:00 2001 -From: Sowjanya Komatineni -Date: Wed, 11 Mar 2020 08:47:54 -0700 -Subject: sdhci: tegra: Implement Tegra specific set_timeout callback - -From: Sowjanya Komatineni - -commit 5e958e4aacf44e1cc98b0d88d8e66e98f03bbf66 upstream. - -Tegra host supports HW busy detection and timeouts based on the -count programmed in SDHCI_TIMEOUT_CONTROL register and max busy -timeout it supports is 11s in finite busy wait mode. - -Some operations like SLEEP_AWAKE, ERASE and flush cache through -SWITCH commands take longer than 11s and Tegra host supports -infinite HW busy wait mode where HW waits forever till the card -is busy without HW timeout. - -This patch implements Tegra specific set_timeout sdhci_ops to allow -switching between finite and infinite HW busy detection wait modes -based on the device command expected operation time. - -Signed-off-by: Sowjanya Komatineni -Cc: stable@vger.kernel.org -Link: https://lore.kernel.org/r/1583941675-9884-1-git-send-email-skomatineni@nvidia.com -Signed-off-by: Ulf Hansson -Signed-off-by: Greg Kroah-Hartman - ---- - drivers/mmc/host/sdhci-tegra.c | 31 +++++++++++++++++++++++++++++++ - 1 file changed, 31 insertions(+) - ---- a/drivers/mmc/host/sdhci-tegra.c -+++ b/drivers/mmc/host/sdhci-tegra.c -@@ -45,6 +45,7 @@ - #define SDHCI_TEGRA_CAP_OVERRIDES_DQS_TRIM_SHIFT 8 - - #define SDHCI_TEGRA_VENDOR_MISC_CTRL 0x120 -+#define SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT BIT(0) - #define SDHCI_MISC_CTRL_ENABLE_SDR104 0x8 - #define SDHCI_MISC_CTRL_ENABLE_SDR50 0x10 - #define SDHCI_MISC_CTRL_ENABLE_SDHCI_SPEC_300 0x20 -@@ -1227,6 +1228,34 @@ static u32 sdhci_tegra_cqhci_irq(struct - return 0; - } - -+static void tegra_sdhci_set_timeout(struct sdhci_host *host, -+ struct mmc_command *cmd) -+{ -+ u32 val; -+ -+ /* -+ * HW busy detection timeout is based on programmed data timeout -+ * counter and maximum supported timeout is 11s which may not be -+ * enough for long operations like cache flush, sleep awake, erase. -+ * -+ * ERASE_TIMEOUT_LIMIT bit of VENDOR_MISC_CTRL register allows -+ * host controller to wait for busy state until the card is busy -+ * without HW timeout. -+ * -+ * So, use infinite busy wait mode for operations that may take -+ * more than maximum HW busy timeout of 11s otherwise use finite -+ * busy wait mode. -+ */ -+ val = sdhci_readl(host, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ if (cmd && cmd->busy_timeout >= 11 * HZ) -+ val |= SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ else -+ val &= ~SDHCI_MISC_CTRL_ERASE_TIMEOUT_LIMIT; -+ sdhci_writel(host, val, SDHCI_TEGRA_VENDOR_MISC_CTRL); -+ -+ __sdhci_set_timeout(host, cmd); -+} -+ - static const struct cqhci_host_ops sdhci_tegra_cqhci_ops = { - .write_l = tegra_cqhci_writel, - .enable = sdhci_tegra_cqe_enable, -@@ -1366,6 +1395,7 @@ static const struct sdhci_ops tegra210_s - .set_uhs_signaling = tegra_sdhci_set_uhs_signaling, - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra210_pdata = { -@@ -1403,6 +1433,7 @@ static const struct sdhci_ops tegra186_s - .voltage_switch = tegra_sdhci_voltage_switch, - .get_max_clock = tegra_sdhci_get_max_clock, - .irq = sdhci_tegra_cqhci_irq, -+ .set_timeout = tegra_sdhci_set_timeout, - }; - - static const struct sdhci_pltfm_data sdhci_tegra186_pdata = { -- 2.47.3