All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nipun Gupta <nipun.gupta@nxp.com>
To: <dev@dpdk.org>
Cc: <hemant.agrawal@nxp.com>, <jerin.jacob@caviumnetworks.com>,
	<harry.van.haaren@intel.com>, <bruce.richardson@intel.com>,
	<gage.eads@intel.com>, <shreyansh.jain@nxp.com>,
	Nipun Gupta <nipun.gupta@nxp.com>
Subject: [PATCH 05/21 v3] bus/fslmc: adding basic dpcon support
Date: Wed, 28 Jun 2017 20:45:48 +0530	[thread overview]
Message-ID: <1498662964-11251-6-git-send-email-nipun.gupta@nxp.com> (raw)
In-Reply-To: <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com>

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/bus/fslmc/Makefile                  |   3 +-
 drivers/bus/fslmc/fslmc_vfio.h              |   1 +
 drivers/bus/fslmc/mc/dpcon.c                | 230 +++++++++++++++++++++++++++
 drivers/bus/fslmc/mc/fsl_dpcon.h            | 238 ++++++++++++++++++++++++++++
 drivers/bus/fslmc/mc/fsl_dpcon_cmd.h        | 175 ++++++++++++++++++++
 drivers/bus/fslmc/rte_bus_fslmc_version.map |   2 +
 6 files changed, 648 insertions(+), 1 deletion(-)
 create mode 100644 drivers/bus/fslmc/mc/dpcon.c
 create mode 100644 drivers/bus/fslmc/mc/fsl_dpcon.h
 create mode 100644 drivers/bus/fslmc/mc/fsl_dpcon_cmd.h

diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile
index 7d9f4b6..38d884e 100644
--- a/drivers/bus/fslmc/Makefile
+++ b/drivers/bus/fslmc/Makefile
@@ -66,7 +66,8 @@ SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += \
 	mc/dpmng.c \
         mc/dpbp.c \
         mc/dpio.c \
-        mc/mc_sys.c
+        mc/mc_sys.c \
+	mc/dpcon.c \
 
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpio.c
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpbp.c
diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h
index ffed62e..eddce31 100644
--- a/drivers/bus/fslmc/fslmc_vfio.h
+++ b/drivers/bus/fslmc/fslmc_vfio.h
@@ -39,6 +39,7 @@
 #define DPAA2_VENDOR_ID		0x1957
 #define DPAA2_MC_DPNI_DEVID	7
 #define DPAA2_MC_DPSECI_DEVID	3
+#define DPAA2_MC_DPCON_DEVID	5
 #define DPAA2_MC_DPIO_DEVID	9
 #define DPAA2_MC_DPBP_DEVID	10
 
diff --git a/drivers/bus/fslmc/mc/dpcon.c b/drivers/bus/fslmc/mc/dpcon.c
new file mode 100644
index 0000000..b078dff
--- /dev/null
+++ b/drivers/bus/fslmc/mc/dpcon.c
@@ -0,0 +1,230 @@
+/* Copyright 2013-2016 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the above-listed copyright holders nor the
+ * names of any contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <fsl_mc_sys.h>
+#include <fsl_mc_cmd.h>
+#include <fsl_dpcon.h>
+#include <fsl_dpcon_cmd.h>
+
+int dpcon_open(struct fsl_mc_io *mc_io,
+	       uint32_t cmd_flags,
+	       int dpcon_id,
+	       uint16_t *token)
+{
+	struct mc_command cmd = { 0 };
+	int err;
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_OPEN,
+					  cmd_flags,
+					  0);
+	DPCON_CMD_OPEN(cmd, dpcon_id);
+
+	/* 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.header);
+
+	return 0;
+}
+
+int dpcon_close(struct fsl_mc_io *mc_io,
+		uint32_t cmd_flags,
+		uint16_t token)
+{
+	struct mc_command cmd = { 0 };
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_CLOSE,
+					  cmd_flags,
+					  token);
+
+	/* send command to mc*/
+	return mc_send_command(mc_io, &cmd);
+}
+
+int dpcon_create(struct fsl_mc_io *mc_io,
+		 uint16_t dprc_token,
+		uint32_t cmd_flags,
+		const struct dpcon_cfg *cfg,
+		uint32_t *obj_id)
+{
+	struct mc_command cmd = { 0 };
+	int err;
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_CREATE,
+					  cmd_flags,
+					  dprc_token);
+	DPCON_CMD_CREATE(cmd, cfg);
+
+	/* send command to mc*/
+	err = mc_send_command(mc_io, &cmd);
+	if (err)
+		return err;
+
+	/* retrieve response parameters */
+	CMD_CREATE_RSP_GET_OBJ_ID_PARAM0(cmd, *obj_id);
+
+	return 0;
+}
+
+int dpcon_destroy(struct fsl_mc_io *mc_io,
+		  uint16_t dprc_token,
+		uint32_t cmd_flags,
+		uint32_t object_id)
+{
+	struct mc_command cmd = { 0 };
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_DESTROY,
+					  cmd_flags,
+					  dprc_token);
+	/* set object id to destroy */
+	CMD_DESTROY_SET_OBJ_ID_PARAM0(cmd, object_id);
+	/* send command to mc*/
+	return mc_send_command(mc_io, &cmd);
+}
+
+int dpcon_enable(struct fsl_mc_io *mc_io,
+		 uint32_t cmd_flags,
+		 uint16_t token)
+{
+	struct mc_command cmd = { 0 };
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_ENABLE,
+					  cmd_flags,
+					  token);
+
+	/* send command to mc*/
+	return mc_send_command(mc_io, &cmd);
+}
+
+int dpcon_disable(struct fsl_mc_io *mc_io,
+		  uint32_t cmd_flags,
+		  uint16_t token)
+{
+	struct mc_command cmd = { 0 };
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_DISABLE,
+					  cmd_flags,
+					  token);
+
+	/* send command to mc*/
+	return mc_send_command(mc_io, &cmd);
+}
+
+int dpcon_is_enabled(struct fsl_mc_io *mc_io,
+		     uint32_t cmd_flags,
+		     uint16_t token,
+		     int *en)
+{
+	struct mc_command cmd = { 0 };
+	int err;
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_IS_ENABLED,
+					  cmd_flags,
+					  token);
+
+	/* send command to mc*/
+	err = mc_send_command(mc_io, &cmd);
+	if (err)
+		return err;
+
+	/* retrieve response parameters */
+	DPCON_RSP_IS_ENABLED(cmd, *en);
+
+	return 0;
+}
+
+int dpcon_reset(struct fsl_mc_io *mc_io,
+		uint32_t cmd_flags,
+		uint16_t token)
+{
+	struct mc_command cmd = { 0 };
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_RESET,
+					  cmd_flags, token);
+
+	/* send command to mc*/
+	return mc_send_command(mc_io, &cmd);
+}
+
+int dpcon_get_attributes(struct fsl_mc_io *mc_io,
+			 uint32_t cmd_flags,
+			 uint16_t token,
+			 struct dpcon_attr *attr)
+{
+	struct mc_command cmd = { 0 };
+	int err;
+
+	/* prepare command */
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_GET_ATTR,
+					  cmd_flags,
+					  token);
+
+	/* send command to mc*/
+	err = mc_send_command(mc_io, &cmd);
+	if (err)
+		return err;
+
+	/* retrieve response parameters */
+	DPCON_RSP_GET_ATTR(cmd, attr);
+
+	return 0;
+}
+
+int dpcon_get_api_version(struct fsl_mc_io *mc_io,
+			  uint32_t cmd_flags,
+			   uint16_t *major_ver,
+			   uint16_t *minor_ver)
+{
+	struct mc_command cmd = { 0 };
+	int err;
+
+	cmd.header = mc_encode_cmd_header(DPCON_CMDID_GET_API_VERSION,
+					cmd_flags,
+					0);
+
+	err = mc_send_command(mc_io, &cmd);
+	if (err)
+		return err;
+
+	DPCON_RSP_GET_API_VERSION(cmd, *major_ver, *minor_ver);
+
+	return 0;
+}
diff --git a/drivers/bus/fslmc/mc/fsl_dpcon.h b/drivers/bus/fslmc/mc/fsl_dpcon.h
new file mode 100644
index 0000000..0ed9db5
--- /dev/null
+++ b/drivers/bus/fslmc/mc/fsl_dpcon.h
@@ -0,0 +1,238 @@
+/*-
+ * This file is provided under a dual BSD/GPLv2 license. When using or
+ * redistributing this file, you may do so under either license.
+ *
+ *   BSD LICENSE
+ *
+ * Copyright 2013-2016 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the above-listed copyright holders nor the
+ * names of any contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *   GPL LICENSE SUMMARY
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef __FSL_DPCON_H
+#define __FSL_DPCON_H
+
+/* Data Path Concentrator API
+ * Contains initialization APIs and runtime control APIs for DPCON
+ */
+
+struct fsl_mc_io;
+
+/** General DPCON macros */
+
+/**
+ * Use it to disable notifications; see dpcon_set_notification()
+ */
+#define DPCON_INVALID_DPIO_ID		(int)(-1)
+
+/**
+ * dpcon_open() - Open a control session for the specified object
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @dpcon_id:	DPCON unique ID
+ * @token:	Returned token; use in subsequent API calls
+ *
+ * This function can be used to open a control session for an
+ * already created object; an object may have been declared in
+ * the DPL or by calling the dpcon_create() 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 commands for
+ * this specific object.
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_open(struct fsl_mc_io *mc_io,
+	       uint32_t		cmd_flags,
+	       int		dpcon_id,
+	       uint16_t		*token);
+
+/**
+ * dpcon_close() - Close the control session of the object
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ *
+ * After this function is called, no further operations are
+ * allowed on the object without opening a new control session.
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_close(struct fsl_mc_io	*mc_io,
+		uint32_t		cmd_flags,
+		uint16_t		token);
+
+/**
+ * struct dpcon_cfg - Structure representing DPCON configuration
+ * @num_priorities: Number of priorities for the DPCON channel (1-8)
+ */
+struct dpcon_cfg {
+	uint8_t num_priorities;
+};
+
+/**
+ * dpcon_create() - Create the DPCON object.
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @dprc_token:	Parent container token; '0' for default container
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @cfg:	Configuration structure
+ * @obj_id: returned object id
+ *
+ * Create the DPCON 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.
+ *
+ * The function accepts an authentication token of a parent
+ * container that this object should be assigned to. The token
+ * can be '0' so the object will be assigned to the default container.
+ * The newly created object can be opened with the returned
+ * object id and using the container's associated tokens and MC portals.
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_create(struct fsl_mc_io	*mc_io,
+		 uint16_t		dprc_token,
+		uint32_t		cmd_flags,
+		const struct dpcon_cfg	*cfg,
+		uint32_t		*obj_id);
+
+/**
+ * dpcon_destroy() - Destroy the DPCON object and release all its resources.
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @dprc_token: Parent container token; '0' for default container
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @object_id:	The object id; it must be a valid id within the container that
+ * created this object;
+ *
+ * The function accepts the authentication token of the parent container that
+ * created the object (not the one that currently owns the object). The object
+ * is searched within parent using the provided 'object_id'.
+ * All tokens to the object must be closed before calling destroy.
+ *
+ * Return:	'0' on Success; error code otherwise.
+ */
+int dpcon_destroy(struct fsl_mc_io	*mc_io,
+		  uint16_t		dprc_token,
+		uint32_t		cmd_flags,
+		uint32_t		object_id);
+
+/**
+ * dpcon_enable() - Enable the DPCON
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ *
+ * Return:	'0' on Success; Error code otherwise
+ */
+int dpcon_enable(struct fsl_mc_io	*mc_io,
+		 uint32_t		cmd_flags,
+		 uint16_t		token);
+
+/**
+ * dpcon_disable() - Disable the DPCON
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ *
+ * Return:	'0' on Success; Error code otherwise
+ */
+int dpcon_disable(struct fsl_mc_io	*mc_io,
+		  uint32_t		cmd_flags,
+		  uint16_t		token);
+
+/**
+ * dpcon_is_enabled() -	Check if the DPCON is enabled.
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ * @en:		Returns '1' if object is enabled; '0' otherwise
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_is_enabled(struct fsl_mc_io	*mc_io,
+		     uint32_t		cmd_flags,
+		     uint16_t		token,
+		     int		*en);
+
+/**
+ * dpcon_reset() - Reset the DPCON, returns the object to initial state.
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_reset(struct fsl_mc_io	*mc_io,
+		uint32_t		cmd_flags,
+		uint16_t		token);
+
+/**
+ * struct dpcon_attr - Structure representing DPCON attributes
+ * @id: DPCON object ID
+ * @qbman_ch_id: Channel ID to be used by dequeue operation
+ * @num_priorities: Number of priorities for the DPCON channel (1-8)
+ */
+struct dpcon_attr {
+	int id;
+	uint16_t qbman_ch_id;
+	uint8_t num_priorities;
+};
+
+/**
+ * dpcon_get_attributes() - Retrieve DPCON attributes.
+ * @mc_io:	Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @token:	Token of DPCON object
+ * @attr:	Object's attributes
+ *
+ * Return:	'0' on Success; Error code otherwise.
+ */
+int dpcon_get_attributes(struct fsl_mc_io	*mc_io,
+			 uint32_t		cmd_flags,
+			 uint16_t		token,
+			 struct dpcon_attr	*attr);
+
+/**
+ * dpcon_get_api_version() - Get Data Path Concentrator API version
+ * @mc_io:  Pointer to MC portal's I/O object
+ * @cmd_flags:	Command flags; one or more of 'MC_CMD_FLAG_'
+ * @major_ver:	Major version of data path concentrator API
+ * @minor_ver:	Minor version of data path concentrator API
+ *
+ * Return:  '0' on Success; Error code otherwise.
+ */
+int dpcon_get_api_version(struct fsl_mc_io *mc_io,
+			  uint32_t cmd_flags,
+			  uint16_t *major_ver,
+			  uint16_t *minor_ver);
+
+#endif /* __FSL_DPCON_H */
diff --git a/drivers/bus/fslmc/mc/fsl_dpcon_cmd.h b/drivers/bus/fslmc/mc/fsl_dpcon_cmd.h
new file mode 100644
index 0000000..f7f7690
--- /dev/null
+++ b/drivers/bus/fslmc/mc/fsl_dpcon_cmd.h
@@ -0,0 +1,175 @@
+/*-
+ * This file is provided under a dual BSD/GPLv2 license. When using or
+ * redistributing this file, you may do so under either license.
+ *
+ *   BSD LICENSE
+ *
+ * Copyright 2013-2016 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of the above-listed copyright holders nor the
+ * names of any contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *   GPL LICENSE SUMMARY
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#ifndef _FSL_DPCON_CMD_H
+#define _FSL_DPCON_CMD_H
+
+/* DPCON Version */
+#define DPCON_VER_MAJOR				3
+#define DPCON_VER_MINOR				2
+
+/* Command IDs */
+#define DPCON_CMDID_CLOSE                            ((0x800 << 4) | (0x1))
+#define DPCON_CMDID_OPEN                             ((0x808 << 4) | (0x1))
+#define DPCON_CMDID_CREATE                           ((0x908 << 4) | (0x1))
+#define DPCON_CMDID_DESTROY                          ((0x988 << 4) | (0x1))
+#define DPCON_CMDID_GET_API_VERSION                  ((0xa08 << 4) | (0x1))
+
+#define DPCON_CMDID_ENABLE                           ((0x002 << 4) | (0x1))
+#define DPCON_CMDID_DISABLE                          ((0x003 << 4) | (0x1))
+#define DPCON_CMDID_GET_ATTR                         ((0x004 << 4) | (0x1))
+#define DPCON_CMDID_RESET                            ((0x005 << 4) | (0x1))
+#define DPCON_CMDID_IS_ENABLED                       ((0x006 << 4) | (0x1))
+
+#define DPCON_CMDID_SET_IRQ                          ((0x010 << 4) | (0x1))
+#define DPCON_CMDID_GET_IRQ                          ((0x011 << 4) | (0x1))
+#define DPCON_CMDID_SET_IRQ_ENABLE                   ((0x012 << 4) | (0x1))
+#define DPCON_CMDID_GET_IRQ_ENABLE                   ((0x013 << 4) | (0x1))
+#define DPCON_CMDID_SET_IRQ_MASK                     ((0x014 << 4) | (0x1))
+#define DPCON_CMDID_GET_IRQ_MASK                     ((0x015 << 4) | (0x1))
+#define DPCON_CMDID_GET_IRQ_STATUS                   ((0x016 << 4) | (0x1))
+#define DPCON_CMDID_CLEAR_IRQ_STATUS                 ((0x017 << 4) | (0x1))
+
+#define DPCON_CMDID_SET_NOTIFICATION                 ((0x100 << 4) | (0x1))
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_OPEN(cmd, dpcon_id) \
+	MC_CMD_OP(cmd, 0, 0,  32, int,      dpcon_id)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_CREATE(cmd, cfg) \
+	MC_CMD_OP(cmd, 0, 0,  8,  uint8_t,  cfg->num_priorities)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_IS_ENABLED(cmd, en) \
+	MC_RSP_OP(cmd, 0, 0,  1,  int,	    en)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_SET_IRQ(cmd, irq_index, irq_cfg) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  8,  uint8_t,  irq_index);\
+	MC_CMD_OP(cmd, 0, 32, 32, uint32_t, irq_cfg->val);\
+	MC_CMD_OP(cmd, 1, 0,  64, uint64_t, irq_cfg->addr);\
+	MC_CMD_OP(cmd, 2, 0,  32, int,	    irq_cfg->irq_num); \
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_GET_IRQ(cmd, irq_index) \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_GET_IRQ(cmd, type, irq_cfg) \
+do { \
+	MC_RSP_OP(cmd, 0, 0,  32, uint32_t, irq_cfg->val);\
+	MC_RSP_OP(cmd, 1, 0,  64, uint64_t, irq_cfg->addr);\
+	MC_RSP_OP(cmd, 2, 0,  32, int,	    irq_cfg->irq_num); \
+	MC_RSP_OP(cmd, 2, 32, 32, int,	    type);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_SET_IRQ_ENABLE(cmd, irq_index, en) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  8,  uint8_t,  en); \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_GET_IRQ_ENABLE(cmd, irq_index) \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_GET_IRQ_ENABLE(cmd, en) \
+	MC_RSP_OP(cmd, 0, 0,  8,  uint8_t,  en)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_SET_IRQ_MASK(cmd, irq_index, mask) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  32, uint32_t, mask); \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_GET_IRQ_MASK(cmd, irq_index) \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_GET_IRQ_MASK(cmd, mask) \
+	MC_RSP_OP(cmd, 0, 0,  32, uint32_t, mask)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_GET_IRQ_STATUS(cmd, irq_index, status) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  32, uint32_t, status);\
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_GET_IRQ_STATUS(cmd, status) \
+	MC_RSP_OP(cmd, 0, 0,  32, uint32_t, status)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_CLEAR_IRQ_STATUS(cmd, irq_index, status) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  32, uint32_t, status); \
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  irq_index);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_RSP_GET_ATTR(cmd, attr) \
+do { \
+	MC_RSP_OP(cmd, 0, 0,  32, int,	    attr->id);\
+	MC_RSP_OP(cmd, 0, 32, 16, uint16_t, attr->qbman_ch_id);\
+	MC_RSP_OP(cmd, 0, 48, 8,  uint8_t,  attr->num_priorities);\
+} while (0)
+
+/*                cmd, param, offset, width, type, arg_name */
+#define DPCON_CMD_SET_NOTIFICATION(cmd, cfg) \
+do { \
+	MC_CMD_OP(cmd, 0, 0,  32, int,      cfg->dpio_id);\
+	MC_CMD_OP(cmd, 0, 32, 8,  uint8_t,  cfg->priority);\
+	MC_CMD_OP(cmd, 1, 0,  64, uint64_t, cfg->user_ctx);\
+} while (0)
+
+/*                cmd, param, offset, width, type,      arg_name */
+#define DPCON_RSP_GET_API_VERSION(cmd, major, minor) \
+do { \
+	MC_RSP_OP(cmd, 0, 0,  16, uint16_t, major);\
+	MC_RSP_OP(cmd, 0, 16, 16, uint16_t, minor);\
+} while (0)
+
+#endif /* _FSL_DPCON_CMD_H */
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 90db78c..783c3e5 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -53,6 +53,8 @@ DPDK_17.05 {
 DPDK_17.08 {
 	global:
 
+	dpcon_open;
+	dpcon_get_attributes;
 	mc_get_soc_version;
 	mc_get_version;
 	qbman_result_SCN_state_in_mem;
-- 
1.9.1

  parent reply	other threads:[~2017-06-28 15:17 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com>
2017-06-15  8:58 ` [PATCH 00/20 v2] next-eventdev: NXP DPAA2 eventdev PMD Nipun Gupta
2017-06-15  8:58   ` [PATCH 01/20 v2] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-15  8:58   ` [PATCH 02/20 v2] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-15  8:58   ` [PATCH 03/20 v2] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-15  8:58   ` [PATCH 04/20 v2] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-15  8:58   ` [PATCH 05/20 v2] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-15  8:58   ` [PATCH 06/20 v2] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-15  8:58   ` [PATCH 07/20 v2] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-15  8:58   ` [PATCH 08/20 v2] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-15  8:58   ` [PATCH 09/20 v2] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-15  8:58   ` [PATCH 10/20 v2] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-15  8:58   ` [PATCH 11/20 v2] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-15  8:58   ` [PATCH 12/20 v2] event/dpaa2: add configuration functions Nipun Gupta
2017-06-15  8:58   ` [PATCH 13/20 v2] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-15  8:58   ` [PATCH 14/20 v2] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-15  8:58   ` [PATCH 15/20 v2] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-15  8:58   ` [PATCH 16/20 v2] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-15  8:58   ` [PATCH 17/20 v2] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-15  8:58   ` [PATCH 18/20 v2] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-15  8:58   ` [PATCH 19/20 v2] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-15  8:58   ` [PATCH 20/20 v2] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-28 13:51   ` [PATCH 00/20 v2] next-eventdev: NXP DPAA2 eventdev PMD Nipun Gupta
2017-06-29  6:39     ` Jerin Jacob
2017-06-28 15:15 ` [PATCH 00/21 v3] " Nipun Gupta
2017-06-28 15:15   ` [PATCH 01/21 v3] drivers: add bus dependency for event Nipun Gupta
2017-06-28 15:15   ` [PATCH 02/21 v3] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-28 15:15   ` [PATCH 03/21 v3] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-28 15:15   ` [PATCH 04/21 v3] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-28 15:15   ` Nipun Gupta [this message]
2017-06-28 15:15   ` [PATCH 06/21 v3] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-28 15:15   ` [PATCH 07/21 v3] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-28 15:15   ` [PATCH 08/21 v3] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-28 15:15   ` [PATCH 09/21 v3] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-28 15:15   ` [PATCH 10/21 v3] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-28 15:15   ` [PATCH 11/21 v3] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-28 15:15   ` [PATCH 12/21 v3] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-28 15:15   ` [PATCH 13/21 v3] event/dpaa2: add configuration functions Nipun Gupta
2017-06-28 15:15   ` [PATCH 14/21 v3] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-28 15:15   ` [PATCH 15/21 v3] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-28 15:15   ` [PATCH 16/21 v3] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-28 15:16   ` [PATCH 17/21 v3] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-28 15:16   ` [PATCH 18/21 v3] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-28 15:16   ` [PATCH 19/21 v3] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-28 15:16   ` [PATCH 20/21 v3] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-28 15:16   ` [PATCH 21/21 v3] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-29  9:25     ` Jerin Jacob
2017-06-29 10:27       ` Nipun Gupta
2017-06-29  5:15   ` [PATCH 00/21 v3] next-eventdev: NXP DPAA2 eventdev PMD Hemant Agrawal
2017-06-29 10:27 ` [PATCH 00/21 v4] " Nipun Gupta
2017-06-29 10:27   ` [PATCH 01/21 v4] drivers: add bus dependency for event Nipun Gupta
2017-06-29 10:27   ` [PATCH 02/21 v4] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-29 10:27   ` [PATCH 03/21 v4] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-29 10:27   ` [PATCH 04/21 v4] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-29 10:27   ` [PATCH 05/21 v4] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-29 10:27   ` [PATCH 06/21 v4] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-29 10:27   ` [PATCH 07/21 v4] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-29 10:27   ` [PATCH 08/21 v4] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-29 10:27   ` [PATCH 09/21 v4] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-29 10:27   ` [PATCH 10/21 v4] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-29 10:27   ` [PATCH 11/21 v4] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-29 10:27   ` [PATCH 12/21 v4] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-29 10:27   ` [PATCH 13/21 v4] event/dpaa2: add configuration functions Nipun Gupta
2017-06-29 10:27   ` [PATCH 14/21 v4] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-29 10:27   ` [PATCH 15/21 v4] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-29 10:28   ` [PATCH 16/21 v4] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-29 10:28   ` [PATCH 17/21 v4] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-29 10:28   ` [PATCH 18/21 v4] fslmc/bus: add interrupt enabling routine Nipun Gupta
2017-06-29 10:28   ` [PATCH 19/21 v4] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-29 10:28   ` [PATCH 20/21 v4] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-29 10:28   ` [PATCH 21/21 v4] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-29 11:03   ` [PATCH 00/21 v4] next-eventdev: NXP DPAA2 eventdev PMD Jerin Jacob
2017-06-30  7:30     ` Nipun Gupta
2017-06-30  8:54 ` [PATCH 00/21 v5] " Nipun Gupta
2017-06-30  8:54   ` [PATCH 01/21 v5] drivers: add bus dependency for event Nipun Gupta
2017-06-30  8:54   ` [PATCH 02/21 v5] event/dpaa2: add basic build infrastructure Nipun Gupta
2017-06-30  8:54   ` [PATCH 03/21 v5] bus/fslmc: generic framework for mc object creation Nipun Gupta
2017-06-30  8:54   ` [PATCH 04/21 v5] bus/fslmc: integrating dpio and dpbp to object framework Nipun Gupta
2017-06-30  8:54   ` [PATCH 05/21 v5] bus/fslmc: adding basic dpcon support Nipun Gupta
2017-06-30  8:54   ` [PATCH 06/21 v5] bus/fslmc: export qbman dqrr funcs for eventdev usages Nipun Gupta
2017-06-30  8:54   ` [PATCH 07/21 v5] event/dpaa2: register dpcon as dpaa2 device for bus scan Nipun Gupta
2017-06-30  8:54   ` [PATCH 08/21 v5] bus/fslmc: adding basic dpci support Nipun Gupta
2017-06-30  8:54   ` [PATCH 09/21 v5] bus/fslmc: register dpci as dpaa2 device for bus scan Nipun Gupta
2017-06-30  8:54   ` [PATCH 10/21 v5] bus/fslmc: adding cpu support in stashing config Nipun Gupta
2017-06-30  8:54   ` [PATCH 11/21 v5] event/dpaa2: add initialization of event device Nipun Gupta
2017-06-30  8:54   ` [PATCH 12/21 v5] bus/fslmc: add support for static dequeue from portal Nipun Gupta
2017-06-30  8:54   ` [PATCH 13/21 v5] event/dpaa2: add configuration functions Nipun Gupta
2017-06-30  8:54   ` [PATCH 14/21 v5] bus/fslmc: support enqueue with multiple enqueue descriptors Nipun Gupta
2017-06-30  8:54   ` [PATCH 15/21 v5] bus/fslmc: add callback per queue to enable Nipun Gupta
2017-06-30  8:54   ` [PATCH 16/21 v5] bus/fslmc: change func argument to const to avoid warning Nipun Gupta
2017-06-30  8:54   ` [PATCH 17/21 v5] event/dpaa2: add enqueue and dequeue functionality Nipun Gupta
2017-06-30  8:54   ` [PATCH 18/21 v5] bus/fslmc: add interrupt enabling routine Nipun Gupta
2017-06-30  8:54   ` [PATCH 19/21 v5] bus/fslmc: enable portal interrupt handling Nipun Gupta
2017-06-30  8:54   ` [PATCH 20/21 v5] event/dpaa2: handle timeout using interrupts in dequeue Nipun Gupta
2017-06-30  8:54   ` [PATCH 21/21 v5] doc: add NXP DPAA2 EVENTDEV details Nipun Gupta
2017-06-30 12:13     ` Mcnamara, John
2017-07-01 12:24       ` Jerin Jacob
2017-07-04  6:55     ` Jerin Jacob
2017-07-01 12:28   ` [PATCH 00/21 v5] next-eventdev: NXP DPAA2 eventdev PMD Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1498662964-11251-6-git-send-email-nipun.gupta@nxp.com \
    --to=nipun.gupta@nxp.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=gage.eads@intel.com \
    --cc=harry.van.haaren@intel.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=jerin.jacob@caviumnetworks.com \
    --cc=shreyansh.jain@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.