Commit 8a4c342b authored by Mark W. McClelland's avatar Mark W. McClelland Committed by Greg Kroah-Hartman

This updates the ov511 driver to the latest stable version (1.60).

  
  Summary of changes:
  - Remove palette conversion and related code
  - Full OV518 support (except for color), initial OV518+ support
  - Improved OV6620 quality (Credit: Alexandre F.)
  - ov51x_init_isoc() should exit if usb_submit_urb() fails
  - ISO completion handler should only issue warning if bad data is received
  - Added "mirror" module parameter; reverses image horizontally
  - Changed USB control transaction fields to match Windows driver
  - New decompression module locking (decomp_ops->owner), per Greg's advice
  - EXPORT_SYMBOL_NOVERS => EXPORT_SYMBOL
  - New devices: Lifeview USB Live TV PAL/SECAM and PAL D/K+B/G
  - Disabled buf_timeout feature. It was calling vfree() in interrupt
    context, which is illegal. Memory is deallocated immediately on close().
  - Most sensors thought to be OV7620AE were actually OV76BE. Changed code
    to reflect this, and emit a warning if an OV7620AE is encountered.
  - Miscellaneous cleanups and bug fixes
parent f5864419
...@@ -128,7 +128,7 @@ MODULE PARAMETERS: ...@@ -128,7 +128,7 @@ MODULE PARAMETERS:
programs that expect RGB data (e.g. gqcam) to work with this driver. If programs that expect RGB data (e.g. gqcam) to work with this driver. If
your colors look VERY wrong, you may want to change this. your colors look VERY wrong, you may want to change this.
NAME: buf_timeout NAME: buf_timeout (Temporarily disabled. Memory is deallocated immediately)
TYPE: integer TYPE: integer
DEFAULT: 5 (seconds) DEFAULT: 5 (seconds)
DESC: Number of seconds before unused frame buffers are deallocated. DESC: Number of seconds before unused frame buffers are deallocated.
...@@ -294,6 +294,13 @@ MODULE PARAMETERS: ...@@ -294,6 +294,13 @@ MODULE PARAMETERS:
camera cannot keep up with the speed of the USB bus (eg. at low frame camera cannot keep up with the speed of the USB bus (eg. at low frame
resolutions). This feature is always enabled when compression is on. resolutions). This feature is always enabled when compression is on.
NAME: mirror
TYPE: integer (Boolean)
DEFAULT: 0 (off)
DESC: Setting this to 1 will reverse ("mirror") the image horizontally. This
might be necessary if your camera has a custom lens assembly. This has
no effect with video capture devices.
WORKING FEATURES: WORKING FEATURES:
o Color streaming/capture at most widths and heights that are multiples of 8. o Color streaming/capture at most widths and heights that are multiples of 8.
o RGB24, RGB565, YUV420/YUV420P, YUV422/YUYV, and YUV422P color o RGB24, RGB565, YUV420/YUV420P, YUV422/YUYV, and YUV422P color
...@@ -305,6 +312,7 @@ WORKING FEATURES: ...@@ -305,6 +312,7 @@ WORKING FEATURES:
o Compression support o Compression support
EXPERIMENTAL FEATURES: EXPERIMENTAL FEATURES:
o OV518/OV518+ support
o OV6630 sensor support o OV6630 sensor support
o Banding filter o Banding filter
o SMP compatibility o SMP compatibility
...@@ -314,8 +322,6 @@ TO-DO: ...@@ -314,8 +322,6 @@ TO-DO:
o Setting of hue not working with OV7620 o Setting of hue not working with OV7620
o Setting of contrast and hue not working with OV7620AE o Setting of contrast and hue not working with OV7620AE
o OV8600 sensor support (Not used in anything yet) o OV8600 sensor support (Not used in anything yet)
o OV518/OV518+ support (all that's needed is the decompressor)
o cams >= 3 not working
HOW TO CONTACT ME: HOW TO CONTACT ME:
......
This diff is collapsed.
...@@ -444,7 +444,7 @@ struct ov511_frame { ...@@ -444,7 +444,7 @@ struct ov511_frame {
int snapshot; /* True if frame was a snapshot */ int snapshot; /* True if frame was a snapshot */
}; };
#define DECOMP_INTERFACE_VER 3 #define DECOMP_INTERFACE_VER 4
/* Compression module operations */ /* Compression module operations */
struct ov51x_decomp_ops { struct ov51x_decomp_ops {
...@@ -454,8 +454,7 @@ struct ov51x_decomp_ops { ...@@ -454,8 +454,7 @@ struct ov51x_decomp_ops {
int, int, int); int, int, int);
int (*decomp_422)(unsigned char *, unsigned char *, unsigned char *, int (*decomp_422)(unsigned char *, unsigned char *, unsigned char *,
int, int, int); int, int, int);
void (*decomp_lock)(void); struct module *owner;
void (*decomp_unlock)(void);
}; };
struct usb_ov511 { struct usb_ov511 {
...@@ -484,6 +483,7 @@ struct usb_ov511 { ...@@ -484,6 +483,7 @@ struct usb_ov511 {
int auto_gain; /* Auto gain control enabled flag */ int auto_gain; /* Auto gain control enabled flag */
int auto_exp; /* Auto exposure enabled flag */ int auto_exp; /* Auto exposure enabled flag */
int backlight; /* Backlight exposure algorithm flag */ int backlight; /* Backlight exposure algorithm flag */
int mirror; /* Image is reversed horizontally */
int led_policy; /* LED: off|on|auto; OV511+ only */ int led_policy; /* LED: off|on|auto; OV511+ only */
...@@ -522,9 +522,9 @@ struct usb_ov511 { ...@@ -522,9 +522,9 @@ struct usb_ov511 {
int bclass; /* Class of bridge (BCL_*) */ int bclass; /* Class of bridge (BCL_*) */
int sensor; /* Type of image sensor chip (SEN_*) */ int sensor; /* Type of image sensor chip (SEN_*) */
int sclass; /* Type of image sensor chip (SCL_*) */ int sclass; /* Type of image sensor chip (SCL_*) */
int tuner; /* Type of TV tuner */
int packet_size; /* Frame size per isoc desc */ 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 */ struct semaphore param_lock; /* params lock for this camera */
...@@ -555,10 +555,13 @@ struct usb_ov511 { ...@@ -555,10 +555,13 @@ struct usb_ov511 {
int has_audio_proc; /* Device has an audio processor */ int has_audio_proc; /* Device has an audio processor */
int freq; /* Current tuner frequency */ int freq; /* Current tuner frequency */
int tuner_type; /* Specific tuner model */ int tuner_type; /* Specific tuner model */
int pal; /* Device is designed for PAL resolution */
/* I2C interface to kernel */ /* I2C interface to kernel */
struct semaphore i2c_lock; /* Protect I2C controller regs */ struct semaphore i2c_lock; /* Protect I2C controller regs */
unsigned char primary_i2c_slave; /* I2C write id of sensor */ unsigned char primary_i2c_slave; /* I2C write id of sensor */
unsigned char tuner_i2c_slave; /* I2C write id of tuner */
unsigned char audio_i2c_slave; /* I2C write id of audio processor */
/* Control transaction stuff */ /* Control transaction stuff */
unsigned char *cbuf; /* Buffer for payload */ unsigned char *cbuf; /* Buffer for payload */
...@@ -588,18 +591,6 @@ symbolic(struct symbolic_list list[], int num) ...@@ -588,18 +591,6 @@ symbolic(struct symbolic_list list[], int num)
return (NOT_DEFINED_STR); return (NOT_DEFINED_STR);
} }
struct mode_list_518 {
int width;
int height;
u8 reg28;
u8 reg29;
u8 reg2a;
u8 reg2c;
u8 reg2e;
u8 reg24;
u8 reg25;
};
/* Compression stuff */ /* Compression stuff */
#define OV511_QUANTABLESIZE 64 #define OV511_QUANTABLESIZE 64
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment