Skip to content

Commit

Permalink
misc: mrvl-cn10k-dpi: add Octeon CN10K DPI administrative driver
Browse files Browse the repository at this point in the history
Adds a misc driver for Marvell CN10K DPI(DMA Engine) device's physical
function which initializes DPI DMA hardware's global configuration and
enables hardware mailbox channels between physical function (PF) and
it's virtual functions (VF). VF device drivers (User space drivers) use
this hw mailbox to communicate any required device configuration on it's
respective VF device. Accordingly, this DPI PF driver provisions the
VF device resources.

At the hardware level, the DPI physical function (PF) acts as a management
interface to setup the VF device resources, VF devices are only provisioned
to handle or control the actual DMA Engine's data transfer capabilities.

Signed-off-by: Vamsi Attunuru <[email protected]>
Reviewed-by: Srujana Challa <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Vamsi Attunuru authored and gregkh committed Jul 10, 2024
1 parent e56af94 commit 5f67eef
Show file tree
Hide file tree
Showing 9 changed files with 796 additions and 0 deletions.
1 change: 1 addition & 0 deletions Documentation/misc-devices/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ fit into other categories.
isl29003
lis3lv02d
max6875
mrvl_cn10k_dpi
oxsemi-tornado
pci-endpoint-test
spear-pcie-gadget
Expand Down
52 changes: 52 additions & 0 deletions Documentation/misc-devices/mrvl_cn10k_dpi.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
.. SPDX-License-Identifier: GPL-2.0
===============================================
Marvell CN10K DMA packet interface (DPI) driver
===============================================

Overview
========

DPI is a DMA packet interface hardware block in Marvell's CN10K silicon.
DPI hardware comprises a physical function (PF), its virtual functions,
mailbox logic, and a set of DMA engines & DMA command queues.

DPI PF function is an administrative function which services the mailbox
requests from its VF functions and provisions DMA engine resources to
it's VF functions.

mrvl_cn10k_dpi.ko misc driver loads on DPI PF device and services the
mailbox commands submitted by the VF devices and accordingly initializes
the DMA engines and VF device's DMA command queues. Also, driver creates
/dev/mrvl-cn10k-dpi node to set DMA engine and PEM (PCIe interface) port
attributes like fifo length, molr, mps & mrrs.

DPI PF driver is just an administrative driver to setup its VF device's
queues and provisions the hardware resources, it cannot initiate any
DMA operations. Only VF devices are provisioned with DMA capabilities.

Driver location
===============

drivers/misc/mrvl_cn10k_dpi.c

Driver IOCTLs
=============

:c:macro::`DPI_MPS_MRRS_CFG`
ioctl that sets max payload size & max read request size parameters of
a pem port to which DMA engines are wired.


:c:macro::`DPI_ENGINE_CFG`
ioctl that sets DMA engine's fifo sizes & max outstanding load request
thresholds.

User space code example
=======================

DPI VF devices are probed and accessed from user space applications using
vfio-pci driver. Below is a sample dpi dma application to demonstrate on
how applications use mailbox and ioctl services from DPI PF kernel driver.

https://github.com/MarvellEmbeddedProcessors/dpi-sample-app
1 change: 1 addition & 0 deletions Documentation/userspace-api/ioctl/ioctl-number.rst
Original file line number Diff line number Diff line change
Expand Up @@ -362,6 +362,7 @@ Code Seq# Include File Comments
0xB6 all linux/fpga-dfl.h
0xB7 all uapi/linux/remoteproc_cdev.h <mailto:[email protected]>
0xB7 all uapi/linux/nsfs.h <mailto:Andrei Vagin <[email protected]>>
0xB8 01-02 uapi/misc/mrvl_cn10k_dpi.h Marvell CN10K DPI driver
0xC0 00-0F linux/usb/iowarrior.h
0xCA 00-0F uapi/misc/cxl.h
0xCA 10-2F uapi/misc/ocxl.h
Expand Down
5 changes: 5 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -13477,6 +13477,11 @@ S: Supported
F: Documentation/devicetree/bindings/mmc/marvell,xenon-sdhci.yaml
F: drivers/mmc/host/sdhci-xenon*

MARVELL OCTEON CN10K DPI DRIVER
M: Vamsi Attunuru <[email protected]>
S: Supported
F: drivers/misc/mrvl_cn10k_dpi.c

MATROX FRAMEBUFFER DRIVER
L: [email protected]
S: Orphan
Expand Down
14 changes: 14 additions & 0 deletions drivers/misc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -585,6 +585,20 @@ config NSM
To compile this driver as a module, choose M here.
The module will be called nsm.

config MARVELL_CN10K_DPI
tristate "Octeon CN10K DPI driver"
depends on PCI
help
Enables Octeon CN10K DMA packet interface (DPI) driver which
intializes DPI hardware's physical function (PF) device's
global configuration and its virtual function (VFs) resource
configuration to enable DMA transfers. DPI PF device does not
have any data movement functionality, it only serves VF's
resource configuration requests.

To compile this driver as a module, choose M here: the module
will be called mrvl_cn10k_dpi.

source "drivers/misc/c2port/Kconfig"
source "drivers/misc/eeprom/Kconfig"
source "drivers/misc/cb710/Kconfig"
Expand Down
1 change: 1 addition & 0 deletions drivers/misc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,4 +69,5 @@ obj-$(CONFIG_TMR_INJECT) += xilinx_tmr_inject.o
obj-$(CONFIG_TPS6594_ESM) += tps6594-esm.o
obj-$(CONFIG_TPS6594_PFSM) += tps6594-pfsm.o
obj-$(CONFIG_NSM) += nsm.o
obj-$(CONFIG_MARVELL_CN10K_DPI) += mrvl_cn10k_dpi.o
obj-y += keba/
7 changes: 7 additions & 0 deletions drivers/misc/Makefile.rej
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
--- drivers/misc/Makefile
+++ drivers/misc/Makefile
@@ -69,3 +69,4 @@ obj-$(CONFIG_TMR_INJECT) += xilinx_tmr_inject.o
obj-$(CONFIG_TPS6594_ESM) += tps6594-esm.o
obj-$(CONFIG_TPS6594_PFSM) += tps6594-pfsm.o
obj-$(CONFIG_NSM) += nsm.o
+obj-$(CONFIG_MARVELL_CN10K_DPI) += mrvl_cn10k_dpi.o
Loading

0 comments on commit 5f67eef

Please sign in to comment.