linux-headers/include/uapi/linux/mcst/msps_io.h

92 lines
2.4 KiB
C

#ifndef _UAPI_MCST_MSPS_IOCTL_H_
#define _UAPI_MCST_MSPS_IOCTL_H_
/*
* Definitions
*/
/* TODO: ask developers for max size !!! */
#define MSPS_DMA_SIZE 1024*1024 /* 1 Mb - max for user */
#define MSPS_DMA_SIZE_IN_WORDS (MSPS_DMA_SIZE/4)
#define MSPS_DMA_DONE 1
#define MSPS_DMA_TIMEOUT 2
#define MSPS_DMA_ABORT 3
/*
* Ioctl structures
*/
typedef struct msps_status {
u_int state; /* if == MSPS_DMA_DONE - then finished */
u_int size; /* size of last exchange */
u_int buffer; /* which buffer used for last exchange */
long wtime; /* working time dma transaction, microsec */
long Cx; /* dbg, value register C[x] after transaction */
long Lctl; /* dbg, value register LCTL after transaction */
long Intr; /* dbg, value register INTR after transaction */
int twice;
} msps_status_t;
typedef struct msps_setup {
u_int size;
u_int extended_flag;
long timeout; /* if not set - unlimited, else in microsec */
long key; /* only for dbg */
msps_status_t status;
} msps_setup_t;
typedef int msps_batch_t; /* tmp, may be rewrite to struct */
#ifdef __DEVELOPMENT__
typedef struct msps_batch {
u_int start_page;
u_int strings;
u_int stop_page;
} msps_batch_t;
#endif
typedef struct msps_setup_a {
msps_setup_t s;
int time;
} msps_setup_a_t;
typedef struct msps_get_by_regs {
u_int buf_number; /* which mmap buffer needed used */
u_int size;
} msps_get_by_regs_t;
/*
* mmap definition
*/
#define MSPS_DMA_MMAP_0 0x2000000
#define MSPS_DMA_MMAP_1 0x3000000
#define MSPS_DMA_MMAP MSPS_DMA_MMAP_0
/*
* Ioctl definitions
*/
/* Use 'c' as magic number */
#define MSPS_IOC_MAGIC 'c'
#define MSPS_GET_STATUS _IOR (MSPS_IOC_MAGIC, 0, msps_status_t)
#define MSPS_EXCH_DATA _IOWR(MSPS_IOC_MAGIC, 1, msps_setup_t)
#define MSPS_EXCH_DATA_ACTIVE _IOWR(MSPS_IOC_MAGIC, 2, msps_setup_a_t)
#define MSPS_RESET _IO (MSPS_IOC_MAGIC, 3)
#define MSPS_GET_BATCH _IOWR(MSPS_IOC_MAGIC, 4, int)
#define MSPS_GET_DATA_BY_REGS _IOWR(MSPS_IOC_MAGIC, 5, msps_get_by_regs_t)
#define MSPS_TEST_MODE_ON _IO (MSPS_IOC_MAGIC, 6)
#define MSPS_TEST_MODE_OFF _IO (MSPS_IOC_MAGIC, 7)
#define MSPS_TEST_EXCH _IOWR(MSPS_IOC_MAGIC, 8, msps_setup_t)
#define MSPS_EXCH_DATA_NW _IOW (MSPS_IOC_MAGIC, 9, msps_setup_t)
#define MSPS_TWICE_INTR_ON _IO (MSPS_IOC_MAGIC, 10)
#define MSPS_TWICE_INTR_OFF _IO (MSPS_IOC_MAGIC, 11)
#define MSPS_IOC_MAXNR 11
#endif /* !(_UAPI_MCST_MSPS_IOCTL_H_) */