* [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x
@ 2024-03-20 19:39 Frank Li
2024-03-20 19:39 ` [PATCH 1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro Frank Li
` (4 more replies)
0 siblings, 5 replies; 7+ messages in thread
From: Frank Li @ 2024-03-20 19:39 UTC (permalink / raw)
To: Vinod Koul; +Cc: dmaengine, linux-kernel, imx, Frank Li
First do some clear up. Remove unused macro and function
Then update DPMAI API to support MC firmware 10.1x.x
To: Vinod Koul <vkoul@kernel.org>
Cc: dmaengine@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: imx@lists.linux.dev
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
Frank Li (4):
dmaengine: fsl-dpaa2-qdma: clean up unused macro
dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create()
dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open
dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c | 14 ++--
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h | 5 +-
drivers/dma/fsl-dpaa2-qdma/dpdmai.c | 113 +++++++++++++-------------------
drivers/dma/fsl-dpaa2-qdma/dpdmai.h | 46 ++++++-------
4 files changed, 77 insertions(+), 101 deletions(-)
---
base-commit: f4385d26e50bac22f8dba08727e9a32a0ab6b9ea
change-id: 20240320-dpaa2-0d861c2756de
Best regards,
---
Frank Li <Frank.Li@nxp.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
@ 2024-03-20 19:39 ` Frank Li
2024-03-20 19:39 ` [PATCH 2/4] dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create() Frank Li
` (3 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2024-03-20 19:39 UTC (permalink / raw)
To: Vinod Koul; +Cc: dmaengine, linux-kernel, imx, Frank Li
Remove unused macro definition.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/dma/fsl-dpaa2-qdma/dpdmai.h | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
index b13b9bf0c003e..2749608575f0d 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
@@ -26,15 +26,6 @@
#define DPDMAI_CMDID_RESET DPDMAI_CMDID_FORMAT(0x005)
#define DPDMAI_CMDID_IS_ENABLED DPDMAI_CMDID_FORMAT(0x006)
-#define DPDMAI_CMDID_SET_IRQ DPDMAI_CMDID_FORMAT(0x010)
-#define DPDMAI_CMDID_GET_IRQ DPDMAI_CMDID_FORMAT(0x011)
-#define DPDMAI_CMDID_SET_IRQ_ENABLE DPDMAI_CMDID_FORMAT(0x012)
-#define DPDMAI_CMDID_GET_IRQ_ENABLE DPDMAI_CMDID_FORMAT(0x013)
-#define DPDMAI_CMDID_SET_IRQ_MASK DPDMAI_CMDID_FORMAT(0x014)
-#define DPDMAI_CMDID_GET_IRQ_MASK DPDMAI_CMDID_FORMAT(0x015)
-#define DPDMAI_CMDID_GET_IRQ_STATUS DPDMAI_CMDID_FORMAT(0x016)
-#define DPDMAI_CMDID_CLEAR_IRQ_STATUS DPDMAI_CMDID_FORMAT(0x017)
-
#define DPDMAI_CMDID_SET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A0)
#define DPDMAI_CMDID_GET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A1)
#define DPDMAI_CMDID_GET_TX_QUEUE DPDMAI_CMDID_FORMAT(0x1A2)
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/4] dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create()
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
2024-03-20 19:39 ` [PATCH 1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro Frank Li
@ 2024-03-20 19:39 ` Frank Li
2024-03-20 19:39 ` [PATCH 3/4] dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open Frank Li
` (2 subsequent siblings)
4 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2024-03-20 19:39 UTC (permalink / raw)
To: Vinod Koul; +Cc: dmaengine, linux-kernel, imx, Frank Li
Remove unused function dpdmai_create();
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/dma/fsl-dpaa2-qdma/dpdmai.c | 54 -------------------------------------
drivers/dma/fsl-dpaa2-qdma/dpdmai.h | 2 --
2 files changed, 56 deletions(-)
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
index 878662aaa1c2f..66a3953f0e3b1 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
@@ -33,16 +33,6 @@ struct dpdmai_rsp_get_tx_queue {
__le32 fqid;
};
-#define MC_CMD_OP(_cmd, _param, _offset, _width, _type, _arg) \
- ((_cmd).params[_param] |= mc_enc((_offset), (_width), _arg))
-
-/* cmd, param, offset, width, type, arg_name */
-#define DPDMAI_CMD_CREATE(cmd, cfg) \
-do { \
- MC_CMD_OP(cmd, 0, 8, 8, u8, (cfg)->priorities[0]);\
- MC_CMD_OP(cmd, 0, 16, 8, u8, (cfg)->priorities[1]);\
-} while (0)
-
static inline u64 mc_enc(int lsoffset, int width, u64 val)
{
return (val & MAKE_UMASK64(width)) << lsoffset;
@@ -115,50 +105,6 @@ int dpdmai_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
}
EXPORT_SYMBOL_GPL(dpdmai_close);
-/**
- * dpdmai_create() - Create the DPDMAI object
- * @mc_io: Pointer to MC portal's I/O object
- * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
- * @cfg: Configuration structure
- * @token: Returned token; use in subsequent API calls
- *
- * Create the DPDMAI object, allocate required resources and
- * perform required initialization.
- *
- * The object can be created either by declaring it in the
- * DPL file, or by calling this function.
- *
- * This function returns a unique authentication token,
- * associated with the specific object ID and the specific MC
- * portal; this token must be used in all subsequent calls to
- * this specific object. For objects that are created using the
- * DPL file, call dpdmai_open() function to get an authentication
- * token first.
- *
- * Return: '0' on Success; Error code otherwise.
- */
-int dpdmai_create(struct fsl_mc_io *mc_io, u32 cmd_flags,
- const struct dpdmai_cfg *cfg, u16 *token)
-{
- struct fsl_mc_command cmd = { 0 };
- int err;
-
- /* prepare command */
- cmd.header = mc_encode_cmd_header(DPDMAI_CMDID_CREATE,
- cmd_flags, 0);
- DPDMAI_CMD_CREATE(cmd, cfg);
-
- /* send command to mc*/
- err = mc_send_command(mc_io, &cmd);
- if (err)
- return err;
-
- /* retrieve response parameters */
- *token = mc_cmd_hdr_read_token(&cmd);
-
- return 0;
-}
-
/**
* dpdmai_destroy() - Destroy the DPDMAI object and release all its resources.
* @mc_io: Pointer to MC portal's I/O object
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
index 2749608575f0d..3f2db582509a1 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
@@ -153,8 +153,6 @@ int dpdmai_open(struct fsl_mc_io *mc_io, u32 cmd_flags,
int dpdmai_id, u16 *token);
int dpdmai_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
-int dpdmai_create(struct fsl_mc_io *mc_io, u32 cmd_flags,
- const struct dpdmai_cfg *cfg, u16 *token);
int dpdmai_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/4] dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
2024-03-20 19:39 ` [PATCH 1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro Frank Li
2024-03-20 19:39 ` [PATCH 2/4] dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create() Frank Li
@ 2024-03-20 19:39 ` Frank Li
2024-03-20 19:39 ` [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3 Frank Li
2024-04-07 16:39 ` (subset) [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Vinod Koul
4 siblings, 0 replies; 7+ messages in thread
From: Frank Li @ 2024-03-20 19:39 UTC (permalink / raw)
To: Vinod Koul; +Cc: dmaengine, linux-kernel, imx, Frank Li
Introduce the structures dpdmai_cmd_open to maintain consistency within the
API calls of the driver.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/dma/fsl-dpaa2-qdma/dpdmai.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
index 66a3953f0e3b1..610f6231835a8 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
@@ -33,6 +33,10 @@ struct dpdmai_rsp_get_tx_queue {
__le32 fqid;
};
+struct dpdmai_cmd_open {
+ __le32 dpdmai_id;
+} __packed;
+
static inline u64 mc_enc(int lsoffset, int width, u64 val)
{
return (val & MAKE_UMASK64(width)) << lsoffset;
@@ -58,16 +62,16 @@ static inline u64 mc_enc(int lsoffset, int width, u64 val)
int dpdmai_open(struct fsl_mc_io *mc_io, u32 cmd_flags,
int dpdmai_id, u16 *token)
{
+ struct dpdmai_cmd_open *cmd_params;
struct fsl_mc_command cmd = { 0 };
- __le64 *cmd_dpdmai_id;
int err;
/* prepare command */
cmd.header = mc_encode_cmd_header(DPDMAI_CMDID_OPEN,
cmd_flags, 0);
- cmd_dpdmai_id = cmd.params;
- *cmd_dpdmai_id = cpu_to_le32(dpdmai_id);
+ cmd_params = (struct dpdmai_cmd_open *)&cmd.params;
+ cmd_params->dpdmai_id = cpu_to_le32(dpdmai_id);
/* send command to mc*/
err = mc_send_command(mc_io, &cmd);
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
` (2 preceding siblings ...)
2024-03-20 19:39 ` [PATCH 3/4] dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open Frank Li
@ 2024-03-20 19:39 ` Frank Li
2024-04-07 12:22 ` Vinod Koul
2024-04-07 16:39 ` (subset) [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Vinod Koul
4 siblings, 1 reply; 7+ messages in thread
From: Frank Li @ 2024-03-20 19:39 UTC (permalink / raw)
To: Vinod Koul; +Cc: dmaengine, linux-kernel, imx, Frank Li
Update the DPDMAI interfaces to support MC firmware up to 10.1x.x.
Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c | 14 ++++-----
drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h | 5 ++--
drivers/dma/fsl-dpaa2-qdma/dpdmai.c | 53 ++++++++++++++++++++++++---------
drivers/dma/fsl-dpaa2-qdma/dpdmai.h | 35 ++++++++++++++--------
4 files changed, 72 insertions(+), 35 deletions(-)
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
index 5a8061a307cda..36384d0192636 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
+++ b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
@@ -362,7 +362,7 @@ static int __cold dpaa2_qdma_setup(struct fsl_mc_device *ls_dev)
for (i = 0; i < priv->num_pairs; i++) {
err = dpdmai_get_rx_queue(priv->mc_io, 0, ls_dev->mc_handle,
- i, &priv->rx_queue_attr[i]);
+ i, 0, &priv->rx_queue_attr[i]);
if (err) {
dev_err(dev, "dpdmai_get_rx_queue() failed\n");
goto exit;
@@ -370,13 +370,13 @@ static int __cold dpaa2_qdma_setup(struct fsl_mc_device *ls_dev)
ppriv->rsp_fqid = priv->rx_queue_attr[i].fqid;
err = dpdmai_get_tx_queue(priv->mc_io, 0, ls_dev->mc_handle,
- i, &priv->tx_fqid[i]);
+ i, 0, &priv->tx_queue_attr[i]);
if (err) {
dev_err(dev, "dpdmai_get_tx_queue() failed\n");
goto exit;
}
- ppriv->req_fqid = priv->tx_fqid[i];
- ppriv->prio = i;
+ ppriv->req_fqid = priv->tx_queue_attr[i].fqid;
+ ppriv->prio = DPAA2_QDMA_DEFAULT_PRIORITY;
ppriv->priv = priv;
ppriv++;
}
@@ -542,7 +542,7 @@ static int __cold dpaa2_dpdmai_bind(struct dpaa2_qdma_priv *priv)
rx_queue_cfg.dest_cfg.dest_id = ppriv->nctx.dpio_id;
rx_queue_cfg.dest_cfg.priority = ppriv->prio;
err = dpdmai_set_rx_queue(priv->mc_io, 0, ls_dev->mc_handle,
- rx_queue_cfg.dest_cfg.priority,
+ rx_queue_cfg.dest_cfg.priority, 0,
&rx_queue_cfg);
if (err) {
dev_err(dev, "dpdmai_set_rx_queue() failed\n");
@@ -642,7 +642,7 @@ static int dpaa2_dpdmai_init_channels(struct dpaa2_qdma_engine *dpaa2_qdma)
for (i = 0; i < dpaa2_qdma->n_chans; i++) {
dpaa2_chan = &dpaa2_qdma->chans[i];
dpaa2_chan->qdma = dpaa2_qdma;
- dpaa2_chan->fqid = priv->tx_fqid[i % num];
+ dpaa2_chan->fqid = priv->tx_queue_attr[i % num].fqid;
dpaa2_chan->vchan.desc_free = dpaa2_qdma_free_desc;
vchan_init(&dpaa2_chan->vchan, &dpaa2_qdma->dma_dev);
spin_lock_init(&dpaa2_chan->queue_lock);
@@ -802,7 +802,7 @@ static void dpaa2_qdma_shutdown(struct fsl_mc_device *ls_dev)
dpdmai_disable(priv->mc_io, 0, ls_dev->mc_handle);
dpaa2_dpdmai_dpio_unbind(priv);
dpdmai_close(priv->mc_io, 0, ls_dev->mc_handle);
- dpdmai_destroy(priv->mc_io, 0, ls_dev->mc_handle);
+ dpdmai_destroy(priv->mc_io, 0, priv->dpqdma_id, ls_dev->mc_handle);
}
static const struct fsl_mc_device_id dpaa2_qdma_id_table[] = {
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
index 03e2f4e0baca8..2c80077cb7c0a 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
+++ b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
@@ -6,6 +6,7 @@
#define DPAA2_QDMA_STORE_SIZE 16
#define NUM_CH 8
+#define DPAA2_QDMA_DEFAULT_PRIORITY 0
struct dpaa2_qdma_sd_d {
u32 rsv:32;
@@ -122,8 +123,8 @@ struct dpaa2_qdma_priv {
struct dpaa2_qdma_engine *dpaa2_qdma;
struct dpaa2_qdma_priv_per_prio *ppriv;
- struct dpdmai_rx_queue_attr rx_queue_attr[DPDMAI_PRIO_NUM];
- u32 tx_fqid[DPDMAI_PRIO_NUM];
+ struct dpdmai_rx_queue_attr rx_queue_attr[DPDMAI_MAX_QUEUE_NUM];
+ struct dpdmai_tx_queue_attr tx_queue_attr[DPDMAI_MAX_QUEUE_NUM];
};
struct dpaa2_qdma_priv_per_prio {
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
index 610f6231835a8..7fbe925831b8b 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
@@ -1,42 +1,58 @@
// SPDX-License-Identifier: GPL-2.0
// Copyright 2019 NXP
+#include <linux/bitfield.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/io.h>
#include <linux/fsl/mc.h>
#include "dpdmai.h"
+#define DEST_TYPE_MASK 0xF
+
struct dpdmai_rsp_get_attributes {
__le32 id;
u8 num_of_priorities;
- u8 pad0[3];
+ u8 num_of_queues;
+ u8 pad0[2];
__le16 major;
__le16 minor;
};
struct dpdmai_cmd_queue {
__le32 dest_id;
- u8 priority;
- u8 queue;
+ u8 dest_priority;
+ union {
+ u8 queue;
+ u8 pri;
+ };
u8 dest_type;
- u8 pad;
+ u8 queue_idx;
__le64 user_ctx;
union {
__le32 options;
__le32 fqid;
};
-};
+} __packed;
struct dpdmai_rsp_get_tx_queue {
__le64 pad;
__le32 fqid;
};
+struct dpdmai_rsp_is_enabled {
+ /* only the LSB bit */
+ u8 en;
+} __packed;
+
struct dpdmai_cmd_open {
__le32 dpdmai_id;
} __packed;
+struct dpdmai_cmd_destroy {
+ __le32 dpdmai_id;
+} __packed;
+
static inline u64 mc_enc(int lsoffset, int width, u64 val)
{
return (val & MAKE_UMASK64(width)) << lsoffset;
@@ -113,18 +129,23 @@ EXPORT_SYMBOL_GPL(dpdmai_close);
* dpdmai_destroy() - Destroy the DPDMAI object and release all its resources.
* @mc_io: Pointer to MC portal's I/O object
* @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
+ * @dpdmai_id: The object id; it must be a valid id within the container that created this object;
* @token: Token of DPDMAI object
*
* Return: '0' on Success; error code otherwise.
*/
-int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
+int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u32 dpdmai_id, u16 token)
{
+ struct dpdmai_cmd_destroy *cmd_params;
struct fsl_mc_command cmd = { 0 };
/* prepare command */
cmd.header = mc_encode_cmd_header(DPDMAI_CMDID_DESTROY,
cmd_flags, token);
+ cmd_params = (struct dpdmai_cmd_destroy *)&cmd.params;
+ cmd_params->dpdmai_id = cpu_to_le32(dpdmai_id);
+
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
}
@@ -224,6 +245,7 @@ int dpdmai_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags,
attr->version.major = le16_to_cpu(rsp_params->major);
attr->version.minor = le16_to_cpu(rsp_params->minor);
attr->num_of_priorities = rsp_params->num_of_priorities;
+ attr->num_of_queues = rsp_params->num_of_queues;
return 0;
}
@@ -240,7 +262,7 @@ EXPORT_SYMBOL_GPL(dpdmai_get_attributes);
*
* Return: '0' on Success; Error code otherwise.
*/
-int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
+int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u8 queue_idx,
u8 priority, const struct dpdmai_rx_queue_cfg *cfg)
{
struct dpdmai_cmd_queue *cmd_params;
@@ -252,11 +274,12 @@ int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
cmd_params->dest_id = cpu_to_le32(cfg->dest_cfg.dest_id);
- cmd_params->priority = cfg->dest_cfg.priority;
- cmd_params->queue = priority;
+ cmd_params->dest_priority = cfg->dest_cfg.priority;
+ cmd_params->pri = priority;
cmd_params->dest_type = cfg->dest_cfg.dest_type;
cmd_params->user_ctx = cpu_to_le64(cfg->user_ctx);
cmd_params->options = cpu_to_le32(cfg->options);
+ cmd_params->queue_idx = queue_idx;
/* send command to mc*/
return mc_send_command(mc_io, &cmd);
@@ -274,7 +297,7 @@ EXPORT_SYMBOL_GPL(dpdmai_set_rx_queue);
*
* Return: '0' on Success; Error code otherwise.
*/
-int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
+int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u8 queue_idx,
u8 priority, struct dpdmai_rx_queue_attr *attr)
{
struct dpdmai_cmd_queue *cmd_params;
@@ -287,6 +310,7 @@ int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
cmd_params->queue = priority;
+ cmd_params->queue_idx = queue_idx;
/* send command to mc*/
err = mc_send_command(mc_io, &cmd);
@@ -295,8 +319,8 @@ int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
/* retrieve response parameters */
attr->dest_cfg.dest_id = le32_to_cpu(cmd_params->dest_id);
- attr->dest_cfg.priority = cmd_params->priority;
- attr->dest_cfg.dest_type = cmd_params->dest_type;
+ attr->dest_cfg.priority = cmd_params->dest_priority;
+ attr->dest_cfg.dest_type = FIELD_GET(DEST_TYPE_MASK, cmd_params->dest_type);
attr->user_ctx = le64_to_cpu(cmd_params->user_ctx);
attr->fqid = le32_to_cpu(cmd_params->fqid);
@@ -316,7 +340,7 @@ EXPORT_SYMBOL_GPL(dpdmai_get_rx_queue);
* Return: '0' on Success; Error code otherwise.
*/
int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
- u16 token, u8 priority, u32 *fqid)
+ u16 token, u8 queue_idx, u8 priority, struct dpdmai_tx_queue_attr *attr)
{
struct dpdmai_rsp_get_tx_queue *rsp_params;
struct dpdmai_cmd_queue *cmd_params;
@@ -329,6 +353,7 @@ int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
cmd_params->queue = priority;
+ cmd_params->queue_idx = queue_idx;
/* send command to mc*/
err = mc_send_command(mc_io, &cmd);
@@ -338,7 +363,7 @@ int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
/* retrieve response parameters */
rsp_params = (struct dpdmai_rsp_get_tx_queue *)cmd.params;
- *fqid = le32_to_cpu(rsp_params->fqid);
+ attr->fqid = le32_to_cpu(rsp_params->fqid);
return 0;
}
diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
index 3f2db582509a1..1efca2a305334 100644
--- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
+++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
@@ -5,14 +5,19 @@
#define __FSL_DPDMAI_H
/* DPDMAI Version */
-#define DPDMAI_VER_MAJOR 2
-#define DPDMAI_VER_MINOR 2
+#define DPDMAI_VER_MAJOR 3
+#define DPDMAI_VER_MINOR 3
-#define DPDMAI_CMD_BASE_VERSION 0
+#define DPDMAI_CMD_BASE_VERSION 1
#define DPDMAI_CMD_ID_OFFSET 4
-#define DPDMAI_CMDID_FORMAT(x) (((x) << DPDMAI_CMD_ID_OFFSET) | \
- DPDMAI_CMD_BASE_VERSION)
+/*
+ * Maximum number of Tx/Rx queues per DPDMAI object
+ */
+#define DPDMAI_MAX_QUEUE_NUM 8
+
+#define DPDMAI_CMDID_FORMAT_V(x, v) (((x) << DPDMAI_CMD_ID_OFFSET) | (v))
+#define DPDMAI_CMDID_FORMAT(x) DPDMAI_CMDID_FORMAT_V(x, DPDMAI_CMD_BASE_VERSION)
/* Command IDs */
#define DPDMAI_CMDID_CLOSE DPDMAI_CMDID_FORMAT(0x800)
@@ -26,9 +31,9 @@
#define DPDMAI_CMDID_RESET DPDMAI_CMDID_FORMAT(0x005)
#define DPDMAI_CMDID_IS_ENABLED DPDMAI_CMDID_FORMAT(0x006)
-#define DPDMAI_CMDID_SET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A0)
-#define DPDMAI_CMDID_GET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A1)
-#define DPDMAI_CMDID_GET_TX_QUEUE DPDMAI_CMDID_FORMAT(0x1A2)
+#define DPDMAI_CMDID_SET_RX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A0, 2)
+#define DPDMAI_CMDID_GET_RX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A1, 2)
+#define DPDMAI_CMDID_GET_TX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A2, 2)
#define MC_CMD_HDR_TOKEN_O 32 /* Token field offset */
#define MC_CMD_HDR_TOKEN_S 16 /* Token field size */
@@ -64,6 +69,7 @@
* should be configured with 0
*/
struct dpdmai_cfg {
+ u8 num_queues;
u8 priorities[DPDMAI_PRIO_NUM];
};
@@ -85,6 +91,7 @@ struct dpdmai_attr {
u16 minor;
} version;
u8 num_of_priorities;
+ u8 num_of_queues;
};
/**
@@ -149,20 +156,24 @@ struct dpdmai_rx_queue_attr {
u32 fqid;
};
+struct dpdmai_tx_queue_attr {
+ u32 fqid;
+};
+
int dpdmai_open(struct fsl_mc_io *mc_io, u32 cmd_flags,
int dpdmai_id, u16 *token);
int dpdmai_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
-int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
+int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u32 dpdmai_id, u16 token);
int dpdmai_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
int dpdmai_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags,
u16 token, struct dpdmai_attr *attr);
int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
- u8 priority, const struct dpdmai_rx_queue_cfg *cfg);
+ u8 queue_idx, u8 priority, const struct dpdmai_rx_queue_cfg *cfg);
int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
- u8 priority, struct dpdmai_rx_queue_attr *attr);
+ u8 queue_idx, u8 priority, struct dpdmai_rx_queue_attr *attr);
int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
- u16 token, u8 priority, u32 *fqid);
+ u16 token, u8 queue_idx, u8 priority, struct dpdmai_tx_queue_attr *attr);
#endif /* __FSL_DPDMAI_H */
--
2.34.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3
2024-03-20 19:39 ` [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3 Frank Li
@ 2024-04-07 12:22 ` Vinod Koul
0 siblings, 0 replies; 7+ messages in thread
From: Vinod Koul @ 2024-04-07 12:22 UTC (permalink / raw)
To: Frank Li; +Cc: dmaengine, linux-kernel, imx
On 20-03-24, 15:39, Frank Li wrote:
> Update the DPDMAI interfaces to support MC firmware up to 10.1x.x.
and what are these changes? Pls add them to log here...
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
> drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c | 14 ++++-----
> drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h | 5 ++--
> drivers/dma/fsl-dpaa2-qdma/dpdmai.c | 53 ++++++++++++++++++++++++---------
> drivers/dma/fsl-dpaa2-qdma/dpdmai.h | 35 ++++++++++++++--------
> 4 files changed, 72 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
> index 5a8061a307cda..36384d0192636 100644
> --- a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
> +++ b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.c
> @@ -362,7 +362,7 @@ static int __cold dpaa2_qdma_setup(struct fsl_mc_device *ls_dev)
>
> for (i = 0; i < priv->num_pairs; i++) {
> err = dpdmai_get_rx_queue(priv->mc_io, 0, ls_dev->mc_handle,
> - i, &priv->rx_queue_attr[i]);
> + i, 0, &priv->rx_queue_attr[i]);
> if (err) {
> dev_err(dev, "dpdmai_get_rx_queue() failed\n");
> goto exit;
> @@ -370,13 +370,13 @@ static int __cold dpaa2_qdma_setup(struct fsl_mc_device *ls_dev)
> ppriv->rsp_fqid = priv->rx_queue_attr[i].fqid;
>
> err = dpdmai_get_tx_queue(priv->mc_io, 0, ls_dev->mc_handle,
> - i, &priv->tx_fqid[i]);
> + i, 0, &priv->tx_queue_attr[i]);
> if (err) {
> dev_err(dev, "dpdmai_get_tx_queue() failed\n");
> goto exit;
> }
> - ppriv->req_fqid = priv->tx_fqid[i];
> - ppriv->prio = i;
> + ppriv->req_fqid = priv->tx_queue_attr[i].fqid;
> + ppriv->prio = DPAA2_QDMA_DEFAULT_PRIORITY;
> ppriv->priv = priv;
> ppriv++;
> }
> @@ -542,7 +542,7 @@ static int __cold dpaa2_dpdmai_bind(struct dpaa2_qdma_priv *priv)
> rx_queue_cfg.dest_cfg.dest_id = ppriv->nctx.dpio_id;
> rx_queue_cfg.dest_cfg.priority = ppriv->prio;
> err = dpdmai_set_rx_queue(priv->mc_io, 0, ls_dev->mc_handle,
> - rx_queue_cfg.dest_cfg.priority,
> + rx_queue_cfg.dest_cfg.priority, 0,
> &rx_queue_cfg);
> if (err) {
> dev_err(dev, "dpdmai_set_rx_queue() failed\n");
> @@ -642,7 +642,7 @@ static int dpaa2_dpdmai_init_channels(struct dpaa2_qdma_engine *dpaa2_qdma)
> for (i = 0; i < dpaa2_qdma->n_chans; i++) {
> dpaa2_chan = &dpaa2_qdma->chans[i];
> dpaa2_chan->qdma = dpaa2_qdma;
> - dpaa2_chan->fqid = priv->tx_fqid[i % num];
> + dpaa2_chan->fqid = priv->tx_queue_attr[i % num].fqid;
> dpaa2_chan->vchan.desc_free = dpaa2_qdma_free_desc;
> vchan_init(&dpaa2_chan->vchan, &dpaa2_qdma->dma_dev);
> spin_lock_init(&dpaa2_chan->queue_lock);
> @@ -802,7 +802,7 @@ static void dpaa2_qdma_shutdown(struct fsl_mc_device *ls_dev)
> dpdmai_disable(priv->mc_io, 0, ls_dev->mc_handle);
> dpaa2_dpdmai_dpio_unbind(priv);
> dpdmai_close(priv->mc_io, 0, ls_dev->mc_handle);
> - dpdmai_destroy(priv->mc_io, 0, ls_dev->mc_handle);
> + dpdmai_destroy(priv->mc_io, 0, priv->dpqdma_id, ls_dev->mc_handle);
> }
>
> static const struct fsl_mc_device_id dpaa2_qdma_id_table[] = {
> diff --git a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
> index 03e2f4e0baca8..2c80077cb7c0a 100644
> --- a/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
> +++ b/drivers/dma/fsl-dpaa2-qdma/dpaa2-qdma.h
> @@ -6,6 +6,7 @@
>
> #define DPAA2_QDMA_STORE_SIZE 16
> #define NUM_CH 8
> +#define DPAA2_QDMA_DEFAULT_PRIORITY 0
>
> struct dpaa2_qdma_sd_d {
> u32 rsv:32;
> @@ -122,8 +123,8 @@ struct dpaa2_qdma_priv {
> struct dpaa2_qdma_engine *dpaa2_qdma;
> struct dpaa2_qdma_priv_per_prio *ppriv;
>
> - struct dpdmai_rx_queue_attr rx_queue_attr[DPDMAI_PRIO_NUM];
> - u32 tx_fqid[DPDMAI_PRIO_NUM];
> + struct dpdmai_rx_queue_attr rx_queue_attr[DPDMAI_MAX_QUEUE_NUM];
> + struct dpdmai_tx_queue_attr tx_queue_attr[DPDMAI_MAX_QUEUE_NUM];
> };
>
> struct dpaa2_qdma_priv_per_prio {
> diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
> index 610f6231835a8..7fbe925831b8b 100644
> --- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
> +++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.c
> @@ -1,42 +1,58 @@
> // SPDX-License-Identifier: GPL-2.0
> // Copyright 2019 NXP
>
> +#include <linux/bitfield.h>
> #include <linux/module.h>
> #include <linux/types.h>
> #include <linux/io.h>
> #include <linux/fsl/mc.h>
> #include "dpdmai.h"
>
> +#define DEST_TYPE_MASK 0xF
> +
> struct dpdmai_rsp_get_attributes {
> __le32 id;
> u8 num_of_priorities;
> - u8 pad0[3];
> + u8 num_of_queues;
> + u8 pad0[2];
> __le16 major;
> __le16 minor;
> };
>
> struct dpdmai_cmd_queue {
> __le32 dest_id;
> - u8 priority;
> - u8 queue;
> + u8 dest_priority;
> + union {
> + u8 queue;
> + u8 pri;
> + };
> u8 dest_type;
> - u8 pad;
> + u8 queue_idx;
> __le64 user_ctx;
> union {
> __le32 options;
> __le32 fqid;
> };
> -};
> +} __packed;
>
> struct dpdmai_rsp_get_tx_queue {
> __le64 pad;
> __le32 fqid;
> };
>
> +struct dpdmai_rsp_is_enabled {
> + /* only the LSB bit */
> + u8 en;
> +} __packed;
> +
> struct dpdmai_cmd_open {
> __le32 dpdmai_id;
> } __packed;
>
> +struct dpdmai_cmd_destroy {
> + __le32 dpdmai_id;
> +} __packed;
> +
> static inline u64 mc_enc(int lsoffset, int width, u64 val)
> {
> return (val & MAKE_UMASK64(width)) << lsoffset;
> @@ -113,18 +129,23 @@ EXPORT_SYMBOL_GPL(dpdmai_close);
> * dpdmai_destroy() - Destroy the DPDMAI object and release all its resources.
> * @mc_io: Pointer to MC portal's I/O object
> * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_'
> + * @dpdmai_id: The object id; it must be a valid id within the container that created this object;
> * @token: Token of DPDMAI object
> *
> * Return: '0' on Success; error code otherwise.
> */
> -int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token)
> +int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u32 dpdmai_id, u16 token)
> {
> + struct dpdmai_cmd_destroy *cmd_params;
> struct fsl_mc_command cmd = { 0 };
>
> /* prepare command */
> cmd.header = mc_encode_cmd_header(DPDMAI_CMDID_DESTROY,
> cmd_flags, token);
>
> + cmd_params = (struct dpdmai_cmd_destroy *)&cmd.params;
> + cmd_params->dpdmai_id = cpu_to_le32(dpdmai_id);
> +
> /* send command to mc*/
> return mc_send_command(mc_io, &cmd);
> }
> @@ -224,6 +245,7 @@ int dpdmai_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags,
> attr->version.major = le16_to_cpu(rsp_params->major);
> attr->version.minor = le16_to_cpu(rsp_params->minor);
> attr->num_of_priorities = rsp_params->num_of_priorities;
> + attr->num_of_queues = rsp_params->num_of_queues;
>
> return 0;
> }
> @@ -240,7 +262,7 @@ EXPORT_SYMBOL_GPL(dpdmai_get_attributes);
> *
> * Return: '0' on Success; Error code otherwise.
> */
> -int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
> +int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u8 queue_idx,
> u8 priority, const struct dpdmai_rx_queue_cfg *cfg)
> {
> struct dpdmai_cmd_queue *cmd_params;
> @@ -252,11 +274,12 @@ int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
>
> cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
> cmd_params->dest_id = cpu_to_le32(cfg->dest_cfg.dest_id);
> - cmd_params->priority = cfg->dest_cfg.priority;
> - cmd_params->queue = priority;
> + cmd_params->dest_priority = cfg->dest_cfg.priority;
> + cmd_params->pri = priority;
> cmd_params->dest_type = cfg->dest_cfg.dest_type;
> cmd_params->user_ctx = cpu_to_le64(cfg->user_ctx);
> cmd_params->options = cpu_to_le32(cfg->options);
> + cmd_params->queue_idx = queue_idx;
>
> /* send command to mc*/
> return mc_send_command(mc_io, &cmd);
> @@ -274,7 +297,7 @@ EXPORT_SYMBOL_GPL(dpdmai_set_rx_queue);
> *
> * Return: '0' on Success; Error code otherwise.
> */
> -int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
> +int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token, u8 queue_idx,
> u8 priority, struct dpdmai_rx_queue_attr *attr)
> {
> struct dpdmai_cmd_queue *cmd_params;
> @@ -287,6 +310,7 @@ int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
>
> cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
> cmd_params->queue = priority;
> + cmd_params->queue_idx = queue_idx;
>
> /* send command to mc*/
> err = mc_send_command(mc_io, &cmd);
> @@ -295,8 +319,8 @@ int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
>
> /* retrieve response parameters */
> attr->dest_cfg.dest_id = le32_to_cpu(cmd_params->dest_id);
> - attr->dest_cfg.priority = cmd_params->priority;
> - attr->dest_cfg.dest_type = cmd_params->dest_type;
> + attr->dest_cfg.priority = cmd_params->dest_priority;
> + attr->dest_cfg.dest_type = FIELD_GET(DEST_TYPE_MASK, cmd_params->dest_type);
> attr->user_ctx = le64_to_cpu(cmd_params->user_ctx);
> attr->fqid = le32_to_cpu(cmd_params->fqid);
>
> @@ -316,7 +340,7 @@ EXPORT_SYMBOL_GPL(dpdmai_get_rx_queue);
> * Return: '0' on Success; Error code otherwise.
> */
> int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
> - u16 token, u8 priority, u32 *fqid)
> + u16 token, u8 queue_idx, u8 priority, struct dpdmai_tx_queue_attr *attr)
> {
> struct dpdmai_rsp_get_tx_queue *rsp_params;
> struct dpdmai_cmd_queue *cmd_params;
> @@ -329,6 +353,7 @@ int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
>
> cmd_params = (struct dpdmai_cmd_queue *)cmd.params;
> cmd_params->queue = priority;
> + cmd_params->queue_idx = queue_idx;
>
> /* send command to mc*/
> err = mc_send_command(mc_io, &cmd);
> @@ -338,7 +363,7 @@ int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
> /* retrieve response parameters */
>
> rsp_params = (struct dpdmai_rsp_get_tx_queue *)cmd.params;
> - *fqid = le32_to_cpu(rsp_params->fqid);
> + attr->fqid = le32_to_cpu(rsp_params->fqid);
>
> return 0;
> }
> diff --git a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
> index 3f2db582509a1..1efca2a305334 100644
> --- a/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
> +++ b/drivers/dma/fsl-dpaa2-qdma/dpdmai.h
> @@ -5,14 +5,19 @@
> #define __FSL_DPDMAI_H
>
> /* DPDMAI Version */
> -#define DPDMAI_VER_MAJOR 2
> -#define DPDMAI_VER_MINOR 2
> +#define DPDMAI_VER_MAJOR 3
> +#define DPDMAI_VER_MINOR 3
>
> -#define DPDMAI_CMD_BASE_VERSION 0
> +#define DPDMAI_CMD_BASE_VERSION 1
> #define DPDMAI_CMD_ID_OFFSET 4
>
> -#define DPDMAI_CMDID_FORMAT(x) (((x) << DPDMAI_CMD_ID_OFFSET) | \
> - DPDMAI_CMD_BASE_VERSION)
> +/*
> + * Maximum number of Tx/Rx queues per DPDMAI object
> + */
> +#define DPDMAI_MAX_QUEUE_NUM 8
> +
> +#define DPDMAI_CMDID_FORMAT_V(x, v) (((x) << DPDMAI_CMD_ID_OFFSET) | (v))
> +#define DPDMAI_CMDID_FORMAT(x) DPDMAI_CMDID_FORMAT_V(x, DPDMAI_CMD_BASE_VERSION)
>
> /* Command IDs */
> #define DPDMAI_CMDID_CLOSE DPDMAI_CMDID_FORMAT(0x800)
> @@ -26,9 +31,9 @@
> #define DPDMAI_CMDID_RESET DPDMAI_CMDID_FORMAT(0x005)
> #define DPDMAI_CMDID_IS_ENABLED DPDMAI_CMDID_FORMAT(0x006)
>
> -#define DPDMAI_CMDID_SET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A0)
> -#define DPDMAI_CMDID_GET_RX_QUEUE DPDMAI_CMDID_FORMAT(0x1A1)
> -#define DPDMAI_CMDID_GET_TX_QUEUE DPDMAI_CMDID_FORMAT(0x1A2)
> +#define DPDMAI_CMDID_SET_RX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A0, 2)
> +#define DPDMAI_CMDID_GET_RX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A1, 2)
> +#define DPDMAI_CMDID_GET_TX_QUEUE DPDMAI_CMDID_FORMAT_V(0x1A2, 2)
>
> #define MC_CMD_HDR_TOKEN_O 32 /* Token field offset */
> #define MC_CMD_HDR_TOKEN_S 16 /* Token field size */
> @@ -64,6 +69,7 @@
> * should be configured with 0
> */
> struct dpdmai_cfg {
> + u8 num_queues;
> u8 priorities[DPDMAI_PRIO_NUM];
> };
>
> @@ -85,6 +91,7 @@ struct dpdmai_attr {
> u16 minor;
> } version;
> u8 num_of_priorities;
> + u8 num_of_queues;
> };
>
> /**
> @@ -149,20 +156,24 @@ struct dpdmai_rx_queue_attr {
> u32 fqid;
> };
>
> +struct dpdmai_tx_queue_attr {
> + u32 fqid;
> +};
> +
> int dpdmai_open(struct fsl_mc_io *mc_io, u32 cmd_flags,
> int dpdmai_id, u16 *token);
> int dpdmai_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
> -int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
> +int dpdmai_destroy(struct fsl_mc_io *mc_io, u32 cmd_flags, u32 dpdmai_id, u16 token);
> int dpdmai_enable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
> int dpdmai_disable(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
> int dpdmai_reset(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token);
> int dpdmai_get_attributes(struct fsl_mc_io *mc_io, u32 cmd_flags,
> u16 token, struct dpdmai_attr *attr);
> int dpdmai_set_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
> - u8 priority, const struct dpdmai_rx_queue_cfg *cfg);
> + u8 queue_idx, u8 priority, const struct dpdmai_rx_queue_cfg *cfg);
> int dpdmai_get_rx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token,
> - u8 priority, struct dpdmai_rx_queue_attr *attr);
> + u8 queue_idx, u8 priority, struct dpdmai_rx_queue_attr *attr);
> int dpdmai_get_tx_queue(struct fsl_mc_io *mc_io, u32 cmd_flags,
> - u16 token, u8 priority, u32 *fqid);
> + u16 token, u8 queue_idx, u8 priority, struct dpdmai_tx_queue_attr *attr);
>
> #endif /* __FSL_DPDMAI_H */
>
> --
> 2.34.1
--
~Vinod
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: (subset) [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
` (3 preceding siblings ...)
2024-03-20 19:39 ` [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3 Frank Li
@ 2024-04-07 16:39 ` Vinod Koul
4 siblings, 0 replies; 7+ messages in thread
From: Vinod Koul @ 2024-04-07 16:39 UTC (permalink / raw)
To: Frank Li; +Cc: dmaengine, linux-kernel, imx
On Wed, 20 Mar 2024 15:39:18 -0400, Frank Li wrote:
> First do some clear up. Remove unused macro and function
> Then update DPMAI API to support MC firmware 10.1x.x
>
> To: Vinod Koul <vkoul@kernel.org>
> Cc: dmaengine@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: imx@lists.linux.dev
>
> [...]
Applied, thanks!
[1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro
commit: 06db9ee8b42ef833e3941ef3c7795c1bea37212c
[2/4] dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create()
commit: 26a4d2aedac28640c1fbb3761d940d99eff44488
[3/4] dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open
commit: ebf850697a9daa9f59b902ea1e547079d426618b
Best regards,
--
~Vinod
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-04-07 16:39 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-20 19:39 [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Frank Li
2024-03-20 19:39 ` [PATCH 1/4] dmaengine: fsl-dpaa2-qdma: clean up unused macro Frank Li
2024-03-20 19:39 ` [PATCH 2/4] dmaengine: fsl-dpaa2-qdma: Remove unused function dpdmai_create() Frank Li
2024-03-20 19:39 ` [PATCH 3/4] dmaengine: fsl-dpaa2-qdma: Add dpdmai_cmd_open Frank Li
2024-03-20 19:39 ` [PATCH 4/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI interfaces to version 3 Frank Li
2024-04-07 12:22 ` Vinod Koul
2024-04-07 16:39 ` (subset) [PATCH 0/4] dmaengine: fsl-dpaa2-qdma: Update DPDMAI to support MC firmware 10.1x.x Vinod Koul
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.