rpms/kernel/F-13 linux-2.6-v4l-dvb-gspca-fixes.patch, NONE, 1.1 kernel.spec, 1.1951, 1.1952 linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch, 1.2, 1.3
Hans de Goede
jwrdegoede at fedoraproject.org
Fri Mar 19 12:01:25 UTC 2010
Author: jwrdegoede
Update of /cvs/pkgs/rpms/kernel/F-13
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv454
Modified Files:
kernel.spec linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
Added Files:
linux-2.6-v4l-dvb-gspca-fixes.patch
Log Message:
* Fri Mar 19 2010 Hans de Goede <hdegoede at redhat.com>
- Cherry pick various webcam driver fixes
(#571188, #572302, #572373)
linux-2.6-v4l-dvb-gspca-fixes.patch:
Documentation/video4linux/gspca.txt | 1
b/Documentation/video4linux/gspca.txt | 4
b/drivers/media/video/gspca/Kconfig | 6
b/drivers/media/video/gspca/ov534.c | 100 ------
b/drivers/media/video/gspca/sn9c20x.c | 6
b/drivers/media/video/gspca/sonixj.c | 21 +
b/drivers/media/video/gspca/spca508.c | 1
b/drivers/media/video/gspca/spca561.c | 1
drivers/media/video/gspca/ov534.c | 521 +++++++++++++++++++---------------
drivers/media/video/gspca/sn9c20x.c | 322 ++++++++++-----------
drivers/media/video/gspca/sonixj.c | 440 ++++++++++++++++++++++++----
drivers/media/video/gspca/spca561.c | 58 ++-
12 files changed, 894 insertions(+), 587 deletions(-)
--- NEW FILE linux-2.6-v4l-dvb-gspca-fixes.patch ---
From: German Galkin <galkinga at gmail.com>
Date: Sun, 7 Mar 2010 09:19:02 +0000 (-0300)
Subject: V4L/DVB: gspca - sn9c20x: Fix exposure control for HV7131R sensor
X-Git-Url: http://git.linuxtv.org/v4l-dvb.git?a=commitdiff_plain;h=0c05cee69fbef74a08f4f9804f0a3ca7ba39a3e2
V4L/DVB: gspca - sn9c20x: Fix exposure control for HV7131R sensor
Make the range of exposure values (0-0x1770) distribute evenly through
HV7131R's exposure control bytes.
Signed-off-by: German Galkin <galkinga at gmail.com>
Signed-off-by: Jean-François Moine <moinejf at free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>
---
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index 4a1bc08..dce5ef8 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -1654,9 +1654,9 @@ static int set_exposure(struct gspca_dev *gspca_dev)
case SENSOR_HV7131R:
exp[0] |= (4 << 4);
exp[2] = 0x25;
- exp[3] = ((sd->exposure * 0xffffff) / 0xffff) >> 16;
- exp[4] = ((sd->exposure * 0xffffff) / 0xffff) >> 8;
- exp[5] = ((sd->exposure * 0xffffff) / 0xffff) & 0xff;
+ exp[3] = (sd->exposure >> 5) & 0xff;
+ exp[4] = (sd->exposure << 3) & 0xff;
+ exp[5] = 0;
break;
default:
return 0;
>From 1f6d33db111022345a85d8f441a22a5a46fc8ca2 Mon Sep 17 00:00:00 2001
From: Brian Johnson <brijohn at gmail.com>
Date: Tue, 9 Mar 2010 19:53:05 -0500
Subject: [PATCH] gspca - sn9c20x: use gspca's input device handling
Drop custom code for handling the input button in
favor of using gspca's input hanlding mechinism.
---
drivers/media/video/gspca/Kconfig | 6 --
drivers/media/video/gspca/sn9c20x.c | 145 ++++++++---------------------------
2 files changed, 33 insertions(+), 118 deletions(-)
diff --git a/drivers/media/video/gspca/Kconfig b/drivers/media/video/gspca/Kconfig
index e0060c1..5d920e5 100644
--- a/drivers/media/video/gspca/Kconfig
+++ b/drivers/media/video/gspca/Kconfig
@@ -172,12 +172,6 @@ config USB_GSPCA_SN9C20X
To compile this driver as a module, choose M here: the
module will be called gspca_sn9c20x.
-config USB_GSPCA_SN9C20X_EVDEV
- bool "Enable evdev support"
- depends on USB_GSPCA_SN9C20X && INPUT
- ---help---
- Say Y here in order to enable evdev support for sn9c20x webcam button.
-
config USB_GSPCA_SONIXB
tristate "SONIX Bayer USB Camera Driver"
depends on VIDEO_V4L2 && USB_GSPCA
diff --git a/drivers/media/video/gspca/sn9c20x.c b/drivers/media/video/gspca/sn9c20x.c
index dce5ef8..d2a4902 100644
--- a/drivers/media/video/gspca/sn9c20x.c
+++ b/drivers/media/video/gspca/sn9c20x.c
@@ -18,10 +18,7 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
-#include <linux/kthread.h>
-#include <linux/freezer.h>
-#include <linux/usb/input.h>
+#ifdef CONFIG_INPUT
#include <linux/input.h>
#endif
@@ -54,6 +51,9 @@ MODULE_LICENSE("GPL");
#define SENSOR_HV7131R 10
#define SENSOR_MT9VPRB 20
+/* camera flags */
+#define HAS_BUTTON 0x1
+
/* specific webcam descriptor */
struct sd {
struct gspca_dev gspca_dev;
@@ -87,11 +87,7 @@ struct sd {
u8 *jpeg_hdr;
u8 quality;
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
- struct input_dev *input_dev;
- u8 input_gpio;
- struct task_struct *input_task;
-#endif
+ u8 flags;
};
struct i2c_reg_u8 {
@@ -1420,87 +1416,6 @@ static int hv7131r_init_sensor(struct gspca_dev *gspca_dev)
return 0;
}
-#ifdef CONFIG_USB_GSPCA_SN9C20X_EVDEV
-static int input_kthread(void *data)
-{
- struct gspca_dev *gspca_dev = (struct gspca_dev *)data;
- struct sd *sd = (struct sd *) gspca_dev;
-
- DECLARE_WAIT_QUEUE_HEAD(wait);
- set_freezable();
- for (;;) {
- if (kthread_should_stop())
- break;
-
- if (reg_r(gspca_dev, 0x1005, 1) < 0)
- continue;
-
- input_report_key(sd->input_dev,
- KEY_CAMERA,
- gspca_dev->usb_buf[0] & sd->input_gpio);
- input_sync(sd->input_dev);
-
- wait_event_freezable_timeout(wait,
- kthread_should_stop(),
- msecs_to_jiffies(100));
- }
- return 0;
-}
-
-
-static int sn9c20x_input_init(struct gspca_dev *gspca_dev)
-{
- struct sd *sd = (struct sd *) gspca_dev;
- if (sd->input_gpio == 0)
- return 0;
-
- sd->input_dev = input_allocate_device();
- if (!sd->input_dev)
- return -ENOMEM;
-
- sd->input_dev->name = "SN9C20X Webcam";
-
- sd->input_dev->phys = kasprintf(GFP_KERNEL, "usb-%s-%s",
- gspca_dev->dev->bus->bus_name,
- gspca_dev->dev->devpath);
-
- if (!sd->input_dev->phys)
- return -ENOMEM;
-
- usb_to_input_id(gspca_dev->dev, &sd->input_dev->id);
- sd->input_dev->dev.parent = &gspca_dev->dev->dev;
-
- set_bit(EV_KEY, sd->input_dev->evbit);
- set_bit(KEY_CAMERA, sd->input_dev->keybit);
-
- if (input_register_device(sd->input_dev))
- return -EINVAL;
-
- sd->input_task = kthread_run(input_kthread, gspca_dev, "sn9c20x/%s-%s",
- gspca_dev->dev->bus->bus_name,
- gspca_dev->dev->devpath);
-
- if (IS_ERR(sd->input_task))
- return -EINVAL;
-
- return 0;
-}
-
-static void sn9c20x_input_cleanup(struct gspca_dev *gspca_dev)
-{
- struct sd *sd = (struct sd *) gspca_dev;
- if (sd->input_task != NULL && !IS_ERR(sd->input_task))
- kthread_stop(sd->input_task);
-
- if (sd->input_dev != NULL) {
- input_unregister_device(sd->input_dev);
- kfree(sd->input_dev->phys);
- input_free_device(sd->input_dev);
- sd->input_dev = NULL;
- }
-}
-#endif
-
static int set_cmatrix(struct gspca_dev *gspca_dev)
{
struct sd *sd = (struct sd *) gspca_dev;
@@ -2004,6 +1919,7 @@ static int sd_config(struct gspca_dev *gspca_dev,
sd->sensor = (id->driver_info >> 8) & 0xff;
sd->i2c_addr = id->driver_info & 0xff;
+ sd->flags = (id->driver_info >> 16) & 0xff;
switch (sd->sensor) {
case SENSOR_MT9M111:
@@ -2038,11 +1954,6 @@ static int sd_config(struct gspca_dev *gspca_dev,
sd->quality = 95;
[...2774 lines suppressed...]
+ else
+ PDEBUG(D_PROBE, "Unknown sensor ID %02x%02x",
+ gspca_dev->usb_buf[3],
+ gspca_dev->usb_buf[4]);
+}
+
static void bridge_init(struct gspca_dev *gspca_dev,
const u8 *sn9c1xx)
{
@@ -1374,8 +1592,10 @@ static void bridge_init(struct gspca_dev *gspca_dev,
reg_w(gspca_dev, 0x08, &sn9c1xx[8], 2);
reg_w(gspca_dev, 0x17, &sn9c1xx[0x17], 5);
switch (sd->sensor) {
+ case SENSOR_GC0307:
case SENSOR_OV7660:
case SENSOR_PO1030:
+ case SENSOR_PO2030N:
case SENSOR_SP80708:
reg9a = reg9a_spec;
break;
@@ -1396,6 +1616,14 @@ static void bridge_init(struct gspca_dev *gspca_dev,
reg_w1(gspca_dev, 0x01, 0x42);
reg_w1(gspca_dev, 0x01, 0x42);
break;
+ case SENSOR_GC0307:
+ msleep(50);
+ reg_w1(gspca_dev, 0x01, 0x61);
+ reg_w1(gspca_dev, 0x17, 0x22);
+ reg_w1(gspca_dev, 0x01, 0x60);
+ reg_w1(gspca_dev, 0x01, 0x40);
+ msleep(50);
+ break;
case SENSOR_MT9V111:
reg_w1(gspca_dev, 0x01, 0x61);
reg_w1(gspca_dev, 0x17, 0x61);
@@ -1438,6 +1666,12 @@ static void bridge_init(struct gspca_dev *gspca_dev,
reg_w1(gspca_dev, 0x01, 0x60);
reg_w1(gspca_dev, 0x01, 0x40);
break;
+ case SENSOR_PO2030N:
+ reg_w1(gspca_dev, 0x01, 0x63);
+ reg_w1(gspca_dev, 0x17, 0x20);
+ reg_w1(gspca_dev, 0x01, 0x62);
+ reg_w1(gspca_dev, 0x01, 0x42);
+ break;
case SENSOR_OV7660:
/* fall thru */
case SENSOR_SP80708:
@@ -1545,6 +1779,9 @@ static int sd_init(struct gspca_dev *gspca_dev)
case SENSOR_OV7648:
ov7648_probe(gspca_dev);
break;
+ case SENSOR_PO2030N:
+ po2030n_probe(gspca_dev);
+ break;
}
regGpio[1] = 0x70;
reg_w(gspca_dev, 0x01, regGpio, 2);
@@ -1763,9 +2000,12 @@ static void setgamma(struct gspca_dev *gspca_dev)
case SENSOR_MT9V111:
gamma_base = gamma_spec_1;
break;
- case SENSOR_SP80708:
+ case SENSOR_GC0307:
gamma_base = gamma_spec_2;
break;
+ case SENSOR_SP80708:
+ gamma_base = gamma_spec_3;
+ break;
default:
gamma_base = gamma_def;
break;
@@ -1956,9 +2196,15 @@ static int sd_start(struct gspca_dev *gspca_dev)
static const u8 CA[] = { 0x28, 0xd8, 0x14, 0xec };
static const u8 CA_adcm1700[] =
{ 0x14, 0xec, 0x0a, 0xf6 };
+ static const u8 CA_po2030n[] =
+ { 0x1e, 0xe2, 0x14, 0xec };
static const u8 CE[] = { 0x32, 0xdd, 0x2d, 0xdd }; /* MI0360 */
+ static const u8 CE_gc0307[] =
+ { 0x32, 0xce, 0x2d, 0xd3 };
static const u8 CE_ov76xx[] =
{ 0x32, 0xdd, 0x32, 0xdd };
+ static const u8 CE_po2030n[] =
+ { 0x14, 0xe7, 0x1e, 0xdd };
/* create the JPEG header */
sd->jpeg_hdr = kmalloc(JPEG_HDR_SZ, GFP_KERNEL);
@@ -2015,6 +2261,9 @@ static int sd_start(struct gspca_dev *gspca_dev)
}
reg_w1(gspca_dev, 0x18, sn9c1xx[0x18]);
switch (sd->sensor) {
+ case SENSOR_GC0307:
+ reg17 = 0xa2;
+ break;
case SENSOR_MT9V111:
reg17 = 0xe0;
break;
@@ -2029,6 +2278,7 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg17 = 0xa0;
break;
case SENSOR_PO1030:
+ case SENSOR_PO2030N:
reg17 = 0xa0;
break;
default:
@@ -2053,12 +2303,16 @@ static int sd_start(struct gspca_dev *gspca_dev)
case SENSOR_SP80708:
reg_w1(gspca_dev, 0x9a, 0x05);
break;
+ case SENSOR_GC0307:
case SENSOR_MT9V111:
reg_w1(gspca_dev, 0x9a, 0x07);
break;
case SENSOR_OV7648:
reg_w1(gspca_dev, 0x9a, 0x0a);
break;
+ case SENSOR_PO2030N:
+ reg_w1(gspca_dev, 0x9a, 0x06);
+ break;
default:
reg_w1(gspca_dev, 0x9a, 0x08);
break;
@@ -2083,6 +2337,11 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg1 = 0x46;
reg17 = 0xe2;
break;
+ case SENSOR_GC0307:
+ init = gc0307_sensor_param1;
+ reg17 = 0xa2;
+ reg1 = 0x44;
+ break;
case SENSOR_MO4000:
if (mode) {
/* reg1 = 0x46; * 320 clk 48Mhz 60fp/s */
@@ -2132,6 +2391,11 @@ static int sd_start(struct gspca_dev *gspca_dev)
reg17 = 0xa2;
reg1 = 0x44;
break;
+ case SENSOR_PO2030N:
+ init = po2030n_sensor_param1;
+ reg1 = 0x46;
+ reg17 = 0xa2;
+ break;
default:
/* case SENSOR_SP80708: */
init = sp80708_sensor_param1;
@@ -2151,10 +2415,18 @@ static int sd_start(struct gspca_dev *gspca_dev)
}
reg_w(gspca_dev, 0xc0, C0, 6);
- if (sd->sensor == SENSOR_ADCM1700)
+ switch (sd->sensor) {
+ case SENSOR_ADCM1700:
+ case SENSOR_GC0307:
reg_w(gspca_dev, 0xca, CA_adcm1700, 4);
- else
+ break;
+ case SENSOR_PO2030N:
+ reg_w(gspca_dev, 0xca, CA_po2030n, 4);
+ break;
+ default:
reg_w(gspca_dev, 0xca, CA, 4);
+ break;
+ }
switch (sd->sensor) {
case SENSOR_ADCM1700:
case SENSOR_OV7630:
@@ -2162,6 +2434,12 @@ static int sd_start(struct gspca_dev *gspca_dev)
case SENSOR_OV7660:
reg_w(gspca_dev, 0xce, CE_ov76xx, 4);
break;
+ case SENSOR_GC0307:
+ reg_w(gspca_dev, 0xce, CE_gc0307, 4);
+ break;
+ case SENSOR_PO2030N:
+ reg_w(gspca_dev, 0xce, CE_po2030n, 4);
+ break;
default:
reg_w(gspca_dev, 0xce, CE, 4);
/* ?? {0x1e, 0xdd, 0x2d, 0xe7} */
@@ -2199,6 +2477,9 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
data = 0x0b;
switch (sd->sensor) {
+ case SENSOR_GC0307:
+ data = 0x29;
+ break;
case SENSOR_HV7131R:
i2c_w8(gspca_dev, stophv7131);
data = 0x2b;
@@ -2675,7 +2956,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
#endif
{USB_DEVICE(0x0c45, 0x613c), BS(SN9C120, HV7131R)},
{USB_DEVICE(0x0c45, 0x613e), BS(SN9C120, OV7630)},
-/* {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, *sn9c120b*/
+ {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, /*sn9c120b*/
{USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)}, /*sn9c120b*/
{USB_DEVICE(0x0c45, 0x6148), BS(SN9C120, OM6802)}, /*sn9c120b*/
{USB_DEVICE(0x0c45, 0x614a), BS(SN9C120, ADCM1700)}, /*sn9c120b*/
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-13/kernel.spec,v
retrieving revision 1.1951
retrieving revision 1.1952
diff -u -p -r1.1951 -r1.1952
--- kernel.spec 18 Mar 2010 15:11:09 -0000 1.1951
+++ kernel.spec 19 Mar 2010 12:01:23 -0000 1.1952
@@ -710,7 +710,10 @@ Patch2899: linux-2.6-v4l-dvb-fixes.patch
Patch2900: linux-2.6-v4l-dvb-update.patch
Patch2901: linux-2.6-v4l-dvb-experimental.patch
+# Rebase gspca to what will be in 2.6.34
Patch2904: linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
+# Some cherry picked fixes from v4l-dvb-next
+Patch2905: linux-2.6-v4l-dvb-gspca-fixes.patch
# fs fixes
@@ -1329,6 +1332,7 @@ ApplyOptionalPatch linux-2.6-v4l-dvb-upd
ApplyOptionalPatch linux-2.6-v4l-dvb-experimental.patch
ApplyPatch linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
+ApplyPatch linux-2.6-v4l-dvb-gspca-fixes.patch
# Patches headed upstream
ApplyPatch linux-2.6-rfkill-all.patch
@@ -1990,6 +1994,10 @@ fi
# and build.
%changelog
+* Fri Mar 19 2010 Hans de Goede <hdegoede at redhat.com>
+- Cherry pick various webcam driver fixes
+ (#571188, #572302, #572373)
+
* Thu Mar 18 2010 Neil Horman <nhorman at redhat.com>
- Disable TIPC protocol in config
linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch:
drivers/media/video/gspca/Kconfig | 46
drivers/media/video/gspca/Makefile | 8
drivers/media/video/gspca/benq.c | 322 +++
drivers/media/video/gspca/coarse_expo_autogain.h | 116 +
drivers/media/video/gspca/conex.c | 4
drivers/media/video/gspca/cpia1.c | 2022 +++++++++++++++++++++
drivers/media/video/gspca/etoms.c | 10
drivers/media/video/gspca/gl860/gl860.c | 10
drivers/media/video/gspca/gspca.c | 252 ++
drivers/media/video/gspca/gspca.h | 30
drivers/media/video/gspca/m5602/m5602_mt9m111.c | 16
drivers/media/video/gspca/m5602/m5602_ov7660.c | 102 +
drivers/media/video/gspca/m5602/m5602_ov7660.h | 2
drivers/media/video/gspca/m5602/m5602_ov9650.c | 2
drivers/media/video/gspca/m5602/m5602_po1030.c | 14
drivers/media/video/gspca/m5602/m5602_s5k4aa.c | 2
drivers/media/video/gspca/m5602/m5602_s5k83a.c | 2
drivers/media/video/gspca/mars.c | 40
drivers/media/video/gspca/mr97310a.c | 226 ++
drivers/media/video/gspca/ov519.c | 170 +
drivers/media/video/gspca/ov534.c | 1253 +------------
drivers/media/video/gspca/ov534_9.c | 1477 +++++++++++++++
drivers/media/video/gspca/pac207.c | 25
drivers/media/video/gspca/pac7302.c | 432 ++--
drivers/media/video/gspca/pac7311.c | 272 +-
drivers/media/video/gspca/pac_common.h | 9
drivers/media/video/gspca/sn9c2028.c | 757 +++++++
drivers/media/video/gspca/sn9c2028.h | 51
drivers/media/video/gspca/sn9c20x.c | 33
drivers/media/video/gspca/sonixb.c | 481 +++-
drivers/media/video/gspca/sonixj.c | 327 ++-
drivers/media/video/gspca/spca500.c | 21
drivers/media/video/gspca/spca501.c | 27
drivers/media/video/gspca/spca505.c | 2
drivers/media/video/gspca/spca506.c | 4
drivers/media/video/gspca/spca508.c | 48
drivers/media/video/gspca/spca561.c | 35
drivers/media/video/gspca/sq905c.c | 45
drivers/media/video/gspca/stk014.c | 2
drivers/media/video/gspca/stv0680.c | 36
drivers/media/video/gspca/stv06xx/stv06xx.c | 32
drivers/media/video/gspca/stv06xx/stv06xx_pb0100.c | 22
drivers/media/video/gspca/sunplus.c | 71
drivers/media/video/gspca/t613.c | 102 +
drivers/media/video/gspca/tv8532.c | 8
drivers/media/video/gspca/vc032x.c | 1163 +++++++++++-
drivers/media/video/gspca/zc3xx.c | 712 ++++---
include/linux/videodev2.h | 3
48 files changed, 8596 insertions(+), 2250 deletions(-)
Index: linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-13/linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -p -r1.2 -r1.3
--- linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch 21 Feb 2010 15:35:18 -0000 1.2
+++ linux-2.6-v4l-dvb-rebase-gspca-to-latest.patch 19 Mar 2010 12:01:24 -0000 1.3
@@ -10895,7 +10895,7 @@ index 0bd36a0..c5a2423 100644
{
{
.id = V4L2_CID_POWER_LINE_FREQUENCY,
-@@ -261,28 +281,41 @@ static struct ctrl sd_ctrls[] = {
+@@ -261,28 +281,37 @@ static struct ctrl sd_ctrls[] = {
/* table of the disabled controls */
static __u32 ctrl_dis[] = {
@@ -10910,12 +10910,8 @@ index 0bd36a0..c5a2423 100644
(1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
- /* SENSOR_MO4000 2 */
+ /* SENSOR_MO4000 3 */
-+#if 1
(1 << VFLIP_IDX) | (1 << FREQ_IDX),
- /* SENSOR_MT9V111 3 */
-+#else
-+ (1 << AUTOGAIN_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
-+#endif
+ /* SENSOR_MT9V111 4 */
(1 << INFRARED_IDX) | (1 << VFLIP_IDX) | (1 << FREQ_IDX),
- /* SENSOR_OM6802 4 */
@@ -11028,92 +11024,6 @@ index 0bd36a0..c5a2423 100644
static const u8 hv7131r_sensor_init[][8] = {
{0xc1, 0x11, 0x01, 0x08, 0x01, 0x00, 0x00, 0x10},
{0xb1, 0x11, 0x34, 0x17, 0x7f, 0x00, 0x00, 0x10},
-@@ -594,7 +680,11 @@ static const u8 mt9v111_sensor_init[][8] = {
- static const u8 mt9v111_sensor_param1[][8] = {
- {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
- {0xb1, 0x5c, 0x20, 0x00, 0x00, 0x00, 0x00, 0x10},
-+#if 1
- {0xb1, 0x5c, 0x09, 0x01, 0x2c, 0x00, 0x00, 0x10},
-+#else
-+ {0xb1, 0x5c, 0x09, 0x00, 0x64, 0x00, 0x00, 0x10}, /* shutter width */
-+#endif
- {0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10}, /* green1 gain */
- {0xd1, 0x5c, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10}, /* red gain */
- /*******/
-@@ -606,8 +696,13 @@ static const u8 mt9v111_sensor_param1[][8] = {
- };
- static const u8 om6802_init0[2][8] = {
- /*fixme: variable*/
-+#if 0
-+ {0xa0, 0x34, 0x90, 0x05, 0x00, 0x00, 0x00, 0x10},
-+ {0xa0, 0x34, 0x49, 0x85, 0x00, 0x00, 0x00, 0x10},
-+#else
- {0xa0, 0x34, 0x29, 0x0e, 0x00, 0x00, 0x00, 0x10},
- {0xa0, 0x34, 0x23, 0xb0, 0x00, 0x00, 0x00, 0x10},
-+#endif
- };
- static const u8 om6802_sensor_init[][8] = {
- {0xa0, 0x34, 0xdf, 0x6d, 0x00, 0x00, 0x00, 0x10},
-@@ -764,7 +859,11 @@ static const u8 ov7660_sensor_init[][8] = {
- /* COM 1 BAVE GEAVE AECHH */
- {0xb1, 0x21, 0x08, 0x83, 0x01, 0x00, 0x00, 0x10}, /* RAVE COM2 */
- {0xd1, 0x21, 0x0c, 0x00, 0x08, 0x04, 0x4f, 0x10}, /* COM 3 4 5 6 */
-+#if 0
-+ {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xf8, 0x10},
-+#else
- {0xd1, 0x21, 0x10, 0x7f, 0x40, 0x05, 0xff, 0x10},
-+#endif
- /* AECH CLKRC COM7 COM8 */
- {0xc1, 0x21, 0x14, 0x2c, 0x00, 0x02, 0x00, 0x10}, /* COM9 COM10 */
- {0xd1, 0x21, 0x17, 0x10, 0x60, 0x02, 0x7b, 0x10},
-@@ -886,9 +985,11 @@ static const u8 po1030_sensor_init[][8] = {
- {}
- };
- static const u8 po1030_sensor_param1[][8] = {
-+#if 1
- /* from ms-win traces - these values change with auto gain/expo/wb.. */
- {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
- {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
-+#if 1
- /* mean values */
- {0xc1, 0x6e, 0x1a, 0x02, 0xd4, 0xa4, 0x00, 0x10}, /* integlines */
- {0xa1, 0x6e, 0x15, 0x04, 0x00, 0x00, 0x00, 0x10}, /* global gain */
-@@ -898,6 +999,35 @@ static const u8 po1030_sensor_param1[][8] = {
- {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10}, /* frameheight */
- {0xa1, 0x6e, 0x07, 0xd5, 0x00, 0x00, 0x00, 0x10},
- /* {0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10}, */
-+#else
-+/* 1st values */
-+ {0xc1, 0x6e, 0x1a, 0x02, 0x3a, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x15, 0x01, 0x00, 0x00, 0x00, 0x10},
-+ {0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10},
-+
-+ {0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x07, 0x44, 0x00, 0x00, 0x00, 0x10},
-+ {0xc1, 0x6e, 0x16, 0x49, 0x40, 0x45, 0x00, 0x10},
-+#endif
-+#else
-+ {0xa1, 0x6e, 0x1e, 0x03, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x15, 0x01, 0x00, 0x00, 0x00, 0x10},
-+ {0xc1, 0x6e, 0x16, 0x40, 0x40, 0x40, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x07, 0xb5, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x18, 0x6B, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x1d, 0x08, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x10},
-+ {0xa1, 0x6e, 0x07, 0xb8, 0x00, 0x00, 0x00, 0x10},
-+
-+ {0xc1, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00},
-+ {0xa1, 0x6e, 0x06, 0x03, 0x00, 0x00, 0x00, 0x10}, /* Bright... */
-+ {0xa1, 0x6e, 0x07, 0x66, 0x00, 0x00, 0x00, 0x10}, /* B.. */
-+ {0xc1, 0x6e, 0x1a, 0x03, 0x65, 0x90, 0x00, 0x10}, /* Bright/Witen....*/
-+/* {0xc1, 0x6e, 0x16, 0x45, 0x40, 0x60, 0x00, 0x10}, * Bright/Witene */
-+#endif
- {}
- };
-
@@ -986,17 +1116,18 @@ static const u8 sp80708_sensor_param1[][8] = {
{}
};
@@ -11197,22 +11107,6 @@ index 0bd36a0..c5a2423 100644
case SENSOR_MT9V111:
reg_w1(gspca_dev, 0x01, 0x61);
reg_w1(gspca_dev, 0x17, 0x61);
-@@ -1327,7 +1475,15 @@ static void bridge_init(struct gspca_dev *gspca_dev,
- reg_w1(gspca_dev, 0x01, 0x40);
- break;
- case SENSOR_OV7660:
-+#if 1
- /* fall thru */
-+#else
-+ reg_w1(gspca_dev, 0x01, 0x61);
-+ reg_w1(gspca_dev, 0x17, 0x20);
-+ reg_w1(gspca_dev, 0x01, 0x60);
-+ reg_w1(gspca_dev, 0x01, 0x40);
-+ break;
-+#endif
- case SENSOR_SP80708:
- reg_w1(gspca_dev, 0x01, 0x63);
- reg_w1(gspca_dev, 0x17, 0x20);
@@ -1357,14 +1513,19 @@ static int sd_config(struct gspca_dev *gspca_dev,
struct sd *sd = (struct sd *) gspca_dev;
struct cam *cam;
@@ -11264,30 +11158,6 @@ index 0bd36a0..c5a2423 100644
/* set the i2c address */
sn9c1xx = sn_tb[sd->sensor];
-@@ -1506,6 +1677,12 @@ static u32 setexposure(struct gspca_dev *gspca_dev,
- case SENSOR_MT9V111: {
- u8 expo_c1[] =
- { 0xb1, 0x5c, 0x09, 0x00, 0x00, 0x00, 0x00, 0x10 };
-+#if 0
-+ static const u8 c2[] =
-+ { 0xd1, 0x5c, 0x2b, 0x00, 0x33, 0x00, 0xa0, 0x10 };
-+ static const u8 c3[] =
-+ { 0xd1, 0x5c, 0x2d, 0x00, 0xa0, 0x00, 0x33, 0x10 };
-+#endif
-
- if (expo > 0x0280)
- expo = 0x0280;
-@@ -1514,6 +1691,10 @@ static u32 setexposure(struct gspca_dev *gspca_dev,
- expo_c1[3] = expo >> 8;
- expo_c1[4] = expo;
- i2c_w8(gspca_dev, expo_c1);
-+#if 0
-+ i2c_w8(gspca_dev, expo_c2);
-+ i2c_w8(gspca_dev, expo_c3);
-+#endif
- break;
- }
- case SENSOR_OM6802: {
@@ -1543,6 +1724,10 @@ static void setbrightness(struct gspca_dev *gspca_dev)
k2 = ((int) sd->brightness - 0x8000) >> 10;
@@ -11335,18 +11205,6 @@ index 0bd36a0..c5a2423 100644
}
static void setfreq(struct gspca_dev *gspca_dev)
-@@ -1708,7 +1907,11 @@ static void setfreq(struct gspca_dev *gspca_dev)
- if (sd->sensor == SENSOR_OV7660) {
- u8 com8;
-
-+#if 0
-+ com8 = 0xd8; /* no auto gain/wb/expo */
-+#else
- com8 = 0xdf; /* auto gain/wb/expo */
-+#endif
- switch (sd->freq) {
- case 0: /* Banding filter disabled */
- i2c_w1(gspca_dev, 0x13, com8 | 0x20);
@@ -1804,6 +2007,8 @@ static int sd_start(struct gspca_dev *gspca_dev)
int mode;
static const u8 C0[] = { 0x2d, 0x2d, 0x3a, 0x05, 0x04, 0x3f };
@@ -11399,18 +11257,7 @@ index 0bd36a0..c5a2423 100644
case SENSOR_OV7630:
reg17 = 0xe2;
break;
-@@ -1863,51 +2082,50 @@ static int sd_start(struct gspca_dev *gspca_dev)
- reg17 = 0xa0;
- break;
- case SENSOR_PO1030:
-+#if 1
- reg17 = 0xa0;
-+#else
-+ reg17 = 0xae;
-+#endif
- break;
- default:
- reg17 = 0x60;
+@@ -1863,44 +2082,39 @@ static int sd_start(struct gspca_dev *gspca_dev)
break;
}
reg_w1(gspca_dev, 0x17, reg17);
@@ -11495,39 +11342,6 @@ index 0bd36a0..c5a2423 100644
case SENSOR_OV7630:
case SENSOR_OV7648:
case SENSOR_OV7660:
-@@ -1999,6 +2226,13 @@ static int sd_start(struct gspca_dev *gspca_dev)
- break;
- }
-
-+#if 0
-+ /* more sensor initialization - param2 */
-+ if (init != NULL) {
-+ i2c_w_seq(gspca_dev, init);
-+ init = NULL;
-+ }
-+#endif
-
- /* here change size mode 0 -> VGA; 1 -> CIF */
- sd->reg18 = sn9c1xx[0x18] | (mode << 4) | 0x40;
-@@ -2007,8 +2241,18 @@ static int sd_start(struct gspca_dev *gspca_dev)
-
- reg_w1(gspca_dev, 0x17, reg17);
- reg_w1(gspca_dev, 0x01, reg1);
-+#if 0
-+ /* more sensor initialization - param3 */
-+ if (init != NULL)
-+ i2c_w_seq(gspca_dev, init);
-+#endif
-
- switch (sd->sensor) {
-+#if 0
-+ case SENSOR_MT9V111:
-+ setinfrared(sd);
-+ break;
-+#endif
- case SENSOR_OV7630:
- setvflip(sd);
- break;
@@ -2056,7 +2300,8 @@ static void sd_stopN(struct gspca_dev *gspca_dev)
reg_w1(gspca_dev, 0x17, sn9c1xx[0x17]);
reg_w1(gspca_dev, 0x01, sn9c1xx[1]);
@@ -11599,19 +11413,6 @@ index 0bd36a0..c5a2423 100644
};
/* -- module initialisation -- */
-@@ -2425,7 +2710,12 @@ static const __devinitdata struct usb_device_id device_table[] = {
- {USB_DEVICE(0x06f8, 0x3004), BS(SN9C105, OV7660)},
- {USB_DEVICE(0x06f8, 0x3008), BS(SN9C105, OV7660)},
- /* {USB_DEVICE(0x0c45, 0x603a), BS(SN9C102P, OV7648)}, */
-+#if 1
- {USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, HV7131R)},
-+#else
-+/* snpstd3.inf */
-+ {USB_DEVICE(0x0c45, 0x6040), BS(SN9C102P, MI0360)},
-+#endif
- /* {USB_DEVICE(0x0c45, 0x607a), BS(SN9C102P, OV7648)}, */
- /* {USB_DEVICE(0x0c45, 0x607b), BS(SN9C102P, OV7660)}, */
- {USB_DEVICE(0x0c45, 0x607c), BS(SN9C102P, HV7131R)},
@@ -2472,6 +2762,7 @@ static const __devinitdata struct usb_device_id device_table[] = {
/* {USB_DEVICE(0x0c45, 0x6142), BS(SN9C120, PO2030N)}, *sn9c120b*/
{USB_DEVICE(0x0c45, 0x6143), BS(SN9C120, SP80708)}, /*sn9c120b*/
More information about the scm-commits
mailing list