Path: blob/master/drivers/media/video/cx231xx/cx231xx-pcb-cfg.c
17995 views
/*1cx231xx-pcb-config.c - driver for Conexant2Cx23100/101/102 USB video capture devices34Copyright (C) 2008 <srinivasa.deevi at conexant dot com>56This program is free software; you can redistribute it and/or modify7it under the terms of the GNU General Public License as published by8the Free Software Foundation; either version 2 of the License, or9(at your option) any later version.1011This program is distributed in the hope that it will be useful,12but WITHOUT ANY WARRANTY; without even the implied warranty of13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the14GNU General Public License for more details.1516You should have received a copy of the GNU General Public License17along with this program; if not, write to the Free Software18Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.19*/2021#include "cx231xx.h"22#include "cx231xx-conf-reg.h"2324static unsigned int pcb_debug;25module_param(pcb_debug, int, 0644);26MODULE_PARM_DESC(pcb_debug, "enable pcb config debug messages [video]");2728/******************************************************************************/2930struct pcb_config cx231xx_Scenario[] = {31{32INDEX_SELFPOWER_DIGITAL_ONLY, /* index */33USB_SELF_POWER, /* power_type */340, /* speed , not decide yet */35MOD_DIGITAL, /* mode */36SOURCE_TS_BDA, /* ts1_source, digital tv only */37NOT_SUPPORTED, /* ts2_source */38NOT_SUPPORTED, /* analog source */39400, /* digital_index */410, /* analog index */420, /* dif_index */430, /* external_index */44451, /* only one configuration */46{47{480, /* config index */49{500, /* interrupt ep index */511, /* ts1 index */52NOT_SUPPORTED, /* TS2 index */53NOT_SUPPORTED, /* AUDIO */54NOT_SUPPORTED, /* VIDEO */55NOT_SUPPORTED, /* VANC */56NOT_SUPPORTED, /* HANC */57NOT_SUPPORTED /* ir_index */58}59,60}61,62{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,63NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,64NOT_SUPPORTED}65}66,67{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,68NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,69NOT_SUPPORTED}70}71}72,73/* full-speed config */74{75{760, /* config index */77{780, /* interrupt ep index */791, /* ts1 index */80NOT_SUPPORTED, /* TS2 index */81NOT_SUPPORTED, /* AUDIO */82NOT_SUPPORTED, /* VIDEO */83NOT_SUPPORTED, /* VANC */84NOT_SUPPORTED, /* HANC */85NOT_SUPPORTED /* ir_index */86}87}88,89{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,90NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,91NOT_SUPPORTED}92}93,94{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,95NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,96NOT_SUPPORTED}97}98}99}100,101102{103INDEX_SELFPOWER_DUAL_DIGITAL, /* index */104USB_SELF_POWER, /* power_type */1050, /* speed , not decide yet */106MOD_DIGITAL, /* mode */107SOURCE_TS_BDA, /* ts1_source, digital tv only */1080, /* ts2_source,need update from register */109NOT_SUPPORTED, /* analog source */1100, /* digital_index */1110, /* analog index */1120, /* dif_index */1130, /* external_index */1141151, /* only one configuration */116{117{1180, /* config index */119{1200, /* interrupt ep index */1211, /* ts1 index */1222, /* TS2 index */123NOT_SUPPORTED, /* AUDIO */124NOT_SUPPORTED, /* VIDEO */125NOT_SUPPORTED, /* VANC */126NOT_SUPPORTED, /* HANC */127NOT_SUPPORTED /* ir_index */128}129}130,131{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,132NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,133NOT_SUPPORTED}134}135,136{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,137NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,138NOT_SUPPORTED}139}140}141,142/* full-speed */143{144{1450, /* config index */146{1470, /* interrupt ep index */1481, /* ts1 index */1492, /* TS2 index */150NOT_SUPPORTED, /* AUDIO */151NOT_SUPPORTED, /* VIDEO */152NOT_SUPPORTED, /* VANC */153NOT_SUPPORTED, /* HANC */154NOT_SUPPORTED /* ir_index */155}156}157,158{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,159NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,160NOT_SUPPORTED}161}162,163{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,164NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,165NOT_SUPPORTED}166}167}168}169,170171{172INDEX_SELFPOWER_ANALOG_ONLY, /* index */173USB_SELF_POWER, /* power_type */1740, /* speed , not decide yet */175MOD_ANALOG | MOD_DIF | MOD_EXTERNAL, /* mode ,analog tv only */176NOT_SUPPORTED, /* ts1_source, NOT SUPPORT */177NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */1780, /* analog source, need update */1791800, /* digital_index */1810, /* analog index */1820, /* dif_index */1830, /* external_index */1841851, /* only one configuration */186{187{1880, /* config index */189{1900, /* interrupt ep index */191NOT_SUPPORTED, /* ts1 index */192NOT_SUPPORTED, /* TS2 index */1931, /* AUDIO */1942, /* VIDEO */1953, /* VANC */1964, /* HANC */197NOT_SUPPORTED /* ir_index */198}199}200,201{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,202NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,203NOT_SUPPORTED}204}205,206{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,207NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,208NOT_SUPPORTED}209}210}211,212/* full-speed */213{214{2150, /* config index */216{2170, /* interrupt ep index */218NOT_SUPPORTED, /* ts1 index */219NOT_SUPPORTED, /* TS2 index */2201, /* AUDIO */2212, /* VIDEO */222NOT_SUPPORTED, /* VANC */223NOT_SUPPORTED, /* HANC */224NOT_SUPPORTED /* ir_index */225}226}227,228{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,229NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,230NOT_SUPPORTED}231}232,233{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,234NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,235NOT_SUPPORTED}236}237}238}239,240241{242INDEX_SELFPOWER_DUAL, /* index */243USB_SELF_POWER, /* power_type */2440, /* speed , not decide yet */245/* mode ,analog tv and digital path */246MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,2470, /* ts1_source,will update in register */248NOT_SUPPORTED, /* ts2_source,NOT SUPPORT */2490, /* analog source need update */2500, /* digital_index */2510, /* analog index */2520, /* dif_index */2530, /* external_index */2541, /* only one configuration */255{256{2570, /* config index */258{2590, /* interrupt ep index */2601, /* ts1 index */261NOT_SUPPORTED, /* TS2 index */2622, /* AUDIO */2633, /* VIDEO */2644, /* VANC */2655, /* HANC */266NOT_SUPPORTED /* ir_index */267}268}269,270{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,271NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,272NOT_SUPPORTED}273}274,275{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,276NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,277NOT_SUPPORTED}278}279}280,281/* full-speed */282{283{2840, /* config index */285{2860, /* interrupt ep index */2871, /* ts1 index */288NOT_SUPPORTED, /* TS2 index */2892, /* AUDIO */2903, /* VIDEO */291NOT_SUPPORTED, /* VANC */292NOT_SUPPORTED, /* HANC */293NOT_SUPPORTED /* ir_index */294}295}296,297{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,298NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,299NOT_SUPPORTED}300}301,302{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,303NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,304NOT_SUPPORTED}305}306}307}308,309310{311INDEX_SELFPOWER_TRIPLE, /* index */312USB_SELF_POWER, /* power_type */3130, /* speed , not decide yet */314/* mode ,analog tv and digital path */315MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,3160, /* ts1_source, update in register */3170, /* ts2_source,update in register */3180, /* analog source, need update */3193200, /* digital_index */3210, /* analog index */3220, /* dif_index */3230, /* external_index */3241, /* only one configuration */325{326{3270, /* config index */328{3290, /* interrupt ep index */3301, /* ts1 index */3312, /* TS2 index */3323, /* AUDIO */3334, /* VIDEO */3345, /* VANC */3356, /* HANC */336NOT_SUPPORTED /* ir_index */337}338}339,340{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,341NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,342NOT_SUPPORTED}343}344,345{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,346NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,347NOT_SUPPORTED}348}349}350,351/* full-speed */352{353{3540, /* config index */355{3560, /* interrupt ep index */3571, /* ts1 index */3582, /* TS2 index */3593, /* AUDIO */3604, /* VIDEO */361NOT_SUPPORTED, /* VANC */362NOT_SUPPORTED, /* HANC */363NOT_SUPPORTED /* ir_index */364}365}366,367{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,368NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,369NOT_SUPPORTED}370}371,372{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,373NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,374NOT_SUPPORTED}375}376}377}378,379380{381INDEX_SELFPOWER_COMPRESSOR, /* index */382USB_SELF_POWER, /* power_type */3830, /* speed , not decide yet */384/* mode ,analog tv AND DIGITAL path */385MOD_ANALOG | MOD_DIF | MOD_DIGITAL | MOD_EXTERNAL,386NOT_SUPPORTED, /* ts1_source, disable */387SOURCE_TS_BDA, /* ts2_source */3880, /* analog source,need update */3890, /* digital_index */3900, /* analog index */3910, /* dif_index */3920, /* external_index */3931, /* only one configuration */394{395{3960, /* config index */397{3980, /* interrupt ep index */399NOT_SUPPORTED, /* ts1 index */4001, /* TS2 index */4012, /* AUDIO */4023, /* VIDEO */4034, /* VANC */4045, /* HANC */405NOT_SUPPORTED /* ir_index */406}407}408,409{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,410NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,411NOT_SUPPORTED}412}413,414{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,415NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,416NOT_SUPPORTED}417}418}419,420/* full-speed */421{422{4230, /* config index */424{4250, /* interrupt ep index */426NOT_SUPPORTED, /* ts1 index */4271, /* TS2 index */4282, /* AUDIO */4293, /* VIDEO */430NOT_SUPPORTED, /* VANC */431NOT_SUPPORTED, /* HANC */432NOT_SUPPORTED /* ir_index */433}434}435,436{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,437NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,438NOT_SUPPORTED}439}440,441{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,442NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,443NOT_SUPPORTED}444}445}446}447,448449{450INDEX_BUSPOWER_DIGITAL_ONLY, /* index */451USB_BUS_POWER, /* power_type */4520, /* speed , not decide yet */453MOD_DIGITAL, /* mode ,analog tv AND DIGITAL path */454SOURCE_TS_BDA, /* ts1_source, disable */455NOT_SUPPORTED, /* ts2_source */456NOT_SUPPORTED, /* analog source */4574580, /* digital_index */4590, /* analog index */4600, /* dif_index */4610, /* external_index */4624631, /* only one configuration */464{465{4660, /* config index */467{4680, /* interrupt ep index = 2 */4691, /* ts1 index */470NOT_SUPPORTED, /* TS2 index */471NOT_SUPPORTED, /* AUDIO */472NOT_SUPPORTED, /* VIDEO */473NOT_SUPPORTED, /* VANC */474NOT_SUPPORTED, /* HANC */475NOT_SUPPORTED /* ir_index */476}477}478,479{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,480NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,481NOT_SUPPORTED}482}483,484{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,485NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,486NOT_SUPPORTED}487}488}489,490/* full-speed */491{492{4930, /* config index */494{4950, /* interrupt ep index = 2 */4961, /* ts1 index */497NOT_SUPPORTED, /* TS2 index */498NOT_SUPPORTED, /* AUDIO */499NOT_SUPPORTED, /* VIDEO */500NOT_SUPPORTED, /* VANC */501NOT_SUPPORTED, /* HANC */502NOT_SUPPORTED /* ir_index */503}504}505,506{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,507NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,508NOT_SUPPORTED}509}510,511{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,512NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,513NOT_SUPPORTED}514}515}516}517,518{519INDEX_BUSPOWER_ANALOG_ONLY, /* index */520USB_BUS_POWER, /* power_type */5210, /* speed , not decide yet */522MOD_ANALOG, /* mode ,analog tv AND DIGITAL path */523NOT_SUPPORTED, /* ts1_source, disable */524NOT_SUPPORTED, /* ts2_source */525SOURCE_ANALOG, /* analog source--analog */5260, /* digital_index */5270, /* analog index */5280, /* dif_index */5290, /* external_index */5301, /* only one configuration */531{532{5330, /* config index */534{5350, /* interrupt ep index */536NOT_SUPPORTED, /* ts1 index */537NOT_SUPPORTED, /* TS2 index */5381, /* AUDIO */5392, /* VIDEO */5403, /* VANC */5414, /* HANC */542NOT_SUPPORTED /* ir_index */543}544}545,546{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,547NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,548NOT_SUPPORTED}549}550,551{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,552NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,553NOT_SUPPORTED}554}555}556,557{ /* full-speed */558{5590, /* config index */560{5610, /* interrupt ep index */562NOT_SUPPORTED, /* ts1 index */563NOT_SUPPORTED, /* TS2 index */5641, /* AUDIO */5652, /* VIDEO */566NOT_SUPPORTED, /* VANC */567NOT_SUPPORTED, /* HANC */568NOT_SUPPORTED /* ir_index */569}570}571,572{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,573NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,574NOT_SUPPORTED}575}576,577{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,578NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,579NOT_SUPPORTED}580}581}582}583,584{585INDEX_BUSPOWER_DIF_ONLY, /* index */586USB_BUS_POWER, /* power_type */5870, /* speed , not decide yet */588/* mode ,analog tv AND DIGITAL path */589MOD_DIF | MOD_ANALOG | MOD_DIGITAL | MOD_EXTERNAL,590SOURCE_TS_BDA, /* ts1_source, disable */591NOT_SUPPORTED, /* ts2_source */592SOURCE_DIF | SOURCE_ANALOG | SOURCE_EXTERNAL, /* analog source, dif */5930, /* digital_index */5940, /* analog index */5950, /* dif_index */5960, /* external_index */5971, /* only one configuration */598{599{6000, /* config index */601{6020, /* interrupt ep index */6031, /* ts1 index */604NOT_SUPPORTED, /* TS2 index */6052, /* AUDIO */6063, /* VIDEO */6074, /* VANC */6085, /* HANC */609NOT_SUPPORTED /* ir_index */610}611}612,613{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,614NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,615NOT_SUPPORTED}616}617,618{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,619NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,620NOT_SUPPORTED}621}622}623,624{ /* full speed */625{6260, /* config index */627{6280, /* interrupt ep index */6291, /* ts1 index */630NOT_SUPPORTED, /* TS2 index */6312, /* AUDIO */6323, /* VIDEO */633NOT_SUPPORTED, /* VANC */634NOT_SUPPORTED, /* HANC */635NOT_SUPPORTED /* ir_index */636}637}638,639{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,640NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,641NOT_SUPPORTED}642}643,644{NOT_SUPPORTED, {NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,645NOT_SUPPORTED, NOT_SUPPORTED, NOT_SUPPORTED,646NOT_SUPPORTED}647}648}649}650,651652};653654/*****************************************************************/655656u32 initialize_cx231xx(struct cx231xx *dev)657{658u32 config_info = 0;659struct pcb_config *p_pcb_info;660u8 usb_speed = 1; /* from register,1--HS, 0--FS */661u8 data[4] = { 0, 0, 0, 0 };662u32 ts1_source = 0;663u32 ts2_source = 0;664u32 analog_source = 0;665u8 _current_scenario_idx = 0xff;666667ts1_source = SOURCE_TS_BDA;668ts2_source = SOURCE_TS_BDA;669670/* read board config register to find out which671pcb config it is related to */672cx231xx_read_ctrl_reg(dev, VRT_GET_REGISTER, BOARD_CFG_STAT, data, 4);673674config_info = *((u32 *) data);675usb_speed = (u8) (config_info & 0x1);676677/* Verify this device belongs to Bus power or Self power device */678if (config_info & BUS_POWER) { /* bus-power */679switch (config_info & BUSPOWER_MASK) {680case TS1_PORT | BUS_POWER:681cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY].speed =682usb_speed;683p_pcb_info =684&cx231xx_Scenario[INDEX_BUSPOWER_DIGITAL_ONLY];685_current_scenario_idx = INDEX_BUSPOWER_DIGITAL_ONLY;686break;687case AVDEC_ENABLE | BUS_POWER:688cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY].speed =689usb_speed;690p_pcb_info =691&cx231xx_Scenario[INDEX_BUSPOWER_ANALOG_ONLY];692_current_scenario_idx = INDEX_BUSPOWER_ANALOG_ONLY;693break;694case AVDEC_ENABLE | BUS_POWER | TS1_PORT:695cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY].speed =696usb_speed;697p_pcb_info = &cx231xx_Scenario[INDEX_BUSPOWER_DIF_ONLY];698_current_scenario_idx = INDEX_BUSPOWER_DIF_ONLY;699break;700default:701cx231xx_info("bad config in buspower!!!!\n");702cx231xx_info("config_info=%x\n",703(config_info & BUSPOWER_MASK));704return 1;705}706} else { /* self-power */707708switch (config_info & SELFPOWER_MASK) {709case TS1_PORT | SELF_POWER:710cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY].speed =711usb_speed;712p_pcb_info =713&cx231xx_Scenario[INDEX_SELFPOWER_DIGITAL_ONLY];714_current_scenario_idx = INDEX_SELFPOWER_DIGITAL_ONLY;715break;716case TS1_TS2_PORT | SELF_POWER:717cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL].speed =718usb_speed;719cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL].720ts2_source = ts2_source;721p_pcb_info =722&cx231xx_Scenario[INDEX_SELFPOWER_DUAL_DIGITAL];723_current_scenario_idx = INDEX_SELFPOWER_DUAL_DIGITAL;724break;725case AVDEC_ENABLE | SELF_POWER:726cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY].speed =727usb_speed;728cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY].729analog_source = analog_source;730p_pcb_info =731&cx231xx_Scenario[INDEX_SELFPOWER_ANALOG_ONLY];732_current_scenario_idx = INDEX_SELFPOWER_ANALOG_ONLY;733break;734case AVDEC_ENABLE | TS1_PORT | SELF_POWER:735cx231xx_Scenario[INDEX_SELFPOWER_DUAL].speed =736usb_speed;737cx231xx_Scenario[INDEX_SELFPOWER_DUAL].ts1_source =738ts1_source;739cx231xx_Scenario[INDEX_SELFPOWER_DUAL].analog_source =740analog_source;741p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_DUAL];742_current_scenario_idx = INDEX_SELFPOWER_DUAL;743break;744case AVDEC_ENABLE | TS1_TS2_PORT | SELF_POWER:745cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].speed =746usb_speed;747cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts1_source =748ts1_source;749cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].ts2_source =750ts2_source;751cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE].analog_source =752analog_source;753p_pcb_info = &cx231xx_Scenario[INDEX_SELFPOWER_TRIPLE];754_current_scenario_idx = INDEX_SELFPOWER_TRIPLE;755break;756case AVDEC_ENABLE | TS1VIP_TS2_PORT | SELF_POWER:757cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR].speed =758usb_speed;759cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR].760analog_source = analog_source;761p_pcb_info =762&cx231xx_Scenario[INDEX_SELFPOWER_COMPRESSOR];763_current_scenario_idx = INDEX_SELFPOWER_COMPRESSOR;764break;765default:766cx231xx_info("bad senario!!!!!\n");767cx231xx_info("config_info=%x\n",768(config_info & SELFPOWER_MASK));769return 1;770}771}772773dev->current_scenario_idx = _current_scenario_idx;774775memcpy(&dev->current_pcb_config, p_pcb_info,776sizeof(struct pcb_config));777778if (pcb_debug) {779cx231xx_info("SC(0x00) register = 0x%x\n", config_info);780cx231xx_info("scenario %d\n",781(dev->current_pcb_config.index) + 1);782cx231xx_info("type=%x\n", dev->current_pcb_config.type);783cx231xx_info("mode=%x\n", dev->current_pcb_config.mode);784cx231xx_info("speed=%x\n", dev->current_pcb_config.speed);785cx231xx_info("ts1_source=%x\n",786dev->current_pcb_config.ts1_source);787cx231xx_info("ts2_source=%x\n",788dev->current_pcb_config.ts2_source);789cx231xx_info("analog_source=%x\n",790dev->current_pcb_config.analog_source);791}792793return 0;794}795796797