diff options
Diffstat (limited to 'drivers/mmc/host/atmel-mci.c')
| -rw-r--r-- | drivers/mmc/host/atmel-mci.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c index 03d7c7521d97..9a39e0b7e583 100644 --- a/drivers/mmc/host/atmel-mci.c +++ b/drivers/mmc/host/atmel-mci.c @@ -1304,7 +1304,7 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)  	if (ios->clock) {  		unsigned int clock_min = ~0U; -		u32 clkdiv; +		int clkdiv;  		spin_lock_bh(&host->lock);  		if (!host->mode_reg) { @@ -1328,7 +1328,12 @@ static void atmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)  		/* Calculate clock divider */  		if (host->caps.has_odd_clk_div) {  			clkdiv = DIV_ROUND_UP(host->bus_hz, clock_min) - 2; -			if (clkdiv > 511) { +			if (clkdiv < 0) { +				dev_warn(&mmc->class_dev, +					 "clock %u too fast; using %lu\n", +					 clock_min, host->bus_hz / 2); +				clkdiv = 0; +			} else if (clkdiv > 511) {  				dev_warn(&mmc->class_dev,  				         "clock %u too slow; using %lu\n",  				         clock_min, host->bus_hz / (511 + 2)); |