Loading drivers/spi/spi-atmel.c +27 −15 Original line number Diff line number Diff line Loading @@ -424,10 +424,15 @@ static int atmel_spi_dma_slave_config(struct atmel_spi *as, return err; } static bool filter(struct dma_chan *chan, void *slave) static bool filter(struct dma_chan *chan, void *pdata) { struct at_dma_slave *sl = slave; struct atmel_spi_dma *sl_pdata = pdata; struct at_dma_slave *sl; if (!sl_pdata) return false; sl = &sl_pdata->dma_slave; if (sl->dma_dev == chan->device->dev) { chan->private = sl; return true; Loading @@ -438,24 +443,31 @@ static bool filter(struct dma_chan *chan, void *slave) static int atmel_spi_configure_dma(struct atmel_spi *as) { struct at_dma_slave *sdata = &as->dma.dma_slave; struct dma_slave_config slave_config; struct device *dev = &as->pdev->dev; int err; if (sdata && sdata->dma_dev) { dma_cap_mask_t mask; /* Try to grab two DMA channels */ dma_cap_zero(mask); dma_cap_set(DMA_SLAVE, mask); as->dma.chan_tx = dma_request_channel(mask, filter, sdata); if (as->dma.chan_tx) as->dma.chan_rx = dma_request_channel(mask, filter, sdata); as->dma.chan_tx = dma_request_slave_channel_compat(mask, filter, &as->dma, dev, "tx"); if (!as->dma.chan_tx) { dev_err(dev, "DMA TX channel not available, SPI unable to use DMA\n"); err = -EBUSY; goto error; } if (!as->dma.chan_rx || !as->dma.chan_tx) { dev_err(&as->pdev->dev, "DMA channel not available, SPI unable to use DMA\n"); as->dma.chan_rx = dma_request_slave_channel_compat(mask, filter, &as->dma, dev, "rx"); if (!as->dma.chan_rx) { dev_err(dev, "DMA RX channel not available, SPI unable to use DMA\n"); err = -EBUSY; goto error; } Loading Loading
drivers/spi/spi-atmel.c +27 −15 Original line number Diff line number Diff line Loading @@ -424,10 +424,15 @@ static int atmel_spi_dma_slave_config(struct atmel_spi *as, return err; } static bool filter(struct dma_chan *chan, void *slave) static bool filter(struct dma_chan *chan, void *pdata) { struct at_dma_slave *sl = slave; struct atmel_spi_dma *sl_pdata = pdata; struct at_dma_slave *sl; if (!sl_pdata) return false; sl = &sl_pdata->dma_slave; if (sl->dma_dev == chan->device->dev) { chan->private = sl; return true; Loading @@ -438,24 +443,31 @@ static bool filter(struct dma_chan *chan, void *slave) static int atmel_spi_configure_dma(struct atmel_spi *as) { struct at_dma_slave *sdata = &as->dma.dma_slave; struct dma_slave_config slave_config; struct device *dev = &as->pdev->dev; int err; if (sdata && sdata->dma_dev) { dma_cap_mask_t mask; /* Try to grab two DMA channels */ dma_cap_zero(mask); dma_cap_set(DMA_SLAVE, mask); as->dma.chan_tx = dma_request_channel(mask, filter, sdata); if (as->dma.chan_tx) as->dma.chan_rx = dma_request_channel(mask, filter, sdata); as->dma.chan_tx = dma_request_slave_channel_compat(mask, filter, &as->dma, dev, "tx"); if (!as->dma.chan_tx) { dev_err(dev, "DMA TX channel not available, SPI unable to use DMA\n"); err = -EBUSY; goto error; } if (!as->dma.chan_rx || !as->dma.chan_tx) { dev_err(&as->pdev->dev, "DMA channel not available, SPI unable to use DMA\n"); as->dma.chan_rx = dma_request_slave_channel_compat(mask, filter, &as->dma, dev, "rx"); if (!as->dma.chan_rx) { dev_err(dev, "DMA RX channel not available, SPI unable to use DMA\n"); err = -EBUSY; goto error; } Loading