> -----Original Message----- > From: Stuart Yoder [mailto:stuart.yoder@xxxxxxx] > Sent: Friday, October 21, 2016 5:02 PM > To: gregkh@xxxxxxxxxxxxxxxxxxx > Cc: German Rivera <german.rivera@xxxxxxx>; devel@xxxxxxxxxxxxxxxxxxxx; > linux-kernel@xxxxxxxxxxxxxxx; agraf@xxxxxxx; arnd@xxxxxxxx; Leo Li > <leoyang.li@xxxxxxx>; Ruxandra Ioana Radulescu > <ruxandra.radulescu@xxxxxxx>; Roy Pledge <roy.pledge@xxxxxxx>; Stuart > Yoder <stuart.yoder@xxxxxxx> > Subject: [PATCH 3/9] bus: fsl-mc: dpio: add APIs for DPIO objects > > From: Ioana Radulescu <ruxandra.radulescu@xxxxxxx> > > Add the command build/parse APIs for operating on DPIO objects through > the DPAA2 Management Complex. > > Signed-off-by: Ioana Radulescu <ruxandra.radulescu@xxxxxxx> > Signed-off-by: Roy Pledge <roy.pledge@xxxxxxx> > Signed-off-by: Stuart Yoder <stuart.yoder@xxxxxxx> > --- > drivers/bus/fsl-mc/Kconfig | 10 ++ > drivers/bus/fsl-mc/Makefile | 3 + > drivers/bus/fsl-mc/dpio/Makefile | 9 ++ > drivers/bus/fsl-mc/dpio/dpio-cmd.h | 198 > ++++++++++++++++++++++++++++++++ > drivers/bus/fsl-mc/dpio/dpio.c | 229 > +++++++++++++++++++++++++++++++++++++ > drivers/bus/fsl-mc/dpio/dpio.h | 108 +++++++++++++++++ > 6 files changed, 557 insertions(+) > create mode 100644 drivers/bus/fsl-mc/dpio/Makefile > create mode 100644 drivers/bus/fsl-mc/dpio/dpio-cmd.h > create mode 100644 drivers/bus/fsl-mc/dpio/dpio.c > create mode 100644 drivers/bus/fsl-mc/dpio/dpio.h > > diff --git a/drivers/bus/fsl-mc/Kconfig b/drivers/bus/fsl-mc/Kconfig > index 5c009ab..a10aaf0 100644 > --- a/drivers/bus/fsl-mc/Kconfig > +++ b/drivers/bus/fsl-mc/Kconfig > @@ -15,3 +15,13 @@ config FSL_MC_BUS > architecture. The fsl-mc bus driver handles discovery of > DPAA2 objects (which are represented as Linux devices) and > binding objects to drivers. > + > +config FSL_MC_DPIO > + tristate "QorIQ DPAA2 DPIO driver" > + depends on FSL_MC_BUS > + help > + Driver for the DPAA2 DPIO object. A DPIO provides queue and > + buffer management facilities for software to interact with > + other DPAA2 objects. This driver does not expose the DPIO > + objects individually, but groups them under a service layer > + API. > diff --git a/drivers/bus/fsl-mc/Makefile b/drivers/bus/fsl-mc/Makefile > index d56afee..d18df72 100644 > --- a/drivers/bus/fsl-mc/Makefile > +++ b/drivers/bus/fsl-mc/Makefile > @@ -17,3 +17,6 @@ mc-bus-driver-objs := fsl-mc-bus.o \ > fsl-mc-msi.o \ > dpmcp.o \ > dpbp.o > + > +# MC DPIO driver > +obj-$(CONFIG_FSL_MC_DPIO) += dpio/ > diff --git a/drivers/bus/fsl-mc/dpio/Makefile b/drivers/bus/fsl- > mc/dpio/Makefile > new file mode 100644 > index 0000000..128befc > --- /dev/null > +++ b/drivers/bus/fsl-mc/dpio/Makefile > @@ -0,0 +1,9 @@ > +# > +# QorIQ DPAA2 DPIO driver > +# > + > +subdir-ccflags-y := -Werror > + > +obj-$(CONFIG_FSL_MC_DPIO) += fsl-mc-dpio.o > + > +fsl-mc-dpio-objs := dpio.o > diff --git a/drivers/bus/fsl-mc/dpio/dpio-cmd.h b/drivers/bus/fsl- > mc/dpio/dpio-cmd.h > new file mode 100644 > index 0000000..b25a4cc > --- /dev/null > +++ b/drivers/bus/fsl-mc/dpio/dpio-cmd.h > @@ -0,0 +1,198 @@ > +/* > + * 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. > + */ > +#ifndef _FSL_DPIO_CMD_H > +#define _FSL_DPIO_CMD_H > + > +/* DPIO Version */ > +#define DPIO_VER_MAJOR 4 > +#define DPIO_VER_MINOR 2 > + > +/* Command Versioning */ > + > +#define DPIO_CMD_ID_OFFSET 4 > +#define DPIO_CMD_BASE_VERSION 1 > + > +#define DPIO_CMD(id) ((id << DPIO_CMD_ID_OFFSET) | > DPIO_CMD_BASE_VERSION) > + > +/* Command IDs */ > +#define DPIO_CMDID_CLOSE DPIO_CMD(0x800) > +#define DPIO_CMDID_OPEN > DPIO_CMD(0x803) > +#define DPIO_CMDID_CREATE > DPIO_CMD(0x903) > +#define DPIO_CMDID_DESTROY > DPIO_CMD(0x983) > +#define DPIO_CMDID_GET_API_VERSION > DPIO_CMD(0xa03) > + > +#define DPIO_CMDID_ENABLE > DPIO_CMD(0x002) > +#define DPIO_CMDID_DISABLE > DPIO_CMD(0x003) > +#define DPIO_CMDID_GET_ATTR > DPIO_CMD(0x004) > +#define DPIO_CMDID_RESET DPIO_CMD(0x005) > +#define DPIO_CMDID_IS_ENABLED > DPIO_CMD(0x006) > + > +#define DPIO_CMDID_SET_IRQ > DPIO_CMD(0x010) > +#define DPIO_CMDID_GET_IRQ > DPIO_CMD(0x011) > +#define DPIO_CMDID_SET_IRQ_ENABLE > DPIO_CMD(0x012) > +#define DPIO_CMDID_GET_IRQ_ENABLE > DPIO_CMD(0x013) > +#define DPIO_CMDID_SET_IRQ_MASK > DPIO_CMD(0x014) > +#define DPIO_CMDID_GET_IRQ_MASK > DPIO_CMD(0x015) > +#define DPIO_CMDID_GET_IRQ_STATUS > DPIO_CMD(0x016) > +#define DPIO_CMDID_CLEAR_IRQ_STATUS > DPIO_CMD(0x017) > + > +#define DPIO_CMDID_SET_STASHING_DEST > DPIO_CMD(0x120) > +#define DPIO_CMDID_GET_STASHING_DEST > DPIO_CMD(0x121) > +#define DPIO_CMDID_ADD_STATIC_DEQUEUE_CHANNEL > DPIO_CMD(0x122) > +#define DPIO_CMDID_REMOVE_STATIC_DEQUEUE_CHANNEL > DPIO_CMD(0x123) > + > +struct dpio_cmd_open { > + __le32 dpio_id; > +}; > + > +#define DPIO_CHANNEL_MODE_MASK 0x3 > + > +struct dpio_cmd_create { > + __le16 pad0; > + u8 channel_mode; > + u8 pad1; > + u8 num_priorities; > + > +}; > + > +#define DPIO_ENABLE 1 > + > +struct dpio_rsp_is_enabled { > + u8 enabled; > +}; > + > +struct dpio_cmd_set_irq { > + /* cmd word 0 */ > + u8 irq_index; > + u8 pad[3]; > + __le32 irq_val; > + /* cmd word 1 */ > + __le64 irq_addr; > + /* cmd word 2 */ > + __le32 irq_num; > +}; > + > +struct dpio_cmd_get_irq { > + __le32 pad; > + u8 irq_index; > +}; > + > +struct dpio_rsp_get_irq { > + /* response word 0 */ > + __le32 irq_val; > + __le32 pad; > + /* response word 1 */ > + __le64 irq_addr; > + /* response word 2 */ > + __le32 irq_num; > + __le32 type; > +}; > + > +struct dpio_cmd_set_irq_enable { > + u8 enable; > + u8 pad[3]; > + u8 irq_index; > +}; > + > +struct dpio_cmd_get_irq_enable { > + __le32 pad; > + u8 irq_index; > +}; > + > +struct dpio_rsp_get_irq_enable { > + u8 enabled; > +}; > + > +struct dpio_cmd_set_irq_mask { > + __le32 mask; > + u8 irq_index; > +}; > + > +struct dpio_cmd_get_irq_mask { > + __le32 pad; > + u8 irq_index; > +}; > + > +struct dpio_rsp_get_irq_mask { > + __le32 mask; > +}; > + > +struct dpio_cmd_get_irq_status { > + __le32 status; > + u8 irq_index; > +}; > + > +struct dpio_rsp_get_irq_status { > + __le32 status; > +}; > + > +struct dpio_cmd_clear_irq_status { > + __le32 status; > + u8 irq_index; > +}; > + > +struct dpio_rsp_get_attr { > + /* cmd word 0 */ > + __le32 id; > + __le16 qbman_portal_id; > + u8 num_priorities; > + u8 channel_mode; > + /* cmd word 1 */ > + __le64 qbman_portal_ce_addr; > + /* cmd word 2 */ > + __le64 qbman_portal_ci_addr; > + /* cmd word 3 */ > + __le32 pad; > + __le32 qbman_version; > +}; > + > +struct dpio_cmd_set_stashing_dest { > + u8 sdest; > +}; > + > +struct dpio_rsp_get_stashing_dest { > + u8 sdest; > +}; > + > +struct dpio_cmd_add_static_dequeue_channel { > + __le32 dpcon_id; > +}; > + > +struct dpio_rsp_add_static_dequeue_channel { > + u8 channel_index; > +}; > + > +struct dpio_cmd_remove_static_dequeue_channel { > + __le32 dpcon_id; > +}; Hi Stuart, looks like you removed unused API functions from dpio.h and dpio.c, but not the structures and CMDID defines associated with them, which are now dead code. Thanks, Ioana _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel