It's also valid as SDHCI at Samsung SoCs. Acked-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> On Sun, Jan 2, 2011 at 9:37 AM, Olof Johansson <olof@xxxxxxxxx> wrote: > Some controllers misparse segment length 0 as being 0, not 65536. Add > a quirk to deal with it. > > Change-Id: I1422c9c605095addc133e844c66fc49f187dc17d > Signed-off-by: Olof Johansson <olof@xxxxxxxxx> > --- > drivers/mmc/host/sdhci.c | 10 +++++++--- > include/linux/mmc/sdhci.h | 2 ++ > 2 files changed, 9 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c > index a25db426..c0094c1 100644 > --- a/drivers/mmc/host/sdhci.c > +++ b/drivers/mmc/host/sdhci.c > @@ -1928,10 +1928,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 > diff --git a/include/linux/mmc/sdhci.h b/include/linux/mmc/sdhci.h > index 1fdc673..dfb2106 100644 > --- a/include/linux/mmc/sdhci.h > +++ b/include/linux/mmc/sdhci.h > @@ -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 */ > -- > 1.7.3.GIT > > -- > To unsubscribe from this list: send the line "unsubscribe linux-mmc" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html