spi: dw: eliminate speed variable in ->transfer_one()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Wed, 14 Oct 2015 20:12:21 +0000 (23:12 +0300)
committerMark Brown <broonie@kernel.org>
Mon, 19 Oct 2015 19:32:01 +0000 (20:32 +0100)
There is no point to have a separate variable for speed in ->transfer_one().

While here, remove !chip->clk_div from a condition since it is assigned
simultaneously with chip->speed_hz. We can do this safely because
 a) transfer speed can't be higher than max_freq and therefore chip->clk_div
    can be 0 only when chip->speed_hz is 0, and
 b) transfer speed can't be 0, otherwise we will get division by zero
    exception.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-dw.c

index c8f7f161213d7a9ee9ab6755f9f51a43294baf6f..a6fd7cfa1b4069a2f95c8762f406bf2fdca0605e 100644 (file)
@@ -285,8 +285,7 @@ static int dw_spi_transfer_one(struct spi_master *master,
        struct chip_data *chip = spi_get_ctldata(spi);
        u8 imask = 0;
        u16 txlevel = 0;
-       u16 clk_div = 0;
-       u32 speed = 0;
+       u16 clk_div;
        u32 cr0;
        int ret;
 
@@ -301,14 +300,11 @@ static int dw_spi_transfer_one(struct spi_master *master,
        spi_enable_chip(dws, 0);
 
        /* Handle per transfer options for bpw and speed */
-       speed = chip->speed_hz;
-       if ((transfer->speed_hz != speed) || !chip->clk_div) {
-               speed = transfer->speed_hz;
-
+       if (transfer->speed_hz != chip->speed_hz) {
                /* clk_div doesn't support odd number */
-               clk_div = (dws->max_freq / speed + 1) & 0xfffe;
+               clk_div = (dws->max_freq / transfer->speed_hz + 1) & 0xfffe;
 
-               chip->speed_hz = speed;
+               chip->speed_hz = transfer->speed_hz;
                chip->clk_div = clk_div;
 
                spi_set_clk(dws, chip->clk_div);