[PATCH] spi-atmel.c: fix DMA for bits_per_word > 8

Nicolas Ferre nicolas.ferre at atmel.com
Mon Oct 19 09:01:38 PDT 2015


David,

It seems that your email client is doing funny things with the source
code whitespace. Anyway, I can deal with this and re-format your patch:
no problem. For later patches I advice you to use "git format-patch"
command.

Still, see comments below...

Le 13/10/2015 00:32, David Mosberger a écrit :
> I need the patch below to make DMA work in spi-atmel.c when bits_per_word > 8.

A little bit more explanation would be good.

>   --david

I would need your "Signed-off-by:" tag.

> -- 
> eGauge Systems LLC, http://egauge.net/, 1.877-EGAUGE1, fax 720.545.9768
> 
> diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
> index 04e48e5..7bb361a 100644
> --- a/drivers/spi/spi-atmel.c
> +++ b/drivers/spi/spi-atmel.c
> @@ -711,6 +711,7 @@ static void atmel_spi_next_xfer_pio(struct
> spi_master *master,
>   * Submit next transfer for DMA.
>   */
>  static int atmel_spi_next_xfer_dma_submit(struct spi_master *master,
> +  struct spi_message *msg,
>   struct spi_transfer *xfer,
>   u32 *plen)
>  {
> @@ -721,7 +722,7 @@ static int atmel_spi_next_xfer_dma_submit(struct
> spi_master *master,
>   struct dma_async_tx_descriptor *txdesc;
>   struct dma_slave_config slave_config;
>   dma_cookie_t cookie;
> - u32 len = *plen;
> + u32 len = *plen, bpw;
> 
>   dev_vdbg(master->dev.parent, "atmel_spi_next_xfer_dma_submit\n");
> 
> @@ -758,7 +759,11 @@ static int atmel_spi_next_xfer_dma_submit(struct
> spi_master *master,
> 
>   *plen = len;
> 
> - if (atmel_spi_dma_slave_config(as, &slave_config, 8))
> + bpw = xfer->bits_per_word;
> + if (!bpw)

I assume that xfer->bits_per_word must be filled with the proper value.
So why do you need this test and de additional assignment below? Does it
come from a bad experience with the "xfer->bits_per_word" value being empty?

> + bpw = msg->spi->bits_per_word;
> +
> + if (atmel_spi_dma_slave_config(as, &slave_config, bpw))

I may have called bpw variable as "bits" like elsewhere in this driver:
it's a detail though.

>   goto err_exit;
> 
>   /* Send both scatterlists */
> @@ -1316,8 +1321,8 @@ static int atmel_spi_one_transfer(struct
> spi_master *master,
>   atmel_spi_pdc_next_xfer(master, msg, xfer);
>   } else if (atmel_spi_use_dma(as, xfer)) {
>   len = as->current_remaining_bytes;
> - ret = atmel_spi_next_xfer_dma_submit(master,
> - xfer, &len);
> + ret = atmel_spi_next_xfer_dma_submit(master, msg,
> +     xfer, &len);
>   if (ret) {
>   dev_err(&spi->dev,
>   "unable to use DMA, fallback to PIO\n");

Ok, the patch seems reasonable. So, can you please answer my main
question and give me the permission to add your "Signed-off-by:" tag or
re-send me a more standard patch...

Thanks a lot for your work on this driver David.
Best regards,
-- 
Nicolas Ferre



More information about the linux-arm-kernel mailing list