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