[Spca50x-devs] Add support Creative Live! Cam Notebook Pro (gspcaV1)
Hello, I have the Creative Live! Cam Notebook Pro (prod ID 0x041e:0x4051). After several experiments this camera successfully started
with modified (by me) gspcaV1 driver (gspca-20060813) as zc3xx(?!) bridge+tas5130c(?!!!) sensor camera.
The type of a sensor (tas5130c) has been obviously specified in Windows registry (see attachment) but init
data originally defined in gspca for tas5130c (see tas5130c.h) and dumped by SnoopyPro (and specified in Windows registry)
has been absolutely different ! What does it mean ? Different revisions of tas5130c or wrong name sensor type in Windows registry ?
I just added new init data in tas5130c (tas5130cxx_* - old original init data, tas5130cyy_* new init data) and used prod ID for direct assign new sensor type.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006]
"CoInstallers32"=hex(7):56,00,30,00,32,00,35,00,30,00,50,00,69,00,6e,00,2e,00,\
64,00,6c,00,6c,00,2c,00,43,00,6f,00,49,00,6e,00,73,00,74,00,61,00,6c,00,6c,\
00,65,00,72,00,45,00,6e,00,74,00,72,00,79,00,50,00,6f,00,69,00,6e,00,74,00,\
00,00,00,00
"DevLoader"="*ntkern"
"NTMPDriver"="V0250Dev.sys"
"HardwareConfig"=hex:01
"PageOutWhenUnopened"=hex:00
"PowerDownWhenUnopened"=hex:01
"DontSuspendIfStreamsAreRunning"=hex:01
"CreateFileName"="USB"
"CtProductName"="Creative Live! Cam Notebook Pro"
"CtUnsExt"="NT"
"InfPath"="oem37.inf"
"InfSection"="Cam.Dev"
"InfSectionExt"=".NT"
"ProviderName"="Creative Labs"
"DriverDateData"=hex:00,c0,bd,e1,43,58,c6,01
"DriverDate"="4-5-2006"
"DriverVersion"="1.1.3.405"
"MatchingDeviceId"="usb\\vid_041e&pid_4051"
"DriverDesc"="Live! Cam Notebook Pro #2"
"Vendor"="Creative Labs"
"FriendlyName"="Live! Cam Notebook Pro #2"
"DeviceID"="{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\\0006"
"Capabilities"=dword:00000001
"DeviceType"=dword:00000002
"DeviceSubType"=dword:00000000
"IsPnP"=dword:00000001
"DescPatched"="Live! Cam Notebook Pro #2"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig\SupportSensor]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig\SupportSensor\TAS5130C]
"CMD"=hex:ff,20,00,00,f0,01,02,00
"Initial"=hex:00,00,01,cc,00,08,02,cc,00,10,01,cc,00,02,00,cc,00,03,02,cc,00,\
04,80,cc,00,05,01,cc,00,06,e0,cc,00,8b,98,cc,00,01,01,cc,00,12,03,cc,00,12,\
01,cc,00,98,00,cc,00,9a,00,cc,01,1a,00,cc,01,1c,00,cc,00,9c,e6,cc,00,9e,86,\
cc,00,87,10,cc,00,8b,98,cc,00,1b,24,aa,00,00,80,dd,00,1b,00,aa,00,13,02,aa,\
00,15,04,aa,00,01,00,aa,00,1a,00,aa,00,1c,17,aa,00,86,82,cc,00,87,83,cc,00,\
88,84,cc,00,05,10,aa,00,0a,00,aa,00,0b,a0,aa,00,0c,00,aa,00,0d,a0,aa,00,0e,\
00,aa,00,0f,a0,aa,00,10,00,aa,00,11,a0,aa,00,16,01,aa,00,17,e6,aa,00,18,02,\
aa,00,19,86,aa,00,20,20,aa,01,01,b7,cc,00,12,05,cc,01,00,0d,cc,01,89,76,cc,\
01,ad,09,cc,01,c5,03,cc,01,cb,13,cc,02,50,08,cc,03,01,08,cc,01,a8,60,cc,01,\
16,61,cc,01,18,65,cc
"InitialScale"=hex:00,00,01,cc,00,08,02,cc,00,10,01,cc,00,02,10,cc,00,03,02,cc,\
00,04,80,cc,00,05,01,cc,00,06,e0,cc,00,8b,98,cc,00,01,01,cc,00,12,03,cc,00,\
12,01,cc,00,98,00,cc,00,9a,00,cc,01,1a,00,cc,01,1c,00,cc,00,9c,e8,cc,00,9e,\
88,cc,00,87,10,cc,00,8b,98,cc,00,1b,24,aa,00,00,80,dd,00,1b,00,aa,00,13,02,\
aa,00,15,04,aa,00,01,00,aa,00,1a,00,aa,00,1c,17,aa,00,86,82,cc,00,87,83,cc,\
00,88,84,cc,00,05,10,aa,00,0a,00,aa,00,0b,a0,aa,00,0c,00,aa,00,0d,a0,aa,00,\
0e,00,aa,00,0f,a0,aa,00,10,00,aa,00,11,a0,aa,00,16,01,aa,00,17,e8,aa,00,18,\
02,aa,00,19,88,aa,00,20,20,aa,01,01,b7,cc,00,12,05,cc,01,00,0d,cc,01,89,76,\
cc,01,ad,09,cc,01,c5,03,cc,01,cb,13,cc,02,50,08,cc,03,01,08,cc,01,a8,60,cc,\
01,16,61,cc,01,18,65,cc
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig\SupportSensor\TAS5130C\AE]
"50HZ"=hex:00,82,00,aa,00,83,01,aa,00,84,aa,aa,01,90,00,cc,01,91,06,cc,01,92,\
a8,cc,01,95,00,cc,01,96,00,cc,01,97,47,cc,01,8c,0e,cc,01,8f,15,cc,01,a9,10,\
cc,01,aa,24,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,cc,\
01,80,42,cc,01,8d,78,cc
"50HZScale"=hex:00,82,00,aa,00,83,03,aa,00,84,54,aa,01,90,00,cc,01,91,0d,cc,01,\
92,50,cc,01,95,00,cc,01,96,00,cc,01,97,8e,cc,01,8c,0e,cc,01,8f,15,cc,01,a9,\
10,cc,01,aa,24,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,\
cc,01,80,42,cc,01,8d,78,cc
"60HZ"=hex:00,82,00,aa,00,83,01,aa,00,84,62,aa,01,90,00,cc,01,91,05,cc,01,92,\
88,cc,01,95,00,cc,01,96,00,cc,01,97,3b,cc,01,8c,0e,cc,01,8f,15,cc,01,a9,10,\
cc,01,aa,24,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,cc,\
01,80,42,cc,01,8d,78,cc
"60HZScale"=hex:00,82,00,aa,00,83,02,aa,00,84,c4,aa,01,90,00,cc,01,91,0b,cc,01,\
92,10,cc,01,95,00,cc,01,96,00,cc,01,97,76,cc,01,8c,0e,cc,01,8f,15,cc,01,a9,\
10,cc,01,aa,24,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,\
cc,01,80,42,cc,01,8d,78,cc
"NoFliker"=hex:01,00,0c,cc,00,82,00,aa,00,83,00,aa,00,84,20,aa,01,90,00,cc,01,\
91,05,cc,01,92,88,cc,01,95,00,cc,01,96,00,cc,01,97,10,cc,01,8c,0e,cc,01,8f,\
15,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,cc,01,80,03,\
cc
"NoFlikerScale"=hex:01,00,0c,cc,00,82,00,aa,00,83,00,aa,00,84,20,aa,01,90,00,\
cc,01,91,0b,cc,01,92,10,cc,01,95,00,cc,01,96,00,cc,01,97,10,cc,01,8c,0e,cc,\
01,8f,15,cc,00,1d,62,cc,00,1e,90,cc,00,1f,c8,cc,00,20,ff,cc,01,1d,58,cc,01,\
80,03,cc
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig\SupportSensor\TAS5130C\Settings]
"Gamma"=hex:03
"GammaT"=hex:04,16,30,4e,68,81,98,ac,be,cd,da,e4,ed,f5,fb,ff,00,16,1b,1c,19,18,\
15,12,10,0d,0b,09,08,06,05,00
"MatrixT"=hex:6c,ea,ea,ea,6c,ea,ea,ea,6c
"RJMatrixT"=hex:6c,ea,ea,ea,6c,ea,ea,ea,6c
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\DeviceData]
"TwainDS"="Live! Cam Notebook Pro"
"SpecialInfo"="Creative"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\Settings]
"TASCGain"=dword:00000000
"AVRFil"=dword:00000000
"MidFil"=dword:00000000
"VideoFMT"=dword:00000000
"TestMode"=dword:00000000
"Brightness"=dword:00000014
"Contrast"=dword:00000014
"Hue"=dword:00000012
"Saturation"=dword:00000001
"Sharpness"=dword:00000003
"WhiteBalance"=dword:00000001
"BackLight"=dword:00000000
"ColorEnable"=dword:00000001
"FrameRate"=dword:00000007
"Exposure"=dword:0000000a
"Gain"=dword:00000080
"Mirror"=dword:00000000
"BandWidth"=dword:00000007
"Flicker"=dword:00000001
"Register"=dword:00000000
"SerialNo"=dword:00000001
"Default"=dword:00000001
"Zoom"=dword:00000000
"ExposureAuto"=dword:00000001
"FlipVersion"=dword:00000001
"WhiteBalanceAuto"=dword:00000001
"GainAuto"=dword:00000001
"Vertical"=dword:00000000
"BandWidthAuto"=dword:00000001
"Rgain"=dword:00000040
"Ggain"=dword:00000040
"Bgain"=dword:00000040
"SharpT"=hex:01
"AELastValue03"=dword:0000000d
"AELastValue04"=dword:0000000d
"RGainLastValue"=dword:00000043
"GGainLastValue"=dword:00000040
"BGainLastValue"=dword:00000059
"StillImage"=dword:00000000
"AutoFlipStatus"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\Settings\EVX]
--
Regards,
Serge A. Suchkov
--
Heuristics are bug ridden by definition. If they didn't have bugs,
then they'd be algorithms.
--
Regards,
Serge A. Suchkov
--
It is not enough to succeed. Others must fail.
-- Gore Vidal
diff -u -r -N gspcav1/Etoms/et61xx51.h gspcav1/Etoms/et61xx51.h
--- gspcav1/Etoms/et61xx51.h 2006-04-21 12:00:24.000000000 +0200
+++ gspcav1/Etoms/et61xx51.h 2006-08-14 17:06:09.000000000 +0200
@@ -852,7 +852,7 @@
static int Et_config(struct usb_spca50x *spca50x)
{
switch (spca50x->sensor) {
- case SENSOR_TAS5130C:
+ case SENSOR_TAS5130CXX:
set_EtxxVGA(spca50x);
break;
case SENSOR_PAS106:
diff -u -r -N gspcav1/gspca_core.c gspcav1/gspca_core.c
--- gspcav1/gspca_core.c 2006-07-06 13:23:35.000000000 +0200
+++ gspcav1/gspca_core.c 2006-08-14 17:52:47.000000000 +0200
@@ -362,6 +362,7 @@
LogitechQCCool,
QCimconnect,
QCmessenger,
+ CreativeLiveCamNotebookPro,
LastCamera
};
static struct cam_list clist[] = {
@@ -530,6 +531,7 @@
{LogitechQCCool, "Logitech QuickCam Cool"},
{QCimconnect, "Logitech QuickCam IM/Connect "},
{QCmessenger, "Logitech QuickCam Messenger "},
+ {CreativeLiveCamNotebookPro, "Creative Live!Cam Notebook Pro"},
{-1, NULL}
};
static __devinitdata struct usb_device_id device_table[] = {
@@ -703,6 +705,7 @@
{USB_DEVICE(0x046d, 0x092d)}, /* Logitech QC Elch2 */
{USB_DEVICE(0x046d, 0x092e)}, /* Logitech QC Elch2 */
{USB_DEVICE(0x046d, 0x092f)}, /* Logitech QC Elch2 */
+ {USB_DEVICE(0x041e, 0x4051)}, /* Creative Live!Cam Notebook Pro */
{USB_DEVICE(0x0000, 0x0000)}, /* MystFromOri Unknow Camera */
{} /* Terminating entry */
};
@@ -2768,17 +2771,17 @@
case 0xc005: // zc302 chips
spca50x->desc = Wcam300A;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0xd003: // zc302 chips
spca50x->desc = MustekWcam300A;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0xd004: // zc302 chips
spca50x->desc = WCam300AN;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x504a:
/*try to get the firmware as some cam answer 2.0.1.2.2
@@ -3000,12 +3003,12 @@
case 0x08a0:
spca50x->desc = QCim;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x08a1:
spca50x->desc = QCimA1;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x08a2: // zc302 chips
spca50x->desc = LabtecPro;
@@ -3015,7 +3018,7 @@
case 0x08a3:
spca50x->desc = QCchat;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x08a6:
spca50x->desc = LogitechQCim;
@@ -3055,17 +3058,17 @@
case 0x08b9:
spca50x->desc = QCimB9;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x08d9:
spca50x->desc = QCimconnect;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x08da:
spca50x->desc = QCmessenger;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x0900:
spca50x->desc = LogitechClickSmart310;
@@ -3135,7 +3138,7 @@
case 0x403a:
spca50x->desc = CreativeNxPro2;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x403b:
spca50x->desc = CreativeVista3b;
@@ -3145,18 +3148,23 @@
case 0x4036:
spca50x->desc = CreativeLive;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x401f: // zc301 chips
spca50x->desc = CreativeNotebook;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x4017: // zc301 chips
spca50x->desc = CreativeMobile;
spca50x->bridge = BRIDGE_ZC3XX;
spca50x->sensor = SENSOR_ICM105A;
break;
+ case 0x4051: // zc301 chips
+ spca50x->desc = CreativeLiveCamNotebookPro;
+ spca50x->bridge = BRIDGE_ZC3XX;
+ spca50x->sensor = SENSOR_TAS5130CYY; // TAS5130C???
+ break;
case 0x0920:
spca50x->desc = QCExpress;
spca50x->bridge = BRIDGE_TV8532;
@@ -3214,7 +3222,7 @@
case 0x305b: /* Generic */
spca50x->desc = Zc0305b;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C; //overwrite by the sensor detect routine
+ spca50x->sensor = SENSOR_TAS5130CXX; //overwrite by the sensor detect routine
break;
case 0x0302: /* Generic */
spca50x->desc = Zc302;
@@ -3273,7 +3281,7 @@
case 0x6251:
spca50x->desc = Etoms61x251;
spca50x->bridge = BRIDGE_ETOMS;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
default:
goto error;
@@ -3343,17 +3351,17 @@
case 0x7007: // zc301 chips
spca50x->desc = GeniusVideoCamV2;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x700c: // zc301 chips
spca50x->desc = GeniusVideoCamV3;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
case 0x700f: // zc301 chips
spca50x->desc = GeniusVideoCamExpressV2b;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
default:
goto error;
@@ -3392,7 +3400,7 @@
case 0x8050: // zc301 chips
spca50x->desc = TyphoonWebshotIIUSB300k;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
default:
goto error;
@@ -3408,7 +3416,7 @@
case 0x0a00: // zc301 chips
spca50x->desc = WebCam320;
spca50x->bridge = BRIDGE_ZC3XX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
break;
default:
goto error;
@@ -3459,7 +3467,7 @@
case 0x6025:
spca50x->desc = Sonix6025;
spca50x->bridge = BRIDGE_SONIX;
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
spca50x->customid = SN9C102;
spca50x->i2c_ctrl_reg = 0x20;
spca50x->i2c_base = 0x11;
diff -u -r -N gspcav1/gspca.h gspcav1/gspca.h
--- gspcav1/gspca.h 2006-05-27 12:49:46.000000000 +0200
+++ gspcav1/gspca.h 2006-08-14 17:59:04.000000000 +0200
@@ -95,7 +95,7 @@
#define SENSOR_PB100_BA 4
#define SENSOR_PB100_92 5
#define SENSOR_PAS106_80 6
-#define SENSOR_TAS5130C 7
+#define SENSOR_TAS5130CXX 7
#define SENSOR_ICM105A 8
#define SENSOR_HDCS2020 9
#define SENSOR_PAS106 10
@@ -110,6 +110,7 @@
#define SENSOR_PAS202 19
#define SENSOR_PAC207 20
#define SENSOR_OV7630C 21
+#define SENSOR_TAS5130CYY 22
/* Alternate interface transfer sizes */
#define SPCA50X_ALT_SIZE_0 0
#define SPCA50X_ALT_SIZE_128 1
diff -u -r -N gspcav1/Sonix/sonix.h gspcav1/Sonix/sonix.h
--- gspcav1/Sonix/sonix.h 2006-05-12 23:11:34.000000000 +0200
+++ gspcav1/Sonix/sonix.h 2006-08-14 17:06:14.000000000 +0200
@@ -379,7 +379,7 @@
__u8 i2cpdoit[] = { 0xA0, 0x40, 0x11, 0x01, 0x31, 0x00, 0x63, 0x16 };
//__u8 i2cpexpo1[] = { 0xB0,0x40,0x04,0x07,0x2A,0x00,0x63,0x16 };
__u8 i2cpexpo[] = { 0xB0, 0x40, 0x0e, 0x01, 0xab, 0x00, 0x63, 0x16 };
- if (spca50x->sensor == SENSOR_TAS5130C ||
+ if (spca50x->sensor == SENSOR_TAS5130CXX ||
spca50x->sensor == SENSOR_TAS5110) {
value = (0xFF - (spca50x->brightness >> 8));
i2c[4] = value & 0xFF;
@@ -531,7 +531,7 @@
CompressCtrl[1] = 0x20;
MCK_SIZE = 0x20;
break;
- case SENSOR_TAS5130C:
+ case SENSOR_TAS5130CXX:
sn9c10x = initTas5130;
compress = spca50x->mode << 4 | COMP;
CompressCtrl[0] = compress;
@@ -596,7 +596,7 @@
/* Set the whole registers from the template */
sonixRegWrite(spca50x->dev, 0x08, 0x01, 0x0000, sn9c10x, 0x1f);
switch (spca50x->sensor) {
- case SENSOR_TAS5130C:
+ case SENSOR_TAS5130CXX:
err = tas5130_I2cinit(spca50x);
break;
case SENSOR_PAS106:
@@ -647,7 +647,7 @@
{
switch (spca50x->sensor) {
case SENSOR_OV7630:
- case SENSOR_TAS5130C:
+ case SENSOR_TAS5130CXX:
case SENSOR_HV7131R:
case SENSOR_MI0360:
case SENSOR_PAS202:
diff -u -r -N gspcav1/Vimicro/tas5130c.h gspcav1/Vimicro/tas5130c.h
--- gspcav1/Vimicro/tas5130c.h 2006-01-13 15:01:10.000000000 +0100
+++ gspcav1/Vimicro/tas5130c.h 2006-08-14 17:44:13.000000000 +0200
@@ -17,7 +17,6 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
# #
****************************************************************************/
-
static __u16 tas5130cxx_start_data[][3] = {
{0xa0, 0x01, 0x0000},
{0xa0, 0x50, 0x0002},
@@ -216,3 +215,378 @@
/********************/
{0, 0, 0},
};
+
+/*
+
+ Data dump from Windows registry for TAS5130C(rev?) sensor (Creative Live!Cam Notebook Pro)
+
+ [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0006\ChipConfig\SupportSensor\TAS5130C]
+
+Initial"=hex: 00,00,01,cc "InitialScale"=hex: 00,00,01,cc,
+ 00,08,02,cc, 00,08,02,cc,
+ 00,10,01,cc, 00,10,01,cc,
+ 00,02,00,cc, <- diff -> 00,02,10,cc,
+ 00,03,02,cc, 00,03,02,cc,
+ 00,04,80,cc, 00,04,80,cc,
+ 00,05,01,cc, 00,05,01,cc,
+ 00,06,e0,cc, 00,06,e0,cc,
+ 00,8b,98,cc, 00,8b,98,cc,
+ 00,01,01,cc, 00,01,01,cc,
+ 00,12,03,cc, 00,12,03,cc,
+ 00,12,01,cc, 00,12,01,cc,
+ 00,98,00,cc, 00,98,00,cc,
+ 00,9a,00,cc, 00,9a,00,cc,
+ 01,1a,00,cc, 01,1a,00,cc,
+ 01,1c,00,cc, 01,1c,00,cc,
+ 00,9c,e6,cc, <- diff -> 00,9c,e8,cc,
+ 00,9e,86,cc, <- diff -> 00,9e,88,cc,
+ 00,87,10,cc, 00,87,10,cc,
+ 00,8b,98,cc, 00,8b,98,cc,
+ 00,1b,24,aa, 00,1b,24,aa,
+ 00,00,80,dd, 00,00,80,dd,
+ 00,1b,00,aa, 00,1b,00,aa,
+ 00,13,02,aa, 00,13,02,aa,
+ 00,15,04,aa, 00,15,04,aa,
+ 00,01,00,aa, 00,01,00,aa,
+ 00,1a,00,aa, 00,1a,00,aa,
+ 00,1c,17,aa, 00,1c,17,aa,
+ 00,86,82,cc, 00,86,82,cc,
+ 00,87,83,cc, 00,87,83,cc,
+ 00,88,84,cc, 00,88,84,cc,
+ 00,05,10,aa, 00,05,10,aa,
+ 00,0a,00,aa, 00,0a,00,aa,
+ 00,0b,a0,aa, 00,0b,a0,aa,
+ 00,0c,00,aa, 00,0c,00,aa,
+ 00,0d,a0,aa, 00,0d,a0,aa,
+ 00,0e,00,aa, 00,0e,00,aa,
+ 00,0f,a0,aa, 00,0f,a0,aa,
+ 00,10,00,aa, 00,10,00,aa,
+ 00,11,a0,aa, 00,11,a0,aa,
+ 00,16,01,aa, 00,16,01,aa,
+ 00,17,e6,aa, <- diff -> 00,17,e8,aa,
+ 00,18,02,aa, 00,18,02,aa,
+ 00,19,86,aa, <- diff -> 00,19,88,aa,
+ 00,20,20,aa, 00,20,20,aa,
+ 01,01,b7,cc, 01,01,b7,cc,
+ 00,12,05,cc, 00,12,05,cc,
+ 01,00,0d,cc, 01,00,0d,cc,
+ 01,89,76,cc, 01,89,76,cc,
+ 01,ad,09,cc, 01,ad,09,cc,
+ 01,c5,03,cc, 01,c5,03,cc,
+ 01,cb,13,cc, 01,cb,13,cc,
+ 02,50,08,cc, 02,50,08,cc,
+ 03,01,08,cc, 03,01,08,cc,
+ 01,a8,60,cc, 01,a8,60,cc,
+ 01,16,61,cc, 01,16,61,cc,
+ 01,18,65,cc 01,18,65,cc
+*/
+
+ /*
+ Explore host<->device data exchande from SnoopyPro 0.22
+ */
+static __u16 tas5130cyy_start_data[][3] = {
+{0xa0, 0x0001, 0x0000}, //00,00,01,cc,
+{0xa0, 0x0002, 0x0008}, //00,08,02,cc,
+{0xa0, 0x0001, 0x0010}, //00,10,01,cc,
+{0xa0, 0x0010, 0x0002}, //00,02,00,cc, 0<->10
+{0xa0, 0x0002, 0x0003}, //00,03,02,cc,
+{0xa0, 0x0080, 0x0004}, //00,04,80,cc,
+{0xa0, 0x0001, 0x0005}, //00,05,01,cc,
+{0xa0, 0x00e0, 0x0006}, //00,06,e0,cc,
+{0xa0, 0x0098, 0x008b}, //00,8b,98,cc,
+{0xa0, 0x0001, 0x0001}, //00,01,01,cc,
+{0xa0, 0x0003, 0x0012}, //00,12,03,cc,
+{0xa0, 0x0001, 0x0012}, //00,12,01,cc,
+{0xa0, 0x0000, 0x0098}, //00,98,00,cc,
+{0xa0, 0x0000, 0x009a}, //00,9a,00,cc,
+{0xa0, 0x0000, 0x011a}, //01,1a,00,cc,
+{0xa0, 0x0000, 0x011c}, //01,1c,00,cc,
+{0xa0, 0x00e8, 0x009c}, //00,9c,e6,cc, 6<->8
+{0xa0, 0x0088, 0x009e}, //00,9e,86,cc, 6<->8
+{0xa0, 0x0010, 0x0087}, //00,87,10,cc,
+{0xa0, 0x0098, 0x008b}, //00,8b,98,cc,
+{0xa0, 0x001b, 0x0092}, //00,1b,24,aa,
+{0xa0, 0x0024, 0x0093}, //00,00,80,dd,
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0000, 0x0039},
+{0xa1, 0x0001, 0x0037},
+{0xa0, 0x001b, 0x0092}, //00,1b,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0013, 0x0092}, //00,13,02,aa,
+{0xa0, 0x0002, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0015, 0x0092}, //00,15,04,aa
+{0xa0, 0x0004, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0092},
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090}, //00,01,00,aa,
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0092},
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x001a, 0x0092}, //00,1a,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x001c, 0x0092}, //00,1c,17,aa,
+{0xa0, 0x0017, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0082, 0x0086}, //00,86,82,cc,
+{0xa0, 0x0083, 0x0087}, //00,87,83,cc,
+{0xa0, 0x0084, 0x0088}, //00,88,84,cc,
+{0xa0, 0x0005, 0x0092}, //00,05,10,aa,
+{0xa0, 0x0010, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000a, 0x0092}, //00,0a,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000b, 0x0092}, //00,0b,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x000c, 0x0092}, //00,0c,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000d, 0x0092}, //00,0d,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000e, 0x0092}, //00,0e,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000f, 0x0092}, //00,0f,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0010, 0x0092}, //00,10,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0011, 0x0092}, //00,11,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0000, 0x0039},
+{0xa1, 0x0001, 0x0037},
+{0xa0, 0x0016, 0x0092}, //00,16,01,aa,
+{0xa0, 0x0001, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0017, 0x0092}, //00,17,e6,aa,
+{0xa0, 0x00e8, 0x0093}, // 6<->8
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0018, 0x0092}, //00,18,02,aa,
+{0xa0, 0x0002, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0019, 0x0092}, //00,19,86,aa,
+{0xa0, 0x0088, 0x0093}, // 6<->8
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0020, 0x0092}, //00,20,20,aa,
+{0xa0, 0x0020, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x00b7, 0x0101}, //01,01,b7,cc,
+{0xa0, 0x0005, 0x0012}, //00,12,05,cc,
+{0xa0, 0x000d, 0x0100}, //01,00,0d,cc,
+{0xa0, 0x0076, 0x0189}, //01,89,76,cc,
+{0xa0, 0x0009, 0x01ad}, //01,ad,09,cc,
+{0xa0, 0x0003, 0x01c5}, //01,c5,03,cc,
+{0xa0, 0x0013, 0x01cb}, //01,cb,13,cc,
+{0xa0, 0x0008, 0x0250}, //02,50,08,cc,
+{0xa0, 0x0008, 0x0301}, //03,01,08,cc,
+{0xa0, 0x0060, 0x01a8}, //01,a8,60,cc,
+{0xa0, 0x0061, 0x0116}, //01,16,61,cc,
+{0xa0, 0x0065, 0x0118}, //01,18,65,cc
+ /********************/
+ {0, 0, 0}
+};
+
+static __u16 tas5130cyy_scale_data[][3] = {
+{0xa0, 0x0001, 0x0000}, //00,00,01,cc,
+{0xa0, 0x0002, 0x0008}, //00,08,02,cc,
+{0xa0, 0x0001, 0x0010}, //00,10,01,cc,
+{0xa0, 0x0000, 0x0002}, //00,02,10,cc,
+{0xa0, 0x0002, 0x0003}, //00,03,02,cc,
+{0xa0, 0x0080, 0x0004}, //00,04,80,cc,
+{0xa0, 0x0001, 0x0005}, //00,05,01,cc,
+{0xa0, 0x00e0, 0x0006}, //00,06,e0,cc,
+{0xa0, 0x0098, 0x008b}, //00,8b,98,cc,
+{0xa0, 0x0001, 0x0001}, //00,01,01,cc,
+{0xa0, 0x0003, 0x0012}, //00,12,03,cc,
+{0xa0, 0x0001, 0x0012}, //00,12,01,cc,
+{0xa0, 0x0000, 0x0098}, //00,98,00,cc,
+{0xa0, 0x0000, 0x009a}, //00,9a,00,cc,
+{0xa0, 0x0000, 0x011a}, //01,1a,00,cc,
+{0xa0, 0x0000, 0x011c}, //01,1c,00,cc,
+{0xa0, 0x00e8, 0x009c}, //00,9c,e8,cc, 8<->6
+{0xa0, 0x0088, 0x009e}, //00,9e,88,cc, 8<->6
+{0xa0, 0x0010, 0x0087}, //00,87,10,cc,
+{0xa0, 0x0098, 0x008b}, //00,8b,98,cc,
+{0xa0, 0x001b, 0x0092}, //00,1b,24,aa,
+{0xa0, 0x0024, 0x0093}, //00,00,80,dd,
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0000, 0x0039},
+{0xa1, 0x0001, 0x0037},
+{0xa0, 0x001b, 0x0092}, //00,1b,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0013, 0x0092}, //00,13,02,aa,
+{0xa0, 0x0002, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0015, 0x0092}, //00,15,04,aa
+{0xa0, 0x0004, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0092},
+{0xa0, 0x0000, 0x0093}, //00,01,00,aa,
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0092},
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x001a, 0x0092}, //00,1a,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x001c, 0x0092}, //00,1c,17,aa,
+{0xa0, 0x0017, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0082, 0x0086}, //00,86,82,cc,
+{0xa0, 0x0083, 0x0087}, //00,87,83,cc,
+{0xa0, 0x0084, 0x0088}, //00,88,84,cc,
+{0xa0, 0x0005, 0x0092}, //00,05,10,aa,
+{0xa0, 0x0010, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000a, 0x0092}, //00,0a,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000b, 0x0092}, //00,0b,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x000c, 0x0092}, //00,0c,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000d, 0x0092}, //00,0d,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000e, 0x0092}, //00,0e,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x000f, 0x0092}, //00,0f,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0010, 0x0092}, //00,10,00,aa,
+{0xa0, 0x0000, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0011, 0x0092}, //00,11,a0,aa,
+{0xa0, 0x00a0, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0000, 0x0039},
+{0xa1, 0x0001, 0x0037},
+{0xa0, 0x0016, 0x0092}, //00,16,01,aa,
+{0xa0, 0x0001, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0017, 0x0092}, //00,17,e6,aa
+{0xa0, 0x00e8, 0x0093}, // 8<->6
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0018, 0x0092}, //00,18,02,aa,
+{0xa0, 0x0002, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0001, 0x0090},
+{0xa0, 0x0019, 0x0092}, //00,19,88,aa,
+{0xa0, 0x0088, 0x0093}, // 8<->6
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x0020, 0x0092}, //00,20,20,aa,
+{0xa0, 0x0020, 0x0093},
+{0xa0, 0x0000, 0x0094},
+{0xa0, 0x0001, 0x0090},
+{0xa1, 0x0001, 0x0091},
+{0xa0, 0x00b7, 0x0101}, //01,01,b7,cc,
+{0xa0, 0x0005, 0x0012}, //00,12,05,cc,
+{0xa0, 0x000d, 0x0100}, //01,00,0d,cc,
+{0xa0, 0x0076, 0x0189}, //01,89,76,cc,
+{0xa0, 0x0009, 0x01ad}, //01,ad,09,cc,
+{0xa0, 0x0003, 0x01c5}, //01,c5,03,cc,
+{0xa0, 0x0013, 0x01cb}, //01,cb,13,cc,
+{0xa0, 0x0008, 0x0250}, //02,50,08,cc,
+{0xa0, 0x0008, 0x0301}, //03,01,08,cc,
+{0xa0, 0x0060, 0x01a8}, //01,a8,60,cc,
+{0xa0, 0x0061, 0x0116}, //01,16,61,cc,
+{0xa0, 0x0065, 0x0118}, //01,18,65,cc
+ /********************/
+ {0, 0, 0}
+};
+
diff -u -r -N gspcav1/Vimicro/zc3xx.h gspcav1/Vimicro/zc3xx.h
--- gspcav1/Vimicro/zc3xx.h 2006-08-05 15:41:20.000000000 +0200
+++ gspcav1/Vimicro/zc3xx.h 2006-08-14 18:11:20.000000000 +0200
@@ -148,7 +148,7 @@
spca5xxRegWrite(spca50x->dev, 0xa0, 0x01, 0x0001, NULL, 0);
spca5xxRegWrite(spca50x->dev, 0xa0, 0x03, 0x0012, NULL, 0);
spca5xxRegWrite(spca50x->dev, 0xa0, 0x01, 0x0012, NULL, 0);
- //wait_ms(2);
+ wait_ms(2);
if (zcxxi2cSensorSIF[i][reg8d] == 0x8d){
spca5xxRegWrite(spca50x->dev, 0xa0, zcxxi2cSensorSIF[i][val8d],
0x008d, NULL, 0);
@@ -168,11 +168,11 @@
zcxx_i2cWrite(spca50x->dev, zcxxi2cSensorSIF[i][SensorReg1],
zcxxi2cSensorSIF[i][valSreg1L],
zcxxi2cSensorSIF[i][valSreg1H]);
- //wait_ms(2);
+ wait_ms(2);
retbyte =
(zcxx_i2cRead(spca50x->dev, zcxxi2cSensorSIF[i][SensorReg1])) &
0xff;
- //wait_ms(2);
+ wait_ms(2);
PDEBUG(1, "sensor answer1 %d ", retbyte);
if (retbyte != zcxxi2cSensorSIF[i][valSreg1L])
continue;
@@ -480,12 +480,21 @@
int sensor = 0;
__u8 bsensor = 0;
spca50x->qindex = 1;
+ PDEBUG(0, "Sensor ID:%d",spca50x->sensor);
+
sensor = zcxx_probeSensor(spca50x);
+
switch (sensor) {
case -1:
- PDEBUG(0, "Find Sensor UNKNOW_0 force Tas5130");
- spca50x->sensor = SENSOR_TAS5130C;
- set_zc3xxVGA(spca50x);
+ if(spca50x->sensor == SENSOR_TAS5130CYY) {
+ PDEBUG(0, "Find Sensor Tas5130??");
+ //spca50x->sensor = SENSOR_TAS5130CYY;
+ set_zc3xxVGA(spca50x);
+ } else {
+ PDEBUG(0, "Find Sensor UNKNOW_0 force Tas5130");
+ spca50x->sensor = SENSOR_TAS5130CXX;
+ set_zc3xxVGA(spca50x);
+ }
break;
case 0:
PDEBUG(0, "Find Sensor HV7131B");
@@ -550,7 +559,7 @@
break;
case 0x10:
PDEBUG(0, "Find Sensor TAS5130");
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
set_zc3xxVGA(spca50x);
break;
case 0x11:
@@ -560,7 +569,7 @@
break;
case 0x12:
PDEBUG(0, "Find Sensor TAS5130");
- spca50x->sensor = SENSOR_TAS5130C;
+ spca50x->sensor = SENSOR_TAS5130CXX;
set_zc3xxVGA(spca50x);
break;
case 0x13:
@@ -569,6 +578,7 @@
set_zc3xxVGA(spca50x);
break;
};
+
if ((sensor == 0x02) || (sensor == 0x01) || (sensor == 0x05)
|| (sensor == 0x07) || (sensor == 0x09) || (sensor == 0x0b)
|| (sensor == 0x0d)) {
@@ -576,6 +586,7 @@
"Our Sensor is unknow at the moment please report mxhaard@xxxxxxx ");
return -EINVAL;
}
+
if ((sensor == -1) || (sensor == 0x10) || (sensor == 0x12)) {
spca5xxRegWrite(spca50x->dev, 0xa0, 0x02, 0x0010, NULL, 0);
spca5xxRegRead(spca50x->dev, 0xa1, 0x01, 0x0010, &bsensor, 1);
@@ -631,7 +642,7 @@
/* Assume start use the good resolution from spca50x->mode */
//err = zcxx_probeSensor(spca50x);
switch (spca50x->sensor) {
- case SENSOR_TAS5130C:
+ case SENSOR_TAS5130CXX:
if (spca50x->mode) {
/* 320x240 */
err = zc3xxWriteVector(spca50x, tas5130cxx_start_data);
@@ -640,6 +651,15 @@
err = zc3xxWriteVector(spca50x, tas5130cxx_scale_data);
}
break;
+ case SENSOR_TAS5130CYY: // TAS5130C ??
+ if (spca50x->mode) {
+ /* 320x240 */
+ err = zc3xxWriteVector(spca50x, tas5130cyy_start_data);
+ } else {
+ /* 640x480 */
+ err = zc3xxWriteVector(spca50x, tas5130cyy_scale_data);
+ }
+ break;
case SENSOR_ICM105A:
if (spca50x->mode) {
/* 320x240 */
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Spca50x-devs mailing list
Spca50x-devs@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/spca50x-devs