spi: spi-bfin5xx: Calculate transfer speed unconditionally
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Tue, 15 Sep 2015 13:26:17 +0000 (16:26 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 16 Sep 2015 19:54:32 +0000 (20:54 +0100)
SPI core validates the transfer speed and defaults to spi->max_speed_hz in
case the transfer speed is not set so code here won't use the
chip->baud value (which is derived from spi->max_speed_hz).

Please note driver uses chip->baud at the beginning of message transmission
by calling the bfin_spi_restore_state() but then programs per transfer
speed in bfin_spi_pump_transfers(). I'm not familiar with the HW so I don't
know would it be possible to remove chip->baud completely by either using
constant value in bfin_spi_restore_state() or by removing the baud register
write there.

Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-bfin5xx.c

index a3d65b4f49445d144fcba077ce3413630300e8c8..1e91325bf39c20f0b5fdc368680de06d566fdb6f 100644 (file)
@@ -661,11 +661,7 @@ static void bfin_spi_pump_transfers(unsigned long data)
        message->state = RUNNING_STATE;
        dma_config = 0;
 
-       /* Speed setup (surely valid because already checked) */
-       if (transfer->speed_hz)
-               bfin_write(&drv_data->regs->baud, hz_to_spi_baud(transfer->speed_hz));
-       else
-               bfin_write(&drv_data->regs->baud, chip->baud);
+       bfin_write(&drv_data->regs->baud, hz_to_spi_baud(transfer->speed_hz));
 
        bfin_write(&drv_data->regs->stat, BIT_STAT_CLR);
        bfin_spi_cs_active(drv_data, chip);