diff options
| author | Adrian Hunter <adrian.hunter@intel.com> | 2014-11-04 05:42:46 -0500 |
|---|---|---|
| committer | Ulf Hansson <ulf.hansson@linaro.org> | 2014-11-10 06:40:53 -0500 |
| commit | e57a5f61eae7e145aeeda18ccb22576822f534bf (patch) | |
| tree | 3ac10196b0713885f85d8fae054f3e867c19c77c /include/linux/mmc | |
| parent | 0545230f1764bc639e14eea3fe944d9d16e91a92 (diff) | |
mmc: sdhci: Add 64-bit ADMA support
Add 64-bit ADMA support including:
- add 64-bit ADMA descriptor
- add SDHCI_USE_64_BIT_DMA flag
- set upper 32-bits of DMA addresses
- ability to select 64-bit ADMA
- ability to use 64-bit ADMA sizes and alignment
- display "ADMA 64-bit" when host is added
It is assumed that a 64-bit capable device has set a 64-bit DMA mask
and *must* do 64-bit DMA. A driver has the opportunity to change
that during the first call to ->enable_dma(). Similarly
SDHCI_QUIRK2_BROKEN_64_BIT_DMA must be left to the drivers to
implement.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Diffstat (limited to 'include/linux/mmc')
| -rw-r--r-- | include/linux/mmc/sdhci.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h index 2a72e9510833..931ac5e05453 100644 --- a/include/linux/mmc/sdhci.h +++ b/include/linux/mmc/sdhci.h | |||
| @@ -100,6 +100,8 @@ struct sdhci_host { | |||
| 100 | #define SDHCI_QUIRK2_BROKEN_DDR50 (1<<7) | 100 | #define SDHCI_QUIRK2_BROKEN_DDR50 (1<<7) |
| 101 | /* Stop command (CMD12) can set Transfer Complete when not using MMC_RSP_BUSY */ | 101 | /* Stop command (CMD12) can set Transfer Complete when not using MMC_RSP_BUSY */ |
| 102 | #define SDHCI_QUIRK2_STOP_WITH_TC (1<<8) | 102 | #define SDHCI_QUIRK2_STOP_WITH_TC (1<<8) |
| 103 | /* Controller does not support 64-bit DMA */ | ||
| 104 | #define SDHCI_QUIRK2_BROKEN_64_BIT_DMA (1<<9) | ||
| 103 | 105 | ||
| 104 | int irq; /* Device IRQ */ | 106 | int irq; /* Device IRQ */ |
| 105 | void __iomem *ioaddr; /* Mapped address */ | 107 | void __iomem *ioaddr; /* Mapped address */ |
| @@ -130,6 +132,7 @@ struct sdhci_host { | |||
| 130 | #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ | 132 | #define SDHCI_SDIO_IRQ_ENABLED (1<<9) /* SDIO irq enabled */ |
| 131 | #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ | 133 | #define SDHCI_SDR104_NEEDS_TUNING (1<<10) /* SDR104/HS200 needs tuning */ |
| 132 | #define SDHCI_USING_RETUNING_TIMER (1<<11) /* Host is using a retuning timer for the card */ | 134 | #define SDHCI_USING_RETUNING_TIMER (1<<11) /* Host is using a retuning timer for the card */ |
| 135 | #define SDHCI_USE_64_BIT_DMA (1<<12) /* Use 64-bit DMA */ | ||
| 133 | 136 | ||
| 134 | unsigned int version; /* SDHCI spec. version */ | 137 | unsigned int version; /* SDHCI spec. version */ |
| 135 | 138 | ||
