Signed-off-by: Purushotam Kumar <[email protected]>
---
drivers/mmc/host/davinci_mmc.c | 37 +++++++++++++++----------------------
1 files changed, 15 insertions(+), 22 deletions(-)
diff --git a/drivers/mmc/host/davinci_mmc.c b/drivers/mmc/host/davinci_mmc.c
index c631c91..9e04082 100644
--- a/drivers/mmc/host/davinci_mmc.c
+++ b/drivers/mmc/host/davinci_mmc.c
@@ -912,14 +912,26 @@ davinci_abort_data(struct mmc_davinci_host *host, struct
mmc_data *data)
writel(temp, host->base + DAVINCI_MMCCTL);
}
-static inline int handle_core_command(
- struct mmc_davinci_host *host, unsigned int status)
+static irqreturn_t mmc_davinci_irq(int irq, void *dev_id)
{
+ struct mmc_davinci_host *host = (struct mmc_davinci_host *)dev_id;
+ unsigned int status, qstatus;
int end_command = 0;
int end_transfer = 0;
- unsigned int qstatus = status;
struct mmc_data *data = host->data;
+ if (host->cmd == NULL && host->data == NULL) {
+ status = readl(host->base + DAVINCI_MMCST0);
+ dev_dbg(mmc_dev(host->mmc),
+ "Spurious interrupt 0x%04x\n", status);
+ /* Disable the interrupt from mmcsd */
+ writel(0, host->base + DAVINCI_MMCIM);
+ return IRQ_NONE;
+ }
+
+ status = readl(host->base + DAVINCI_MMCST0);
+ qstatus = status;
+
/* handle FIFO first when using PIO for data.
* bytes_left will decrease to zero as I/O progress and status will
* read zero over iteration because this controller status
@@ -1022,25 +1034,6 @@ static inline int handle_core_command(
mmc_davinci_cmd_done(host, host->cmd);
if (end_transfer)
mmc_davinci_xfer_done(host, data);
- return 0;
-}
-
-static irqreturn_t mmc_davinci_irq(int irq, void *dev_id)
-{
- struct mmc_davinci_host *host = (struct mmc_davinci_host *)dev_id;
- unsigned int status;
-
- if (host->cmd == NULL && host->data == NULL) {
- status = readl(host->base + DAVINCI_MMCST0);
- dev_dbg(mmc_dev(host->mmc),
- "Spurious interrupt 0x%04x\n", status);
- /* Disable the interrupt from mmcsd */
- writel(0, host->base + DAVINCI_MMCIM);
- return IRQ_NONE;
- }
-
- status = readl(host->base + DAVINCI_MMCST0);
- handle_core_command(host, status);
return IRQ_HANDLED;
}
--
1.5.6
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source