| From aa83922dbd8c0d4e16cbc28fae2d59a6d709ed07 Mon Sep 17 00:00:00 2001 |
| From: Guennadi Liakhovetski <g.liakhovetski@gmx.de> |
| Date: Wed, 22 Feb 2012 13:16:09 +0100 |
| Subject: mmc: tmio_mmc: do not enable card hotplug interrupts, if unused |
| |
| If TMIO MMC is used in polling mode, or the card is non-removable, or |
| card-detection is performed, using an external interrupt, there is no |
| need to enable controller native card hotplug interrupts. |
| |
| Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> |
| Signed-off-by: Chris Ball <cjb@laptop.org> |
| (cherry picked from commit e23cd53c799694d0dc1d6a66370201ad9c181bae) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/mmc/host/tmio_mmc_pio.c | 7 ++++++- |
| 1 file changed, 6 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c |
| index 5f9ad74..f013347 100644 |
| --- a/drivers/mmc/host/tmio_mmc_pio.c |
| +++ b/drivers/mmc/host/tmio_mmc_pio.c |
| @@ -303,6 +303,7 @@ static int tmio_mmc_start_command(struct tmio_mmc_host *host, struct mmc_command |
| { |
| struct mmc_data *data = host->data; |
| int c = cmd->opcode; |
| + u32 irq_mask = TMIO_MASK_CMD; |
| |
| /* Command 12 is handled by hardware */ |
| if (cmd->opcode == 12 && !cmd->arg) { |
| @@ -338,7 +339,9 @@ static int tmio_mmc_start_command(struct tmio_mmc_host *host, struct mmc_command |
| c |= TRANSFER_READ; |
| } |
| |
| - tmio_mmc_enable_mmc_irqs(host, TMIO_MASK_CMD); |
| + if (!host->native_hotplug) |
| + irq_mask &= ~(TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT); |
| + tmio_mmc_enable_mmc_irqs(host, irq_mask); |
| |
| /* Fire off the command */ |
| sd_ctrl_write32(host, CTL_ARG_REG, cmd->arg); |
| @@ -960,6 +963,8 @@ int __devinit tmio_mmc_host_probe(struct tmio_mmc_host **host, |
| irq_mask |= TMIO_MASK_READOP; |
| if (!_host->chan_tx) |
| irq_mask |= TMIO_MASK_WRITEOP; |
| + if (!_host->native_hotplug) |
| + irq_mask &= ~(TMIO_STAT_CARD_REMOVE | TMIO_STAT_CARD_INSERT); |
| |
| tmio_mmc_enable_mmc_irqs(_host, irq_mask); |
| |
| -- |
| 1.7.10.2.565.gbd578b5 |
| |