xref: /linux/Documentation/misc-devices/mrvl_cn10k_dpi.rst (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1.. SPDX-License-Identifier: GPL-2.0
2
3===============================================
4Marvell CN10K DMA packet interface (DPI) driver
5===============================================
6
7Overview
8========
9
10DPI is a DMA packet interface hardware block in Marvell's CN10K silicon.
11DPI hardware comprises a physical function (PF), its virtual functions,
12mailbox logic, and a set of DMA engines & DMA command queues.
13
14DPI PF function is an administrative function which services the mailbox
15requests from its VF functions and provisions DMA engine resources to
16it's VF functions.
17
18mrvl_cn10k_dpi.ko misc driver loads on DPI PF device and services the
19mailbox commands submitted by the VF devices and accordingly initializes
20the DMA engines and VF device's DMA command queues. Also, driver creates
21/dev/mrvl-cn10k-dpi node to set DMA engine and PEM (PCIe interface) port
22attributes like fifo length, molr, mps & mrrs.
23
24DPI PF driver is just an administrative driver to setup its VF device's
25queues and provisions the hardware resources, it cannot initiate any
26DMA operations. Only VF devices are provisioned with DMA capabilities.
27
28Driver location
29===============
30
31drivers/misc/mrvl_cn10k_dpi.c
32
33Driver IOCTLs
34=============
35
36:c:macro::`DPI_MPS_MRRS_CFG`
37ioctl that sets max payload size & max read request size parameters of
38a pem port to which DMA engines are wired.
39
40
41:c:macro::`DPI_ENGINE_CFG`
42ioctl that sets DMA engine's fifo sizes & max outstanding load request
43thresholds.
44
45User space code example
46=======================
47
48DPI VF devices are probed and accessed from user space applications using
49vfio-pci driver. Below is a sample dpi dma application to demonstrate on
50how applications use mailbox and ioctl services from DPI PF kernel driver.
51
52https://github.com/MarvellEmbeddedProcessors/dpi-sample-app
53