Initial import

Signed-off-by: Bernardo Carvalho <bernardo.carvalho@tecnico.ulisboa.pt>
This commit is contained in:
2024-04-14 17:21:58 +01:00
parent 6bc86c7c0b
commit 182480dff2
15 changed files with 3907 additions and 0 deletions

View File

@@ -0,0 +1,93 @@
/**
* IOCTL Definitions for the Linux Device Driver
* Should be synchronized with:
* https://github.com/bernardocarvalho/atca-iop-stream/blob/master/linux-software/include/atca-v6-pcie-ioctl.h
*
*/
#ifndef _ATCA_IOP_IOPTL_H_
#define _ATCA_IOP_IOPTL_H_
#include <sys/ioctl.h>
#define ADC_CHANNELS 16
#define DMA_BUFFS 8 // Number of DMA ch0 buffs
/* 256 + 3840 = 4096 B (PAGE_SIZE) data packet
typedef struct _DMA_CH1_PCKT {
volatile uint32_t head_time_cnt;
volatile uint32_t header; // h5431BACD
volatile int32_t channel[60]; // 24 56
volatile uint32_t foot_time_cnt;
volatile uint32_t footer; // h5431BACD
uint8_t page_fill[3840];
} DMA_CH1_PCKT;
*/
struct atca_eo_config {
int32_t offset[ADC_CHANNELS];
};
struct atca_wo_config {
int32_t offset[ADC_CHANNELS];
};
/*
* IOCTL definitions
*/
/* Please use a different 8-bit number in your code */
/*See /Documentation/ioctl-number.txt*/
#define ATCA_PCIE_IOP_MAGIC 'k'
/* S means "Set": thru a pointer
* T means "Tell": directly with the argument value
* G menas "Get": reply by setting thru a pointer
* Q means "Qry": response is on the return value
* X means "eXchange": G and S atomically
* H means "sHift": T and Q atomically
*/
/**********************************************************************
* IOCTL FUNCTIONS *
*********************************************************************/
#define ATCA_PCIE_IOPT_IRQ_ENABLE _IO(ATCA_PCIE_IOP_MAGIC, 1)
#define ATCA_PCIE_IOPT_IRQ_DISABLE _IO(ATCA_PCIE_IOP_MAGIC, 2)
#define ATCA_PCIE_IOPT_ACQ_ENABLE _IO(ATCA_PCIE_IOP_MAGIC, 3)
#define ATCA_PCIE_IOPT_ACQ_DISABLE _IO(ATCA_PCIE_IOP_MAGIC, 4)
#define ATCA_PCIE_IOPT_DMA_ENABLE _IO(ATCA_PCIE_IOP_MAGIC, 5)
#define ATCA_PCIE_IOPT_DMA_DISABLE _IO(ATCA_PCIE_IOP_MAGIC, 6)
#define ATCA_PCIE_IOPT_SOFT_TRIG _IO(ATCA_PCIE_IOP_MAGIC, 7)
#define ATCA_PCIE_IOPG_STATUS _IOR(ATCA_PCIE_IOP_MAGIC, 8, u_int32_t)
#define ATCA_PCIE_IOPS_RDTMOUT _IOW(ATCA_PCIE_IOP_MAGIC, 9, u_int32_t)
#define ATCA_PCIE_IOPS_DMA_SIZE _IOW(ATCA_PCIE_IOP_MAGIC, 10, u_int32_t)
#define ATCA_PCIE_IOPG_DMA_SIZE _IOR(ATCA_PCIE_IOP_MAGIC, 11, u_int32_t)
#define ATCA_PCIE_IOPT_DMA_RESET _IO(ATCA_PCIE_IOP_MAGIC, 12)
#define ATCA_PCIE_IOPT_STREAM_ENABLE _IO(ATCA_PCIE_IOP_MAGIC, 13)
#define ATCA_PCIE_IOPT_STREAM_DISABLE _IO(ATCA_PCIE_IOP_MAGIC, 14)
#define ATCA_PCIE_IOPT_CHOP_ON _IO(ATCA_PCIE_IOP_MAGIC, 15)
#define ATCA_PCIE_IOPT_CHOP_OFF _IO(ATCA_PCIE_IOP_MAGIC, 16)
#define ATCA_PCIE_IOPT_CHOP_DEFAULT_1 _IO(ATCA_PCIE_IOP_MAGIC, 17)
#define ATCA_PCIE_IOPT_CHOP_DEFAULT_0 _IO(ATCA_PCIE_IOP_MAGIC, 18)
#define ATCA_PCIE_IOPS_CHOP_COUNTERS _IOW(ATCA_PCIE_IOP_MAGIC, 19, u_int32_t)
#define ATCA_PCIE_IOPG_CHOP_COUNTERS _IOR(ATCA_PCIE_IOP_MAGIC, 20, u_int32_t)
#define ATCA_PCIE_IOPS_EO_OFFSETS \
_IOW(ATCA_PCIE_IOP_MAGIC, 21, struct atca_eo_config)
#define ATCA_PCIE_IOPS_WO_OFFSETS \
_IOW(ATCA_PCIE_IOP_MAGIC, 22, struct atca_wo_config)
#define ATCA_PCIE_IOPG_EO_OFFSETS \
_IOR(ATCA_PCIE_IOP_MAGIC, 23, struct atca_eo_config)
#define ATCA_PCIE_IOPG_WO_OFFSETS \
_IOR(ATCA_PCIE_IOP_MAGIC, 24, struct atca_wo_config)
#define ATCA_PCIE_IOPS_CONTROL _IOW(ATCA_PCIE_IOP_MAGIC, 25, u_int32_t)
#define ATCA_PCIE_IOPG_CONTROL _IOR(ATCA_PCIE_IOP_MAGIC, 26, u_int32_t)
#define ATCA_PCIE_IOPS_CHOP_DISABLE _IOW(ATCA_PCIE_IOP_MAGIC, 27, u_int32_t)
#define ATCA_PCIE_IOPG_CHOP_DISABLE _IOR(ATCA_PCIE_IOP_MAGIC, 28, u_int32_t)
#define ATCA_PCIE_IOPG_DACS_REG _IOR(ATCA_PCIE_IOP_MAGIC, 29, u_int32_t)
#define ATCA_PCIE_IOP_MAXNR 29
#endif /* _ATCA_IOP_IOPTL_H_ */
// vim: syntax=cpp ts=4 sw=4 sts=4 sr et