diff options
author | Anton Altaparmakov <aia21@cantab.net> | 2006-02-24 09:06:36 +0000 |
---|---|---|
committer | Anton Altaparmakov <aia21@cantab.net> | 2006-02-24 09:06:36 +0000 |
commit | fab8d6ddf6dee2608869005d45fe97f70e4f5bdd (patch) | |
tree | fecf566e03a87b2a44c7f3363ddb5c0d4bebdca7 /drivers/mmc/mmci.c | |
parent | 64419d93a5906600af5817ad0cae3c6ecf7fb389 (diff) | |
parent | f52ee1410d563cd409b08822492273a5bc235821 (diff) |
Merge branch 'master' of /home/src/linux-2.6/
Diffstat (limited to 'drivers/mmc/mmci.c')
-rw-r--r-- | drivers/mmc/mmci.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/mmc/mmci.c b/drivers/mmc/mmci.c index 634ef53e85a50..9fef29d978b5e 100644 --- a/drivers/mmc/mmci.c +++ b/drivers/mmc/mmci.c @@ -97,6 +97,13 @@ static void mmci_start_data(struct mmci_host *host, struct mmc_data *data) if (data->flags & MMC_DATA_READ) { datactrl |= MCI_DPSM_DIRECTION; irqmask = MCI_RXFIFOHALFFULLMASK; + + /* + * If we have less than a FIFOSIZE of bytes to transfer, + * trigger a PIO interrupt as soon as any data is available. + */ + if (host->size < MCI_FIFOSIZE) + irqmask |= MCI_RXDATAAVLBLMASK; } else { /* * We don't actually need to include "FIFO empty" here @@ -124,15 +131,10 @@ mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c) } c |= cmd->opcode | MCI_CPSM_ENABLE; - switch (cmd->flags & MMC_RSP_MASK) { - case MMC_RSP_NONE: - default: - break; - case MMC_RSP_LONG: - c |= MCI_CPSM_LONGRSP; - case MMC_RSP_SHORT: + if (cmd->flags & MMC_RSP_PRESENT) { + if (cmd->flags & MMC_RSP_136) + c |= MCI_CPSM_LONGRSP; c |= MCI_CPSM_RESPONSE; - break; } if (/*interrupt*/0) c |= MCI_CPSM_INTERRUPT; |