spi: spi-geni-qcom: enable SPI_CONTROLLER_MUST_TX for GPI DMA mode
authorDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Thu, 29 Jun 2023 09:58:47 +0000 (12:58 +0300)
committerMark Brown <broonie@kernel.org>
Thu, 29 Jun 2023 10:33:48 +0000 (11:33 +0100)
The GPI DMA mode requires for TX DMA to be prepared. Force SPI core to
provide TX buffer even if the caller didn't provide one by setting the
SPI_CONTROLLER_MUST_TX flag.

Fixes: b59c122484ec ("spi: spi-geni-qcom: Add support for GPI dma")
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20230629095847.3648597-1-dmitry.baryshkov@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-geni-qcom.c

index 08672a9..d6cee86 100644 (file)
@@ -1100,6 +1100,12 @@ static int spi_geni_probe(struct platform_device *pdev)
        if (mas->cur_xfer_mode == GENI_SE_FIFO)
                spi->set_cs = spi_geni_set_cs;
 
+       /*
+        * TX is required per GSI spec, see setup_gsi_xfer().
+        */
+       if (mas->cur_xfer_mode == GENI_GPI_DMA)
+               spi->flags = SPI_CONTROLLER_MUST_TX;
+
        ret = request_irq(mas->irq, geni_spi_isr, 0, dev_name(dev), spi);
        if (ret)
                goto spi_geni_release_dma;