diff options
-rw-r--r-- | drivers/mmc/host/sdhci.c | 8 | ||||
-rw-r--r-- | include/linux/mmc/sdhci.h | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index a3ecd20e5510..c9881ca131d5 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c | |||
@@ -904,7 +904,7 @@ static void sdhci_prepare_data(struct sdhci_host *host, struct mmc_command *cmd) | |||
904 | static void sdhci_set_transfer_mode(struct sdhci_host *host, | 904 | static void sdhci_set_transfer_mode(struct sdhci_host *host, |
905 | struct mmc_command *cmd) | 905 | struct mmc_command *cmd) |
906 | { | 906 | { |
907 | u16 mode; | 907 | u16 mode = 0; |
908 | struct mmc_data *data = cmd->data; | 908 | struct mmc_data *data = cmd->data; |
909 | 909 | ||
910 | if (data == NULL) { | 910 | if (data == NULL) { |
@@ -922,9 +922,11 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host, | |||
922 | 922 | ||
923 | WARN_ON(!host->data); | 923 | WARN_ON(!host->data); |
924 | 924 | ||
925 | mode = SDHCI_TRNS_BLK_CNT_EN; | 925 | if (!(host->quirks2 & SDHCI_QUIRK2_SUPPORT_SINGLE)) |
926 | mode = SDHCI_TRNS_BLK_CNT_EN; | ||
927 | |||
926 | if (mmc_op_multi(cmd->opcode) || data->blocks > 1) { | 928 | if (mmc_op_multi(cmd->opcode) || data->blocks > 1) { |
927 | mode |= SDHCI_TRNS_MULTI; | 929 | mode = SDHCI_TRNS_BLK_CNT_EN | SDHCI_TRNS_MULTI; |
928 | /* | 930 | /* |
929 | * If we are sending CMD23, CMD12 never gets sent | 931 | * If we are sending CMD23, CMD12 never gets sent |
930 | * on successful completion (so no Auto-CMD12). | 932 | * on successful completion (so no Auto-CMD12). |
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 933b897ca095..c3e3db196738 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
@@ -113,6 +113,8 @@ struct sdhci_host { | |||
113 | #define SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 (1<<11) | 113 | #define SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 (1<<11) |
114 | /* forced tuned clock */ | 114 | /* forced tuned clock */ |
115 | #define SDHCI_QUIRK2_TUNING_WORK_AROUND (1<<12) | 115 | #define SDHCI_QUIRK2_TUNING_WORK_AROUND (1<<12) |
116 | /* disable the block count for single block transactions */ | ||
117 | #define SDHCI_QUIRK2_SUPPORT_SINGLE (1<<13) | ||
116 | 118 | ||
117 | int irq; /* Device IRQ */ | 119 | int irq; /* Device IRQ */ |
118 | void __iomem *ioaddr; /* Mapped address */ | 120 | void __iomem *ioaddr; /* Mapped address */ |