1*74ba9207SThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
20c0d06caSMauro Carvalho Chehab /*
30c0d06caSMauro Carvalho Chehab cx231xx-pcb-config.c - driver for Conexant
40c0d06caSMauro Carvalho Chehab Cx23100/101/102 USB video capture devices
50c0d06caSMauro Carvalho Chehab
60c0d06caSMauro Carvalho Chehab Copyright (C) 2008 <srinivasa.deevi at conexant dot com>
70c0d06caSMauro Carvalho Chehab
80c0d06caSMauro Carvalho Chehab */
90c0d06caSMauro Carvalho Chehab
100c0d06caSMauro Carvalho Chehab #include "cx231xx.h"
110c0d06caSMauro Carvalho Chehab #include "cx231xx-conf-reg.h"
120c0d06caSMauro Carvalho Chehab
130c0d06caSMauro Carvalho Chehab static unsigned int pcb_debug;
140c0d06caSMauro Carvalho Chehab module_param(pcb_debug, int, 0644);
150c0d06caSMauro Carvalho Chehab MODULE_PARM_DESC(pcb_debug, "enable pcb config debug messages [video]");
160c0d06caSMauro Carvalho Chehab
170c0d06caSMauro Carvalho Chehab /******************************************************************************/
180c0d06caSMauro Carvalho Chehab
19eb9678c4SHans Verkuil static struct pcb_config cx231xx_Scenario[] = {
200c0d06caSMauro Carvalho Chehab {
210c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_DIGITAL_ONLY, /* index */
220c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
230c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
240c0d06caSMauro Carvalho Chehab MOD_DIGITAL, /* mode */
250c0d06caSMauro Carvalho Chehab SOURCE_TS_BDA, /* ts1_source, digital tv only */
260c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source */
270c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* analog source */
280c0d06caSMauro Carvalho Chehab
290c0d06caSMauro Carvalho Chehab 0, /* digital_index */
300c0d06caSMauro Carvalho Chehab 0, /* analog index */
310c0d06caSMauro Carvalho Chehab 0, /* dif_index */
320c0d06caSMauro Carvalho Chehab 0, /* external_index */
330c0d06caSMauro Carvalho Chehab
340c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
350c0d06caSMauro Carvalho Chehab {
360c0d06caSMauro Carvalho Chehab {
370c0d06caSMauro Carvalho Chehab 0, /* config index */
380c0d06caSMauro Carvalho Chehab {
390c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
400c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
410c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
420c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
430c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
440c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
450c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
460c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
470c0d06caSMauro Carvalho Chehab }
480c0d06caSMauro Carvalho Chehab ,
490c0d06caSMauro Carvalho Chehab }
500c0d06caSMauro Carvalho Chehab ,
510c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
520c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
530c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
540c0d06caSMauro Carvalho Chehab }
550c0d06caSMauro Carvalho Chehab ,
560c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
570c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
580c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
590c0d06caSMauro Carvalho Chehab }
600c0d06caSMauro Carvalho Chehab }
610c0d06caSMauro Carvalho Chehab ,
620c0d06caSMauro Carvalho Chehab /* full-speed config */
630c0d06caSMauro Carvalho Chehab {
640c0d06caSMauro Carvalho Chehab {
650c0d06caSMauro Carvalho Chehab 0, /* config index */
660c0d06caSMauro Carvalho Chehab {
670c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
680c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
690c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
700c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
710c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
720c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
730c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
740c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
750c0d06caSMauro Carvalho Chehab }
760c0d06caSMauro Carvalho Chehab }
770c0d06caSMauro Carvalho Chehab ,
780c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
790c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
800c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
810c0d06caSMauro Carvalho Chehab }
820c0d06caSMauro Carvalho Chehab ,
830c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
840c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
850c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
860c0d06caSMauro Carvalho Chehab }
870c0d06caSMauro Carvalho Chehab }
880c0d06caSMauro Carvalho Chehab }
890c0d06caSMauro Carvalho Chehab ,
900c0d06caSMauro Carvalho Chehab
910c0d06caSMauro Carvalho Chehab {
920c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_DUAL_DIGITAL, /* index */
930c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
940c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
950c0d06caSMauro Carvalho Chehab MOD_DIGITAL, /* mode */
960c0d06caSMauro Carvalho Chehab SOURCE_TS_BDA, /* ts1_source, digital tv only */
970c0d06caSMauro Carvalho Chehab 0, /* ts2_source,need update from register */
980c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* analog source */
990c0d06caSMauro Carvalho Chehab 0, /* digital_index */
1000c0d06caSMauro Carvalho Chehab 0, /* analog index */
1010c0d06caSMauro Carvalho Chehab 0, /* dif_index */
1020c0d06caSMauro Carvalho Chehab 0, /* external_index */
1030c0d06caSMauro Carvalho Chehab
1040c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
1050c0d06caSMauro Carvalho Chehab {
1060c0d06caSMauro Carvalho Chehab {
1070c0d06caSMauro Carvalho Chehab 0, /* config index */
1080c0d06caSMauro Carvalho Chehab {
1090c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
1100c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
1110c0d06caSMauro Carvalho Chehab 2, /* TS2 index */
1120c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
1130c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
1140c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
1150c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
1160c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
1170c0d06caSMauro Carvalho Chehab }
1180c0d06caSMauro Carvalho Chehab }
1190c0d06caSMauro Carvalho Chehab ,
1200c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1210c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1220c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1230c0d06caSMauro Carvalho Chehab }
1240c0d06caSMauro Carvalho Chehab ,
1250c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1260c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1270c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1280c0d06caSMauro Carvalho Chehab }
1290c0d06caSMauro Carvalho Chehab }
1300c0d06caSMauro Carvalho Chehab ,
1310c0d06caSMauro Carvalho Chehab /* full-speed */
1320c0d06caSMauro Carvalho Chehab {
1330c0d06caSMauro Carvalho Chehab {
1340c0d06caSMauro Carvalho Chehab 0, /* config index */
1350c0d06caSMauro Carvalho Chehab {
1360c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
1370c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
1380c0d06caSMauro Carvalho Chehab 2, /* TS2 index */
1390c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
1400c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
1410c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
1420c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
1430c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
1440c0d06caSMauro Carvalho Chehab }
1450c0d06caSMauro Carvalho Chehab }
1460c0d06caSMauro Carvalho Chehab ,
1470c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1480c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1490c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1500c0d06caSMauro Carvalho Chehab }
1510c0d06caSMauro Carvalho Chehab ,
1520c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1530c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1540c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1550c0d06caSMauro Carvalho Chehab }
1560c0d06caSMauro Carvalho Chehab }
1570c0d06caSMauro Carvalho Chehab }
1580c0d06caSMauro Carvalho Chehab ,
1590c0d06caSMauro Carvalho Chehab
1600c0d06caSMauro Carvalho Chehab {
1610c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_ANALOG_ONLY, /* index */
1620c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
1630c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
1640c0d06caSMauro Carvalho Chehab MOD_ANALOG | MOD_DIF | MOD_EXTERNAL, /* mode ,analog tv only */
1650c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1_source, NOT SUPPORT */
1660c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */
1670c0d06caSMauro Carvalho Chehab 0, /* analog source, need update */
1680c0d06caSMauro Carvalho Chehab
1690c0d06caSMauro Carvalho Chehab 0, /* digital_index */
1700c0d06caSMauro Carvalho Chehab 0, /* analog index */
1710c0d06caSMauro Carvalho Chehab 0, /* dif_index */
1720c0d06caSMauro Carvalho Chehab 0, /* external_index */
1730c0d06caSMauro Carvalho Chehab
1740c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
1750c0d06caSMauro Carvalho Chehab {
1760c0d06caSMauro Carvalho Chehab {
1770c0d06caSMauro Carvalho Chehab 0, /* config index */
1780c0d06caSMauro Carvalho Chehab {
1790c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
1800c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
1810c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
1820c0d06caSMauro Carvalho Chehab 1, /* AUDIO */
1830c0d06caSMauro Carvalho Chehab 2, /* VIDEO */
1840c0d06caSMauro Carvalho Chehab 3, /* VANC */
1850c0d06caSMauro Carvalho Chehab 4, /* HANC */
1860c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
1870c0d06caSMauro Carvalho Chehab }
1880c0d06caSMauro Carvalho Chehab }
1890c0d06caSMauro Carvalho Chehab ,
1900c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1910c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1920c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1930c0d06caSMauro Carvalho Chehab }
1940c0d06caSMauro Carvalho Chehab ,
1950c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1960c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
1970c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
1980c0d06caSMauro Carvalho Chehab }
1990c0d06caSMauro Carvalho Chehab }
2000c0d06caSMauro Carvalho Chehab ,
2010c0d06caSMauro Carvalho Chehab /* full-speed */
2020c0d06caSMauro Carvalho Chehab {
2030c0d06caSMauro Carvalho Chehab {
2040c0d06caSMauro Carvalho Chehab 0, /* config index */
2050c0d06caSMauro Carvalho Chehab {
2060c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
2070c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
2080c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
2090c0d06caSMauro Carvalho Chehab 1, /* AUDIO */
2100c0d06caSMauro Carvalho Chehab 2, /* VIDEO */
2110c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
2120c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
2130c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
2140c0d06caSMauro Carvalho Chehab }
2150c0d06caSMauro Carvalho Chehab }
2160c0d06caSMauro Carvalho Chehab ,
2170c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2180c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2190c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2200c0d06caSMauro Carvalho Chehab }
2210c0d06caSMauro Carvalho Chehab ,
2220c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2230c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2240c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2250c0d06caSMauro Carvalho Chehab }
2260c0d06caSMauro Carvalho Chehab }
2270c0d06caSMauro Carvalho Chehab }
2280c0d06caSMauro Carvalho Chehab ,
2290c0d06caSMauro Carvalho Chehab
2300c0d06caSMauro Carvalho Chehab {
2310c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_DUAL, /* index */
2320c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
2330c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
2340c0d06caSMauro Carvalho Chehab /* mode ,analog tv and digital path */
2350c0d06caSMauro Carvalho Chehab MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,
2360c0d06caSMauro Carvalho Chehab 0, /* ts1_source,will update in register */
2370c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */
2380c0d06caSMauro Carvalho Chehab 0, /* analog source need update */
2390c0d06caSMauro Carvalho Chehab 0, /* digital_index */
2400c0d06caSMauro Carvalho Chehab 0, /* analog index */
2410c0d06caSMauro Carvalho Chehab 0, /* dif_index */
2420c0d06caSMauro Carvalho Chehab 0, /* external_index */
2430c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
2440c0d06caSMauro Carvalho Chehab {
2450c0d06caSMauro Carvalho Chehab {
2460c0d06caSMauro Carvalho Chehab 0, /* config index */
2470c0d06caSMauro Carvalho Chehab {
2480c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
2490c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
2500c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
2510c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
2520c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
2530c0d06caSMauro Carvalho Chehab 4, /* VANC */
2540c0d06caSMauro Carvalho Chehab 5, /* HANC */
2550c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
2560c0d06caSMauro Carvalho Chehab }
2570c0d06caSMauro Carvalho Chehab }
2580c0d06caSMauro Carvalho Chehab ,
2590c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2600c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2610c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2620c0d06caSMauro Carvalho Chehab }
2630c0d06caSMauro Carvalho Chehab ,
2640c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2650c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2660c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2670c0d06caSMauro Carvalho Chehab }
2680c0d06caSMauro Carvalho Chehab }
2690c0d06caSMauro Carvalho Chehab ,
2700c0d06caSMauro Carvalho Chehab /* full-speed */
2710c0d06caSMauro Carvalho Chehab {
2720c0d06caSMauro Carvalho Chehab {
2730c0d06caSMauro Carvalho Chehab 0, /* config index */
2740c0d06caSMauro Carvalho Chehab {
2750c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
2760c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
2770c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
2780c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
2790c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
2800c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
2810c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
2820c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
2830c0d06caSMauro Carvalho Chehab }
2840c0d06caSMauro Carvalho Chehab }
2850c0d06caSMauro Carvalho Chehab ,
2860c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2870c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2880c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2890c0d06caSMauro Carvalho Chehab }
2900c0d06caSMauro Carvalho Chehab ,
2910c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2920c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
2930c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
2940c0d06caSMauro Carvalho Chehab }
2950c0d06caSMauro Carvalho Chehab }
2960c0d06caSMauro Carvalho Chehab }
2970c0d06caSMauro Carvalho Chehab ,
2980c0d06caSMauro Carvalho Chehab
2990c0d06caSMauro Carvalho Chehab {
3000c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_TRIPLE, /* index */
3010c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
3020c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
3030c0d06caSMauro Carvalho Chehab /* mode ,analog tv and digital path */
3040c0d06caSMauro Carvalho Chehab MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,
3050c0d06caSMauro Carvalho Chehab 0, /* ts1_source, update in register */
3060c0d06caSMauro Carvalho Chehab 0, /* ts2_source,update in register */
3070c0d06caSMauro Carvalho Chehab 0, /* analog source, need update */
3080c0d06caSMauro Carvalho Chehab
3090c0d06caSMauro Carvalho Chehab 0, /* digital_index */
3100c0d06caSMauro Carvalho Chehab 0, /* analog index */
3110c0d06caSMauro Carvalho Chehab 0, /* dif_index */
3120c0d06caSMauro Carvalho Chehab 0, /* external_index */
3130c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
3140c0d06caSMauro Carvalho Chehab {
3150c0d06caSMauro Carvalho Chehab {
3160c0d06caSMauro Carvalho Chehab 0, /* config index */
3170c0d06caSMauro Carvalho Chehab {
3180c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
3190c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
3200c0d06caSMauro Carvalho Chehab 2, /* TS2 index */
3210c0d06caSMauro Carvalho Chehab 3, /* AUDIO */
3220c0d06caSMauro Carvalho Chehab 4, /* VIDEO */
3230c0d06caSMauro Carvalho Chehab 5, /* VANC */
3240c0d06caSMauro Carvalho Chehab 6, /* HANC */
3250c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
3260c0d06caSMauro Carvalho Chehab }
3270c0d06caSMauro Carvalho Chehab }
3280c0d06caSMauro Carvalho Chehab ,
3290c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3300c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3310c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
3320c0d06caSMauro Carvalho Chehab }
3330c0d06caSMauro Carvalho Chehab ,
3340c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3350c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3360c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
3370c0d06caSMauro Carvalho Chehab }
3380c0d06caSMauro Carvalho Chehab }
3390c0d06caSMauro Carvalho Chehab ,
3400c0d06caSMauro Carvalho Chehab /* full-speed */
3410c0d06caSMauro Carvalho Chehab {
3420c0d06caSMauro Carvalho Chehab {
3430c0d06caSMauro Carvalho Chehab 0, /* config index */
3440c0d06caSMauro Carvalho Chehab {
3450c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
3460c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
3470c0d06caSMauro Carvalho Chehab 2, /* TS2 index */
3480c0d06caSMauro Carvalho Chehab 3, /* AUDIO */
3490c0d06caSMauro Carvalho Chehab 4, /* VIDEO */
3500c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
3510c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
3520c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
3530c0d06caSMauro Carvalho Chehab }
3540c0d06caSMauro Carvalho Chehab }
3550c0d06caSMauro Carvalho Chehab ,
3560c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3570c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3580c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
3590c0d06caSMauro Carvalho Chehab }
3600c0d06caSMauro Carvalho Chehab ,
3610c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3620c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3630c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
3640c0d06caSMauro Carvalho Chehab }
3650c0d06caSMauro Carvalho Chehab }
3660c0d06caSMauro Carvalho Chehab }
3670c0d06caSMauro Carvalho Chehab ,
3680c0d06caSMauro Carvalho Chehab
3690c0d06caSMauro Carvalho Chehab {
3700c0d06caSMauro Carvalho Chehab INDEX_SELFPOWER_COMPRESSOR, /* index */
3710c0d06caSMauro Carvalho Chehab USB_SELF_POWER, /* power_type */
3720c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
3730c0d06caSMauro Carvalho Chehab /* mode ,analog tv AND DIGITAL path */
3740c0d06caSMauro Carvalho Chehab MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,
3750c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1_source, disable */
3760c0d06caSMauro Carvalho Chehab SOURCE_TS_BDA, /* ts2_source */
3770c0d06caSMauro Carvalho Chehab 0, /* analog source,need update */
3780c0d06caSMauro Carvalho Chehab 0, /* digital_index */
3790c0d06caSMauro Carvalho Chehab 0, /* analog index */
3800c0d06caSMauro Carvalho Chehab 0, /* dif_index */
3810c0d06caSMauro Carvalho Chehab 0, /* external_index */
3820c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
3830c0d06caSMauro Carvalho Chehab {
3840c0d06caSMauro Carvalho Chehab {
3850c0d06caSMauro Carvalho Chehab 0, /* config index */
3860c0d06caSMauro Carvalho Chehab {
3870c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
3880c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
3890c0d06caSMauro Carvalho Chehab 1, /* TS2 index */
3900c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
3910c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
3920c0d06caSMauro Carvalho Chehab 4, /* VANC */
3930c0d06caSMauro Carvalho Chehab 5, /* HANC */
3940c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
3950c0d06caSMauro Carvalho Chehab }
3960c0d06caSMauro Carvalho Chehab }
3970c0d06caSMauro Carvalho Chehab ,
3980c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
3990c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4000c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4010c0d06caSMauro Carvalho Chehab }
4020c0d06caSMauro Carvalho Chehab ,
4030c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4040c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4050c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4060c0d06caSMauro Carvalho Chehab }
4070c0d06caSMauro Carvalho Chehab }
4080c0d06caSMauro Carvalho Chehab ,
4090c0d06caSMauro Carvalho Chehab /* full-speed */
4100c0d06caSMauro Carvalho Chehab {
4110c0d06caSMauro Carvalho Chehab {
4120c0d06caSMauro Carvalho Chehab 0, /* config index */
4130c0d06caSMauro Carvalho Chehab {
4140c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
4150c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
4160c0d06caSMauro Carvalho Chehab 1, /* TS2 index */
4170c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
4180c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
4190c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
4200c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
4210c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
4220c0d06caSMauro Carvalho Chehab }
4230c0d06caSMauro Carvalho Chehab }
4240c0d06caSMauro Carvalho Chehab ,
4250c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4260c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4270c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4280c0d06caSMauro Carvalho Chehab }
4290c0d06caSMauro Carvalho Chehab ,
4300c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4310c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4320c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4330c0d06caSMauro Carvalho Chehab }
4340c0d06caSMauro Carvalho Chehab }
4350c0d06caSMauro Carvalho Chehab }
4360c0d06caSMauro Carvalho Chehab ,
4370c0d06caSMauro Carvalho Chehab
4380c0d06caSMauro Carvalho Chehab {
4390c0d06caSMauro Carvalho Chehab INDEX_BUSPOWER_DIGITAL_ONLY, /* index */
4400c0d06caSMauro Carvalho Chehab USB_BUS_POWER, /* power_type */
4410c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
4420c0d06caSMauro Carvalho Chehab MOD_DIGITAL, /* mode ,analog tv AND DIGITAL path */
4430c0d06caSMauro Carvalho Chehab SOURCE_TS_BDA, /* ts1_source, disable */
4440c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source */
4450c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* analog source */
4460c0d06caSMauro Carvalho Chehab
4470c0d06caSMauro Carvalho Chehab 0, /* digital_index */
4480c0d06caSMauro Carvalho Chehab 0, /* analog index */
4490c0d06caSMauro Carvalho Chehab 0, /* dif_index */
4500c0d06caSMauro Carvalho Chehab 0, /* external_index */
4510c0d06caSMauro Carvalho Chehab
4520c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
4530c0d06caSMauro Carvalho Chehab {
4540c0d06caSMauro Carvalho Chehab {
4550c0d06caSMauro Carvalho Chehab 0, /* config index */
4560c0d06caSMauro Carvalho Chehab {
4570c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index = 2 */
4580c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
4590c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
4600c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
4610c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
4620c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
4630c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
4640c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
4650c0d06caSMauro Carvalho Chehab }
4660c0d06caSMauro Carvalho Chehab }
4670c0d06caSMauro Carvalho Chehab ,
4680c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4690c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4700c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4710c0d06caSMauro Carvalho Chehab }
4720c0d06caSMauro Carvalho Chehab ,
4730c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4740c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4750c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4760c0d06caSMauro Carvalho Chehab }
4770c0d06caSMauro Carvalho Chehab }
4780c0d06caSMauro Carvalho Chehab ,
4790c0d06caSMauro Carvalho Chehab /* full-speed */
4800c0d06caSMauro Carvalho Chehab {
4810c0d06caSMauro Carvalho Chehab {
4820c0d06caSMauro Carvalho Chehab 0, /* config index */
4830c0d06caSMauro Carvalho Chehab {
4840c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index = 2 */
4850c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
4860c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
4870c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* AUDIO */
4880c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VIDEO */
4890c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
4900c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
4910c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
4920c0d06caSMauro Carvalho Chehab }
4930c0d06caSMauro Carvalho Chehab }
4940c0d06caSMauro Carvalho Chehab ,
4950c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4960c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
4970c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
4980c0d06caSMauro Carvalho Chehab }
4990c0d06caSMauro Carvalho Chehab ,
5000c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5010c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5020c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
5030c0d06caSMauro Carvalho Chehab }
5040c0d06caSMauro Carvalho Chehab }
5050c0d06caSMauro Carvalho Chehab }
5060c0d06caSMauro Carvalho Chehab ,
5070c0d06caSMauro Carvalho Chehab {
5080c0d06caSMauro Carvalho Chehab INDEX_BUSPOWER_ANALOG_ONLY, /* index */
5090c0d06caSMauro Carvalho Chehab USB_BUS_POWER, /* power_type */
5100c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
5110c0d06caSMauro Carvalho Chehab MOD_ANALOG, /* mode ,analog tv AND DIGITAL path */
5120c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1_source, disable */
5130c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source */
5140c0d06caSMauro Carvalho Chehab SOURCE_ANALOG, /* analog source--analog */
5150c0d06caSMauro Carvalho Chehab 0, /* digital_index */
5160c0d06caSMauro Carvalho Chehab 0, /* analog index */
5170c0d06caSMauro Carvalho Chehab 0, /* dif_index */
5180c0d06caSMauro Carvalho Chehab 0, /* external_index */
5190c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
5200c0d06caSMauro Carvalho Chehab {
5210c0d06caSMauro Carvalho Chehab {
5220c0d06caSMauro Carvalho Chehab 0, /* config index */
5230c0d06caSMauro Carvalho Chehab {
5240c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
5250c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
5260c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
5270c0d06caSMauro Carvalho Chehab 1, /* AUDIO */
5280c0d06caSMauro Carvalho Chehab 2, /* VIDEO */
5290c0d06caSMauro Carvalho Chehab 3, /* VANC */
5300c0d06caSMauro Carvalho Chehab 4, /* HANC */
5310c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
5320c0d06caSMauro Carvalho Chehab }
5330c0d06caSMauro Carvalho Chehab }
5340c0d06caSMauro Carvalho Chehab ,
5350c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5360c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5370c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
5380c0d06caSMauro Carvalho Chehab }
5390c0d06caSMauro Carvalho Chehab ,
5400c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5410c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5420c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
5430c0d06caSMauro Carvalho Chehab }
5440c0d06caSMauro Carvalho Chehab }
5450c0d06caSMauro Carvalho Chehab ,
5460c0d06caSMauro Carvalho Chehab { /* full-speed */
5470c0d06caSMauro Carvalho Chehab {
5480c0d06caSMauro Carvalho Chehab 0, /* config index */
5490c0d06caSMauro Carvalho Chehab {
5500c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
5510c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts1 index */
5520c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
5530c0d06caSMauro Carvalho Chehab 1, /* AUDIO */
5540c0d06caSMauro Carvalho Chehab 2, /* VIDEO */
5550c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
5560c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
5570c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
5580c0d06caSMauro Carvalho Chehab }
5590c0d06caSMauro Carvalho Chehab }
5600c0d06caSMauro Carvalho Chehab ,
5610c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5620c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5630c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
5640c0d06caSMauro Carvalho Chehab }
5650c0d06caSMauro Carvalho Chehab ,
5660c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5670c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
5680c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
5690c0d06caSMauro Carvalho Chehab }
5700c0d06caSMauro Carvalho Chehab }
5710c0d06caSMauro Carvalho Chehab }
5720c0d06caSMauro Carvalho Chehab ,
5730c0d06caSMauro Carvalho Chehab {
5740c0d06caSMauro Carvalho Chehab INDEX_BUSPOWER_DIF_ONLY, /* index */
5750c0d06caSMauro Carvalho Chehab USB_BUS_POWER, /* power_type */
5760c0d06caSMauro Carvalho Chehab 0, /* speed , not decide yet */
5770c0d06caSMauro Carvalho Chehab /* mode ,analog tv AND DIGITAL path */
5780c0d06caSMauro Carvalho Chehab MOD_DIF | MOD_ANALOG | MOD_DIGITAL | MOD_EXTERNAL,
5790c0d06caSMauro Carvalho Chehab SOURCE_TS_BDA, /* ts1_source, disable */
5800c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* ts2_source */
5810c0d06caSMauro Carvalho Chehab SOURCE_DIF | SOURCE_ANALOG | SOURCE_EXTERNAL, /* analog source, dif */
5820c0d06caSMauro Carvalho Chehab 0, /* digital_index */
5830c0d06caSMauro Carvalho Chehab 0, /* analog index */
5840c0d06caSMauro Carvalho Chehab 0, /* dif_index */
5850c0d06caSMauro Carvalho Chehab 0, /* external_index */
5860c0d06caSMauro Carvalho Chehab 1, /* only one configuration */
5870c0d06caSMauro Carvalho Chehab {
5880c0d06caSMauro Carvalho Chehab {
5890c0d06caSMauro Carvalho Chehab 0, /* config index */
5900c0d06caSMauro Carvalho Chehab {
5910c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
5920c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
5930c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
5940c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
5950c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
5960c0d06caSMauro Carvalho Chehab 4, /* VANC */
5970c0d06caSMauro Carvalho Chehab 5, /* HANC */
5980c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
5990c0d06caSMauro Carvalho Chehab }
6000c0d06caSMauro Carvalho Chehab }
6010c0d06caSMauro Carvalho Chehab ,
6020c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6030c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6040c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
6050c0d06caSMauro Carvalho Chehab }
6060c0d06caSMauro Carvalho Chehab ,
6070c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6080c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6090c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
6100c0d06caSMauro Carvalho Chehab }
6110c0d06caSMauro Carvalho Chehab }
6120c0d06caSMauro Carvalho Chehab ,
6130c0d06caSMauro Carvalho Chehab { /* full speed */
6140c0d06caSMauro Carvalho Chehab {
6150c0d06caSMauro Carvalho Chehab 0, /* config index */
6160c0d06caSMauro Carvalho Chehab {
6170c0d06caSMauro Carvalho Chehab 0, /* interrupt ep index */
6180c0d06caSMauro Carvalho Chehab 1, /* ts1 index */
6190c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* TS2 index */
6200c0d06caSMauro Carvalho Chehab 2, /* AUDIO */
6210c0d06caSMauro Carvalho Chehab 3, /* VIDEO */
6220c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* VANC */
6230c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, /* HANC */
6240c0d06caSMauro Carvalho Chehab NOT_SUPPORTED /* ir_index */
6250c0d06caSMauro Carvalho Chehab }
6260c0d06caSMauro Carvalho Chehab }
6270c0d06caSMauro Carvalho Chehab ,
6280c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6290c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6300c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
6310c0d06caSMauro Carvalho Chehab }
6320c0d06caSMauro Carvalho Chehab ,
6330c0d06caSMauro Carvalho Chehab {NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6340c0d06caSMauro Carvalho Chehab NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,
6350c0d06caSMauro Carvalho Chehab NOT_SUPPORTED}
6360c0d06caSMauro Carvalho Chehab }
6370c0d06caSMauro Carvalho Chehab }
6380c0d06caSMauro Carvalho Chehab }
6390c0d06caSMauro Carvalho Chehab ,
6400c0d06caSMauro Carvalho Chehab
6410c0d06caSMauro Carvalho Chehab };
6420c0d06caSMauro Carvalho Chehab
6430c0d06caSMauro Carvalho Chehab /*****************************************************************/
6440c0d06caSMauro Carvalho Chehab
initialize_cx231xx(struct cx231xx * dev)64552841e5eSMauro Carvalho Chehab int initialize_cx231xx(struct cx231xx *dev)
6460c0d06caSMauro Carvalho Chehab {
64752841e5eSMauro Carvalho Chehab int retval;
6480c0d06caSMauro Carvalho Chehab u32 config_info = 0;
6490c0d06caSMauro Carvalho Chehab struct pcb_config *p_pcb_info;
6500c0d06caSMauro Carvalho Chehab u8 usb_speed = 1; /* from register,1--HS, 0--FS */
6510c0d06caSMauro Carvalho Chehab u8 data[4] = { 0, 0, 0, 0 };
6520c0d06caSMauro Carvalho Chehab u32 ts1_source = 0;
6530c0d06caSMauro Carvalho Chehab u32 ts2_source = 0;
6540c0d06caSMauro Carvalho Chehab u32 analog_source = 0;
6550c0d06caSMauro Carvalho Chehab u8 _current_scenario_idx = 0xff;
6560c0d06caSMauro Carvalho Chehab
6570c0d06caSMauro Carvalho Chehab ts1_source = SOURCE_TS_BDA;
6580c0d06caSMauro Carvalho Chehab ts2_source = SOURCE_TS_BDA;
6590c0d06caSMauro Carvalho Chehab
6600c0d06caSMauro Carvalho Chehab /* read board config register to find out which
6610c0d06caSMauro Carvalho Chehab pcb config it is related to */
66252841e5eSMauro Carvalho Chehab retval = cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT,
66352841e5eSMauro Carvalho Chehab data, 4);
66452841e5eSMauro Carvalho Chehab if (retval < 0)
66552841e5eSMauro Carvalho Chehab return retval;
6660c0d06caSMauro Carvalho Chehab
667eb9678c4SHans Verkuil config_info = le32_to_cpu(*((__le32 *)data));
6680c0d06caSMauro Carvalho Chehab usb_speed = (u8) (config_info & 0x1);
6690c0d06caSMauro Carvalho Chehab
6700c0d06caSMauro Carvalho Chehab /* Verify this device belongs to Bus power or Self power device */
6710c0d06caSMauro Carvalho Chehab if (config_info & BUS_POWER) { /* bus-power */
6720c0d06caSMauro Carvalho Chehab switch (config_info & BUSPOWER_MASK) {
6730c0d06caSMauro Carvalho Chehab case TS1_PORT | BUS_POWER:
6740c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY].speed =
6750c0d06caSMauro Carvalho Chehab usb_speed;
6760c0d06caSMauro Carvalho Chehab p_pcb_info =
6770c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY];
6780c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_BUSPOWER_DIGITAL_ONLY;
6790c0d06caSMauro Carvalho Chehab break;
6800c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | BUS_POWER:
6810c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY].speed =
6820c0d06caSMauro Carvalho Chehab usb_speed;
6830c0d06caSMauro Carvalho Chehab p_pcb_info =
6840c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY];
6850c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_BUSPOWER_ANALOG_ONLY;
6860c0d06caSMauro Carvalho Chehab break;
6870c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | BUS_POWER | TS1_PORT:
6880c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY].speed =
6890c0d06caSMauro Carvalho Chehab usb_speed;
6900c0d06caSMauro Carvalho Chehab p_pcb_info = &cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY];
6910c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_BUSPOWER_DIF_ONLY;
6920c0d06caSMauro Carvalho Chehab break;
6930c0d06caSMauro Carvalho Chehab default:
694336fea92SMauro Carvalho Chehab dev_err(dev->dev,
695b7085c08SMauro Carvalho Chehab "bad config in buspower!!!!\nconfig_info=%x\n",
696ed0e3729SMauro Carvalho Chehab config_info & BUSPOWER_MASK);
6970c0d06caSMauro Carvalho Chehab return 1;
6980c0d06caSMauro Carvalho Chehab }
6990c0d06caSMauro Carvalho Chehab } else { /* self-power */
7000c0d06caSMauro Carvalho Chehab
7010c0d06caSMauro Carvalho Chehab switch (config_info & SELFPOWER_MASK) {
7020c0d06caSMauro Carvalho Chehab case TS1_PORT | SELF_POWER:
7030c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY].speed =
7040c0d06caSMauro Carvalho Chehab usb_speed;
7050c0d06caSMauro Carvalho Chehab p_pcb_info =
7060c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY];
7070c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_DIGITAL_ONLY;
7080c0d06caSMauro Carvalho Chehab break;
7090c0d06caSMauro Carvalho Chehab case TS1_TS2_PORT | SELF_POWER:
7100c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL].speed =
7110c0d06caSMauro Carvalho Chehab usb_speed;
7120c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL].
7130c0d06caSMauro Carvalho Chehab ts2_source = ts2_source;
7140c0d06caSMauro Carvalho Chehab p_pcb_info =
7150c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL];
7160c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_DUAL_DIGITAL;
7170c0d06caSMauro Carvalho Chehab break;
7180c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | SELF_POWER:
7190c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY].speed =
7200c0d06caSMauro Carvalho Chehab usb_speed;
7210c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY].
7220c0d06caSMauro Carvalho Chehab analog_source = analog_source;
7230c0d06caSMauro Carvalho Chehab p_pcb_info =
7240c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY];
7250c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_ANALOG_ONLY;
7260c0d06caSMauro Carvalho Chehab break;
7270c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | TS1_PORT | SELF_POWER:
7280c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DUAL].speed =
7290c0d06caSMauro Carvalho Chehab usb_speed;
7300c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DUAL].ts1_source =
7310c0d06caSMauro Carvalho Chehab ts1_source;
7320c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_DUAL].analog_source =
7330c0d06caSMauro Carvalho Chehab analog_source;
7340c0d06caSMauro Carvalho Chehab p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_DUAL];
7350c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_DUAL;
7360c0d06caSMauro Carvalho Chehab break;
7370c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | TS1_TS2_PORT | SELF_POWER:
7380c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].speed =
7390c0d06caSMauro Carvalho Chehab usb_speed;
7400c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts1_source =
7410c0d06caSMauro Carvalho Chehab ts1_source;
7420c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts2_source =
7430c0d06caSMauro Carvalho Chehab ts2_source;
7440c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].analog_source =
7450c0d06caSMauro Carvalho Chehab analog_source;
7460c0d06caSMauro Carvalho Chehab p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE];
7470c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_TRIPLE;
7480c0d06caSMauro Carvalho Chehab break;
7490c0d06caSMauro Carvalho Chehab case AVDEC_ENABLE | TS1VIP_TS2_PORT | SELF_POWER:
7500c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR].speed =
7510c0d06caSMauro Carvalho Chehab usb_speed;
7520c0d06caSMauro Carvalho Chehab cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR].
7530c0d06caSMauro Carvalho Chehab analog_source = analog_source;
7540c0d06caSMauro Carvalho Chehab p_pcb_info =
7550c0d06caSMauro Carvalho Chehab &cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR];
7560c0d06caSMauro Carvalho Chehab _current_scenario_idx = INDEX_SELFPOWER_COMPRESSOR;
7570c0d06caSMauro Carvalho Chehab break;
7580c0d06caSMauro Carvalho Chehab default:
759336fea92SMauro Carvalho Chehab dev_err(dev->dev,
7606ce6a8efSColin Ian King "bad scenario!!!!!\nconfig_info=%x\n",
761ed0e3729SMauro Carvalho Chehab config_info & SELFPOWER_MASK);
76252841e5eSMauro Carvalho Chehab return -ENODEV;
7630c0d06caSMauro Carvalho Chehab }
7640c0d06caSMauro Carvalho Chehab }
7650c0d06caSMauro Carvalho Chehab
7660c0d06caSMauro Carvalho Chehab dev->current_scenario_idx = _current_scenario_idx;
7670c0d06caSMauro Carvalho Chehab
7680c0d06caSMauro Carvalho Chehab memcpy(&dev->current_pcb_config, p_pcb_info,
7690c0d06caSMauro Carvalho Chehab sizeof(struct pcb_config));
7700c0d06caSMauro Carvalho Chehab
7710c0d06caSMauro Carvalho Chehab if (pcb_debug) {
772336fea92SMauro Carvalho Chehab dev_info(dev->dev,
773b7085c08SMauro Carvalho Chehab "SC(0x00) register = 0x%x\n", config_info);
774336fea92SMauro Carvalho Chehab dev_info(dev->dev,
775b7085c08SMauro Carvalho Chehab "scenario %d\n",
7760c0d06caSMauro Carvalho Chehab (dev->current_pcb_config.index) + 1);
777336fea92SMauro Carvalho Chehab dev_info(dev->dev,
778b7085c08SMauro Carvalho Chehab "type=%x\n",
779b7085c08SMauro Carvalho Chehab dev->current_pcb_config.type);
780336fea92SMauro Carvalho Chehab dev_info(dev->dev,
781b7085c08SMauro Carvalho Chehab "mode=%x\n",
782b7085c08SMauro Carvalho Chehab dev->current_pcb_config.mode);
783336fea92SMauro Carvalho Chehab dev_info(dev->dev,
784b7085c08SMauro Carvalho Chehab "speed=%x\n",
785b7085c08SMauro Carvalho Chehab dev->current_pcb_config.speed);
786336fea92SMauro Carvalho Chehab dev_info(dev->dev,
787b7085c08SMauro Carvalho Chehab "ts1_source=%x\n",
7880c0d06caSMauro Carvalho Chehab dev->current_pcb_config.ts1_source);
789336fea92SMauro Carvalho Chehab dev_info(dev->dev,
790b7085c08SMauro Carvalho Chehab "ts2_source=%x\n",
7910c0d06caSMauro Carvalho Chehab dev->current_pcb_config.ts2_source);
792336fea92SMauro Carvalho Chehab dev_info(dev->dev,
793b7085c08SMauro Carvalho Chehab "analog_source=%x\n",
7940c0d06caSMauro Carvalho Chehab dev->current_pcb_config.analog_source);
7950c0d06caSMauro Carvalho Chehab }
7960c0d06caSMauro Carvalho Chehab
7970c0d06caSMauro Carvalho Chehab return 0;
7980c0d06caSMauro Carvalho Chehab }
799