On 08/17/2017 10:15 PM, =?UTF-8?q?Pawe=C5=82=20Jarosz?= wrote: > dw_mmc supports two transfer modes in u-boot: idma and fifo. > This patch adds autodetection of transfer mode and eliminates setting this in > host config struct > > Signed-off-by: Paweł Jarosz <paweljarosz3...@gmail.com> > --- > Changes since v1: > - none > > Changes since v2: > - none > > Changes since v3: > - none > > drivers/mmc/dw_mmc.c | 8 ++++++++ > include/dwmmc.h | 4 ++++ > 2 files changed, 12 insertions(+) > > diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c > index 700f764..2cc4d67 100644 > --- a/drivers/mmc/dw_mmc.c > +++ b/drivers/mmc/dw_mmc.c > @@ -428,6 +428,7 @@ static int dwmci_set_ios(struct mmc *mmc) > static int dwmci_init(struct mmc *mmc) > { > struct dwmci_host *host = mmc->priv; > + uint32_t use_dma;
Does it need to use unit32_t for use_dma? > > if (host->board_init) > host->board_init(host); > @@ -439,6 +440,13 @@ static int dwmci_init(struct mmc *mmc) > return -EIO; > } > > + use_dma = SDMMC_GET_TRANS_MODE(dwmci_readl(host, DWMCI_HCON)); > + if (use_dma == DMA_INTERFACE_IDMA) { > + host->fifo_mode = 0; > + } else { > + host->fifo_mode = 1; > + } Don't need to use the brackets. Best Regards, Jaehoon Chung > + > /* Enumerate at 400KHz */ > dwmci_setup_bus(host, mmc->cfg->f_min); > > diff --git a/include/dwmmc.h b/include/dwmmc.h > index 4dda009..269536d 100644 > --- a/include/dwmmc.h > +++ b/include/dwmmc.h > @@ -115,6 +115,10 @@ > #define RX_WMARK_SHIFT 16 > #define RX_WMARK_MASK (0xfff << RX_WMARK_SHIFT) > > +/* HCON Register */ > +#define DMA_INTERFACE_IDMA (0x0) > +#define SDMMC_GET_TRANS_MODE(x) (((x)>>16) & 0x3) > + > #define DWMCI_IDMAC_OWN (1 << 31) > #define DWMCI_IDMAC_CH (1 << 4) > #define DWMCI_IDMAC_FS (1 << 3) > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot