2024-03-25 12:24:57

by Sugar Zhang

[permalink] [raw]
Subject: [PATCH v1] dmaengine: Add support for audio interleaved transfer

This patch add support for interleaved transfer which used
for interleaved audio or 2d video data transfer.

for audio situation, we add 'nump' for number of period frames.

Signed-off-by: Sugar Zhang <[email protected]>
---

include/linux/dmaengine.h | 2 ++
1 file changed, 2 insertions(+)

diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index 752dbde..5263cde 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -144,6 +144,7 @@ struct data_chunk {
* Otherwise, destination is filled contiguously (icg ignored).
* Ignored if dst_inc is false.
* @numf: Number of frames in this template.
+ * @nump: Number of period frames in this template.
* @frame_size: Number of chunks in a frame i.e, size of sgl[].
* @sgl: Array of {chunk,icg} pairs that make up a frame.
*/
@@ -156,6 +157,7 @@ struct dma_interleaved_template {
bool src_sgl;
bool dst_sgl;
size_t numf;
+ size_t nump;
size_t frame_size;
struct data_chunk sgl[];
};
--
2.7.4



2024-03-25 14:02:58

by Heiko Stuebner

[permalink] [raw]
Subject: Re: [PATCH v1] dmaengine: Add support for audio interleaved transfer

Hi,

Am Montag, 25. M?rz 2024, 03:37:49 CET schrieb Sugar Zhang:
> This patch add support for interleaved transfer which used
> for interleaved audio or 2d video data transfer.
>
> for audio situation, we add 'nump' for number of period frames.
>
> Signed-off-by: Sugar Zhang <[email protected]>
> ---
>
> include/linux/dmaengine.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index 752dbde..5263cde 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -144,6 +144,7 @@ struct data_chunk {
> * Otherwise, destination is filled contiguously (icg ignored).
> * Ignored if dst_inc is false.
> * @numf: Number of frames in this template.
> + * @nump: Number of period frames in this template.
> * @frame_size: Number of chunks in a frame i.e, size of sgl[].
> * @sgl: Array of {chunk,icg} pairs that make up a frame.
> */
> @@ -156,6 +157,7 @@ struct dma_interleaved_template {
> bool src_sgl;
> bool dst_sgl;
> size_t numf;
> + size_t nump;
> size_t frame_size;
> struct data_chunk sgl[];
> };

hmm, this only ever adds this nump element. I think for adding things
to really generic structs, you definitly will need to provide an actual
user for it in a second patch.


Heiko



2024-03-28 07:00:56

by Vinod Koul

[permalink] [raw]
Subject: Re: [PATCH v1] dmaengine: Add support for audio interleaved transfer

On 25-03-24, 10:37, Sugar Zhang wrote:
> This patch add support for interleaved transfer which used
> for interleaved audio or 2d video data transfer.
>
> for audio situation, we add 'nump' for number of period frames.

User? also why not use the cyclic api?

>
> Signed-off-by: Sugar Zhang <[email protected]>
> ---
>
> include/linux/dmaengine.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index 752dbde..5263cde 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -144,6 +144,7 @@ struct data_chunk {
> * Otherwise, destination is filled contiguously (icg ignored).
> * Ignored if dst_inc is false.
> * @numf: Number of frames in this template.
> + * @nump: Number of period frames in this template.
> * @frame_size: Number of chunks in a frame i.e, size of sgl[].
> * @sgl: Array of {chunk,icg} pairs that make up a frame.
> */
> @@ -156,6 +157,7 @@ struct dma_interleaved_template {
> bool src_sgl;
> bool dst_sgl;
> size_t numf;
> + size_t nump;
> size_t frame_size;
> struct data_chunk sgl[];
> };
> --
> 2.7.4

--
~Vinod