.. SPDX-License-Identifier: BSD-3-Clause Copyright 2017 NXP NXP DPAA2 Eventdev Driver ========================= The dpaa2 eventdev is an implementation of the eventdev API, that provides a wide range of the eventdev features. The eventdev relies on a dpaa2 hw to perform event scheduling. More information can be found at `NXP Official Website `_. Features -------- The DPAA2 EVENTDEV implements many features in the eventdev API; - Hardware based event scheduler - 8 event ports - 8 event queues - Parallel flows - Atomic flows Supported DPAA2 SoCs -------------------- - LS2080A/LS2040A - LS2084A/LS2044A - LS2088A/LS2048A - LS1088A/LS1048A Prerequisites ------------- There are three main pre-requisities for executing DPAA2 EVENTDEV on a DPAA2 compatible board: 1. **ARM 64 Tool Chain** For example, the `*aarch64* Linaro Toolchain `_. 2. **Linux Kernel** It can be obtained from `NXP's Github hosting `_. 3. **Rootfile system** Any *aarch64* supporting filesystem can be used. For example, Ubuntu 15.10 (Wily) or 16.04 LTS (Xenial) userland which can be obtained from `here `_. As an alternative method, DPAA2 EVENTDEV can also be executed using images provided as part of SDK from NXP. The SDK includes all the above prerequisites necessary to bring up a DPAA2 board. The following dependencies are not part of DPDK and must be installed separately: - **NXP Linux SDK** NXP Linux software development kit (SDK) includes support for family of QorIQ® ARM-Architecture-based system on chip (SoC) processors and corresponding boards. It includes the Linux board support packages (BSPs) for NXP SoCs, a fully operational tool chain, kernel and board specific modules. SDK and related information can be obtained from: `NXP QorIQ SDK `_. - **DPDK Extra Scripts** DPAA2 based resources can be configured easily with the help of ready scripts as provided in the DPDK Extra repository. `DPDK Extras Scripts `_. Currently supported by DPDK: - NXP SDK **2.0+**. - MC Firmware version **10.0.0** and higher. - Supported architectures: **arm64 LE**. - Follow the DPDK :ref:`Getting Started Guide for Linux ` to setup the basic DPDK environment. .. note:: Some part of fslmc bus code (mc flib - object library) routines are dual licensed (BSD & GPLv2). Pre-Installation Configuration ------------------------------ Config File Options ~~~~~~~~~~~~~~~~~~~ The following options can be modified in the ``config`` file. Please note that enabling debugging options may affect system performance. - ``CONFIG_RTE_LIBRTE_PMD_DPAA2_EVENTDEV`` (default ``y``) Toggle compilation of the ``lrte_pmd_dpaa2_event`` driver. Driver Compilation ~~~~~~~~~~~~~~~~~~ To compile the DPAA2 EVENTDEV PMD for Linux arm64 gcc target, run the following ``make`` command: .. code-block:: console cd make config T=arm64-dpaa2-linuxapp-gcc install Initialization -------------- The dpaa2 eventdev is exposed as a vdev device which consists of a set of dpcon devices and dpci devices. On EAL initialization, dpcon and dpci devices will be probed and then vdev device can be created from the application code by * Invoking ``rte_vdev_init("event_dpaa2")`` from the application * Using ``--vdev="event_dpaa2"`` in the EAL options, which will call rte_vdev_init() internally Example: .. code-block:: console ./your_eventdev_application --vdev="event_dpaa2" Limitations ----------- Platform Requirement ~~~~~~~~~~~~~~~~~~~~ DPAA2 drivers for DPDK can only work on NXP SoCs as listed in the ``Supported DPAA2 SoCs``. Port-core binding ~~~~~~~~~~~~~~~~~ DPAA2 EVENTDEV driver requires event port 'x' to be used on core 'x'.