From patchwork Mon Jan 23 11:59:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hemant Agrawal X-Patchwork-Id: 19875 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 E2CE269C6; Mon, 23 Jan 2017 13:00:49 +0100 (CET) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0049.outbound.protection.outlook.com [104.47.40.49]) by dpdk.org (Postfix) with ESMTP id 911172C6E for ; Mon, 23 Jan 2017 13:00:25 +0100 (CET) Received: from BN3PR0301CA0027.namprd03.prod.outlook.com (10.160.180.165) by SN1PR0301MB1583.namprd03.prod.outlook.com (10.162.130.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Mon, 23 Jan 2017 12:00:23 +0000 Received: from BN1BFFO11FD025.protection.gbl (2a01:111:f400:7c10::1:125) by BN3PR0301CA0027.outlook.office365.com (2a01:111:e400:4000::37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13 via Frontend Transport; Mon, 23 Jan 2017 12:00:23 +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 BN1BFFO11FD025.mail.protection.outlook.com (10.58.144.88) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.803.8 via Frontend Transport; Mon, 23 Jan 2017 12:00:22 +0000 Received: from bf-netperf1.idc ([10.232.134.28]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v0NC07eR019311; Mon, 23 Jan 2017 05:00:20 -0700 From: Hemant Agrawal To: CC: , , , , , , Hemant Agrawal Date: Mon, 23 Jan 2017 17:29:33 +0530 Message-ID: <1485172803-17288-4-git-send-email-hemant.agrawal@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1485172803-17288-1-git-send-email-hemant.agrawal@nxp.com> References: <1484832240-2048-1-git-send-email-hemant.agrawal@nxp.com> <1485172803-17288-1-git-send-email-hemant.agrawal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131296464227701996; (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)(39840400002)(39380400002)(39400400002)(39410400002)(39860400002)(39850400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(8936002)(305945005)(50226002)(36756003)(53936002)(356003)(4326007)(5660300001)(2351001)(68736007)(105606002)(85426001)(8676002)(106466001)(54906002)(8656002)(48376002)(50466002)(110136003)(626004)(77096006)(97736004)(38730400001)(6916009)(76176999)(6666003)(47776003)(2906002)(50986999)(92566002)(81156014)(86362001)(81166006)(5003940100001)(189998001)(575784001)(2950100002)(33646002)(104016004); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0301MB1583; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD025; 1:MFzbzv1wyHt3TWR20TRI0t0DWVrG9rqblPrvDrB+DsKkltUMr0REAvvcfyN9hidBDbxIyvOyPioC1sG4oAsAYVi1R3LdxvMPHyGtlOv1ZF4VUVXdgCFV3nxsP6LMwYGJ1WxeQpAFJ+QQMJFbarnFEyUSpgBnYdEfj40b+1QV0rS/r6Ou86sxAqFy5BvD71xRf830/8AMoz/O7ACtgZeneKh5eilO3lRJLYjWNi+Nbzu3XAkvK7kPzLzTFoRcszpyNwqjNIWxmGg8rAYz5tPGu7AS+YiF/H/sKTI6S1DM/YTTOPeKr80AftGsjpRBOZsexLHVFG4WF1vTs1RCqbCnaimHE4T64TiqGH6z5kSOkkoBU2HIoFh5FCXop2suYTgVSaClfO31jpt7se11yayMrcizv4EMu3BkSRstYkFvQpZPjNZQoFR7eegZCmPigruIHXVNtZ5pWOPdXDzkeivxE9Qs1/esW2Z5Tp/c/gr6E6bYVK+ptyHQjieQTQYsd55lB1RwJnM4QjFBCj3JC/32kQiT76pTjP162Ws20K54PvbDqnpmRTLu1Fi20vbhCkk8enHW5H/JEaZKUp/5h+k2zPLOTgDNId9apABsPL+fmHmlg2h71qdmwlsjSFg4RIg+vpdt2U9U9HPVeoHsh2iwyhoc1AbQ8eknl2UZPu1SuHARWMdqO474CsTQl/2Zj2w6arguI7MkodxW9LDPbnhFFdSqpFVYc2ucWPLXzVEWLV0kzOQs/g9RFZAykgqK90zv MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 20f9a7bf-56f3-4ec5-3391-08d443876903 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR0301MB1583; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 3:jJOzWtX3tvdI/Ij7bQXlcUx8tiATl9wfIGK035VkCtpXqpHAuTxWnU95NpC/YKh06c4Xc+TtEEmzmxRY3fSmlYGuX2M3J4DKptUBeIDXRKApBE7DzYQOnVfYFyxEjGklxuLFKyfS8aFKt3iVdfcZvi1An15j9fazInDKG2dNiG5DkFKoHdPO1me6BlcR57HAmoj/pFS9SFlZw2tTjnMCI4hixDL8bhzWGjmXpfL6T4LAwYNQX9Z5n7y/BdW/tLV6RhIz0JarJsA5SmA9UVhsY+BZ3O1VONQJLJEybh4qwJ8K3SxHyGsGyfIC1uS0ihVi2+4bBX6Jv/kXEpnGdIY1G9Q+em8j4xtpNAiABIfpn8s+MO0axa+CGEpaIrWhjzFH X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 25:5tT2jo2jAuYxxZxUCRSkuLdfYrhWaw/O8A+oCheaxcmxNEtj7kt7HOT4i+7gbxheX4M4ayLssskZwMHdrP34qTdQR8f9HIb1iPoRqJC5OnVZQ/brfdkmqIKBJxwvFrzBgtpBx0UDoYDMLpgRyRWtzBaUFoSBGNmEMdWcjWNio30X1g2mmyRIv8fegyOOBt6lNmKR0NQBCOynPMtuWx5d/+XlqU4UoOx5qirED9mfJGEXaHqvXiGuwhlmbvyvLBYcTsixuDJTn0zuJs4p4sxIaskWnw8GTWOWWHStZLcJf5SNzfdfeSELrDSrlWQR17cotbbrXYFtYUh6nXxoobz11un3zxEF16EjgrzHq90z4B5ZFAESE06s/IK5nGfDgDjYXTaHnPFrI0dZLciz0iSKtMd7wa8UtKjv/TsQM/Owx10Lg7rzeIIbObInLNiuRNEqVg3uxofw7llby4zUpuNWIBAxGHFGSzOE9joWcNQNawPplx/VHkWsQ/mspDYyXQApaogoSttAbq1/yoTVEtzxneAoVp76SqorYvYJZiF97bQB4FdW4Rbqv54jHUtAsb2rCfddrq9Bq/SmYhdAj20V8isHPUuV2rupLC2JY5EuLM0z3/JohdbyjAyVo4iQiHfbsubp7yiolQDCEuFY3pQHQIi0TZfomcWVBQCCmg0X02rzxehu5hQyiuq+lI/Qzgcw63acI2duqq46l9EHrj335RGo6GFRRKMLv8DDmaS9f9n2GR7tL2GUOo77BQF3vHDiluHlqAAQp+Vz5Ba8p8BJeJXSBO/tWJYCn3V4XdoEsJ0= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 31:FnRhAq6SF1Q69L7KTC9ceYR9UDW4LqwGWlzOxdKNmCg8DAuvLkzD/MxA80DDbhqy7g0o6FYLCqQfRhvdrecZLG+Aj4QdeV9WAmPTHndsLl2C+FyeMLv+gxxnjAkIMdaFD1K63x2ZhVO1ghg8zjWwhyTfdYvhzTCj85V3VOvKWg2FYyUfbMx7MrVWLQd1elzlrAnAGh6+cpACHZ72mYs1kIQhq5rWSApzSXWEFWiaDO7Q6v/GAU/iF6nS878NJTm7Wesd+NEDPtvKGV0i8c9cmApwbT7FEyMXv3cQW0HEK70= 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)(13023025)(13017025)(13015025)(13024025)(13018025)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123556025)(20161123563025)(20161123565025); SRVR:SN1PR0301MB1583; BCL:0; PCL:0; RULEID:(400006); SRVR:SN1PR0301MB1583; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 4:WFxZtRE08nQJp6ag8nGQ4DJlduiitHOayzHzm3ghnvqw3hmdOLYCyMk8wBrPbGwSANcsdyh1/cJRyTk2vxcIkLIpgjxsN7aDVkrupzMfpvORGci6rS+l7XagC0628EcstuLbvcQ7ySIVTUXsrW6+0d0VS/DBgT6a4QBFr9KVkFkP2i2Lsf+QsKTS+YLqqJWthML/yV9XI94eur0RFN0vyW496rFywBr9UJlZuHv7xkyx+LcD/m+mmMP1PVW2EOqNxAXdMlhfsJAiwTnXd7YRkhjW94tZtCP164U2sE5qNceahsGZeILk5f3wb3ABcTy7MjjurD9OWNfpzvSJppV4lFLFNDoVdbaUZGPCyorxO7xY7SgvAMmMuuy8mW3S7z6D1GnRQ8M+p2y9Bm5zmYfl23U74xiAiqoygS+eZyddxmslka8N2HBNxAUGuG1N/Peyyj6/DwdxX50HmVa1LU4WC5Wl4fddHSs08fCav6u1zD8OknkyusAYT4MyrSRUrW/58HDjmCg0uH4fuuOZ6dlO/hwHPmBCPsqZPWyIHnO4hnzg3F6BNZsHjoWewxcAkfyttiT2NTpn8tdsv2iNX5T42MAK/Ja4Cnd7+Bf+HkVkf2mS4uRkEn16BB4BuzT9fl2uN9G2KaVAhmFFQlxum6dljOFbRlDhL8B+1VIYyUG7qL4MycLocEPRy2Y9qwYakB/aRh7iOjci69WqSCJ/58v7zjnu0h7N55L+RI/VBuTTkTVGckaj6Z40AIsPWRlowmY5 X-Forefront-PRVS: 0196A226D1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0301MB1583; 23:kWKTXXOWymkly0rOfiNsuFOfGCQLt2jLjekBCIw?= TO/447IxNgJSEP0VA2K4u7q9jTOLYpDSrb4t4Mgtk1pzb/IsP65jNEWUde7qvNfKmmSNSVv4xQkweJHo49G+jwZpby8oCoUDlQdKxmPmiqGs8pnGXtaV0rl+UXCp7X8Q2mwnEWrPMaAPHBO01VY/tPaiiX/yjUxbLFr9TolVxF7HRlsRTL7Z6ecYTqouoAYd+7RkzNQcFzUk3nRh4KyySdUpIjNCn2a2VDTgoE6gpqBXxrGclA7EEtk8RjE2X2OBXqKZ1a5jdspjZbSblr6mSlRBp2MqO70WP0HAP+QQNKxdrZvvq3rSzdZ6AxbN+1+KIrD9U8V7isqc0yEFIPb1QM7qwryGe7NW4ZqgyHyTHONK9ScWiOCQ+sxPhHxAS1pCpfRFR3hQhQyYA49xjZ3840s+ro33nyT4TTVxVp8xyhT6EKmpyVaB2kuwVsNy5vcICuzaVeC349dCSA6NasMMmhdAh4HsHvxDV3EXUfGaIF/XCTz2fh9DUrK8l5GqIg+0yayvUvfYohBspHw8/c814/jWD1beXbCD2YNVpCyklvdSD7j28hiPnv8ALM89B2S1wWih5kCp/I1GewEAb5DG60CPDRg9YF4qNTnFBLYhk3BiBCnpCZAnchno47ILh2tLHHALDfTkgjkyVWvaTN+SXD1GX8+3ROqXf+XmDMFo9fpOEcdXjiIkO1iNiQpFsLkRBekuhH8NitucI0YIqk97V7vWi/MaZukER+PG532kPqJ25AJBh2hzGRVlqKgtgHdlrH7Xbuw01W4u5jOCd3TaS/iQHeh+1j7rUabmM9j6oc1oAnornMocdCw6cRamf57kbDKNcTZ4PoYkSguKf2teFklDT/oKQcKXpUiEiPL4gHmPRRZ2v9ThBjsxDkBDGp72qztN2qVCWsztB9+aE8JGjlgeWEGPbUEy+hlO1ECfMbK6SFNjpGE3F7FurNCQr4a9sfAeDd/3CAkpOdW2ZGwccojSMjWQyqmz8pPBPR1z2dXtBcMf7/PiI5Y0HcjHEYIehM0BpneOQkqmBYjKMWSlq1gUJg4PoT417txlSMM4z2k6PaHHRzcUlHfkNPceTulreNO3fXXMPU4GzYhJ+6dzdHcZY8yktNfunc55DhbkjeRltFZKwKjbnPHlWmtdwmCnFwny61r6m1Ra9FQFz6kJkTb567vfKn3boLh/+e5wIaX1QKsysLWmLOhx8bOJ99bDXL7YrEAWEXdj3MWU9GvaKWijpTmsWvPB7Kjxhjqx5zb53jJAFarIUFySJIK5EBGS2AUebbIP1XTnsmFzxQ3ZneFDm X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 6:54BWfsf+snpwvd5SyErjYORD1pA6725uYjVRpivS8a7HxdKtiseiqxk+L00bgVKQG5iwTZERya85FTG9QKsspLS1WEqQsgNNyElfSgbc/ljrX7RkKTl/jFIsKNys9bIykp2vLWEZtRapsP/rksOH11xJ5WwFf7q4FG7jL4IJyXHbXTZTYLPRxLpcaYrKXMFNklGa7im2XWWSQkw4890RQL41Gnc6T6Q+bNRK7ed/MBGfSz34gWlJjsp61+AS9h4RbFIer+ztSECTuYhu8p6IPI+RVAnx8hfWF7uuV6WbyIKV2pVHR5gwRUENX4kVaw9/VjGu0raUpnoyzpx756VXQOkeJC5wXUb7USX0ZfIMUJkIiPkC5NwlinbmCUMgbLsNHqf0a92P0G877zXg/KzjDVXZkgRoi5w96htDrEzhCpMn3Ds25D+4xcr+BOhUiXsw; 5:SyR4lbqIQgEPtNBuEUgZePVk8e1b412Eg5hPHI9smh/Jm7XZrzCYP8X/df+QeGZyh0fUkuxP4J0RYTNqYdMILT4uoTho76ctsTI7UgMrCWhvz4CvORJaPvhjqu7umoRGNKxgNWiRnhWA6NfNCdziWgJFEAjAmfw289hxeEZxJ/DnxT4vzhtYpfj8YXgEGY7+; 24:ivna2Zl8p+7z6cSEp9GqTE69Hj+UaRw02csDI4eKf7lkSjY5oDvZhfgAj5Y95X2+x8Mpwpt5NaGcNnsFnoc8h2CLnBZJg3sdqOXrVIoXZpE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0301MB1583; 7:JjaFhpqGBhfBsniLItnj0e+f1zegEYLoaYLMHVIh3BxbAW5jwxt9zptIaHGsvdlYrw0F4+WneOq4ws4aIjgKpqMIvONSCc9ZYJoNHD4v/XA16NRj8Bd2ywI6jD967DSmph+SIZM70Jdh6MQXuHaCjty1yrGmFtzNuArJmm6lf0qLfrM8VQ4hSH0VE0oPGpK7fPTiLXCIIW2pzumbSaCAXdaxLHU9y+b5XP4ackZ/GprYeDtlRteQdWQmGtdxuHPvnfhVHsfc7f4Y4xruItjNwWn3kcTkvTHH7m6Zpm3SIVffqxRlORNDWVbuARdNVUOMe/EbPRGDAi3LjUuPz9zU8YgE/Oa0YYc0sE8w2/S0ULjLts6p6xki8dJOXg0L22dTcK4odgqVc44XXWYdbG+U7Fk/XqbZJWA8x0Y8JtG2KxAWUwhiYdAZ6imoQgb0gmltvZtA4ZYJkwmPju+7t9wxww== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jan 2017 12:00:22.5674 (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: SN1PR0301MB1583 Subject: [dpdk-dev] [PATCHv6 03/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 --- MAINTAINERS | 1 + config/common_base | 5 + 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 | 125 +++++++++++++++++++++++ drivers/bus/fslmc/rte_bus_fslmc_version.map | 7 ++ drivers/bus/fslmc/rte_fslmc.h | 148 ++++++++++++++++++++++++++++ drivers/common/Makefile | 4 + drivers/common/dpaa2/Makefile | 4 + drivers/common/dpaa2/qbman/Makefile | 4 + 12 files changed, 392 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_bus_fslmc_version.map create mode 100644 drivers/bus/fslmc/rte_fslmc.h diff --git a/MAINTAINERS b/MAINTAINERS index 5ad150d..4a13140 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -356,6 +356,7 @@ F: doc/guides/nics/nfp.rst NXP dpaa2 M: Hemant Agrawal +F: drivers/bus/fslmc/ F: drivers/common/dpaa2/ QLogic bnx2x diff --git a/config/common_base b/config/common_base index 5564d92..bf1de8f 100644 --- a/config/common_base +++ b/config/common_base @@ -287,6 +287,11 @@ CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_TX=n CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_DRIVER=n CONFIG_RTE_LIBRTE_THUNDERX_NICVF_DEBUG_MBOX=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 da23bab..365ae5a 100644 --- a/config/defconfig_arm64-dpaa2-linuxapp-gcc +++ b/config/defconfig_arm64-dpaa2-linuxapp-gcc @@ -41,3 +41,8 @@ CONFIG_RTE_ARCH_ARM_TUNE="cortex-a57+fp+simd" # CONFIG_RTE_MAX_LCORE=8 CONFIG_RTE_MAX_NUMA_NODES=1 + +# +# 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..5a0fd61 --- /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_bus_fslmc.a + +CFLAGS += -O3 +CFLAGS += $(WERROR_FLAGS) + +# versioning export map +EXPORT_MAP := rte_bus_fslmc_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..8a4f519 --- /dev/null +++ b/drivers/bus/fslmc/fslmc_bus.c @@ -0,0 +1,125 @@ +/*- + * 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; +} + +/*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, + }, + .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_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map new file mode 100644 index 0000000..4d525ba --- /dev/null +++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map @@ -0,0 +1,7 @@ +DPDK_17.02 { + global: + rte_fslmc_driver_register; + rte_fslmc_driver_unregister; + + local: *; +}; diff --git a/drivers/bus/fslmc/rte_fslmc.h b/drivers/bus/fslmc/rte_fslmc.h new file mode 100644 index 0000000..040ab95 --- /dev/null +++ b/drivers/bus/fslmc/rte_fslmc.h @@ -0,0 +1,148 @@ +/*- + * 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 +#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/common/Makefile b/drivers/common/Makefile index e5bfecb..cba1134 100644 --- a/drivers/common/Makefile +++ b/drivers/common/Makefile @@ -31,6 +31,10 @@ include $(RTE_SDK)/mk/rte.vars.mk +ifeq ($(CONFIG_RTE_LIBRTE_FSLMC_BUS),y) +CONFIG_RTE_LIBRTE_DPAA2_COMMON = $(CONFIG_RTE_LIBRTE_FSLMC_BUS) +endif + DIRS-$(CONFIG_RTE_LIBRTE_DPAA2_COMMON) += dpaa2 include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/common/dpaa2/Makefile b/drivers/common/dpaa2/Makefile index 4960ebe..9681729 100644 --- a/drivers/common/dpaa2/Makefile +++ b/drivers/common/dpaa2/Makefile @@ -31,6 +31,10 @@ include $(RTE_SDK)/mk/rte.vars.mk +ifeq ($(CONFIG_RTE_LIBRTE_FSLMC_BUS),y) +CONFIG_RTE_LIBRTE_DPAA2_COMMON = $(CONFIG_RTE_LIBRTE_FSLMC_BUS) +endif + DIRS-$(CONFIG_RTE_LIBRTE_DPAA2_COMMON) += qbman include $(RTE_SDK)/mk/rte.subdir.mk diff --git a/drivers/common/dpaa2/qbman/Makefile b/drivers/common/dpaa2/qbman/Makefile index 5e64d23..7ac1ba7 100644 --- a/drivers/common/dpaa2/qbman/Makefile +++ b/drivers/common/dpaa2/qbman/Makefile @@ -36,6 +36,10 @@ include $(RTE_SDK)/mk/rte.vars.mk # LIB = librte_common_dpaa2_qbman.a +ifeq ($(CONFIG_RTE_LIBRTE_FSLMC_BUS),y) +CONFIG_RTE_LIBRTE_DPAA2_COMMON = $(CONFIG_RTE_LIBRTE_FSLMC_BUS) +endif + CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS)