RE: [PATCH 3/9] bus: fsl-mc: dpio: add APIs for DPIO objects

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----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



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux