> -----Original Message----- > From: Ruxandra Ioana Radulescu > Sent: Wednesday, November 02, 2016 9:50 AM > To: Stuart Yoder <stuart.yoder@xxxxxxx>; gregkh@xxxxxxxxxxxxxxxxxxx > Cc: German Rivera <german.rivera@xxxxxxx>; devel@xxxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > agraf@xxxxxxx; arnd@xxxxxxxx; Leo Li <leoyang.li@xxxxxxx>; Roy Pledge <roy.pledge@xxxxxxx>; Stuart Yoder > <stuart.yoder@xxxxxxx> > Subject: RE: [PATCH 3/9] bus: fsl-mc: dpio: add APIs for DPIO objects > > > -----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. I didn't modify this particular file when I sent it out, but agree that we should clean that up. Will remove unused structs/defines in v2 of this series. Thanks, Stuart _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel