Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1723294
| From | Vijay Viswanath <vviswana@codeaurora.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v1 1/5] mmc: sdhci-msm: fix issue with power irq |
| Date | 2017-08-30 15:00 +0200 |
| Message-ID | <ukaL9-8rd-57@gated-at.bofh.it> (permalink) |
| References | <ukaL7-8rd-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
From: Subhash Jadavani <subhashj@codeaurora.org>
SDCC controller reset (SW_RST) during probe may trigger power irq if
previous status of PWRCTL was either BUS_ON or IO_HIGH_V. So before we
enable the power irq interrupt in GIC (by registering the interrupt
handler), we need to ensure that any pending power irq interrupt status
is acknowledged otherwise power irq interrupt handler would be fired
prematurely.
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Vijay Viswanath <vviswana@codeaurora.org>
---
drivers/mmc/host/sdhci-msm.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/mmc/host/sdhci-msm.c b/drivers/mmc/host/sdhci-msm.c
index 9d601dc..d636251 100644
--- a/drivers/mmc/host/sdhci-msm.c
+++ b/drivers/mmc/host/sdhci-msm.c
@@ -1250,6 +1250,21 @@ static int sdhci_msm_probe(struct platform_device *pdev)
CORE_VENDOR_SPEC_CAPABILITIES0);
}
+ /*
+ * Power on reset state may trigger power irq if previous status of
+ * PWRCTL was either BUS_ON or IO_HIGH_V. So before enabling pwr irq
+ * interrupt in GIC, any pending power irq interrupt should be
+ * acknowledged. Otherwise power irq interrupt handler would be
+ * fired prematurely.
+ */
+ sdhci_msm_voltage_switch(host);
+
+ /*
+ * Ensure that above writes are propogated before interrupt enablement
+ * in GIC.
+ */
+ mb();
+
/* Setup IRQ for handling power/voltage tasks with PMIC */
msm_host->pwr_irq = platform_get_irq_byname(pdev, "pwr_irq");
if (msm_host->pwr_irq < 0) {
@@ -1259,6 +1274,9 @@ static int sdhci_msm_probe(struct platform_device *pdev)
goto clk_disable;
}
+ /* Enable pwr irq interrupts */
+ writel_relaxed(INT_MASK, msm_host->core_mem + CORE_PWRCTL_MASK);
+
ret = devm_request_threaded_irq(&pdev->dev, msm_host->pwr_irq, NULL,
sdhci_msm_pwr_irq, IRQF_ONESHOT,
dev_name(&pdev->dev), host);
--
Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[PATCH v1 0/5] mmc: sdhci-msm: Corrections to implementation of power irq Vijay Viswanath <vviswana@codeaurora.org> - 2017-08-30 15:00 +0200 [PATCH v1 3/5] mmc: sdhci-msm: Add support to wait for power irq Vijay Viswanath <vviswana@codeaurora.org> - 2017-08-30 15:00 +0200 [PATCH v1 4/5] mmc: sdhci-msm: Add ops to do sdhc register write Vijay Viswanath <vviswana@codeaurora.org> - 2017-08-30 15:00 +0200 [PATCH v1 1/5] mmc: sdhci-msm: fix issue with power irq Vijay Viswanath <vviswana@codeaurora.org> - 2017-08-30 15:00 +0200
csiph-web