diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mfd/glamo/glamo-mci.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/drivers/mfd/glamo/glamo-mci.c b/drivers/mfd/glamo/glamo-mci.c index 778e47c7427..e836913ea23 100644 --- a/drivers/mfd/glamo/glamo-mci.c +++ b/drivers/mfd/glamo/glamo-mci.c @@ -331,17 +331,12 @@ static int __glamo_mci_set_card_clock(struct glamo_mci_host *host, int freq, return real_rate; } -static void glamo_mci_irq(unsigned int irq, struct irq_desc *desc) +static void glamo_mci_irq_host(struct glamo_mci_host *host) { - struct glamo_mci_host *host = (struct glamo_mci_host *) - desc->handler_data; u16 status; struct mmc_command *cmd; unsigned long iflags; - if (!host) - return; - if (host->suspending) { /* bad news, dangerous time */ dev_err(&host->pdev->dev, "****glamo_mci_irq before resumed\n"); return; @@ -405,6 +400,16 @@ done: spin_unlock_irqrestore(&host->complete_lock, iflags); } +static void glamo_mci_irq(unsigned int irq, struct irq_desc *desc) +{ + struct glamo_mci_host *host = (struct glamo_mci_host *) + desc->handler_data; + + if (host) + glamo_mci_irq_host(host); + +} + static int glamo_mci_send_command(struct glamo_mci_host *host, struct mmc_command *cmd) { @@ -718,8 +723,7 @@ static void glamo_mci_send_request(struct mmc_host *mmc) /* yay we are an interrupt controller! -- call the ISR * it will stop clock to card */ - glamo_mci_irq(IRQ_GLAMO(GLAMO_IRQIDX_MMC), - irq_desc + IRQ_GLAMO(GLAMO_IRQIDX_MMC)); + glamo_mci_irq_host(host); } return; |