|
@@ -1,7 +1,7 @@
|
|
|
/*
|
|
|
|
|
|
Copyright 1996,2002,2005 Gregory D. Hager, Alfred A. Rizzi, Noah J. Cowan,
|
|
|
- Jason Lapenta, Scott Smedley
|
|
|
+ Jason Lapenta, Scott Smedley
|
|
|
|
|
|
This file is part of the DT3155 Device Driver.
|
|
|
|
|
@@ -20,8 +20,6 @@ along with the DT3155 Device Driver; if not, write to the Free
|
|
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
|
MA 02111-1307 USA
|
|
|
|
|
|
- $Id: dt3155.h,v 1.11 2005/08/09 06:08:51 ssmedley Exp $
|
|
|
-
|
|
|
-- Changes --
|
|
|
|
|
|
Date Programmer Description of changes made
|
|
@@ -56,120 +54,118 @@ MA 02111-1307 USA
|
|
|
/* Can be 1 or 2 */
|
|
|
#define MAXBOARDS 1
|
|
|
|
|
|
-#define BOARD_MAX_BUFFS 3
|
|
|
-#define MAXBUFFERS BOARD_MAX_BUFFS*MAXBOARDS
|
|
|
+#define BOARD_MAX_BUFFS 3
|
|
|
+#define MAXBUFFERS (BOARD_MAX_BUFFS*MAXBOARDS)
|
|
|
|
|
|
-#define PCI_PAGE_SIZE (1 << 12)
|
|
|
+#define PCI_PAGE_SIZE (1 << 12)
|
|
|
|
|
|
#ifdef CCIR
|
|
|
-#define DT3155_MAX_ROWS 576
|
|
|
-#define DT3155_MAX_COLS 768
|
|
|
-#define FORMAT50HZ TRUE
|
|
|
+#define DT3155_MAX_ROWS 576
|
|
|
+#define DT3155_MAX_COLS 768
|
|
|
+#define FORMAT50HZ TRUE
|
|
|
#else
|
|
|
-#define DT3155_MAX_ROWS 480
|
|
|
-#define DT3155_MAX_COLS 640
|
|
|
-#define FORMAT50HZ FALSE
|
|
|
+#define DT3155_MAX_ROWS 480
|
|
|
+#define DT3155_MAX_COLS 640
|
|
|
+#define FORMAT50HZ FALSE
|
|
|
#endif
|
|
|
|
|
|
/* Configuration structure */
|
|
|
struct dt3155_config_s {
|
|
|
- u_int acq_mode;
|
|
|
- u_int cols, rows;
|
|
|
- u_int continuous;
|
|
|
+ u_int acq_mode;
|
|
|
+ u_int cols, rows;
|
|
|
+ u_int continuous;
|
|
|
};
|
|
|
|
|
|
|
|
|
/* hold data for each frame */
|
|
|
-typedef struct
|
|
|
-{
|
|
|
- u_long addr; /* address of the buffer with the frame */
|
|
|
- u_long tag; /* unique number for the frame */
|
|
|
- struct timeval time; /* time that capture took place */
|
|
|
+typedef struct {
|
|
|
+ u_long addr; /* address of the buffer with the frame */
|
|
|
+ u_long tag; /* unique number for the frame */
|
|
|
+ struct timeval time; /* time that capture took place */
|
|
|
} frame_info_t;
|
|
|
|
|
|
-/* Structure for interrupt and buffer handling. */
|
|
|
-/* This is the setup for 1 card */
|
|
|
+/*
|
|
|
+ * Structure for interrupt and buffer handling.
|
|
|
+ * This is the setup for 1 card
|
|
|
+ */
|
|
|
struct dt3155_fbuffer_s {
|
|
|
- int nbuffers;
|
|
|
-
|
|
|
- frame_info_t frame_info[ BOARD_MAX_BUFFS ];
|
|
|
+ int nbuffers;
|
|
|
|
|
|
- int empty_buffers[ BOARD_MAX_BUFFS ]; /* indexes empty frames */
|
|
|
- int empty_len; /* Number of empty buffers */
|
|
|
- /* Zero means empty */
|
|
|
+ frame_info_t frame_info[BOARD_MAX_BUFFS];
|
|
|
|
|
|
- int active_buf; /* Where data is currently dma'ing */
|
|
|
- int locked_buf; /* Buffers used by user */
|
|
|
+ int empty_buffers[BOARD_MAX_BUFFS]; /* indexes empty frames */
|
|
|
+ int empty_len; /* Number of empty buffers */
|
|
|
+ /* Zero means empty */
|
|
|
|
|
|
- int ready_que[ BOARD_MAX_BUFFS ];
|
|
|
- u_long ready_head; /* The most recent buffer located here */
|
|
|
- u_long ready_len; /* The number of ready buffers */
|
|
|
+ int active_buf; /* Where data is currently dma'ing */
|
|
|
+ int locked_buf; /* Buffers used by user */
|
|
|
|
|
|
- int even_happened;
|
|
|
- int even_stopped;
|
|
|
+ int ready_que[BOARD_MAX_BUFFS];
|
|
|
+ u_long ready_head; /* The most recent buffer located here */
|
|
|
+ u_long ready_len; /* The number of ready buffers */
|
|
|
|
|
|
- int stop_acquire; /* Flag to stop interrupts */
|
|
|
- u_long frame_count; /* Counter for frames acquired by this card */
|
|
|
+ int even_happened;
|
|
|
+ int even_stopped;
|
|
|
|
|
|
+ int stop_acquire; /* Flag to stop interrupts */
|
|
|
+ u_long frame_count; /* Counter for frames acquired by this card */
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
-#define DT3155_MODE_FRAME 1
|
|
|
-#define DT3155_MODE_FIELD 2
|
|
|
+#define DT3155_MODE_FRAME 1
|
|
|
+#define DT3155_MODE_FIELD 2
|
|
|
|
|
|
-#define DT3155_SNAP 1
|
|
|
-#define DT3155_ACQ 2
|
|
|
+#define DT3155_SNAP 1
|
|
|
+#define DT3155_ACQ 2
|
|
|
|
|
|
/* There is one status structure for each card. */
|
|
|
-typedef struct dt3155_status_s
|
|
|
-{
|
|
|
- int fixed_mode; /* if 1, we are in fixed frame mode */
|
|
|
- u_long reg_addr; /* Register address for a single card */
|
|
|
- u_long mem_addr; /* Buffer start addr for this card */
|
|
|
- u_long mem_size; /* This is the amount of mem available */
|
|
|
- u_int irq; /* this card's irq */
|
|
|
- struct dt3155_config_s config; /* configuration struct */
|
|
|
- struct dt3155_fbuffer_s fbuffer;/* frame buffer state struct */
|
|
|
- u_long state; /* this card's state */
|
|
|
- u_int device_installed; /* Flag if installed. 1=installed */
|
|
|
+typedef struct dt3155_status_s {
|
|
|
+ int fixed_mode; /* if 1, we are in fixed frame mode */
|
|
|
+ u_long reg_addr; /* Register address for a single card */
|
|
|
+ u_long mem_addr; /* Buffer start addr for this card */
|
|
|
+ u_long mem_size; /* This is the amount of mem available */
|
|
|
+ u_int irq; /* this card's irq */
|
|
|
+ struct dt3155_config_s config; /* configuration struct */
|
|
|
+ struct dt3155_fbuffer_s fbuffer; /* frame buffer state struct */
|
|
|
+ u_long state; /* this card's state */
|
|
|
+ u_int device_installed; /* Flag if installed. 1=installed */
|
|
|
} dt3155_status_t;
|
|
|
|
|
|
/* Reference to global status structure */
|
|
|
extern struct dt3155_status_s dt3155_status[MAXBOARDS];
|
|
|
|
|
|
-#define DT3155_STATE_IDLE 0x00
|
|
|
-#define DT3155_STATE_FRAME 0x01
|
|
|
-#define DT3155_STATE_FLD 0x02
|
|
|
-#define DT3155_STATE_STOP 0x100
|
|
|
-#define DT3155_STATE_ERROR 0x200
|
|
|
-#define DT3155_STATE_MODE 0x0ff
|
|
|
+#define DT3155_STATE_IDLE 0x00
|
|
|
+#define DT3155_STATE_FRAME 0x01
|
|
|
+#define DT3155_STATE_FLD 0x02
|
|
|
+#define DT3155_STATE_STOP 0x100
|
|
|
+#define DT3155_STATE_ERROR 0x200
|
|
|
+#define DT3155_STATE_MODE 0x0ff
|
|
|
|
|
|
-#define DT3155_IOC_MAGIC '!'
|
|
|
+#define DT3155_IOC_MAGIC '!'
|
|
|
|
|
|
-#define DT3155_SET_CONFIG _IOW( DT3155_IOC_MAGIC, 1, struct dt3155_config_s )
|
|
|
-#define DT3155_GET_CONFIG _IOR( DT3155_IOC_MAGIC, 2, struct dt3155_status_s )
|
|
|
-#define DT3155_STOP _IO( DT3155_IOC_MAGIC, 3 )
|
|
|
-#define DT3155_START _IO( DT3155_IOC_MAGIC, 4 )
|
|
|
-#define DT3155_FLUSH _IO( DT3155_IOC_MAGIC, 5 )
|
|
|
-#define DT3155_IOC_MAXNR 5
|
|
|
+#define DT3155_SET_CONFIG _IOW(DT3155_IOC_MAGIC, 1, struct dt3155_config_s)
|
|
|
+#define DT3155_GET_CONFIG _IOR(DT3155_IOC_MAGIC, 2, struct dt3155_status_s)
|
|
|
+#define DT3155_STOP _IO(DT3155_IOC_MAGIC, 3)
|
|
|
+#define DT3155_START _IO(DT3155_IOC_MAGIC, 4)
|
|
|
+#define DT3155_FLUSH _IO(DT3155_IOC_MAGIC, 5)
|
|
|
+#define DT3155_IOC_MAXNR 5
|
|
|
|
|
|
/* Error codes */
|
|
|
|
|
|
-#define DT_ERR_NO_BUFFERS 0x10000 /* not used but it might be one day - SS */
|
|
|
-#define DT_ERR_CORRUPT 0x20000
|
|
|
-#define DT_ERR_OVERRUN 0x30000
|
|
|
-#define DT_ERR_I2C_TIMEOUT 0x40000
|
|
|
-#define DT_ERR_MASK 0xff0000/* not used but it might be one day - SS */
|
|
|
+#define DT_ERR_NO_BUFFERS 0x10000 /* not used but it might be one day */
|
|
|
+#define DT_ERR_CORRUPT 0x20000
|
|
|
+#define DT_ERR_OVERRUN 0x30000
|
|
|
+#define DT_ERR_I2C_TIMEOUT 0x40000
|
|
|
+#define DT_ERR_MASK 0xff0000/* not used but it might be one day */
|
|
|
|
|
|
/* User code will probably want to declare one of these for each card */
|
|
|
-typedef struct dt3155_read_s
|
|
|
-{
|
|
|
- u_long offset;
|
|
|
- u_long frame_seq;
|
|
|
- u_long state;
|
|
|
+typedef struct dt3155_read_s {
|
|
|
+ u_long offset;
|
|
|
+ u_long frame_seq;
|
|
|
+ u_long state;
|
|
|
|
|
|
- frame_info_t frame_info;
|
|
|
+ frame_info_t frame_info;
|
|
|
} dt3155_read_t;
|
|
|
|
|
|
#endif /* _DT3155_inc */
|