diff options
| -rw-r--r-- | drivers/spi/spi-fsl-espi.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/spi/spi-fsl-espi.c b/drivers/spi/spi-fsl-espi.c index 43350f99931..7523a2429d0 100644 --- a/drivers/spi/spi-fsl-espi.c +++ b/drivers/spi/spi-fsl-espi.c @@ -182,16 +182,18 @@ static int fsl_espi_setup_transfer(struct spi_device *spi,  		cs->hw_mode |= CSMODE_DIV16;  		pm = DIV_ROUND_UP(mpc8xxx_spi->spibrg, hz * 16 * 4); -		WARN_ONCE(pm > 16, "%s: Requested speed is too low: %d Hz. " +		WARN_ONCE(pm > 33, "%s: Requested speed is too low: %d Hz. "  			  "Will use %d Hz instead.\n", dev_name(&spi->dev), -			  hz, mpc8xxx_spi->spibrg / 1024); -		if (pm > 16) -			pm = 16; +				hz, mpc8xxx_spi->spibrg / (4 * 16 * (32 + 1))); +		if (pm > 33) +			pm = 33;  	} else {  		pm = DIV_ROUND_UP(mpc8xxx_spi->spibrg, hz * 4);  	}  	if (pm)  		pm--; +	if (pm < 2) +		pm = 2;  	cs->hw_mode |= CSMODE_PM(pm);  |