* [PATCH 0/3] Add capability for 2D DMA transfer
[not found] <CGME20250210062219epcas5p4695fe63e9ba36c19a640504f95dc3f12@epcas5p4.samsung.com>
@ 2025-02-10 6:19 ` Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
` (3 more replies)
0 siblings, 4 replies; 13+ messages in thread
From: Aatif Mushtaq @ 2025-02-10 6:19 UTC (permalink / raw)
To: vkoul, dmaengine, linux-kernel; +Cc: pankaj.dubey, aswani.reddy, Aatif Mushtaq
Add support for add halfword instruction to pl330 driver to achieve
2D DMA operations. Add a corresponding dmaengine API to prepare the
DMA for 2D transfer and create a hook between the dma engine and pl330
driver function.
Aatif Mushtaq (3):
dmaengine: Add support for 2D DMA operation
dmaengine: pl330: Add DMAADDH instruction
dmaengine: pl330: Add DMA_2D capability
drivers/dma/pl330.c | 44 +++++++++++++++++++++++++++++++++++++++
include/linux/dmaengine.h | 25 ++++++++++++++++++++++
2 files changed, 69 insertions(+)
--
2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-10 6:19 ` [PATCH 0/3] Add capability for 2D DMA transfer Aatif Mushtaq
@ 2025-02-10 6:19 ` Aatif Mushtaq
2025-02-10 7:50 ` Pankaj Dubey
2025-02-27 8:01 ` Vinod Koul
2025-02-10 6:19 ` [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction Aatif Mushtaq
` (2 subsequent siblings)
3 siblings, 2 replies; 13+ messages in thread
From: Aatif Mushtaq @ 2025-02-10 6:19 UTC (permalink / raw)
To: vkoul, dmaengine, linux-kernel; +Cc: pankaj.dubey, aswani.reddy, Aatif Mushtaq
Add a new dma engine API to support 2D DMA operations.
The API will be used to get the descriptor for 2D transfer based on
the 16-bit immediate to define the stride length between consecuitive
source address or destination address after every DMA load and
store instruction is processed.
Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
---
include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
index b137fdb56093..8a73b2147983 100644
--- a/include/linux/dmaengine.h
+++ b/include/linux/dmaengine.h
@@ -833,6 +833,7 @@ struct dma_filter {
* be called after period_len bytes have been transferred.
* @device_prep_interleaved_dma: Transfer expression in a generic way.
* @device_prep_dma_imm_data: DMA's 8 byte immediate data to the dst address
+ * @device_prep_2d_dma_memcpy: prepares a 2D memcpy operation
* @device_caps: May be used to override the generic DMA slave capabilities
* with per-channel specific ones
* @device_config: Pushes a new configuration to a channel, return 0 or an error
@@ -938,6 +939,9 @@ struct dma_device {
struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
struct dma_chan *chan, dma_addr_t dst, u64 data,
unsigned long flags);
+ struct dma_async_tx_descriptor *(*device_prep_2d_dma_memcpy)(
+ struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
+ size_t len, u16 src_imm, u16 dest_imm, unsigned long flags);
void (*device_caps)(struct dma_chan *chan, struct dma_slave_caps *caps);
int (*device_config)(struct dma_chan *chan, struct dma_slave_config *config);
@@ -1087,6 +1091,27 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
len, flags);
}
+/**
+ * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy descriptor.
+ * @chan: The channel to be used for this descriptor
+ * @dest: Address of the destination data for a DMA channel
+ * @src: Address of the source data for a DMA channel
+ * @len: The total size of data
+ * @src_imm: The immediate value to be added to the src address register
+ * @dest_imm: The immediate value to be added to the dst address register
+ * @flags: DMA engine flags
+ */
+static inline struct dma_async_tx_descriptor *device_prep_2d_dma_memcpy(
+ struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
+ size_t len, u16 src_imm, u16 dest_imm, unsigned long flags)
+{
+ if (!chan || !chan->device || !chan->device->device_prep_2d_dma_memcpy)
+ return NULL;
+
+ return chan->device->device_prep_2d_dma_memcpy(chan, dest, src, len,
+ src_imm, dest_imm, flags);
+}
+
static inline bool dmaengine_is_metadata_mode_supported(struct dma_chan *chan,
enum dma_desc_metadata_mode mode)
{
--
2.17.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction
2025-02-10 6:19 ` [PATCH 0/3] Add capability for 2D DMA transfer Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
@ 2025-02-10 6:19 ` Aatif Mushtaq
2025-02-10 7:53 ` Pankaj Dubey
2025-02-10 6:19 ` [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability Aatif Mushtaq
[not found] ` <CGME20250210062219epcas5p4695fe63e9ba36c19a640504f95dc3f12@epcms5p5>
3 siblings, 1 reply; 13+ messages in thread
From: Aatif Mushtaq @ 2025-02-10 6:19 UTC (permalink / raw)
To: vkoul, dmaengine, linux-kernel; +Cc: pankaj.dubey, aswani.reddy, Aatif Mushtaq
Add support for emitting DMAADDH instruction.
Add halfword instruction adds an immediate 16-bit value to the source
address register or destination address register for the DMA channel
thread. This enables the DMAC to support 2D DMA operations.
Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
---
drivers/dma/pl330.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 60c4de8dac1d..546ea442044e 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -323,6 +323,8 @@ struct pl330_xfer {
u32 dst_addr;
/* Size to xfer */
u32 bytes;
+ u16 src_imm;
+ u16 dst_imm;
};
/* The xfer callbacks are made with one of these arguments. */
@@ -623,6 +625,22 @@ static inline u32 _emit_LD(unsigned dry_run, u8 buf[], enum pl330_cond cond)
return SZ_DMALD;
}
+static inline u32 _emit_DMAADDH(unsigned dry_run, u8 buf[], enum pl330_dst ra, u16 imm)
+{
+ if (dry_run)
+ return SZ_DMAADDH;
+
+ buf[0] = CMD_DMAADDH;
+ buf[0] |= (ra << 1);
+ buf[1] = imm;
+ buf[2] = imm >> 8;
+
+ PL330_DBGCMD_DUMP(SZ_DMAADDH, "\tDMAADDH %s %u\n",
+ ra == 0 ? "SA" : "DA", imm);
+
+ return SZ_DMAADDH;
+}
+
static inline u32 _emit_LDP(unsigned dry_run, u8 buf[],
enum pl330_cond cond, u8 peri)
{
@@ -1097,6 +1115,7 @@ static inline int _ldst_memtomem(unsigned dry_run, u8 buf[],
{
int off = 0;
struct pl330_config *pcfg = pxs->desc->rqcfg.pcfg;
+ struct pl330_xfer *x = &pxs->desc->px;
/* check lock-up free version */
if (get_revision(pcfg->periph_id) >= PERIPH_REV_R1P0) {
@@ -1113,6 +1132,11 @@ static inline int _ldst_memtomem(unsigned dry_run, u8 buf[],
}
}
+ if (x->src_imm)
+ off += _emit_DMAADDH(dry_run, &buf[off], SRC, x->src_imm);
+ if (x->dst_imm)
+ off += _emit_DMAADDH(dry_run, &buf[off], DST, x->dst_imm);
+
return off;
}
@@ -2633,6 +2657,8 @@ static inline void fill_px(struct pl330_xfer *px,
px->bytes = len;
px->dst_addr = dst;
px->src_addr = src;
+ px->src_imm = 0;
+ px->dst_imm = 0;
}
static struct dma_pl330_desc *
--
2.17.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability
2025-02-10 6:19 ` [PATCH 0/3] Add capability for 2D DMA transfer Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction Aatif Mushtaq
@ 2025-02-10 6:19 ` Aatif Mushtaq
2025-02-10 7:54 ` Pankaj Dubey
[not found] ` <CGME20250210062219epcas5p4695fe63e9ba36c19a640504f95dc3f12@epcms5p5>
3 siblings, 1 reply; 13+ messages in thread
From: Aatif Mushtaq @ 2025-02-10 6:19 UTC (permalink / raw)
To: vkoul, dmaengine, linux-kernel; +Cc: pankaj.dubey, aswani.reddy, Aatif Mushtaq
Add a capability to prepare DMA for 2D transfer and create a hook
between the DMA engine and the pl330 driver
Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
---
drivers/dma/pl330.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c
index 546ea442044e..ac17657413b5 100644
--- a/drivers/dma/pl330.c
+++ b/drivers/dma/pl330.c
@@ -2847,6 +2847,23 @@ pl330_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dst,
return &desc->txd;
}
+static struct dma_async_tx_descriptor *
+pl330_prep_2d_dma_memcpy(struct dma_chan *chan, dma_addr_t dst,
+ dma_addr_t src, size_t len, u16 src_imm,
+ u16 dst_imm, unsigned long flags)
+{
+ struct dma_pl330_desc *desc;
+ struct dma_async_tx_descriptor *tx;
+
+ tx = pl330_prep_dma_memcpy(chan, dst, src, len, flags);
+ desc = to_desc(tx);
+
+ desc->px.src_imm = src_imm;
+ desc->px.dst_imm = dst_imm;
+
+ return tx;
+}
+
static void __pl330_giveback_desc(struct pl330_dmac *pl330,
struct dma_pl330_desc *first)
{
@@ -3157,6 +3174,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id)
pd->device_alloc_chan_resources = pl330_alloc_chan_resources;
pd->device_free_chan_resources = pl330_free_chan_resources;
pd->device_prep_dma_memcpy = pl330_prep_dma_memcpy;
+ pd->device_prep_2d_dma_memcpy = pl330_prep_2d_dma_memcpy;
pd->device_prep_dma_cyclic = pl330_prep_dma_cyclic;
pd->device_tx_status = pl330_tx_status;
pd->device_prep_slave_sg = pl330_prep_slave_sg;
--
2.17.1
^ permalink raw reply related [flat|nested] 13+ messages in thread
* RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
@ 2025-02-10 7:50 ` Pankaj Dubey
2025-02-27 8:01 ` Vinod Koul
1 sibling, 0 replies; 13+ messages in thread
From: Pankaj Dubey @ 2025-02-10 7:50 UTC (permalink / raw)
To: 'Aatif Mushtaq', vkoul, dmaengine, linux-kernel; +Cc: aswani.reddy
> -----Original Message-----
> From: Aatif Mushtaq <aatif4.m@samsung.com>
> Sent: Monday, February 10, 2025 11:49 AM
> To: vkoul@kernel.org; dmaengine@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Cc: pankaj.dubey@samsung.com; aswani.reddy@samsung.com; Aatif Mushtaq
> <aatif4.m@samsung.com>
> Subject: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
>
> Add a new dma engine API to support 2D DMA operations.
> The API will be used to get the descriptor for 2D transfer based on
> the 16-bit immediate to define the stride length between consecuitive
16-bit immediate (what? Data?)
Run spell check consecuitive -> consecutive
> source address or destination address after every DMA load and
> store instruction is processed.
>
> Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> ---
> include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index b137fdb56093..8a73b2147983 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -833,6 +833,7 @@ struct dma_filter {
> * be called after period_len bytes have been transferred.
> * @device_prep_interleaved_dma: Transfer expression in a generic way.
> * @device_prep_dma_imm_data: DMA's 8 byte immediate data to the dst
> address
> + * @device_prep_2d_dma_memcpy: prepares a 2D memcpy operation
prepares -> Prepares (P should be in CAPS)
> * @device_caps: May be used to override the generic DMA slave capabilities
> * with per-channel specific ones
> * @device_config: Pushes a new configuration to a channel, return 0 or an
> error
> @@ -938,6 +939,9 @@ struct dma_device {
> struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
> struct dma_chan *chan, dma_addr_t dst, u64 data,
> unsigned long flags);
> + struct dma_async_tx_descriptor *(*device_prep_2d_dma_memcpy)(
> + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags);
>
> void (*device_caps)(struct dma_chan *chan, struct dma_slave_caps
> *caps);
> int (*device_config)(struct dma_chan *chan, struct dma_slave_config
> *config);
> @@ -1087,6 +1091,27 @@ static inline struct dma_async_tx_descriptor
> *dmaengine_prep_dma_memcpy(
> len, flags);
> }
>
> +/**
> + * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy descriptor.
> + * @chan: The channel to be used for this descriptor
> + * @dest: Address of the destination data for a DMA channel
> + * @src: Address of the source data for a DMA channel
> + * @len: The total size of data
> + * @src_imm: The immediate value to be added to the src address register
src -> source
> + * @dest_imm: The immediate value to be added to the dst address register
dst -> destination
avoid using non-standard short forms in comment except variable names.
> + * @flags: DMA engine flags
> + */
> +static inline struct dma_async_tx_descriptor *device_prep_2d_dma_memcpy(
> + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags)
> +{
> + if (!chan || !chan->device || !chan->device-
> >device_prep_2d_dma_memcpy)
> + return NULL;
> +
> + return chan->device->device_prep_2d_dma_memcpy(chan, dest, src,
> len,
> + src_imm, dest_imm, flags);
> +}
> +
> static inline bool dmaengine_is_metadata_mode_supported(struct dma_chan
> *chan,
> enum dma_desc_metadata_mode mode)
> {
> --
> 2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction
2025-02-10 6:19 ` [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction Aatif Mushtaq
@ 2025-02-10 7:53 ` Pankaj Dubey
0 siblings, 0 replies; 13+ messages in thread
From: Pankaj Dubey @ 2025-02-10 7:53 UTC (permalink / raw)
To: 'Aatif Mushtaq', vkoul, dmaengine, linux-kernel; +Cc: aswani.reddy
> -----Original Message-----
> From: Aatif Mushtaq <aatif4.m@samsung.com>
> Sent: Monday, February 10, 2025 11:49 AM
> To: vkoul@kernel.org; dmaengine@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Cc: pankaj.dubey@samsung.com; aswani.reddy@samsung.com; Aatif Mushtaq
> <aatif4.m@samsung.com>
> Subject: [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction
>
> Add support for emitting DMAADDH instruction.
> Add halfword instruction adds an immediate 16-bit value to the source
> address register or destination address register for the DMA channel
> thread. This enables the DMAC to support 2D DMA operations.
>
> Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> ---
Looks good to me.
Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability
2025-02-10 6:19 ` [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability Aatif Mushtaq
@ 2025-02-10 7:54 ` Pankaj Dubey
0 siblings, 0 replies; 13+ messages in thread
From: Pankaj Dubey @ 2025-02-10 7:54 UTC (permalink / raw)
To: 'Aatif Mushtaq', vkoul, dmaengine, linux-kernel; +Cc: aswani.reddy
> -----Original Message-----
> From: Aatif Mushtaq <aatif4.m@samsung.com>
> Sent: Monday, February 10, 2025 11:49 AM
> To: vkoul@kernel.org; dmaengine@vger.kernel.org; linux-
> kernel@vger.kernel.org
> Cc: pankaj.dubey@samsung.com; aswani.reddy@samsung.com; Aatif Mushtaq
> <aatif4.m@samsung.com>
> Subject: [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability
>
> Add a capability to prepare DMA for 2D transfer and create a hook
> between the DMA engine and the pl330 driver
>
> Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> ---
Reviewed-by: Pankaj Dubey <pankaj.dubey@samsung.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: FW: [PATCH 0/3] Add capability for 2D DMA transfer
[not found] ` <20250224084948epcms5p57acb02e41b7626321d82c74569361be5@epcms5p5>
@ 2025-02-27 8:00 ` Vinod Koul
2025-02-28 9:28 ` Aatif Mushtaq/Aatif Mushtaq
0 siblings, 1 reply; 13+ messages in thread
From: Vinod Koul @ 2025-02-27 8:00 UTC (permalink / raw)
To: Aatif Mushtaq
Cc: dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org,
PANKAJ KUMAR DUBEY, ASWANI REDDY
On 24-02-25, 14:19, Aatif Mushtaq wrote:
> <!DOCTYPE html>
> <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" class="cui-content-default">
> <style class="cui-content-default" data-cafe-default="true">@charset "UTF-8";/*! cafe note v2.3.34.7 | Copyright 2014, S-Core, Inc. All Right Reserved. */body,html{overflow:visible!important;height:auto}html{height:auto}body{display:block;margin-left:24px;margin-right:20px;margin-top:16px}body ol,body ul{margin:0;padding-left:40px}body li,body p{line-height:1.9;margin:0 auto}body .cui-quote{margin-left:4px;margin-bottom:20px;padding-left:6px;border-left:4px solid #ccc}body .cui-quote h1,body .cui-quote h2,body .cui-quote h3,body .cui-quote h4,body .cui-quote h5,body .cui-quote h6,body .cui-quote li,body .cui-quote p{margin-bottom:4px}table.cui-div{display:block}table.cui-div>tbody{display:block}table.cui-div>tbody>tr{display:block}table.cui-div>tbody>tr>td,table.cui-div>tbody>tr>th{display:block}figure.cui-og,figure.cui-temp-og{margin:0;display:block;margin-inline-start:0;margin-inline-end:0}.cui-og-container{display:inline-flex}.cui-og-container .cui-og-button-close{display:none;width:20px;height:20px;cursor:pointer;border:none;border-radius:4px;background-color:#fff;background-position:center;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAI5JREFUOE+9lLEVgDAIRC8b6Tw0Opk2zKMj+XjPApUABTFtLj9wXNJQvFoxD+OBzDwR0Zmp3NI+KhQBgAPASkS7B2XmBcAGYNYFfFpWwi7U05geegeiC7tDsQ5GMLHInbIG3H6KZ66/YWwUVJjhsP4FlrZcOpTS2GSikQ72qKdX9zlkfphIE+YwArz3y4EXDCF2FapWr4IAAAAASUVORK5CYII=");position:relative;top:10px;left:-30px;z-index:1}.cui-og-container .cui-og-button-close.cui-state-focus{display:block}table.cui-pasted-table h1,table.cui-pasted-table h2,table.cui-pasted-table h3,table.cui-pasted-table h4,table.cui-pasted-table h5,table.cui-pasted-table h6,table.cui-pasted-table li,table.cui-pasted-table p,table.cui-pasted-table td,table.cui-pasted-table th{line-height:normal}div[data-cui-alt-image],img[data-cui-alt-image]{background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAUCAYAAACJfM0wAAABH0lEQVQ4jbXU26qEIBQGYF+wtxLMgg4QdGdBREUhFEFBBx/tn6sGpcPezTTCAi/0Q11rSQghhDGGJ4P8An3j20QIgSzLvookSfawUgrrukIp9VVcwkIIcM7h+z66rnsGbprGeCvf95+B8zw3YM75M/A4jnAcB3pS9Y3zPKPv+0vYKDf9jcdxRJ7naJrG2DRNE8IwBGMMZVkewmQbOnwVy7IgiqL3TWzbRtu2x+gVnKYpXNdF27ZY1xVxHO+awHVdDMMAKaWJnsFZlhkn8zzvtMOCIACl1No8Sqm1S55SCkVR3GrdI3QH13V9/7PRxmG5SSlh2/bHKGMMVVXtYc75bZRSaunX1w92+9vUT6mju3WfJuqvv/zf8FmZXq7/BfoCA1VRsvK4AfgAAAAASUVORK5CYII=") no-repeat center #c1c1c1}body::-webkit-scrollbar{opacity:.08;width:6px;height:6px}body::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.15);border-radius:7px;width:6px}.cui-knoxtaskinput-line{height:150px}.cui-knoxtaskinput-line.double-line{height:170px}.cui-customtask-card{width:560px;height:68px;border-radius:8px;border:solid 1px #dbdbdb;background-color:#fff;border-spacing:0px;table-layout:fixed;margin-bottom:20px}.cui-customtask-card td{margin:0;padding:0;border:0}.cui-customtask-card td>p{width:422px;margin-left:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cui-customtask-card .cui-customtask-card-cell{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cui-customtask-card .cui-customtask-card-image{width:40px;height:40px;margin:0 15px 0 15px;border-radius:22px;background-color:#e96b6b;vertical-align:middle}.cui-customtask-card .cui-customtask-card-content-task{font-size:15px;font-weight:700;font-stretch:normal;font-style:normal;letter-spacing:normal;text-align:left;color:#000;line-height:20px;height:100%}.cui-customtask-card .cui-customtask-card-content-asignee{font-size:12px;font-weight:400;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:20px;text-align:left;color:rgba(0,0,0,.9)}.cui-taskcard-wrapper{display:block;height:72px;margin-bottom:20px}.cui-taskcard-wrapper .cui-taskcard-more{width:32px;height:32px;padding:0;border:0;background-image:url("./cafe/knox/2.3.34.7/skins/default-knox/images/ic_more_horizontal_normal.png");background-size:16px 16px;background-repeat:no-repeat;background-position:center;background-color:transparent;border-radius:16px}.cui-taskcard-wrapper .cui-taskcard-more-hover{background-image:url("./cafe/knox/2.3.34.7/skins/default-knox/images/ic_more_horizontal_active.png");background-color:rgba(0,0,0,.06)}.cui-taskcard-wrapper-menu{width:122px;height:80px;border-radius:8px;box-shadow:0 3px 4px 0 rgba(0,0,0,.08);border:solid 1px #dbdbdb;background-color:#fff;position:absolute;top:46px;left:516px}.cui-taskcard-wrapper-menu .cui-taskcard-wrapper-menu-ul{margin:8px;padding:0;list-style:none}.cui-taskcard-wrapper-menu .cui-taskcard-wrapper-menu-item{position:relative;width:106px;height:32px;border-radius:4px;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");margin:0 auto}.cui-taskcard-wrapper-menu .cui-taskcard-wrapper-menu-item-hover{border-radius:4px;background-color:rgba(0,0,0,.06)}.cui-taskcard-wrapper-menu .cui-taskcard-wrapper-menu-icon{width:20px;height:20px;margin:0 0 6px 0;position:absolute;top:4px;left:8px}.cui-taskcard-wrapper-menu .cui-taskcard-delete{background-image:url("./cafe/knox/2.3.34.7/skins/default-knox/images/ic_memo_delete.png")}.cui-taskcard-wrapper-menu .cui-taskcard-update{background-image:url("./cafe/knox/2.3.34.7/skins/default-knox/images/ic_edit.png");background-repeat:no-repeat;background-position:center}.cui-taskcard-wrapper-menu .cui-taskcard-wrapper-menu-text{width:52px;height:19px;font-family:"Malgun Gothic","맑은 고딕",Dotum,"돋움",Gulim,"굴림","Apple SD Gothic Neo","Segoe UI WPC","Segoe UI",Helvetica,sans-serif;font-size:13px;font-weight:400;font-stretch:normal;font-style:normal;line-height:2.15;letter-spacing:normal;text-align:left;color:rgba(0,0,0,.9);position:absolute;left:34px}.cui-mention.cui-mention-edited{display:inline-block;padding:1px 4px;border-radius:4px;background-color:rgba(187,187,187,.19)!important;color:#2a82f0!important;font-weight:400!important;font-style:normal!important;font-family:"맑은 고딕"!important;text-decoration:none!important;line-height:normal}.cui-mention.cui-mention-editing{padding:1px 4px;border-radius:4px;background-color:rgba(0,0,0,.06);color:rgba(0,0,0,.9)}</style>
> <style class="cui-content-default" data-user-config="true">
???
Pls stop sending HTML emails to the lists!
> body {margin: 10px; font-size: 10pt; font-family:Arial,sans-serif; line-height:1.9;}
> p {line-height:1.9;}
> body,body p,body li,body h1,body h2, body h3,body h4,body h5,body h6 {font-family:Arial,sans-serif; line-height:1.9;}
> </style></head>
> <body><p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Hi all !<br><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">I hope this email finds you well. I wanted to gently remind you to please take out some </span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">valuable time from your schedule to review the patch chain.</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">regards</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Aatif Mushtaq</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> </span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">--------- <b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Original Message</span></b> ---------</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Sender</span></b> : Aatif Mushtaq <aatif4.m@samsung.com>FDS SW /SSIR/Samsung Electronics</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Date</span></b> : 2025-02-10 11:52 (GMT+5:30)</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Title</span></b> : [PATCH 0/3] Add capability for 2D DMA transfer</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">To : </span></b>vkoul@kernel.org, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">CC : </span></b>PANKAJ KUMAR DUBEY<pankaj.dubey@samsung.com>, ASWANI REDDY<aswani.reddy@samsung.com>, Aatif Mushtaq<aatif4.m@samsung.com></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> </span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Add support for add halfword instruction to pl330 driver to achieve</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">2D DMA operations. Add a corresponding dmaengine API to prepare the</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">DMA for 2D transfer and create a hook between the dma engine and pl330</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">driver function.</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">Aatif Mushtaq (3):</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> dmaengine: Add support for 2D DMA operation</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> dmaengine: pl330: Add DMAADDH instruction</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> dmaengine: pl330: Add DMA_2D capability</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> drivers/dma/pl330.c | 44 +++++++++++++++++++++++++++++++++++++++</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> include/linux/dmaengine.h | 25 ++++++++++++++++++++++</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"> 2 files changed, 69 insertions(+)</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">-- </span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;">2.17.1</span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <p><span style="font-family: Arial, sans-serif; font-size: 13.3333px;"><br></span></p>
> <table id=bannersignimg data-cui-lock="true" namo_lock><tr><td><div id="cafe-note-contents" style="margin:10px;font-family:Arial;font-size:10pt;"><p> </p></div></td></tr></table><table id=confidentialsignimg data-cui-lock="true" namo_lock><tr><td><p><img unselectable="on" data-cui-image="true" style="display: inline-block; border: 0px solid; width: 520px; height: 144px;" src="cid:cafe_image_0@s-core.co.kr"><br></p>
> </td></tr></table></body>
> </html><table style='display: none;'><tbody><tr><td><img style='display: none;' border=0 src='http://ext.samsung.net/mail/ext/v1/external/status/update?userid=aatif4.m&do=bWFpbElEPTIwMjUwMjI0MDg0OTQ4ZXBjbXM1cDU3YWNiMDJlNDFiNzYyNjMyMWQ4MmM3NDU2OTM2MWJlNSZyZWNpcGllbnRBZGRyZXNzPXZrb3VsQGtlcm5lbC5vcmc_' width=0 height=0></td></tr></tbody></table>
--
~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
2025-02-10 7:50 ` Pankaj Dubey
@ 2025-02-27 8:01 ` Vinod Koul
2025-02-28 9:32 ` Aatif Mushtaq/Aatif Mushtaq
` (2 more replies)
1 sibling, 3 replies; 13+ messages in thread
From: Vinod Koul @ 2025-02-27 8:01 UTC (permalink / raw)
To: Aatif Mushtaq; +Cc: dmaengine, linux-kernel, pankaj.dubey, aswani.reddy
On 10-02-25, 11:49, Aatif Mushtaq wrote:
> Add a new dma engine API to support 2D DMA operations.
> The API will be used to get the descriptor for 2D transfer based on
> the 16-bit immediate to define the stride length between consecuitive
> source address or destination address after every DMA load and
> store instruction is processed.
Why should we define a new API for this...? Why not use the sg or
interleaved api for this?
>
> Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> ---
> include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> index b137fdb56093..8a73b2147983 100644
> --- a/include/linux/dmaengine.h
> +++ b/include/linux/dmaengine.h
> @@ -833,6 +833,7 @@ struct dma_filter {
> * be called after period_len bytes have been transferred.
> * @device_prep_interleaved_dma: Transfer expression in a generic way.
> * @device_prep_dma_imm_data: DMA's 8 byte immediate data to the dst address
> + * @device_prep_2d_dma_memcpy: prepares a 2D memcpy operation
> * @device_caps: May be used to override the generic DMA slave capabilities
> * with per-channel specific ones
> * @device_config: Pushes a new configuration to a channel, return 0 or an error
> @@ -938,6 +939,9 @@ struct dma_device {
> struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
> struct dma_chan *chan, dma_addr_t dst, u64 data,
> unsigned long flags);
> + struct dma_async_tx_descriptor *(*device_prep_2d_dma_memcpy)(
> + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags);
>
> void (*device_caps)(struct dma_chan *chan, struct dma_slave_caps *caps);
> int (*device_config)(struct dma_chan *chan, struct dma_slave_config *config);
> @@ -1087,6 +1091,27 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
> len, flags);
> }
>
> +/**
> + * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy descriptor.
> + * @chan: The channel to be used for this descriptor
> + * @dest: Address of the destination data for a DMA channel
> + * @src: Address of the source data for a DMA channel
> + * @len: The total size of data
> + * @src_imm: The immediate value to be added to the src address register
> + * @dest_imm: The immediate value to be added to the dst address register
> + * @flags: DMA engine flags
> + */
> +static inline struct dma_async_tx_descriptor *device_prep_2d_dma_memcpy(
> + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags)
> +{
> + if (!chan || !chan->device || !chan->device->device_prep_2d_dma_memcpy)
> + return NULL;
> +
> + return chan->device->device_prep_2d_dma_memcpy(chan, dest, src, len,
> + src_imm, dest_imm, flags);
> +}
> +
> static inline bool dmaengine_is_metadata_mode_supported(struct dma_chan *chan,
> enum dma_desc_metadata_mode mode)
> {
> --
> 2.17.1
--
~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: FW: [PATCH 0/3] Add capability for 2D DMA transfer
2025-02-27 8:00 ` FW: [PATCH 0/3] Add capability for 2D DMA transfer Vinod Koul
@ 2025-02-28 9:28 ` Aatif Mushtaq/Aatif Mushtaq
0 siblings, 0 replies; 13+ messages in thread
From: Aatif Mushtaq/Aatif Mushtaq @ 2025-02-28 9:28 UTC (permalink / raw)
To: 'Vinod Koul'
Cc: dmaengine, linux-kernel, 'PANKAJ KUMAR DUBEY',
'ASWANI REDDY'
> -----Original Message-----
> From: Vinod Koul <vkoul@kernel.org>
> Sent: 27 February 2025 13:31
> To: Aatif Mushtaq <aatif4.m@samsung.com>
> Cc: dmaengine@vger.kernel.org; linux-kernel@vger.kernel.org; PANKAJ
> KUMAR DUBEY <pankaj.dubey@samsung.com>; ASWANI REDDY
> <aswani.reddy@samsung.com>
> Subject: Re: FW: [PATCH 0/3] Add capability for 2D DMA transfer
>
> On 24-02-25, 14:19, Aatif Mushtaq wrote:
> > <!DOCTYPE html>
> > <html>
> > <head>
> > <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
> > class="cui-content-default"> <style class="cui-content-default"
> > data-cafe-default="true">@charset "UTF-8";/*! cafe note v2.3.34.7 |
> > Copyright 2014, S-Core, Inc. All Right Reserved.
> > */body,html{overflow:visible!important;height:auto}html{height:auto}bo
> > dy{display:block;margin-left:24px;margin-right:20px;margin-top:16px}bo
> > dy ol,body ul{margin:0;padding-left:40px}body li,body
> > p{line-height:1.9;margin:0 auto}body
> > .cui-quote{margin-left:4px;margin-bottom:20px;padding-left:6px;border-
> > left:4px solid #ccc}body .cui-quote h1,body .cui-quote h2,body
> > .cui-quote h3,body .cui-quote h4,body .cui-quote h5,body .cui-quote
> > h6,body .cui-quote li,body .cui-quote
> > p{margin-bottom:4px}table.cui-div{display:block}table.cui-div>tbody{di
> > splay:block}table.cui-div>tbody>tr{display:block}table.cui-div>tbody>t
> > r>td,table.cui-div>tbody>tr>th{display:block}figure.cui-og,figure.cui-
> > temp-og{margin:0;display:block;margin-inline-start:0;margin-inline-end
> > :0}.cui-og-container{display:inline-flex}.cui-og-container
> > .cui-og-button-close{display:none;width:20px;height:20px;cursor:pointe
> > r;border:none;border-radius:4px;background-color:#fff;background-posit
> > ion:center;background-
> image:url("data:image/png;base64,iVBORw0KGgoAAAA
> >
> NSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAAXNSR0IArs4c6QAAAI5JREFU
> OE+9lLEVgDAIR
> >
> C8b6Tw0Opk2zKMj+XjPApUABTFtLj9wXNJQvFoxD+OBzDwR0Zmp3NI+KhQB
> gAPASkS7B2X
> >
> mBcAGYNYFfFpWwi7U05geegeiC7tDsQ5GMLHInbIG3H6KZ66/YWwUVJjhsP4
> FlrZcOpTS2
> >
> GSikQ72qKdX9zlkfphIE+YwArz3y4EXDCF2FapWr4IAAAAASUVORK5CYII=");po
> sition
> > :relative;top:10px;left:-30px;z-index:1}.cui-og-container
> > .cui-og-button-close.cui-state-focus{display:block}table.cui-pasted-ta
> > ble h1,table.cui-pasted-table h2,table.cui-pasted-table
> > h3,table.cui-pasted-table h4,table.cui-pasted-table
> > h5,table.cui-pasted-table h6,table.cui-pasted-table
> > li,table.cui-pasted-table p,table.cui-pasted-table
> > td,table.cui-pasted-table
> > th{line-height:normal}div[data-cui-alt-image],img[data-cui-alt-image]{
> >
> background:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB
> YAAAAU
> >
> CAYAAACJfM0wAAABH0lEQVQ4jbXU26qEIBQGYF+wtxLMgg4QdGdBREUhFE
> FBBx/tn6sGpc
> >
> PezTTCAi/0Q11rSQghhDGGJ4P8An3j20QIgSzLvookSfawUgrrukIp9VVcwkIIcM
> 7h+z66
> >
> rnsGbprGeCvf95+B8zw3YM75M/A4jnAcB3pS9Y3zPKPv+0vYKDf9jcdxRJ7naJr
> G2DRNE8
> >
> IwBGMMZVkewmQbOnwVy7IgiqL3TWzbRtu2x+gVnKYpXNdF27ZY1xVxHO+a
> wHVdDMMAKaWJ
> >
> nsFZlhkn8zzvtMOCIACl1No8Sqm1S55SCkVR3GrdI3QH13V9/7PRxmG5SSlh2/b
> HKGMMVV
> >
> XtYc75bZRSaunX1w92+9vUT6mju3WfJuqvv/zf8FmZXq7/BfoCA1VRsvK4AfgA
> AAAASUVO
> > RK5CYII=") no-repeat center
> > #c1c1c1}body::-webkit-scrollbar{opacity:.08;width:6px;height:6px}body:
> > :-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.15);border-radiu
> > s:7px;width:6px}.cui-knoxtaskinput-line{height:150px}.cui-knoxtaskinpu
> > t-line.double-line{height:170px}.cui-customtask-card{width:560px;heigh
> > t:68px;border-radius:8px;border:solid 1px
> > #dbdbdb;background-color:#fff;border-spacing:0px;table-layout:fixed;ma
> > rgin-bottom:20px}.cui-customtask-card
> > td{margin:0;padding:0;border:0}.cui-customtask-card
> > td>p{width:422px;margin-left:0;text-overflow:ellipsis;white-space:nowr
> > ap;overflow:hidden}.cui-customtask-card
> > .cui-customtask-card-cell{text-overflow:ellipsis;white-space:nowrap;ov
> > erflow:hidden}.cui-customtask-card
> > .cui-customtask-card-image{width:40px;height:40px;margin:0 15px 0
> > 15px;border-radius:22px;background-color:#e96b6b;vertical-align:middle
> > }.cui-customtask-card
> > .cui-customtask-card-content-task{font-size:15px;font-weight:700;font-
> > stretch:normal;font-style:normal;letter-spacing:normal;text-align:left
> > ;color:#000;line-height:20px;height:100%}.cui-customtask-card
> > .cui-customtask-card-content-asignee{font-size:12px;font-weight:400;fo
> > nt-stretch:normal;font-style:normal;letter-spacing:normal;line-height:
> > 20px;text-align:left;color:rgba(0,0,0,.9)}.cui-taskcard-wrapper{displa
> > y:block;height:72px;margin-bottom:20px}.cui-taskcard-wrapper
> > .cui-taskcard-more{width:32px;height:32px;padding:0;border:0;backgroun
> > d-image:url("./cafe/knox/2.3.34.7/skins/default-knox/images/ic_more_ho
> > rizontal_normal.png");background-size:16px
> > 16px;background-repeat:no-repeat;background-
> position:center;background
> > -color:transparent;border-radius:16px}.cui-taskcard-wrapper
> > .cui-taskcard-more-hover{background-image:url("./cafe/knox/2.3.34.7/sk
> > ins/default-knox/images/ic_more_horizontal_active.png");background-col
> > or:rgba(0,0,0,.06)}.cui-taskcard-wrapper-menu{width:122px;height:80px;
> > border-radius:8px;box-shadow:0 3px 4px 0 rgba(0,0,0,.08);border:solid
> > 1px
> > #dbdbdb;background-color:#fff;position:absolute;top:46px;left:516px}.c
> > ui-taskcard-wrapper-menu
> > .cui-taskcard-wrapper-menu-ul{margin:8px;padding:0;list-style:none}.cu
> > i-taskcard-wrapper-menu
> > .cui-taskcard-wrapper-menu-item{position:relative;width:106px;height:3
> > 2px;border-radius:4px;list-style-image:url("data:image/gif;base64,R0lG
> >
> ODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");mar
> gin:0
> > auto}.cui-taskcard-wrapper-menu
> > .cui-taskcard-wrapper-menu-item-hover{border-radius:4px;background-
> col
> > or:rgba(0,0,0,.06)}.cui-taskcard-wrapper-menu
> > .cui-taskcard-wrapper-menu-icon{width:20px;height:20px;margin:0 0 6px
> > 0;position:absolute;top:4px;left:8px}.cui-taskcard-wrapper-menu
> > .cui-taskcard-delete{background-image:url("./cafe/knox/2.3.34.7/skins/
> > default-knox/images/ic_memo_delete.png")}.cui-taskcard-wrapper-menu
> > .cui-taskcard-update{background-image:url("./cafe/knox/2.3.34.7/skins/
> > default-knox/images/ic_edit.png");background-repeat:no-
> repeat;backgrou
> > nd-position:center}.cui-taskcard-wrapper-menu
> > .cui-taskcard-wrapper-menu-text{width:52px;height:19px;font-family:"Ma
> > lgun Gothic","맑은 고딕",Dotum,"돋움",Gulim,"굴림","Apple SD Gothic
> > Neo","Segoe UI WPC","Segoe
> > UI",Helvetica,sans-serif;font-size:13px;font-weight:400;font-stretch:n
> > ormal;font-style:normal;line-height:2.15;letter-spacing:normal;text-al
> > ign:left;color:rgba(0,0,0,.9);position:absolute;left:34px}.cui-mention
> > .cui-mention-edited{display:inline-block;padding:1px
> > 4px;border-radius:4px;background-color:rgba(187,187,187,.19)!important
> > ;color:#2a82f0!important;font-weight:400!important;font-style:normal!i
> > mportant;font-family:"맑은
> > 고딕"!important;text-decoration:none!important;line-height:normal}.cui-
> m
> > ention.cui-mention-editing{padding:1px
> > 4px;border-radius:4px;background-color:rgba(0,0,0,.06);color:rgba(0,0,
> > 0,.9)}</style> <style class="cui-content-default"
> > data-user-config="true">
>
> ???
>
> Pls stop sending HTML emails to the lists!
This was a mistake, I will take care from next time.
>
> > body {margin: 10px; font-size: 10pt; font-family:Arial,sans-serif;
> > line-height:1.9;} p {line-height:1.9;} body,body p,body li,body
> > h1,body h2, body h3,body h4,body h5,body h6
> > {font-family:Arial,sans-serif; line-height:1.9;} </style></head>
> > <body><p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;">Hi all !<br><br></span></p> <p><span style="font-family:
> > Arial, sans-serif; font-size: 13.3333px;">I hope this email finds you
> > well. I wanted to gently remind you to please take out
> > some </span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;">valuable time from your schedule to review the
> > patch chain.</span></p> <p><span style="font-family: Arial,
> > sans-serif; font-size: 13.3333px;"><br></span></p> <p><span
> > style="font-family: Arial, sans-serif; font-size:
> 13.3333px;">regards</span></p> <p><span style="font-family: Arial, sans-
> serif; font-size: 13.3333px;">Aatif Mushtaq</span></p> <p><span
> style="font-family: Arial, sans-serif; font-size:
> 13.3333px;"> </span></p> <p><span style="font-family: Arial, sans-
> serif; font-size: 13.3333px;">--------- <b><span style="font-family: Arial, sans-
> serif; font-size: 13.3333px;">Original Message</span></b> ---------
> </span></p> <p><span style="font-family: Arial, sans-serif; font-size:
> 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size:
> 13.3333px;">Sender</span></b> : Aatif Mushtaq
> <aatif4.m@samsung.com>FDS SW /SSIR/Samsung
> Electronics</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size:
> 13.3333px;">Date</span></b> : 2025-02-10 11:52 (GMT+5:30)</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;">Title</span></b> : [PATCH 0/3] Add capability for 2D DMA
> > transfer</span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;"><b><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;">To : </span></b>vkoul@kernel.org,
> > dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"><b><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;">CC : </span></b>PANKAJ KUMAR
> > DUBEY<pankaj.dubey@samsung.com>, ASWANI
> > REDDY<aswani.reddy@samsung.com>, Aatif
> > Mushtaq<aatif4.m@samsung.com></span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"> </span></p> <p><span style="font-family: Arial,
> > sans-serif; font-size: 13.3333px;">Add support for add halfword
> > instruction to pl330 driver to achieve</span></p> <p><span
> > style="font-family: Arial, sans-serif; font-size: 13.3333px;">2D DMA
> > operations. Add a corresponding dmaengine API to prepare
> > the</span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;">DMA for 2D transfer and create a hook between
> > the dma engine and pl330</span></p> <p><span style="font-family:
> > Arial, sans-serif; font-size: 13.3333px;">driver function.</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"><br></span></p> <p><span style="font-family: Arial,
> > sans-serif; font-size: 13.3333px;">Aatif Mushtaq (3):</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"> dmaengine: Add support for 2D DMA
> > operation</span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;"> dmaengine: pl330: Add DMAADDH
> > instruction</span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;"> dmaengine: pl330: Add DMA_2D
> > capability</span></p> <p><span style="font-family: Arial, sans-serif;
> > font-size: 13.3333px;"><br></span></p> <p><span style="font-family:
> > Arial, sans-serif; font-size: 13.3333px;"> drivers/dma/pl330.c
> > | 44
> +++++++++++++++++++++++++++++++++++++++</span></p>
> > <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"> include/linux/dmaengine.h | 25
> > ++++++++++++++++++++++</span></p> <p><span style="font-family:
> Arial,
> > sans-serif; font-size: 13.3333px;"> 2 files changed, 69
> > insertions(+)</span></p> <p><span style="font-family: Arial,
> > sans-serif; font-size: 13.3333px;"><br></span></p> <p><span
> > style="font-family: Arial, sans-serif; font-size: 13.3333px;">--
> > </span></p> <p><span style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;">2.17.1</span></p> <p><span style="font-family: Arial,
> > sans-serif; font-size: 13.3333px;"><br></span></p> <p><span
> > style="font-family: Arial, sans-serif; font-size:
> > 13.3333px;"><br></span></p> <table id=bannersignimg
> > data-cui-lock="true" namo_lock><tr><td><div id="cafe-note-contents"
> > style="margin:10px;font-family:Arial;font-size:10pt;"><p> </p></d
> > iv></td></tr></table><table id=confidentialsignimg
> > data-cui-lock="true" namo_lock><tr><td><p><img unselectable="on"
> > data-cui-image="true" style="display: inline-block; border: 0px solid;
> > width: 520px; height: 144px;"
> > src="cid:cafe_image_0@s-core.co.kr"><br></p>
> > </td></tr></table></body>
> > </html><table style='display: none;'><tbody><tr><td><img
> > style='display: none;' border=0
> > src='http://ext.samsung.net/mail/ext/v1/external/status/update?userid=
> >
> aatif4.m&do=bWFpbElEPTIwMjUwMjI0MDg0OTQ4ZXBjbXM1cDU3YWNiMDJl
> NDFiNzYyNj
> >
> MyMWQ4MmM3NDU2OTM2MWJlNSZyZWNpcGllbnRBZGRyZXNzPXZrb3VsQ
> Gtlcm5lbC5vcmc_
> > ' width=0 height=0></td></tr></tbody></table>
>
>
> --
> ~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-27 8:01 ` Vinod Koul
@ 2025-02-28 9:32 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-06 6:35 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-24 7:34 ` Aatif Mushtaq/Aatif Mushtaq
2 siblings, 0 replies; 13+ messages in thread
From: Aatif Mushtaq/Aatif Mushtaq @ 2025-02-28 9:32 UTC (permalink / raw)
To: 'Vinod Koul'; +Cc: dmaengine, linux-kernel, pankaj.dubey, aswani.reddy
> -----Original Message-----
> From: Vinod Koul <vkoul@kernel.org>
> Sent: 27 February 2025 13:32
> To: Aatif Mushtaq <aatif4.m@samsung.com>
> Cc: dmaengine@vger.kernel.org; linux-kernel@vger.kernel.org;
> pankaj.dubey@samsung.com; aswani.reddy@samsung.com
> Subject: Re: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
>
> On 10-02-25, 11:49, Aatif Mushtaq wrote:
> > Add a new dma engine API to support 2D DMA operations.
> > The API will be used to get the descriptor for 2D transfer based on
> > the 16-bit immediate to define the stride length between consecuitive
> > source address or destination address after every DMA load and store
> > instruction is processed.
>
> Why should we define a new API for this...? Why not use the sg or
> interleaved api for this?
>
Thanks for pointing out, interleaved API can be used for this.
I will make the change
> >
> > Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> > ---
> > include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
> > 1 file changed, 25 insertions(+)
> >
> > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> > index b137fdb56093..8a73b2147983 100644
> > --- a/include/linux/dmaengine.h
> > +++ b/include/linux/dmaengine.h
> > @@ -833,6 +833,7 @@ struct dma_filter {
> > * be called after period_len bytes have been transferred.
> > * @device_prep_interleaved_dma: Transfer expression in a generic way.
> > * @device_prep_dma_imm_data: DMA's 8 byte immediate data to the
> dst
> > address
> > + * @device_prep_2d_dma_memcpy: prepares a 2D memcpy operation
> > * @device_caps: May be used to override the generic DMA slave
> capabilities
> > * with per-channel specific ones
> > * @device_config: Pushes a new configuration to a channel, return 0
> > or an error @@ -938,6 +939,9 @@ struct dma_device {
> > struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
> > struct dma_chan *chan, dma_addr_t dst, u64 data,
> > unsigned long flags);
> > + struct dma_async_tx_descriptor
> *(*device_prep_2d_dma_memcpy)(
> > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> > + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags);
> >
> > void (*device_caps)(struct dma_chan *chan, struct dma_slave_caps
> *caps);
> > int (*device_config)(struct dma_chan *chan, struct
> dma_slave_config
> > *config); @@ -1087,6 +1091,27 @@ static inline struct
> dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
> > len, flags);
> > }
> >
> > +/**
> > + * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy
> descriptor.
> > + * @chan: The channel to be used for this descriptor
> > + * @dest: Address of the destination data for a DMA channel
> > + * @src: Address of the source data for a DMA channel
> > + * @len: The total size of data
> > + * @src_imm: The immediate value to be added to the src address
> > +register
> > + * @dest_imm: The immediate value to be added to the dst address
> > +register
> > + * @flags: DMA engine flags
> > + */
> > +static inline struct dma_async_tx_descriptor
> *device_prep_2d_dma_memcpy(
> > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> > + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags)
{
> > + if (!chan || !chan->device || !chan->device-
> >device_prep_2d_dma_memcpy)
> > + return NULL;
> > +
> > + return chan->device->device_prep_2d_dma_memcpy(chan, dest,
> src, len,
> > + src_imm, dest_imm,
> flags); }
> > +
> > static inline bool dmaengine_is_metadata_mode_supported(struct
> dma_chan *chan,
> > enum dma_desc_metadata_mode mode)
> > {
> > --
> > 2.17.1
>
> --
> ~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-27 8:01 ` Vinod Koul
2025-02-28 9:32 ` Aatif Mushtaq/Aatif Mushtaq
@ 2025-03-06 6:35 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-24 7:34 ` Aatif Mushtaq/Aatif Mushtaq
2 siblings, 0 replies; 13+ messages in thread
From: Aatif Mushtaq/Aatif Mushtaq @ 2025-03-06 6:35 UTC (permalink / raw)
To: 'Vinod Koul'; +Cc: dmaengine, linux-kernel, pankaj.dubey, aswani.reddy
> -----Original Message-----
> From: Aatif Mushtaq/Aatif Mushtaq <aatif4.m@samsung.com>
> Sent: 28 February 2025 15:03
> To: 'Vinod Koul' <vkoul@kernel.org>
> Cc: 'dmaengine@vger.kernel.org' <dmaengine@vger.kernel.org>; 'linux-
> kernel@vger.kernel.org' <linux-kernel@vger.kernel.org>;
> 'pankaj.dubey@samsung.com' <pankaj.dubey@samsung.com>;
> 'aswani.reddy@samsung.com' <aswani.reddy@samsung.com>
> Subject: RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
>
>
>
> > -----Original Message-----
> > From: Vinod Koul <vkoul@kernel.org>
> > Sent: 27 February 2025 13:32
> > To: Aatif Mushtaq <aatif4.m@samsung.com>
> > Cc: dmaengine@vger.kernel.org; linux-kernel@vger.kernel.org;
> > pankaj.dubey@samsung.com; aswani.reddy@samsung.com
> > Subject: Re: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
> >
> > On 10-02-25, 11:49, Aatif Mushtaq wrote:
> > > Add a new dma engine API to support 2D DMA operations.
> > > The API will be used to get the descriptor for 2D transfer based on
> > > the 16-bit immediate to define the stride length between
> > > consecuitive source address or destination address after every DMA
> > > load and store instruction is processed.
> >
> > Why should we define a new API for this...? Why not use the sg or
> > interleaved api for this?
> >
>
> Thanks for pointing out, interleaved API can be used for this.
> I will make the change
>
While trying to make the change I realised that sg and interleaved
APIs cannot be used for our use case.
Interleaved API is used to transfer data from non-contiguous
buffer to non-contiguous buffer and sg API is used to transfer
non-contiguous buffer to contiguous buffer but both the APIs work
on multiple data chunks where each chunk has its individual attributes
and there is a tx descriptor for each data chunk.
But in our case we have single tx descriptor to increment the source or
destination after every DMA LOAD and STORE operation till the desired
length of transfer is achieved, which means we don't have multiple data
chunks which is required in case of interleaved and sg.
The use case is to do memory to memory copy but not in a linear way,
such that we can define a gap between each burst.
> > >
> > > Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> > > ---
> > > include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
> > > 1 file changed, 25 insertions(+)
> > >
> > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> > > index b137fdb56093..8a73b2147983 100644
> > > --- a/include/linux/dmaengine.h
> > > +++ b/include/linux/dmaengine.h
> > > @@ -833,6 +833,7 @@ struct dma_filter {
> > > * be called after period_len bytes have been transferred.
> > > * @device_prep_interleaved_dma: Transfer expression in a generic
> way.
> > > * @device_prep_dma_imm_data: DMA's 8 byte immediate data to the
> > dst
> > > address
> > > + * @device_prep_2d_dma_memcpy: prepares a 2D memcpy operation
> > > * @device_caps: May be used to override the generic DMA slave
> > capabilities
> > > * with per-channel specific ones
> > > * @device_config: Pushes a new configuration to a channel, return
> > > 0 or an error @@ -938,6 +939,9 @@ struct dma_device {
> > > struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
> > > struct dma_chan *chan, dma_addr_t dst, u64 data,
> > > unsigned long flags);
> > > + struct dma_async_tx_descriptor
> > *(*device_prep_2d_dma_memcpy)(
> > > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> > > + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags);
> > >
> > > void (*device_caps)(struct dma_chan *chan, struct dma_slave_caps
> > *caps);
> > > int (*device_config)(struct dma_chan *chan, struct
> > dma_slave_config
> > > *config); @@ -1087,6 +1091,27 @@ static inline struct
> > dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
> > > len, flags);
> > > }
> > >
> > > +/**
> > > + * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy
> > descriptor.
> > > + * @chan: The channel to be used for this descriptor
> > > + * @dest: Address of the destination data for a DMA channel
> > > + * @src: Address of the source data for a DMA channel
> > > + * @len: The total size of data
> > > + * @src_imm: The immediate value to be added to the src address
> > > +register
> > > + * @dest_imm: The immediate value to be added to the dst address
> > > +register
> > > + * @flags: DMA engine flags
> > > + */
> > > +static inline struct dma_async_tx_descriptor
> > *device_prep_2d_dma_memcpy(
> > > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t src,
> > > + size_t len, u16 src_imm, u16 dest_imm, unsigned long flags)
{
> > > + if (!chan || !chan->device || !chan->device-
> > >device_prep_2d_dma_memcpy)
> > > + return NULL;
> > > +
> > > + return chan->device->device_prep_2d_dma_memcpy(chan, dest,
> > src, len,
> > > + src_imm, dest_imm,
> > flags); }
> > > +
> > > static inline bool dmaengine_is_metadata_mode_supported(struct
> > dma_chan *chan,
> > > enum dma_desc_metadata_mode mode) {
> > > --
> > > 2.17.1
> >
> > --
> > ~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
2025-02-27 8:01 ` Vinod Koul
2025-02-28 9:32 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-06 6:35 ` Aatif Mushtaq/Aatif Mushtaq
@ 2025-03-24 7:34 ` Aatif Mushtaq/Aatif Mushtaq
2 siblings, 0 replies; 13+ messages in thread
From: Aatif Mushtaq/Aatif Mushtaq @ 2025-03-24 7:34 UTC (permalink / raw)
To: 'Vinod Koul'; +Cc: dmaengine, linux-kernel, pankaj.dubey, aswani.reddy
Hi Vinod,
> -----Original Message-----
> From: Aatif Mushtaq/Aatif Mushtaq <aatif4.m@samsung.com>
> Sent: 06 March 2025 12:06
> To: 'Vinod Koul' <vkoul@kernel.org>
> Cc: 'dmaengine@vger.kernel.org' <dmaengine@vger.kernel.org>; 'linux-
> kernel@vger.kernel.org' <linux-kernel@vger.kernel.org>;
> 'pankaj.dubey@samsung.com' <pankaj.dubey@samsung.com>;
> 'aswani.reddy@samsung.com' <aswani.reddy@samsung.com>
> Subject: RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
>
>
>
> > -----Original Message-----
> > From: Aatif Mushtaq/Aatif Mushtaq <aatif4.m@samsung.com>
> > Sent: 28 February 2025 15:03
> > To: 'Vinod Koul' <vkoul@kernel.org>
> > Cc: 'dmaengine@vger.kernel.org' <dmaengine@vger.kernel.org>; 'linux-
> > kernel@vger.kernel.org' <linux-kernel@vger.kernel.org>;
> > 'pankaj.dubey@samsung.com' <pankaj.dubey@samsung.com>;
> > 'aswani.reddy@samsung.com' <aswani.reddy@samsung.com>
> > Subject: RE: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
> >
> >
> >
> > > -----Original Message-----
> > > From: Vinod Koul <vkoul@kernel.org>
> > > Sent: 27 February 2025 13:32
> > > To: Aatif Mushtaq <aatif4.m@samsung.com>
> > > Cc: dmaengine@vger.kernel.org; linux-kernel@vger.kernel.org;
> > > pankaj.dubey@samsung.com; aswani.reddy@samsung.com
> > > Subject: Re: [PATCH 1/3] dmaengine: Add support for 2D DMA operation
> > >
> > > On 10-02-25, 11:49, Aatif Mushtaq wrote:
> > > > Add a new dma engine API to support 2D DMA operations.
> > > > The API will be used to get the descriptor for 2D transfer based on
> > > > the 16-bit immediate to define the stride length between
> > > > consecuitive source address or destination address after every DMA
> > > > load and store instruction is processed.
> > >
> > > Why should we define a new API for this...? Why not use the sg or
> > > interleaved api for this?
> > >
> >
> > Thanks for pointing out, interleaved API can be used for this.
> > I will make the change
> >
>
> While trying to make the change I realised that sg and interleaved
> APIs cannot be used for our use case.
> Interleaved API is used to transfer data from non-contiguous
> buffer to non-contiguous buffer and sg API is used to transfer
> non-contiguous buffer to contiguous buffer but both the APIs work
> on multiple data chunks where each chunk has its individual attributes
> and there is a tx descriptor for each data chunk.
> But in our case we have single tx descriptor to increment the source or
> destination after every DMA LOAD and STORE operation till the desired
> length of transfer is achieved, which means we don't have multiple data
> chunks which is required in case of interleaved and sg.
> The use case is to do memory to memory copy but not in a linear way,
> such that we can define a gap between each burst.
>
I want to gently remind you to please review my approach.
> > > >
> > > > Signed-off-by: Aatif Mushtaq <aatif4.m@samsung.com>
> > > > ---
> > > > include/linux/dmaengine.h | 25 +++++++++++++++++++++++++
> > > > 1 file changed, 25 insertions(+)
> > > >
> > > > diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h
> > > > index b137fdb56093..8a73b2147983 100644
> > > > --- a/include/linux/dmaengine.h
> > > > +++ b/include/linux/dmaengine.h
> > > > @@ -833,6 +833,7 @@ struct dma_filter {
> > > > * be called after period_len bytes have been transferred.
> > > > * @device_prep_interleaved_dma: Transfer expression in a generic
> > way.
> > > > * @device_prep_dma_imm_data: DMA's 8 byte immediate data to
> the
> > > dst
> > > > address
> > > > + * @device_prep_2d_dma_memcpy: prepares a 2D memcpy
> operation
> > > > * @device_caps: May be used to override the generic DMA slave
> > > capabilities
> > > > * with per-channel specific ones
> > > > * @device_config: Pushes a new configuration to a channel, return
> > > > 0 or an error @@ -938,6 +939,9 @@ struct dma_device {
> > > > struct dma_async_tx_descriptor *(*device_prep_dma_imm_data)(
> > > > struct dma_chan *chan, dma_addr_t dst, u64 data,
> > > > unsigned long flags);
> > > > + struct dma_async_tx_descriptor
> > > *(*device_prep_2d_dma_memcpy)(
> > > > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t
src,
> > > > + size_t len, u16 src_imm, u16 dest_imm, unsigned long
flags);
> > > >
> > > > void (*device_caps)(struct dma_chan *chan, struct
dma_slave_caps
> > > *caps);
> > > > int (*device_config)(struct dma_chan *chan, struct
> > > dma_slave_config
> > > > *config); @@ -1087,6 +1091,27 @@ static inline struct
> > > dma_async_tx_descriptor *dmaengine_prep_dma_memcpy(
> > > > len, flags);
> > > > }
> > > >
> > > > +/**
> > > > + * device_prep_2d_dma_memcpy() - Prepare a DMA 2D memcpy
> > > descriptor.
> > > > + * @chan: The channel to be used for this descriptor
> > > > + * @dest: Address of the destination data for a DMA channel
> > > > + * @src: Address of the source data for a DMA channel
> > > > + * @len: The total size of data
> > > > + * @src_imm: The immediate value to be added to the src address
> > > > +register
> > > > + * @dest_imm: The immediate value to be added to the dst address
> > > > +register
> > > > + * @flags: DMA engine flags
> > > > + */
> > > > +static inline struct dma_async_tx_descriptor
> > > *device_prep_2d_dma_memcpy(
> > > > + struct dma_chan *chan, dma_addr_t dest, dma_addr_t
src,
> > > > + size_t len, u16 src_imm, u16 dest_imm, unsigned long
flags) {
> > > > + if (!chan || !chan->device || !chan->device-
> > > >device_prep_2d_dma_memcpy)
> > > > + return NULL;
> > > > +
> > > > + return chan->device->device_prep_2d_dma_memcpy(chan, dest,
> > > src, len,
> > > > + src_imm,
dest_imm,
> > > flags); }
> > > > +
> > > > static inline bool dmaengine_is_metadata_mode_supported(struct
> > > dma_chan *chan,
> > > > enum dma_desc_metadata_mode mode) {
> > > > --
> > > > 2.17.1
> > >
> > > --
> > > ~Vinod
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2025-03-24 10:22 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20250210062219epcas5p4695fe63e9ba36c19a640504f95dc3f12@epcas5p4.samsung.com>
2025-02-10 6:19 ` [PATCH 0/3] Add capability for 2D DMA transfer Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 1/3] dmaengine: Add support for 2D DMA operation Aatif Mushtaq
2025-02-10 7:50 ` Pankaj Dubey
2025-02-27 8:01 ` Vinod Koul
2025-02-28 9:32 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-06 6:35 ` Aatif Mushtaq/Aatif Mushtaq
2025-03-24 7:34 ` Aatif Mushtaq/Aatif Mushtaq
2025-02-10 6:19 ` [PATCH 2/3] dmaengine: pl330: Add DMAADDH instruction Aatif Mushtaq
2025-02-10 7:53 ` Pankaj Dubey
2025-02-10 6:19 ` [PATCH 3/3] dmaengine: pl330: Add DMA_2D capability Aatif Mushtaq
2025-02-10 7:54 ` Pankaj Dubey
[not found] ` <CGME20250210062219epcas5p4695fe63e9ba36c19a640504f95dc3f12@epcms5p5>
[not found] ` <20250224084948epcms5p57acb02e41b7626321d82c74569361be5@epcms5p5>
2025-02-27 8:00 ` FW: [PATCH 0/3] Add capability for 2D DMA transfer Vinod Koul
2025-02-28 9:28 ` Aatif Mushtaq/Aatif Mushtaq
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).