diff options
Diffstat (limited to 'drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c')
-rw-r--r-- | drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c | 795 |
1 files changed, 795 insertions, 0 deletions
diff --git a/drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c b/drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c new file mode 100644 index 000000000000..7473c33e823e --- /dev/null +++ b/drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c | |||
@@ -0,0 +1,795 @@ | |||
1 | /* | ||
2 | cx231xx-pcb-config.c - driver for Conexant | ||
3 | Cx23100/101/102 USB video capture devices | ||
4 | |||
5 | Copyright (C) 2008 <srinivasa.deevi at conexant dot com> | ||
6 | |||
7 | This program is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License as published by | ||
9 | the Free Software Foundation; either version 2 of the License, or | ||
10 | (at your option) any later version. | ||
11 | |||
12 | This program is distributed in the hope that it will be useful, | ||
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | GNU General Public License for more details. | ||
16 | |||
17 | You should have received a copy of the GNU General Public License | ||
18 | along with this program; if not, write to the Free Software | ||
19 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
20 | */ | ||
21 | |||
22 | #include "cx231xx.h" | ||
23 | #include "cx231xx-conf-reg.h" | ||
24 | |||
25 | static unsigned int pcb_debug; | ||
26 | module_param(pcb_debug, int, 0644); | ||
27 | MODULE_PARM_DESC(pcb_debug, "enable pcb config debug messages [video]"); | ||
28 | |||
29 | /******************************************************************************/ | ||
30 | |||
31 | struct pcb_config cx231xx_Scenario[] = { | ||
32 | { | ||
33 | INDEX_SELFPOWER_DIGITAL_ONLY, /* index */ | ||
34 | USB_SELF_POWER, /* power_type */ | ||
35 | 0, /* speed , not decide yet */ | ||
36 | MOD_DIGITAL, /* mode */ | ||
37 | SOURCE_TS_BDA, /* ts1_source, digital tv only */ | ||
38 | NOT_SUPPORTED, /* ts2_source */ | ||
39 | NOT_SUPPORTED, /* analog source */ | ||
40 | |||
41 | 0, /* digital_index */ | ||
42 | 0, /* analog index */ | ||
43 | 0, /* dif_index */ | ||
44 | 0, /* external_index */ | ||
45 | |||
46 | 1, /* only one configuration */ | ||
47 | { | ||
48 | { | ||
49 | 0, /* config index */ | ||
50 | { | ||
51 | 0, /* interrupt ep index */ | ||
52 | 1, /* ts1 index */ | ||
53 | NOT_SUPPORTED, /* TS2 index */ | ||
54 | NOT_SUPPORTED, /* AUDIO */ | ||
55 | NOT_SUPPORTED, /* VIDEO */ | ||
56 | NOT_SUPPORTED, /* VANC */ | ||
57 | NOT_SUPPORTED, /* HANC */ | ||
58 | NOT_SUPPORTED /* ir_index */ | ||
59 | } | ||
60 | , | ||
61 | } | ||
62 | , | ||
63 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
64 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
65 | NOT_SUPPORTED} | ||
66 | } | ||
67 | , | ||
68 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
69 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
70 | NOT_SUPPORTED} | ||
71 | } | ||
72 | } | ||
73 | , | ||
74 | /* full-speed config */ | ||
75 | { | ||
76 | { | ||
77 | 0, /* config index */ | ||
78 | { | ||
79 | 0, /* interrupt ep index */ | ||
80 | 1, /* ts1 index */ | ||
81 | NOT_SUPPORTED, /* TS2 index */ | ||
82 | NOT_SUPPORTED, /* AUDIO */ | ||
83 | NOT_SUPPORTED, /* VIDEO */ | ||
84 | NOT_SUPPORTED, /* VANC */ | ||
85 | NOT_SUPPORTED, /* HANC */ | ||
86 | NOT_SUPPORTED /* ir_index */ | ||
87 | } | ||
88 | } | ||
89 | , | ||
90 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
91 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
92 | NOT_SUPPORTED} | ||
93 | } | ||
94 | , | ||
95 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
96 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
97 | NOT_SUPPORTED} | ||
98 | } | ||
99 | } | ||
100 | } | ||
101 | , | ||
102 | |||
103 | { | ||
104 | INDEX_SELFPOWER_DUAL_DIGITAL, /* index */ | ||
105 | USB_SELF_POWER, /* power_type */ | ||
106 | 0, /* speed , not decide yet */ | ||
107 | MOD_DIGITAL, /* mode */ | ||
108 | SOURCE_TS_BDA, /* ts1_source, digital tv only */ | ||
109 | 0, /* ts2_source,need update from register */ | ||
110 | NOT_SUPPORTED, /* analog source */ | ||
111 | 0, /* digital_index */ | ||
112 | 0, /* analog index */ | ||
113 | 0, /* dif_index */ | ||
114 | 0, /* external_index */ | ||
115 | |||
116 | 1, /* only one configuration */ | ||
117 | { | ||
118 | { | ||
119 | 0, /* config index */ | ||
120 | { | ||
121 | 0, /* interrupt ep index */ | ||
122 | 1, /* ts1 index */ | ||
123 | 2, /* TS2 index */ | ||
124 | NOT_SUPPORTED, /* AUDIO */ | ||
125 | NOT_SUPPORTED, /* VIDEO */ | ||
126 | NOT_SUPPORTED, /* VANC */ | ||
127 | NOT_SUPPORTED, /* HANC */ | ||
128 | NOT_SUPPORTED /* ir_index */ | ||
129 | } | ||
130 | } | ||
131 | , | ||
132 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
133 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
134 | NOT_SUPPORTED} | ||
135 | } | ||
136 | , | ||
137 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
138 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
139 | NOT_SUPPORTED} | ||
140 | } | ||
141 | } | ||
142 | , | ||
143 | /* full-speed */ | ||
144 | { | ||
145 | { | ||
146 | 0, /* config index */ | ||
147 | { | ||
148 | 0, /* interrupt ep index */ | ||
149 | 1, /* ts1 index */ | ||
150 | 2, /* TS2 index */ | ||
151 | NOT_SUPPORTED, /* AUDIO */ | ||
152 | NOT_SUPPORTED, /* VIDEO */ | ||
153 | NOT_SUPPORTED, /* VANC */ | ||
154 | NOT_SUPPORTED, /* HANC */ | ||
155 | NOT_SUPPORTED /* ir_index */ | ||
156 | } | ||
157 | } | ||
158 | , | ||
159 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
160 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
161 | NOT_SUPPORTED} | ||
162 | } | ||
163 | , | ||
164 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
165 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
166 | NOT_SUPPORTED} | ||
167 | } | ||
168 | } | ||
169 | } | ||
170 | , | ||
171 | |||
172 | { | ||
173 | INDEX_SELFPOWER_ANALOG_ONLY, /* index */ | ||
174 | USB_SELF_POWER, /* power_type */ | ||
175 | 0, /* speed , not decide yet */ | ||
176 | MOD_ANALOG | MOD_DIF | MOD_EXTERNAL, /* mode ,analog tv only */ | ||
177 | NOT_SUPPORTED, /* ts1_source, NOT SUPPORT */ | ||
178 | NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */ | ||
179 | 0, /* analog source, need update */ | ||
180 | |||
181 | 0, /* digital_index */ | ||
182 | 0, /* analog index */ | ||
183 | 0, /* dif_index */ | ||
184 | 0, /* external_index */ | ||
185 | |||
186 | 1, /* only one configuration */ | ||
187 | { | ||
188 | { | ||
189 | 0, /* config index */ | ||
190 | { | ||
191 | 0, /* interrupt ep index */ | ||
192 | NOT_SUPPORTED, /* ts1 index */ | ||
193 | NOT_SUPPORTED, /* TS2 index */ | ||
194 | 1, /* AUDIO */ | ||
195 | 2, /* VIDEO */ | ||
196 | 3, /* VANC */ | ||
197 | 4, /* HANC */ | ||
198 | NOT_SUPPORTED /* ir_index */ | ||
199 | } | ||
200 | } | ||
201 | , | ||
202 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
203 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
204 | NOT_SUPPORTED} | ||
205 | } | ||
206 | , | ||
207 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
208 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
209 | NOT_SUPPORTED} | ||
210 | } | ||
211 | } | ||
212 | , | ||
213 | /* full-speed */ | ||
214 | { | ||
215 | { | ||
216 | 0, /* config index */ | ||
217 | { | ||
218 | 0, /* interrupt ep index */ | ||
219 | NOT_SUPPORTED, /* ts1 index */ | ||
220 | NOT_SUPPORTED, /* TS2 index */ | ||
221 | 1, /* AUDIO */ | ||
222 | 2, /* VIDEO */ | ||
223 | NOT_SUPPORTED, /* VANC */ | ||
224 | NOT_SUPPORTED, /* HANC */ | ||
225 | NOT_SUPPORTED /* ir_index */ | ||
226 | } | ||
227 | } | ||
228 | , | ||
229 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
230 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
231 | NOT_SUPPORTED} | ||
232 | } | ||
233 | , | ||
234 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
235 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
236 | NOT_SUPPORTED} | ||
237 | } | ||
238 | } | ||
239 | } | ||
240 | , | ||
241 | |||
242 | { | ||
243 | INDEX_SELFPOWER_DUAL, /* index */ | ||
244 | USB_SELF_POWER, /* power_type */ | ||
245 | 0, /* speed , not decide yet */ | ||
246 | /* mode ,analog tv and digital path */ | ||
247 | MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL, | ||
248 | 0, /* ts1_source,will update in register */ | ||
249 | NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */ | ||
250 | 0, /* analog source need update */ | ||
251 | 0, /* digital_index */ | ||
252 | 0, /* analog index */ | ||
253 | 0, /* dif_index */ | ||
254 | 0, /* external_index */ | ||
255 | 1, /* only one configuration */ | ||
256 | { | ||
257 | { | ||
258 | 0, /* config index */ | ||
259 | { | ||
260 | 0, /* interrupt ep index */ | ||
261 | 1, /* ts1 index */ | ||
262 | NOT_SUPPORTED, /* TS2 index */ | ||
263 | 2, /* AUDIO */ | ||
264 | 3, /* VIDEO */ | ||
265 | 4, /* VANC */ | ||
266 | 5, /* HANC */ | ||
267 | NOT_SUPPORTED /* ir_index */ | ||
268 | } | ||
269 | } | ||
270 | , | ||
271 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
272 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
273 | NOT_SUPPORTED} | ||
274 | } | ||
275 | , | ||
276 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
277 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
278 | NOT_SUPPORTED} | ||
279 | } | ||
280 | } | ||
281 | , | ||
282 | /* full-speed */ | ||
283 | { | ||
284 | { | ||
285 | 0, /* config index */ | ||
286 | { | ||
287 | 0, /* interrupt ep index */ | ||
288 | 1, /* ts1 index */ | ||
289 | NOT_SUPPORTED, /* TS2 index */ | ||
290 | 2, /* AUDIO */ | ||
291 | 3, /* VIDEO */ | ||
292 | NOT_SUPPORTED, /* VANC */ | ||
293 | NOT_SUPPORTED, /* HANC */ | ||
294 | NOT_SUPPORTED /* ir_index */ | ||
295 | } | ||
296 | } | ||
297 | , | ||
298 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
299 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
300 | NOT_SUPPORTED} | ||
301 | } | ||
302 | , | ||
303 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
304 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
305 | NOT_SUPPORTED} | ||
306 | } | ||
307 | } | ||
308 | } | ||
309 | , | ||
310 | |||
311 | { | ||
312 | INDEX_SELFPOWER_TRIPLE, /* index */ | ||
313 | USB_SELF_POWER, /* power_type */ | ||
314 | 0, /* speed , not decide yet */ | ||
315 | /* mode ,analog tv and digital path */ | ||
316 | MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL, | ||
317 | 0, /* ts1_source, update in register */ | ||
318 | 0, /* ts2_source,update in register */ | ||
319 | 0, /* analog source, need update */ | ||
320 | |||
321 | 0, /* digital_index */ | ||
322 | 0, /* analog index */ | ||
323 | 0, /* dif_index */ | ||
324 | 0, /* external_index */ | ||
325 | 1, /* only one configuration */ | ||
326 | { | ||
327 | { | ||
328 | 0, /* config index */ | ||
329 | { | ||
330 | 0, /* interrupt ep index */ | ||
331 | 1, /* ts1 index */ | ||
332 | 2, /* TS2 index */ | ||
333 | 3, /* AUDIO */ | ||
334 | 4, /* VIDEO */ | ||
335 | 5, /* VANC */ | ||
336 | 6, /* HANC */ | ||
337 | NOT_SUPPORTED /* ir_index */ | ||
338 | } | ||
339 | } | ||
340 | , | ||
341 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
342 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
343 | NOT_SUPPORTED} | ||
344 | } | ||
345 | , | ||
346 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
347 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
348 | NOT_SUPPORTED} | ||
349 | } | ||
350 | } | ||
351 | , | ||
352 | /* full-speed */ | ||
353 | { | ||
354 | { | ||
355 | 0, /* config index */ | ||
356 | { | ||
357 | 0, /* interrupt ep index */ | ||
358 | 1, /* ts1 index */ | ||
359 | 2, /* TS2 index */ | ||
360 | 3, /* AUDIO */ | ||
361 | 4, /* VIDEO */ | ||
362 | NOT_SUPPORTED, /* VANC */ | ||
363 | NOT_SUPPORTED, /* HANC */ | ||
364 | NOT_SUPPORTED /* ir_index */ | ||
365 | } | ||
366 | } | ||
367 | , | ||
368 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
369 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
370 | NOT_SUPPORTED} | ||
371 | } | ||
372 | , | ||
373 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
374 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
375 | NOT_SUPPORTED} | ||
376 | } | ||
377 | } | ||
378 | } | ||
379 | , | ||
380 | |||
381 | { | ||
382 | INDEX_SELFPOWER_COMPRESSOR, /* index */ | ||
383 | USB_SELF_POWER, /* power_type */ | ||
384 | 0, /* speed , not decide yet */ | ||
385 | /* mode ,analog tv AND DIGITAL path */ | ||
386 | MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL, | ||
387 | NOT_SUPPORTED, /* ts1_source, disable */ | ||
388 | SOURCE_TS_BDA, /* ts2_source */ | ||
389 | 0, /* analog source,need update */ | ||
390 | 0, /* digital_index */ | ||
391 | 0, /* analog index */ | ||
392 | 0, /* dif_index */ | ||
393 | 0, /* external_index */ | ||
394 | 1, /* only one configuration */ | ||
395 | { | ||
396 | { | ||
397 | 0, /* config index */ | ||
398 | { | ||
399 | 0, /* interrupt ep index */ | ||
400 | NOT_SUPPORTED, /* ts1 index */ | ||
401 | 1, /* TS2 index */ | ||
402 | 2, /* AUDIO */ | ||
403 | 3, /* VIDEO */ | ||
404 | 4, /* VANC */ | ||
405 | 5, /* HANC */ | ||
406 | NOT_SUPPORTED /* ir_index */ | ||
407 | } | ||
408 | } | ||
409 | , | ||
410 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
411 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
412 | NOT_SUPPORTED} | ||
413 | } | ||
414 | , | ||
415 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
416 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
417 | NOT_SUPPORTED} | ||
418 | } | ||
419 | } | ||
420 | , | ||
421 | /* full-speed */ | ||
422 | { | ||
423 | { | ||
424 | 0, /* config index */ | ||
425 | { | ||
426 | 0, /* interrupt ep index */ | ||
427 | NOT_SUPPORTED, /* ts1 index */ | ||
428 | 1, /* TS2 index */ | ||
429 | 2, /* AUDIO */ | ||
430 | 3, /* VIDEO */ | ||
431 | NOT_SUPPORTED, /* VANC */ | ||
432 | NOT_SUPPORTED, /* HANC */ | ||
433 | NOT_SUPPORTED /* ir_index */ | ||
434 | } | ||
435 | } | ||
436 | , | ||
437 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
438 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
439 | NOT_SUPPORTED} | ||
440 | } | ||
441 | , | ||
442 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
443 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
444 | NOT_SUPPORTED} | ||
445 | } | ||
446 | } | ||
447 | } | ||
448 | , | ||
449 | |||
450 | { | ||
451 | INDEX_BUSPOWER_DIGITAL_ONLY, /* index */ | ||
452 | USB_BUS_POWER, /* power_type */ | ||
453 | 0, /* speed , not decide yet */ | ||
454 | MOD_DIGITAL, /* mode ,analog tv AND DIGITAL path */ | ||
455 | SOURCE_TS_BDA, /* ts1_source, disable */ | ||
456 | NOT_SUPPORTED, /* ts2_source */ | ||
457 | NOT_SUPPORTED, /* analog source */ | ||
458 | |||
459 | 0, /* digital_index */ | ||
460 | 0, /* analog index */ | ||
461 | 0, /* dif_index */ | ||
462 | 0, /* external_index */ | ||
463 | |||
464 | 1, /* only one configuration */ | ||
465 | { | ||
466 | { | ||
467 | 0, /* config index */ | ||
468 | { | ||
469 | 0, /* interrupt ep index = 2 */ | ||
470 | 1, /* ts1 index */ | ||
471 | NOT_SUPPORTED, /* TS2 index */ | ||
472 | NOT_SUPPORTED, /* AUDIO */ | ||
473 | NOT_SUPPORTED, /* VIDEO */ | ||
474 | NOT_SUPPORTED, /* VANC */ | ||
475 | NOT_SUPPORTED, /* HANC */ | ||
476 | NOT_SUPPORTED /* ir_index */ | ||
477 | } | ||
478 | } | ||
479 | , | ||
480 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
481 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
482 | NOT_SUPPORTED} | ||
483 | } | ||
484 | , | ||
485 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
486 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
487 | NOT_SUPPORTED} | ||
488 | } | ||
489 | } | ||
490 | , | ||
491 | /* full-speed */ | ||
492 | { | ||
493 | { | ||
494 | 0, /* config index */ | ||
495 | { | ||
496 | 0, /* interrupt ep index = 2 */ | ||
497 | 1, /* ts1 index */ | ||
498 | NOT_SUPPORTED, /* TS2 index */ | ||
499 | NOT_SUPPORTED, /* AUDIO */ | ||
500 | NOT_SUPPORTED, /* VIDEO */ | ||
501 | NOT_SUPPORTED, /* VANC */ | ||
502 | NOT_SUPPORTED, /* HANC */ | ||
503 | NOT_SUPPORTED /* ir_index */ | ||
504 | } | ||
505 | } | ||
506 | , | ||
507 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
508 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
509 | NOT_SUPPORTED} | ||
510 | } | ||
511 | , | ||
512 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
513 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
514 | NOT_SUPPORTED} | ||
515 | } | ||
516 | } | ||
517 | } | ||
518 | , | ||
519 | { | ||
520 | INDEX_BUSPOWER_ANALOG_ONLY, /* index */ | ||
521 | USB_BUS_POWER, /* power_type */ | ||
522 | 0, /* speed , not decide yet */ | ||
523 | MOD_ANALOG, /* mode ,analog tv AND DIGITAL path */ | ||
524 | NOT_SUPPORTED, /* ts1_source, disable */ | ||
525 | NOT_SUPPORTED, /* ts2_source */ | ||
526 | SOURCE_ANALOG, /* analog source--analog */ | ||
527 | 0, /* digital_index */ | ||
528 | 0, /* analog index */ | ||
529 | 0, /* dif_index */ | ||
530 | 0, /* external_index */ | ||
531 | 1, /* only one configuration */ | ||
532 | { | ||
533 | { | ||
534 | 0, /* config index */ | ||
535 | { | ||
536 | 0, /* interrupt ep index */ | ||
537 | NOT_SUPPORTED, /* ts1 index */ | ||
538 | NOT_SUPPORTED, /* TS2 index */ | ||
539 | 1, /* AUDIO */ | ||
540 | 2, /* VIDEO */ | ||
541 | 3, /* VANC */ | ||
542 | 4, /* HANC */ | ||
543 | NOT_SUPPORTED /* ir_index */ | ||
544 | } | ||
545 | } | ||
546 | , | ||
547 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
548 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
549 | NOT_SUPPORTED} | ||
550 | } | ||
551 | , | ||
552 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
553 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
554 | NOT_SUPPORTED} | ||
555 | } | ||
556 | } | ||
557 | , | ||
558 | { /* full-speed */ | ||
559 | { | ||
560 | 0, /* config index */ | ||
561 | { | ||
562 | 0, /* interrupt ep index */ | ||
563 | NOT_SUPPORTED, /* ts1 index */ | ||
564 | NOT_SUPPORTED, /* TS2 index */ | ||
565 | 1, /* AUDIO */ | ||
566 | 2, /* VIDEO */ | ||
567 | NOT_SUPPORTED, /* VANC */ | ||
568 | NOT_SUPPORTED, /* HANC */ | ||
569 | NOT_SUPPORTED /* ir_index */ | ||
570 | } | ||
571 | } | ||
572 | , | ||
573 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
574 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
575 | NOT_SUPPORTED} | ||
576 | } | ||
577 | , | ||
578 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
579 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
580 | NOT_SUPPORTED} | ||
581 | } | ||
582 | } | ||
583 | } | ||
584 | , | ||
585 | { | ||
586 | INDEX_BUSPOWER_DIF_ONLY, /* index */ | ||
587 | USB_BUS_POWER, /* power_type */ | ||
588 | 0, /* speed , not decide yet */ | ||
589 | /* mode ,analog tv AND DIGITAL path */ | ||
590 | MOD_DIF | MOD_ANALOG | MOD_DIGITAL | MOD_EXTERNAL, | ||
591 | SOURCE_TS_BDA, /* ts1_source, disable */ | ||
592 | NOT_SUPPORTED, /* ts2_source */ | ||
593 | SOURCE_DIF | SOURCE_ANALOG | SOURCE_EXTERNAL, /* analog source, dif */ | ||
594 | 0, /* digital_index */ | ||
595 | 0, /* analog index */ | ||
596 | 0, /* dif_index */ | ||
597 | 0, /* external_index */ | ||
598 | 1, /* only one configuration */ | ||
599 | { | ||
600 | { | ||
601 | 0, /* config index */ | ||
602 | { | ||
603 | 0, /* interrupt ep index */ | ||
604 | 1, /* ts1 index */ | ||
605 | NOT_SUPPORTED, /* TS2 index */ | ||
606 | 2, /* AUDIO */ | ||
607 | 3, /* VIDEO */ | ||
608 | 4, /* VANC */ | ||
609 | 5, /* HANC */ | ||
610 | NOT_SUPPORTED /* ir_index */ | ||
611 | } | ||
612 | } | ||
613 | , | ||
614 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
615 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
616 | NOT_SUPPORTED} | ||
617 | } | ||
618 | , | ||
619 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
620 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
621 | NOT_SUPPORTED} | ||
622 | } | ||
623 | } | ||
624 | , | ||
625 | { /* full speed */ | ||
626 | { | ||
627 | 0, /* config index */ | ||
628 | { | ||
629 | 0, /* interrupt ep index */ | ||
630 | 1, /* ts1 index */ | ||
631 | NOT_SUPPORTED, /* TS2 index */ | ||
632 | 2, /* AUDIO */ | ||
633 | 3, /* VIDEO */ | ||
634 | NOT_SUPPORTED, /* VANC */ | ||
635 | NOT_SUPPORTED, /* HANC */ | ||
636 | NOT_SUPPORTED /* ir_index */ | ||
637 | } | ||
638 | } | ||
639 | , | ||
640 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
641 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
642 | NOT_SUPPORTED} | ||
643 | } | ||
644 | , | ||
645 | {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
646 | NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED, | ||
647 | NOT_SUPPORTED} | ||
648 | } | ||
649 | } | ||
650 | } | ||
651 | , | ||
652 | |||
653 | }; | ||
654 | |||
655 | /*****************************************************************/ | ||
656 | |||
657 | u32 initialize_cx231xx(struct cx231xx *dev) | ||
658 | { | ||
659 | u32 config_info = 0; | ||
660 | struct pcb_config *p_pcb_info; | ||
661 | u8 usb_speed = 1; /* from register,1--HS, 0--FS */ | ||
662 | u8 data[4] = { 0, 0, 0, 0 }; | ||
663 | u32 ts1_source = 0; | ||
664 | u32 ts2_source = 0; | ||
665 | u32 analog_source = 0; | ||
666 | u8 _current_scenario_idx = 0xff; | ||
667 | |||
668 | ts1_source = SOURCE_TS_BDA; | ||
669 | ts2_source = SOURCE_TS_BDA; | ||
670 | |||
671 | /* read board config register to find out which | ||
672 | pcb config it is related to */ | ||
673 | cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT, data, 4); | ||
674 | |||
675 | config_info = *((u32 *) data); | ||
676 | usb_speed = (u8) (config_info & 0x1); | ||
677 | |||
678 | /* Verify this device belongs to Bus power or Self power device */ | ||
679 | if (config_info & BUS_POWER) { /* bus-power */ | ||
680 | switch (config_info & BUSPOWER_MASK) { | ||
681 | case TS1_PORT | BUS_POWER: | ||
682 | cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY].speed = | ||
683 | usb_speed; | ||
684 | p_pcb_info = | ||
685 | &cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY]; | ||
686 | _current_scenario_idx = INDEX_BUSPOWER_DIGITAL_ONLY; | ||
687 | break; | ||
688 | case AVDEC_ENABLE | BUS_POWER: | ||
689 | cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY].speed = | ||
690 | usb_speed; | ||
691 | p_pcb_info = | ||
692 | &cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY]; | ||
693 | _current_scenario_idx = INDEX_BUSPOWER_ANALOG_ONLY; | ||
694 | break; | ||
695 | case AVDEC_ENABLE | BUS_POWER | TS1_PORT: | ||
696 | cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY].speed = | ||
697 | usb_speed; | ||
698 | p_pcb_info = &cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY]; | ||
699 | _current_scenario_idx = INDEX_BUSPOWER_DIF_ONLY; | ||
700 | break; | ||
701 | default: | ||
702 | cx231xx_info("bad config in buspower!!!!\n"); | ||
703 | cx231xx_info("config_info=%x\n", | ||
704 | (config_info & BUSPOWER_MASK)); | ||
705 | return 1; | ||
706 | } | ||
707 | } else { /* self-power */ | ||
708 | |||
709 | switch (config_info & SELFPOWER_MASK) { | ||
710 | case TS1_PORT | SELF_POWER: | ||
711 | cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY].speed = | ||
712 | usb_speed; | ||
713 | p_pcb_info = | ||
714 | &cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY]; | ||
715 | _current_scenario_idx = INDEX_SELFPOWER_DIGITAL_ONLY; | ||
716 | break; | ||
717 | case TS1_TS2_PORT | SELF_POWER: | ||
718 | cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL].speed = | ||
719 | usb_speed; | ||
720 | cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL]. | ||
721 | ts2_source = ts2_source; | ||
722 | p_pcb_info = | ||
723 | &cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL]; | ||
724 | _current_scenario_idx = INDEX_SELFPOWER_DUAL_DIGITAL; | ||
725 | break; | ||
726 | case AVDEC_ENABLE | SELF_POWER: | ||
727 | cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY].speed = | ||
728 | usb_speed; | ||
729 | cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY]. | ||
730 | analog_source = analog_source; | ||
731 | p_pcb_info = | ||
732 | &cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY]; | ||
733 | _current_scenario_idx = INDEX_SELFPOWER_ANALOG_ONLY; | ||
734 | break; | ||
735 | case AVDEC_ENABLE | TS1_PORT | SELF_POWER: | ||
736 | cx231xx_Scenario[INDEX_SELFPOWER_DUAL].speed = | ||
737 | usb_speed; | ||
738 | cx231xx_Scenario[INDEX_SELFPOWER_DUAL].ts1_source = | ||
739 | ts1_source; | ||
740 | cx231xx_Scenario[INDEX_SELFPOWER_DUAL].analog_source = | ||
741 | analog_source; | ||
742 | p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_DUAL]; | ||
743 | _current_scenario_idx = INDEX_SELFPOWER_DUAL; | ||
744 | break; | ||
745 | case AVDEC_ENABLE | TS1_TS2_PORT | SELF_POWER: | ||
746 | cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].speed = | ||
747 | usb_speed; | ||
748 | cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts1_source = | ||
749 | ts1_source; | ||
750 | cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts2_source = | ||
751 | ts2_source; | ||
752 | cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].analog_source = | ||
753 | analog_source; | ||
754 | p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE]; | ||
755 | _current_scenario_idx = INDEX_SELFPOWER_TRIPLE; | ||
756 | break; | ||
757 | case AVDEC_ENABLE | TS1VIP_TS2_PORT | SELF_POWER: | ||
758 | cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR].speed = | ||
759 | usb_speed; | ||
760 | cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR]. | ||
761 | analog_source = analog_source; | ||
762 | p_pcb_info = | ||
763 | &cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR]; | ||
764 | _current_scenario_idx = INDEX_SELFPOWER_COMPRESSOR; | ||
765 | break; | ||
766 | default: | ||
767 | cx231xx_info("bad senario!!!!!\n"); | ||
768 | cx231xx_info("config_info=%x\n", | ||
769 | (config_info & SELFPOWER_MASK)); | ||
770 | return 1; | ||
771 | } | ||
772 | } | ||
773 | |||
774 | dev->current_scenario_idx = _current_scenario_idx; | ||
775 | |||
776 | memcpy(&dev->current_pcb_config, p_pcb_info, | ||
777 | sizeof(struct pcb_config)); | ||
778 | |||
779 | if (pcb_debug) { | ||
780 | cx231xx_info("SC(0x00) register = 0x%x\n", config_info); | ||
781 | cx231xx_info("scenario %d\n", | ||
782 | (dev->current_pcb_config.index) + 1); | ||
783 | cx231xx_info("type=%x\n", dev->current_pcb_config.type); | ||
784 | cx231xx_info("mode=%x\n", dev->current_pcb_config.mode); | ||
785 | cx231xx_info("speed=%x\n", dev->current_pcb_config.speed); | ||
786 | cx231xx_info("ts1_source=%x\n", | ||
787 | dev->current_pcb_config.ts1_source); | ||
788 | cx231xx_info("ts2_source=%x\n", | ||
789 | dev->current_pcb_config.ts2_source); | ||
790 | cx231xx_info("analog_source=%x\n", | ||
791 | dev->current_pcb_config.analog_source); | ||
792 | } | ||
793 | |||
794 | return 0; | ||
795 | } | ||