Introduction

MDB5-DMA (Multimedia DMA Bridge) enables configuration and data transfer capabilities to a DMA controller through a Linux driver and user-space application. This documentation outlines the design and components involved in enabling DMA operations, including kernel-level drivers, supporting utilities, and user-space applications.

For hardware specifications and detailed register information, refer to the MDB5-DMA Hardware Documentation.

MDB5-DMA Hardware Features

  • Memory-to-Memory Transfers

  • Maximum DMA transfer size: 4GB; minimum transfer size: 1 byte

  • Support for 8 Read and 8 Write Channels

  • Doorbell register access support

  • Linked-list and Non Linked-list Mode

  • Full Duplex Operation

  • Separate Tags for DMA Transfers

  • MSI Interrupt Generation

  • Reordering of DMA Transfer completions

MDB5-DMA Software Features

  • Simple DMA transfers

  • Scatter-Gather DMA transfers

  • MSI Interrupt support

Important

MDB5-DMA Limitations:

  • Does not have streaming transfer support (only memory-to-memory transfer supported)

  • Does not have virtualization support.

MDB5-DMA Software Components

Controller Driver

The Controller Driver is an open-source component integrated into the Linux kernel. It directly manages the MDB5-DMA Controller through the DMAEngine framework. The driver exposes standard DMA APIs while handling the hardware-specific details of the controller. It manages 16 channels: 8 read and 8 write channels.

The Controller Driver source code is available at: dw-edma Linux kernel driver.

Client Driver

The Client Driver is a custom character driver developed to interface with the Controller Driver, enabling user-space configuration and control of MDB5-DMA channels. It provides character device nodes that allow user-space applications to configure the MDB5-DMA controller and control data transfer on a per-channel basis.

User Applications

The user-space applications provide a set of command-line applications to configure, manage, test, and monitor the various functionalities and features of the MDB5-DMA controller. These user-space applications communicate with the Client Driver through the character driver interface to perform the functionalities. dma-utils provides common functions for all the applications to use. See the API Reference section for detailed documentation of the dma-utils library.

The command-line applications include:

  • dma-ctl: to configure and control MDB5-DMA devices

  • dma-to-device: to perform H2C data transfer

  • dma-from-device: to perform C2H data transfer

  • dma-xfer: to demonstrate data transfer using configuration file

MDB5-DMA Architecture

To begin with, it could be mentioned that the diagram serves as an illustration of the MDB5-DMA software stack, demonstrating how a user application leverages the driver interface to interact with the client driver. This client driver, in turn, communicates with the DMA controller driver, and the process continues in a similar manner

DMA flow