spi: atmel: remove compat for non DT board when requesting dma chan
Subsystems (3)
PATCH 1/2 spi: atmel: remove compat for non DT board when requesting dma chan
All boards with a dma controller have DT support so using dma_request_slave_channel_compat is no more needed.
--- drivers/spi/spi-atmel.c | 25 ++----------------------- 1 file changed, 2 insertions(+), 23 deletions(-)
drivers/spi/spi-atmel.c +2 -23
@@ -414,23 +414,6 @@ static int atmel_spi_dma_slave_config(struct atmel_spi *as,return err; } -static bool filter (struct dma_chan *chan,void *pdata) -{ -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; - }else { -return false; - } -} -static int atmel_spi_configure_dma (struct atmel_spi *as) {struct dma_slave_config slave_config;
@@ -441,9 +424,7 @@ static int atmel_spi_configure_dma(struct atmel_spi *as)dma_cap_zero (mask);dma_cap_set (DMA_SLAVE , mask); - as->dma.chan_tx =dma_request_slave_channel_compat (mask, filter, - &as->dma, - dev,"tx" ); + as->dma.chan_tx =dma_request_slave_channel (dev,"tx" );if (!as->dma.chan_tx) {dev_err (dev,"DMA TX channel not available, SPI unable to use DMA\n" );
@@ -451,9 +432,7 @@ static int atmel_spi_configure_dma(struct atmel_spi *as) goto error; } - as->dma.chan_rx =dma_request_slave_channel_compat (mask, filter, - &as->dma, - dev,"rx" ); + as->dma.chan_rx =dma_request_slave_channel (dev,"rx" );if (!as->dma.chan_rx) { dev_err(dev,
Signature · 1 line
2.0.3
PATCH 2/2 spi: atmel: introduce probe deferring
Return probe defer if requesting a dma channel without a dma controller probed.
--- drivers/spi/spi-atmel.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
drivers/spi/spi-atmel.c +16 -4
@@ -424,14 +424,23 @@ static int atmel_spi_configure_dma(struct atmel_spi *as)dma_cap_zero (mask);dma_cap_set (DMA_SLAVE , mask); - as->dma.chan_tx =dma_request_slave_channel (dev,"tx" ); -if (!as->dma.chan_tx) { + as->dma.chan_tx =dma_request_slave_channel_reason (dev,"tx" ); +if (IS_ERR (as->dma.chan_tx)) { + err =PTR_ERR (as->dma.chan_tx); +if (err == -EPROBE_DEFER ) { +dev_warn (dev,"no DMA channel available at the moment\n" ); +return err; + }dev_err (dev,"DMA TX channel not available, SPI unable to use DMA\n" ); err = -EBUSY ; goto error; } +/* +* No reason to check EPROBE_DEFER here since we have already requested +* tx channel. If it fails here, it's for another reason. +*/ as->dma.chan_rx =dma_request_slave_channel (dev,"rx" );if (!as->dma.chan_rx) {
@@ -453,7 +462,7 @@ static int atmel_spi_configure_dma(struct atmel_spi *as) error:if (as->dma.chan_rx)dma_release_channel (as->dma.chan_rx); -if (as->dma.chan_tx) +if (!IS_ERR (as->dma.chan_tx))dma_release_channel (as->dma.chan_tx);return err; }
@@ -1324,8 +1333,11 @@ static int atmel_spi_probe(struct platform_device *pdev) as->use_dma = false; as->use_pdc = false;if (as->caps.has_dma_support) { -if (atmel_spi_configure_dma (as) ==0 ) + ret =atmel_spi_configure_dma (as); +if (ret ==0 ) as->use_dma = true; +else if (ret == -EPROBE_DEFER ) +return ret; }else { as->use_pdc = true; }
Signature · 1 line
2.0.3
Mark Brown
maintainerPATCH 1/2 spi: atmel: remove compat for non DT board when requesting dma chan
In reply to Ludovic DesrochesQuoted 2 lines · Ludovic Desroches
All boards with a dma controller have DT support so using
dma_request_slave_channel_compatis no more needed.
Applied both, thanks.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20141124/2b4dc5db/attachment.sig>