1/* 2xvdma.h 3Wrapper client driver for xilinx VDMA Engine. 4 5*/ 6#ifndef __XVDMA_H 7#define __XVDMA_H 8 9#include <linux/amba/xilinx_dma.h> 10 11#define DRIVER_NAME "xvdma" 12#define XVDMA_SUSPEND NULL 13#define XVDMA_RESUME NULL 14 15#define XVDMA_MAJOR 10 16#define XVDMA_MINOR 224 17 18#define MAX_DEVICES 4 19#define MAX_FRAMES 5 20#define DMA_CHAN_RESET 10 21 22#define XVDMA_IOCTL_BASE 'W' 23#define XVDMA_GET_NUM_DEVICES _IO(XVDMA_IOCTL_BASE, 0) 24#define XVDMA_GET_DEV_INFO _IO(XVDMA_IOCTL_BASE, 1) 25#define XVDMA_DEVICE_CONTROL _IO(XVDMA_IOCTL_BASE, 2) 26#define XVDMA_PREP_BUF _IO(XVDMA_IOCTL_BASE, 3) 27#define XVDMA_START_TRANSFER _IO(XVDMA_IOCTL_BASE, 4) 28#define XVDMA_STOP_TRANSFER _IO(XVDMA_IOCTL_BASE, 5) 29 30#define XVDMA_DEVICE_ID_SHIFT 28 31 32struct xvdma_drvdata { 33 struct device *dev; 34 struct cdev cdev; /* Char device structure */ 35 dev_t devt; 36}; 37 38struct xvdma_dev { 39 40 u32 tx_chan; 41 u32 rx_chan; 42 u32 device_id; 43}; 44 45struct xvdma_chan_cfg { 46 struct xilinx_vdma_config config; 47 u32 chan; 48}; 49 50struct xvdma_buf_info { 51 u32 chan; 52 u32 device_id; 53 u32 direction; 54 u32 shared_buffer; 55 u32 mem_type; 56 u32 fixed_buffer; 57 u32 buf_size; 58 u32 addr_base; 59 u32 frm_cnt; 60 u32 callback; 61}; 62 63struct xvdma_transfer { 64 u32 chan; 65 u32 wait; 66}; 67 68struct chan_buf { 69 u32 device_id; 70 dma_addr_t dma_addr[MAX_FRAMES]; 71}; 72 73void xvdma_device_control(struct xvdma_chan_cfg *); 74void xvdma_prep_slave_sg(struct xvdma_buf_info *); 75void xvdma_start_transfer(struct xvdma_transfer *); 76void xvdma_stop_transfer(struct dma_chan *); 77 78#endif 79