|
@@ -314,13 +314,6 @@ static void fsl_espi_setup_transfer(struct spi_device *spi,
|
|
|
if (pm > 15) {
|
|
|
cs->hw_mode |= CSMODE_DIV16;
|
|
|
pm = DIV_ROUND_UP(espi->spibrg, hz * 16 * 4) - 1;
|
|
|
-
|
|
|
- WARN_ONCE(pm > 15,
|
|
|
- "%s: Requested speed is too low: %u Hz. Will use %u Hz instead.\n",
|
|
|
- dev_name(&spi->dev), hz,
|
|
|
- espi->spibrg / (4 * 16 * (15 + 1)));
|
|
|
- if (pm > 15)
|
|
|
- pm = 15;
|
|
|
}
|
|
|
|
|
|
cs->hw_mode |= CSMODE_PM(pm);
|
|
@@ -460,9 +453,6 @@ static int fsl_espi_setup(struct spi_device *spi)
|
|
|
u32 loop_mode;
|
|
|
struct fsl_espi_cs *cs = spi_get_ctldata(spi);
|
|
|
|
|
|
- if (!spi->max_speed_hz)
|
|
|
- return -EINVAL;
|
|
|
-
|
|
|
if (!cs) {
|
|
|
cs = kzalloc(sizeof(*cs), GFP_KERNEL);
|
|
|
if (!cs)
|
|
@@ -673,6 +663,9 @@ static int fsl_espi_probe(struct device *dev, struct resource *mem,
|
|
|
ret = -EINVAL;
|
|
|
goto err_probe;
|
|
|
}
|
|
|
+ /* determined by clock divider fields DIV16/PM in register SPMODEx */
|
|
|
+ master->min_speed_hz = DIV_ROUND_UP(espi->spibrg, 4 * 16 * 16);
|
|
|
+ master->max_speed_hz = DIV_ROUND_UP(espi->spibrg, 4);
|
|
|
|
|
|
init_completion(&espi->done);
|
|
|
|