Loading drivers/mmc/host/davinci_mmc.c +3 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,9 @@ static void davinci_fifo_data_trans(struct mmc_davinci_host *host, } p = sgm->addr; if (n > sgm->length) n = sgm->length; /* NOTE: we never transfer more than rw_threshold bytes * to/from the fifo here; there's no I/O overlap. * This also assumes that access width( i.e. ACCWD) is 4 bytes Loading drivers/mmc/host/sdhci.c +15 −0 Original line number Diff line number Diff line Loading @@ -4708,6 +4708,21 @@ int sdhci_setup_host(struct sdhci_host *host) if (host->quirks & SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC) { host->max_adma = 65532; /* 32-bit alignment */ mmc->max_seg_size = 65535; /* * sdhci_adma_table_pre() expects to define 1 DMA * descriptor per segment, so the maximum segment size * is set accordingly. SDHCI allows up to 64KiB per DMA * descriptor (16-bit field), but some controllers do * not support "zero means 65536" reducing the maximum * for them to 65535. That is a problem if PAGE_SIZE is * 64KiB because the block layer does not support * max_seg_size < PAGE_SIZE, however * sdhci_adma_table_pre() has a workaround to handle * that case, and split the descriptor. Refer also * comment in sdhci_adma_table_pre(). */ if (mmc->max_seg_size < PAGE_SIZE) mmc->max_seg_size = PAGE_SIZE; } else { mmc->max_seg_size = 65536; } Loading Loading
drivers/mmc/host/davinci_mmc.c +3 −0 Original line number Diff line number Diff line Loading @@ -224,6 +224,9 @@ static void davinci_fifo_data_trans(struct mmc_davinci_host *host, } p = sgm->addr; if (n > sgm->length) n = sgm->length; /* NOTE: we never transfer more than rw_threshold bytes * to/from the fifo here; there's no I/O overlap. * This also assumes that access width( i.e. ACCWD) is 4 bytes Loading
drivers/mmc/host/sdhci.c +15 −0 Original line number Diff line number Diff line Loading @@ -4708,6 +4708,21 @@ int sdhci_setup_host(struct sdhci_host *host) if (host->quirks & SDHCI_QUIRK_BROKEN_ADMA_ZEROLEN_DESC) { host->max_adma = 65532; /* 32-bit alignment */ mmc->max_seg_size = 65535; /* * sdhci_adma_table_pre() expects to define 1 DMA * descriptor per segment, so the maximum segment size * is set accordingly. SDHCI allows up to 64KiB per DMA * descriptor (16-bit field), but some controllers do * not support "zero means 65536" reducing the maximum * for them to 65535. That is a problem if PAGE_SIZE is * 64KiB because the block layer does not support * max_seg_size < PAGE_SIZE, however * sdhci_adma_table_pre() has a workaround to handle * that case, and split the descriptor. Refer also * comment in sdhci_adma_table_pre(). */ if (mmc->max_seg_size < PAGE_SIZE) mmc->max_seg_size = PAGE_SIZE; } else { mmc->max_seg_size = 65536; } Loading