8c6356e2a5
This cleans up some of the coding style issues in the .h files. More remains to be done. Cc: Scott Smedley <ss@aao.gov.au> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
172 lines
4.7 KiB
C
172 lines
4.7 KiB
C
/*
|
|
|
|
Copyright 1996,2002,2005 Gregory D. Hager, Alfred A. Rizzi, Noah J. Cowan,
|
|
Jason Lapenta, Scott Smedley
|
|
|
|
This file is part of the DT3155 Device Driver.
|
|
|
|
The DT3155 Device Driver is free software; you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License as
|
|
published by the Free Software Foundation; either version 2 of the
|
|
License, or (at your option) any later version.
|
|
|
|
The DT3155 Device Driver is distributed in the hope that it will be
|
|
useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
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
|
|
|
|
-- Changes --
|
|
|
|
Date Programmer Description of changes made
|
|
-------------------------------------------------------------------
|
|
03-Jul-2000 JML n/a
|
|
10-Oct-2001 SS port to 2.4 kernel.
|
|
24-Jul-2002 SS remove unused code & added GPL licence.
|
|
05-Aug-2005 SS port to 2.6 kernel; make CCIR mode default.
|
|
|
|
*/
|
|
|
|
#ifndef _DT3155_INC
|
|
#define _DT3155_INC
|
|
|
|
#ifdef __KERNEL__
|
|
#include <linux/types.h> /* u_int etc. */
|
|
#include <linux/time.h> /* struct timeval */
|
|
#else
|
|
#include <sys/ioctl.h>
|
|
#include <sys/param.h>
|
|
#include <sys/time.h>
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
|
|
#define TRUE 1
|
|
#define FALSE 0
|
|
|
|
/* Uncomment this for 50Hz CCIR */
|
|
#define CCIR 1
|
|
|
|
/* Can be 1 or 2 */
|
|
#define MAXBOARDS 1
|
|
|
|
#define BOARD_MAX_BUFFS 3
|
|
#define MAXBUFFERS (BOARD_MAX_BUFFS*MAXBOARDS)
|
|
|
|
#define PCI_PAGE_SIZE (1 << 12)
|
|
|
|
#ifdef CCIR
|
|
#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
|
|
#endif
|
|
|
|
/* Configuration structure */
|
|
struct dt3155_config_s {
|
|
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 */
|
|
} frame_info_t;
|
|
|
|
/*
|
|
* 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 empty_buffers[BOARD_MAX_BUFFS]; /* indexes empty frames */
|
|
int empty_len; /* Number of empty buffers */
|
|
/* Zero means empty */
|
|
|
|
int active_buf; /* Where data is currently dma'ing */
|
|
int locked_buf; /* Buffers used by user */
|
|
|
|
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 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_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 */
|
|
} 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_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
|
|
|
|
/* Error codes */
|
|
|
|
#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;
|
|
|
|
frame_info_t frame_info;
|
|
} dt3155_read_t;
|
|
|
|
#endif /* _DT3155_inc */
|