spi: bfin-sport: Calculate transfer speed unconditionally
authorJarkko Nikula <jarkko.nikula@linux.intel.com>
Tue, 15 Sep 2015 13:26:16 +0000 (16:26 +0300)
committerMark Brown <broonie@kernel.org>
Wed, 16 Sep 2015 19:53:45 +0000 (20:53 +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_sport_spi_restore_state() but then programs per
transfer speed in bfin_sport_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_sport_spi_restore_state() or by
removing the tclkdiv register write there.

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

index a78693189f4580c2929266feed8958fb1e7ea38e..6c967555a56a4d3a030bd374c2ef94151039e44a 100644 (file)
@@ -352,10 +352,7 @@ bfin_sport_spi_pump_transfers(unsigned long data)
        transfer = drv_data->cur_transfer;
        chip = drv_data->cur_chip;
 
-       if (transfer->speed_hz)
-               transfer_speed = bfin_sport_hz_to_spi_baud(transfer->speed_hz);
-       else
-               transfer_speed = chip->baud;
+       transfer_speed = bfin_sport_hz_to_spi_baud(transfer->speed_hz);
        bfin_write(&drv_data->regs->tclkdiv, transfer_speed);
        SSYNC();