Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
media
usb
cx231xx
cx231xx-pcb-cfg.c
Go to the documentation of this file.
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
}
Generated on Thu Jan 10 2013 13:51:04 for Linux Kernel by
1.8.2