spi: qcom: geni: set the error code for gpi transfer
authorVinod Koul <vkoul@kernel.org>
Mon, 3 Jan 2022 07:11:17 +0000 (12:41 +0530)
committerMark Brown <broonie@kernel.org>
Thu, 6 Jan 2022 16:16:33 +0000 (16:16 +0000)
Before we invoke spi_finalize_current_transfer() in
spi_gsi_callback_result() we should set the spi->cur_msg->status as
appropriate (0 for success, error otherwise).

The helps to return error on transfer and not wait till it timesout on
error

Fixes: b59c122484ec ("spi: spi-geni-qcom: Add support for GPI dma")
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org>
Link: https://lore.kernel.org/r/20220103071118.27220-1-vkoul@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-geni-qcom.c

index 413fa1a7a9365a2a96f70402d3a872dd151f0982..b82f3ddff0f4512c45bcb12de5ca07427ae3507d 100644 (file)
@@ -346,17 +346,21 @@ spi_gsi_callback_result(void *cb, const struct dmaengine_result *result)
 {
        struct spi_master *spi = cb;
 
+       spi->cur_msg->status = -EIO;
        if (result->result != DMA_TRANS_NOERROR) {
                dev_err(&spi->dev, "DMA txn failed: %d\n", result->result);
+               spi_finalize_current_transfer(spi);
                return;
        }
 
        if (!result->residue) {
+               spi->cur_msg->status = 0;
                dev_dbg(&spi->dev, "DMA txn completed\n");
-               spi_finalize_current_transfer(spi);
        } else {
                dev_err(&spi->dev, "DMA xfer has pending: %d\n", result->residue);
        }
+
+       spi_finalize_current_transfer(spi);
 }
 
 static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas,