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