From patchwork Tue Jan 17 18:52:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 19574 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 DE8F6D586; Tue, 17 Jan 2017 14:19:30 +0100 (CET) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0087.outbound.protection.outlook.com [104.47.33.87]) by dpdk.org (Postfix) with ESMTP id 9C27737AC for ; Tue, 17 Jan 2017 14:19:29 +0100 (CET) Received: from DM2PR03CA0042.namprd03.prod.outlook.com (10.141.96.41) by CY1PR0301MB0748.namprd03.prod.outlook.com (10.160.159.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Tue, 17 Jan 2017 13:19:28 +0000 Received: from BL2FFO11OLC015.protection.gbl (2a01:111:f400:7c09::164) by DM2PR03CA0042.outlook.office365.com (2a01:111:e400:2428::41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12 via Frontend Transport; Tue, 17 Jan 2017 13:19:28 +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 BL2FFO11OLC015.mail.protection.outlook.com (10.173.160.81) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Tue, 17 Jan 2017 13:19:27 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v0HDJ8mB021741; Tue, 17 Jan 2017 06:19:24 -0700 From: Hemant Agrawal To: CC: , , , , , , Hemant Agrawal Date: Wed, 18 Jan 2017 00:22:25 +0530 Message-ID: <1484679174-4174-5-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1484679174-4174-1-git-send-email-hemant.agrawal@nxp.com> References: <1482988612-6638-1-git-send-email-shreyansh.jain@nxp.com> <1484679174-4174-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131291327679459716; (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)(336005)(39410400002)(39380400002)(39850400002)(39840400002)(39450400003)(39400400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(105606002)(38730400001)(77096006)(5003940100001)(92566002)(50986999)(85426001)(2351001)(356003)(106466001)(76176999)(626004)(54906002)(47776003)(110136003)(33646002)(104016004)(68736007)(305945005)(6916009)(2950100002)(81156014)(8656002)(86362001)(36756003)(50466002)(81166006)(8936002)(8676002)(48376002)(5660300001)(4326007)(5890100001)(50226002)(2906002)(189998001)(97736004)(30001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0748; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11OLC015; 1:HOBGnmkvaYWncA86KDYkd3xIiqBEN9Ze4qC8VqIygjIgi/PA8eNpHSsmFshhnxbb8zGkCTdAl59fUWJQr1zpeRseXap/spiZ5nB2zeWpMmcx8t4Uy44QdAapgPhGXI7aNZ6vCDlrbp7BQZvhSDv+FgF73UlYbTR2u+W4IyaFN09GqCmHD0BfHVtiPPaWMvMBsUt+tI9aiKmdzHi2nwQZy9WK6KrLFQjT8c+FzgTuTfsLpRPwIj80dtMzBNrFM834m3Uo2+rXgRSlSfB1FRQj/UJuakinDJhBepjhI0T/Z87dvNke/imis6K1+ZNghCtLIceUqtlMICc32afoxpVksaS1k0M/mmOAMCGPqoLWqS0Mk8Kzp3VBiBKw3SrOjFTyXBBjIMbdI0fgfLGOVqDEXJltJtfRLg0X+0Cavgfu3xbDYvYl6SnlqSJQiOXkamqzvS7uqNApSZqGQtsrv1O4DgJ9D7gbWyVYAp4F6zHaCNaX9MA2KQ2ETET881EdVqqT46NMcFUhvdUWhnV7foHG8xmVCFMbCl+mqECoZgk/OI8Amy5ALMXKLfuS8bA8roO5zo1uv5/apqvbc+nuw5vHRWeb2JmiGbxcIQ9up/IpnA6digSe5lrGwAfaloOc8/JeNFqdcWJcPH7P6EOOytjlJ9Zd6lC7RWNmlnIcFHOEcSmU9+pX65sW66hFa0aZDjLM1lE5XQvcT4DWICFLMVazvWu8TagY0udzDglmonf/otJCDDTCjBtV2CtoiuVcaKIW MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: bd2aad5f-ce12-4b9a-aecc-08d43edb76de X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:CY1PR0301MB0748; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0748; 3:4ToOpCrbY8zaBV90oT5V8qFvUWeEDrsIgHAXodDjq0nVDNOTcO04qRQMaluvgRzzYfYEWiOgJB1agyeUygAQ2aNsPGrtPRiI5apsCzLQvezOkZwXyUUhXSTAfE82lTdYZiZ2xeg+u4uAJ4a0zpsH2Aby1uTt7eBTiczifCmC4z9fz8mR/XNBss8LpXR/0Ck3Jgu3+3mvjE7NS8RB7rYmH5J7XkOZZ6uD9LR/FwNTVwm+Mkucadw62WRKZRkAzuFGu2tXm8T9VwiwmDjAzvUKwDU360V9XNgmTHgSOKsztCI60f8wGmsv307C1ZbDEYMaC47EQAQDVfm6jnBzdM0BxlssQRsoqR3A62LyvCmXXiPCQGi4tt3C6Gb2VaHs5ub6; 25:9DjvYjOCi6s985eRFkEzAutl3B/M758oOe5eyIdEEpTlYpn+Ewk8+lVsFE/2LM+MiNJZI4j34M1UQ+tQmIJfWf8KkAjoyRnT7VYG8YVL5i0x2tIz+CC4aKSC0Aqf/DBRNVYrw8JhgSUOcPd9yfzRcPX7SAN9SwsnnmOOxr0F032K4Qf+DkMVjas5lfWgxnLMkvHCoOIxk6JripAS1s/5pN6MHWcxlWk2NRv/wXuo+gRRNiDS6mgEtnHyYJHj+/lUCDIXogu4VwwNQMYRacn/V+uw3gxE6ShYJhH39JYndJdxATqw/V/eISTEdOLjyetoDRJqXIMd83Esr1kCR0rQ1GhU2KWQCsKL0zoU6GM9SufDo2OnhL7FQQfJT/44r2xcjWbzNdAqdEfNHbCpqwOJrB7TikX7kmbJjsnYUq/4JXJIrQoRKm8gmx1fg3nkX6cYh3L3rqKqZ/6HDLk+/rz5Bg== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0748; 31:9QcomjwzIXNvwyj0LxpP+r4iZmObqX1xI632E9943q15yfOrMomd+DC5w46XhGtVu9HfLYL8vqHguh7czfoLUX7Ril2HtY8zSzCJ6wR9XYDqjHxSGo5UeeOA5B8LF7NipbGjFdzecfqIK1GCq5IOOiDimZ2mXu8MgqySn8FwZjJdAOK8bBVmmh4KjtlQiWS+4zY+7oL3fYQNANuVwvHxpKWx6trGkgeRkqx4QEa7WxBlOyOZwu1nljGBycEO9JqIvtNIyV38ZwbMamQmRUXOIw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095060)(601004)(2401047)(8121501046)(5005006)(13024025)(13015025)(13023025)(13018025)(13017025)(10201501046)(3002001)(6055026)(6096035)(20161123561025)(20161123556025)(20161123563025)(20161123559025)(20161123565025); SRVR:CY1PR0301MB0748; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0748; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0748; 4:7hTWEBPwMFgAFOu9ka22uq51Y5IjUVf96P2yDH4geD5Ub8w1iTM++fgC0Nm+fNLuvji5Vc3fxlgsPN7xYKm4qYOOQAm+Sje/cQeyj9cVFTsK0ATu4A7eNCTvdV8b2yvG/duAOY2pXgdFAzYWQP3Im05ZF6LHp/aMfl3xwsCUxWmD8FW1e7O8D9vU9lWLI4o1eEhbQ1wIvLb9V3kvbq5LZpURa3gHzx90lBP9MVn/Grkh3/DXDK/MbNisbEo1AMqr9L0xji0uRn/dlWtSFqZzMx/EDIaEeHQ4BfD9JPu+hCCOltUYyHE/QpVs1hsCAFuCNYgqr5SxaNabUXD8kz8w9NSv8G9pHLSH/uM8LNGmAGM8YGOdv4QKVlt3P9Wz/A5EiMr7vYuEEi82tOm48jBo4BoQUNZw8m4PvNRg0RFr1O848e0AXiF4/jBlixclYPh40pDHCQi3OZTDjJzMzK6qyDxjMr+4xDRPe+ZzlNbJgXF0Ceib+vOWCj0kUr3xGO77CYeuVs1P2sp5Na5aCxIbZm8lEuHpLlsJmR87eqePDRi2WloJodqidZHRUNE2K0VsxzsgEYb+i0wQyKAhsqDYvAV8d5LUxSpdDxjZekEW+MZXTAemImnb+IaD7w3hOaDGduQkZO0smJ8wWI9XyTxSDBcnKlVQ+Do2wLxKAqxB3EXa4/Bx6m9DIQmr/gir0u2MvELrrXDG5ejpHHrDd52A066yorl875t2BYhAanVmQase3PIgQDX9gQId5EZ95lWF X-Forefront-PRVS: 01901B3451 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0748; 23:I833bN4dWdhI0Q6+Ohk7tybJIEbXPg10/u/le38?= cgQ3Q/Xj7wSOYP3UMllzpDgI3anrU0a1GzC+A4Obd45jNFbkWC9nMGpEYQlufP2Lzly0ffT0ZH9o9o37Bbo1vwzJ6AkoTXHzgCGpVL9zUQ8VUOOSNOh/q+7NOaZFmfa71hyQ6BxZdGQSyUcfOqz6uAC7025x1CZ6Xv5CgywiyTg7sXI+DgtXKeSgjj3oEiBZ30GLb31AEZ3iItw+Ntx+2YqFueS+SU+Ty0kgwsRuvgg5pWtdKylaORd9IU0Vp5GN8PhOchu+xtlWEkV5JjBvfgiST1XCRy4Yw6Ft90N2+svNlsKFjSXf9YrDsvU63nM2BfljLSOdjFtLVB2HQx/eBQ5Cddy99CJN6lA39FArOuBPza557JN8K9It94SxOiQdAazY8Y+vvtViQIFKKISZaEWSMb7EFfqSaJi4v88MR1Pcm/GOqDUFHc4IvMt247RISiS8F/8TJ7KCm+sTLz/hNDW6p4+sl2O9uqPf/vwDghbDkm2J8e9AhCtgXfgxCAByMPHooFBO0pTZo2ggdc4QyI9DxwdDQ1he2f+kh2ubWTV96cANb9vqB8MnxNS/Y7TjtHmCX8M2ldBpCrM24iTR999UJRfw78P3eRaWixVcXnp5iz48/VCsyFA0sGaUHLuQo984uw/40Y/A5G2KqPaSd6FhZizlGFV/TTYqOBfLZ+IVEKnA4hjeMMu9NCFjSIcPCUiiLKUmxlv6AKwEVXd13PnP2HNtHqgbwNtuqpXSAj97ldaxksUGTJpiP1jUKZs6d9Q5DrwPPe2PlgScm6+tA6vAbvM/5I3DitsYcHcuBzGTTK2GvgVDrGDzpDftp58xEGHyN0u3f3FY2H2XWYjYibd2LJ5pdn5xKfe1l/u5qVs5t5j4h8E+Um4QRHo3FDU+ppFZ6Rw4TR7fSqxuyZikE+/s+U+WnXaImtxYt4vqL+poWpoWOnp225+J7AgNcn6OOr6W0Oi8kXd5gMN7IO/imwzLdXyHbCgdkCsLHJVuPsaSB84n+8goynbYFJTS2D0r1wVBBnHQJk6L1K7QC8BaGgn4a7ji0JO4YrLrwLeDEPKem4C7facko7jQtA29kqG5lN7cDJkiLfIvZdk5y2ylY8+bo3GUZoFasSkyzmDvz6zEwdt6WIJ+YRn8jMTpR1dt8JVVOUVeXLXCdlInB0/xFPz7/EpGIHx0cmy1YDRcld0PVfPUN15MPjqO6L5yUcWMuFcOzuicYa+zf/jIP2+kdJNCYyslL9xaXSE1aqGNv64orTIDeeVcWtKz2Pnvkh25gGRs= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0748; 6:GEFtu4y0NCZxcUdbR+szHrOumcKvZeZUXXInjoqfxiO4zHNvbE5fny9pDjTshMg8SEYtaC5BCL4Im0iA5DjzMn7rsT1ZFOS2ioOBzhZLHZdmzX7o3jryvIGpr0tIwXH5uVV4+n8hxPwE+BgAP/f83ZGYA7a8cWfynby5EBQYDKfdm6w7azPT14ttVzTfCSrCUM/8P3+bMeI0LJlCNjZEzkEgC2oqPmV7olapD1fuMw7909q7+ULJAdYFK6PNg2y0Ou3mfD/1DTJ59rGUnevznVPX6+qjqy9LB+p4Jk+WjHyHU3IRX9iNG3/noRJukcHst2ZyZ9UWj5HbE/lBpSNiEVkL11GRIaLp+KA8+ENmv8seSxPVrs3/9ZsjA3txJIkxIOZvqtemhV+Z1Z3weHWwDp95scj5u1lssVxiwmwMFswFtRz/qgL7hBBouYyr3m9w; 5:I83SnBPFqyqF3aJvde00ewYu6S5oMhjoAYYY2o4cQZ9Rc1IborJSfKnSN8bHvgssgSyUA05LOIZjyUFzuIuSUJNmmPJWW6KKaxddo49u2BNkWOGUSyzdICq0/v859+mIp2SU337kajy+bSKqAMSQwNFljkmcJnZACmjT9gH6JXD4SadsAUfHabTrynRyrJh7; 24:m/QON0rHfvMAkboxwfmvsPACDhA1ClYFEl4CHCwIUCY2buJaR5vco1vwt6x59otOxM3mwp19ugxE4jUBrkOXfW2nkNhSg+zRceJcyeZanyA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0748; 7:IJippCWb5nV+146RT9ebCR6/UPYBQvshYqzXIfm7YQMfcc0SSjSMT49MTEYkFj4ydE2z8SqW4etTrr1Mkl6LvRY1bDBnEjymvPBnXyFRaWyURno/XuHyPeBwgQeESMjxeAvzUbnVXTrGTHeanemTdEm6efeMCW6RKPQlVg7tbilQCvjTGT1cuXGvD+ESaFo+Ww2vtcBKuYLEDfCUlNdVWtdJwE/Xxx7nV2YhIHfp4eiPEPezmxh4mpYg4lYoperhAh5Ip63T82HtYJ1VxTbqJRCCJ09U71rpL4KUEMOiN9PY3lv9K4LfTQ0EWesB+u57xxa1Zkv90QXUl1KDvz6vmq0SzbcDq0KxZHPppYN51RoKxFWioMEomNpZwWsFKzIYutqI6iwQKbbXjW4y/qDImY9DMsw0R8RwM5sBrtakOopfsmZIM+d9unpfFvyamAM021mnZjvpmNjAMnCa5cRknw== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Jan 2017 13:19:27.7587 (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: CY1PR0301MB0748 Subject: [dpdk-dev] [PATCHv4 04/33] bus/fslmc: introducing fsl-mc bus driver 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" The fslmc bus driver is a rte_bus driver which scans the fsl-mc bus for NXP DPAA2 SoCs. Signed-off-by: Hemant Agrawal --- config/common_base | 6 + config/defconfig_arm64-dpaa2-linuxapp-gcc | 5 + drivers/Makefile | 1 + drivers/bus/Makefile | 36 ++++++ drivers/bus/fslmc/Makefile | 52 +++++++++ drivers/bus/fslmc/fslmc_bus.c | 139 +++++++++++++++++++++++ drivers/bus/fslmc/rte_fslmc.h | 147 +++++++++++++++++++++++++ drivers/bus/fslmc/rte_pmd_fslmcbus_version.map | 7 ++ 8 files changed, 393 insertions(+) create mode 100644 drivers/bus/Makefile create mode 100644 drivers/bus/fslmc/Makefile create mode 100644 drivers/bus/fslmc/fslmc_bus.c create mode 100644 drivers/bus/fslmc/rte_fslmc.h create mode 100644 drivers/bus/fslmc/rte_pmd_fslmcbus_version.map diff --git a/config/common_base b/config/common_base index 936cf2b..b91921d 100644 --- a/config/common_base +++ b/config/common_base @@ -284,6 +284,12 @@ CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=n # Compile Support Libraries for NXP DPAA2 # CONFIG_RTE_LIBRTE_DPAA2_COMMON=n + +# +# Compile NXP DPAA2 FSL-MC Bus +# +CONFIG_RTE_LIBRTE_FSLMC_BUS=n + # Compile burst-oriented VIRTIO PMD driver # CONFIG_RTE_LIBRTE_VIRTIO_PMD=y diff --git a/config/defconfig_arm64-dpaa2-linuxapp-gcc b/config/defconfig_arm64-dpaa2-linuxapp-gcc index c57c340..800e22b 100644 --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc @@ -46,3 +46,8 @@ CONFIG_RTE_MAX_NUMA_NODES=1 # Compile Support Libraries for DPAA2 # CONFIG_RTE_LIBRTE_DPAA2_COMMON=y + +# +# Compile NXP DPAA2 FSL-MC Bus +# +CONFIG_RTE_LIBRTE_FSLMC_BUS=y diff --git a/drivers/Makefile b/drivers/Makefile index d5580f6..bdae63b 100644 --- a/drivers/Makefile +++ b/drivers/Makefile @@ -32,6 +32,7 @@ include $(RTE_SDK)/mk/rte.vars.mk DIRS-y += common +DIRS-y += bus DIRS-y += net DIRS-$(CONFIG_RTE_LIBRTE_CRYPTODEV) += crypto diff --git a/drivers/bus/Makefile b/drivers/bus/Makefile new file mode 100644 index 0000000..60e9764 --- /dev/null +++ b/drivers/bus/Makefile @@ -0,0 +1,36 @@ +# BSD LICENSE +# +# Copyright(c) 2016 NXP. All rights reserved. +# All rights reserved. +# +# 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 NXP nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# 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 +# OWNER 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 $(RTE_SDK)/mk/rte.vars.mk + +DIRS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc + +include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile new file mode 100644 index 0000000..c4f22ed --- /dev/null +++ b/drivers/bus/fslmc/Makefile @@ -0,0 +1,52 @@ +# BSD LICENSE +# +# Copyright (c) 2016 NXP. All rights reserved. +# +# 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 NXP nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# 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 +# OWNER 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 $(RTE_SDK)/mk/rte.vars.mk + +# +# library name +# +LIB = librte_pmd_fslmcbus.a + +CFLAGS += -O3 +CFLAGS += $(WERROR_FLAGS) + +# versioning export map +EXPORT_MAP := rte_pmd_fslmcbus_version.map + +# library version +LIBABIVER := 1 + +SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc_bus.c + +# library dependencies +DEPDIRS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += lib/librte_eal + +include $(RTE_SDK)/mk/rte.lib.mk diff --git a/drivers/bus/fslmc/fslmc_bus.c b/drivers/bus/fslmc/fslmc_bus.c new file mode 100644 index 0000000..7efda07 --- /dev/null +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -0,0 +1,139 @@ +/*- + * BSD LICENSE + * + * Copyright (c) 2016 NXP. All rights reserved. + * + * 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 NXP nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER 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 +#include +#include +#include +#include +#include + +#include "rte_fslmc.h" + +#define FSLMC_BUS_LOG(level, fmt, args...) \ + RTE_LOG(level, EAL, "%s(): " fmt "\n", __func__, ##args) + +struct rte_fslmc_bus rte_fslmc_bus; + +static int +rte_fslmc_scan(void) +{ + return 0; +} + +static int +rte_fslmc_match(struct rte_dpaa2_driver *dpaa2_drv, + struct rte_dpaa2_device *dpaa2_dev) +{ + if (dpaa2_drv->drv_type == dpaa2_dev->dev_type) + return 0; + + return 1; +} + +static int +rte_fslmc_probe(void) +{ + int ret = -1; + struct rte_dpaa2_device *dev; + struct rte_dpaa2_driver *drv; + + TAILQ_FOREACH(dev, &rte_fslmc_bus.device_list, next) { + TAILQ_FOREACH(drv, &rte_fslmc_bus.driver_list, next) { + ret = rte_fslmc_match(drv, dev); + if (ret) + continue; + + if (!drv->probe) + continue; + + ret = drv->probe(drv, dev); + if (ret) + FSLMC_BUS_LOG(ERR, "Unable to probe.\n"); + break; + } + } + return ret; +} + +static int +rte_fslmc_attach(const char *device_name __rte_unused) +{ + return 0; +} + +static int +rte_fslmc_detach(const char *device_name __rte_unused) +{ + return 0; +} + +/*register a fslmc bus based dpaa2 driver */ +void +rte_fslmc_driver_register(struct rte_dpaa2_driver *driver) +{ + RTE_VERIFY(driver); + + TAILQ_INSERT_TAIL(&rte_fslmc_bus.driver_list, driver, next); + /* Update Bus references */ + driver->fslmc_bus = &rte_fslmc_bus; +} + +/*un-register a fslmc bus based dpaa2 driver */ +void +rte_fslmc_driver_unregister(struct rte_dpaa2_driver *driver) +{ + struct rte_fslmc_bus *fslmc_bus; + + fslmc_bus = driver->fslmc_bus; + + TAILQ_REMOVE(&fslmc_bus->driver_list, driver, next); + /* Update Bus references */ + driver->fslmc_bus = NULL; +} + +struct rte_fslmc_bus rte_fslmc_bus = { + .bus = { + .scan = rte_fslmc_scan, + .probe = rte_fslmc_probe, + .attach = rte_fslmc_attach, + .detach = rte_fslmc_detach, + }, + .device_list = TAILQ_HEAD_INITIALIZER(rte_fslmc_bus.device_list), + .driver_list = TAILQ_HEAD_INITIALIZER(rte_fslmc_bus.driver_list), +}; + +RTE_REGISTER_BUS(FSLMC_BUS_NAME, rte_fslmc_bus.bus); diff --git a/drivers/bus/fslmc/rte_fslmc.h b/drivers/bus/fslmc/rte_fslmc.h new file mode 100644 index 0000000..6ad06a6 --- /dev/null +++ b/drivers/bus/fslmc/rte_fslmc.h @@ -0,0 +1,147 @@ +/*- + * BSD LICENSE + * + * Copyright (c) 2016 NXP. All rights reserved. + * + * 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 NXP nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * 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 + * OWNER 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 _RTE_FSLMC_H_ +#define _RTE_FSLMC_H_ + +/** + * @file + * + * RTE FSLMC Bus Interface + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/** Name of FSLMC Bus */ +#define FSLMC_BUS_NAME "FSLMC" + +struct rte_dpaa2_driver; + +/* DPAA2 Device and Driver lists for FSLMC bus */ +TAILQ_HEAD(rte_fslmc_device_list, rte_dpaa2_device); +TAILQ_HEAD(rte_fslmc_driver_list, rte_dpaa2_driver); + +extern struct rte_fslmc_bus rte_fslmc_bus; + +/** + * A structure describing a DPAA2 device. + */ +struct rte_dpaa2_device { + TAILQ_ENTRY(rte_dpaa2_device) next; /**< Next probed DPAA2 device. */ + struct rte_device device; /**< Inherit core device */ + union { + struct rte_eth_dev *eth_dev; /**< ethernet device */ + struct rte_cryptodev *cryptodev; /**< Crypto Device */ + }; + uint16_t dev_type; /**< Device Type */ + uint16_t object_id; /**< DPAA2 Object ID */ + struct rte_intr_handle intr_handle; /**< Interrupt handle */ + struct rte_dpaa2_driver *driver; /**< Associated driver */ +}; + +typedef int (*rte_dpaa2_probe_t)(struct rte_dpaa2_driver *dpaa2_drv, + struct rte_dpaa2_device *dpaa2_dev); +typedef int (*rte_dpaa2_remove_t)(struct rte_dpaa2_device *dpaa2_dev); + +/** + * A structure describing a DPAA2 driver. + */ +struct rte_dpaa2_driver { + TAILQ_ENTRY(rte_dpaa2_driver) next; /**< Next in list. */ + struct rte_driver driver; /**< Inherit core driver. */ + struct rte_fslmc_bus *fslmc_bus; /**< FSLMC bus reference */ + uint32_t drv_flags; /**< Flags for controlling device.*/ + uint16_t drv_type; /**< Driver Type */ + rte_dpaa2_probe_t probe; + rte_dpaa2_remove_t remove; +}; + +/* + * FSLMC bus + */ +struct rte_fslmc_bus { + struct rte_bus bus; /**< Generic Bus object */ + struct rte_fslmc_device_list device_list; + /**< FSLMC DPAA2 Device list */ + struct rte_fslmc_driver_list driver_list; + /**< FSLMC DPAA2 Driver list */ + int device_count; + /**< Optional: Count of devices on bus */ +}; + +/** + * Register a DPAA2 driver. + * + * @param driver + * A pointer to a rte_dpaa2_driver structure describing the driver + * to be registered. + */ +void rte_fslmc_driver_register(struct rte_dpaa2_driver *driver); + +/** + * Unregister a DPAA2 driver. + * + * @param driver + * A pointer to a rte_dpaa2_driver structure describing the driver + * to be unregistered. + */ +void rte_fslmc_driver_unregister(struct rte_dpaa2_driver *driver); + +/** Helper for DPAA2 device registration from driver (eth, crypto) instance */ +#define RTE_PMD_REGISTER_DPAA2(nm, dpaa2_drv) \ +RTE_INIT(dpaa2initfn_ ##nm); \ +static void dpaa2initfn_ ##nm(void) \ +{\ + (dpaa2_drv).driver.name = RTE_STR(nm);\ + rte_fslmc_driver_register(&dpaa2_drv); \ +} \ +RTE_PMD_EXPORT_NAME(nm, __COUNTER__) + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_FSLMC_H_ */ diff --git a/drivers/bus/fslmc/rte_pmd_fslmcbus_version.map b/drivers/bus/fslmc/rte_pmd_fslmcbus_version.map new file mode 100644 index 0000000..4d525ba --- /dev/null +++ b/drivers/bus/fslmc/rte_pmd_fslmcbus_version.map @@ -0,0 +1,7 @@ +DPDK_17.02 { + global: + rte_fslmc_driver_register; + rte_fslmc_driver_unregister; + + local: *; +};