mmc: sdhci-msm: do not disable test-bus
There is a hardware ring-buffer that logs the commands
sent and doorbells rung. This is helpful for debugging
in case of errors. This requires that the testbus be
enabled. Hence don't disable testbus.
Change-Id: I9c2fa984740aa9a0f8135d2196be6b3639ec22d1
Signed-off-by: Asutosh Das <asutoshd@codeaurora.org>
Signed-off-by: Venkat Gopalakrishnan <venkatg@codeaurora.org>
[xiaonian@codeaurora.org: fixed trivial merge conflicts]
Signed-off-by: Xiaonian Wang <xiaonian@codeaurora.org>
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index a56d583..aa48866 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -2697,9 +2697,23 @@
pr_info(" Test bus[%d to %d]: 0x%08x 0x%08x 0x%08x 0x%08x\n",
i, i + 3, debug_reg[i], debug_reg[i+1],
debug_reg[i+2], debug_reg[i+3]);
- /* Disable test bus */
- writel_relaxed(~CORE_TESTBUS_ENA, msm_host->core_mem +
- CORE_TESTBUS_CONFIG);
+}
+
+static void sdhci_msm_clear_set_dumpregs(struct sdhci_host *host, bool set)
+{
+ struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
+ struct sdhci_msm_host *msm_host = pltfm_host->priv;
+
+ if (set) {
+ writel_relaxed(CORE_TESTBUS_ENA,
+ msm_host->core_mem + CORE_TESTBUS_CONFIG);
+ } else {
+ u32 value;
+
+ value = readl_relaxed(msm_host->core_mem + CORE_TESTBUS_CONFIG);
+ value &= ~CORE_TESTBUS_ENA;
+ writel_relaxed(value, msm_host->core_mem + CORE_TESTBUS_CONFIG);
+ }
}
static struct sdhci_ops sdhci_msm_ops = {
@@ -2716,6 +2730,7 @@
.enable_controller_clock = sdhci_msm_enable_controller_clock,
.set_bus_width = sdhci_set_bus_width,
.reset = sdhci_reset,
+ .clear_set_dumpregs = sdhci_msm_clear_set_dumpregs,
};
static void sdhci_set_default_hw_caps(struct sdhci_msm_host *msm_host,