* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox