Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756897AbcLBSBm (ORCPT ); Fri, 2 Dec 2016 13:01:42 -0500 Received: from mail-db5eur01on0084.outbound.protection.outlook.com ([104.47.2.84]:25789 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751731AbcLBSBk (ORCPT ); Fri, 2 Dec 2016 13:01:40 -0500 From: Laurentiu Tudor To: Stuart Yoder , "gregkh@linuxfoundation.org" CC: "devel@driverdev.osuosl.org" , "linux-kernel@vger.kernel.org" , "agraf@suse.de" , "arnd@arndb.de" , Leo Li , Ioana Ciornei , "Catalin Horghidan" , Ruxandra Ioana Radulescu , Roy Pledge Subject: Re: [PATCH v3 3/9] bus: fsl-mc: dpio: add APIs for DPIO objects Thread-Topic: [PATCH v3 3/9] bus: fsl-mc: dpio: add APIs for DPIO objects Thread-Index: AQHSTCUbB2tL5PbsZECX5bGb6mXLBaD0haEA Date: Fri, 2 Dec 2016 11:26:46 +0000 Message-ID: <58415A74.6050604@nxp.com> References: <1480632094-3621-1-git-send-email-stuart.yoder@nxp.com> <1480632094-3621-4-git-send-email-stuart.yoder@nxp.com> In-Reply-To: <1480632094-3621-4-git-send-email-stuart.yoder@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=laurentiu.tudor@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [192.88.146.1] x-microsoft-exchange-diagnostics: 1;VI1PR0401MB2639;7:aPwpjQaL2rjMvLWvctoDbNL3obCDJMqfRQriQgiZv1ShVrN28xXEC0P+2A7O8I4kwEPHIghyiHez0pWVwmaSANoDIT8sH6rMdATx50pzWDlbpsTZ7fqrT35pDCO/AHiQLC4FtcgwlUL9vyqrl9TQzJ6j2PQdlglbhdVAvkEj3+nae0xPsGpXcfeOxCwm7tnC6ybGH+r/fhQ4Xyg6YyeLVrkJaGRdgnw71ICSO5Di9ETqOs/XQAVgyzrzXQCr6yHY58AIWap4f8mlClMNLuiY5P/bfaLlpUh6nmmsZjJpBdQQrMCiWLAOtD7nNUNeRnEY6uvQlGZrKg3fWBpRpZgKYX6FLAAfo1hWoh/Qg644T1KfTl8WhRp6rmYh9zDGNrUwVWoT49Tao5wRzpoYALaI3KCNXp4HOca+L8XciKnaXOAnCaHXWkHi8HR4kwq9MBYp1c5cgJh/ic/LgjPjd7DUJA== x-forefront-antispam-report: SFV:SKI;SCL:-1SFV:NSPM;SFS:(10009020)(6009001)(7916002)(24454002)(377454003)(189002)(199003)(3280700002)(59896002)(8936002)(4326007)(5001770100001)(2501003)(2906002)(7846002)(102836003)(305945005)(7736002)(68736007)(97736004)(87266999)(76176999)(65816999)(50986999)(2950100002)(99136001)(54356999)(6116002)(80316001)(86362001)(33656002)(3660700001)(575784001)(5660300001)(3846002)(106356001)(101416001)(77096006)(38730400001)(105586002)(81166006)(106116001)(2900100001)(92566002)(122556002)(36756003)(6486002)(8676002)(81156014)(66066001)(189998001)(229853002)(6506004)(6512004)(2004002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0401MB2639;H:VI1PR0401MB1856.eurprd04.prod.outlook.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; x-ms-office365-filtering-correlation-id: b460e2c9-2032-4c78-5e15-08d41aa619bf x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:VI1PR0401MB2639; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(35073007944872)(185117386973197)(275809806118684); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123562025)(20161123560025)(20161123558021)(20161123564025)(20161123555025)(6047074)(6042181)(6072148);SRVR:VI1PR0401MB2639;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0401MB2639; x-forefront-prvs: 0144B30E41 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="Windows-1252" Content-ID: <2829823D7FAFB149A9D1CD0BAA8A6AC1@eurprd04.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Dec 2016 11:26:46.3006 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0401MB2639 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id uB2I1lwV018581 Content-Length: 9702 Lines: 255 Couple of nits inline. --- Best Regards, Laurentiu On 12/02/2016 12:41 AM, Stuart Yoder wrote: > From: Ioana Radulescu > > Add the command build/parse APIs for operating on DPIO objects through > the DPAA2 Management Complex. > > Signed-off-by: Ioana Radulescu > Signed-off-by: Roy Pledge > Signed-off-by: Stuart Yoder > --- > > Notes: > -v3 > -no changes > -v2 > -removed unused structs and defines > > 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 | 75 ++++++++++++ > drivers/bus/fsl-mc/dpio/dpio.c | 229 +++++++++++++++++++++++++++++++++++++ > drivers/bus/fsl-mc/dpio/dpio.h | 108 +++++++++++++++++ > 6 files changed, 434 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..3464ed9 > --- /dev/null > +++ b/drivers/bus/fsl-mc/dpio/dpio-cmd.h > @@ -0,0 +1,75 @@ > +/* > + * 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) Paranthesis around 'id'? > +/* Command IDs */ > +#define DPIO_CMDID_CLOSE DPIO_CMD(0x800) > +#define DPIO_CMDID_OPEN DPIO_CMD(0x803) > +#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) > + > +struct dpio_cmd_open { > + __le32 dpio_id; > +}; > + > +#define DPIO_CHANNEL_MODE_MASK 0x3 > + > +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; > +}; > + > +#endif /* _FSL_DPIO_CMD_H */ > diff --git a/drivers/bus/fsl-mc/dpio/dpio.c b/drivers/bus/fsl-mc/dpio/dpio.c > new file mode 100644 > index 0000000..5f1ee19 > --- /dev/null > +++ b/drivers/bus/fsl-mc/dpio/dpio.c > @@ -0,0 +1,229 @@ > +/* > + * 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 > +#include > + > +#include "dpio.h" > +#include "dpio-cmd.h" > + > +/* > + * Data Path I/O Portal API > + * Contains initialization APIs and runtime control APIs for DPIO > + */ > + > +/** > + * dpio_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_' > + * @dpio_id: DPIO 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 dpio_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 dpio_open(struct fsl_mc_io *mc_io, > + u32 cmd_flags, > + int dpio_id, > + u16 *token) > +{ > + struct mc_command cmd = { 0 }; > + struct dpio_cmd_open *dpio_cmd; > + int err; > + > + /* prepare command */ > + cmd.header = mc_encode_cmd_header(DPIO_CMDID_OPEN, > + cmd_flags, > + 0); > + dpio_cmd = (struct dpio_cmd_open *)cmd.params; > + dpio_cmd->dpio_id = cpu_to_le32(dpio_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); Nit: maybe we should drop these repetitive "prepare / send / retrieve" comments as the code is pretty self explanatory. --- Best Regards, Laurentiu