aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mmc/host/mmci.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-01-27 04:50:13 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-02-04 08:25:48 -0500
commitc4d877c1b3df58d89f01d7b211f58b944356eea3 (patch)
tree57ac31cbfd06d24cd2d841e22f3fe4c6b83dd124 /drivers/mmc/host/mmci.c
parent7d7aa23cf0700f4025cb61bd1ac517ccf79bd460 (diff)
ARM: mmci: avoid unnecessary switch to data available PIO interrupts
We don't need to switch to data available interrupts if there's at least half a FIFO depth worth of data remaining, as we'll still get the FIFO half full interrupt. Keep this interrupt masked off until we have less than half the FIFO depth worth of data remaining. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers/mmc/host/mmci.c')
-rw-r--r--drivers/mmc/host/mmci.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 2563792c01d0..bde170d8f723 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -224,10 +224,11 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
224 irqmask = MCI_RXFIFOHALFFULLMASK; 224 irqmask = MCI_RXFIFOHALFFULLMASK;
225 225
226 /* 226 /*
227 * If we have less than a FIFOSIZE of bytes to transfer, 227 * If we have less than the fifo 'half-full' threshold to
228 * trigger a PIO interrupt as soon as any data is available. 228 * transfer, trigger a PIO interrupt as soon as any data
229 * is available.
229 */ 230 */
230 if (host->size < variant->fifosize) 231 if (host->size < variant->fifohalfsize)
231 irqmask |= MCI_RXDATAAVLBLMASK; 232 irqmask |= MCI_RXDATAAVLBLMASK;
232 } else { 233 } else {
233 /* 234 /*
@@ -502,10 +503,10 @@ static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
502 local_irq_restore(flags); 503 local_irq_restore(flags);
503 504
504 /* 505 /*
505 * If we're nearing the end of the read, switch to 506 * If we have less than the fifo 'half-full' threshold to transfer,
506 * "any data available" mode. 507 * trigger a PIO interrupt as soon as any data is available.
507 */ 508 */
508 if (status & MCI_RXACTIVE && host->size < variant->fifosize) 509 if (status & MCI_RXACTIVE && host->size < variant->fifohalfsize)
509 mmci_set_mask1(host, MCI_RXDATAAVLBLMASK); 510 mmci_set_mask1(host, MCI_RXDATAAVLBLMASK);
510 511
511 /* 512 /*