On 2/14/20 4:40 PM, Masahiro Yamada wrote: > The same code is run for both SDHCI_QUIRK_32BIT_DMA_ADDR and > define(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER). > > Unify the code. > > Signed-off-by: Masahiro Yamada <yamada.masah...@socionext.com>
Reviewed-by: Jaehoon Chung <jh80.ch...@samsung.com> Best Regards, Jaehoon Chung > --- > > Changes in v3: None > Changes in v2: None > > drivers/mmc/sdhci.c | 22 ++++++++-------------- > include/sdhci.h | 2 ++ > 2 files changed, 10 insertions(+), 14 deletions(-) > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > index 18fbcb5f1864..b4713e7b9bba 100644 > --- a/drivers/mmc/sdhci.c > +++ b/drivers/mmc/sdhci.c > @@ -140,27 +140,16 @@ static void sdhci_prepare_dma(struct sdhci_host *host, > struct mmc_data *data, > sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); > > if (host->flags & USE_SDMA) { > - if ((host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) && > - (host->start_addr & 0x7) != 0x0) { > + if (host->force_align_buffer || > + (host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR && > + (host->start_addr & 0x7) != 0x0)) { > *is_aligned = 0; > host->start_addr = (unsigned long)host->align_buffer; > if (data->flags != MMC_DATA_READ) > memcpy(host->align_buffer, data->src, > trans_bytes); > } > - > -#if defined(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER) > - /* > - * Always use this bounce-buffer when > - * CONFIG_FIXED_SDHCI_ALIGNED_BUFFER is defined > - */ > - *is_aligned = 0; > - host->start_addr = (unsigned long)host->align_buffer; > - if (data->flags != MMC_DATA_READ) > - memcpy(host->align_buffer, data->src, trans_bytes); > -#endif > sdhci_writel(host, host->start_addr, SDHCI_DMA_ADDRESS); > - > } else if (host->flags & (USE_ADMA | USE_ADMA64)) { > sdhci_prepare_adma_table(host, data); > > @@ -627,6 +616,11 @@ static int sdhci_init(struct mmc *mmc) > > #if defined(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER) > host->align_buffer = (void *)CONFIG_FIXED_SDHCI_ALIGNED_BUFFER; > + /* > + * Always use this bounce-buffer when CONFIG_FIXED_SDHCI_ALIGNED_BUFFER > + * is defined. > + */ > + host->force_align_buffer = true; > #else > if (host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) { > host->align_buffer = memalign(8, 512 * 1024); > diff --git a/include/sdhci.h b/include/sdhci.h > index 1358218270b8..7f8feefa450b 100644 > --- a/include/sdhci.h > +++ b/include/sdhci.h > @@ -9,6 +9,7 @@ > #ifndef __SDHCI_HW_H > #define __SDHCI_HW_H > > +#include <linux/types.h> > #include <asm/io.h> > #include <mmc.h> > #include <asm/gpio.h> > @@ -322,6 +323,7 @@ struct sdhci_host { > > struct mmc_config cfg; > void *align_buffer; > + bool force_align_buffer; > dma_addr_t start_addr; > int flags; > #define USE_SDMA (0x1 << 0) >