spi: core: add dma_map_dev for dma device
authorVinod Koul <vkoul@kernel.org>
Fri, 25 Jun 2021 05:22:11 +0000 (10:52 +0530)
committerMark Brown <broonie@kernel.org>
Fri, 25 Jun 2021 11:26:49 +0000 (12:26 +0100)
Some controllers like qcom geni need the parent device to be used for
dma mapping, so add a dma_map_dev field and let drivers fill this to be
used as mapping device

Signed-off-by: Vinod Koul <vkoul@kernel.org>
Link: https://lore.kernel.org/r/20210625052213.32260-4-vkoul@kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi.c
include/linux/spi/spi.h

index c296f08..35928d0 100644 (file)
@@ -993,11 +993,15 @@ static int __spi_map_msg(struct spi_controller *ctlr, struct spi_message *msg)
 
        if (ctlr->dma_tx)
                tx_dev = ctlr->dma_tx->device->dev;
+       else if (ctlr->dma_map_dev)
+               tx_dev = ctlr->dma_map_dev;
        else
                tx_dev = ctlr->dev.parent;
 
        if (ctlr->dma_rx)
                rx_dev = ctlr->dma_rx->device->dev;
+       else if (ctlr->dma_map_dev)
+               rx_dev = ctlr->dma_map_dev;
        else
                rx_dev = ctlr->dev.parent;
 
index 3ada361..97b8d12 100644 (file)
@@ -588,6 +588,7 @@ struct spi_controller {
        bool                    (*can_dma)(struct spi_controller *ctlr,
                                           struct spi_device *spi,
                                           struct spi_transfer *xfer);
+       struct device *dma_map_dev;
 
        /*
         * These hooks are for drivers that want to use the generic