|
@@ -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);
|
|
|
|