patch-2.4.20 linux-2.4.20/drivers/usb/ov511.h
Next file: linux-2.4.20/drivers/usb/pegasus.c
Previous file: linux-2.4.20/drivers/usb/ov511.c
Back to the patch index
Back to the overall index
- Lines: 196
- Date:
Thu Nov 28 15:53:14 2002
- Orig file:
linux-2.4.19/drivers/usb/ov511.h
- Orig date:
Fri Aug 2 17:39:45 2002
diff -urN linux-2.4.19/drivers/usb/ov511.h linux-2.4.20/drivers/usb/ov511.h
@@ -10,8 +10,8 @@
#ifdef OV511_DEBUG
#define PDEBUG(level, fmt, args...) \
- if (debug >= (level)) info("[" __PRETTY_FUNCTION__ ":%d] " fmt,\
- __LINE__ , ## args)
+ if (debug >= (level)) info("[%s:%d] " fmt, \
+ __PRETTY_FUNCTION__, __LINE__ , ## args)
#else
#define PDEBUG(level, fmt, args...) do {} while(0)
#endif
@@ -243,6 +243,16 @@
#define OV511_ENDPOINT_ADDRESS 1 /* Isoc endpoint number */
+#define OV511_NUMFRAMES 2
+#if OV511_NUMFRAMES > VIDEO_MAX_FRAME
+ #error "OV511_NUMFRAMES is too high"
+#endif
+
+#define OV511_NUMSBUF 2
+
+/* Control transfers use up to 4 bytes */
+#define OV511_CBUF_SIZE 4
+
/* Bridge types */
enum {
BRG_UNKNOWN,
@@ -376,9 +386,14 @@
struct ov511_i2c_struct)
/* ------------- End IOCTL interface -------------- */
+struct usb_ov511; /* Forward declaration */
+
struct ov511_sbuf {
- char *data;
+ struct usb_ov511 *ov;
+ unsigned char *data;
struct urb *urb;
+ spinlock_t lock;
+ int n;
};
enum {
@@ -401,9 +416,10 @@
struct ov511_frame {
int framenum; /* Index of this frame */
- char *data; /* Frame buffer */
- char *tempdata; /* Temp buffer for multi-stage conversions */
- char *rawdata; /* Raw camera data buffer */
+ unsigned char *data; /* Frame buffer */
+ unsigned char *tempdata; /* Temp buffer for multi-stage conversions */
+ unsigned char *rawdata; /* Raw camera data buffer */
+ unsigned char *compbuf; /* Temp buffer for decompressor */
int depth; /* Bytes per pixel */
int width; /* Width application is expecting */
@@ -428,27 +444,19 @@
int snapshot; /* True if frame was a snapshot */
};
-#define DECOMP_INTERFACE_VER 2
+#define DECOMP_INTERFACE_VER 4
/* Compression module operations */
struct ov51x_decomp_ops {
- int (*decomp_400)(unsigned char *, unsigned char *, int, int, int);
- int (*decomp_420)(unsigned char *, unsigned char *, int, int, int);
- int (*decomp_422)(unsigned char *, unsigned char *, int, int, int);
- void (*decomp_lock)(void);
- void (*decomp_unlock)(void);
+ int (*decomp_400)(unsigned char *, unsigned char *, unsigned char *,
+ int, int, int);
+ int (*decomp_420)(unsigned char *, unsigned char *, unsigned char *,
+ int, int, int);
+ int (*decomp_422)(unsigned char *, unsigned char *, unsigned char *,
+ int, int, int);
+ struct module *owner;
};
-#define OV511_NUMFRAMES 2
-#if OV511_NUMFRAMES > VIDEO_MAX_FRAME
- #error "OV511_NUMFRAMES is too high"
-#endif
-
-#define OV511_NUMSBUF 2
-
-/* Control transfers use up to 4 bytes */
-#define OV511_CBUF_SIZE 4
-
struct usb_ov511 {
struct video_device vdev;
@@ -456,7 +464,7 @@
struct usb_device *dev;
int customid;
- int desc;
+ char *desc;
unsigned char iface;
/* Determined by sensor type */
@@ -475,6 +483,7 @@
int auto_gain; /* Auto gain control enabled flag */
int auto_exp; /* Auto exposure enabled flag */
int backlight; /* Backlight exposure algorithm flag */
+ int mirror; /* Image is reversed horizontally */
int led_policy; /* LED: off|on|auto; OV511+ only */
@@ -490,9 +499,9 @@
int lightfreq; /* Power (lighting) frequency */
int bandfilt; /* Banding filter enabled flag */
- char *fbuf; /* Videodev buffer area */
- char *tempfbuf; /* Temporary (intermediate) buffer area */
- char *rawfbuf; /* Raw camera data buffer area */
+ unsigned char *fbuf; /* Videodev buffer area */
+ unsigned char *tempfbuf; /* Temporary (intermediate) buffer area */
+ unsigned char *rawfbuf; /* Raw camera data buffer area */
int sub_flag; /* Pix Array subcapture on flag */
int subx; /* Pix Array subcapture x offset */
@@ -513,9 +522,9 @@
int bclass; /* Class of bridge (BCL_*) */
int sensor; /* Type of image sensor chip (SEN_*) */
int sclass; /* Type of image sensor chip (SCL_*) */
- int tuner; /* Type of TV tuner */
int packet_size; /* Frame size per isoc desc */
+ int packet_numbering; /* Is ISO frame numbering enabled? */
struct semaphore param_lock; /* params lock for this camera */
@@ -542,12 +551,9 @@
int num_inputs; /* Number of inputs */
int norm; /* NTSC / PAL / SECAM */
int has_decoder; /* Device has a video decoder */
- int has_tuner; /* Device has a TV tuner */
- int has_audio_proc; /* Device has an audio processor */
- int freq; /* Current tuner frequency */
- int tuner_type; /* Specific tuner model */
+ int pal; /* Device is designed for PAL resolution */
- /* I2C interface to kernel */
+ /* I2C interface */
struct semaphore i2c_lock; /* Protect I2C controller regs */
unsigned char primary_i2c_slave; /* I2C write id of sensor */
@@ -556,27 +562,28 @@
struct semaphore cbuf_lock;
};
-struct cam_list {
- int id;
- char *description;
-};
-
-struct palette_list {
+/* Used to represent a list of values and their respective symbolic names */
+struct symbolic_list {
int num;
char *name;
};
-struct mode_list_518 {
- int width;
- int height;
- u8 reg28;
- u8 reg29;
- u8 reg2a;
- u8 reg2c;
- u8 reg2e;
- u8 reg24;
- u8 reg25;
-};
+#define NOT_DEFINED_STR "Unknown"
+
+/* Returns the name of the matching element in the symbolic_list array. The
+ * end of the list must be marked with an element that has a NULL name.
+ */
+static inline char *
+symbolic(struct symbolic_list list[], int num)
+{
+ int i;
+
+ for (i = 0; list[i].name != NULL; i++)
+ if (list[i].num == num)
+ return (list[i].name);
+
+ return (NOT_DEFINED_STR);
+}
/* Compression stuff */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)