diff options
| -rw-r--r-- | drivers/mmc/host/sdhci.c | 12 | ||||
| -rw-r--r-- | drivers/mmc/host/sdhci.h | 1 | 
2 files changed, 5 insertions, 8 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c index 922a5b594c5e..b056400e34b1 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -3781,18 +3781,14 @@ int sdhci_setup_host(struct sdhci_host *host)  		host->flags &= ~SDHCI_USE_ADMA;  	} -	/* -	 * It is assumed that a 64-bit capable device has set a 64-bit DMA mask -	 * and *must* do 64-bit DMA.  A driver has the opportunity to change -	 * that during the first call to ->enable_dma().  Similarly -	 * SDHCI_QUIRK2_BROKEN_64_BIT_DMA must be left to the drivers to -	 * implement. -	 */  	if (sdhci_can_64bit_dma(host))  		host->flags |= SDHCI_USE_64_BIT_DMA;  	if (host->flags & (SDHCI_USE_SDMA | SDHCI_USE_ADMA)) { -		ret = sdhci_set_dma_mask(host); +		if (host->ops->set_dma_mask) +			ret = host->ops->set_dma_mask(host); +		else +			ret = sdhci_set_dma_mask(host);  		if (!ret && host->ops->enable_dma)  			ret = host->ops->enable_dma(host); diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h index a29c4cd2d92e..0ed3e0eaef5f 100644 --- a/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h @@ -622,6 +622,7 @@ struct sdhci_ops {  	u32		(*irq)(struct sdhci_host *host, u32 intmask); +	int		(*set_dma_mask)(struct sdhci_host *host);  	int		(*enable_dma)(struct sdhci_host *host);  	unsigned int	(*get_max_clock)(struct sdhci_host *host);  	unsigned int	(*get_min_clock)(struct sdhci_host *host);  | 

