root/drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. initialize_cx231xx

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

/* [<][>][^][v][top][bottom][index][help] */