Line 0
Link Here
|
|
|
1 |
/** |
2 |
* @file stk11xx-dev-6a51.c |
3 |
* @author Nicolas VIVIEN |
4 |
* @date 2007-12-07 |
5 |
* @version v1.3.x |
6 |
* |
7 |
* @brief Driver for Syntek USB video camera |
8 |
* |
9 |
* @note Copyright (C) Nicolas VIVIEN |
10 |
* |
11 |
* @par Licences |
12 |
* |
13 |
* This program is free software; you can redistribute it and/or modify |
14 |
* it under the terms of the GNU General Public License as published by |
15 |
* the Free Software Foundation; either version 2 of the License, or |
16 |
* any later version. |
17 |
* |
18 |
* This program is distributed in the hope that it will be useful, |
19 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
20 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
21 |
* GNU General Public License for more details. |
22 |
* |
23 |
* You should have received a copy of the GNU General Public License |
24 |
* along with this program; if not, write to the Free Software |
25 |
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
26 |
* |
27 |
* @par SubVersion |
28 |
* $Date: 2007-12-11 14:50:16 +0100 (k, 11 dec 2007) $ |
29 |
* $Revision: 70 $ |
30 |
* $Author: nicklas79 $ |
31 |
* $HeadURL: https://syntekdriver.svn.sourceforge.net/svnroot/syntekdriver/trunk/driver/stk11xx-dev-6a51.c $ |
32 |
*/ |
33 |
|
34 |
#include <linux/module.h> |
35 |
#include <linux/init.h> |
36 |
#include <linux/kernel.h> |
37 |
#include <linux/version.h> |
38 |
#include <linux/errno.h> |
39 |
#include <linux/slab.h> |
40 |
#include <linux/kref.h> |
41 |
|
42 |
#include <linux/usb.h> |
43 |
#include <media/v4l2-common.h> |
44 |
|
45 |
#include "stk11xx.h" |
46 |
#include "stk11xx-dev.h" |
47 |
|
48 |
|
49 |
//============================================================================= |
50 |
// |
51 |
// STK-6A51 API |
52 |
// |
53 |
//============================================================================= |
54 |
|
55 |
|
56 |
/** |
57 |
* @param dev Device structure |
58 |
* |
59 |
* @returns 0 if all is OK |
60 |
* |
61 |
* @brief This function permits to initialize the device. |
62 |
* |
63 |
* This function must be called at first. It's the start of the |
64 |
* initialization process. After this process, the device is |
65 |
* completly initalized and it's ready. |
66 |
* |
67 |
* This function is written from the USB log. |
68 |
*/ |
69 |
int dev_stk6a51_initialize_device(struct usb_stk11xx *dev) |
70 |
{ |
71 |
int i; |
72 |
int value; |
73 |
int retok; |
74 |
|
75 |
STK_INFO("Initialize USB2.0 Syntek Camera\n"); |
76 |
|
77 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
78 |
usb_stk11xx_write_registry(dev, 0x0002, 0x0078); |
79 |
usb_stk11xx_write_registry(dev, 0x0003, 0x0080); |
80 |
|
81 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007f); |
82 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
83 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
84 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
85 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
86 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
87 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
88 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
89 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
90 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
91 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
92 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
93 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
94 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
95 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
96 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
97 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
98 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
99 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
100 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
101 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
102 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
103 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
104 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
105 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
106 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
107 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
108 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
109 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
110 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007d); |
111 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
112 |
|
113 |
for (i=0; i<16; i++) { |
114 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
115 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
116 |
usb_stk11xx_read_registry(dev, 0x0000, &value); |
117 |
|
118 |
STK_DEBUG("Loop 1 : Read 0x0000 = %02X\n", value); |
119 |
} |
120 |
|
121 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
122 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
123 |
|
124 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007f); |
125 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
126 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
127 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
128 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
129 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
130 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
131 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
132 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
133 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
134 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
135 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
136 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
137 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
138 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
139 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
140 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
141 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
142 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
143 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
144 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
145 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
146 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
147 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
148 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
149 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
150 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
151 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
152 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
153 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
154 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
155 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
156 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
157 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
158 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
159 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007d); |
160 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
161 |
|
162 |
for (i=0; i<16; i++) { |
163 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
164 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
165 |
usb_stk11xx_read_registry(dev, 0x0000, &value); |
166 |
|
167 |
STK_DEBUG("Loop 2 : Read 0x0000 = %02X\n", value); |
168 |
} |
169 |
|
170 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
171 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
172 |
|
173 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007f); |
174 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
175 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
176 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
177 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
178 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
179 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
180 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
181 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
182 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
183 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
184 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
185 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
186 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
187 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
188 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
189 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
190 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
191 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
192 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
193 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
194 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
195 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
196 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
197 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
198 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
199 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
200 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
201 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
202 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
203 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
204 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
205 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
206 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
207 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
208 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
209 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
210 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0027); |
211 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0026); |
212 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
213 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
214 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007d); |
215 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
216 |
|
217 |
for (i=0; i<16; i++) { |
218 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
219 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
220 |
usb_stk11xx_read_registry(dev, 0x0000, &value); |
221 |
|
222 |
STK_DEBUG("Loop 3 : Read 0x0000 = %02X\n", value); |
223 |
} |
224 |
|
225 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
226 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
227 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007f); |
228 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
229 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
230 |
|
231 |
usb_stk11xx_write_registry(dev, 0x0117, 0x0000); |
232 |
usb_stk11xx_read_registry(dev, 0x0103, &value); |
233 |
usb_stk11xx_write_registry(dev, 0x0103, 0x0001); |
234 |
usb_stk11xx_read_registry(dev, 0x0103, &value); |
235 |
usb_stk11xx_write_registry(dev, 0x0103, 0x0000); |
236 |
|
237 |
usb_stk11xx_write_registry(dev, 0x0000, 0x00e0); |
238 |
usb_stk11xx_write_registry(dev, 0x0002, 0x00f8); |
239 |
usb_stk11xx_write_registry(dev, 0x0002, 0x0078); |
240 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
241 |
|
242 |
dev_stk6a51_configure_device(dev, 0); |
243 |
retok = dev_stk11xx_check_device(dev, 65); |
244 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
245 |
|
246 |
dev_stk6a51_configure_device(dev, 1); |
247 |
retok = dev_stk11xx_check_device(dev, 65); |
248 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
249 |
|
250 |
dev_stk6a51_configure_device(dev, 2); |
251 |
retok = dev_stk11xx_check_device(dev, 65); |
252 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
253 |
|
254 |
dev_stk6a51_configure_device(dev, 3); |
255 |
retok = dev_stk11xx_check_device(dev, 65); |
256 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
257 |
|
258 |
dev_stk6a51_configure_device(dev, 4); |
259 |
retok = dev_stk11xx_check_device(dev, 65); |
260 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
261 |
|
262 |
dev_stk6a51_configure_device(dev, 5); |
263 |
retok = dev_stk11xx_check_device(dev, 65); |
264 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
265 |
|
266 |
dev_stk6a51_configure_device(dev, 6); |
267 |
retok = dev_stk11xx_check_device(dev, 65); |
268 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
269 |
|
270 |
dev_stk6a51_configure_device(dev, 7); |
271 |
retok = dev_stk11xx_check_device(dev, 65); |
272 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
273 |
|
274 |
dev_stk6a51_configure_device(dev, 8); |
275 |
retok = dev_stk11xx_check_device(dev, 65); |
276 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
277 |
|
278 |
dev_stk6a51_configure_device(dev, 9); |
279 |
retok = dev_stk11xx_check_device(dev, 65); |
280 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
281 |
|
282 |
dev_stk6a51_configure_device(dev, 10); |
283 |
retok = dev_stk11xx_check_device(dev, 65); |
284 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
285 |
|
286 |
dev_stk6a51_configure_device(dev, 11); |
287 |
retok = dev_stk11xx_check_device(dev, 65); |
288 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
289 |
|
290 |
dev_stk6a51_configure_device(dev, 12); |
291 |
retok = dev_stk11xx_check_device(dev, 65); |
292 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
293 |
|
294 |
dev_stk6a51_configure_device(dev, 13); |
295 |
|
296 |
dev_stk6a51_configure_device(dev, 14); |
297 |
|
298 |
dev_stk6a51_configure_device(dev, 15); |
299 |
retok = dev_stk11xx_check_device(dev, 65); |
300 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0008); |
301 |
|
302 |
dev_stk6a51_configure_device(dev, 16); |
303 |
|
304 |
dev_stk6a51_configure_device(dev, 17); |
305 |
|
306 |
|
307 |
|
308 |
|
309 |
|
310 |
dev_stk6a51_camera_asleep(dev); |
311 |
|
312 |
usb_stk11xx_set_feature(dev, 0); |
313 |
|
314 |
// Device is initialized and is ready !!! |
315 |
STK_INFO("Syntek USB2.0 Camera is ready\n"); |
316 |
|
317 |
return 0; |
318 |
} |
319 |
|
320 |
|
321 |
/** |
322 |
* @param dev Device structure |
323 |
* @param step The step of configuration [0-11] |
324 |
* |
325 |
* @returns 0 if all is OK |
326 |
* |
327 |
* @brief This function permits to configure the device. |
328 |
* |
329 |
* The configuration of device is composed of 12 steps. |
330 |
* This function is called by the initialization process. |
331 |
* |
332 |
* We don't know the meaning of these steps ! We only replay the USB log. |
333 |
*/ |
334 |
int dev_stk6a51_configure_device(struct usb_stk11xx *dev, int step) |
335 |
{ |
336 |
int retok; |
337 |
int value; |
338 |
|
339 |
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 |
340 |
static const int values_001B[] = { |
341 |
0x0e, 0x03, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x0e |
342 |
}; |
343 |
static const int values_001C[] = { |
344 |
0x06, 0x02, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x46, 0x46, 0x46 |
345 |
}; |
346 |
static const int values_0202[] = { |
347 |
0x1e, 0x0a, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x0a, 0x1e, 0x14, 0x1e, 0x1f, 0x0a, 0x0a, 0x0a, 0x0a |
348 |
}; |
349 |
static const int values_0110[] = { |
350 |
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 |
351 |
}; |
352 |
static const int values_0112[] = { |
353 |
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x09, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01 |
354 |
}; |
355 |
static const int values_0114[] = { |
356 |
0x87, 0x80, 0x80, 0x80, 0x80, 0x00, 0xbe, 0xbe, 0x80, 0x80, 0x84, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 |
357 |
}; |
358 |
static const int values_0115[] = { |
359 |
0x02, 0x02, 0x02, 0x02, 0x02, 0x05, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 |
360 |
}; |
361 |
static const int values_0116[] = { |
362 |
0xe7, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe9, 0xe9, 0xe0, 0xe0, 0xe4, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1 |
363 |
}; |
364 |
static const int values_0117[] = { |
365 |
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 |
366 |
}; |
367 |
static const int values_0100[] = { |
368 |
0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 |
369 |
}; |
370 |
|
371 |
|
372 |
STK_DEBUG("dev_stk6a51_configure_device : %d\n", step); |
373 |
|
374 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
375 |
usb_stk11xx_write_registry(dev, 0x0002, 0x0078); |
376 |
usb_stk11xx_write_registry(dev, 0x0003, 0x0080); |
377 |
usb_stk11xx_write_registry(dev, 0x0005, 0x0000); |
378 |
|
379 |
usb_stk11xx_write_registry(dev, 0x0007, 0x0003); |
380 |
usb_stk11xx_write_registry(dev, 0x000d, 0x0000); |
381 |
usb_stk11xx_write_registry(dev, 0x000f, 0x0002); |
382 |
usb_stk11xx_write_registry(dev, 0x0300, 0x0012); |
383 |
usb_stk11xx_write_registry(dev, 0x0350, 0x0041); |
384 |
|
385 |
usb_stk11xx_write_registry(dev, 0x0351, 0x0000); |
386 |
usb_stk11xx_write_registry(dev, 0x0352, 0x0000); |
387 |
usb_stk11xx_write_registry(dev, 0x0353, 0x0000); |
388 |
usb_stk11xx_write_registry(dev, 0x0018, 0x0010); |
389 |
usb_stk11xx_write_registry(dev, 0x0019, 0x0000); |
390 |
|
391 |
usb_stk11xx_write_registry(dev, 0x001b, values_001B[step]); |
392 |
usb_stk11xx_write_registry(dev, 0x001c, values_001C[step]); |
393 |
usb_stk11xx_write_registry(dev, 0x0300, 0x0080); |
394 |
usb_stk11xx_write_registry(dev, 0x001a, 0x0004); |
395 |
usb_stk11xx_write_registry(dev, 0x0202, values_0202[step]); |
396 |
|
397 |
usb_stk11xx_write_registry(dev, 0x0110, values_0110[step]); |
398 |
usb_stk11xx_write_registry(dev, 0x0111, 0x0000); |
399 |
usb_stk11xx_write_registry(dev, 0x0112, values_0112[step]); |
400 |
usb_stk11xx_write_registry(dev, 0x0113, 0x0000); |
401 |
usb_stk11xx_write_registry(dev, 0x0114, values_0114[step]); |
402 |
|
403 |
usb_stk11xx_write_registry(dev, 0x0115, values_0115[step]); |
404 |
usb_stk11xx_write_registry(dev, 0x0116, values_0116[step]); |
405 |
usb_stk11xx_write_registry(dev, 0x0117, values_0117[step]); |
406 |
|
407 |
usb_stk11xx_read_registry(dev, 0x0100, &value); |
408 |
usb_stk11xx_write_registry(dev, 0x0100, values_0100[step]); |
409 |
|
410 |
// usb_stk11xx_write_registry(dev, 0x0200, 0x0080); |
411 |
// usb_stk11xx_write_registry(dev, 0x0200, 0x0000); |
412 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
413 |
|
414 |
|
415 |
switch (step) { |
416 |
case 0: |
417 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0040); |
418 |
|
419 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0041); |
420 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0001); |
421 |
usb_stk11xx_write_registry(dev, 0x0204, 0x001c); |
422 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0002); |
423 |
|
424 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
425 |
|
426 |
break; |
427 |
|
428 |
case 1: |
429 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0022); |
430 |
|
431 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0027); |
432 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); |
433 |
|
434 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
435 |
|
436 |
break; |
437 |
|
438 |
case 2: |
439 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0060); |
440 |
|
441 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
442 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
443 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
444 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00bf); |
445 |
|
446 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
447 |
|
448 |
break; |
449 |
|
450 |
case 3: |
451 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0042); |
452 |
|
453 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
454 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
455 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0024); |
456 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); |
457 |
|
458 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
459 |
|
460 |
break; |
461 |
|
462 |
case 4: |
463 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0042); |
464 |
|
465 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
466 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
467 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
468 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00e0); |
469 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0024); |
470 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00a5); |
471 |
|
472 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
473 |
|
474 |
break; |
475 |
|
476 |
case 5: |
477 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0042); |
478 |
|
479 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
480 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
481 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
482 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00bf); |
483 |
|
484 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
485 |
|
486 |
break; |
487 |
|
488 |
case 6: |
489 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0060); |
490 |
|
491 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
492 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
493 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
494 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); |
495 |
|
496 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
497 |
|
498 |
break; |
499 |
|
500 |
case 7: |
501 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0060); |
502 |
|
503 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
504 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
505 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
506 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); |
507 |
|
508 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
509 |
|
510 |
break; |
511 |
|
512 |
case 8: |
513 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0060); |
514 |
|
515 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
516 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
517 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
518 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00b7); |
519 |
|
520 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
521 |
|
522 |
break; |
523 |
|
524 |
case 9: |
525 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0060); |
526 |
|
527 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
528 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
529 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0013); |
530 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00b7); |
531 |
|
532 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
533 |
|
534 |
break; |
535 |
|
536 |
case 10: |
537 |
usb_stk11xx_write_registry(dev, 0x0203, 0x0080); |
538 |
|
539 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0012); |
540 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
541 |
usb_stk11xx_write_registry(dev, 0x0204, 0x000a); |
542 |
usb_stk11xx_write_registry(dev, 0x0205, 0x00ff); |
543 |
|
544 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
545 |
|
546 |
break; |
547 |
|
548 |
case 11: |
549 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00dc); |
550 |
|
551 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0015); |
552 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
553 |
|
554 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
555 |
|
556 |
break; |
557 |
|
558 |
case 12: |
559 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00ec); |
560 |
|
561 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0015); |
562 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0080); |
563 |
|
564 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
565 |
|
566 |
break; |
567 |
|
568 |
case 13: |
569 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); |
570 |
|
571 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
572 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
573 |
|
574 |
usb_stk11xx_write_registry(dev, 0x0208, 0x0020); |
575 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
576 |
retok = dev_stk11xx_check_device(dev, 500); |
577 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
578 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
579 |
|
580 |
break; |
581 |
|
582 |
case 14: |
583 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); |
584 |
|
585 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
586 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
587 |
|
588 |
usb_stk11xx_write_registry(dev, 0x0208, 0x0000); |
589 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
590 |
retok = dev_stk11xx_check_device(dev, 500); |
591 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
592 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
593 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
594 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
595 |
|
596 |
usb_stk11xx_write_registry(dev, 0x0208, 0x00f1); |
597 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
598 |
retok = dev_stk11xx_check_device(dev, 500); |
599 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
600 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
601 |
|
602 |
break; |
603 |
|
604 |
case 15: |
605 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00ba); |
606 |
|
607 |
usb_stk11xx_write_registry(dev, 0x0204, 0x0001); |
608 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0000); |
609 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0005); |
610 |
|
611 |
break; |
612 |
|
613 |
case 16: |
614 |
usb_stk11xx_write_registry(dev, 0x0203, 0x007a); |
615 |
|
616 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
617 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
618 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0030); |
619 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0000); |
620 |
usb_stk11xx_read_registry(dev, 0x0201, &value); |
621 |
usb_stk11xx_read_registry(dev, 0x0201, &value); |
622 |
usb_stk11xx_read_registry(dev, 0x0201, &value); |
623 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
624 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
625 |
usb_stk11xx_read_registry(dev, 0x0201, &value); |
626 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
627 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
628 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
629 |
|
630 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007f); |
631 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
632 |
usb_stk11xx_write_registry(dev, 0x0002, 0x007d); |
633 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0024); |
634 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0025); |
635 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
636 |
|
637 |
break; |
638 |
|
639 |
case 17: |
640 |
usb_stk11xx_write_registry(dev, 0x0203, 0x007a); |
641 |
|
642 |
dev_stk6a51_sensor_settings(dev); |
643 |
|
644 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
645 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
646 |
|
647 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0033); |
648 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0090); |
649 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0061); |
650 |
retok = dev_stk11xx_check_device(dev, 500); |
651 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
652 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
653 |
retok = dev_stk11xx_check_device(dev, 500); |
654 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
655 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
656 |
usb_stk11xx_read_registry(dev, 0x0201, &value); |
657 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
658 |
|
659 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0080); |
660 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0000); |
661 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
662 |
|
663 |
break; |
664 |
|
665 |
case 18: |
666 |
usb_stk11xx_write_registry(dev, 0x0203, 0x007a); |
667 |
|
668 |
dev_stk6a51_sensor_settings(dev); |
669 |
|
670 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
671 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
672 |
|
673 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0033); |
674 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0090); |
675 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0061); |
676 |
retok = dev_stk11xx_check_device(dev, 500); |
677 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
678 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
679 |
retok = dev_stk11xx_check_device(dev, 500); |
680 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
681 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
682 |
break; |
683 |
|
684 |
case 19: |
685 |
usb_stk11xx_write_registry(dev, 0x0203, 0x007a); |
686 |
|
687 |
dev_stk6a51_sensor_settings(dev); |
688 |
|
689 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
690 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
691 |
|
692 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0033); |
693 |
usb_stk11xx_write_registry(dev, 0x0205, 0x0090); |
694 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0061); |
695 |
retok = dev_stk11xx_check_device(dev, 500); |
696 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
697 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
698 |
retok = dev_stk11xx_check_device(dev, 500); |
699 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
700 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
701 |
break; |
702 |
} |
703 |
|
704 |
return 0; |
705 |
} |
706 |
|
707 |
|
708 |
/** |
709 |
* @param dev Device structure |
710 |
* |
711 |
* @returns 0 if all is OK |
712 |
* |
713 |
* @brief Wake-up the camera. |
714 |
* |
715 |
* This function permits to wake-up the device. |
716 |
*/ |
717 |
int dev_stk6a51_camera_asleep(struct usb_stk11xx *dev) |
718 |
{ |
719 |
int value; |
720 |
|
721 |
usb_stk11xx_write_registry(dev, 0x0203, 0x00a0); |
722 |
|
723 |
usb_stk11xx_read_registry(dev, 0x0104, &value); |
724 |
usb_stk11xx_read_registry(dev, 0x0105, &value); |
725 |
usb_stk11xx_read_registry(dev, 0x0106, &value); |
726 |
|
727 |
usb_stk11xx_write_registry(dev, 0x0100, 0x0021); |
728 |
usb_stk11xx_write_registry(dev, 0x0116, 0x0000); |
729 |
usb_stk11xx_write_registry(dev, 0x0117, 0x0000); |
730 |
usb_stk11xx_write_registry(dev, 0x0018, 0x0000); |
731 |
|
732 |
usb_stk11xx_read_registry(dev, 0x0000, &value); |
733 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0049); |
734 |
|
735 |
return 0; |
736 |
} |
737 |
|
738 |
|
739 |
/** |
740 |
* @param dev Device structure |
741 |
* |
742 |
* @returns 0 if all is OK |
743 |
* |
744 |
* @brief This function initializes the device for the stream. |
745 |
* |
746 |
* It's the start. This function has to be called at first, before |
747 |
* enabling the video stream. |
748 |
*/ |
749 |
int dev_stk6a51_init_camera(struct usb_stk11xx *dev) |
750 |
{ |
751 |
dev_stk6a51_camera_asleep(dev); |
752 |
|
753 |
usb_stk11xx_set_feature(dev, 0); |
754 |
|
755 |
dev_stk6a51_camera_asleep(dev); |
756 |
|
757 |
usb_stk11xx_write_registry(dev, 0x0000, 0x00e0); |
758 |
usb_stk11xx_write_registry(dev, 0x0002, 0x00f8); |
759 |
usb_stk11xx_write_registry(dev, 0x0002, 0x0078); |
760 |
usb_stk11xx_write_registry(dev, 0x0000, 0x0020); |
761 |
|
762 |
dev_stk6a51_configure_device(dev, 18); |
763 |
|
764 |
dev_stk11xx_camera_off(dev); |
765 |
|
766 |
return 0; |
767 |
} |
768 |
|
769 |
|
770 |
/** |
771 |
* @param dev Device structure |
772 |
* |
773 |
* @returns 0 if all is OK |
774 |
* |
775 |
* @brief This function permits to set default sensor settings. |
776 |
* |
777 |
* We set some registers in using a I2C bus. |
778 |
* WARNING, the sensor settings can be different following the situation. |
779 |
*/ |
780 |
int dev_stk6a51_sensor_settings(struct usb_stk11xx *dev) |
781 |
{ |
782 |
int i; |
783 |
int retok; |
784 |
int value; |
785 |
|
786 |
int asize; |
787 |
|
788 |
static const int values_205[][4] = { |
789 |
{ 0x33, 0x86, 0x05, 0x01 }, |
790 |
{ 0x33, 0x86, 0x05, 0x00 }, |
791 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
792 |
{ 0x33, 0x90, -1 }, |
793 |
{ 0x30, 0x1a, 0x0a, 0xcc }, |
794 |
{ 0x32, 0x02, 0x00, 0x08 }, |
795 |
{ 0x33, 0xf4, 0x03, 0x1d }, |
796 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
797 |
{ 0x33, 0x90, -1 }, |
798 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
799 |
{ 0x33, 0x90, -1 }, |
800 |
{ 0x34, 0x1e, 0x8f, 0x09 }, |
801 |
{ 0x34, 0x1c, 0x02, 0x50 }, |
802 |
{ 0x34, 0x1e, 0x8f, 0x09 }, |
803 |
{ 0x34, 0x1e, 0x8f, 0x08 }, |
804 |
{ 0x33, 0x8c, 0x04, 0x00 }, |
805 |
{ 0x33, 0x90, 0x30, 0x8f }, |
806 |
{ 0x33, 0x92, 0xc3, 0xff }, |
807 |
{ 0x33, 0x94, 0xed, 0x8f }, |
808 |
{ 0x33, 0x96, 0x35, 0x8f }, |
809 |
{ 0x33, 0x98, 0x18, 0x8f }, |
810 |
{ 0x33, 0x9a, 0x30, 0x8f }, |
811 |
{ 0x33, 0x9c, 0xc3, 0x00 }, |
812 |
{ 0x33, 0x9e, 0x15, 0x8f }, |
813 |
{ 0x33, 0x8c, 0x04, 0x10 }, |
814 |
{ 0x33, 0x90, 0xcc, 0x00 }, |
815 |
{ 0x33, 0x92, 0x07, 0xbd }, |
816 |
{ 0x33, 0x94, 0x04, 0xb5 }, |
817 |
{ 0x33, 0x96, 0xbd, 0x9e }, |
818 |
{ 0x33, 0x98, 0x9f, 0xf6 }, |
819 |
{ 0x33, 0x9a, 0x03, 0x22 }, |
820 |
{ 0x33, 0x9c, 0x30, 0xe7 }, |
821 |
{ 0x33, 0x9e, 0x0a, 0xf6 }, |
822 |
{ 0x33, 0x8c, 0x04, 0x20 }, |
823 |
{ 0x33, 0x90, 0x02, 0x39 }, |
824 |
{ 0x33, 0x92, 0xc1, 0x01 }, |
825 |
{ 0x33, 0x94, 0x26, 0x05 }, |
826 |
{ 0x33, 0x96, 0xf6, 0x03 }, |
827 |
{ 0x33, 0x98, 0x23, 0xe7 }, |
828 |
{ 0x33, 0x9a, 0x0a, 0x7d }, |
829 |
{ 0x33, 0x9c, 0x03, 0x21 }, |
830 |
{ 0x33, 0x9e, 0x27, 0x20 }, |
831 |
{ 0x33, 0x8c, 0x04, 0x30 }, |
832 |
{ 0x33, 0x90, 0xf6, 0x02 }, |
833 |
{ 0x33, 0x92, 0x39, 0xe7 }, |
834 |
{ 0x33, 0x94, 0x02, 0x8f }, |
835 |
{ 0x33, 0x96, 0xc3, 0x00 }, |
836 |
{ 0x33, 0x98, 0x0b, 0x30 }, |
837 |
{ 0x33, 0x9a, 0xed, 0x00 }, |
838 |
{ 0x33, 0x9c, 0xfe, 0x02 }, |
839 |
{ 0x33, 0x9e, 0x37, 0xee }, |
840 |
{ 0x33, 0x8c, 0x04, 0x40 }, |
841 |
{ 0x33, 0x90, 0x04, 0x5f }, |
842 |
{ 0x33, 0x92, 0xad, 0x00 }, |
843 |
{ 0x33, 0x94, 0x30, 0xe6 }, |
844 |
{ 0x33, 0x96, 0x0a, 0x4f }, |
845 |
{ 0x33, 0x98, 0xed, 0x08 }, |
846 |
{ 0x33, 0x9a, 0xec, 0x11 }, |
847 |
{ 0x33, 0x9c, 0xa3, 0x08 }, |
848 |
{ 0x33, 0x9e, 0xdd, 0x56 }, |
849 |
{ 0x33, 0x8c, 0x04, 0x50 }, |
850 |
{ 0x33, 0x90, 0x30, 0xc6 }, |
851 |
{ 0x33, 0x92, 0x13, 0x3a }, |
852 |
{ 0x33, 0x94, 0x35, 0x39 }, |
853 |
{ 0x33, 0x96, 0x3c, 0x3c }, |
854 |
{ 0x33, 0x98, 0x3c, 0xc6 }, |
855 |
{ 0x33, 0x9a, 0x01, 0xf7 }, |
856 |
{ 0x33, 0x9c, 0x03, 0x21 }, |
857 |
{ 0x33, 0x9e, 0xc6, 0x0a }, |
858 |
{ 0x33, 0x8c, 0x04, 0x60 }, |
859 |
{ 0x33, 0x90, 0xf7, 0x03 }, |
860 |
{ 0x33, 0x92, 0x22, 0xf7 }, |
861 |
{ 0x33, 0x94, 0x03, 0x23 }, |
862 |
{ 0x33, 0x96, 0xcc, 0x03 }, |
863 |
{ 0x33, 0x98, 0x03, 0x30 }, |
864 |
{ 0x33, 0x9a, 0xed, 0x02 }, |
865 |
{ 0x33, 0x9c, 0xfe, 0x10 }, |
866 |
{ 0x33, 0x9e, 0x50, 0xec }, |
867 |
{ 0x33, 0x8c, 0x04, 0x70 }, |
868 |
{ 0x33, 0x90, 0x04, 0xfd }, |
869 |
{ 0x33, 0x92, 0x02, 0xff }, |
870 |
{ 0x33, 0x94, 0xfe, 0x02 }, |
871 |
{ 0x33, 0x96, 0xff, 0xec }, |
872 |
{ 0x33, 0x98, 0x00, 0xfd }, |
873 |
{ 0x33, 0x9a, 0x03, 0x01 }, |
874 |
{ 0x33, 0x9c, 0x5f, 0x4f }, |
875 |
{ 0x33, 0x9e, 0x30, 0xed }, |
876 |
{ 0x33, 0x8c, 0x04, 0x80 }, |
877 |
{ 0x33, 0x90, 0x04, 0xec }, |
878 |
{ 0x33, 0x92, 0x04, 0x05 }, |
879 |
{ 0x33, 0x94, 0xf3, 0x03 }, |
880 |
{ 0x33, 0x96, 0x01, 0x8f }, |
881 |
{ 0x33, 0x98, 0xec, 0x00 }, |
882 |
{ 0x33, 0x9a, 0x30, 0xed }, |
883 |
{ 0x33, 0x9c, 0x00, 0xec }, |
884 |
{ 0x33, 0x9e, 0x04, 0x05 }, |
885 |
{ 0x33, 0x8c, 0x04, 0x90 }, |
886 |
{ 0x33, 0x90, 0xe3, 0x02 }, |
887 |
{ 0x33, 0x92, 0x18, 0x8f }, |
888 |
{ 0x33, 0x94, 0xec, 0x00 }, |
889 |
{ 0x33, 0x96, 0x18, 0xed }, |
890 |
{ 0x33, 0x98, 0x00, 0xec }, |
891 |
{ 0x33, 0x9a, 0x04, 0xc3 }, |
892 |
{ 0x33, 0x9c, 0x00, 0x01 }, |
893 |
{ 0x33, 0x9e, 0xed, 0x04 }, |
894 |
{ 0x33, 0x8c, 0x04, 0xa0 }, |
895 |
{ 0x33, 0x90, 0x83, 0x00 }, |
896 |
{ 0x33, 0x92, 0x0f, 0x25 }, |
897 |
{ 0x33, 0x94, 0xdc, 0xee }, |
898 |
{ 0x33, 0x96, 0x02, 0xcc }, |
899 |
{ 0x33, 0x98, 0x04, 0x00 }, |
900 |
{ 0x33, 0x9a, 0xed, 0x04 }, |
901 |
{ 0x33, 0x9c, 0xcc, 0x03 }, |
902 |
{ 0x33, 0x9e, 0x03, 0xdd }, |
903 |
{ 0x33, 0x8c, 0x04, 0xb0 }, |
904 |
{ 0x33, 0x90, 0x52, 0x38 }, |
905 |
{ 0x33, 0x92, 0x38, 0x38 }, |
906 |
{ 0x33, 0x94, 0x39, 0x37 }, |
907 |
{ 0x33, 0x96, 0x36, 0x8f }, |
908 |
{ 0x33, 0x98, 0x30, 0xe3 }, |
909 |
{ 0x33, 0x9a, 0x00, 0x8f }, |
910 |
{ 0x33, 0x9c, 0x18, 0x8f }, |
911 |
{ 0x33, 0x9e, 0x18, 0x30 }, |
912 |
{ 0x33, 0x8c, 0x04, 0xc0 }, |
913 |
{ 0x33, 0x90, 0x18, 0xe3 }, |
914 |
{ 0x33, 0x92, 0x00, 0x18 }, |
915 |
{ 0x33, 0x94, 0x8f, 0x32 }, |
916 |
{ 0x33, 0x96, 0x33, 0x36 }, |
917 |
{ 0x33, 0x98, 0xa6, 0x00 }, |
918 |
{ 0x33, 0x9a, 0x18, 0xa7 }, |
919 |
{ 0x33, 0x9c, 0x00, 0x09 }, |
920 |
{ 0x33, 0x9e, 0x18, 0x09 }, |
921 |
{ 0x33, 0x8c, 0x04, 0xd0 }, |
922 |
{ 0x33, 0x90, 0xc0, 0x01 }, |
923 |
{ 0x33, 0x92, 0x24, 0xf4 }, |
924 |
{ 0x33, 0x94, 0x32, 0x80 }, |
925 |
{ 0x33, 0x96, 0x01, 0x24 }, |
926 |
{ 0x33, 0x98, 0xee, 0x39 }, |
927 |
{ 0x33, 0x8c, 0x20, 0x03 }, |
928 |
{ 0x33, 0x90, 0x04, 0x56 }, |
929 |
{ 0x33, 0x8c, 0xa0, 0x02 }, |
930 |
{ 0x33, 0x90, 0x00, 0x01 }, |
931 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
932 |
{ 0x33, 0x90, -1 }, |
933 |
{ 0x34, 0xce, 0x81, 0x60 }, |
934 |
{ 0x34, 0xd0, 0x66, 0x33 }, |
935 |
{ 0x34, 0xd2, 0x31, 0x9a }, |
936 |
{ 0x34, 0xd4, 0x94, 0x63 }, |
937 |
{ 0x34, 0xd6, 0x4b, 0x25 }, |
938 |
{ 0x34, 0xd8, 0x26, 0x70 }, |
939 |
{ 0x34, 0xda, 0x72, 0x4c }, |
940 |
{ 0x34, 0xdc, 0xff, 0x04 }, |
941 |
{ 0x34, 0xde, 0x00, 0xf4 }, |
942 |
{ 0x34, 0xe6, 0x00, 0xcc }, |
943 |
{ 0x34, 0xee, 0x0e, 0x42 }, |
944 |
{ 0x34, 0xf6, 0x0d, 0xb5 }, |
945 |
{ 0x35, 0x00, 0x0a, 0xfa }, |
946 |
{ 0x35, 0x08, 0x0f, 0x10 }, |
947 |
{ 0x35, 0x10, 0x11, 0x22 }, |
948 |
{ 0x35, 0x18, 0x0c, 0x28 }, |
949 |
{ 0x35, 0x20, 0x1c, 0x2c }, |
950 |
{ 0x35, 0x28, 0x17, 0x40 }, |
951 |
{ 0x35, 0x30, 0x08, 0xf2 }, |
952 |
{ 0x35, 0x38, 0xfb, 0xd5 }, |
953 |
{ 0x35, 0x4c, 0x05, 0xc7 }, |
954 |
{ 0x35, 0x44, 0x04, 0xf9 }, |
955 |
{ 0x35, 0x5c, 0x05, 0xd0 }, |
956 |
{ 0x35, 0x54, 0x05, 0xf4 }, |
957 |
{ 0x34, 0xe0, 0x01, 0x05 }, |
958 |
{ 0x34, 0xe8, 0x00, 0xa0 }, |
959 |
{ 0x34, 0xf0, 0x0e, 0xa1 }, |
960 |
{ 0x34, 0xf8, 0x0e, 0x01 }, |
961 |
{ 0x35, 0x02, 0x0f, 0xeb }, |
962 |
{ 0x35, 0x0a, 0x09, 0x0a }, |
963 |
{ 0x35, 0x12, 0x10, 0x1e }, |
964 |
{ 0x35, 0x1a, 0x08, 0x23 }, |
965 |
{ 0x35, 0x22, 0x1c, 0x22 }, |
966 |
{ 0x35, 0x2a, 0x07, 0x22 }, |
967 |
{ 0x35, 0x32, 0x0b, 0x06 }, |
968 |
{ 0x35, 0x3a, 0xf9, 0x16 }, |
969 |
{ 0x35, 0x4e, 0x05, 0x9f }, |
970 |
{ 0x35, 0x46, 0x05, 0x30 }, |
971 |
{ 0x35, 0x5e, 0x06, 0x75 }, |
972 |
{ 0x35, 0x56, 0x06, 0x5c }, |
973 |
{ 0x34, 0xe4, 0x00, 0xc5 }, |
974 |
{ 0x34, 0xec, 0x00, 0x48 }, |
975 |
{ 0x34, 0xf4, 0x0f, 0x66 }, |
976 |
{ 0x34, 0xfc, 0x0e, 0x61 }, |
977 |
{ 0x35, 0x06, 0x1b, 0xdb }, |
978 |
{ 0x35, 0x0e, 0x04, 0x0a }, |
979 |
{ 0x35, 0x16, 0x11, 0x13 }, |
980 |
{ 0x35, 0x1e, 0x08, 0x1f }, |
981 |
{ 0x35, 0x26, 0x11, 0x19 }, |
982 |
{ 0x35, 0x2e, 0xf8, 0x1a }, |
983 |
{ 0x35, 0x36, 0x04, 0x0c }, |
984 |
{ 0x35, 0x3e, 0xfa, 0x00 }, |
985 |
{ 0x35, 0x52, 0x06, 0xf1 }, |
986 |
{ 0x35, 0x4a, 0x04, 0x0e }, |
987 |
{ 0x35, 0x62, 0x06, 0xa1 }, |
988 |
{ 0x35, 0x5a, 0x06, 0x91 }, |
989 |
{ 0x34, 0xe2, 0x00, 0xd2 }, |
990 |
{ 0x34, 0xea, 0x00, 0x72 }, |
991 |
{ 0x34, 0xf2, 0x0e, 0x1d }, |
992 |
{ 0x34, 0xfa, 0x0e, 0x06 }, |
993 |
{ 0x35, 0x04, 0x13, 0x0e }, |
994 |
{ 0x35, 0x0c, 0x0f, 0x0d }, |
995 |
{ 0x35, 0x14, 0x13, 0x1c }, |
996 |
{ 0x35, 0x1c, 0x13, 0x29 }, |
997 |
{ 0x35, 0x24, 0x0d, 0x24 }, |
998 |
{ 0x35, 0x2c, 0xfd, 0x29 }, |
999 |
{ 0x35, 0x34, 0x07, 0xf4 }, |
1000 |
{ 0x35, 0x3c, 0xee, 0xe7 }, |
1001 |
{ 0x35, 0x50, 0x06, 0x50 }, |
1002 |
{ 0x35, 0x48, 0x05, 0xc1 }, |
1003 |
{ 0x35, 0x60, 0x06, 0x11 }, |
1004 |
{ 0x35, 0x58, 0x06, 0x58 }, |
1005 |
{ 0x35, 0x40, 0x00, 0x00 }, |
1006 |
{ 0x35, 0x42, 0x00, 0x00 }, |
1007 |
{ 0x32, 0x10, 0x01, 0xfc }, |
1008 |
{ 0x33, 0x8c, 0xa3, 0x52 }, |
1009 |
{ 0x33, 0x90, 0x00, 0x3c }, |
1010 |
{ 0x33, 0x8c, 0xa1, 0x18 }, |
1011 |
{ 0x33, 0x90, 0x00, 0x3c }, |
1012 |
{ 0x33, 0x8c, 0xa1, 0x19 }, |
1013 |
{ 0x33, 0x90, 0x00, 0x0a }, |
1014 |
{ 0x33, 0x8c, 0xa7, 0x6d }, |
1015 |
{ 0x33, 0x90, 0x00, 0x03 }, |
1016 |
{ 0x33, 0x8c, 0xa7, 0x6e }, |
1017 |
{ 0x33, 0x90, 0x00, 0x03 }, |
1018 |
{ 0x33, 0x8c, 0xa7, 0x6f }, |
1019 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1020 |
{ 0x33, 0x8c, 0xa7, 0x70 }, |
1021 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1022 |
{ 0x33, 0x8c, 0xa7, 0x71 }, |
1023 |
{ 0x33, 0x90, 0x00, 0x10 }, |
1024 |
{ 0x33, 0x8c, 0xa7, 0x72 }, |
1025 |
{ 0x33, 0x90, 0x00, 0x30 }, |
1026 |
{ 0x33, 0x8c, 0xa7, 0x73 }, |
1027 |
{ 0x33, 0x90, 0x00, 0x5b }, |
1028 |
{ 0x33, 0x8c, 0xa7, 0x74 }, |
1029 |
{ 0x33, 0x90, 0x00, 0x77 }, |
1030 |
{ 0x33, 0x8c, 0xa7, 0x75 }, |
1031 |
{ 0x33, 0x90, 0x00, 0x8e }, |
1032 |
{ 0x33, 0x8c, 0xa7, 0x76 }, |
1033 |
{ 0x33, 0x90, 0x00, 0xa0 }, |
1034 |
{ 0x33, 0x8c, 0xa7, 0x77 }, |
1035 |
{ 0x33, 0x90, 0x00, 0xaf }, |
1036 |
{ 0x33, 0x8c, 0xa7, 0x78 }, |
1037 |
{ 0x33, 0x90, 0x00, 0xbc }, |
1038 |
{ 0x33, 0x8c, 0xa7, 0x79 }, |
1039 |
{ 0x33, 0x90, 0x00, 0xc7 }, |
1040 |
{ 0x33, 0x8c, 0xa7, 0x7a }, |
1041 |
{ 0x33, 0x90, 0x00, 0xd0 }, |
1042 |
{ 0x33, 0x8c, 0xa7, 0x7b }, |
1043 |
{ 0x33, 0x90, 0x00, 0xd9 }, |
1044 |
{ 0x33, 0x8c, 0xa7, 0x7c }, |
1045 |
{ 0x33, 0x90, 0x00, 0xe0 }, |
1046 |
{ 0x33, 0x8c, 0xa7, 0x7d }, |
1047 |
{ 0x33, 0x90, 0x00, 0xe8 }, |
1048 |
{ 0x33, 0x8c, 0xa7, 0x7e }, |
1049 |
{ 0x33, 0x90, 0x00, 0xee }, |
1050 |
{ 0x33, 0x8c, 0xa7, 0x7f }, |
1051 |
{ 0x33, 0x90, 0x00, 0xf4 }, |
1052 |
{ 0x33, 0x8c, 0xa7, 0x80 }, |
1053 |
{ 0x33, 0x90, 0x00, 0xfa }, |
1054 |
{ 0x33, 0x8c, 0xa7, 0x81 }, |
1055 |
{ 0x33, 0x90, 0x00, 0xff }, |
1056 |
{ 0x33, 0x8c, 0xa7, 0x82 }, |
1057 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1058 |
{ 0x33, 0x8c, 0xa7, 0x83 }, |
1059 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1060 |
{ 0x33, 0x8c, 0xa7, 0x84 }, |
1061 |
{ 0x33, 0x90, 0x00, 0x10 }, |
1062 |
{ 0x33, 0x8c, 0xa7, 0x85 }, |
1063 |
{ 0x33, 0x90, 0x00, 0x30 }, |
1064 |
{ 0x33, 0x8c, 0xa7, 0x86 }, |
1065 |
{ 0x33, 0x90, 0x00, 0x5b }, |
1066 |
{ 0x33, 0x8c, 0xa7, 0x87 }, |
1067 |
{ 0x33, 0x90, 0x00, 0x77 }, |
1068 |
{ 0x33, 0x8c, 0xa7, 0x88 }, |
1069 |
{ 0x33, 0x90, 0x00, 0x8e }, |
1070 |
{ 0x33, 0x8c, 0xa7, 0x89 }, |
1071 |
{ 0x33, 0x90, 0x00, 0xa0 }, |
1072 |
{ 0x33, 0x8c, 0xa7, 0x8a }, |
1073 |
{ 0x33, 0x90, 0x00, 0xaf }, |
1074 |
{ 0x33, 0x8c, 0xa7, 0x8b }, |
1075 |
{ 0x33, 0x90, 0x00, 0xbc }, |
1076 |
{ 0x33, 0x8c, 0xa7, 0x8c }, |
1077 |
{ 0x33, 0x90, 0x00, 0xc7 }, |
1078 |
{ 0x33, 0x8c, 0xa7, 0x8d }, |
1079 |
{ 0x33, 0x90, 0x00, 0xd0 }, |
1080 |
{ 0x33, 0x8c, 0xa7, 0x8e }, |
1081 |
{ 0x33, 0x90, 0x00, 0xd9 }, |
1082 |
{ 0x33, 0x8c, 0xa7, 0x8f }, |
1083 |
{ 0x33, 0x90, 0x00, 0xe0 }, |
1084 |
{ 0x33, 0x8c, 0xa7, 0x90 }, |
1085 |
{ 0x33, 0x90, 0x00, 0xe8 }, |
1086 |
{ 0x33, 0x8c, 0xa7, 0x91 }, |
1087 |
{ 0x33, 0x90, 0x00, 0xee }, |
1088 |
{ 0x33, 0x8c, 0xa7, 0x92 }, |
1089 |
{ 0x33, 0x90, 0x00, 0xf4 }, |
1090 |
{ 0x33, 0x8c, 0xa7, 0x93 }, |
1091 |
{ 0x33, 0x90, 0x00, 0xfa }, |
1092 |
{ 0x33, 0x8c, 0xa7, 0x94 }, |
1093 |
{ 0x33, 0x90, 0x00, 0xff }, |
1094 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1095 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1096 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1097 |
{ 0x33, 0x90, -1 }, |
1098 |
{ 0x33, 0x8c, 0xa2, 0x06 }, |
1099 |
{ 0x33, 0x90, 0x00, 0x50 }, |
1100 |
{ 0x33, 0x8c, 0x27, 0x03 }, |
1101 |
{ 0x33, 0x90, 0x02, 0x82 }, |
1102 |
{ 0x33, 0x8c, 0x27, 0x05 }, |
1103 |
{ 0x33, 0x90, 0x01, 0xe2 }, |
1104 |
{ 0x33, 0x8c, 0x27, 0x07 }, |
1105 |
{ 0x33, 0x90, 0x05, 0x02 }, |
1106 |
{ 0x33, 0x8c, 0x27, 0x09 }, |
1107 |
{ 0x33, 0x90, 0x04, 0x02 }, |
1108 |
{ 0x33, 0x8c, 0x27, 0x0d }, |
1109 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1110 |
{ 0x33, 0x8c, 0x27, 0x0f }, |
1111 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1112 |
{ 0x33, 0x8c, 0x27, 0x11 }, |
1113 |
{ 0x33, 0x90, 0x04, 0xbd }, |
1114 |
{ 0x33, 0x8c, 0x27, 0x13 }, |
1115 |
{ 0x33, 0x90, 0x06, 0x4d }, |
1116 |
{ 0x33, 0x8c, 0x27, 0x15 }, |
1117 |
{ 0x33, 0x90, 0x04, 0x00 }, |
1118 |
{ 0x33, 0x8c, 0x27, 0x17 }, |
1119 |
{ 0x33, 0x90, 0x21, 0x11 }, |
1120 |
{ 0x33, 0x8c, 0x27, 0x19 }, |
1121 |
{ 0x33, 0x90, 0x04, 0x6c }, |
1122 |
{ 0x33, 0x8c, 0x27, 0x1b }, |
1123 |
{ 0x33, 0x90, 0x02, 0x4f }, |
1124 |
{ 0x33, 0x8c, 0x27, 0x1d }, |
1125 |
{ 0x33, 0x90, 0x01, 0x02 }, |
1126 |
{ 0x33, 0x8c, 0x27, 0x1f }, |
1127 |
{ 0x33, 0x90, 0x02, 0x79 }, |
1128 |
{ 0x33, 0x8c, 0x27, 0x21 }, |
1129 |
{ 0x33, 0x90, 0x01, 0x55 }, |
1130 |
{ 0x33, 0x8c, 0x27, 0x23 }, |
1131 |
{ 0x33, 0x90, 0x03, 0x5b }, |
1132 |
{ 0x33, 0x8c, 0x27, 0x25 }, |
1133 |
{ 0x33, 0x90, 0x06, 0x0f }, |
1134 |
{ 0x33, 0x8c, 0x27, 0x27 }, |
1135 |
{ 0x33, 0x90, 0x20, 0x20 }, |
1136 |
{ 0x33, 0x8c, 0x27, 0x29 }, |
1137 |
{ 0x33, 0x90, 0x20, 0x20 }, |
1138 |
{ 0x33, 0x8c, 0x27, 0x2b }, |
1139 |
{ 0x33, 0x90, 0x10, 0x20 }, |
1140 |
{ 0x33, 0x8c, 0x27, 0x2d }, |
1141 |
{ 0x33, 0x90, 0x20, 0x07 }, |
1142 |
{ 0x33, 0x8c, 0x27, 0x2f }, |
1143 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1144 |
{ 0x33, 0x8c, 0x27, 0x31 }, |
1145 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1146 |
{ 0x33, 0x8c, 0x27, 0x33 }, |
1147 |
{ 0x33, 0x90, 0x04, 0xbb }, |
1148 |
{ 0x33, 0x8c, 0x27, 0x35 }, |
1149 |
{ 0x33, 0x90, 0x06, 0x4b }, |
1150 |
{ 0x33, 0x8c, 0x27, 0x37 }, |
1151 |
{ 0x33, 0x90, 0x04, 0xce }, |
1152 |
{ 0x33, 0x8c, 0x27, 0x39 }, |
1153 |
{ 0x33, 0x90, 0x21, 0x11 }, |
1154 |
{ 0x33, 0x8c, 0x27, 0x3b }, |
1155 |
{ 0x33, 0x90, 0x00, 0x24 }, |
1156 |
{ 0x33, 0x8c, 0x27, 0x3d }, |
1157 |
{ 0x33, 0x90, 0x01, 0x20 }, |
1158 |
{ 0x33, 0x8c, 0x27, 0x41 }, |
1159 |
{ 0x33, 0x90, 0x01, 0x69 }, |
1160 |
{ 0x33, 0x8c, 0x27, 0x45 }, |
1161 |
{ 0x33, 0x90, 0x04, 0xff }, |
1162 |
{ 0x33, 0x8c, 0x27, 0x47 }, |
1163 |
{ 0x33, 0x90, 0x08, 0x24 }, |
1164 |
{ 0x33, 0x8c, 0x27, 0x51 }, |
1165 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1166 |
{ 0x33, 0x8c, 0x27, 0x53 }, |
1167 |
{ 0x33, 0x90, 0x03, 0x20 }, |
1168 |
{ 0x33, 0x8c, 0x27, 0x55 }, |
1169 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1170 |
{ 0x33, 0x8c, 0x27, 0x57 }, |
1171 |
{ 0x33, 0x90, 0x02, 0x58 }, |
1172 |
{ 0x33, 0x8c, 0x27, 0x5f }, |
1173 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1174 |
{ 0x33, 0x8c, 0x27, 0x61 }, |
1175 |
{ 0x33, 0x90, 0x06, 0x40 }, |
1176 |
{ 0x33, 0x8c, 0x27, 0x63 }, |
1177 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1178 |
{ 0x33, 0x8c, 0x27, 0x65 }, |
1179 |
{ 0x33, 0x90, 0x04, 0xb0 }, |
1180 |
{ 0x33, 0x8c, 0x22, 0x2e }, |
1181 |
{ 0x33, 0x90, 0x00, 0xd7 }, |
1182 |
{ 0x33, 0x8c, 0xa4, 0x08 }, |
1183 |
{ 0x33, 0x90, 0x00, 0x2a }, |
1184 |
{ 0x33, 0x8c, 0xa4, 0x09 }, |
1185 |
{ 0x33, 0x90, 0x00, 0x2c }, |
1186 |
{ 0x33, 0x8c, 0xa4, 0x0a }, |
1187 |
{ 0x33, 0x90, 0x00, 0x32 }, |
1188 |
{ 0x33, 0x8c, 0xa4, 0x0b }, |
1189 |
{ 0x33, 0x90, 0x00, 0x34 }, |
1190 |
{ 0x33, 0x8c, 0x24, 0x11 }, |
1191 |
{ 0x33, 0x90, 0x00, 0xd7 }, |
1192 |
{ 0x33, 0x8c, 0x24, 0x13 }, |
1193 |
{ 0x33, 0x90, 0x01, 0x02 }, |
1194 |
{ 0x33, 0x8c, 0x24, 0x15 }, |
1195 |
{ 0x33, 0x90, 0x00, 0xa0 }, |
1196 |
{ 0x33, 0x8c, 0x24, 0x17 }, |
1197 |
{ 0x33, 0x90, 0x00, 0xc0 }, |
1198 |
{ 0x33, 0x8c, 0x27, 0x99 }, |
1199 |
{ 0x33, 0x90, 0x64, 0x08 }, |
1200 |
{ 0x33, 0x8c, 0x27, 0x9b }, |
1201 |
{ 0x33, 0x90, 0x64, 0x08 }, |
1202 |
{ 0x33, 0x8c, 0xa2, 0x0c }, |
1203 |
{ 0x33, 0x90, 0x00, 0x18 }, |
1204 |
{ 0x33, 0x8c, 0xa2, 0x14 }, |
1205 |
{ 0x33, 0x90, 0x00, 0x24 }, |
1206 |
{ 0x33, 0x8c, 0xa2, 0x15 }, |
1207 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1208 |
{ 0x33, 0x8c, 0xa2, 0x0d }, |
1209 |
{ 0x33, 0x90, 0x00, 0x30 }, |
1210 |
{ 0x33, 0x8c, 0xa2, 0x0e }, |
1211 |
{ 0x33, 0x90, 0x00, 0x80 }, |
1212 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1213 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1214 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1215 |
{ 0x33, 0x90, -1 }, |
1216 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1217 |
{ 0x33, 0x90, 0x00, 0x06 }, |
1218 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1219 |
{ 0x33, 0x90, -1 }, |
1220 |
{ 0x33, 0x8c, 0xa1, 0x30 }, |
1221 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1222 |
{ 0x33, 0x8c, 0xa1, 0x15 }, |
1223 |
{ 0x33, 0x90, 0x00, 0xef }, |
1224 |
{ 0x33, 0x8c, 0xa1, 0x16 }, |
1225 |
{ 0x33, 0x90, 0x00, 0x30 }, |
1226 |
{ 0x33, 0x8c, 0xa1, 0x17 }, |
1227 |
{ 0x33, 0x90, 0x00, 0x55 }, |
1228 |
{ 0x33, 0x8c, 0xa1, 0x18 }, |
1229 |
{ 0x33, 0x90, 0x00, 0x5a }, |
1230 |
{ 0x33, 0x8c, 0xa1, 0x19 }, |
1231 |
{ 0x33, 0x90, 0x00, 0x28 }, |
1232 |
{ 0x33, 0x8c, 0xa1, 0x1a }, |
1233 |
{ 0x33, 0x90, 0x00, 0x08 }, |
1234 |
{ 0x33, 0x8c, 0xa1, 0x1b }, |
1235 |
{ 0x33, 0x90, 0x00, 0x1e }, |
1236 |
{ 0x33, 0x8c, 0xa1, 0x1c }, |
1237 |
{ 0x33, 0x90, 0x00, 0x02 }, |
1238 |
{ 0x33, 0x8c, 0xa1, 0x1d }, |
1239 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1240 |
{ 0x33, 0x8c, 0xa1, 0x1e }, |
1241 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1242 |
{ 0x33, 0x8c, 0xa1, 0x1f }, |
1243 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1244 |
{ 0x33, 0x8c, 0xab, 0x05 }, |
1245 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1246 |
{ 0x33, 0x8c, 0xa7, 0x6d }, |
1247 |
{ 0x33, 0x90, 0x00, 0x03 }, |
1248 |
{ 0x33, 0x8c, 0xa7, 0x6e }, |
1249 |
{ 0x33, 0x90, 0x00, 0x03 }, |
1250 |
{ 0x33, 0x8c, 0xa7, 0x6f }, |
1251 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1252 |
{ 0x33, 0x8c, 0xa7, 0x70 }, |
1253 |
{ 0x33, 0x90, 0x00, 0x15 }, |
1254 |
{ 0x33, 0x8c, 0xa7, 0x71 }, |
1255 |
{ 0x33, 0x90, 0x00, 0x25 }, |
1256 |
{ 0x33, 0x8c, 0xa7, 0x72 }, |
1257 |
{ 0x33, 0x90, 0x00, 0x3f }, |
1258 |
{ 0x33, 0x8c, 0xa7, 0x73 }, |
1259 |
{ 0x33, 0x90, 0x00, 0x64 }, |
1260 |
{ 0x33, 0x8c, 0xa7, 0x74 }, |
1261 |
{ 0x33, 0x90, 0x00, 0x80 }, |
1262 |
{ 0x33, 0x8c, 0xa7, 0x75 }, |
1263 |
{ 0x33, 0x90, 0x00, 0x97 }, |
1264 |
{ 0x33, 0x8c, 0xa7, 0x76 }, |
1265 |
{ 0x33, 0x90, 0x00, 0xa9 }, |
1266 |
{ 0x33, 0x8c, 0xa7, 0x77 }, |
1267 |
{ 0x33, 0x90, 0x00, 0xba }, |
1268 |
{ 0x33, 0x8c, 0xa7, 0x78 }, |
1269 |
{ 0x33, 0x90, 0x00, 0xc7 }, |
1270 |
{ 0x33, 0x8c, 0xa7, 0x79 }, |
1271 |
{ 0x33, 0x90, 0x00, 0xd2 }, |
1272 |
{ 0x33, 0x8c, 0xa7, 0x7a }, |
1273 |
{ 0x33, 0x90, 0x00, 0xdc }, |
1274 |
{ 0x33, 0x8c, 0xa7, 0x7b }, |
1275 |
{ 0x33, 0x90, 0x00, 0xe4 }, |
1276 |
{ 0x33, 0x8c, 0xa7, 0x7c }, |
1277 |
{ 0x33, 0x90, 0x00, 0xea }, |
1278 |
{ 0x33, 0x8c, 0xa7, 0x7d }, |
1279 |
{ 0x33, 0x90, 0x00, 0xf0 }, |
1280 |
{ 0x33, 0x8c, 0xa7, 0x7e }, |
1281 |
{ 0x33, 0x90, 0x00, 0xf4 }, |
1282 |
{ 0x33, 0x8c, 0xa7, 0x7f }, |
1283 |
{ 0x33, 0x90, 0x00, 0xf8 }, |
1284 |
{ 0x33, 0x8c, 0xa7, 0x80 }, |
1285 |
{ 0x33, 0x90, 0x00, 0xfc }, |
1286 |
{ 0x33, 0x8c, 0xa7, 0x81 }, |
1287 |
{ 0x33, 0x90, 0x00, 0xff }, |
1288 |
{ 0x33, 0x8c, 0xa7, 0x82 }, |
1289 |
{ 0x33, 0x90, 0x00, 0x00 }, |
1290 |
{ 0x33, 0x8c, 0xa7, 0x83 }, |
1291 |
{ 0x33, 0x90, 0x00, 0x15 }, |
1292 |
{ 0x33, 0x8c, 0xa7, 0x84 }, |
1293 |
{ 0x33, 0x90, 0x00, 0x25 }, |
1294 |
{ 0x33, 0x8c, 0xa7, 0x85 }, |
1295 |
{ 0x33, 0x90, 0x00, 0x3f }, |
1296 |
{ 0x33, 0x8c, 0xa7, 0x86 }, |
1297 |
{ 0x33, 0x90, 0x00, 0x64 }, |
1298 |
{ 0x33, 0x8c, 0xa7, 0x87 }, |
1299 |
{ 0x33, 0x90, 0x00, 0x80 }, |
1300 |
{ 0x33, 0x8c, 0xa7, 0x88 }, |
1301 |
{ 0x33, 0x90, 0x00, 0x97 }, |
1302 |
{ 0x33, 0x8c, 0xa7, 0x89 }, |
1303 |
{ 0x33, 0x90, 0x00, 0xa9 }, |
1304 |
{ 0x33, 0x8c, 0xa7, 0x8a }, |
1305 |
{ 0x33, 0x90, 0x00, 0xba }, |
1306 |
{ 0x33, 0x8c, 0xa7, 0x8b }, |
1307 |
{ 0x33, 0x90, 0x00, 0xc7 }, |
1308 |
{ 0x33, 0x8c, 0xa7, 0x8c }, |
1309 |
{ 0x33, 0x90, 0x00, 0xd2 }, |
1310 |
{ 0x33, 0x8c, 0xa7, 0x8d }, |
1311 |
{ 0x33, 0x90, 0x00, 0xdc }, |
1312 |
{ 0x33, 0x8c, 0xa7, 0x8e }, |
1313 |
{ 0x33, 0x90, 0x00, 0xe4 }, |
1314 |
{ 0x33, 0x8c, 0xa7, 0x8f }, |
1315 |
{ 0x33, 0x90, 0x00, 0xea }, |
1316 |
{ 0x33, 0x8c, 0xa7, 0x90 }, |
1317 |
{ 0x33, 0x90, 0x00, 0xf0 }, |
1318 |
{ 0x33, 0x8c, 0xa7, 0x91 }, |
1319 |
{ 0x33, 0x90, 0x00, 0xf4 }, |
1320 |
{ 0x33, 0x8c, 0xa7, 0x92 }, |
1321 |
{ 0x33, 0x90, 0x00, 0xf8 }, |
1322 |
{ 0x33, 0x8c, 0xa7, 0x93 }, |
1323 |
{ 0x33, 0x90, 0x00, 0xfc }, |
1324 |
{ 0x33, 0x8c, 0xa7, 0x94 }, |
1325 |
{ 0x33, 0x90, 0x00, 0xff }, |
1326 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1327 |
{ 0x33, 0x90, 0x00, 0x06 }, |
1328 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1329 |
{ 0x33, 0x90, -1 }, |
1330 |
{ 0x35, 0xa4, 0x05, 0x96 }, |
1331 |
{ 0x33, 0x8c, 0xa1, 0x18 }, |
1332 |
{ 0x33, 0x90, 0x00, 0x1e }, |
1333 |
{ 0x33, 0x8c, 0xa1, 0x19 }, |
1334 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1335 |
{ 0x33, 0x8c, 0xa1, 0x1a }, |
1336 |
{ 0x33, 0x90, 0x00, 0x0a }, |
1337 |
{ 0x33, 0x8c, 0xa1, 0x1b }, |
1338 |
{ 0x33, 0x90, 0x00, 0x20 }, |
1339 |
{ 0x33, 0x8c, 0xa1, 0x3e }, |
1340 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1341 |
{ 0x33, 0x8c, 0xa1, 0x3f }, |
1342 |
{ 0x33, 0x90, 0x00, 0x0e }, |
1343 |
{ 0x33, 0x8c, 0xa1, 0x40 }, |
1344 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1345 |
{ 0x33, 0x8c, 0xa1, 0x41 }, |
1346 |
{ 0x33, 0x90, 0x00, 0x04 }, |
1347 |
{ 0x33, 0x8c, 0xa1, 0x42 }, |
1348 |
{ 0x33, 0x90, 0x00, 0x32 }, |
1349 |
{ 0x33, 0x8c, 0xa1, 0x43 }, |
1350 |
{ 0x33, 0x90, 0x00, 0x0f }, |
1351 |
{ 0x33, 0x8c, 0xa1, 0x44 }, |
1352 |
{ 0x33, 0x90, 0x00, 0x32 }, |
1353 |
{ 0x33, 0x8c, 0xa1, 0x45 }, |
1354 |
{ 0x33, 0x90, 0x00, 0x32 }, |
1355 |
{ 0x33, 0x8c, 0xa1, 0x46 }, |
1356 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1357 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1358 |
{ 0x33, 0x90, -1 }, |
1359 |
{ 0x33, 0x8c, 0xa1, 0x47 }, |
1360 |
{ 0x33, 0x90, 0x00, 0x3a }, |
1361 |
{ 0x33, 0x8c, 0x27, 0x95 }, |
1362 |
{ 0x33, 0x90, 0x01, 0x00 }, |
1363 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1364 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1365 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1366 |
{ 0x33, 0x90, -1 }, |
1367 |
{ 0x33, 0x8c, 0x27, 0x97 }, |
1368 |
{ 0x33, 0x90, 0x01, 0x00 }, |
1369 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1370 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1371 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1372 |
{ 0x33, 0x90, -1 }, |
1373 |
{ 0x33, 0x8c, 0xa4, 0x04 }, |
1374 |
{ 0x33, 0x90, 0x00, 0x80 }, |
1375 |
{ 0x33, 0x8c, 0xa1, 0x03 }, |
1376 |
{ 0x33, 0x90, 0x00, 0x05 }, |
1377 |
{ 0x33, 0x8c, 0xa1, 0x04 }, |
1378 |
{ 0x33, 0x90 } |
1379 |
}; |
1380 |
|
1381 |
|
1382 |
asize = ARRAY_SIZE(values_205); |
1383 |
|
1384 |
for(i=0; i<asize; i++) { |
1385 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
1386 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
1387 |
|
1388 |
usb_stk11xx_write_registry(dev, 0x0205, values_205[i][0]); |
1389 |
usb_stk11xx_write_registry(dev, 0x0205, values_205[i][1]); |
1390 |
|
1391 |
if (values_205[i][2] == -1) { |
1392 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0061); |
1393 |
|
1394 |
retok = dev_stk11xx_check_device(dev, 500); |
1395 |
|
1396 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
1397 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0020); |
1398 |
|
1399 |
retok = dev_stk11xx_check_device(dev, 500); |
1400 |
|
1401 |
usb_stk11xx_read_registry(dev, 0x0209, &value); |
1402 |
} |
1403 |
else { |
1404 |
usb_stk11xx_write_registry(dev, 0x0205, values_205[i][2]); |
1405 |
usb_stk11xx_write_registry(dev, 0x0205, values_205[i][3]); |
1406 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0001); |
1407 |
|
1408 |
retok = dev_stk11xx_check_device(dev, 500); |
1409 |
} |
1410 |
|
1411 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0001); |
1412 |
} |
1413 |
|
1414 |
return 0; |
1415 |
} |
1416 |
|
1417 |
|
1418 |
/** |
1419 |
* @param dev Device structure |
1420 |
* |
1421 |
* @returns 0 if all is OK |
1422 |
* |
1423 |
* @brief This function permits to modify the settings of the camera. |
1424 |
* |
1425 |
* This functions permits to modify the settings : |
1426 |
* - brightness |
1427 |
* - contrast |
1428 |
* - white balance |
1429 |
* - ... |
1430 |
*/ |
1431 |
int dev_stk6a51_camera_settings(struct usb_stk11xx *dev) |
1432 |
{ |
1433 |
return 0; |
1434 |
} |
1435 |
|
1436 |
|
1437 |
/** |
1438 |
* @param dev Device structure |
1439 |
* |
1440 |
* @returns 0 if all is OK |
1441 |
* |
1442 |
* @brief This function permits to modify the settings of the camera. |
1443 |
* |
1444 |
* This functions permits to modify the settings : |
1445 |
* - brightness |
1446 |
* - contrast |
1447 |
* - white balance |
1448 |
* - ... |
1449 |
*/ |
1450 |
int dev_stk6a51_set_camera_quality(struct usb_stk11xx *dev) |
1451 |
{ |
1452 |
int ret; |
1453 |
int value; |
1454 |
|
1455 |
// Contrast register |
1456 |
usb_stk11xx_read_registry(dev, 0x02ff, &value); |
1457 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
1458 |
|
1459 |
usb_stk11xx_write_registry(dev, 0x0204, 0x00b3); |
1460 |
usb_stk11xx_write_registry(dev, 0x0205, (dev->vsettings.contrast >> 8)); |
1461 |
|
1462 |
usb_stk11xx_write_registry(dev, 0x0200, 0x0001); |
1463 |
ret = dev_stk11xx_check_device(dev, 500); |
1464 |
usb_stk11xx_write_registry(dev, 0x02ff, 0x0000); |
1465 |
|
1466 |
STK_DEBUG("Set colour : %d\n", dev->vsettings.colour); |
1467 |
STK_DEBUG("Set contrast : %d\n", dev->vsettings.contrast); |
1468 |
STK_DEBUG("Set whiteness : %d\n", dev->vsettings.whiteness); |
1469 |
STK_DEBUG("Set brightness : %d\n", dev->vsettings.brightness); |
1470 |
|
1471 |
return 0; |
1472 |
} |
1473 |
|
1474 |
|
1475 |
/** |
1476 |
* @param dev Device structure |
1477 |
* |
1478 |
* @returns 0 if all is OK |
1479 |
* |
1480 |
* @brief This function permits to modify the settings of the camera. |
1481 |
* |
1482 |
* This functions permits to modify the frame rate per second. |
1483 |
*/ |
1484 |
int dev_stk6a51_set_camera_fps(struct usb_stk11xx *dev) |
1485 |
{ |
1486 |
return 0; |
1487 |
} |
1488 |
|
1489 |
|
1490 |
/** |
1491 |
* @param dev Device structure |
1492 |
* |
1493 |
* @returns 0 if all is OK |
1494 |
* |
1495 |
* @brief This function sets the device to start the stream. |
1496 |
* |
1497 |
* After the initialization of the device and the initialization of the video stream, |
1498 |
* this function permits to enable the stream. |
1499 |
*/ |
1500 |
int dev_stk6a51_start_stream(struct usb_stk11xx *dev) |
1501 |
{ |
1502 |
int value; |
1503 |
int value_116, value_117; |
1504 |
|
1505 |
usb_stk11xx_read_registry(dev, 0x0116, &value_116); |
1506 |
usb_stk11xx_read_registry(dev, 0x0117, &value_117); |
1507 |
|
1508 |
usb_stk11xx_write_registry(dev, 0x0116, 0x0000); |
1509 |
usb_stk11xx_write_registry(dev, 0x0117, 0x0000); |
1510 |
|
1511 |
usb_stk11xx_read_registry(dev, 0x0100, &value); // read 0x21 |
1512 |
usb_stk11xx_write_registry(dev, 0x0100, 0x00a0); |
1513 |
|
1514 |
usb_stk11xx_write_registry(dev, 0x0116, value_116); |
1515 |
usb_stk11xx_write_registry(dev, 0x0117, value_117); |
1516 |
|
1517 |
return 0; |
1518 |
} |
1519 |
|
1520 |
|
1521 |
/** |
1522 |
* @param dev Device structure |
1523 |
* |
1524 |
* @returns 0 if all is OK |
1525 |
* |
1526 |
* @brief Reconfigure the camera before the stream. |
1527 |
* |
1528 |
* Before enabling the video stream, you have to reconfigure the device. |
1529 |
*/ |
1530 |
int dev_stk6a51_reconf_camera(struct usb_stk11xx *dev) |
1531 |
{ |
1532 |
dev_stk6a51_configure_device(dev, 19); |
1533 |
|
1534 |
dev_stk11xx_camera_settings(dev); |
1535 |
|
1536 |
return 0; |
1537 |
} |
1538 |
|
1539 |
|
1540 |
/** |
1541 |
* @param dev Device structure |
1542 |
* |
1543 |
* @returns 0 if all is OK |
1544 |
* |
1545 |
* @brief This function sets the device to stop the stream. |
1546 |
* |
1547 |
* You use the function start_stream to enable the video stream. So you |
1548 |
* have to use the function stop_strem to disable the video stream. |
1549 |
*/ |
1550 |
int dev_stk6a51_stop_stream(struct usb_stk11xx *dev) |
1551 |
{ |
1552 |
return 0; |
1553 |
} |
1554 |
|