Calling init_completion() once is enough.
For the rest of the iterations, call reinit_completion() instead.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
        while (pending > 0) {
                int curr_step = min_t(int, step_size, pending);
 
-               init_completion(&bs->done);
+               reinit_completion(&bs->done);
                if (tx) {
                        memcpy_toio(bs->fifo + HSSPI_OPCODE_LEN, tx, curr_step);
                        tx += curr_step;
        bs->fifo = (u8 __iomem *)(bs->regs + HSSPI_FIFO_REG(0));
 
        mutex_init(&bs->bus_mutex);
+       init_completion(&bs->done);
 
        master->bus_num = HSSPI_BUS_NUM;
        master->num_chipselect = 8;
 
                               transfer_list);
        }
 
-       init_completion(&bs->done);
+       reinit_completion(&bs->done);
 
        /* Fill in the Message control register */
        msg_ctl = (len << SPI_BYTE_CNT_SHIFT);
        }
 
        bs = spi_master_get_devdata(master);
+       init_completion(&bs->done);
 
        platform_set_drvdata(pdev, master);
        bs->pdev = pdev;
 
 
        efm32_spi_filltx(ddata);
 
-       init_completion(&ddata->done);
+       reinit_completion(&ddata->done);
 
        efm32_spi_write32(ddata, REG_IF_TXBL | REG_IF_RXDATAV, REG_IEN);
 
        ddata->bitbang.txrx_bufs = efm32_spi_txrx_bufs;
 
        spin_lock_init(&ddata->lock);
+       init_completion(&ddata->done);
 
        ddata->clk = devm_clk_get(&pdev->dev, NULL);
        if (IS_ERR(ddata->clk)) {
 
        spi_imx->count = transfer->len;
        spi_imx->txfifo = 0;
 
-       init_completion(&spi_imx->xfer_done);
+       reinit_completion(&spi_imx->xfer_done);
 
        spi_imx_push(spi_imx);