SyntekUSBVideoCamera
|
00001 00034 #include <linux/module.h> 00035 #include <linux/init.h> 00036 #include <linux/kernel.h> 00037 #include <linux/version.h> 00038 #include <linux/errno.h> 00039 #include <linux/slab.h> 00040 #include <linux/kref.h> 00041 00042 #include <linux/usb.h> 00043 #include <media/v4l2-common.h> 00044 #include <media/v4l2-ioctl.h> 00045 00046 #include "stk11xx.h" 00047 #include "stk11xx-dev.h" 00048 00049 00050 //============================================================================= 00051 // 00052 // STK-6A51 API 00053 // 00054 //============================================================================= 00055 00056 00070 int dev_stk6a51_initialize_device(struct usb_stk11xx *dev) 00071 { 00072 int i; 00073 int value; 00074 00075 STK_INFO("Initialize USB2.0 Syntek Camera\n"); 00076 00077 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00078 usb_stk11xx_write_registry(dev, 0x0002, 0x0078); 00079 usb_stk11xx_write_registry(dev, 0x0003, 0x0080); 00080 00081 usb_stk11xx_write_registry(dev, 0x0002, 0x007f); 00082 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00083 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00084 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00085 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00086 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00087 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00088 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00089 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00090 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00091 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00092 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00093 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00094 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00095 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00096 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00097 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00098 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00099 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00100 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00101 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00102 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00103 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00104 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00105 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00106 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00107 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00108 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00109 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00110 usb_stk11xx_write_registry(dev, 0x0002, 0x007d); 00111 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00112 00113 for (i=0; i<16; i++) { 00114 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00115 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00116 usb_stk11xx_read_registry(dev, 0x0000, &value); 00117 00118 STK_DEBUG("Loop 1 : Read 0x0000 = %02X\n", value); 00119 } 00120 00121 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00122 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00123 00124 usb_stk11xx_write_registry(dev, 0x0002, 0x007f); 00125 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00126 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00127 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00128 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00129 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00130 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00131 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00132 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00133 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00134 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00135 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00136 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00137 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00138 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00139 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00140 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00141 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00142 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00143 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00144 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00145 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00146 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00147 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00148 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00149 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00150 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00151 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00152 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00153 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00154 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00155 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00156 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00157 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00158 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00159 usb_stk11xx_write_registry(dev, 0x0002, 0x007d); 00160 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00161 00162 for (i=0; i<16; i++) { 00163 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00164 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00165 usb_stk11xx_read_registry(dev, 0x0000, &value); 00166 00167 STK_DEBUG("Loop 2 : Read 0x0000 = %02X\n", value); 00168 } 00169 00170 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00171 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00172 00173 usb_stk11xx_write_registry(dev, 0x0002, 0x007f); 00174 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00175 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00176 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00177 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00178 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00179 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00180 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00181 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00182 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00183 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00184 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00185 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00186 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00187 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00188 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00189 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00190 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00191 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00192 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00193 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00194 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00195 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00196 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00197 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00198 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00199 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00200 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00201 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00202 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00203 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00204 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00205 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00206 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00207 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00208 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00209 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00210 usb_stk11xx_write_registry(dev, 0x0000, 0x0027); 00211 usb_stk11xx_write_registry(dev, 0x0000, 0x0026); 00212 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00213 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00214 usb_stk11xx_write_registry(dev, 0x0002, 0x007d); 00215 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00216 00217 for (i=0; i<16; i++) { 00218 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00219 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00220 usb_stk11xx_read_registry(dev, 0x0000, &value); 00221 00222 STK_DEBUG("Loop 3 : Read 0x0000 = %02X\n", value); 00223 } 00224 00225 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00226 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00227 usb_stk11xx_write_registry(dev, 0x0002, 0x007f); 00228 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00229 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00230 00231 usb_stk11xx_write_registry(dev, 0x0117, 0x0000); 00232 usb_stk11xx_read_registry(dev, 0x0103, &value); 00233 usb_stk11xx_write_registry(dev, 0x0103, 0x0001); 00234 usb_stk11xx_read_registry(dev, 0x0103, &value); 00235 usb_stk11xx_write_registry(dev, 0x0103, 0x0000); 00236 00237 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0); 00238 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8); 00239 usb_stk11xx_write_registry(dev, 0x0002, 0x0078); 00240 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00241 00242 dev_stk6a51_configure_device(dev, 0); 00243 dev_stk11xx_check_device(dev, 65); 00244 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00245 00246 dev_stk6a51_configure_device(dev, 1); 00247 dev_stk11xx_check_device(dev, 65); 00248 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00249 00250 dev_stk6a51_configure_device(dev, 2); 00251 dev_stk11xx_check_device(dev, 65); 00252 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00253 00254 dev_stk6a51_configure_device(dev, 3); 00255 dev_stk11xx_check_device(dev, 65); 00256 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00257 00258 dev_stk6a51_configure_device(dev, 4); 00259 dev_stk11xx_check_device(dev, 65); 00260 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00261 00262 dev_stk6a51_configure_device(dev, 5); 00263 dev_stk11xx_check_device(dev, 65); 00264 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00265 00266 dev_stk6a51_configure_device(dev, 6); 00267 dev_stk11xx_check_device(dev, 65); 00268 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00269 00270 dev_stk6a51_configure_device(dev, 7); 00271 dev_stk11xx_check_device(dev, 65); 00272 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00273 00274 dev_stk6a51_configure_device(dev, 8); 00275 dev_stk11xx_check_device(dev, 65); 00276 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00277 00278 dev_stk6a51_configure_device(dev, 9); 00279 dev_stk11xx_check_device(dev, 65); 00280 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00281 00282 dev_stk6a51_configure_device(dev, 10); 00283 dev_stk11xx_check_device(dev, 65); 00284 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00285 00286 dev_stk6a51_configure_device(dev, 11); 00287 dev_stk11xx_check_device(dev, 65); 00288 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00289 00290 dev_stk6a51_configure_device(dev, 12); 00291 dev_stk11xx_check_device(dev, 65); 00292 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00293 00294 dev_stk6a51_configure_device(dev, 13); 00295 00296 dev_stk6a51_configure_device(dev, 14); 00297 00298 dev_stk6a51_configure_device(dev, 15); 00299 dev_stk11xx_check_device(dev, 65); 00300 usb_stk11xx_write_registry(dev, 0x0200, 0x0008); 00301 00302 dev_stk6a51_configure_device(dev, 16); 00303 00304 dev_stk6a51_configure_device(dev, 17); 00305 00306 00307 00308 00309 00310 dev_stk6a51_camera_asleep(dev); 00311 00312 usb_stk11xx_set_feature(dev, 0); 00313 00314 // Device is initialized and is ready !!! 00315 STK_INFO("Syntek USB2.0 Camera is ready\n"); 00316 00317 return 0; 00318 } 00319 00320 00334 int dev_stk6a51_configure_device(struct usb_stk11xx *dev, int step) 00335 { 00336 int value; 00337 00338 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 00339 static const int values_001B[] = { 00340 0x0e, 0x03, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x0e 00341 }; 00342 static const int values_001C[] = { 00343 0x06, 0x02, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x46, 0x46, 0x46 00344 }; 00345 static const int values_0202[] = { 00346 0x1e, 0x0a, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x0a, 0x1e, 0x14, 0x1e, 0x1f, 0x0a, 0x0a, 0x0a, 0x0a 00347 }; 00348 static const int values_0110[] = { 00349 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 00350 }; 00351 static const int values_0112[] = { 00352 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01 00353 }; 00354 static const int values_0114[] = { 00355 0x87, 0x80, 0x80, 0x80, 0x80, 0x00, 0xbe, 0xbe, 0x80, 0x80, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 00356 }; 00357 static const int values_0115[] = { 00358 0x02, 0x02, 0x02, 0x02, 0x02, 0x05, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 00359 }; 00360 static const int values_0116[] = { 00361 0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe9, 0xe9, 0xe0, 0xe0, 0xe4, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1 00362 }; 00363 static const int values_0117[] = { 00364 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 00365 }; 00366 static const int values_0100[] = { 00367 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 00368 }; 00369 00370 00371 STK_DEBUG("dev_stk6a51_configure_device : %d\n", step); 00372 00373 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00374 usb_stk11xx_write_registry(dev, 0x0002, 0x0078); 00375 usb_stk11xx_write_registry(dev, 0x0003, 0x0080); 00376 usb_stk11xx_write_registry(dev, 0x0005, 0x0000); 00377 00378 usb_stk11xx_write_registry(dev, 0x0007, 0x0003); 00379 usb_stk11xx_write_registry(dev, 0x000d, 0x0000); 00380 usb_stk11xx_write_registry(dev, 0x000f, 0x0002); 00381 usb_stk11xx_write_registry(dev, 0x0300, 0x0012); 00382 usb_stk11xx_write_registry(dev, 0x0350, 0x0041); 00383 00384 usb_stk11xx_write_registry(dev, 0x0351, 0x0000); 00385 usb_stk11xx_write_registry(dev, 0x0352, 0x0000); 00386 usb_stk11xx_write_registry(dev, 0x0353, 0x0000); 00387 usb_stk11xx_write_registry(dev, 0x0018, 0x0010); 00388 usb_stk11xx_write_registry(dev, 0x0019, 0x0000); 00389 00390 usb_stk11xx_write_registry(dev, 0x001b, values_001B[step]); 00391 usb_stk11xx_write_registry(dev, 0x001c, values_001C[step]); 00392 usb_stk11xx_write_registry(dev, 0x0300, 0x0080); 00393 usb_stk11xx_write_registry(dev, 0x001a, 0x0004); 00394 usb_stk11xx_write_registry(dev, 0x0202, values_0202[step]); 00395 00396 usb_stk11xx_write_registry(dev, 0x0110, values_0110[step]); 00397 usb_stk11xx_write_registry(dev, 0x0111, 0x0000); 00398 usb_stk11xx_write_registry(dev, 0x0112, values_0112[step]); 00399 usb_stk11xx_write_registry(dev, 0x0113, 0x0000); 00400 usb_stk11xx_write_registry(dev, 0x0114, values_0114[step]); 00401 00402 usb_stk11xx_write_registry(dev, 0x0115, values_0115[step]); 00403 usb_stk11xx_write_registry(dev, 0x0116, values_0116[step]); 00404 usb_stk11xx_write_registry(dev, 0x0117, values_0117[step]); 00405 00406 usb_stk11xx_read_registry(dev, 0x0100, &value); 00407 usb_stk11xx_write_registry(dev, 0x0100, values_0100[step]); 00408 00409 // usb_stk11xx_write_registry(dev, 0x0200, 0x0080); 00410 // usb_stk11xx_write_registry(dev, 0x0200, 0x0000); 00411 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00412 00413 00414 switch (step) { 00415 case 0: 00416 usb_stk11xx_write_registry(dev, 0x0203, 0x0040); 00417 00418 usb_stk11xx_write_registry(dev, 0x0204, 0x0041); 00419 usb_stk11xx_write_registry(dev, 0x0205, 0x0001); 00420 usb_stk11xx_write_registry(dev, 0x0204, 0x001c); 00421 usb_stk11xx_write_registry(dev, 0x0205, 0x0002); 00422 00423 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00424 00425 break; 00426 00427 case 1: 00428 usb_stk11xx_write_registry(dev, 0x0203, 0x0022); 00429 00430 usb_stk11xx_write_registry(dev, 0x0204, 0x0027); 00431 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); 00432 00433 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00434 00435 break; 00436 00437 case 2: 00438 usb_stk11xx_write_registry(dev, 0x0203, 0x0060); 00439 00440 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00441 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00442 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00443 usb_stk11xx_write_registry(dev, 0x0205, 0x00bf); 00444 00445 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00446 00447 break; 00448 00449 case 3: 00450 usb_stk11xx_write_registry(dev, 0x0203, 0x0042); 00451 00452 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00453 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00454 usb_stk11xx_write_registry(dev, 0x0204, 0x0024); 00455 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); 00456 00457 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00458 00459 break; 00460 00461 case 4: 00462 usb_stk11xx_write_registry(dev, 0x0203, 0x0042); 00463 00464 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00465 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00466 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00467 usb_stk11xx_write_registry(dev, 0x0205, 0x00e0); 00468 usb_stk11xx_write_registry(dev, 0x0204, 0x0024); 00469 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); 00470 00471 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00472 00473 break; 00474 00475 case 5: 00476 usb_stk11xx_write_registry(dev, 0x0203, 0x0042); 00477 00478 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00479 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00480 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00481 usb_stk11xx_write_registry(dev, 0x0205, 0x00bf); 00482 00483 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00484 00485 break; 00486 00487 case 6: 00488 usb_stk11xx_write_registry(dev, 0x0203, 0x0060); 00489 00490 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00491 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00492 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00493 usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); 00494 00495 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00496 00497 break; 00498 00499 case 7: 00500 usb_stk11xx_write_registry(dev, 0x0203, 0x0060); 00501 00502 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00503 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00504 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00505 usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); 00506 00507 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00508 00509 break; 00510 00511 case 8: 00512 usb_stk11xx_write_registry(dev, 0x0203, 0x0060); 00513 00514 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00515 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00516 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00517 usb_stk11xx_write_registry(dev, 0x0205, 0x00b7); 00518 00519 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00520 00521 break; 00522 00523 case 9: 00524 usb_stk11xx_write_registry(dev, 0x0203, 0x0060); 00525 00526 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00527 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00528 usb_stk11xx_write_registry(dev, 0x0204, 0x0013); 00529 usb_stk11xx_write_registry(dev, 0x0205, 0x00b7); 00530 00531 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00532 00533 break; 00534 00535 case 10: 00536 usb_stk11xx_write_registry(dev, 0x0203, 0x0080); 00537 00538 usb_stk11xx_write_registry(dev, 0x0204, 0x0012); 00539 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00540 usb_stk11xx_write_registry(dev, 0x0204, 0x000a); 00541 usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); 00542 00543 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00544 00545 break; 00546 00547 case 11: 00548 usb_stk11xx_write_registry(dev, 0x0203, 0x00dc); 00549 00550 usb_stk11xx_write_registry(dev, 0x0204, 0x0015); 00551 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00552 00553 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00554 00555 break; 00556 00557 case 12: 00558 usb_stk11xx_write_registry(dev, 0x0203, 0x00ec); 00559 00560 usb_stk11xx_write_registry(dev, 0x0204, 0x0015); 00561 usb_stk11xx_write_registry(dev, 0x0205, 0x0080); 00562 00563 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00564 00565 break; 00566 00567 case 13: 00568 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); 00569 00570 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00571 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00572 00573 usb_stk11xx_write_registry(dev, 0x0208, 0x0020); 00574 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00575 dev_stk11xx_check_device(dev, 500); 00576 usb_stk11xx_read_registry(dev, 0x0209, &value); 00577 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00578 00579 break; 00580 00581 case 14: 00582 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); 00583 00584 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00585 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00586 00587 usb_stk11xx_write_registry(dev, 0x0208, 0x0000); 00588 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00589 dev_stk11xx_check_device(dev, 500); 00590 usb_stk11xx_read_registry(dev, 0x0209, &value); 00591 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00592 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00593 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00594 00595 usb_stk11xx_write_registry(dev, 0x0208, 0x00f1); 00596 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00597 dev_stk11xx_check_device(dev, 500); 00598 usb_stk11xx_read_registry(dev, 0x0209, &value); 00599 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00600 00601 break; 00602 00603 case 15: 00604 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); 00605 00606 usb_stk11xx_write_registry(dev, 0x0204, 0x0001); 00607 usb_stk11xx_write_registry(dev, 0x0205, 0x0000); 00608 usb_stk11xx_write_registry(dev, 0x0200, 0x0005); 00609 00610 break; 00611 00612 case 16: 00613 usb_stk11xx_write_registry(dev, 0x0203, 0x007a); 00614 00615 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00616 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00617 usb_stk11xx_write_registry(dev, 0x0205, 0x0030); 00618 usb_stk11xx_write_registry(dev, 0x0205, 0x0000); 00619 usb_stk11xx_read_registry(dev, 0x0201, &value); 00620 usb_stk11xx_read_registry(dev, 0x0201, &value); 00621 usb_stk11xx_read_registry(dev, 0x0201, &value); 00622 usb_stk11xx_read_registry(dev, 0x0209, &value); 00623 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00624 usb_stk11xx_read_registry(dev, 0x0201, &value); 00625 usb_stk11xx_read_registry(dev, 0x0209, &value); 00626 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00627 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00628 00629 usb_stk11xx_write_registry(dev, 0x0002, 0x007f); 00630 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00631 usb_stk11xx_write_registry(dev, 0x0002, 0x007d); 00632 usb_stk11xx_write_registry(dev, 0x0000, 0x0024); 00633 usb_stk11xx_write_registry(dev, 0x0000, 0x0025); 00634 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00635 00636 break; 00637 00638 case 17: 00639 usb_stk11xx_write_registry(dev, 0x0203, 0x007a); 00640 00641 dev_stk6a51_sensor_settings(dev); 00642 00643 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00644 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00645 00646 usb_stk11xx_write_registry(dev, 0x0205, 0x0033); 00647 usb_stk11xx_write_registry(dev, 0x0205, 0x0090); 00648 usb_stk11xx_write_registry(dev, 0x0200, 0x0061); 00649 dev_stk11xx_check_device(dev, 500); 00650 usb_stk11xx_read_registry(dev, 0x0209, &value); 00651 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00652 dev_stk11xx_check_device(dev, 500); 00653 usb_stk11xx_read_registry(dev, 0x0209, &value); 00654 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00655 usb_stk11xx_read_registry(dev, 0x0201, &value); 00656 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00657 00658 usb_stk11xx_write_registry(dev, 0x0200, 0x0080); 00659 usb_stk11xx_write_registry(dev, 0x0200, 0x0000); 00660 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00661 00662 break; 00663 00664 case 18: 00665 usb_stk11xx_write_registry(dev, 0x0203, 0x007a); 00666 00667 dev_stk6a51_sensor_settings(dev); 00668 00669 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00670 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00671 00672 usb_stk11xx_write_registry(dev, 0x0205, 0x0033); 00673 usb_stk11xx_write_registry(dev, 0x0205, 0x0090); 00674 usb_stk11xx_write_registry(dev, 0x0200, 0x0061); 00675 dev_stk11xx_check_device(dev, 500); 00676 usb_stk11xx_read_registry(dev, 0x0209, &value); 00677 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00678 dev_stk11xx_check_device(dev, 500); 00679 usb_stk11xx_read_registry(dev, 0x0209, &value); 00680 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00681 break; 00682 00683 case 19: 00684 usb_stk11xx_write_registry(dev, 0x0203, 0x007a); 00685 00686 dev_stk6a51_sensor_settings(dev); 00687 00688 usb_stk11xx_read_registry(dev, 0x02ff, &value); 00689 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 00690 00691 usb_stk11xx_write_registry(dev, 0x0205, 0x0033); 00692 usb_stk11xx_write_registry(dev, 0x0205, 0x0090); 00693 usb_stk11xx_write_registry(dev, 0x0200, 0x0061); 00694 dev_stk11xx_check_device(dev, 500); 00695 usb_stk11xx_read_registry(dev, 0x0209, &value); 00696 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 00697 dev_stk11xx_check_device(dev, 500); 00698 usb_stk11xx_read_registry(dev, 0x0209, &value); 00699 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 00700 break; 00701 } 00702 00703 return 0; 00704 } 00705 00706 00716 int dev_stk6a51_camera_asleep(struct usb_stk11xx *dev) 00717 { 00718 int value; 00719 00720 usb_stk11xx_write_registry(dev, 0x0203, 0x00a0); 00721 00722 usb_stk11xx_read_registry(dev, 0x0104, &value); 00723 usb_stk11xx_read_registry(dev, 0x0105, &value); 00724 usb_stk11xx_read_registry(dev, 0x0106, &value); 00725 00726 usb_stk11xx_write_registry(dev, 0x0100, 0x0021); 00727 usb_stk11xx_write_registry(dev, 0x0116, 0x0000); 00728 usb_stk11xx_write_registry(dev, 0x0117, 0x0000); 00729 usb_stk11xx_write_registry(dev, 0x0018, 0x0000); 00730 00731 usb_stk11xx_read_registry(dev, 0x0000, &value); 00732 usb_stk11xx_write_registry(dev, 0x0000, 0x0049); 00733 00734 return 0; 00735 } 00736 00737 00748 int dev_stk6a51_init_camera(struct usb_stk11xx *dev) 00749 { 00750 dev_stk6a51_camera_asleep(dev); 00751 00752 usb_stk11xx_set_feature(dev, 0); 00753 00754 dev_stk6a51_camera_asleep(dev); 00755 00756 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0); 00757 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8); 00758 usb_stk11xx_write_registry(dev, 0x0002, 0x0078); 00759 usb_stk11xx_write_registry(dev, 0x0000, 0x0020); 00760 00761 dev_stk6a51_configure_device(dev, 18); 00762 00763 dev_stk11xx_camera_off(dev); 00764 00765 return 0; 00766 } 00767 00768 00779 int dev_stk6a51_sensor_settings(struct usb_stk11xx *dev) 00780 { 00781 int i; 00782 int value; 00783 00784 int asize; 00785 00786 static const int values_205[][4] = { 00787 { 0x33, 0x86, 0x05, 0x01 }, 00788 { 0x33, 0x86, 0x05, 0x00 }, 00789 { 0x33, 0x8c, 0xa1, 0x04 }, 00790 { 0x33, 0x90, -1 }, 00791 { 0x30, 0x1a, 0x0a, 0xcc }, 00792 { 0x32, 0x02, 0x00, 0x08 }, 00793 { 0x33, 0xf4, 0x03, 0x1d }, 00794 { 0x33, 0x8c, 0xa1, 0x04 }, 00795 { 0x33, 0x90, -1 }, 00796 { 0x33, 0x8c, 0xa1, 0x04 }, 00797 { 0x33, 0x90, -1 }, 00798 { 0x34, 0x1e, 0x8f, 0x09 }, 00799 { 0x34, 0x1c, 0x02, 0x50 }, 00800 { 0x34, 0x1e, 0x8f, 0x09 }, 00801 { 0x34, 0x1e, 0x8f, 0x08 }, 00802 { 0x33, 0x8c, 0x04, 0x00 }, 00803 { 0x33, 0x90, 0x30, 0x8f }, 00804 { 0x33, 0x92, 0xc3, 0xff }, 00805 { 0x33, 0x94, 0xed, 0x8f }, 00806 { 0x33, 0x96, 0x35, 0x8f }, 00807 { 0x33, 0x98, 0x18, 0x8f }, 00808 { 0x33, 0x9a, 0x30, 0x8f }, 00809 { 0x33, 0x9c, 0xc3, 0x00 }, 00810 { 0x33, 0x9e, 0x15, 0x8f }, 00811 { 0x33, 0x8c, 0x04, 0x10 }, 00812 { 0x33, 0x90, 0xcc, 0x00 }, 00813 { 0x33, 0x92, 0x07, 0xbd }, 00814 { 0x33, 0x94, 0x04, 0xb5 }, 00815 { 0x33, 0x96, 0xbd, 0x9e }, 00816 { 0x33, 0x98, 0x9f, 0xf6 }, 00817 { 0x33, 0x9a, 0x03, 0x22 }, 00818 { 0x33, 0x9c, 0x30, 0xe7 }, 00819 { 0x33, 0x9e, 0x0a, 0xf6 }, 00820 { 0x33, 0x8c, 0x04, 0x20 }, 00821 { 0x33, 0x90, 0x02, 0x39 }, 00822 { 0x33, 0x92, 0xc1, 0x01 }, 00823 { 0x33, 0x94, 0x26, 0x05 }, 00824 { 0x33, 0x96, 0xf6, 0x03 }, 00825 { 0x33, 0x98, 0x23, 0xe7 }, 00826 { 0x33, 0x9a, 0x0a, 0x7d }, 00827 { 0x33, 0x9c, 0x03, 0x21 }, 00828 { 0x33, 0x9e, 0x27, 0x20 }, 00829 { 0x33, 0x8c, 0x04, 0x30 }, 00830 { 0x33, 0x90, 0xf6, 0x02 }, 00831 { 0x33, 0x92, 0x39, 0xe7 }, 00832 { 0x33, 0x94, 0x02, 0x8f }, 00833 { 0x33, 0x96, 0xc3, 0x00 }, 00834 { 0x33, 0x98, 0x0b, 0x30 }, 00835 { 0x33, 0x9a, 0xed, 0x00 }, 00836 { 0x33, 0x9c, 0xfe, 0x02 }, 00837 { 0x33, 0x9e, 0x37, 0xee }, 00838 { 0x33, 0x8c, 0x04, 0x40 }, 00839 { 0x33, 0x90, 0x04, 0x5f }, 00840 { 0x33, 0x92, 0xad, 0x00 }, 00841 { 0x33, 0x94, 0x30, 0xe6 }, 00842 { 0x33, 0x96, 0x0a, 0x4f }, 00843 { 0x33, 0x98, 0xed, 0x08 }, 00844 { 0x33, 0x9a, 0xec, 0x11 }, 00845 { 0x33, 0x9c, 0xa3, 0x08 }, 00846 { 0x33, 0x9e, 0xdd, 0x56 }, 00847 { 0x33, 0x8c, 0x04, 0x50 }, 00848 { 0x33, 0x90, 0x30, 0xc6 }, 00849 { 0x33, 0x92, 0x13, 0x3a }, 00850 { 0x33, 0x94, 0x35, 0x39 }, 00851 { 0x33, 0x96, 0x3c, 0x3c }, 00852 { 0x33, 0x98, 0x3c, 0xc6 }, 00853 { 0x33, 0x9a, 0x01, 0xf7 }, 00854 { 0x33, 0x9c, 0x03, 0x21 }, 00855 { 0x33, 0x9e, 0xc6, 0x0a }, 00856 { 0x33, 0x8c, 0x04, 0x60 }, 00857 { 0x33, 0x90, 0xf7, 0x03 }, 00858 { 0x33, 0x92, 0x22, 0xf7 }, 00859 { 0x33, 0x94, 0x03, 0x23 }, 00860 { 0x33, 0x96, 0xcc, 0x03 }, 00861 { 0x33, 0x98, 0x03, 0x30 }, 00862 { 0x33, 0x9a, 0xed, 0x02 }, 00863 { 0x33, 0x9c, 0xfe, 0x10 }, 00864 { 0x33, 0x9e, 0x50, 0xec }, 00865 { 0x33, 0x8c, 0x04, 0x70 }, 00866 { 0x33, 0x90, 0x04, 0xfd }, 00867 { 0x33, 0x92, 0x02, 0xff }, 00868 { 0x33, 0x94, 0xfe, 0x02 }, 00869 { 0x33, 0x96, 0xff, 0xec }, 00870 { 0x33, 0x98, 0x00, 0xfd }, 00871 { 0x33, 0x9a, 0x03, 0x01 }, 00872 { 0x33, 0x9c, 0x5f, 0x4f }, 00873 { 0x33, 0x9e, 0x30, 0xed }, 00874 { 0x33, 0x8c, 0x04, 0x80 }, 00875 { 0x33, 0x90, 0x04, 0xec }, 00876 { 0x33, 0x92, 0x04, 0x05 }, 00877 { 0x33, 0x94, 0xf3, 0x03 }, 00878 { 0x33, 0x96, 0x01, 0x8f }, 00879 { 0x33, 0x98, 0xec, 0x00 }, 00880 { 0x33, 0x9a, 0x30, 0xed }, 00881 { 0x33, 0x9c, 0x00, 0xec }, 00882 { 0x33, 0x9e, 0x04, 0x05 }, 00883 { 0x33, 0x8c, 0x04, 0x90 }, 00884 { 0x33, 0x90, 0xe3, 0x02 }, 00885 { 0x33, 0x92, 0x18, 0x8f }, 00886 { 0x33, 0x94, 0xec, 0x00 }, 00887 { 0x33, 0x96, 0x18, 0xed }, 00888 { 0x33, 0x98, 0x00, 0xec }, 00889 { 0x33, 0x9a, 0x04, 0xc3 }, 00890 { 0x33, 0x9c, 0x00, 0x01 }, 00891 { 0x33, 0x9e, 0xed, 0x04 }, 00892 { 0x33, 0x8c, 0x04, 0xa0 }, 00893 { 0x33, 0x90, 0x83, 0x00 }, 00894 { 0x33, 0x92, 0x0f, 0x25 }, 00895 { 0x33, 0x94, 0xdc, 0xee }, 00896 { 0x33, 0x96, 0x02, 0xcc }, 00897 { 0x33, 0x98, 0x04, 0x00 }, 00898 { 0x33, 0x9a, 0xed, 0x04 }, 00899 { 0x33, 0x9c, 0xcc, 0x03 }, 00900 { 0x33, 0x9e, 0x03, 0xdd }, 00901 { 0x33, 0x8c, 0x04, 0xb0 }, 00902 { 0x33, 0x90, 0x52, 0x38 }, 00903 { 0x33, 0x92, 0x38, 0x38 }, 00904 { 0x33, 0x94, 0x39, 0x37 }, 00905 { 0x33, 0x96, 0x36, 0x8f }, 00906 { 0x33, 0x98, 0x30, 0xe3 }, 00907 { 0x33, 0x9a, 0x00, 0x8f }, 00908 { 0x33, 0x9c, 0x18, 0x8f }, 00909 { 0x33, 0x9e, 0x18, 0x30 }, 00910 { 0x33, 0x8c, 0x04, 0xc0 }, 00911 { 0x33, 0x90, 0x18, 0xe3 }, 00912 { 0x33, 0x92, 0x00, 0x18 }, 00913 { 0x33, 0x94, 0x8f, 0x32 }, 00914 { 0x33, 0x96, 0x33, 0x36 }, 00915 { 0x33, 0x98, 0xa6, 0x00 }, 00916 { 0x33, 0x9a, 0x18, 0xa7 }, 00917 { 0x33, 0x9c, 0x00, 0x09 }, 00918 { 0x33, 0x9e, 0x18, 0x09 }, 00919 { 0x33, 0x8c, 0x04, 0xd0 }, 00920 { 0x33, 0x90, 0xc0, 0x01 }, 00921 { 0x33, 0x92, 0x24, 0xf4 }, 00922 { 0x33, 0x94, 0x32, 0x80 }, 00923 { 0x33, 0x96, 0x01, 0x24 }, 00924 { 0x33, 0x98, 0xee, 0x39 }, 00925 { 0x33, 0x8c, 0x20, 0x03 }, 00926 { 0x33, 0x90, 0x04, 0x56 }, 00927 { 0x33, 0x8c, 0xa0, 0x02 }, 00928 { 0x33, 0x90, 0x00, 0x01 }, 00929 { 0x33, 0x8c, 0xa1, 0x04 }, 00930 { 0x33, 0x90, -1 }, 00931 { 0x34, 0xce, 0x81, 0x60 }, 00932 { 0x34, 0xd0, 0x66, 0x33 }, 00933 { 0x34, 0xd2, 0x31, 0x9a }, 00934 { 0x34, 0xd4, 0x94, 0x63 }, 00935 { 0x34, 0xd6, 0x4b, 0x25 }, 00936 { 0x34, 0xd8, 0x26, 0x70 }, 00937 { 0x34, 0xda, 0x72, 0x4c }, 00938 { 0x34, 0xdc, 0xff, 0x04 }, 00939 { 0x34, 0xde, 0x00, 0xf4 }, 00940 { 0x34, 0xe6, 0x00, 0xcc }, 00941 { 0x34, 0xee, 0x0e, 0x42 }, 00942 { 0x34, 0xf6, 0x0d, 0xb5 }, 00943 { 0x35, 0x00, 0x0a, 0xfa }, 00944 { 0x35, 0x08, 0x0f, 0x10 }, 00945 { 0x35, 0x10, 0x11, 0x22 }, 00946 { 0x35, 0x18, 0x0c, 0x28 }, 00947 { 0x35, 0x20, 0x1c, 0x2c }, 00948 { 0x35, 0x28, 0x17, 0x40 }, 00949 { 0x35, 0x30, 0x08, 0xf2 }, 00950 { 0x35, 0x38, 0xfb, 0xd5 }, 00951 { 0x35, 0x4c, 0x05, 0xc7 }, 00952 { 0x35, 0x44, 0x04, 0xf9 }, 00953 { 0x35, 0x5c, 0x05, 0xd0 }, 00954 { 0x35, 0x54, 0x05, 0xf4 }, 00955 { 0x34, 0xe0, 0x01, 0x05 }, 00956 { 0x34, 0xe8, 0x00, 0xa0 }, 00957 { 0x34, 0xf0, 0x0e, 0xa1 }, 00958 { 0x34, 0xf8, 0x0e, 0x01 }, 00959 { 0x35, 0x02, 0x0f, 0xeb }, 00960 { 0x35, 0x0a, 0x09, 0x0a }, 00961 { 0x35, 0x12, 0x10, 0x1e }, 00962 { 0x35, 0x1a, 0x08, 0x23 }, 00963 { 0x35, 0x22, 0x1c, 0x22 }, 00964 { 0x35, 0x2a, 0x07, 0x22 }, 00965 { 0x35, 0x32, 0x0b, 0x06 }, 00966 { 0x35, 0x3a, 0xf9, 0x16 }, 00967 { 0x35, 0x4e, 0x05, 0x9f }, 00968 { 0x35, 0x46, 0x05, 0x30 }, 00969 { 0x35, 0x5e, 0x06, 0x75 }, 00970 { 0x35, 0x56, 0x06, 0x5c }, 00971 { 0x34, 0xe4, 0x00, 0xc5 }, 00972 { 0x34, 0xec, 0x00, 0x48 }, 00973 { 0x34, 0xf4, 0x0f, 0x66 }, 00974 { 0x34, 0xfc, 0x0e, 0x61 }, 00975 { 0x35, 0x06, 0x1b, 0xdb }, 00976 { 0x35, 0x0e, 0x04, 0x0a }, 00977 { 0x35, 0x16, 0x11, 0x13 }, 00978 { 0x35, 0x1e, 0x08, 0x1f }, 00979 { 0x35, 0x26, 0x11, 0x19 }, 00980 { 0x35, 0x2e, 0xf8, 0x1a }, 00981 { 0x35, 0x36, 0x04, 0x0c }, 00982 { 0x35, 0x3e, 0xfa, 0x00 }, 00983 { 0x35, 0x52, 0x06, 0xf1 }, 00984 { 0x35, 0x4a, 0x04, 0x0e }, 00985 { 0x35, 0x62, 0x06, 0xa1 }, 00986 { 0x35, 0x5a, 0x06, 0x91 }, 00987 { 0x34, 0xe2, 0x00, 0xd2 }, 00988 { 0x34, 0xea, 0x00, 0x72 }, 00989 { 0x34, 0xf2, 0x0e, 0x1d }, 00990 { 0x34, 0xfa, 0x0e, 0x06 }, 00991 { 0x35, 0x04, 0x13, 0x0e }, 00992 { 0x35, 0x0c, 0x0f, 0x0d }, 00993 { 0x35, 0x14, 0x13, 0x1c }, 00994 { 0x35, 0x1c, 0x13, 0x29 }, 00995 { 0x35, 0x24, 0x0d, 0x24 }, 00996 { 0x35, 0x2c, 0xfd, 0x29 }, 00997 { 0x35, 0x34, 0x07, 0xf4 }, 00998 { 0x35, 0x3c, 0xee, 0xe7 }, 00999 { 0x35, 0x50, 0x06, 0x50 }, 01000 { 0x35, 0x48, 0x05, 0xc1 }, 01001 { 0x35, 0x60, 0x06, 0x11 }, 01002 { 0x35, 0x58, 0x06, 0x58 }, 01003 { 0x35, 0x40, 0x00, 0x00 }, 01004 { 0x35, 0x42, 0x00, 0x00 }, 01005 { 0x32, 0x10, 0x01, 0xfc }, 01006 { 0x33, 0x8c, 0xa3, 0x52 }, 01007 { 0x33, 0x90, 0x00, 0x3c }, 01008 { 0x33, 0x8c, 0xa1, 0x18 }, 01009 { 0x33, 0x90, 0x00, 0x3c }, 01010 { 0x33, 0x8c, 0xa1, 0x19 }, 01011 { 0x33, 0x90, 0x00, 0x0a }, 01012 { 0x33, 0x8c, 0xa7, 0x6d }, 01013 { 0x33, 0x90, 0x00, 0x03 }, 01014 { 0x33, 0x8c, 0xa7, 0x6e }, 01015 { 0x33, 0x90, 0x00, 0x03 }, 01016 { 0x33, 0x8c, 0xa7, 0x6f }, 01017 { 0x33, 0x90, 0x00, 0x00 }, 01018 { 0x33, 0x8c, 0xa7, 0x70 }, 01019 { 0x33, 0x90, 0x00, 0x05 }, 01020 { 0x33, 0x8c, 0xa7, 0x71 }, 01021 { 0x33, 0x90, 0x00, 0x10 }, 01022 { 0x33, 0x8c, 0xa7, 0x72 }, 01023 { 0x33, 0x90, 0x00, 0x30 }, 01024 { 0x33, 0x8c, 0xa7, 0x73 }, 01025 { 0x33, 0x90, 0x00, 0x5b }, 01026 { 0x33, 0x8c, 0xa7, 0x74 }, 01027 { 0x33, 0x90, 0x00, 0x77 }, 01028 { 0x33, 0x8c, 0xa7, 0x75 }, 01029 { 0x33, 0x90, 0x00, 0x8e }, 01030 { 0x33, 0x8c, 0xa7, 0x76 }, 01031 { 0x33, 0x90, 0x00, 0xa0 }, 01032 { 0x33, 0x8c, 0xa7, 0x77 }, 01033 { 0x33, 0x90, 0x00, 0xaf }, 01034 { 0x33, 0x8c, 0xa7, 0x78 }, 01035 { 0x33, 0x90, 0x00, 0xbc }, 01036 { 0x33, 0x8c, 0xa7, 0x79 }, 01037 { 0x33, 0x90, 0x00, 0xc7 }, 01038 { 0x33, 0x8c, 0xa7, 0x7a }, 01039 { 0x33, 0x90, 0x00, 0xd0 }, 01040 { 0x33, 0x8c, 0xa7, 0x7b }, 01041 { 0x33, 0x90, 0x00, 0xd9 }, 01042 { 0x33, 0x8c, 0xa7, 0x7c }, 01043 { 0x33, 0x90, 0x00, 0xe0 }, 01044 { 0x33, 0x8c, 0xa7, 0x7d }, 01045 { 0x33, 0x90, 0x00, 0xe8 }, 01046 { 0x33, 0x8c, 0xa7, 0x7e }, 01047 { 0x33, 0x90, 0x00, 0xee }, 01048 { 0x33, 0x8c, 0xa7, 0x7f }, 01049 { 0x33, 0x90, 0x00, 0xf4 }, 01050 { 0x33, 0x8c, 0xa7, 0x80 }, 01051 { 0x33, 0x90, 0x00, 0xfa }, 01052 { 0x33, 0x8c, 0xa7, 0x81 }, 01053 { 0x33, 0x90, 0x00, 0xff }, 01054 { 0x33, 0x8c, 0xa7, 0x82 }, 01055 { 0x33, 0x90, 0x00, 0x00 }, 01056 { 0x33, 0x8c, 0xa7, 0x83 }, 01057 { 0x33, 0x90, 0x00, 0x05 }, 01058 { 0x33, 0x8c, 0xa7, 0x84 }, 01059 { 0x33, 0x90, 0x00, 0x10 }, 01060 { 0x33, 0x8c, 0xa7, 0x85 }, 01061 { 0x33, 0x90, 0x00, 0x30 }, 01062 { 0x33, 0x8c, 0xa7, 0x86 }, 01063 { 0x33, 0x90, 0x00, 0x5b }, 01064 { 0x33, 0x8c, 0xa7, 0x87 }, 01065 { 0x33, 0x90, 0x00, 0x77 }, 01066 { 0x33, 0x8c, 0xa7, 0x88 }, 01067 { 0x33, 0x90, 0x00, 0x8e }, 01068 { 0x33, 0x8c, 0xa7, 0x89 }, 01069 { 0x33, 0x90, 0x00, 0xa0 }, 01070 { 0x33, 0x8c, 0xa7, 0x8a }, 01071 { 0x33, 0x90, 0x00, 0xaf }, 01072 { 0x33, 0x8c, 0xa7, 0x8b }, 01073 { 0x33, 0x90, 0x00, 0xbc }, 01074 { 0x33, 0x8c, 0xa7, 0x8c }, 01075 { 0x33, 0x90, 0x00, 0xc7 }, 01076 { 0x33, 0x8c, 0xa7, 0x8d }, 01077 { 0x33, 0x90, 0x00, 0xd0 }, 01078 { 0x33, 0x8c, 0xa7, 0x8e }, 01079 { 0x33, 0x90, 0x00, 0xd9 }, 01080 { 0x33, 0x8c, 0xa7, 0x8f }, 01081 { 0x33, 0x90, 0x00, 0xe0 }, 01082 { 0x33, 0x8c, 0xa7, 0x90 }, 01083 { 0x33, 0x90, 0x00, 0xe8 }, 01084 { 0x33, 0x8c, 0xa7, 0x91 }, 01085 { 0x33, 0x90, 0x00, 0xee }, 01086 { 0x33, 0x8c, 0xa7, 0x92 }, 01087 { 0x33, 0x90, 0x00, 0xf4 }, 01088 { 0x33, 0x8c, 0xa7, 0x93 }, 01089 { 0x33, 0x90, 0x00, 0xfa }, 01090 { 0x33, 0x8c, 0xa7, 0x94 }, 01091 { 0x33, 0x90, 0x00, 0xff }, 01092 { 0x33, 0x8c, 0xa1, 0x03 }, 01093 { 0x33, 0x90, 0x00, 0x05 }, 01094 { 0x33, 0x8c, 0xa1, 0x04 }, 01095 { 0x33, 0x90, -1 }, 01096 { 0x33, 0x8c, 0xa2, 0x06 }, 01097 { 0x33, 0x90, 0x00, 0x50 }, 01098 { 0x33, 0x8c, 0x27, 0x03 }, 01099 { 0x33, 0x90, 0x02, 0x82 }, 01100 { 0x33, 0x8c, 0x27, 0x05 }, 01101 { 0x33, 0x90, 0x01, 0xe2 }, 01102 { 0x33, 0x8c, 0x27, 0x07 }, 01103 { 0x33, 0x90, 0x05, 0x02 }, 01104 { 0x33, 0x8c, 0x27, 0x09 }, 01105 { 0x33, 0x90, 0x04, 0x02 }, 01106 { 0x33, 0x8c, 0x27, 0x0d }, 01107 { 0x33, 0x90, 0x00, 0x00 }, 01108 { 0x33, 0x8c, 0x27, 0x0f }, 01109 { 0x33, 0x90, 0x00, 0x00 }, 01110 { 0x33, 0x8c, 0x27, 0x11 }, 01111 { 0x33, 0x90, 0x04, 0xbd }, 01112 { 0x33, 0x8c, 0x27, 0x13 }, 01113 { 0x33, 0x90, 0x06, 0x4d }, 01114 { 0x33, 0x8c, 0x27, 0x15 }, 01115 { 0x33, 0x90, 0x04, 0x00 }, 01116 { 0x33, 0x8c, 0x27, 0x17 }, 01117 { 0x33, 0x90, 0x21, 0x11 }, 01118 { 0x33, 0x8c, 0x27, 0x19 }, 01119 { 0x33, 0x90, 0x04, 0x6c }, 01120 { 0x33, 0x8c, 0x27, 0x1b }, 01121 { 0x33, 0x90, 0x02, 0x4f }, 01122 { 0x33, 0x8c, 0x27, 0x1d }, 01123 { 0x33, 0x90, 0x01, 0x02 }, 01124 { 0x33, 0x8c, 0x27, 0x1f }, 01125 { 0x33, 0x90, 0x02, 0x79 }, 01126 { 0x33, 0x8c, 0x27, 0x21 }, 01127 { 0x33, 0x90, 0x01, 0x55 }, 01128 { 0x33, 0x8c, 0x27, 0x23 }, 01129 { 0x33, 0x90, 0x03, 0x5b }, 01130 { 0x33, 0x8c, 0x27, 0x25 }, 01131 { 0x33, 0x90, 0x06, 0x0f }, 01132 { 0x33, 0x8c, 0x27, 0x27 }, 01133 { 0x33, 0x90, 0x20, 0x20 }, 01134 { 0x33, 0x8c, 0x27, 0x29 }, 01135 { 0x33, 0x90, 0x20, 0x20 }, 01136 { 0x33, 0x8c, 0x27, 0x2b }, 01137 { 0x33, 0x90, 0x10, 0x20 }, 01138 { 0x33, 0x8c, 0x27, 0x2d }, 01139 { 0x33, 0x90, 0x20, 0x07 }, 01140 { 0x33, 0x8c, 0x27, 0x2f }, 01141 { 0x33, 0x90, 0x00, 0x04 }, 01142 { 0x33, 0x8c, 0x27, 0x31 }, 01143 { 0x33, 0x90, 0x00, 0x04 }, 01144 { 0x33, 0x8c, 0x27, 0x33 }, 01145 { 0x33, 0x90, 0x04, 0xbb }, 01146 { 0x33, 0x8c, 0x27, 0x35 }, 01147 { 0x33, 0x90, 0x06, 0x4b }, 01148 { 0x33, 0x8c, 0x27, 0x37 }, 01149 { 0x33, 0x90, 0x04, 0xce }, 01150 { 0x33, 0x8c, 0x27, 0x39 }, 01151 { 0x33, 0x90, 0x21, 0x11 }, 01152 { 0x33, 0x8c, 0x27, 0x3b }, 01153 { 0x33, 0x90, 0x00, 0x24 }, 01154 { 0x33, 0x8c, 0x27, 0x3d }, 01155 { 0x33, 0x90, 0x01, 0x20 }, 01156 { 0x33, 0x8c, 0x27, 0x41 }, 01157 { 0x33, 0x90, 0x01, 0x69 }, 01158 { 0x33, 0x8c, 0x27, 0x45 }, 01159 { 0x33, 0x90, 0x04, 0xff }, 01160 { 0x33, 0x8c, 0x27, 0x47 }, 01161 { 0x33, 0x90, 0x08, 0x24 }, 01162 { 0x33, 0x8c, 0x27, 0x51 }, 01163 { 0x33, 0x90, 0x00, 0x00 }, 01164 { 0x33, 0x8c, 0x27, 0x53 }, 01165 { 0x33, 0x90, 0x03, 0x20 }, 01166 { 0x33, 0x8c, 0x27, 0x55 }, 01167 { 0x33, 0x90, 0x00, 0x00 }, 01168 { 0x33, 0x8c, 0x27, 0x57 }, 01169 { 0x33, 0x90, 0x02, 0x58 }, 01170 { 0x33, 0x8c, 0x27, 0x5f }, 01171 { 0x33, 0x90, 0x00, 0x00 }, 01172 { 0x33, 0x8c, 0x27, 0x61 }, 01173 { 0x33, 0x90, 0x06, 0x40 }, 01174 { 0x33, 0x8c, 0x27, 0x63 }, 01175 { 0x33, 0x90, 0x00, 0x00 }, 01176 { 0x33, 0x8c, 0x27, 0x65 }, 01177 { 0x33, 0x90, 0x04, 0xb0 }, 01178 { 0x33, 0x8c, 0x22, 0x2e }, 01179 { 0x33, 0x90, 0x00, 0xd7 }, 01180 { 0x33, 0x8c, 0xa4, 0x08 }, 01181 { 0x33, 0x90, 0x00, 0x2a }, 01182 { 0x33, 0x8c, 0xa4, 0x09 }, 01183 { 0x33, 0x90, 0x00, 0x2c }, 01184 { 0x33, 0x8c, 0xa4, 0x0a }, 01185 { 0x33, 0x90, 0x00, 0x32 }, 01186 { 0x33, 0x8c, 0xa4, 0x0b }, 01187 { 0x33, 0x90, 0x00, 0x34 }, 01188 { 0x33, 0x8c, 0x24, 0x11 }, 01189 { 0x33, 0x90, 0x00, 0xd7 }, 01190 { 0x33, 0x8c, 0x24, 0x13 }, 01191 { 0x33, 0x90, 0x01, 0x02 }, 01192 { 0x33, 0x8c, 0x24, 0x15 }, 01193 { 0x33, 0x90, 0x00, 0xa0 }, 01194 { 0x33, 0x8c, 0x24, 0x17 }, 01195 { 0x33, 0x90, 0x00, 0xc0 }, 01196 { 0x33, 0x8c, 0x27, 0x99 }, 01197 { 0x33, 0x90, 0x64, 0x08 }, 01198 { 0x33, 0x8c, 0x27, 0x9b }, 01199 { 0x33, 0x90, 0x64, 0x08 }, 01200 { 0x33, 0x8c, 0xa2, 0x0c }, 01201 { 0x33, 0x90, 0x00, 0x18 }, 01202 { 0x33, 0x8c, 0xa2, 0x14 }, 01203 { 0x33, 0x90, 0x00, 0x24 }, 01204 { 0x33, 0x8c, 0xa2, 0x15 }, 01205 { 0x33, 0x90, 0x00, 0x04 }, 01206 { 0x33, 0x8c, 0xa2, 0x0d }, 01207 { 0x33, 0x90, 0x00, 0x30 }, 01208 { 0x33, 0x8c, 0xa2, 0x0e }, 01209 { 0x33, 0x90, 0x00, 0x80 }, 01210 { 0x33, 0x8c, 0xa1, 0x03 }, 01211 { 0x33, 0x90, 0x00, 0x05 }, 01212 { 0x33, 0x8c, 0xa1, 0x04 }, 01213 { 0x33, 0x90, -1 }, 01214 { 0x33, 0x8c, 0xa1, 0x03 }, 01215 { 0x33, 0x90, 0x00, 0x06 }, 01216 { 0x33, 0x8c, 0xa1, 0x04 }, 01217 { 0x33, 0x90, -1 }, 01218 { 0x33, 0x8c, 0xa1, 0x30 }, 01219 { 0x33, 0x90, 0x00, 0x04 }, 01220 { 0x33, 0x8c, 0xa1, 0x15 }, 01221 { 0x33, 0x90, 0x00, 0xef }, 01222 { 0x33, 0x8c, 0xa1, 0x16 }, 01223 { 0x33, 0x90, 0x00, 0x30 }, 01224 { 0x33, 0x8c, 0xa1, 0x17 }, 01225 { 0x33, 0x90, 0x00, 0x55 }, 01226 { 0x33, 0x8c, 0xa1, 0x18 }, 01227 { 0x33, 0x90, 0x00, 0x5a }, 01228 { 0x33, 0x8c, 0xa1, 0x19 }, 01229 { 0x33, 0x90, 0x00, 0x28 }, 01230 { 0x33, 0x8c, 0xa1, 0x1a }, 01231 { 0x33, 0x90, 0x00, 0x08 }, 01232 { 0x33, 0x8c, 0xa1, 0x1b }, 01233 { 0x33, 0x90, 0x00, 0x1e }, 01234 { 0x33, 0x8c, 0xa1, 0x1c }, 01235 { 0x33, 0x90, 0x00, 0x02 }, 01236 { 0x33, 0x8c, 0xa1, 0x1d }, 01237 { 0x33, 0x90, 0x00, 0x00 }, 01238 { 0x33, 0x8c, 0xa1, 0x1e }, 01239 { 0x33, 0x90, 0x00, 0x00 }, 01240 { 0x33, 0x8c, 0xa1, 0x1f }, 01241 { 0x33, 0x90, 0x00, 0x04 }, 01242 { 0x33, 0x8c, 0xab, 0x05 }, 01243 { 0x33, 0x90, 0x00, 0x00 }, 01244 { 0x33, 0x8c, 0xa7, 0x6d }, 01245 { 0x33, 0x90, 0x00, 0x03 }, 01246 { 0x33, 0x8c, 0xa7, 0x6e }, 01247 { 0x33, 0x90, 0x00, 0x03 }, 01248 { 0x33, 0x8c, 0xa7, 0x6f }, 01249 { 0x33, 0x90, 0x00, 0x00 }, 01250 { 0x33, 0x8c, 0xa7, 0x70 }, 01251 { 0x33, 0x90, 0x00, 0x15 }, 01252 { 0x33, 0x8c, 0xa7, 0x71 }, 01253 { 0x33, 0x90, 0x00, 0x25 }, 01254 { 0x33, 0x8c, 0xa7, 0x72 }, 01255 { 0x33, 0x90, 0x00, 0x3f }, 01256 { 0x33, 0x8c, 0xa7, 0x73 }, 01257 { 0x33, 0x90, 0x00, 0x64 }, 01258 { 0x33, 0x8c, 0xa7, 0x74 }, 01259 { 0x33, 0x90, 0x00, 0x80 }, 01260 { 0x33, 0x8c, 0xa7, 0x75 }, 01261 { 0x33, 0x90, 0x00, 0x97 }, 01262 { 0x33, 0x8c, 0xa7, 0x76 }, 01263 { 0x33, 0x90, 0x00, 0xa9 }, 01264 { 0x33, 0x8c, 0xa7, 0x77 }, 01265 { 0x33, 0x90, 0x00, 0xba }, 01266 { 0x33, 0x8c, 0xa7, 0x78 }, 01267 { 0x33, 0x90, 0x00, 0xc7 }, 01268 { 0x33, 0x8c, 0xa7, 0x79 }, 01269 { 0x33, 0x90, 0x00, 0xd2 }, 01270 { 0x33, 0x8c, 0xa7, 0x7a }, 01271 { 0x33, 0x90, 0x00, 0xdc }, 01272 { 0x33, 0x8c, 0xa7, 0x7b }, 01273 { 0x33, 0x90, 0x00, 0xe4 }, 01274 { 0x33, 0x8c, 0xa7, 0x7c }, 01275 { 0x33, 0x90, 0x00, 0xea }, 01276 { 0x33, 0x8c, 0xa7, 0x7d }, 01277 { 0x33, 0x90, 0x00, 0xf0 }, 01278 { 0x33, 0x8c, 0xa7, 0x7e }, 01279 { 0x33, 0x90, 0x00, 0xf4 }, 01280 { 0x33, 0x8c, 0xa7, 0x7f }, 01281 { 0x33, 0x90, 0x00, 0xf8 }, 01282 { 0x33, 0x8c, 0xa7, 0x80 }, 01283 { 0x33, 0x90, 0x00, 0xfc }, 01284 { 0x33, 0x8c, 0xa7, 0x81 }, 01285 { 0x33, 0x90, 0x00, 0xff }, 01286 { 0x33, 0x8c, 0xa7, 0x82 }, 01287 { 0x33, 0x90, 0x00, 0x00 }, 01288 { 0x33, 0x8c, 0xa7, 0x83 }, 01289 { 0x33, 0x90, 0x00, 0x15 }, 01290 { 0x33, 0x8c, 0xa7, 0x84 }, 01291 { 0x33, 0x90, 0x00, 0x25 }, 01292 { 0x33, 0x8c, 0xa7, 0x85 }, 01293 { 0x33, 0x90, 0x00, 0x3f }, 01294 { 0x33, 0x8c, 0xa7, 0x86 }, 01295 { 0x33, 0x90, 0x00, 0x64 }, 01296 { 0x33, 0x8c, 0xa7, 0x87 }, 01297 { 0x33, 0x90, 0x00, 0x80 }, 01298 { 0x33, 0x8c, 0xa7, 0x88 }, 01299 { 0x33, 0x90, 0x00, 0x97 }, 01300 { 0x33, 0x8c, 0xa7, 0x89 }, 01301 { 0x33, 0x90, 0x00, 0xa9 }, 01302 { 0x33, 0x8c, 0xa7, 0x8a }, 01303 { 0x33, 0x90, 0x00, 0xba }, 01304 { 0x33, 0x8c, 0xa7, 0x8b }, 01305 { 0x33, 0x90, 0x00, 0xc7 }, 01306 { 0x33, 0x8c, 0xa7, 0x8c }, 01307 { 0x33, 0x90, 0x00, 0xd2 }, 01308 { 0x33, 0x8c, 0xa7, 0x8d }, 01309 { 0x33, 0x90, 0x00, 0xdc }, 01310 { 0x33, 0x8c, 0xa7, 0x8e }, 01311 { 0x33, 0x90, 0x00, 0xe4 }, 01312 { 0x33, 0x8c, 0xa7, 0x8f }, 01313 { 0x33, 0x90, 0x00, 0xea }, 01314 { 0x33, 0x8c, 0xa7, 0x90 }, 01315 { 0x33, 0x90, 0x00, 0xf0 }, 01316 { 0x33, 0x8c, 0xa7, 0x91 }, 01317 { 0x33, 0x90, 0x00, 0xf4 }, 01318 { 0x33, 0x8c, 0xa7, 0x92 }, 01319 { 0x33, 0x90, 0x00, 0xf8 }, 01320 { 0x33, 0x8c, 0xa7, 0x93 }, 01321 { 0x33, 0x90, 0x00, 0xfc }, 01322 { 0x33, 0x8c, 0xa7, 0x94 }, 01323 { 0x33, 0x90, 0x00, 0xff }, 01324 { 0x33, 0x8c, 0xa1, 0x03 }, 01325 { 0x33, 0x90, 0x00, 0x06 }, 01326 { 0x33, 0x8c, 0xa1, 0x04 }, 01327 { 0x33, 0x90, -1 }, 01328 { 0x35, 0xa4, 0x05, 0x96 }, 01329 { 0x33, 0x8c, 0xa1, 0x18 }, 01330 { 0x33, 0x90, 0x00, 0x1e }, 01331 { 0x33, 0x8c, 0xa1, 0x19 }, 01332 { 0x33, 0x90, 0x00, 0x04 }, 01333 { 0x33, 0x8c, 0xa1, 0x1a }, 01334 { 0x33, 0x90, 0x00, 0x0a }, 01335 { 0x33, 0x8c, 0xa1, 0x1b }, 01336 { 0x33, 0x90, 0x00, 0x20 }, 01337 { 0x33, 0x8c, 0xa1, 0x3e }, 01338 { 0x33, 0x90, 0x00, 0x04 }, 01339 { 0x33, 0x8c, 0xa1, 0x3f }, 01340 { 0x33, 0x90, 0x00, 0x0e }, 01341 { 0x33, 0x8c, 0xa1, 0x40 }, 01342 { 0x33, 0x90, 0x00, 0x04 }, 01343 { 0x33, 0x8c, 0xa1, 0x41 }, 01344 { 0x33, 0x90, 0x00, 0x04 }, 01345 { 0x33, 0x8c, 0xa1, 0x42 }, 01346 { 0x33, 0x90, 0x00, 0x32 }, 01347 { 0x33, 0x8c, 0xa1, 0x43 }, 01348 { 0x33, 0x90, 0x00, 0x0f }, 01349 { 0x33, 0x8c, 0xa1, 0x44 }, 01350 { 0x33, 0x90, 0x00, 0x32 }, 01351 { 0x33, 0x8c, 0xa1, 0x45 }, 01352 { 0x33, 0x90, 0x00, 0x32 }, 01353 { 0x33, 0x8c, 0xa1, 0x46 }, 01354 { 0x33, 0x90, 0x00, 0x05 }, 01355 { 0x33, 0x8c, 0xa1, 0x04 }, 01356 { 0x33, 0x90, -1 }, 01357 { 0x33, 0x8c, 0xa1, 0x47 }, 01358 { 0x33, 0x90, 0x00, 0x3a }, 01359 { 0x33, 0x8c, 0x27, 0x95 }, 01360 { 0x33, 0x90, 0x01, 0x00 }, 01361 { 0x33, 0x8c, 0xa1, 0x03 }, 01362 { 0x33, 0x90, 0x00, 0x05 }, 01363 { 0x33, 0x8c, 0xa1, 0x04 }, 01364 { 0x33, 0x90, -1 }, 01365 { 0x33, 0x8c, 0x27, 0x97 }, 01366 { 0x33, 0x90, 0x01, 0x00 }, 01367 { 0x33, 0x8c, 0xa1, 0x03 }, 01368 { 0x33, 0x90, 0x00, 0x05 }, 01369 { 0x33, 0x8c, 0xa1, 0x04 }, 01370 { 0x33, 0x90, -1 }, 01371 { 0x33, 0x8c, 0xa4, 0x04 }, 01372 { 0x33, 0x90, 0x00, 0x80 }, 01373 { 0x33, 0x8c, 0xa1, 0x03 }, 01374 { 0x33, 0x90, 0x00, 0x05 }, 01375 { 0x33, 0x8c, 0xa1, 0x04 }, 01376 { 0x33, 0x90 } 01377 }; 01378 01379 01380 asize = ARRAY_SIZE(values_205); 01381 01382 for(i=0; i<asize; i++) { 01383 usb_stk11xx_read_registry(dev, 0x02ff, &value); 01384 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 01385 01386 usb_stk11xx_write_registry(dev, 0x0205, values_205[i][0]); 01387 usb_stk11xx_write_registry(dev, 0x0205, values_205[i][1]); 01388 01389 if (values_205[i][2] == -1) { 01390 usb_stk11xx_write_registry(dev, 0x0200, 0x0061); 01391 01392 dev_stk11xx_check_device(dev, 500); 01393 01394 usb_stk11xx_read_registry(dev, 0x0209, &value); 01395 usb_stk11xx_write_registry(dev, 0x0200, 0x0020); 01396 01397 dev_stk11xx_check_device(dev, 500); 01398 01399 usb_stk11xx_read_registry(dev, 0x0209, &value); 01400 } 01401 else { 01402 usb_stk11xx_write_registry(dev, 0x0205, values_205[i][2]); 01403 usb_stk11xx_write_registry(dev, 0x0205, values_205[i][3]); 01404 usb_stk11xx_write_registry(dev, 0x0200, 0x0001); 01405 01406 dev_stk11xx_check_device(dev, 500); 01407 } 01408 01409 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); 01410 } 01411 01412 return 0; 01413 } 01414 01415 01429 int dev_stk6a51_camera_settings(struct usb_stk11xx *dev) 01430 { 01431 return 0; 01432 } 01433 01434 01448 int dev_stk6a51_set_camera_quality(struct usb_stk11xx *dev) 01449 { 01450 int value; 01451 01452 // Contrast register 01453 usb_stk11xx_read_registry(dev, 0x02ff, &value); 01454 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 01455 01456 usb_stk11xx_write_registry(dev, 0x0204, 0x00b3); 01457 usb_stk11xx_write_registry(dev, 0x0205, (dev->vsettings.contrast >> 8)); 01458 01459 usb_stk11xx_write_registry(dev, 0x0200, 0x0001); 01460 dev_stk11xx_check_device(dev, 500); 01461 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); 01462 01463 STK_DEBUG("Set colour : %d\n", dev->vsettings.colour); 01464 STK_DEBUG("Set contrast : %d\n", dev->vsettings.contrast); 01465 STK_DEBUG("Set whiteness : %d\n", dev->vsettings.whiteness); 01466 STK_DEBUG("Set brightness : %d\n", dev->vsettings.brightness); 01467 01468 return 0; 01469 } 01470 01471 01481 int dev_stk6a51_set_camera_fps(struct usb_stk11xx *dev) 01482 { 01483 return 0; 01484 } 01485 01486 01497 int dev_stk6a51_start_stream(struct usb_stk11xx *dev) 01498 { 01499 int value; 01500 int value_116, value_117; 01501 01502 usb_stk11xx_read_registry(dev, 0x0116, &value_116); 01503 usb_stk11xx_read_registry(dev, 0x0117, &value_117); 01504 01505 usb_stk11xx_write_registry(dev, 0x0116, 0x0000); 01506 usb_stk11xx_write_registry(dev, 0x0117, 0x0000); 01507 01508 usb_stk11xx_read_registry(dev, 0x0100, &value); // read 0x21 01509 usb_stk11xx_write_registry(dev, 0x0100, 0x00a0); 01510 01511 usb_stk11xx_write_registry(dev, 0x0116, value_116); 01512 usb_stk11xx_write_registry(dev, 0x0117, value_117); 01513 01514 return 0; 01515 } 01516 01517 01527 int dev_stk6a51_reconf_camera(struct usb_stk11xx *dev) 01528 { 01529 dev_stk6a51_configure_device(dev, 19); 01530 01531 dev_stk11xx_camera_settings(dev); 01532 01533 return 0; 01534 } 01535 01536 01547 int dev_stk6a51_stop_stream(struct usb_stk11xx *dev) 01548 { 01549 return 0; 01550 } 01551