All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dmaengine: pl330: Set DMA_INTERRUPT capability and add related callback
@ 2022-06-29  9:30 Vivek Gautam
  2022-06-29 10:48 ` Vinod Koul
  0 siblings, 1 reply; 3+ messages in thread
From: Vivek Gautam @ 2022-06-29  9:30 UTC (permalink / raw)
  To: dmaengine, vkoul; +Cc: linux-kernel, robin.murphy, Vivek Gautam

With the verification for DMA_INTERRUPT capability added to the dmatest
module, the dmatest fails to start for various channels of pl330 dma
controller. So, set the DMA_INTERRUPT capability and add the required
callback method to set the transaction descriptor flags.

Signed-off-by: Vivek Gautam <vivek.gautam@arm.com>
---
 drivers/dma/pl330.c | 24 ++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 858400e42ec0..b80e48f0970b 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2757,6 +2757,28 @@ static struct dma_async_tx_descriptor *pl330_prep_dma_cyclic(
 	return &desc->txd;
 }
 
+static struct dma_async_tx_descriptor *
+pl330_dma_prep_interrupt(struct dma_chan *chan, unsigned long flags)
+{
+	struct dma_pl330_chan *pch = to_pchan(chan);
+	struct dma_pl330_desc *desc;
+
+	if (unlikely(!pch))
+		return NULL;
+
+	desc = pl330_get_desc(pch);
+	if (!desc) {
+		dev_err(pch->dmac->ddma.dev, "%s:%d Unable to fetch desc\n",
+			__func__, __LINE__);
+		return NULL;
+	}
+
+	/* Set the flags that are passed downstream */
+	desc->txd.flags = flags;
+
+	return &desc->txd;
+}
+
 static struct dma_async_tx_descriptor *
 pl330_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dst,
 		dma_addr_t src, size_t len, unsigned long flags)
@@ -3111,6 +3133,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
 	}
 
 	dma_cap_set(DMA_MEMCPY, pd->cap_mask);
+	dma_cap_set(DMA_INTERRUPT, pd->cap_mask);
 	if (pcfg->num_peri) {
 		dma_cap_set(DMA_SLAVE, pd->cap_mask);
 		dma_cap_set(DMA_CYCLIC, pd->cap_mask);
@@ -3121,6 +3144,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
 	pd->device_free_chan_resources = pl330_free_chan_resources;
 	pd->device_prep_dma_memcpy = pl330_prep_dma_memcpy;
 	pd->device_prep_dma_cyclic = pl330_prep_dma_cyclic;
+	pd->device_prep_dma_interrupt = pl330_dma_prep_interrupt;
 	pd->device_tx_status = pl330_tx_status;
 	pd->device_prep_slave_sg = pl330_prep_slave_sg;
 	pd->device_config = pl330_config;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] dmaengine: pl330: Set DMA_INTERRUPT capability and add related callback
  2022-06-29  9:30 [PATCH] dmaengine: pl330: Set DMA_INTERRUPT capability and add related callback Vivek Gautam
@ 2022-06-29 10:48 ` Vinod Koul
  2022-06-30 10:50   ` Vivek Kumar Gautam
  0 siblings, 1 reply; 3+ messages in thread
From: Vinod Koul @ 2022-06-29 10:48 UTC (permalink / raw)
  To: Vivek Gautam; +Cc: dmaengine, linux-kernel, robin.murphy

On 29-06-22, 15:00, Vivek Gautam wrote:
> With the verification for DMA_INTERRUPT capability added to the dmatest
> module, the dmatest fails to start for various channels of pl330 dma
> controller. So, set the DMA_INTERRUPT capability and add the required
> callback method to set the transaction descriptor flags.

Are you sire you want that? See 646728dff254 in linux-next

Thanks

> 
> Signed-off-by: Vivek Gautam <vivek.gautam@arm.com>
> ---
>  drivers/dma/pl330.c | 24 ++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
> index 858400e42ec0..b80e48f0970b 100644
> --- a/drivers/dma/pl330.c
> +++ b/drivers/dma/pl330.c
> @@ -2757,6 +2757,28 @@ static struct dma_async_tx_descriptor *pl330_prep_dma_cyclic(
>  	return &desc->txd;
>  }
>  
> +static struct dma_async_tx_descriptor *
> +pl330_dma_prep_interrupt(struct dma_chan *chan, unsigned long flags)
> +{
> +	struct dma_pl330_chan *pch = to_pchan(chan);
> +	struct dma_pl330_desc *desc;
> +
> +	if (unlikely(!pch))
> +		return NULL;
> +
> +	desc = pl330_get_desc(pch);
> +	if (!desc) {
> +		dev_err(pch->dmac->ddma.dev, "%s:%d Unable to fetch desc\n",
> +			__func__, __LINE__);
> +		return NULL;
> +	}
> +
> +	/* Set the flags that are passed downstream */
> +	desc->txd.flags = flags;
> +
> +	return &desc->txd;
> +}
> +
>  static struct dma_async_tx_descriptor *
>  pl330_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dst,
>  		dma_addr_t src, size_t len, unsigned long flags)
> @@ -3111,6 +3133,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
>  	}
>  
>  	dma_cap_set(DMA_MEMCPY, pd->cap_mask);
> +	dma_cap_set(DMA_INTERRUPT, pd->cap_mask);
>  	if (pcfg->num_peri) {
>  		dma_cap_set(DMA_SLAVE, pd->cap_mask);
>  		dma_cap_set(DMA_CYCLIC, pd->cap_mask);
> @@ -3121,6 +3144,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
>  	pd->device_free_chan_resources = pl330_free_chan_resources;
>  	pd->device_prep_dma_memcpy = pl330_prep_dma_memcpy;
>  	pd->device_prep_dma_cyclic = pl330_prep_dma_cyclic;
> +	pd->device_prep_dma_interrupt = pl330_dma_prep_interrupt;
>  	pd->device_tx_status = pl330_tx_status;
>  	pd->device_prep_slave_sg = pl330_prep_slave_sg;
>  	pd->device_config = pl330_config;
> -- 
> 2.17.1

-- 
~Vinod

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] dmaengine: pl330: Set DMA_INTERRUPT capability and add related callback
  2022-06-29 10:48 ` Vinod Koul
@ 2022-06-30 10:50   ` Vivek Kumar Gautam
  0 siblings, 0 replies; 3+ messages in thread
From: Vivek Kumar Gautam @ 2022-06-30 10:50 UTC (permalink / raw)
  To: Vinod Koul; +Cc: dmaengine, linux-kernel, robin.murphy

Hi Vinod,


On 6/29/22 16:18, Vinod Koul wrote:
> On 29-06-22, 15:00, Vivek Gautam wrote:
>> With the verification for DMA_INTERRUPT capability added to the dmatest
>> module, the dmatest fails to start for various channels of pl330 dma
>> controller. So, set the DMA_INTERRUPT capability and add the required
>> callback method to set the transaction descriptor flags.
>
> Are you sire you want that? See 646728dff254 in linux-next

Thanks for pointing to this. My bad that I missed to notice this patch
in lkml.
My patch can be dropped. Sorry for the noise.

Best regards
Vivek

[snip]
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2022-06-30 10:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-29  9:30 [PATCH] dmaengine: pl330: Set DMA_INTERRUPT capability and add related callback Vivek Gautam
2022-06-29 10:48 ` Vinod Koul
2022-06-30 10:50   ` Vivek Kumar Gautam

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.