xref: /openbmc/linux/drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c (revision 58e16d792a6a8c6b750f637a4649967fcac853dc)
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