1583f3732SGagandeep Singh.. SPDX-License-Identifier: BSD-3-Clause 2583f3732SGagandeep Singh Copyright 2021 NXP 3583f3732SGagandeep Singh 4583f3732SGagandeep SinghNXP DPAA DMA Driver 5583f3732SGagandeep Singh=================== 6583f3732SGagandeep Singh 7583f3732SGagandeep SinghThe DPAA DMA is an implementation of the dmadev APIs, 8583f3732SGagandeep Singhthat provide means to initiate a DMA transaction from CPU. 9583f3732SGagandeep SinghThe initiated DMA is performed without CPU being involved 10583f3732SGagandeep Singhin the actual DMA transaction. 11583f3732SGagandeep SinghThis is achieved via using the QDMA controller of DPAA SoC. 12583f3732SGagandeep Singh 13583f3732SGagandeep SinghThe QDMA controller transfers blocks of data 14583f3732SGagandeep Singhbetween one source and one destination. 15583f3732SGagandeep SinghThe blocks of data transferred can be represented in memory 16583f3732SGagandeep Singhas contiguous or noncontiguous using scatter/gather table(s). 17583f3732SGagandeep Singh 18583f3732SGagandeep SinghMore information can be found at `NXP Official Website 19583f3732SGagandeep Singh<http://www.nxp.com/products/microcontrollers-and-processors/arm-processors/qoriq-arm-processors:QORIQ-ARM>`_. 20583f3732SGagandeep Singh 21583f3732SGagandeep SinghSupported DPAA SoCs 22583f3732SGagandeep Singh------------------- 23583f3732SGagandeep Singh 24583f3732SGagandeep Singh- LS1046A 25583f3732SGagandeep Singh- LS1043A 26583f3732SGagandeep Singh 27583f3732SGagandeep SinghPrerequisites 28583f3732SGagandeep Singh------------- 29583f3732SGagandeep Singh 30583f3732SGagandeep SinghSee :doc:`../platform/dpaa` for setup information 31583f3732SGagandeep Singh 32583f3732SGagandeep Singh- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment. 33583f3732SGagandeep Singh 34583f3732SGagandeep Singh.. note:: 35583f3732SGagandeep Singh 36583f3732SGagandeep Singh Some part of dpaa bus code (qbman and fman - library) routines are 37583f3732SGagandeep Singh dual licensed (BSD & GPLv2), however they are used as BSD in DPDK in userspace. 38583f3732SGagandeep Singh 39583f3732SGagandeep SinghCompilation 40583f3732SGagandeep Singh----------- 41583f3732SGagandeep Singh 42583f3732SGagandeep SinghFor builds using ``meson`` and ``ninja``, the driver will be built when the 43583f3732SGagandeep Singhtarget platform is dpaa-based. No additional compilation steps are necessary. 44583f3732SGagandeep Singh 45bdcb782aSJun Yang``RTE_DMA_DPAA_ERRATA_ERR050757`` 46bdcb782aSJun Yang Enable software workaround for Errata-A050757 478c53b9b7SJun Yang``RTE_DMA_DPAA_ERRATA_ERR050265`` 488c53b9b7SJun Yang Enable software workaround for Errata-A050265 49bdcb782aSJun Yang 50583f3732SGagandeep SinghInitialization 51583f3732SGagandeep Singh-------------- 52583f3732SGagandeep Singh 53583f3732SGagandeep SinghOn EAL initialization, DPAA DMA devices will be detected on DPAA bus and 54583f3732SGagandeep Singhwill be probed and populated into their device list. 55583f3732SGagandeep Singh 567da29a64SGagandeep SinghFeatures 577da29a64SGagandeep Singh-------- 587da29a64SGagandeep Singh 597da29a64SGagandeep SinghThe DPAA DMA implements following features in the dmadev API: 607da29a64SGagandeep Singh 617da29a64SGagandeep Singh- Supports 1 virtual channel. 627da29a64SGagandeep Singh- Supports all 4 DMA transfers: MEM_TO_MEM, MEM_TO_DEV, 637da29a64SGagandeep Singh DEV_TO_MEM, DEV_TO_DEV. 647da29a64SGagandeep Singh- Supports DMA silent mode. 657da29a64SGagandeep Singh- Supports issuing DMA of data within memory without hogging CPU while 667da29a64SGagandeep Singh performing DMA operation. 6733441726SGagandeep Singh- Supports statistics. 687da29a64SGagandeep Singh 69583f3732SGagandeep SinghPlatform Requirement 70583f3732SGagandeep Singh-------------------- 71583f3732SGagandeep Singh 72583f3732SGagandeep SinghDPAA DMA driver for DPDK can only work on NXP SoCs 73583f3732SGagandeep Singhas listed in the `Supported DPAA SoCs`_. 74*a63c6426SJun Yang 75*a63c6426SJun YangDevice Arguments 76*a63c6426SJun Yang---------------- 77*a63c6426SJun Yang 78*a63c6426SJun Yang``dpaa_dma_err_check=1`` 79*a63c6426SJun Yang Check DMA errors at driver level. 80*a63c6426SJun Yang Usage example: ``dpaa_bus:dpaa_qdma-1,dpaa_dma_err_check=1`` 81