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 */ |
