mmc: sdhci: add quirk for max len ADMA descriptors
Some controllers misparse segment length 0 as being 0, not 65536. Add a quirk to deal with it. Signed-off-by: Olof Johansson <olof@lixom.net> Reviewed-by: Chris Ball <cjb@laptop.org> Signed-off-by: Chris Ball <cjb@laptop.org>
This commit is contained in:
parent
c288b85554
commit
30652aa36b
|
@ -1949,10 +1949,14 @@ int sdhci_add_host(struct sdhci_host *host)
|
|||
* of bytes. When doing hardware scatter/gather, each entry cannot
|
||||
* be larger than 64 KiB though.
|
||||
*/
|
||||
if (host->flags & SDHCI_USE_ADMA)
|
||||
mmc->max_seg_size = 65536;
|
||||
else
|
||||
if (host->flags & SDHCI_USE_ADMA) {
|
||||
if (host->quirks & SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC)
|
||||
mmc->max_seg_size = 65535;
|
||||
else
|
||||
mmc->max_seg_size = 65536;
|
||||
} else {
|
||||
mmc->max_seg_size = mmc->max_req_size;
|
||||
}
|
||||
|
||||
/*
|
||||
* Maximum block size. This varies from controller to controller and
|
||||
|
|
|
@ -83,6 +83,8 @@ struct sdhci_host {
|
|||
#define SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 (1<<28)
|
||||
/* Controller doesn't have HISPD bit field in HI-SPEED SD card */
|
||||
#define SDHCI_QUIRK_NO_HISPD_BIT (1<<29)
|
||||
/* Controller treats ADMA descriptors with length 0000h incorrectly */
|
||||
#define SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC (1<<30)
|
||||
|
||||
int irq; /* Device IRQ */
|
||||
void __iomem *ioaddr; /* Mapped address */
|
||||
|
|
Loading…
Reference in New Issue