From patchwork Sun Dec 4 18:17:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 17637 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BF625FA55; Sun, 4 Dec 2016 13:44:45 +0100 (CET) Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0076.outbound.protection.outlook.com [104.47.37.76]) by dpdk.org (Postfix) with ESMTP id EC28E559C for ; Sun, 4 Dec 2016 13:43:52 +0100 (CET) Received: from BN6PR03CA0065.namprd03.prod.outlook.com (10.173.137.27) by DM5PR03MB2474.namprd03.prod.outlook.com (10.168.233.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13; Sun, 4 Dec 2016 12:43:51 +0000 Received: from BL2FFO11FD032.protection.gbl (2a01:111:f400:7c09::142) by BN6PR03CA0065.outlook.office365.com (2603:10b6:404:4c::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.747.13 via Frontend Transport; Sun, 4 Dec 2016 12:43:50 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com; nxp.com; dkim=none (message not signed) header.d=none; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD032.mail.protection.outlook.com (10.173.160.73) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.734.4 via Frontend Transport; Sun, 4 Dec 2016 12:43:50 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:777; Count:10 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id uB4ChXb8032240; Sun, 4 Dec 2016 05:43:48 -0700 From: Hemant Agrawal To: CC: , , , Alex Marginean , Hemant Agrawal Date: Sun, 4 Dec 2016 23:47:00 +0530 Message-ID: <1480875447-23680-6-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> References: <1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com> X-IncomingHeaderCount: 10 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131253290309981437; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(336004)(189002)(199003)(6666003)(189998001)(50466002)(50226002)(626004)(5660300001)(47776003)(104016004)(92566002)(68736007)(97736004)(8666005)(36756003)(39380400001)(39410400001)(39400400001)(8676002)(8936002)(5003940100001)(50986999)(76176999)(110136003)(2950100002)(106466001)(105606002)(6916009)(81166006)(81156014)(4326007)(39450400002)(2906002)(38730400001)(33646002)(86362001)(575784001)(48376002)(7846002)(77096006)(356003)(305945005)(85426001)(2351001)(7059030)(2004002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2474; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD032; 1:48bzN5o4coFlJgk0k+d97t0KsFQ8tdts3ugkmp4P/9Qh/DrQ2TxJkPgRLZgDrlkGoUawFmqO5cVC6Vic/gAoeQIwaa98TTvBupYLIxjcwkcclxgKlXf88QH/tXRg7KzgDdqR46jw8hRkX7lcGLpKMG1CibUbylxDAP20D5xg6/gKKjBIhFL/sA1mZu3OK+3YnOgAEO9I+Ok0odI2kFa2CVMXVA7/kRW2iqy9H3y46Hf1opCdi5EOvnkBpuWo7Lg205UOhNXYFnBA3atGxmMZ38FPgWoEc4nWV/ljPyqdAin/Lvnvnxys9njGRRyZEu7s6bx7dwni7+luhkfZR6yODHeRD1o00Eg7F/W3h4NMeuXp+ovxprtUYANKbAYW+lHlls4dEaC/9tE1a7NoGNFoh0aYzgYZ7dTG0FVGXJ8uvoBZd11YjPTSpddoqjKM7qUVQInlpXnJb+yv+J9KV/vHIz/FsRjq0E1d0JkFDyt7fRK8f8Ifn6KAKNnGaLUYHWp1kX3WZPt1/jqczlbtfLRw1i+5iwOoJ7/DWIljh+UdCkrs8E/4yvS26hg6bWhs0E22w56owjaqqRgB050zNa2VUfunuIUC8Zje1Exz256OAUZrNuY7upWPnUz6w5uPeC0Cg3a00rA5o8FUohcLRD8k8DX9/dakgZEcirZEdzBI23j62+ohvNGDQjLiGwQaZxRSHlBFeKCkvTfhxeoFsu5h9wLCufsFLy4MQ8+YL8n4YOqaBTPeevP7nwpFvUxYsOW7TbtvhkcS8zJm3J+wd6ocQQ== MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: f6cb652f-fa31-4a72-14fd-08d41c4332fe X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DM5PR03MB2474; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 3:seGIdzNtFrVhKJmafZYCvv3TVrReHA8ohLHwc8+t1kzJYtfB8t0B3EGAFWj8bUWWkVhwgwtf5g5D4Ttv14HDWOuXVr5Ou+WymKn1f9WeDz01njWz2RcnxWzrM/q3sC+0os8Mnr0QGWM6cP3LxnIDWuBgvXB/ZP9sqZZ10LnDVCF20Cn4fCB3doqAEQ+76olkQDpisbTSeSGGxvWYXmBp+VOg7cGCIUFw44No5axNWIsQgmKbJptrJ6GFKwmRvCz57/qhwhlCLXN5KKVXSQNkOjR3ahLdrm1AEzs7LRHt80hp3U7EizwGgm/Tv6GKGXth6m81t+IkNDnnVvuA0MX3HJklL7Re96+LtzqZoQEVwpxetZxPIG6RvUGDP3I5ZU0k; 25:4z9hY1iEOkNLLwdKOJg/GhXEExsodxDnFv+Va5NfCPeB/6UOjm62eKyPqCGeF2d3qpHGSpeqyECNP0dA8vPP01v3hP20vfumWHm5eZPAWg/8cjEcVj7kJsaudzeju3KrnkNV5C39bEiogx2Ve+z1cat02xWUMRNW4/ppcxN7pimIsoZkzKtF+I+ZNXbTqk2x7Gs1yTYWuhajX2IYi4zo5kXGpRPwb9tIZC3/IXJgyQelPk4pPnrATZ9E0Nv0qrEE+UaP2YfidrjELoj1yPsdd2H7XUlwHwBQUquHdjSurP7cSQIIoHwe9pTZQaPlugl6a9xwL3wEfK2NEnoJYTqHGljpnQBFYpbmJKGo6JI4NbOPW7Us8ygq/6/Po94e45okdqTK5hRK9aBG1Uku1MfYZzwx+7dFoNgWyCbM6kU6ZVbTwspcEbSiFIWx5FxZzgWshNRtTsD6BXPZnQZptiA7+g== X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 31:WM+e6IjkOHwu8uGfQY3Z0U367n7AQCsJUS9mEkBTV4R78QKU28UZSO912kiD36GlF6Di/RF5+spT9fw8ZCFneZvB5GgkfKNdQfVoQUUAIgJE6rnuHMuh95X788wt06uc2kzjBAI8t4vyBOHacE4I/6IguvC5Rh1QWKIQqXO6z7orL28stGQz7WE3scpQpf3KPdMX04chKq9sXbkB0TVDOpTZXrEbLx+Xfu5CDTq/x3BG5FoU/d8zjbR0zWiIZIOCC5bCy03i/Pjrx9C5jBfDitd3gjOCjFiyJmEnJo82Xss= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(13017025)(13023025)(13015025)(13024025)(13018025)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6096035)(20161123565025)(20161123561025)(20161123559025)(20161123556025)(20161123563025); SRVR:DM5PR03MB2474; BCL:0; PCL:0; RULEID:(400006); SRVR:DM5PR03MB2474; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 4:yfDJIyxAxCxGHXgrRTELCQ6KrDS6zNlaUpAoGFNpkZMDozEvbdnAcUwe8If8uHpebCuzjpSI2/netMoO70gz+2pnW6kuPoAMN4du9p3q01NeeaMTSP+RQn8LGcXlBUzd5ldAJSCitn1VUCSCEIp9YBp+PxfkvnxokIB5/LmPH0bmAT/qS+eQ3i6wwiiF85cL+Hwr0J+oHzoZhsrupcEYTmNxwDRbJxeuE6ww0F1Q4eWsydVUfJWlZArCZrWvCiSUBOGvV7/CJaakJogZzaF4sdcmt6/LgT/NDolZR4lDJJEr7wD+vMZ0wGr4txsxtiWXXZmy2wqCf63hj78h5FgpOppDkgBtVtvbBz6Yn7DhN6omrNjCExF+mBLXlRRiMmcqhMa+mJiq1fABWC81PkqaIHX3BqymQKIQngmaNjwrBkJxEddNwujVGyr1T/54KVsB7FZjlXlKtHlr8NEe6enJ3Fz+2ULrvZUVOR3mhOfkHBKCy2g/OxJIDRFJQ6Xhc864XI/wgGLarq8n8ShKTL5EDmBF8I5yTibeDRogZTE+khHPy7Xzj6XEMaTwb3yth7A6vfkKNodcEwkvb/0wgd6maoo6UhsIOj09r8qgMMkLFnO07VzFgBth3fZlfjMCa3Pbfc+jO/CF8swm5aTPzAQUrywwC8f3Dc1kGb/quqnYGQLb/zlDs+QptlQai1H0mPKzj0uqdRNIcu9drBwdKhHegdIWjRDQl9N9gWO/x8DxoZWlXNQ6bC+nyWYCt+kkK2ueRUMuKBBjEPdkZQCQzB3FbA== X-Forefront-PRVS: 014617085B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2474; 23:crH19MZQAxgJq6XqJQ416ObafmRnlMAwjXxAbnjeB?= =?us-ascii?Q?XaKjFyuT3B2UAcbgqDseGJq3Lr0Uh5mWdyPL1Ut9hAkv+A9osBGsAjwQY+nI?= =?us-ascii?Q?8igV+quJgnj8XY5U5ReplEuR3Ji0XGXFwgHxeQ2UoVARLgh/fxidVvcVB5Kg?= =?us-ascii?Q?wgclka8Be7AvtpMwohjt+EmNLlVtbvhaoHoB2U8tQqHXHdJcVwGyRW71gc5H?= =?us-ascii?Q?8H9ndwpdNM7TPb92+9PqpSTCHpVIqRo5x5xpcGOwwMhsjywaS13DPQa2LHoD?= =?us-ascii?Q?zifG0Fpw/rZVunnrLA9up0fCF2WaE2W1cB9cDOe93c4ltA2FMFHSvTC3GcLf?= =?us-ascii?Q?wYs+fc4lGfW8zfsrMcaQLDhAmAHwprpbjcADzI8KP42liqjSonKQcQ59yo4s?= =?us-ascii?Q?J73AA7D+s4qjQBiIDyKEK9dTxUwV0wULTrI+qMEXfwEeS1jkN86EEMtY2+6I?= =?us-ascii?Q?UYCOp4CAZFyP5OnDyrssrTN53YpyziPEpaudLC/ORMmdXtut4ZQV9frbSYGd?= =?us-ascii?Q?kkjYE9x07axqn84eXeY7K4zc++sTpViG9eIpOrhtOoLr2Jtikyvl6jEFMrlQ?= =?us-ascii?Q?e/vJHod4SmVe4PVW2DDukvllQigFKHFotRv1e2xBAqgYiCtj+JuM9vk9qYRV?= =?us-ascii?Q?gHoivtWm1XAMTsFOHMVAVBfoxz5SuxfBMhyJjuWw4SFFMr/p8hqyatuv9P8v?= =?us-ascii?Q?ODFq3muDi964669YKwZcJq3WEpxRyHMHoIKF4aLvhF+pk2esMIb7I8VrPM8q?= =?us-ascii?Q?GdNAM2TNz4GHojLPGzXezYgRoqkKLUI1cNc+IAj/lQmf2D317/NrpB35jUpN?= =?us-ascii?Q?5oogl1Uhjc0qKoNgGro38IGB21Z5Cjd4XC9/CGtf6ROcCCTfvV9UWDh6y5lr?= =?us-ascii?Q?QQvlBMrdFWs5BZI0rPYZFgp9Zya9x1PkeqTRhmW17Yg+QkvC85dRcUK7U4XH?= =?us-ascii?Q?w7sWXy4yujBqi3C1C8ZafJG2W5S2HuJUqPBGQzJoJIwyidjoVbgo2mUSUODQ?= =?us-ascii?Q?grO+V345bhG0OrQJNUxUBdJSjnTbwgecPTJmKm/JkogS+VciZUMFjAs4AnQ+?= =?us-ascii?Q?/QKwD1yRqi0lc1/VhGqBEwMLlm7XOpVoeYZNdiDQPkroUVRuS4CxwzKxraRV?= =?us-ascii?Q?d3Aq8QDZuazzg37/vww2KDatH4g9E5/peAtPQs6DLuCyrtRA9/7intJ9aLUk?= =?us-ascii?Q?/w4exj4IQTXAAehRmpW4B6GJVVF6utgbRLWAtAYoRxoHJ0YceBA6jYmCMSDf?= =?us-ascii?Q?YS5kegJfL0yg3fecQ56O2Cule+dQRcpvFYi2H79?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 6:4yDt7rQGoKYAIALelZEduv4x+vloxG1vLmX7RP7YahIVX/l/GNHgA7EIdX08J8h8jGEidmVi34Rjl4nHNLR8Nfs+QKfLmZokKsk/UAABvRZ+uReKQ4sYwz7G0Uy1xZknohAmbLVLli7HgYOdalQHirW+IqUgbP6RRXJIv0gRl+XeQKx7/2if9WY3EujBx7wHrcRPrpnQTeRQsMKp9+x64/I20xbXM+V7kJ8hPG4sCSsWjhIN6moYbd4M4yp/+Lukq5JZxLjKlczY5gWVbnk5za/EK+vwRyc/3y7dTL4DZUS0aFJ5NW66KyMVkRAeqY7kyYYmJ0SuydYm0ghdVuIlp8lNVGHPMswQw9GSiGM8XXcM0mEVzuCD7/ZwI2BetB/xMs0euKOBaK9lBsARpV40tXLB7lAO8JFXspXz7GezAlf/gQSh+3OU9wOtz56YlBdV; 5:UHMWUS3bsixg5hUDm/pOlYb4Ryzh99cooSIu1FyVT+wmUBN8pH2S2iCj86E1zKZtVRwJ3y2sTN+niFz46Ycqp8wuxcfdwqB9ow/QIdqDbdMN8yMJY5qyHiuI2XA4+IEnwMmwrbMC7OUEIk49iaZUdSqhS5FPe27N5dWnhmjdnI1nQzvlmm//7bKOEgxFKh8o; 24:Tl6oxwCXim7hujDI8CvePvbbQJwgav3+na5vHW+ghZhau2WSPEzjAd9FSkCyJSGX9TfBHm7gdn93hTU2KUEMZcCnNdagWP8kDMM/jp9bNro= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2474; 7:Nw3myigo6rSZaWhzVkMUguW4OBVjPjph2W6vjxHHk661XnPbgWxT3isiRY78QdebUJsFcot5tdpVEYD39E7cGhb3SypPfA7teU4aMy/NSVVdTgjzHO0ybrkhIxvY8wyTruH7upc6F5erwyjf5fzvywXChqlFxJN1YD9NR6XQnQnedf525QUwwnJkAMlqsk5g6+ts2CtMCb1/N0lp/pTmuu8H81TO0kcMhG8+7u6f48TIYHdYKvKn22DDmZFxjDkgyXYEj6OEWSVFGR7ynS1yIdhNyDTv9jkOkoxwm9rGTUj6WTgZAUpTQPIc83MEe/ePlA48e9Mj1UGOV227/M76CvCOCPP2tAXbRVvhF0hg1j62f/oeVheBYhzGgufQ6OeAhw1fSjXM2Houu2/iZanrL4tPn3D2b7q6X9ngCaBEwMM9hsRxNRIpMq0erqdncJJ/vEK3+xwGVD5KHNoP1SOSYA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2016 12:43:50.8265 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB2474 Subject: [dpdk-dev] [PATCH 05/32] drivers/common/dpaa2: add mc dpbp object support X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DPBP object represent a hw based buffer pool instance in the DPAA2 hardware. Signed-off-by: Alex Marginean [Hemant: rebase and user space driver] Signed-off-by: Hemant Agrawal --- drivers/common/dpaa2/mc/Makefile | 1 + drivers/common/dpaa2/mc/dpbp.c | 230 +++++++++++++++++++++++++++++++++ drivers/common/dpaa2/mc/fsl_dpbp.h | 220 +++++++++++++++++++++++++++++++ drivers/common/dpaa2/mc/fsl_dpbp_cmd.h | 76 +++++++++++ 4 files changed, 527 insertions(+) create mode 100644 drivers/common/dpaa2/mc/dpbp.c create mode 100644 drivers/common/dpaa2/mc/fsl_dpbp.h create mode 100644 drivers/common/dpaa2/mc/fsl_dpbp_cmd.h diff --git a/drivers/common/dpaa2/mc/Makefile b/drivers/common/dpaa2/mc/Makefile index 9b0c694..83bce0f 100644 --- a/drivers/common/dpaa2/mc/Makefile +++ b/drivers/common/dpaa2/mc/Makefile @@ -47,6 +47,7 @@ EXPORT_MAP := dpaa2_mc_version.map LIBABIVER := 1 SRCS-y += \ + dpbp.c \ dpio.c \ dpni.c \ mc_sys.c diff --git a/drivers/common/dpaa2/mc/dpbp.c b/drivers/common/dpaa2/mc/dpbp.c new file mode 100644 index 0000000..2260d86 --- /dev/null +++ b/drivers/common/dpaa2/mc/dpbp.c @@ -0,0 +1,230 @@ +/* Copyright 2013-2016 Freescale Semiconductor Inc. + * Copyright (c) 2016 NXP. + * + * 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 +#include + +int dpbp_open(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + int dpbp_id, + uint16_t *token) +{ + struct mc_command cmd = { 0 }; + int err; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPBP_CMDID_OPEN, + cmd_flags, + 0); + DPBP_CMD_OPEN(cmd, dpbp_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 err; +} + +int dpbp_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(DPBP_CMDID_CLOSE, cmd_flags, + token); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpbp_create(struct fsl_mc_io *mc_io, + uint16_t dprc_token, + uint32_t cmd_flags, + const struct dpbp_cfg *cfg, + uint32_t *obj_id) +{ + struct mc_command cmd = { 0 }; + int err; + + (void)(cfg); /* unused */ + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPBP_CMDID_CREATE, + cmd_flags, + dprc_token); + + /* 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 dpbp_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(DPBP_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 dpbp_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(DPBP_CMDID_ENABLE, cmd_flags, + token); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpbp_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(DPBP_CMDID_DISABLE, + cmd_flags, + token); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} + +int dpbp_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(DPBP_CMDID_IS_ENABLED, cmd_flags, + token); + + /* send command to mc*/ + err = mc_send_command(mc_io, &cmd); + if (err) + return err; + + /* retrieve response parameters */ + DPBP_RSP_IS_ENABLED(cmd, *en); + + return 0; +} + +int dpbp_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(DPBP_CMDID_RESET, + cmd_flags, + token); + + /* send command to mc*/ + return mc_send_command(mc_io, &cmd); +} +int dpbp_get_attributes(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + struct dpbp_attr *attr) +{ + struct mc_command cmd = { 0 }; + int err; + + /* prepare command */ + cmd.header = mc_encode_cmd_header(DPBP_CMDID_GET_ATTR, + cmd_flags, + token); + + /* send command to mc*/ + err = mc_send_command(mc_io, &cmd); + if (err) + return err; + + /* retrieve response parameters */ + DPBP_RSP_GET_ATTRIBUTES(cmd, attr); + + return 0; +} + + +int dpbp_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(DPBP_CMDID_GET_API_VERSION, + cmd_flags, + 0); + + err = mc_send_command(mc_io, &cmd); + if (err) + return err; + + DPBP_RSP_GET_API_VERSION(cmd, *major_ver, *minor_ver); + + return 0; +} diff --git a/drivers/common/dpaa2/mc/fsl_dpbp.h b/drivers/common/dpaa2/mc/fsl_dpbp.h new file mode 100644 index 0000000..966989d --- /dev/null +++ b/drivers/common/dpaa2/mc/fsl_dpbp.h @@ -0,0 +1,220 @@ +/* Copyright 2013-2016 Freescale Semiconductor Inc. + * Copyright (c) 2016 NXP. + * + * 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_DPBP_H +#define __FSL_DPBP_H + +/* Data Path Buffer Pool API + * Contains initialization APIs and runtime control APIs for DPBP + */ + +struct fsl_mc_io; + +/** + * dpbp_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_' + * @dpbp_id: DPBP 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 dpbp_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 dpbp_open(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + int dpbp_id, + uint16_t *token); + +/** + * dpbp_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 DPBP 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 dpbp_close(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token); + +/** + * struct dpbp_cfg - Structure representing DPBP configuration + * @options: place holder + */ +struct dpbp_cfg { + uint32_t options; +}; + +/** + * dpbp_create() - Create the DPBP 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 DPBP 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 dpbp_create(struct fsl_mc_io *mc_io, + uint16_t dprc_token, + uint32_t cmd_flags, + const struct dpbp_cfg *cfg, + uint32_t *obj_id); + +/** + * dpbp_destroy() - Destroy the DPBP object and release all its resources. + * @dprc_token: Parent container token; '0' for default container + * @mc_io: Pointer to MC portal's I/O object + * @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; + * + * Return: '0' on Success; error code otherwise. + */ +int dpbp_destroy(struct fsl_mc_io *mc_io, + uint16_t dprc_token, + uint32_t cmd_flags, + uint32_t object_id); + +/** + * dpbp_enable() - Enable the DPBP. + * @mc_io: Pointer to MC portal's I/O object + * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' + * @token: Token of DPBP object + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_enable(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token); + +/** + * dpbp_disable() - Disable the DPBP. + * @mc_io: Pointer to MC portal's I/O object + * @cmd_flags: Command flags; one or more of 'MC_CMD_FLAG_' + * @token: Token of DPBP object + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_disable(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token); + +/** + * dpbp_is_enabled() - Check if the DPBP 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 DPBP object + * @en: Returns '1' if object is enabled; '0' otherwise + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_is_enabled(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + int *en); + +/** + * dpbp_reset() - Reset the DPBP, 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 DPBP object + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_reset(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token); + +/** + * struct dpbp_attr - Structure representing DPBP attributes + * @id: DPBP object ID + * @bpid: Hardware buffer pool ID; should be used as an argument in + * acquire/release operations on buffers + */ +struct dpbp_attr { + int id; + uint16_t bpid; +}; + +/** + * dpbp_get_attributes - Retrieve DPBP 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 DPBP object + * @attr: Returned object's attributes + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_get_attributes(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t token, + struct dpbp_attr *attr); + +/** + * dpbp_get_api_version() - Get buffer pool 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 buffer pool API + * @minor_ver: Minor version of data path buffer pool API + * + * Return: '0' on Success; Error code otherwise. + */ +int dpbp_get_api_version(struct fsl_mc_io *mc_io, + uint32_t cmd_flags, + uint16_t *major_ver, + uint16_t *minor_ver); + +#endif /* __FSL_DPBP_H */ diff --git a/drivers/common/dpaa2/mc/fsl_dpbp_cmd.h b/drivers/common/dpaa2/mc/fsl_dpbp_cmd.h new file mode 100644 index 0000000..4e95054 --- /dev/null +++ b/drivers/common/dpaa2/mc/fsl_dpbp_cmd.h @@ -0,0 +1,76 @@ +/* Copyright 2013-2016 Freescale Semiconductor Inc. + * Copyright (c) 2016 NXP. + * + * 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_DPBP_CMD_H +#define _FSL_DPBP_CMD_H + +/* DPBP Version */ +#define DPBP_VER_MAJOR 3 +#define DPBP_VER_MINOR 2 + +/* Command IDs */ +#define DPBP_CMDID_CLOSE ((0x800 << 4) | (0x1)) +#define DPBP_CMDID_OPEN ((0x804 << 4) | (0x1)) +#define DPBP_CMDID_CREATE ((0x904 << 4) | (0x1)) +#define DPBP_CMDID_DESTROY ((0x984 << 4) | (0x1)) +#define DPBP_CMDID_GET_API_VERSION ((0xa04 << 4) | (0x1)) + +#define DPBP_CMDID_ENABLE ((0x002 << 4) | (0x1)) +#define DPBP_CMDID_DISABLE ((0x003 << 4) | (0x1)) +#define DPBP_CMDID_GET_ATTR ((0x004 << 4) | (0x1)) +#define DPBP_CMDID_RESET ((0x005 << 4) | (0x1)) +#define DPBP_CMDID_IS_ENABLED ((0x006 << 4) | (0x1)) + + +/* cmd, param, offset, width, type, arg_name */ +#define DPBP_CMD_OPEN(cmd, dpbp_id) \ + MC_CMD_OP(cmd, 0, 0, 32, int, dpbp_id) + +/* cmd, param, offset, width, type, arg_name */ +#define DPBP_RSP_IS_ENABLED(cmd, en) \ + MC_RSP_OP(cmd, 0, 0, 1, int, en) + +/* cmd, param, offset, width, type, arg_name */ +#define DPBP_RSP_GET_ATTRIBUTES(cmd, attr) \ +do { \ + MC_RSP_OP(cmd, 0, 16, 16, uint16_t, attr->bpid); \ + MC_RSP_OP(cmd, 0, 32, 32, int, attr->id);\ +} while (0) + +/* cmd, param, offset, width, type, arg_name */ +#define DPBP_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_DPBP_CMD_H */