Message ID | 1487327904-28311-3-git-send-email-fisaksen@baylibre.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Feb 17, 2017 at 11:38:20AM +0100, Frode Isaksen wrote: > From: Fabien Parent <fparent@baylibre.com> > > When booting with DT the SPI driver is always using > the SPI_IO_TYPE_INTR mode to transfer data even if DMA channels are > defined in the DT. This looks good but I'll hold off on applying it without patch 1 in case it introduces regressions for existing systems due to switching to DMA but not handling vmalloc() mappings.
diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c index 5b164e5..9823908 100644 --- a/drivers/spi/spi-davinci.c +++ b/drivers/spi/spi-davinci.c @@ -389,6 +389,7 @@ static int davinci_spi_of_setup(struct spi_device *spi) { struct davinci_spi_config *spicfg = spi->controller_data; struct device_node *np = spi->dev.of_node; + struct davinci_spi *dspi = spi_master_get_devdata(spi->master); u32 prop; if (spicfg == NULL && np) { @@ -400,6 +401,9 @@ static int davinci_spi_of_setup(struct spi_device *spi) if (!of_property_read_u32(np, "ti,spi-wdelay", &prop)) spicfg->wdelay = (u8)prop; spi->controller_data = spicfg; + + if (dspi->dma_rx && dspi->dma_tx) + spicfg->io_type = SPI_IO_TYPE_DMA; } return 0;