aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorTrent Piepho <xyzzy@speakeasy.org>2009-01-28 19:32:59 -0500
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-03-30 11:42:47 -0400
commit4c548d4b28c0c65938914b2790fd2ca2e9c61d63 (patch)
tree6ec0824e97063c13e7fa73f6d439aeba5e608d24 /drivers/media
parentabb0362f49c361f71b5aa6d244d4847145ed53c1 (diff)
V4L/DVB (10561): bttv: store card database more efficiently
The bttv card database is quite large and the data structure used to store it wasn't very efficient. Most of the field are only used at card initialization time so it doesn't matter if they aren't efficient to access. Overall the changes reduce code size by 60 bytes in ia32. The data size is decreased by 5024 byes. It is probably even more for 64-bit kernels. Move the fields in the struct around to be sorted from largest to smallest. This saves on padding space used for alignment. Get rid of the unused digital_mode field. Leave the setting as a comment in the few cards entries that set it, in case someone ever writes the code. Get rid of the unused audio_inputs field. Leave the values in the card entries in case someone ever writes code that might use it. Get ride of the unused radio_addr field. No card entries even set it to anything interesting so it's not left as comments. All the code that used it was removed in commit v2.6.14-3466-g291d1d7 from Nov 8th 2005. Reduce video_inputs to u8 as no card has more than 255 inputs (the most is 16). Change tuner_addr to u8. I2C addresses are only seven bits and 255 means ADDR_UNSET, so everything fits. Make has_radio a one bit flag. Make the pll setting a two bit field. Reduce svhs to four bits as no card has an s-video input above 9. Change the value for no s-video input from UNSET (which is -1U and out of range of four bits) to NO_SVHS (which is now 15). Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c626
-rw-r--r--drivers/media/video/bt8xx/bttv.h40
2 files changed, 249 insertions, 417 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index edf8d2505f0b..f49e6e686628 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -320,17 +320,15 @@ struct tvcard bttv_tvcards[] = {
320 [BTTV_BOARD_UNKNOWN] = { 320 [BTTV_BOARD_UNKNOWN] = {
321 .name = " *** UNKNOWN/GENERIC *** ", 321 .name = " *** UNKNOWN/GENERIC *** ",
322 .video_inputs = 4, 322 .video_inputs = 4,
323 .audio_inputs = 1,
324 .svhs = 2, 323 .svhs = 2,
325 .muxsel = { 2, 3, 1, 0 }, 324 .muxsel = { 2, 3, 1, 0 },
326 .tuner_type = UNSET, 325 .tuner_type = UNSET,
327 .tuner_addr = ADDR_UNSET, 326 .tuner_addr = ADDR_UNSET,
328 .radio_addr = ADDR_UNSET,
329 }, 327 },
330 [BTTV_BOARD_MIRO] = { 328 [BTTV_BOARD_MIRO] = {
331 .name = "MIRO PCTV", 329 .name = "MIRO PCTV",
332 .video_inputs = 4, 330 .video_inputs = 4,
333 .audio_inputs = 1, 331 /* .audio_inputs= 1, */
334 .svhs = 2, 332 .svhs = 2,
335 .gpiomask = 15, 333 .gpiomask = 15,
336 .muxsel = { 2, 3, 1, 1 }, 334 .muxsel = { 2, 3, 1, 1 },
@@ -339,12 +337,11 @@ struct tvcard bttv_tvcards[] = {
339 .needs_tvaudio = 1, 337 .needs_tvaudio = 1,
340 .tuner_type = UNSET, 338 .tuner_type = UNSET,
341 .tuner_addr = ADDR_UNSET, 339 .tuner_addr = ADDR_UNSET,
342 .radio_addr = ADDR_UNSET,
343 }, 340 },
344 [BTTV_BOARD_HAUPPAUGE] = { 341 [BTTV_BOARD_HAUPPAUGE] = {
345 .name = "Hauppauge (bt848)", 342 .name = "Hauppauge (bt848)",
346 .video_inputs = 4, 343 .video_inputs = 4,
347 .audio_inputs = 1, 344 /* .audio_inputs= 1, */
348 .svhs = 2, 345 .svhs = 2,
349 .gpiomask = 7, 346 .gpiomask = 7,
350 .muxsel = { 2, 3, 1, 1 }, 347 .muxsel = { 2, 3, 1, 1 },
@@ -353,12 +350,11 @@ struct tvcard bttv_tvcards[] = {
353 .needs_tvaudio = 1, 350 .needs_tvaudio = 1,
354 .tuner_type = UNSET, 351 .tuner_type = UNSET,
355 .tuner_addr = ADDR_UNSET, 352 .tuner_addr = ADDR_UNSET,
356 .radio_addr = ADDR_UNSET,
357 }, 353 },
358 [BTTV_BOARD_STB] = { 354 [BTTV_BOARD_STB] = {
359 .name = "STB, Gateway P/N 6000699 (bt848)", 355 .name = "STB, Gateway P/N 6000699 (bt848)",
360 .video_inputs = 3, 356 .video_inputs = 3,
361 .audio_inputs = 1, 357 /* .audio_inputs= 1, */
362 .svhs = 2, 358 .svhs = 2,
363 .gpiomask = 7, 359 .gpiomask = 7,
364 .muxsel = { 2, 3, 1, 1 }, 360 .muxsel = { 2, 3, 1, 1 },
@@ -368,7 +364,6 @@ struct tvcard bttv_tvcards[] = {
368 .needs_tvaudio = 1, 364 .needs_tvaudio = 1,
369 .tuner_type = TUNER_PHILIPS_NTSC, 365 .tuner_type = TUNER_PHILIPS_NTSC,
370 .tuner_addr = ADDR_UNSET, 366 .tuner_addr = ADDR_UNSET,
371 .radio_addr = ADDR_UNSET,
372 .pll = PLL_28, 367 .pll = PLL_28,
373 .has_radio = 1, 368 .has_radio = 1,
374 }, 369 },
@@ -377,7 +372,7 @@ struct tvcard bttv_tvcards[] = {
377 [BTTV_BOARD_INTEL] = { 372 [BTTV_BOARD_INTEL] = {
378 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 373 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
379 .video_inputs = 4, 374 .video_inputs = 4,
380 .audio_inputs = 0, 375 /* .audio_inputs= 0, */
381 .svhs = 2, 376 .svhs = 2,
382 .gpiomask = 0, 377 .gpiomask = 0,
383 .muxsel = { 2, 3, 1, 1 }, 378 .muxsel = { 2, 3, 1, 1 },
@@ -385,12 +380,11 @@ struct tvcard bttv_tvcards[] = {
385 .needs_tvaudio = 0, 380 .needs_tvaudio = 0,
386 .tuner_type = TUNER_ABSENT, 381 .tuner_type = TUNER_ABSENT,
387 .tuner_addr = ADDR_UNSET, 382 .tuner_addr = ADDR_UNSET,
388 .radio_addr = ADDR_UNSET,
389 }, 383 },
390 [BTTV_BOARD_DIAMOND] = { 384 [BTTV_BOARD_DIAMOND] = {
391 .name = "Diamond DTV2000", 385 .name = "Diamond DTV2000",
392 .video_inputs = 4, 386 .video_inputs = 4,
393 .audio_inputs = 1, 387 /* .audio_inputs= 1, */
394 .svhs = 2, 388 .svhs = 2,
395 .gpiomask = 3, 389 .gpiomask = 3,
396 .muxsel = { 2, 3, 1, 0 }, 390 .muxsel = { 2, 3, 1, 0 },
@@ -399,12 +393,11 @@ struct tvcard bttv_tvcards[] = {
399 .needs_tvaudio = 1, 393 .needs_tvaudio = 1,
400 .tuner_type = UNSET, 394 .tuner_type = UNSET,
401 .tuner_addr = ADDR_UNSET, 395 .tuner_addr = ADDR_UNSET,
402 .radio_addr = ADDR_UNSET,
403 }, 396 },
404 [BTTV_BOARD_AVERMEDIA] = { 397 [BTTV_BOARD_AVERMEDIA] = {
405 .name = "AVerMedia TVPhone", 398 .name = "AVerMedia TVPhone",
406 .video_inputs = 3, 399 .video_inputs = 3,
407 .audio_inputs = 1, 400 /* .audio_inputs= 1, */
408 .svhs = 3, 401 .svhs = 3,
409 .muxsel = { 2, 3, 1, 1 }, 402 .muxsel = { 2, 3, 1, 1 },
410 .gpiomask = 0x0f, 403 .gpiomask = 0x0f,
@@ -413,14 +406,13 @@ struct tvcard bttv_tvcards[] = {
413 .needs_tvaudio = 1, 406 .needs_tvaudio = 1,
414 .tuner_type = UNSET, 407 .tuner_type = UNSET,
415 .tuner_addr = ADDR_UNSET, 408 .tuner_addr = ADDR_UNSET,
416 .radio_addr = ADDR_UNSET,
417 .audio_mode_gpio= avermedia_tvphone_audio, 409 .audio_mode_gpio= avermedia_tvphone_audio,
418 .has_remote = 1, 410 .has_remote = 1,
419 }, 411 },
420 [BTTV_BOARD_MATRIX_VISION] = { 412 [BTTV_BOARD_MATRIX_VISION] = {
421 .name = "MATRIX-Vision MV-Delta", 413 .name = "MATRIX-Vision MV-Delta",
422 .video_inputs = 5, 414 .video_inputs = 5,
423 .audio_inputs = 1, 415 /* .audio_inputs= 1, */
424 .svhs = 3, 416 .svhs = 3,
425 .gpiomask = 0, 417 .gpiomask = 0,
426 .muxsel = { 2, 3, 1, 0, 0 }, 418 .muxsel = { 2, 3, 1, 0, 0 },
@@ -428,14 +420,13 @@ struct tvcard bttv_tvcards[] = {
428 .needs_tvaudio = 1, 420 .needs_tvaudio = 1,
429 .tuner_type = TUNER_ABSENT, 421 .tuner_type = TUNER_ABSENT,
430 .tuner_addr = ADDR_UNSET, 422 .tuner_addr = ADDR_UNSET,
431 .radio_addr = ADDR_UNSET,
432 }, 423 },
433 424
434 /* ---- card 0x08 ---------------------------------- */ 425 /* ---- card 0x08 ---------------------------------- */
435 [BTTV_BOARD_FLYVIDEO] = { 426 [BTTV_BOARD_FLYVIDEO] = {
436 .name = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26", 427 .name = "Lifeview FlyVideo II (Bt848) LR26 / MAXI TV Video PCI2 LR26",
437 .video_inputs = 4, 428 .video_inputs = 4,
438 .audio_inputs = 1, 429 /* .audio_inputs= 1, */
439 .svhs = 2, 430 .svhs = 2,
440 .gpiomask = 0xc00, 431 .gpiomask = 0xc00,
441 .muxsel = { 2, 3, 1, 1 }, 432 .muxsel = { 2, 3, 1, 1 },
@@ -445,12 +436,11 @@ struct tvcard bttv_tvcards[] = {
445 .pll = PLL_28, 436 .pll = PLL_28,
446 .tuner_type = UNSET, 437 .tuner_type = UNSET,
447 .tuner_addr = ADDR_UNSET, 438 .tuner_addr = ADDR_UNSET,
448 .radio_addr = ADDR_UNSET,
449 }, 439 },
450 [BTTV_BOARD_TURBOTV] = { 440 [BTTV_BOARD_TURBOTV] = {
451 .name = "IMS/IXmicro TurboTV", 441 .name = "IMS/IXmicro TurboTV",
452 .video_inputs = 3, 442 .video_inputs = 3,
453 .audio_inputs = 1, 443 /* .audio_inputs= 1, */
454 .svhs = 2, 444 .svhs = 2,
455 .gpiomask = 3, 445 .gpiomask = 3,
456 .muxsel = { 2, 3, 1, 1 }, 446 .muxsel = { 2, 3, 1, 1 },
@@ -459,12 +449,11 @@ struct tvcard bttv_tvcards[] = {
459 .pll = PLL_28, 449 .pll = PLL_28,
460 .tuner_type = TUNER_TEMIC_PAL, 450 .tuner_type = TUNER_TEMIC_PAL,
461 .tuner_addr = ADDR_UNSET, 451 .tuner_addr = ADDR_UNSET,
462 .radio_addr = ADDR_UNSET,
463 }, 452 },
464 [BTTV_BOARD_HAUPPAUGE878] = { 453 [BTTV_BOARD_HAUPPAUGE878] = {
465 .name = "Hauppauge (bt878)", 454 .name = "Hauppauge (bt878)",
466 .video_inputs = 4, 455 .video_inputs = 4,
467 .audio_inputs = 1, 456 /* .audio_inputs= 1, */
468 .svhs = 2, 457 .svhs = 2,
469 .gpiomask = 0x0f, /* old: 7 */ 458 .gpiomask = 0x0f, /* old: 7 */
470 .muxsel = { 2, 0, 1, 1 }, 459 .muxsel = { 2, 0, 1, 1 },
@@ -474,12 +463,11 @@ struct tvcard bttv_tvcards[] = {
474 .pll = PLL_28, 463 .pll = PLL_28,
475 .tuner_type = UNSET, 464 .tuner_type = UNSET,
476 .tuner_addr = ADDR_UNSET, 465 .tuner_addr = ADDR_UNSET,
477 .radio_addr = ADDR_UNSET,
478 }, 466 },
479 [BTTV_BOARD_MIROPRO] = { 467 [BTTV_BOARD_MIROPRO] = {
480 .name = "MIRO PCTV pro", 468 .name = "MIRO PCTV pro",
481 .video_inputs = 3, 469 .video_inputs = 3,
482 .audio_inputs = 1, 470 /* .audio_inputs= 1, */
483 .svhs = 2, 471 .svhs = 2,
484 .gpiomask = 0x3014f, 472 .gpiomask = 0x3014f,
485 .muxsel = { 2, 3, 1, 1 }, 473 .muxsel = { 2, 3, 1, 1 },
@@ -488,14 +476,13 @@ struct tvcard bttv_tvcards[] = {
488 .needs_tvaudio = 1, 476 .needs_tvaudio = 1,
489 .tuner_type = UNSET, 477 .tuner_type = UNSET,
490 .tuner_addr = ADDR_UNSET, 478 .tuner_addr = ADDR_UNSET,
491 .radio_addr = ADDR_UNSET,
492 }, 479 },
493 480
494 /* ---- card 0x0c ---------------------------------- */ 481 /* ---- card 0x0c ---------------------------------- */
495 [BTTV_BOARD_ADSTECH_TV] = { 482 [BTTV_BOARD_ADSTECH_TV] = {
496 .name = "ADS Technologies Channel Surfer TV (bt848)", 483 .name = "ADS Technologies Channel Surfer TV (bt848)",
497 .video_inputs = 3, 484 .video_inputs = 3,
498 .audio_inputs = 1, 485 /* .audio_inputs= 1, */
499 .svhs = 2, 486 .svhs = 2,
500 .gpiomask = 15, 487 .gpiomask = 15,
501 .muxsel = { 2, 3, 1, 1 }, 488 .muxsel = { 2, 3, 1, 1 },
@@ -503,12 +490,11 @@ struct tvcard bttv_tvcards[] = {
503 .needs_tvaudio = 1, 490 .needs_tvaudio = 1,
504 .tuner_type = UNSET, 491 .tuner_type = UNSET,
505 .tuner_addr = ADDR_UNSET, 492 .tuner_addr = ADDR_UNSET,
506 .radio_addr = ADDR_UNSET,
507 }, 493 },
508 [BTTV_BOARD_AVERMEDIA98] = { 494 [BTTV_BOARD_AVERMEDIA98] = {
509 .name = "AVerMedia TVCapture 98", 495 .name = "AVerMedia TVCapture 98",
510 .video_inputs = 3, 496 .video_inputs = 3,
511 .audio_inputs = 4, 497 /* .audio_inputs= 4, */
512 .svhs = 2, 498 .svhs = 2,
513 .gpiomask = 15, 499 .gpiomask = 15,
514 .muxsel = { 2, 3, 1, 1 }, 500 .muxsel = { 2, 3, 1, 1 },
@@ -518,14 +504,13 @@ struct tvcard bttv_tvcards[] = {
518 .pll = PLL_28, 504 .pll = PLL_28,
519 .tuner_type = TUNER_PHILIPS_PAL, 505 .tuner_type = TUNER_PHILIPS_PAL,
520 .tuner_addr = ADDR_UNSET, 506 .tuner_addr = ADDR_UNSET,
521 .radio_addr = ADDR_UNSET,
522 .audio_mode_gpio= avermedia_tv_stereo_audio, 507 .audio_mode_gpio= avermedia_tv_stereo_audio,
523 .no_gpioirq = 1, 508 .no_gpioirq = 1,
524 }, 509 },
525 [BTTV_BOARD_VHX] = { 510 [BTTV_BOARD_VHX] = {
526 .name = "Aimslab Video Highway Xtreme (VHX)", 511 .name = "Aimslab Video Highway Xtreme (VHX)",
527 .video_inputs = 3, 512 .video_inputs = 3,
528 .audio_inputs = 1, 513 /* .audio_inputs= 1, */
529 .svhs = 2, 514 .svhs = 2,
530 .gpiomask = 7, 515 .gpiomask = 7,
531 .muxsel = { 2, 3, 1, 1 }, 516 .muxsel = { 2, 3, 1, 1 },
@@ -535,12 +520,11 @@ struct tvcard bttv_tvcards[] = {
535 .pll = PLL_28, 520 .pll = PLL_28,
536 .tuner_type = UNSET, 521 .tuner_type = UNSET,
537 .tuner_addr = ADDR_UNSET, 522 .tuner_addr = ADDR_UNSET,
538 .radio_addr = ADDR_UNSET,
539 }, 523 },
540 [BTTV_BOARD_ZOLTRIX] = { 524 [BTTV_BOARD_ZOLTRIX] = {
541 .name = "Zoltrix TV-Max", 525 .name = "Zoltrix TV-Max",
542 .video_inputs = 3, 526 .video_inputs = 3,
543 .audio_inputs = 1, 527 /* .audio_inputs= 1, */
544 .svhs = 2, 528 .svhs = 2,
545 .gpiomask = 15, 529 .gpiomask = 15,
546 .muxsel = { 2, 3, 1, 1 }, 530 .muxsel = { 2, 3, 1, 1 },
@@ -549,14 +533,13 @@ struct tvcard bttv_tvcards[] = {
549 .needs_tvaudio = 1, 533 .needs_tvaudio = 1,
550 .tuner_type = UNSET, 534 .tuner_type = UNSET,
551 .tuner_addr = ADDR_UNSET, 535 .tuner_addr = ADDR_UNSET,
552 .radio_addr = ADDR_UNSET,
553 }, 536 },
554 537
555 /* ---- card 0x10 ---------------------------------- */ 538 /* ---- card 0x10 ---------------------------------- */
556 [BTTV_BOARD_PIXVIEWPLAYTV] = { 539 [BTTV_BOARD_PIXVIEWPLAYTV] = {
557 .name = "Prolink Pixelview PlayTV (bt878)", 540 .name = "Prolink Pixelview PlayTV (bt878)",
558 .video_inputs = 3, 541 .video_inputs = 3,
559 .audio_inputs = 1, 542 /* .audio_inputs= 1, */
560 .svhs = 2, 543 .svhs = 2,
561 .gpiomask = 0x01fe00, 544 .gpiomask = 0x01fe00,
562 .muxsel = { 2, 3, 1, 1 }, 545 .muxsel = { 2, 3, 1, 1 },
@@ -567,12 +550,11 @@ struct tvcard bttv_tvcards[] = {
567 .pll = PLL_28, 550 .pll = PLL_28,
568 .tuner_type = UNSET, 551 .tuner_type = UNSET,
569 .tuner_addr = ADDR_UNSET, 552 .tuner_addr = ADDR_UNSET,
570 .radio_addr = ADDR_UNSET,
571 }, 553 },
572 [BTTV_BOARD_WINVIEW_601] = { 554 [BTTV_BOARD_WINVIEW_601] = {
573 .name = "Leadtek WinView 601", 555 .name = "Leadtek WinView 601",
574 .video_inputs = 3, 556 .video_inputs = 3,
575 .audio_inputs = 1, 557 /* .audio_inputs= 1, */
576 .svhs = 2, 558 .svhs = 2,
577 .gpiomask = 0x8300f8, 559 .gpiomask = 0x8300f8,
578 .muxsel = { 2, 3, 1, 1,0 }, 560 .muxsel = { 2, 3, 1, 1,0 },
@@ -581,14 +563,13 @@ struct tvcard bttv_tvcards[] = {
581 .needs_tvaudio = 1, 563 .needs_tvaudio = 1,
582 .tuner_type = UNSET, 564 .tuner_type = UNSET,
583 .tuner_addr = ADDR_UNSET, 565 .tuner_addr = ADDR_UNSET,
584 .radio_addr = ADDR_UNSET,
585 .volume_gpio = winview_volume, 566 .volume_gpio = winview_volume,
586 .has_radio = 1, 567 .has_radio = 1,
587 }, 568 },
588 [BTTV_BOARD_AVEC_INTERCAP] = { 569 [BTTV_BOARD_AVEC_INTERCAP] = {
589 .name = "AVEC Intercapture", 570 .name = "AVEC Intercapture",
590 .video_inputs = 3, 571 .video_inputs = 3,
591 .audio_inputs = 2, 572 /* .audio_inputs= 2, */
592 .svhs = 2, 573 .svhs = 2,
593 .gpiomask = 0, 574 .gpiomask = 0,
594 .muxsel = { 2, 3, 1, 1 }, 575 .muxsel = { 2, 3, 1, 1 },
@@ -596,37 +577,34 @@ struct tvcard bttv_tvcards[] = {
596 .needs_tvaudio = 1, 577 .needs_tvaudio = 1,
597 .tuner_type = UNSET, 578 .tuner_type = UNSET,
598 .tuner_addr = ADDR_UNSET, 579 .tuner_addr = ADDR_UNSET,
599 .radio_addr = ADDR_UNSET,
600 }, 580 },
601 [BTTV_BOARD_LIFE_FLYKIT] = { 581 [BTTV_BOARD_LIFE_FLYKIT] = {
602 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", 582 .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
603 .video_inputs = 4, 583 .video_inputs = 4,
604 .audio_inputs = 1, 584 /* .audio_inputs= 1, */
605 .svhs = UNSET, 585 .svhs = NO_SVHS,
606 .gpiomask = 0x8dff00, 586 .gpiomask = 0x8dff00,
607 .muxsel = { 2, 3, 1, 1 }, 587 .muxsel = { 2, 3, 1, 1 },
608 .gpiomux = { 0 }, 588 .gpiomux = { 0 },
609 .no_msp34xx = 1, 589 .no_msp34xx = 1,
610 .tuner_type = TUNER_ABSENT, 590 .tuner_type = TUNER_ABSENT,
611 .tuner_addr = ADDR_UNSET, 591 .tuner_addr = ADDR_UNSET,
612 .radio_addr = ADDR_UNSET,
613 }, 592 },
614 593
615 /* ---- card 0x14 ---------------------------------- */ 594 /* ---- card 0x14 ---------------------------------- */
616 [BTTV_BOARD_CEI_RAFFLES] = { 595 [BTTV_BOARD_CEI_RAFFLES] = {
617 .name = "CEI Raffles Card", 596 .name = "CEI Raffles Card",
618 .video_inputs = 3, 597 .video_inputs = 3,
619 .audio_inputs = 3, 598 /* .audio_inputs= 3, */
620 .svhs = 2, 599 .svhs = 2,
621 .muxsel = { 2, 3, 1, 1 }, 600 .muxsel = { 2, 3, 1, 1 },
622 .tuner_type = UNSET, 601 .tuner_type = UNSET,
623 .tuner_addr = ADDR_UNSET, 602 .tuner_addr = ADDR_UNSET,
624 .radio_addr = ADDR_UNSET,
625 }, 603 },
626 [BTTV_BOARD_CONFERENCETV] = { 604 [BTTV_BOARD_CONFERENCETV] = {
627 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", 605 .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
628 .video_inputs = 4, 606 .video_inputs = 4,
629 .audio_inputs = 2, /* tuner, line in */ 607 /* .audio_inputs= 2, tuner, line in */
630 .svhs = 2, 608 .svhs = 2,
631 .gpiomask = 0x1800, 609 .gpiomask = 0x1800,
632 .muxsel = { 2, 3, 1, 1 }, 610 .muxsel = { 2, 3, 1, 1 },
@@ -635,12 +613,11 @@ struct tvcard bttv_tvcards[] = {
635 .pll = PLL_28, 613 .pll = PLL_28,
636 .tuner_type = TUNER_PHILIPS_PAL_I, 614 .tuner_type = TUNER_PHILIPS_PAL_I,
637 .tuner_addr = ADDR_UNSET, 615 .tuner_addr = ADDR_UNSET,
638 .radio_addr = ADDR_UNSET,
639 }, 616 },
640 [BTTV_BOARD_PHOEBE_TVMAS] = { 617 [BTTV_BOARD_PHOEBE_TVMAS] = {
641 .name = "Askey CPH050/ Phoebe Tv Master + FM", 618 .name = "Askey CPH050/ Phoebe Tv Master + FM",
642 .video_inputs = 3, 619 .video_inputs = 3,
643 .audio_inputs = 1, 620 /* .audio_inputs= 1, */
644 .svhs = 2, 621 .svhs = 2,
645 .gpiomask = 0xc00, 622 .gpiomask = 0xc00,
646 .muxsel = { 2, 3, 1, 1 }, 623 .muxsel = { 2, 3, 1, 1 },
@@ -650,29 +627,27 @@ struct tvcard bttv_tvcards[] = {
650 .pll = PLL_28, 627 .pll = PLL_28,
651 .tuner_type = UNSET, 628 .tuner_type = UNSET,
652 .tuner_addr = ADDR_UNSET, 629 .tuner_addr = ADDR_UNSET,
653 .radio_addr = ADDR_UNSET,
654 }, 630 },
655 [BTTV_BOARD_MODTEC_205] = { 631 [BTTV_BOARD_MODTEC_205] = {
656 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", 632 .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
657 .video_inputs = 3, 633 .video_inputs = 3,
658 .audio_inputs = 1, 634 /* .audio_inputs= 1, */
659 .svhs = UNSET, 635 .svhs = NO_SVHS,
660 .gpiomask = 7, 636 .gpiomask = 7,
661 .muxsel = { 2, 3, -1 }, 637 .muxsel = { 2, 3, -1 },
662 .digital_mode = DIGITAL_MODE_CAMERA, 638 /* .digital_mode= DIGITAL_MODE_CAMERA, */
663 .gpiomux = { 0, 0, 0, 0 }, 639 .gpiomux = { 0, 0, 0, 0 },
664 .no_msp34xx = 1, 640 .no_msp34xx = 1,
665 .pll = PLL_28, 641 .pll = PLL_28,
666 .tuner_type = TUNER_ALPS_TSBB5_PAL_I, 642 .tuner_type = TUNER_ALPS_TSBB5_PAL_I,
667 .tuner_addr = ADDR_UNSET, 643 .tuner_addr = ADDR_UNSET,
668 .radio_addr = ADDR_UNSET,
669 }, 644 },
670 645
671 /* ---- card 0x18 ---------------------------------- */ 646 /* ---- card 0x18 ---------------------------------- */
672 [BTTV_BOARD_MAGICTVIEW061] = { 647 [BTTV_BOARD_MAGICTVIEW061] = {
673 .name = "Askey CPH05X/06X (bt878) [many vendors]", 648 .name = "Askey CPH05X/06X (bt878) [many vendors]",
674 .video_inputs = 3, 649 .video_inputs = 3,
675 .audio_inputs = 1, 650 /* .audio_inputs= 1, */
676 .svhs = 2, 651 .svhs = 2,
677 .gpiomask = 0xe00, 652 .gpiomask = 0xe00,
678 .muxsel = { 2, 3, 1, 1 }, 653 .muxsel = { 2, 3, 1, 1 },
@@ -682,13 +657,12 @@ struct tvcard bttv_tvcards[] = {
682 .pll = PLL_28, 657 .pll = PLL_28,
683 .tuner_type = UNSET, 658 .tuner_type = UNSET,
684 .tuner_addr = ADDR_UNSET, 659 .tuner_addr = ADDR_UNSET,
685 .radio_addr = ADDR_UNSET,
686 .has_remote = 1, 660 .has_remote = 1,
687 }, 661 },
688 [BTTV_BOARD_VOBIS_BOOSTAR] = { 662 [BTTV_BOARD_VOBIS_BOOSTAR] = {
689 .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar", 663 .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
690 .video_inputs = 3, 664 .video_inputs = 3,
691 .audio_inputs = 1, 665 /* .audio_inputs= 1, */
692 .svhs = 2, 666 .svhs = 2,
693 .gpiomask = 0x1f0fff, 667 .gpiomask = 0x1f0fff,
694 .muxsel = { 2, 3, 1, 1 }, 668 .muxsel = { 2, 3, 1, 1 },
@@ -697,13 +671,12 @@ struct tvcard bttv_tvcards[] = {
697 .needs_tvaudio = 0, 671 .needs_tvaudio = 0,
698 .tuner_type = TUNER_PHILIPS_PAL, 672 .tuner_type = TUNER_PHILIPS_PAL,
699 .tuner_addr = ADDR_UNSET, 673 .tuner_addr = ADDR_UNSET,
700 .radio_addr = ADDR_UNSET,
701 .audio_mode_gpio= terratv_audio, 674 .audio_mode_gpio= terratv_audio,
702 }, 675 },
703 [BTTV_BOARD_HAUPPAUG_WCAM] = { 676 [BTTV_BOARD_HAUPPAUG_WCAM] = {
704 .name = "Hauppauge WinCam newer (bt878)", 677 .name = "Hauppauge WinCam newer (bt878)",
705 .video_inputs = 4, 678 .video_inputs = 4,
706 .audio_inputs = 1, 679 /* .audio_inputs= 1, */
707 .svhs = 3, 680 .svhs = 3,
708 .gpiomask = 7, 681 .gpiomask = 7,
709 .muxsel = { 2, 0, 1, 1 }, 682 .muxsel = { 2, 0, 1, 1 },
@@ -712,12 +685,11 @@ struct tvcard bttv_tvcards[] = {
712 .needs_tvaudio = 1, 685 .needs_tvaudio = 1,
713 .tuner_type = UNSET, 686 .tuner_type = UNSET,
714 .tuner_addr = ADDR_UNSET, 687 .tuner_addr = ADDR_UNSET,
715 .radio_addr = ADDR_UNSET,
716 }, 688 },
717 [BTTV_BOARD_MAXI] = { 689 [BTTV_BOARD_MAXI] = {
718 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", 690 .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
719 .video_inputs = 4, 691 .video_inputs = 4,
720 .audio_inputs = 2, 692 /* .audio_inputs= 2, */
721 .svhs = 2, 693 .svhs = 2,
722 .gpiomask = 0x1800, 694 .gpiomask = 0x1800,
723 .muxsel = { 2, 3, 1, 1 }, 695 .muxsel = { 2, 3, 1, 1 },
@@ -726,14 +698,13 @@ struct tvcard bttv_tvcards[] = {
726 .pll = PLL_28, 698 .pll = PLL_28,
727 .tuner_type = TUNER_PHILIPS_SECAM, 699 .tuner_type = TUNER_PHILIPS_SECAM,
728 .tuner_addr = ADDR_UNSET, 700 .tuner_addr = ADDR_UNSET,
729 .radio_addr = ADDR_UNSET,
730 }, 701 },
731 702
732 /* ---- card 0x1c ---------------------------------- */ 703 /* ---- card 0x1c ---------------------------------- */
733 [BTTV_BOARD_TERRATV] = { 704 [BTTV_BOARD_TERRATV] = {
734 .name = "Terratec TerraTV+ Version 1.1 (bt878)", 705 .name = "Terratec TerraTV+ Version 1.1 (bt878)",
735 .video_inputs = 3, 706 .video_inputs = 3,
736 .audio_inputs = 1, 707 /* .audio_inputs= 1, */
737 .svhs = 2, 708 .svhs = 2,
738 .gpiomask = 0x1f0fff, 709 .gpiomask = 0x1f0fff,
739 .muxsel = { 2, 3, 1, 1 }, 710 .muxsel = { 2, 3, 1, 1 },
@@ -742,7 +713,6 @@ struct tvcard bttv_tvcards[] = {
742 .needs_tvaudio = 0, 713 .needs_tvaudio = 0,
743 .tuner_type = TUNER_PHILIPS_PAL, 714 .tuner_type = TUNER_PHILIPS_PAL,
744 .tuner_addr = ADDR_UNSET, 715 .tuner_addr = ADDR_UNSET,
745 .radio_addr = ADDR_UNSET,
746 .audio_mode_gpio= terratv_audio, 716 .audio_mode_gpio= terratv_audio,
747 /* GPIO wiring: 717 /* GPIO wiring:
748 External 20 pin connector (for Active Radio Upgrade board) 718 External 20 pin connector (for Active Radio Upgrade board)
@@ -780,7 +750,7 @@ struct tvcard bttv_tvcards[] = {
780 /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */ 750 /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */
781 .name = "Imagenation PXC200", 751 .name = "Imagenation PXC200",
782 .video_inputs = 5, 752 .video_inputs = 5,
783 .audio_inputs = 1, 753 /* .audio_inputs= 1, */
784 .svhs = 1, /* was: 4 */ 754 .svhs = 1, /* was: 4 */
785 .gpiomask = 0, 755 .gpiomask = 0,
786 .muxsel = { 2, 3, 1, 0, 0}, 756 .muxsel = { 2, 3, 1, 0, 0},
@@ -788,14 +758,13 @@ struct tvcard bttv_tvcards[] = {
788 .needs_tvaudio = 1, 758 .needs_tvaudio = 1,
789 .tuner_type = TUNER_ABSENT, 759 .tuner_type = TUNER_ABSENT,
790 .tuner_addr = ADDR_UNSET, 760 .tuner_addr = ADDR_UNSET,
791 .radio_addr = ADDR_UNSET,
792 .muxsel_hook = PXC200_muxsel, 761 .muxsel_hook = PXC200_muxsel,
793 762
794 }, 763 },
795 [BTTV_BOARD_FLYVIDEO_98] = { 764 [BTTV_BOARD_FLYVIDEO_98] = {
796 .name = "Lifeview FlyVideo 98 LR50", 765 .name = "Lifeview FlyVideo 98 LR50",
797 .video_inputs = 4, 766 .video_inputs = 4,
798 .audio_inputs = 1, 767 /* .audio_inputs= 1, */
799 .svhs = 2, 768 .svhs = 2,
800 .gpiomask = 0x1800, /* 0x8dfe00 */ 769 .gpiomask = 0x1800, /* 0x8dfe00 */
801 .muxsel = { 2, 3, 1, 1 }, 770 .muxsel = { 2, 3, 1, 1 },
@@ -804,12 +773,11 @@ struct tvcard bttv_tvcards[] = {
804 .pll = PLL_28, 773 .pll = PLL_28,
805 .tuner_type = UNSET, 774 .tuner_type = UNSET,
806 .tuner_addr = ADDR_UNSET, 775 .tuner_addr = ADDR_UNSET,
807 .radio_addr = ADDR_UNSET,
808 }, 776 },
809 [BTTV_BOARD_IPROTV] = { 777 [BTTV_BOARD_IPROTV] = {
810 .name = "Formac iProTV, Formac ProTV I (bt848)", 778 .name = "Formac iProTV, Formac ProTV I (bt848)",
811 .video_inputs = 4, 779 .video_inputs = 4,
812 .audio_inputs = 1, 780 /* .audio_inputs= 1, */
813 .svhs = 3, 781 .svhs = 3,
814 .gpiomask = 1, 782 .gpiomask = 1,
815 .muxsel = { 2, 3, 1, 1 }, 783 .muxsel = { 2, 3, 1, 1 },
@@ -817,14 +785,13 @@ struct tvcard bttv_tvcards[] = {
817 .pll = PLL_28, 785 .pll = PLL_28,
818 .tuner_type = TUNER_PHILIPS_PAL, 786 .tuner_type = TUNER_PHILIPS_PAL,
819 .tuner_addr = ADDR_UNSET, 787 .tuner_addr = ADDR_UNSET,
820 .radio_addr = ADDR_UNSET,
821 }, 788 },
822 789
823 /* ---- card 0x20 ---------------------------------- */ 790 /* ---- card 0x20 ---------------------------------- */
824 [BTTV_BOARD_INTEL_C_S_PCI] = { 791 [BTTV_BOARD_INTEL_C_S_PCI] = {
825 .name = "Intel Create and Share PCI/ Smart Video Recorder III", 792 .name = "Intel Create and Share PCI/ Smart Video Recorder III",
826 .video_inputs = 4, 793 .video_inputs = 4,
827 .audio_inputs = 0, 794 /* .audio_inputs= 0, */
828 .svhs = 2, 795 .svhs = 2,
829 .gpiomask = 0, 796 .gpiomask = 0,
830 .muxsel = { 2, 3, 1, 1 }, 797 .muxsel = { 2, 3, 1, 1 },
@@ -832,12 +799,11 @@ struct tvcard bttv_tvcards[] = {
832 .needs_tvaudio = 0, 799 .needs_tvaudio = 0,
833 .tuner_type = TUNER_ABSENT, 800 .tuner_type = TUNER_ABSENT,
834 .tuner_addr = ADDR_UNSET, 801 .tuner_addr = ADDR_UNSET,
835 .radio_addr = ADDR_UNSET,
836 }, 802 },
837 [BTTV_BOARD_TERRATVALUE] = { 803 [BTTV_BOARD_TERRATVALUE] = {
838 .name = "Terratec TerraTValue Version Bt878", 804 .name = "Terratec TerraTValue Version Bt878",
839 .video_inputs = 3, 805 .video_inputs = 3,
840 .audio_inputs = 1, 806 /* .audio_inputs= 1, */
841 .svhs = 2, 807 .svhs = 2,
842 .gpiomask = 0xffff00, 808 .gpiomask = 0xffff00,
843 .muxsel = { 2, 3, 1, 1 }, 809 .muxsel = { 2, 3, 1, 1 },
@@ -847,12 +813,11 @@ struct tvcard bttv_tvcards[] = {
847 .pll = PLL_28, 813 .pll = PLL_28,
848 .tuner_type = TUNER_PHILIPS_PAL, 814 .tuner_type = TUNER_PHILIPS_PAL,
849 .tuner_addr = ADDR_UNSET, 815 .tuner_addr = ADDR_UNSET,
850 .radio_addr = ADDR_UNSET,
851 }, 816 },
852 [BTTV_BOARD_WINFAST2000] = { 817 [BTTV_BOARD_WINFAST2000] = {
853 .name = "Leadtek WinFast 2000/ WinFast 2000 XP", 818 .name = "Leadtek WinFast 2000/ WinFast 2000 XP",
854 .video_inputs = 4, 819 .video_inputs = 4,
855 .audio_inputs = 1, 820 /* .audio_inputs= 1, */
856 .svhs = 2, 821 .svhs = 2,
857 .muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */ 822 .muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */
858 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ 823 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
@@ -875,14 +840,13 @@ struct tvcard bttv_tvcards[] = {
875 .has_radio = 1, 840 .has_radio = 1,
876 .tuner_type = TUNER_PHILIPS_PAL, /* default for now, gpio reads BFFF06 for Pal bg+dk */ 841 .tuner_type = TUNER_PHILIPS_PAL, /* default for now, gpio reads BFFF06 for Pal bg+dk */
877 .tuner_addr = ADDR_UNSET, 842 .tuner_addr = ADDR_UNSET,
878 .radio_addr = ADDR_UNSET,
879 .audio_mode_gpio= winfast2000_audio, 843 .audio_mode_gpio= winfast2000_audio,
880 .has_remote = 1, 844 .has_remote = 1,
881 }, 845 },
882 [BTTV_BOARD_CHRONOS_VS2] = { 846 [BTTV_BOARD_CHRONOS_VS2] = {
883 .name = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II", 847 .name = "Lifeview FlyVideo 98 LR50 / Chronos Video Shuttle II",
884 .video_inputs = 4, 848 .video_inputs = 4,
885 .audio_inputs = 3, 849 /* .audio_inputs= 3, */
886 .svhs = 2, 850 .svhs = 2,
887 .gpiomask = 0x1800, 851 .gpiomask = 0x1800,
888 .muxsel = { 2, 3, 1, 1 }, 852 .muxsel = { 2, 3, 1, 1 },
@@ -891,14 +855,13 @@ struct tvcard bttv_tvcards[] = {
891 .pll = PLL_28, 855 .pll = PLL_28,
892 .tuner_type = UNSET, 856 .tuner_type = UNSET,
893 .tuner_addr = ADDR_UNSET, 857 .tuner_addr = ADDR_UNSET,
894 .radio_addr = ADDR_UNSET,
895 }, 858 },
896 859
897 /* ---- card 0x24 ---------------------------------- */ 860 /* ---- card 0x24 ---------------------------------- */
898 [BTTV_BOARD_TYPHOON_TVIEW] = { 861 [BTTV_BOARD_TYPHOON_TVIEW] = {
899 .name = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner", 862 .name = "Lifeview FlyVideo 98FM LR50 / Typhoon TView TV/FM Tuner",
900 .video_inputs = 4, 863 .video_inputs = 4,
901 .audio_inputs = 3, 864 /* .audio_inputs= 3, */
902 .svhs = 2, 865 .svhs = 2,
903 .gpiomask = 0x1800, 866 .gpiomask = 0x1800,
904 .muxsel = { 2, 3, 1, 1 }, 867 .muxsel = { 2, 3, 1, 1 },
@@ -907,13 +870,12 @@ struct tvcard bttv_tvcards[] = {
907 .pll = PLL_28, 870 .pll = PLL_28,
908 .tuner_type = UNSET, 871 .tuner_type = UNSET,
909 .tuner_addr = ADDR_UNSET, 872 .tuner_addr = ADDR_UNSET,
910 .radio_addr = ADDR_UNSET,
911 .has_radio = 1, 873 .has_radio = 1,
912 }, 874 },
913 [BTTV_BOARD_PXELVWPLTVPRO] = { 875 [BTTV_BOARD_PXELVWPLTVPRO] = {
914 .name = "Prolink PixelView PlayTV pro", 876 .name = "Prolink PixelView PlayTV pro",
915 .video_inputs = 3, 877 .video_inputs = 3,
916 .audio_inputs = 1, 878 /* .audio_inputs= 1, */
917 .svhs = 2, 879 .svhs = 2,
918 .gpiomask = 0xff, 880 .gpiomask = 0xff,
919 .muxsel = { 2, 3, 1, 1 }, 881 .muxsel = { 2, 3, 1, 1 },
@@ -923,12 +885,11 @@ struct tvcard bttv_tvcards[] = {
923 .pll = PLL_28, 885 .pll = PLL_28,
924 .tuner_type = UNSET, 886 .tuner_type = UNSET,
925 .tuner_addr = ADDR_UNSET, 887 .tuner_addr = ADDR_UNSET,
926 .radio_addr = ADDR_UNSET,
927 }, 888 },
928 [BTTV_BOARD_MAGICTVIEW063] = { 889 [BTTV_BOARD_MAGICTVIEW063] = {
929 .name = "Askey CPH06X TView99", 890 .name = "Askey CPH06X TView99",
930 .video_inputs = 4, 891 .video_inputs = 4,
931 .audio_inputs = 1, 892 /* .audio_inputs= 1, */
932 .svhs = 2, 893 .svhs = 2,
933 .gpiomask = 0x551e00, 894 .gpiomask = 0x551e00,
934 .muxsel = { 2, 3, 1, 0 }, 895 .muxsel = { 2, 3, 1, 0 },
@@ -938,13 +899,12 @@ struct tvcard bttv_tvcards[] = {
938 .pll = PLL_28, 899 .pll = PLL_28,
939 .tuner_type = TUNER_PHILIPS_PAL_I, 900 .tuner_type = TUNER_PHILIPS_PAL_I,
940 .tuner_addr = ADDR_UNSET, 901 .tuner_addr = ADDR_UNSET,
941 .radio_addr = ADDR_UNSET,
942 .has_remote = 1, 902 .has_remote = 1,
943 }, 903 },
944 [BTTV_BOARD_PINNACLE] = { 904 [BTTV_BOARD_PINNACLE] = {
945 .name = "Pinnacle PCTV Studio/Rave", 905 .name = "Pinnacle PCTV Studio/Rave",
946 .video_inputs = 3, 906 .video_inputs = 3,
947 .audio_inputs = 1, 907 /* .audio_inputs= 1, */
948 .svhs = 2, 908 .svhs = 2,
949 .gpiomask = 0x03000F, 909 .gpiomask = 0x03000F,
950 .muxsel = { 2, 3, 1, 1 }, 910 .muxsel = { 2, 3, 1, 1 },
@@ -954,14 +914,13 @@ struct tvcard bttv_tvcards[] = {
954 .pll = PLL_28, 914 .pll = PLL_28,
955 .tuner_type = UNSET, 915 .tuner_type = UNSET,
956 .tuner_addr = ADDR_UNSET, 916 .tuner_addr = ADDR_UNSET,
957 .radio_addr = ADDR_UNSET,
958 }, 917 },
959 918
960 /* ---- card 0x28 ---------------------------------- */ 919 /* ---- card 0x28 ---------------------------------- */
961 [BTTV_BOARD_STB2] = { 920 [BTTV_BOARD_STB2] = {
962 .name = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100", 921 .name = "STB TV PCI FM, Gateway P/N 6000704 (bt878), 3Dfx VoodooTV 100",
963 .video_inputs = 3, 922 .video_inputs = 3,
964 .audio_inputs = 1, 923 /* .audio_inputs= 1, */
965 .svhs = 2, 924 .svhs = 2,
966 .gpiomask = 7, 925 .gpiomask = 7,
967 .muxsel = { 2, 3, 1, 1 }, 926 .muxsel = { 2, 3, 1, 1 },
@@ -971,14 +930,13 @@ struct tvcard bttv_tvcards[] = {
971 .needs_tvaudio = 1, 930 .needs_tvaudio = 1,
972 .tuner_type = TUNER_PHILIPS_NTSC, 931 .tuner_type = TUNER_PHILIPS_NTSC,
973 .tuner_addr = ADDR_UNSET, 932 .tuner_addr = ADDR_UNSET,
974 .radio_addr = ADDR_UNSET,
975 .pll = PLL_28, 933 .pll = PLL_28,
976 .has_radio = 1, 934 .has_radio = 1,
977 }, 935 },
978 [BTTV_BOARD_AVPHONE98] = { 936 [BTTV_BOARD_AVPHONE98] = {
979 .name = "AVerMedia TVPhone 98", 937 .name = "AVerMedia TVPhone 98",
980 .video_inputs = 3, 938 .video_inputs = 3,
981 .audio_inputs = 4, 939 /* .audio_inputs= 4, */
982 .svhs = 2, 940 .svhs = 2,
983 .gpiomask = 15, 941 .gpiomask = 15,
984 .muxsel = { 2, 3, 1, 1 }, 942 .muxsel = { 2, 3, 1, 1 },
@@ -987,14 +945,13 @@ struct tvcard bttv_tvcards[] = {
987 .pll = PLL_28, 945 .pll = PLL_28,
988 .tuner_type = UNSET, 946 .tuner_type = UNSET,
989 .tuner_addr = ADDR_UNSET, 947 .tuner_addr = ADDR_UNSET,
990 .radio_addr = ADDR_UNSET,
991 .has_radio = 1, 948 .has_radio = 1,
992 .audio_mode_gpio= avermedia_tvphone_audio, 949 .audio_mode_gpio= avermedia_tvphone_audio,
993 }, 950 },
994 [BTTV_BOARD_PV951] = { 951 [BTTV_BOARD_PV951] = {
995 .name = "ProVideo PV951", /* pic16c54 */ 952 .name = "ProVideo PV951", /* pic16c54 */
996 .video_inputs = 3, 953 .video_inputs = 3,
997 .audio_inputs = 1, 954 /* .audio_inputs= 1, */
998 .svhs = 2, 955 .svhs = 2,
999 .gpiomask = 0, 956 .gpiomask = 0,
1000 .muxsel = { 2, 3, 1, 1}, 957 .muxsel = { 2, 3, 1, 1},
@@ -1004,12 +961,11 @@ struct tvcard bttv_tvcards[] = {
1004 .pll = PLL_28, 961 .pll = PLL_28,
1005 .tuner_type = TUNER_PHILIPS_PAL_I, 962 .tuner_type = TUNER_PHILIPS_PAL_I,
1006 .tuner_addr = ADDR_UNSET, 963 .tuner_addr = ADDR_UNSET,
1007 .radio_addr = ADDR_UNSET,
1008 }, 964 },
1009 [BTTV_BOARD_ONAIR_TV] = { 965 [BTTV_BOARD_ONAIR_TV] = {
1010 .name = "Little OnAir TV", 966 .name = "Little OnAir TV",
1011 .video_inputs = 3, 967 .video_inputs = 3,
1012 .audio_inputs = 1, 968 /* .audio_inputs= 1, */
1013 .svhs = 2, 969 .svhs = 2,
1014 .gpiomask = 0xe00b, 970 .gpiomask = 0xe00b,
1015 .muxsel = { 2, 3, 1, 1 }, 971 .muxsel = { 2, 3, 1, 1 },
@@ -1018,15 +974,14 @@ struct tvcard bttv_tvcards[] = {
1018 .no_msp34xx = 1, 974 .no_msp34xx = 1,
1019 .tuner_type = UNSET, 975 .tuner_type = UNSET,
1020 .tuner_addr = ADDR_UNSET, 976 .tuner_addr = ADDR_UNSET,
1021 .radio_addr = ADDR_UNSET,
1022 }, 977 },
1023 978
1024 /* ---- card 0x2c ---------------------------------- */ 979 /* ---- card 0x2c ---------------------------------- */
1025 [BTTV_BOARD_SIGMA_TVII_FM] = { 980 [BTTV_BOARD_SIGMA_TVII_FM] = {
1026 .name = "Sigma TVII-FM", 981 .name = "Sigma TVII-FM",
1027 .video_inputs = 2, 982 .video_inputs = 2,
1028 .audio_inputs = 1, 983 /* .audio_inputs= 1, */
1029 .svhs = UNSET, 984 .svhs = NO_SVHS,
1030 .gpiomask = 3, 985 .gpiomask = 3,
1031 .muxsel = { 2, 3, 1, 1 }, 986 .muxsel = { 2, 3, 1, 1 },
1032 .gpiomux = { 1, 1, 0, 2 }, 987 .gpiomux = { 1, 1, 0, 2 },
@@ -1035,12 +990,11 @@ struct tvcard bttv_tvcards[] = {
1035 .pll = PLL_NONE, 990 .pll = PLL_NONE,
1036 .tuner_type = UNSET, 991 .tuner_type = UNSET,
1037 .tuner_addr = ADDR_UNSET, 992 .tuner_addr = ADDR_UNSET,
1038 .radio_addr = ADDR_UNSET,
1039 }, 993 },
1040 [BTTV_BOARD_MATRIX_VISION2] = { 994 [BTTV_BOARD_MATRIX_VISION2] = {
1041 .name = "MATRIX-Vision MV-Delta 2", 995 .name = "MATRIX-Vision MV-Delta 2",
1042 .video_inputs = 5, 996 .video_inputs = 5,
1043 .audio_inputs = 1, 997 /* .audio_inputs= 1, */
1044 .svhs = 3, 998 .svhs = 3,
1045 .gpiomask = 0, 999 .gpiomask = 0,
1046 .muxsel = { 2, 3, 1, 0, 0 }, 1000 .muxsel = { 2, 3, 1, 0, 0 },
@@ -1049,12 +1003,11 @@ struct tvcard bttv_tvcards[] = {
1049 .pll = PLL_28, 1003 .pll = PLL_28,
1050 .tuner_type = TUNER_ABSENT, 1004 .tuner_type = TUNER_ABSENT,
1051 .tuner_addr = ADDR_UNSET, 1005 .tuner_addr = ADDR_UNSET,
1052 .radio_addr = ADDR_UNSET,
1053 }, 1006 },
1054 [BTTV_BOARD_ZOLTRIX_GENIE] = { 1007 [BTTV_BOARD_ZOLTRIX_GENIE] = {
1055 .name = "Zoltrix Genie TV/FM", 1008 .name = "Zoltrix Genie TV/FM",
1056 .video_inputs = 3, 1009 .video_inputs = 3,
1057 .audio_inputs = 1, 1010 /* .audio_inputs= 1, */
1058 .svhs = 2, 1011 .svhs = 2,
1059 .gpiomask = 0xbcf03f, 1012 .gpiomask = 0xbcf03f,
1060 .muxsel = { 2, 3, 1, 1 }, 1013 .muxsel = { 2, 3, 1, 1 },
@@ -1064,12 +1017,11 @@ struct tvcard bttv_tvcards[] = {
1064 .pll = PLL_28, 1017 .pll = PLL_28,
1065 .tuner_type = TUNER_TEMIC_4039FR5_NTSC, 1018 .tuner_type = TUNER_TEMIC_4039FR5_NTSC,
1066 .tuner_addr = ADDR_UNSET, 1019 .tuner_addr = ADDR_UNSET,
1067 .radio_addr = ADDR_UNSET,
1068 }, 1020 },
1069 [BTTV_BOARD_TERRATVRADIO] = { 1021 [BTTV_BOARD_TERRATVRADIO] = {
1070 .name = "Terratec TV/Radio+", 1022 .name = "Terratec TV/Radio+",
1071 .video_inputs = 3, 1023 .video_inputs = 3,
1072 .audio_inputs = 1, 1024 /* .audio_inputs= 1, */
1073 .svhs = 2, 1025 .svhs = 2,
1074 .gpiomask = 0x70000, 1026 .gpiomask = 0x70000,
1075 .muxsel = { 2, 3, 1, 1 }, 1027 .muxsel = { 2, 3, 1, 1 },
@@ -1080,7 +1032,6 @@ struct tvcard bttv_tvcards[] = {
1080 .pll = PLL_35, 1032 .pll = PLL_35,
1081 .tuner_type = TUNER_PHILIPS_PAL_I, 1033 .tuner_type = TUNER_PHILIPS_PAL_I,
1082 .tuner_addr = ADDR_UNSET, 1034 .tuner_addr = ADDR_UNSET,
1083 .radio_addr = ADDR_UNSET,
1084 .has_radio = 1, 1035 .has_radio = 1,
1085 }, 1036 },
1086 1037
@@ -1088,7 +1039,7 @@ struct tvcard bttv_tvcards[] = {
1088 [BTTV_BOARD_DYNALINK] = { 1039 [BTTV_BOARD_DYNALINK] = {
1089 .name = "Askey CPH03x/ Dynalink Magic TView", 1040 .name = "Askey CPH03x/ Dynalink Magic TView",
1090 .video_inputs = 3, 1041 .video_inputs = 3,
1091 .audio_inputs = 1, 1042 /* .audio_inputs= 1, */
1092 .svhs = 2, 1043 .svhs = 2,
1093 .gpiomask = 15, 1044 .gpiomask = 15,
1094 .muxsel = { 2, 3, 1, 1 }, 1045 .muxsel = { 2, 3, 1, 1 },
@@ -1098,12 +1049,11 @@ struct tvcard bttv_tvcards[] = {
1098 .pll = PLL_28, 1049 .pll = PLL_28,
1099 .tuner_type = UNSET, 1050 .tuner_type = UNSET,
1100 .tuner_addr = ADDR_UNSET, 1051 .tuner_addr = ADDR_UNSET,
1101 .radio_addr = ADDR_UNSET,
1102 }, 1052 },
1103 [BTTV_BOARD_GVBCTV3PCI] = { 1053 [BTTV_BOARD_GVBCTV3PCI] = {
1104 .name = "IODATA GV-BCTV3/PCI", 1054 .name = "IODATA GV-BCTV3/PCI",
1105 .video_inputs = 3, 1055 .video_inputs = 3,
1106 .audio_inputs = 1, 1056 /* .audio_inputs= 1, */
1107 .svhs = 2, 1057 .svhs = 2,
1108 .gpiomask = 0x010f00, 1058 .gpiomask = 0x010f00,
1109 .muxsel = {2, 3, 0, 0 }, 1059 .muxsel = {2, 3, 0, 0 },
@@ -1112,24 +1062,22 @@ struct tvcard bttv_tvcards[] = {
1112 .pll = PLL_28, 1062 .pll = PLL_28,
1113 .tuner_type = TUNER_ALPS_TSHC6_NTSC, 1063 .tuner_type = TUNER_ALPS_TSHC6_NTSC,
1114 .tuner_addr = ADDR_UNSET, 1064 .tuner_addr = ADDR_UNSET,
1115 .radio_addr = ADDR_UNSET,
1116 .audio_mode_gpio= gvbctv3pci_audio, 1065 .audio_mode_gpio= gvbctv3pci_audio,
1117 }, 1066 },
1118 [BTTV_BOARD_PXELVWPLTVPAK] = { 1067 [BTTV_BOARD_PXELVWPLTVPAK] = {
1119 .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP", 1068 .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
1120 .video_inputs = 5, 1069 .video_inputs = 5,
1121 .audio_inputs = 1, 1070 /* .audio_inputs= 1, */
1122 .svhs = 3, 1071 .svhs = 3,
1123 .gpiomask = 0xAA0000, 1072 .gpiomask = 0xAA0000,
1124 .muxsel = { 2,3,1,1,-1 }, 1073 .muxsel = { 2, 3, 1, 1, -1 },
1125 .digital_mode = DIGITAL_MODE_CAMERA, 1074 /* .digital_mode= DIGITAL_MODE_CAMERA, */
1126 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 }, 1075 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 },
1127 .gpiomute = 0xa8000, 1076 .gpiomute = 0xa8000,
1128 .no_msp34xx = 1, 1077 .no_msp34xx = 1,
1129 .pll = PLL_28, 1078 .pll = PLL_28,
1130 .tuner_type = TUNER_PHILIPS_PAL_I, 1079 .tuner_type = TUNER_PHILIPS_PAL_I,
1131 .tuner_addr = ADDR_UNSET, 1080 .tuner_addr = ADDR_UNSET,
1132 .radio_addr = ADDR_UNSET,
1133 .has_remote = 1, 1081 .has_remote = 1,
1134 /* GPIO wiring: (different from Rev.4C !) 1082 /* GPIO wiring: (different from Rev.4C !)
1135 GPIO17: U4.A0 (first hef4052bt) 1083 GPIO17: U4.A0 (first hef4052bt)
@@ -1144,7 +1092,7 @@ struct tvcard bttv_tvcards[] = {
1144 [BTTV_BOARD_EAGLE] = { 1092 [BTTV_BOARD_EAGLE] = {
1145 .name = "Eagle Wireless Capricorn2 (bt878A)", 1093 .name = "Eagle Wireless Capricorn2 (bt878A)",
1146 .video_inputs = 4, 1094 .video_inputs = 4,
1147 .audio_inputs = 1, 1095 /* .audio_inputs= 1, */
1148 .svhs = 2, 1096 .svhs = 2,
1149 .gpiomask = 7, 1097 .gpiomask = 7,
1150 .muxsel = { 2, 0, 1, 1 }, 1098 .muxsel = { 2, 0, 1, 1 },
@@ -1153,7 +1101,6 @@ struct tvcard bttv_tvcards[] = {
1153 .pll = PLL_28, 1101 .pll = PLL_28,
1154 .tuner_type = UNSET /* TUNER_ALPS_TMDH2_NTSC */, 1102 .tuner_type = UNSET /* TUNER_ALPS_TMDH2_NTSC */,
1155 .tuner_addr = ADDR_UNSET, 1103 .tuner_addr = ADDR_UNSET,
1156 .radio_addr = ADDR_UNSET,
1157 }, 1104 },
1158 1105
1159 /* ---- card 0x34 ---------------------------------- */ 1106 /* ---- card 0x34 ---------------------------------- */
@@ -1161,7 +1108,7 @@ struct tvcard bttv_tvcards[] = {
1161 /* David Härdeman <david@2gen.com> */ 1108 /* David Härdeman <david@2gen.com> */
1162 .name = "Pinnacle PCTV Studio Pro", 1109 .name = "Pinnacle PCTV Studio Pro",
1163 .video_inputs = 4, 1110 .video_inputs = 4,
1164 .audio_inputs = 1, 1111 /* .audio_inputs= 1, */
1165 .svhs = 3, 1112 .svhs = 3,
1166 .gpiomask = 0x03000F, 1113 .gpiomask = 0x03000F,
1167 .muxsel = { 2, 3, 1, 1 }, 1114 .muxsel = { 2, 3, 1, 1 },
@@ -1180,14 +1127,13 @@ struct tvcard bttv_tvcards[] = {
1180 .pll = PLL_28, 1127 .pll = PLL_28,
1181 .tuner_type = UNSET, 1128 .tuner_type = UNSET,
1182 .tuner_addr = ADDR_UNSET, 1129 .tuner_addr = ADDR_UNSET,
1183 .radio_addr = ADDR_UNSET,
1184 }, 1130 },
1185 [BTTV_BOARD_TVIEW_RDS_FM] = { 1131 [BTTV_BOARD_TVIEW_RDS_FM] = {
1186 /* Claas Langbehn <claas@bigfoot.com>, 1132 /* Claas Langbehn <claas@bigfoot.com>,
1187 Sven Grothklags <sven@upb.de> */ 1133 Sven Grothklags <sven@upb.de> */
1188 .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS", 1134 .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS",
1189 .video_inputs = 4, 1135 .video_inputs = 4,
1190 .audio_inputs = 3, 1136 /* .audio_inputs= 3, */
1191 .svhs = 2, 1137 .svhs = 2,
1192 .gpiomask = 0x1c, 1138 .gpiomask = 0x1c,
1193 .muxsel = { 2, 3, 1, 1 }, 1139 .muxsel = { 2, 3, 1, 1 },
@@ -1197,7 +1143,6 @@ struct tvcard bttv_tvcards[] = {
1197 .pll = PLL_28, 1143 .pll = PLL_28,
1198 .tuner_type = TUNER_PHILIPS_PAL, 1144 .tuner_type = TUNER_PHILIPS_PAL,
1199 .tuner_addr = ADDR_UNSET, 1145 .tuner_addr = ADDR_UNSET,
1200 .radio_addr = ADDR_UNSET,
1201 .has_radio = 1, 1146 .has_radio = 1,
1202 }, 1147 },
1203 [BTTV_BOARD_LIFETEC_9415] = { 1148 [BTTV_BOARD_LIFETEC_9415] = {
@@ -1208,7 +1153,7 @@ struct tvcard bttv_tvcards[] = {
1208 options tuner type=5 */ 1153 options tuner type=5 */
1209 .name = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]", 1154 .name = "Lifeview FlyVideo 2000 /FlyVideo A2/ Lifetec LT 9415 TV [LR90]",
1210 .video_inputs = 4, 1155 .video_inputs = 4,
1211 .audio_inputs = 1, 1156 /* .audio_inputs= 1, */
1212 .svhs = 2, 1157 .svhs = 2,
1213 .gpiomask = 0x18e0, 1158 .gpiomask = 0x18e0,
1214 .muxsel = { 2, 3, 1, 1 }, 1159 .muxsel = { 2, 3, 1, 1 },
@@ -1221,14 +1166,13 @@ struct tvcard bttv_tvcards[] = {
1221 .pll = PLL_28, 1166 .pll = PLL_28,
1222 .tuner_type = UNSET, 1167 .tuner_type = UNSET,
1223 .tuner_addr = ADDR_UNSET, 1168 .tuner_addr = ADDR_UNSET,
1224 .radio_addr = ADDR_UNSET,
1225 }, 1169 },
1226 [BTTV_BOARD_BESTBUY_EASYTV] = { 1170 [BTTV_BOARD_BESTBUY_EASYTV] = {
1227 /* Miguel Angel Alvarez <maacruz@navegalia.com> 1171 /* Miguel Angel Alvarez <maacruz@navegalia.com>
1228 old Easy TV BT848 version (model CPH031) */ 1172 old Easy TV BT848 version (model CPH031) */
1229 .name = "Askey CPH031/ BESTBUY Easy TV", 1173 .name = "Askey CPH031/ BESTBUY Easy TV",
1230 .video_inputs = 4, 1174 .video_inputs = 4,
1231 .audio_inputs = 1, 1175 /* .audio_inputs= 1, */
1232 .svhs = 2, 1176 .svhs = 2,
1233 .gpiomask = 0xF, 1177 .gpiomask = 0xF,
1234 .muxsel = { 2, 3, 1, 0 }, 1178 .muxsel = { 2, 3, 1, 0 },
@@ -1238,7 +1182,6 @@ struct tvcard bttv_tvcards[] = {
1238 .pll = PLL_28, 1182 .pll = PLL_28,
1239 .tuner_type = TUNER_TEMIC_PAL, 1183 .tuner_type = TUNER_TEMIC_PAL,
1240 .tuner_addr = ADDR_UNSET, 1184 .tuner_addr = ADDR_UNSET,
1241 .radio_addr = ADDR_UNSET,
1242 }, 1185 },
1243 1186
1244 /* ---- card 0x38 ---------------------------------- */ 1187 /* ---- card 0x38 ---------------------------------- */
@@ -1246,7 +1189,7 @@ struct tvcard bttv_tvcards[] = {
1246 /* Gordon Heydon <gjheydon@bigfoot.com ('98) */ 1189 /* Gordon Heydon <gjheydon@bigfoot.com ('98) */
1247 .name = "Lifeview FlyVideo 98FM LR50", 1190 .name = "Lifeview FlyVideo 98FM LR50",
1248 .video_inputs = 4, 1191 .video_inputs = 4,
1249 .audio_inputs = 3, 1192 /* .audio_inputs= 3, */
1250 .svhs = 2, 1193 .svhs = 2,
1251 .gpiomask = 0x1800, 1194 .gpiomask = 0x1800,
1252 .muxsel = { 2, 3, 1, 1 }, 1195 .muxsel = { 2, 3, 1, 1 },
@@ -1255,7 +1198,6 @@ struct tvcard bttv_tvcards[] = {
1255 .pll = PLL_28, 1198 .pll = PLL_28,
1256 .tuner_type = TUNER_PHILIPS_PAL, 1199 .tuner_type = TUNER_PHILIPS_PAL,
1257 .tuner_addr = ADDR_UNSET, 1200 .tuner_addr = ADDR_UNSET,
1258 .radio_addr = ADDR_UNSET,
1259 }, 1201 },
1260 /* This is the ultimate cheapo capture card 1202 /* This is the ultimate cheapo capture card
1261 * just a BT848A on a small PCB! 1203 * just a BT848A on a small PCB!
@@ -1263,7 +1205,7 @@ struct tvcard bttv_tvcards[] = {
1263 [BTTV_BOARD_GRANDTEC] = { 1205 [BTTV_BOARD_GRANDTEC] = {
1264 .name = "GrandTec 'Grand Video Capture' (Bt848)", 1206 .name = "GrandTec 'Grand Video Capture' (Bt848)",
1265 .video_inputs = 2, 1207 .video_inputs = 2,
1266 .audio_inputs = 0, 1208 /* .audio_inputs= 0, */
1267 .svhs = 1, 1209 .svhs = 1,
1268 .gpiomask = 0, 1210 .gpiomask = 0,
1269 .muxsel = { 3, 1 }, 1211 .muxsel = { 3, 1 },
@@ -1273,13 +1215,12 @@ struct tvcard bttv_tvcards[] = {
1273 .pll = PLL_35, 1215 .pll = PLL_35,
1274 .tuner_type = TUNER_ABSENT, 1216 .tuner_type = TUNER_ABSENT,
1275 .tuner_addr = ADDR_UNSET, 1217 .tuner_addr = ADDR_UNSET,
1276 .radio_addr = ADDR_UNSET,
1277 }, 1218 },
1278 [BTTV_BOARD_ASKEY_CPH060] = { 1219 [BTTV_BOARD_ASKEY_CPH060] = {
1279 /* Daniel Herrington <daniel.herrington@home.com> */ 1220 /* Daniel Herrington <daniel.herrington@home.com> */
1280 .name = "Askey CPH060/ Phoebe TV Master Only (No FM)", 1221 .name = "Askey CPH060/ Phoebe TV Master Only (No FM)",
1281 .video_inputs = 3, 1222 .video_inputs = 3,
1282 .audio_inputs = 1, 1223 /* .audio_inputs= 1, */
1283 .svhs = 2, 1224 .svhs = 2,
1284 .gpiomask = 0xe00, 1225 .gpiomask = 0xe00,
1285 .muxsel = { 2, 3, 1, 1}, 1226 .muxsel = { 2, 3, 1, 1},
@@ -1289,13 +1230,12 @@ struct tvcard bttv_tvcards[] = {
1289 .pll = PLL_28, 1230 .pll = PLL_28,
1290 .tuner_type = TUNER_TEMIC_4036FY5_NTSC, 1231 .tuner_type = TUNER_TEMIC_4036FY5_NTSC,
1291 .tuner_addr = ADDR_UNSET, 1232 .tuner_addr = ADDR_UNSET,
1292 .radio_addr = ADDR_UNSET,
1293 }, 1233 },
1294 [BTTV_BOARD_ASKEY_CPH03X] = { 1234 [BTTV_BOARD_ASKEY_CPH03X] = {
1295 /* Matti Mottus <mottus@physic.ut.ee> */ 1235 /* Matti Mottus <mottus@physic.ut.ee> */
1296 .name = "Askey CPH03x TV Capturer", 1236 .name = "Askey CPH03x TV Capturer",
1297 .video_inputs = 4, 1237 .video_inputs = 4,
1298 .audio_inputs = 1, 1238 /* .audio_inputs= 1, */
1299 .svhs = 2, 1239 .svhs = 2,
1300 .gpiomask = 0x03000F, 1240 .gpiomask = 0x03000F,
1301 .muxsel = { 2, 3, 1, 0 }, 1241 .muxsel = { 2, 3, 1, 0 },
@@ -1304,7 +1244,6 @@ struct tvcard bttv_tvcards[] = {
1304 .pll = PLL_28, 1244 .pll = PLL_28,
1305 .tuner_type = TUNER_TEMIC_PAL, 1245 .tuner_type = TUNER_TEMIC_PAL,
1306 .tuner_addr = ADDR_UNSET, 1246 .tuner_addr = ADDR_UNSET,
1307 .radio_addr = ADDR_UNSET,
1308 }, 1247 },
1309 1248
1310 /* ---- card 0x3c ---------------------------------- */ 1249 /* ---- card 0x3c ---------------------------------- */
@@ -1312,8 +1251,8 @@ struct tvcard bttv_tvcards[] = {
1312 /* Philip Blundell <philb@gnu.org> */ 1251 /* Philip Blundell <philb@gnu.org> */
1313 .name = "Modular Technology MM100PCTV", 1252 .name = "Modular Technology MM100PCTV",
1314 .video_inputs = 2, 1253 .video_inputs = 2,
1315 .audio_inputs = 2, 1254 /* .audio_inputs= 2, */
1316 .svhs = UNSET, 1255 .svhs = NO_SVHS,
1317 .gpiomask = 11, 1256 .gpiomask = 11,
1318 .muxsel = { 2, 3, 1, 1 }, 1257 .muxsel = { 2, 3, 1, 1 },
1319 .gpiomux = { 2, 0, 0, 1 }, 1258 .gpiomux = { 2, 0, 0, 1 },
@@ -1321,13 +1260,12 @@ struct tvcard bttv_tvcards[] = {
1321 .pll = PLL_35, 1260 .pll = PLL_35,
1322 .tuner_type = TUNER_TEMIC_PAL, 1261 .tuner_type = TUNER_TEMIC_PAL,
1323 .tuner_addr = ADDR_UNSET, 1262 .tuner_addr = ADDR_UNSET,
1324 .radio_addr = ADDR_UNSET,
1325 }, 1263 },
1326 [BTTV_BOARD_GMV1] = { 1264 [BTTV_BOARD_GMV1] = {
1327 /* Adrian Cox <adrian@humboldt.co.uk */ 1265 /* Adrian Cox <adrian@humboldt.co.uk */
1328 .name = "AG Electronics GMV1", 1266 .name = "AG Electronics GMV1",
1329 .video_inputs = 2, 1267 .video_inputs = 2,
1330 .audio_inputs = 0, 1268 /* .audio_inputs= 0, */
1331 .svhs = 1, 1269 .svhs = 1,
1332 .gpiomask = 0xF, 1270 .gpiomask = 0xF,
1333 .muxsel = { 2, 2 }, 1271 .muxsel = { 2, 2 },
@@ -1337,7 +1275,6 @@ struct tvcard bttv_tvcards[] = {
1337 .pll = PLL_28, 1275 .pll = PLL_28,
1338 .tuner_type = TUNER_ABSENT, 1276 .tuner_type = TUNER_ABSENT,
1339 .tuner_addr = ADDR_UNSET, 1277 .tuner_addr = ADDR_UNSET,
1340 .radio_addr = ADDR_UNSET,
1341 }, 1278 },
1342 [BTTV_BOARD_BESTBUY_EASYTV2] = { 1279 [BTTV_BOARD_BESTBUY_EASYTV2] = {
1343 /* Miguel Angel Alvarez <maacruz@navegalia.com> 1280 /* Miguel Angel Alvarez <maacruz@navegalia.com>
@@ -1345,7 +1282,7 @@ struct tvcard bttv_tvcards[] = {
1345 special thanks to Informatica Mieres for providing the card */ 1282 special thanks to Informatica Mieres for providing the card */
1346 .name = "Askey CPH061/ BESTBUY Easy TV (bt878)", 1283 .name = "Askey CPH061/ BESTBUY Easy TV (bt878)",
1347 .video_inputs = 3, 1284 .video_inputs = 3,
1348 .audio_inputs = 2, 1285 /* .audio_inputs= 2, */
1349 .svhs = 2, 1286 .svhs = 2,
1350 .gpiomask = 0xFF, 1287 .gpiomask = 0xFF,
1351 .muxsel = { 2, 3, 1, 0 }, 1288 .muxsel = { 2, 3, 1, 0 },
@@ -1355,13 +1292,12 @@ struct tvcard bttv_tvcards[] = {
1355 .pll = PLL_28, 1292 .pll = PLL_28,
1356 .tuner_type = TUNER_PHILIPS_PAL, 1293 .tuner_type = TUNER_PHILIPS_PAL,
1357 .tuner_addr = ADDR_UNSET, 1294 .tuner_addr = ADDR_UNSET,
1358 .radio_addr = ADDR_UNSET,
1359 }, 1295 },
1360 [BTTV_BOARD_ATI_TVWONDER] = { 1296 [BTTV_BOARD_ATI_TVWONDER] = {
1361 /* Lukas Gebauer <geby@volny.cz> */ 1297 /* Lukas Gebauer <geby@volny.cz> */
1362 .name = "ATI TV-Wonder", 1298 .name = "ATI TV-Wonder",
1363 .video_inputs = 3, 1299 .video_inputs = 3,
1364 .audio_inputs = 1, 1300 /* .audio_inputs= 1, */
1365 .svhs = 2, 1301 .svhs = 2,
1366 .gpiomask = 0xf03f, 1302 .gpiomask = 0xf03f,
1367 .muxsel = { 2, 3, 1, 0 }, 1303 .muxsel = { 2, 3, 1, 0 },
@@ -1370,7 +1306,6 @@ struct tvcard bttv_tvcards[] = {
1370 .pll = PLL_28, 1306 .pll = PLL_28,
1371 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, 1307 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
1372 .tuner_addr = ADDR_UNSET, 1308 .tuner_addr = ADDR_UNSET,
1373 .radio_addr = ADDR_UNSET,
1374 }, 1309 },
1375 1310
1376 /* ---- card 0x40 ---------------------------------- */ 1311 /* ---- card 0x40 ---------------------------------- */
@@ -1378,8 +1313,8 @@ struct tvcard bttv_tvcards[] = {
1378 /* Lukas Gebauer <geby@volny.cz> */ 1313 /* Lukas Gebauer <geby@volny.cz> */
1379 .name = "ATI TV-Wonder VE", 1314 .name = "ATI TV-Wonder VE",
1380 .video_inputs = 2, 1315 .video_inputs = 2,
1381 .audio_inputs = 1, 1316 /* .audio_inputs= 1, */
1382 .svhs = UNSET, 1317 .svhs = NO_SVHS,
1383 .gpiomask = 1, 1318 .gpiomask = 1,
1384 .muxsel = { 2, 3, 0, 1 }, 1319 .muxsel = { 2, 3, 0, 1 },
1385 .gpiomux = { 0, 0, 1, 0 }, 1320 .gpiomux = { 0, 0, 1, 0 },
@@ -1387,13 +1322,12 @@ struct tvcard bttv_tvcards[] = {
1387 .pll = PLL_28, 1322 .pll = PLL_28,
1388 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, 1323 .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
1389 .tuner_addr = ADDR_UNSET, 1324 .tuner_addr = ADDR_UNSET,
1390 .radio_addr = ADDR_UNSET,
1391 }, 1325 },
1392 [BTTV_BOARD_FLYVIDEO2000] = { 1326 [BTTV_BOARD_FLYVIDEO2000] = {
1393 /* DeeJay <deejay@westel900.net (2000S) */ 1327 /* DeeJay <deejay@westel900.net (2000S) */
1394 .name = "Lifeview FlyVideo 2000S LR90", 1328 .name = "Lifeview FlyVideo 2000S LR90",
1395 .video_inputs = 3, 1329 .video_inputs = 3,
1396 .audio_inputs = 3, 1330 /* .audio_inputs= 3, */
1397 .svhs = 2, 1331 .svhs = 2,
1398 .gpiomask = 0x18e0, 1332 .gpiomask = 0x18e0,
1399 .muxsel = { 2, 3, 0, 1 }, 1333 .muxsel = { 2, 3, 0, 1 },
@@ -1409,12 +1343,11 @@ struct tvcard bttv_tvcards[] = {
1409 .pll = PLL_28, 1343 .pll = PLL_28,
1410 .tuner_type = TUNER_PHILIPS_PAL, 1344 .tuner_type = TUNER_PHILIPS_PAL,
1411 .tuner_addr = ADDR_UNSET, 1345 .tuner_addr = ADDR_UNSET,
1412 .radio_addr = ADDR_UNSET,
1413 }, 1346 },
1414 [BTTV_BOARD_TERRATVALUER] = { 1347 [BTTV_BOARD_TERRATVALUER] = {
1415 .name = "Terratec TValueRadio", 1348 .name = "Terratec TValueRadio",
1416 .video_inputs = 3, 1349 .video_inputs = 3,
1417 .audio_inputs = 1, 1350 /* .audio_inputs= 1, */
1418 .svhs = 2, 1351 .svhs = 2,
1419 .gpiomask = 0xffff00, 1352 .gpiomask = 0xffff00,
1420 .muxsel = { 2, 3, 1, 1 }, 1353 .muxsel = { 2, 3, 1, 1 },
@@ -1424,14 +1357,13 @@ struct tvcard bttv_tvcards[] = {
1424 .pll = PLL_28, 1357 .pll = PLL_28,
1425 .tuner_type = TUNER_PHILIPS_PAL, 1358 .tuner_type = TUNER_PHILIPS_PAL,
1426 .tuner_addr = ADDR_UNSET, 1359 .tuner_addr = ADDR_UNSET,
1427 .radio_addr = ADDR_UNSET,
1428 .has_radio = 1, 1360 .has_radio = 1,
1429 }, 1361 },
1430 [BTTV_BOARD_GVBCTV4PCI] = { 1362 [BTTV_BOARD_GVBCTV4PCI] = {
1431 /* TANAKA Kei <peg00625@nifty.com> */ 1363 /* TANAKA Kei <peg00625@nifty.com> */
1432 .name = "IODATA GV-BCTV4/PCI", 1364 .name = "IODATA GV-BCTV4/PCI",
1433 .video_inputs = 3, 1365 .video_inputs = 3,
1434 .audio_inputs = 1, 1366 /* .audio_inputs= 1, */
1435 .svhs = 2, 1367 .svhs = 2,
1436 .gpiomask = 0x010f00, 1368 .gpiomask = 0x010f00,
1437 .muxsel = {2, 3, 0, 0 }, 1369 .muxsel = {2, 3, 0, 0 },
@@ -1440,7 +1372,6 @@ struct tvcard bttv_tvcards[] = {
1440 .pll = PLL_28, 1372 .pll = PLL_28,
1441 .tuner_type = TUNER_SHARP_2U5JF5540_NTSC, 1373 .tuner_type = TUNER_SHARP_2U5JF5540_NTSC,
1442 .tuner_addr = ADDR_UNSET, 1374 .tuner_addr = ADDR_UNSET,
1443 .radio_addr = ADDR_UNSET,
1444 .audio_mode_gpio= gvbctv3pci_audio, 1375 .audio_mode_gpio= gvbctv3pci_audio,
1445 }, 1376 },
1446 1377
@@ -1450,8 +1381,8 @@ struct tvcard bttv_tvcards[] = {
1450 /* try "insmod msp3400 simple=0" if you have 1381 /* try "insmod msp3400 simple=0" if you have
1451 * sound problems with this card. */ 1382 * sound problems with this card. */
1452 .video_inputs = 4, 1383 .video_inputs = 4,
1453 .audio_inputs = 1, 1384 /* .audio_inputs= 1, */
1454 .svhs = UNSET, 1385 .svhs = NO_SVHS,
1455 .gpiomask = 0x4f8a00, 1386 .gpiomask = 0x4f8a00,
1456 /* 0x100000: 1=MSP enabled (0=disable again) 1387 /* 0x100000: 1=MSP enabled (0=disable again)
1457 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */ 1388 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
@@ -1462,7 +1393,6 @@ struct tvcard bttv_tvcards[] = {
1462 .muxsel = { 2, 3 ,0 ,1 }, 1393 .muxsel = { 2, 3 ,0 ,1 },
1463 .tuner_type = TUNER_MT2032, 1394 .tuner_type = TUNER_MT2032,
1464 .tuner_addr = ADDR_UNSET, 1395 .tuner_addr = ADDR_UNSET,
1465 .radio_addr = ADDR_UNSET,
1466 .pll = PLL_28, 1396 .pll = PLL_28,
1467 .has_radio = 1, 1397 .has_radio = 1,
1468 }, 1398 },
@@ -1471,8 +1401,8 @@ struct tvcard bttv_tvcards[] = {
1471 /* try "insmod msp3400 simple=0" if you have 1401 /* try "insmod msp3400 simple=0" if you have
1472 * sound problems with this card. */ 1402 * sound problems with this card. */
1473 .video_inputs = 4, 1403 .video_inputs = 4,
1474 .audio_inputs = 1, 1404 /* .audio_inputs= 1, */
1475 .svhs = UNSET, 1405 .svhs = NO_SVHS,
1476 .gpiomask = 0x4f8a00, 1406 .gpiomask = 0x4f8a00,
1477 /* 0x100000: 1=MSP enabled (0=disable again) 1407 /* 0x100000: 1=MSP enabled (0=disable again)
1478 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */ 1408 * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
@@ -1483,7 +1413,6 @@ struct tvcard bttv_tvcards[] = {
1483 .muxsel = { 2, 3 ,0 ,1 }, 1413 .muxsel = { 2, 3 ,0 ,1 },
1484 .tuner_type = TUNER_MT2032, 1414 .tuner_type = TUNER_MT2032,
1485 .tuner_addr = ADDR_UNSET, 1415 .tuner_addr = ADDR_UNSET,
1486 .radio_addr = ADDR_UNSET,
1487 .pll = PLL_28, 1416 .pll = PLL_28,
1488 .has_radio = 1, 1417 .has_radio = 1,
1489 }, 1418 },
@@ -1491,10 +1420,9 @@ struct tvcard bttv_tvcards[] = {
1491 /* Philip Blundell <pb@nexus.co.uk> */ 1420 /* Philip Blundell <pb@nexus.co.uk> */
1492 .name = "Active Imaging AIMMS", 1421 .name = "Active Imaging AIMMS",
1493 .video_inputs = 1, 1422 .video_inputs = 1,
1494 .audio_inputs = 0, 1423 /* .audio_inputs= 0, */
1495 .tuner_type = TUNER_ABSENT, 1424 .tuner_type = TUNER_ABSENT,
1496 .tuner_addr = ADDR_UNSET, 1425 .tuner_addr = ADDR_UNSET,
1497 .radio_addr = ADDR_UNSET,
1498 .pll = PLL_28, 1426 .pll = PLL_28,
1499 .muxsel = { 2 }, 1427 .muxsel = { 2 },
1500 .gpiomask = 0 1428 .gpiomask = 0
@@ -1503,7 +1431,7 @@ struct tvcard bttv_tvcards[] = {
1503 /* Tomasz Pyra <hellfire@sedez.iq.pl> */ 1431 /* Tomasz Pyra <hellfire@sedez.iq.pl> */
1504 .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)", 1432 .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)",
1505 .video_inputs = 3, 1433 .video_inputs = 3,
1506 .audio_inputs = 4, 1434 /* .audio_inputs= 4, */
1507 .svhs = 2, 1435 .svhs = 2,
1508 .gpiomask = 15, 1436 .gpiomask = 15,
1509 .muxsel = { 2, 3, 1, 1 }, 1437 .muxsel = { 2, 3, 1, 1 },
@@ -1513,7 +1441,6 @@ struct tvcard bttv_tvcards[] = {
1513 .pll = PLL_28, 1441 .pll = PLL_28,
1514 .tuner_type = TUNER_LG_PAL_I_FM, 1442 .tuner_type = TUNER_LG_PAL_I_FM,
1515 .tuner_addr = ADDR_UNSET, 1443 .tuner_addr = ADDR_UNSET,
1516 .radio_addr = ADDR_UNSET,
1517 .has_remote = 1, 1444 .has_remote = 1,
1518 /* GPIO wiring: 1445 /* GPIO wiring:
1519 GPIO0: U4.A0 (hef4052bt) 1446 GPIO0: U4.A0 (hef4052bt)
@@ -1526,14 +1453,13 @@ struct tvcard bttv_tvcards[] = {
1526 [BTTV_BOARD_FLYVIDEO98EZ] = { 1453 [BTTV_BOARD_FLYVIDEO98EZ] = {
1527 .name = "Lifeview FlyVideo 98EZ (capture only) LR51", 1454 .name = "Lifeview FlyVideo 98EZ (capture only) LR51",
1528 .video_inputs = 4, 1455 .video_inputs = 4,
1529 .audio_inputs = 0, 1456 /* .audio_inputs= 0, */
1530 .svhs = 2, 1457 .svhs = 2,
1531 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */ 1458 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */
1532 .pll = PLL_28, 1459 .pll = PLL_28,
1533 .no_msp34xx = 1, 1460 .no_msp34xx = 1,
1534 .tuner_type = TUNER_ABSENT, 1461 .tuner_type = TUNER_ABSENT,
1535 .tuner_addr = ADDR_UNSET, 1462 .tuner_addr = ADDR_UNSET,
1536 .radio_addr = ADDR_UNSET,
1537 }, 1463 },
1538 1464
1539 /* ---- card 0x48 ---------------------------------- */ 1465 /* ---- card 0x48 ---------------------------------- */
@@ -1541,7 +1467,7 @@ struct tvcard bttv_tvcards[] = {
1541 /* Dariusz Kowalewski <darekk@automex.pl> */ 1467 /* Dariusz Kowalewski <darekk@automex.pl> */
1542 .name = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)", 1468 .name = "Prolink Pixelview PV-BT878P+9B (PlayTV Pro rev.9B FM+NICAM)",
1543 .video_inputs = 4, 1469 .video_inputs = 4,
1544 .audio_inputs = 1, 1470 /* .audio_inputs= 1, */
1545 .svhs = 2, 1471 .svhs = 2,
1546 .gpiomask = 0x3f, 1472 .gpiomask = 0x3f,
1547 .muxsel = { 2, 3, 1, 1 }, 1473 .muxsel = { 2, 3, 1, 1 },
@@ -1553,7 +1479,6 @@ struct tvcard bttv_tvcards[] = {
1553 .pll = PLL_28, 1479 .pll = PLL_28,
1554 .tuner_type = TUNER_PHILIPS_PAL, 1480 .tuner_type = TUNER_PHILIPS_PAL,
1555 .tuner_addr = ADDR_UNSET, 1481 .tuner_addr = ADDR_UNSET,
1556 .radio_addr = ADDR_UNSET,
1557 .audio_mode_gpio= pvbt878p9b_audio, /* Note: not all cards have stereo */ 1482 .audio_mode_gpio= pvbt878p9b_audio, /* Note: not all cards have stereo */
1558 .has_radio = 1, /* Note: not all cards have radio */ 1483 .has_radio = 1, /* Note: not all cards have radio */
1559 .has_remote = 1, 1484 .has_remote = 1,
@@ -1570,7 +1495,7 @@ struct tvcard bttv_tvcards[] = {
1570 /* you must jumper JP5 for the card to work */ 1495 /* you must jumper JP5 for the card to work */
1571 .name = "Sensoray 311", 1496 .name = "Sensoray 311",
1572 .video_inputs = 5, 1497 .video_inputs = 5,
1573 .audio_inputs = 0, 1498 /* .audio_inputs= 0, */
1574 .svhs = 4, 1499 .svhs = 4,
1575 .gpiomask = 0, 1500 .gpiomask = 0,
1576 .muxsel = { 2, 3, 1, 0, 0 }, 1501 .muxsel = { 2, 3, 1, 0, 0 },
@@ -1578,14 +1503,13 @@ struct tvcard bttv_tvcards[] = {
1578 .needs_tvaudio = 0, 1503 .needs_tvaudio = 0,
1579 .tuner_type = TUNER_ABSENT, 1504 .tuner_type = TUNER_ABSENT,
1580 .tuner_addr = ADDR_UNSET, 1505 .tuner_addr = ADDR_UNSET,
1581 .radio_addr = ADDR_UNSET,
1582 }, 1506 },
1583 [BTTV_BOARD_RV605] = { 1507 [BTTV_BOARD_RV605] = {
1584 /* Miguel Freitas <miguel@cetuc.puc-rio.br> */ 1508 /* Miguel Freitas <miguel@cetuc.puc-rio.br> */
1585 .name = "RemoteVision MX (RV605)", 1509 .name = "RemoteVision MX (RV605)",
1586 .video_inputs = 16, 1510 .video_inputs = 16,
1587 .audio_inputs = 0, 1511 /* .audio_inputs= 0, */
1588 .svhs = UNSET, 1512 .svhs = NO_SVHS,
1589 .gpiomask = 0x00, 1513 .gpiomask = 0x00,
1590 .gpiomask2 = 0x07ff, 1514 .gpiomask2 = 0x07ff,
1591 .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, 1515 .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03,
@@ -1594,13 +1518,12 @@ struct tvcard bttv_tvcards[] = {
1594 .no_tda9875 = 1, 1518 .no_tda9875 = 1,
1595 .tuner_type = TUNER_ABSENT, 1519 .tuner_type = TUNER_ABSENT,
1596 .tuner_addr = ADDR_UNSET, 1520 .tuner_addr = ADDR_UNSET,
1597 .radio_addr = ADDR_UNSET,
1598 .muxsel_hook = rv605_muxsel, 1521 .muxsel_hook = rv605_muxsel,
1599 }, 1522 },
1600 [BTTV_BOARD_POWERCLR_MTV878] = { 1523 [BTTV_BOARD_POWERCLR_MTV878] = {
1601 .name = "Powercolor MTV878/ MTV878R/ MTV878F", 1524 .name = "Powercolor MTV878/ MTV878R/ MTV878F",
1602 .video_inputs = 3, 1525 .video_inputs = 3,
1603 .audio_inputs = 2, 1526 /* .audio_inputs= 2, */
1604 .svhs = 2, 1527 .svhs = 2,
1605 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */ 1528 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
1606 .muxsel = { 2, 1, 1, }, 1529 .muxsel = { 2, 1, 1, },
@@ -1609,7 +1532,6 @@ struct tvcard bttv_tvcards[] = {
1609 .needs_tvaudio = 0, 1532 .needs_tvaudio = 0,
1610 .tuner_type = TUNER_PHILIPS_PAL, 1533 .tuner_type = TUNER_PHILIPS_PAL,
1611 .tuner_addr = ADDR_UNSET, 1534 .tuner_addr = ADDR_UNSET,
1612 .radio_addr = ADDR_UNSET,
1613 .pll = PLL_28, 1535 .pll = PLL_28,
1614 .has_radio = 1, 1536 .has_radio = 1,
1615 }, 1537 },
@@ -1619,7 +1541,7 @@ struct tvcard bttv_tvcards[] = {
1619 /* Masaki Suzuki <masaki@btree.org> */ 1541 /* Masaki Suzuki <masaki@btree.org> */
1620 .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)", 1542 .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)",
1621 .video_inputs = 3, 1543 .video_inputs = 3,
1622 .audio_inputs = 1, 1544 /* .audio_inputs= 1, */
1623 .svhs = 2, 1545 .svhs = 2,
1624 .gpiomask = 0x140007, 1546 .gpiomask = 0x140007,
1625 .muxsel = { 2, 3, 1, 1 }, 1547 .muxsel = { 2, 3, 1, 1 },
@@ -1627,14 +1549,13 @@ struct tvcard bttv_tvcards[] = {
1627 .gpiomute = 4, 1549 .gpiomute = 4,
1628 .tuner_type = TUNER_PHILIPS_NTSC, 1550 .tuner_type = TUNER_PHILIPS_NTSC,
1629 .tuner_addr = ADDR_UNSET, 1551 .tuner_addr = ADDR_UNSET,
1630 .radio_addr = ADDR_UNSET,
1631 .audio_mode_gpio= windvr_audio, 1552 .audio_mode_gpio= windvr_audio,
1632 }, 1553 },
1633 [BTTV_BOARD_GRANDTEC_MULTI] = { 1554 [BTTV_BOARD_GRANDTEC_MULTI] = {
1634 .name = "GrandTec Multi Capture Card (Bt878)", 1555 .name = "GrandTec Multi Capture Card (Bt878)",
1635 .video_inputs = 4, 1556 .video_inputs = 4,
1636 .audio_inputs = 0, 1557 /* .audio_inputs= 0, */
1637 .svhs = UNSET, 1558 .svhs = NO_SVHS,
1638 .gpiomask = 0, 1559 .gpiomask = 0,
1639 .muxsel = { 2, 3, 1, 0 }, 1560 .muxsel = { 2, 3, 1, 0 },
1640 .gpiomux = { 0 }, 1561 .gpiomux = { 0 },
@@ -1643,12 +1564,11 @@ struct tvcard bttv_tvcards[] = {
1643 .pll = PLL_28, 1564 .pll = PLL_28,
1644 .tuner_type = TUNER_ABSENT, 1565 .tuner_type = TUNER_ABSENT,
1645 .tuner_addr = ADDR_UNSET, 1566 .tuner_addr = ADDR_UNSET,
1646 .radio_addr = ADDR_UNSET,
1647 }, 1567 },
1648 [BTTV_BOARD_KWORLD] = { 1568 [BTTV_BOARD_KWORLD] = {
1649 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", 1569 .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
1650 .video_inputs = 4, 1570 .video_inputs = 4,
1651 .audio_inputs = 3, 1571 /* .audio_inputs= 3, */
1652 .svhs = 2, 1572 .svhs = 2,
1653 .gpiomask = 7, 1573 .gpiomask = 7,
1654 .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */ 1574 .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */
@@ -1665,7 +1585,6 @@ struct tvcard bttv_tvcards[] = {
1665 .pll = PLL_28, 1585 .pll = PLL_28,
1666 .tuner_type = TUNER_PHILIPS_PAL, 1586 .tuner_type = TUNER_PHILIPS_PAL,
1667 .tuner_addr = ADDR_UNSET, 1587 .tuner_addr = ADDR_UNSET,
1668 .radio_addr = ADDR_UNSET,
1669 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and 1588 /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
1670 radio signal strength indicators work fine. */ 1589 radio signal strength indicators work fine. */
1671 .has_radio = 1, 1590 .has_radio = 1,
@@ -1683,26 +1602,24 @@ struct tvcard bttv_tvcards[] = {
1683 /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */ 1602 /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */
1684 .name = "DSP Design TCVIDEO", 1603 .name = "DSP Design TCVIDEO",
1685 .video_inputs = 4, 1604 .video_inputs = 4,
1686 .svhs = UNSET, 1605 .svhs = NO_SVHS,
1687 .muxsel = { 2, 3, 1, 0 }, 1606 .muxsel = { 2, 3, 1, 0 },
1688 .pll = PLL_28, 1607 .pll = PLL_28,
1689 .tuner_type = UNSET, 1608 .tuner_type = UNSET,
1690 .tuner_addr = ADDR_UNSET, 1609 .tuner_addr = ADDR_UNSET,
1691 .radio_addr = ADDR_UNSET,
1692 }, 1610 },
1693 1611
1694 /* ---- card 0x50 ---------------------------------- */ 1612 /* ---- card 0x50 ---------------------------------- */
1695 [BTTV_BOARD_HAUPPAUGEPVR] = { 1613 [BTTV_BOARD_HAUPPAUGEPVR] = {
1696 .name = "Hauppauge WinTV PVR", 1614 .name = "Hauppauge WinTV PVR",
1697 .video_inputs = 4, 1615 .video_inputs = 4,
1698 .audio_inputs = 1, 1616 /* .audio_inputs= 1, */
1699 .svhs = 2, 1617 .svhs = 2,
1700 .muxsel = { 2, 0, 1, 1 }, 1618 .muxsel = { 2, 0, 1, 1 },
1701 .needs_tvaudio = 1, 1619 .needs_tvaudio = 1,
1702 .pll = PLL_28, 1620 .pll = PLL_28,
1703 .tuner_type = UNSET, 1621 .tuner_type = UNSET,
1704 .tuner_addr = ADDR_UNSET, 1622 .tuner_addr = ADDR_UNSET,
1705 .radio_addr = ADDR_UNSET,
1706 1623
1707 .gpiomask = 7, 1624 .gpiomask = 7,
1708 .gpiomux = {7}, 1625 .gpiomux = {7},
@@ -1710,7 +1627,7 @@ struct tvcard bttv_tvcards[] = {
1710 [BTTV_BOARD_GVBCTV5PCI] = { 1627 [BTTV_BOARD_GVBCTV5PCI] = {
1711 .name = "IODATA GV-BCTV5/PCI", 1628 .name = "IODATA GV-BCTV5/PCI",
1712 .video_inputs = 3, 1629 .video_inputs = 3,
1713 .audio_inputs = 1, 1630 /* .audio_inputs= 1, */
1714 .svhs = 2, 1631 .svhs = 2,
1715 .gpiomask = 0x0f0f80, 1632 .gpiomask = 0x0f0f80,
1716 .muxsel = {2, 3, 1, 0 }, 1633 .muxsel = {2, 3, 1, 0 },
@@ -1720,20 +1637,18 @@ struct tvcard bttv_tvcards[] = {
1720 .pll = PLL_28, 1637 .pll = PLL_28,
1721 .tuner_type = TUNER_PHILIPS_NTSC_M, 1638 .tuner_type = TUNER_PHILIPS_NTSC_M,
1722 .tuner_addr = ADDR_UNSET, 1639 .tuner_addr = ADDR_UNSET,
1723 .radio_addr = ADDR_UNSET,
1724 .audio_mode_gpio= gvbctv5pci_audio, 1640 .audio_mode_gpio= gvbctv5pci_audio,
1725 .has_radio = 1, 1641 .has_radio = 1,
1726 }, 1642 },
1727 [BTTV_BOARD_OSPREY1x0] = { 1643 [BTTV_BOARD_OSPREY1x0] = {
1728 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */ 1644 .name = "Osprey 100/150 (878)", /* 0x1(2|3)-45C6-C1 */
1729 .video_inputs = 4, /* id-inputs-clock */ 1645 .video_inputs = 4, /* id-inputs-clock */
1730 .audio_inputs = 0, 1646 /* .audio_inputs= 0, */
1731 .svhs = 3, 1647 .svhs = 3,
1732 .muxsel = { 3, 2, 0, 1 }, 1648 .muxsel = { 3, 2, 0, 1 },
1733 .pll = PLL_28, 1649 .pll = PLL_28,
1734 .tuner_type = TUNER_ABSENT, 1650 .tuner_type = TUNER_ABSENT,
1735 .tuner_addr = ADDR_UNSET, 1651 .tuner_addr = ADDR_UNSET,
1736 .radio_addr = ADDR_UNSET,
1737 .no_msp34xx = 1, 1652 .no_msp34xx = 1,
1738 .no_tda9875 = 1, 1653 .no_tda9875 = 1,
1739 .no_tda7432 = 1, 1654 .no_tda7432 = 1,
@@ -1741,13 +1656,12 @@ struct tvcard bttv_tvcards[] = {
1741 [BTTV_BOARD_OSPREY1x0_848] = { 1656 [BTTV_BOARD_OSPREY1x0_848] = {
1742 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */ 1657 .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */
1743 .video_inputs = 3, 1658 .video_inputs = 3,
1744 .audio_inputs = 0, 1659 /* .audio_inputs= 0, */
1745 .svhs = 2, 1660 .svhs = 2,
1746 .muxsel = { 2, 3, 1 }, 1661 .muxsel = { 2, 3, 1 },
1747 .pll = PLL_28, 1662 .pll = PLL_28,
1748 .tuner_type = TUNER_ABSENT, 1663 .tuner_type = TUNER_ABSENT,
1749 .tuner_addr = ADDR_UNSET, 1664 .tuner_addr = ADDR_UNSET,
1750 .radio_addr = ADDR_UNSET,
1751 .no_msp34xx = 1, 1665 .no_msp34xx = 1,
1752 .no_tda9875 = 1, 1666 .no_tda9875 = 1,
1753 .no_tda7432 = 1, 1667 .no_tda7432 = 1,
@@ -1757,13 +1671,12 @@ struct tvcard bttv_tvcards[] = {
1757 [BTTV_BOARD_OSPREY101_848] = { 1671 [BTTV_BOARD_OSPREY101_848] = {
1758 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */ 1672 .name = "Osprey 101 (848)", /* 0x05-40C0-C1 */
1759 .video_inputs = 2, 1673 .video_inputs = 2,
1760 .audio_inputs = 0, 1674 /* .audio_inputs= 0, */
1761 .svhs = 1, 1675 .svhs = 1,
1762 .muxsel = { 3, 1 }, 1676 .muxsel = { 3, 1 },
1763 .pll = PLL_28, 1677 .pll = PLL_28,
1764 .tuner_type = TUNER_ABSENT, 1678 .tuner_type = TUNER_ABSENT,
1765 .tuner_addr = ADDR_UNSET, 1679 .tuner_addr = ADDR_UNSET,
1766 .radio_addr = ADDR_UNSET,
1767 .no_msp34xx = 1, 1680 .no_msp34xx = 1,
1768 .no_tda9875 = 1, 1681 .no_tda9875 = 1,
1769 .no_tda7432 = 1, 1682 .no_tda7432 = 1,
@@ -1771,13 +1684,12 @@ struct tvcard bttv_tvcards[] = {
1771 [BTTV_BOARD_OSPREY1x1] = { 1684 [BTTV_BOARD_OSPREY1x1] = {
1772 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */ 1685 .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */
1773 .video_inputs = 1, 1686 .video_inputs = 1,
1774 .audio_inputs = 0, 1687 /* .audio_inputs= 0, */
1775 .svhs = UNSET, 1688 .svhs = NO_SVHS,
1776 .muxsel = { 0 }, 1689 .muxsel = { 0 },
1777 .pll = PLL_28, 1690 .pll = PLL_28,
1778 .tuner_type = TUNER_ABSENT, 1691 .tuner_type = TUNER_ABSENT,
1779 .tuner_addr = ADDR_UNSET, 1692 .tuner_addr = ADDR_UNSET,
1780 .radio_addr = ADDR_UNSET,
1781 .no_msp34xx = 1, 1693 .no_msp34xx = 1,
1782 .no_tda9875 = 1, 1694 .no_tda9875 = 1,
1783 .no_tda7432 = 1, 1695 .no_tda7432 = 1,
@@ -1785,13 +1697,12 @@ struct tvcard bttv_tvcards[] = {
1785 [BTTV_BOARD_OSPREY1x1_SVID] = { 1697 [BTTV_BOARD_OSPREY1x1_SVID] = {
1786 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */ 1698 .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */
1787 .video_inputs = 2, 1699 .video_inputs = 2,
1788 .audio_inputs = 0, 1700 /* .audio_inputs= 0, */
1789 .svhs = 1, 1701 .svhs = 1,
1790 .muxsel = { 0, 1 }, 1702 .muxsel = { 0, 1 },
1791 .pll = PLL_28, 1703 .pll = PLL_28,
1792 .tuner_type = TUNER_ABSENT, 1704 .tuner_type = TUNER_ABSENT,
1793 .tuner_addr = ADDR_UNSET, 1705 .tuner_addr = ADDR_UNSET,
1794 .radio_addr = ADDR_UNSET,
1795 .no_msp34xx = 1, 1706 .no_msp34xx = 1,
1796 .no_tda9875 = 1, 1707 .no_tda9875 = 1,
1797 .no_tda7432 = 1, 1708 .no_tda7432 = 1,
@@ -1799,13 +1710,12 @@ struct tvcard bttv_tvcards[] = {
1799 [BTTV_BOARD_OSPREY2xx] = { 1710 [BTTV_BOARD_OSPREY2xx] = {
1800 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */ 1711 .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */
1801 .video_inputs = 1, 1712 .video_inputs = 1,
1802 .audio_inputs = 1, 1713 /* .audio_inputs= 1, */
1803 .svhs = UNSET, 1714 .svhs = NO_SVHS,
1804 .muxsel = { 0 }, 1715 .muxsel = { 0 },
1805 .pll = PLL_28, 1716 .pll = PLL_28,
1806 .tuner_type = TUNER_ABSENT, 1717 .tuner_type = TUNER_ABSENT,
1807 .tuner_addr = ADDR_UNSET, 1718 .tuner_addr = ADDR_UNSET,
1808 .radio_addr = ADDR_UNSET,
1809 .no_msp34xx = 1, 1719 .no_msp34xx = 1,
1810 .no_tda9875 = 1, 1720 .no_tda9875 = 1,
1811 .no_tda7432 = 1, 1721 .no_tda7432 = 1,
@@ -1815,13 +1725,12 @@ struct tvcard bttv_tvcards[] = {
1815 [BTTV_BOARD_OSPREY2x0_SVID] = { 1725 [BTTV_BOARD_OSPREY2x0_SVID] = {
1816 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */ 1726 .name = "Osprey 200/250", /* 0x1(A|B)-00C4-C1 */
1817 .video_inputs = 2, 1727 .video_inputs = 2,
1818 .audio_inputs = 1, 1728 /* .audio_inputs= 1, */
1819 .svhs = 1, 1729 .svhs = 1,
1820 .muxsel = { 0, 1 }, 1730 .muxsel = { 0, 1 },
1821 .pll = PLL_28, 1731 .pll = PLL_28,
1822 .tuner_type = TUNER_ABSENT, 1732 .tuner_type = TUNER_ABSENT,
1823 .tuner_addr = ADDR_UNSET, 1733 .tuner_addr = ADDR_UNSET,
1824 .radio_addr = ADDR_UNSET,
1825 .no_msp34xx = 1, 1734 .no_msp34xx = 1,
1826 .no_tda9875 = 1, 1735 .no_tda9875 = 1,
1827 .no_tda7432 = 1, 1736 .no_tda7432 = 1,
@@ -1829,13 +1738,12 @@ struct tvcard bttv_tvcards[] = {
1829 [BTTV_BOARD_OSPREY2x0] = { 1738 [BTTV_BOARD_OSPREY2x0] = {
1830 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */ 1739 .name = "Osprey 210/220/230", /* 0x1(A|B)-04C0-C1 */
1831 .video_inputs = 2, 1740 .video_inputs = 2,
1832 .audio_inputs = 1, 1741 /* .audio_inputs= 1, */
1833 .svhs = 1, 1742 .svhs = 1,
1834 .muxsel = { 2, 3 }, 1743 .muxsel = { 2, 3 },
1835 .pll = PLL_28, 1744 .pll = PLL_28,
1836 .tuner_type = TUNER_ABSENT, 1745 .tuner_type = TUNER_ABSENT,
1837 .tuner_addr = ADDR_UNSET, 1746 .tuner_addr = ADDR_UNSET,
1838 .radio_addr = ADDR_UNSET,
1839 .no_msp34xx = 1, 1747 .no_msp34xx = 1,
1840 .no_tda9875 = 1, 1748 .no_tda9875 = 1,
1841 .no_tda7432 = 1, 1749 .no_tda7432 = 1,
@@ -1843,13 +1751,12 @@ struct tvcard bttv_tvcards[] = {
1843 [BTTV_BOARD_OSPREY500] = { 1751 [BTTV_BOARD_OSPREY500] = {
1844 .name = "Osprey 500", /* 500 */ 1752 .name = "Osprey 500", /* 500 */
1845 .video_inputs = 2, 1753 .video_inputs = 2,
1846 .audio_inputs = 1, 1754 /* .audio_inputs= 1, */
1847 .svhs = 1, 1755 .svhs = 1,
1848 .muxsel = { 2, 3 }, 1756 .muxsel = { 2, 3 },
1849 .pll = PLL_28, 1757 .pll = PLL_28,
1850 .tuner_type = TUNER_ABSENT, 1758 .tuner_type = TUNER_ABSENT,
1851 .tuner_addr = ADDR_UNSET, 1759 .tuner_addr = ADDR_UNSET,
1852 .radio_addr = ADDR_UNSET,
1853 .no_msp34xx = 1, 1760 .no_msp34xx = 1,
1854 .no_tda9875 = 1, 1761 .no_tda9875 = 1,
1855 .no_tda7432 = 1, 1762 .no_tda7432 = 1,
@@ -1857,11 +1764,10 @@ struct tvcard bttv_tvcards[] = {
1857 [BTTV_BOARD_OSPREY540] = { 1764 [BTTV_BOARD_OSPREY540] = {
1858 .name = "Osprey 540", /* 540 */ 1765 .name = "Osprey 540", /* 540 */
1859 .video_inputs = 4, 1766 .video_inputs = 4,
1860 .audio_inputs = 1, 1767 /* .audio_inputs= 1, */
1861 .pll = PLL_28, 1768 .pll = PLL_28,
1862 .tuner_type = TUNER_ABSENT, 1769 .tuner_type = TUNER_ABSENT,
1863 .tuner_addr = ADDR_UNSET, 1770 .tuner_addr = ADDR_UNSET,
1864 .radio_addr = ADDR_UNSET,
1865 .no_msp34xx = 1, 1771 .no_msp34xx = 1,
1866 .no_tda9875 = 1, 1772 .no_tda9875 = 1,
1867 .no_tda7432 = 1, 1773 .no_tda7432 = 1,
@@ -1871,13 +1777,12 @@ struct tvcard bttv_tvcards[] = {
1871 [BTTV_BOARD_OSPREY2000] = { 1777 [BTTV_BOARD_OSPREY2000] = {
1872 .name = "Osprey 2000", /* 2000 */ 1778 .name = "Osprey 2000", /* 2000 */
1873 .video_inputs = 2, 1779 .video_inputs = 2,
1874 .audio_inputs = 1, 1780 /* .audio_inputs= 1, */
1875 .svhs = 1, 1781 .svhs = 1,
1876 .muxsel = { 2, 3 }, 1782 .muxsel = { 2, 3 },
1877 .pll = PLL_28, 1783 .pll = PLL_28,
1878 .tuner_type = TUNER_ABSENT, 1784 .tuner_type = TUNER_ABSENT,
1879 .tuner_addr = ADDR_UNSET, 1785 .tuner_addr = ADDR_UNSET,
1880 .radio_addr = ADDR_UNSET,
1881 .no_msp34xx = 1, 1786 .no_msp34xx = 1,
1882 .no_tda9875 = 1, 1787 .no_tda9875 = 1,
1883 .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */ 1788 .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */
@@ -1886,11 +1791,10 @@ struct tvcard bttv_tvcards[] = {
1886 /* M G Berberich <berberic@forwiss.uni-passau.de> */ 1791 /* M G Berberich <berberic@forwiss.uni-passau.de> */
1887 .name = "IDS Eagle", 1792 .name = "IDS Eagle",
1888 .video_inputs = 4, 1793 .video_inputs = 4,
1889 .audio_inputs = 0, 1794 /* .audio_inputs= 0, */
1890 .tuner_type = TUNER_ABSENT, 1795 .tuner_type = TUNER_ABSENT,
1891 .tuner_addr = ADDR_UNSET, 1796 .tuner_addr = ADDR_UNSET,
1892 .radio_addr = ADDR_UNSET, 1797 .svhs = NO_SVHS,
1893 .svhs = UNSET,
1894 .gpiomask = 0, 1798 .gpiomask = 0,
1895 .muxsel = { 0, 1, 2, 3 }, 1799 .muxsel = { 0, 1, 2, 3 },
1896 .muxsel_hook = eagle_muxsel, 1800 .muxsel_hook = eagle_muxsel,
@@ -1901,11 +1805,10 @@ struct tvcard bttv_tvcards[] = {
1901 [BTTV_BOARD_PINNACLESAT] = { 1805 [BTTV_BOARD_PINNACLESAT] = {
1902 .name = "Pinnacle PCTV Sat", 1806 .name = "Pinnacle PCTV Sat",
1903 .video_inputs = 2, 1807 .video_inputs = 2,
1904 .audio_inputs = 0, 1808 /* .audio_inputs= 0, */
1905 .svhs = 1, 1809 .svhs = 1,
1906 .tuner_type = TUNER_ABSENT, 1810 .tuner_type = TUNER_ABSENT,
1907 .tuner_addr = ADDR_UNSET, 1811 .tuner_addr = ADDR_UNSET,
1908 .radio_addr = ADDR_UNSET,
1909 .no_msp34xx = 1, 1812 .no_msp34xx = 1,
1910 .no_tda9875 = 1, 1813 .no_tda9875 = 1,
1911 .no_tda7432 = 1, 1814 .no_tda7432 = 1,
@@ -1917,7 +1820,7 @@ struct tvcard bttv_tvcards[] = {
1917 [BTTV_BOARD_FORMAC_PROTV] = { 1820 [BTTV_BOARD_FORMAC_PROTV] = {
1918 .name = "Formac ProTV II (bt878)", 1821 .name = "Formac ProTV II (bt878)",
1919 .video_inputs = 4, 1822 .video_inputs = 4,
1920 .audio_inputs = 1, 1823 /* .audio_inputs= 1, */
1921 .svhs = 3, 1824 .svhs = 3,
1922 .gpiomask = 2, 1825 .gpiomask = 2,
1923 /* TV, Comp1, Composite over SVID con, SVID */ 1826 /* TV, Comp1, Composite over SVID con, SVID */
@@ -1927,7 +1830,6 @@ struct tvcard bttv_tvcards[] = {
1927 .has_radio = 1, 1830 .has_radio = 1,
1928 .tuner_type = TUNER_PHILIPS_PAL, 1831 .tuner_type = TUNER_PHILIPS_PAL,
1929 .tuner_addr = ADDR_UNSET, 1832 .tuner_addr = ADDR_UNSET,
1930 .radio_addr = ADDR_UNSET,
1931 /* sound routing: 1833 /* sound routing:
1932 GPIO=0x00,0x01,0x03: mute (?) 1834 GPIO=0x00,0x01,0x03: mute (?)
1933 0x02: both TV and radio (tuner: FM1216/I) 1835 0x02: both TV and radio (tuner: FM1216/I)
@@ -1941,8 +1843,8 @@ struct tvcard bttv_tvcards[] = {
1941 [BTTV_BOARD_MACHTV] = { 1843 [BTTV_BOARD_MACHTV] = {
1942 .name = "MachTV", 1844 .name = "MachTV",
1943 .video_inputs = 3, 1845 .video_inputs = 3,
1944 .audio_inputs = 1, 1846 /* .audio_inputs= 1, */
1945 .svhs = UNSET, 1847 .svhs = NO_SVHS,
1946 .gpiomask = 7, 1848 .gpiomask = 7,
1947 .muxsel = { 2, 3, 1, 1}, 1849 .muxsel = { 2, 3, 1, 1},
1948 .gpiomux = { 0, 1, 2, 3}, 1850 .gpiomux = { 0, 1, 2, 3},
@@ -1950,13 +1852,12 @@ struct tvcard bttv_tvcards[] = {
1950 .needs_tvaudio = 1, 1852 .needs_tvaudio = 1,
1951 .tuner_type = TUNER_PHILIPS_PAL, 1853 .tuner_type = TUNER_PHILIPS_PAL,
1952 .tuner_addr = ADDR_UNSET, 1854 .tuner_addr = ADDR_UNSET,
1953 .radio_addr = ADDR_UNSET,
1954 .pll = PLL_28, 1855 .pll = PLL_28,
1955 }, 1856 },
1956 [BTTV_BOARD_EURESYS_PICOLO] = { 1857 [BTTV_BOARD_EURESYS_PICOLO] = {
1957 .name = "Euresys Picolo", 1858 .name = "Euresys Picolo",
1958 .video_inputs = 3, 1859 .video_inputs = 3,
1959 .audio_inputs = 0, 1860 /* .audio_inputs= 0, */
1960 .svhs = 2, 1861 .svhs = 2,
1961 .gpiomask = 0, 1862 .gpiomask = 0,
1962 .no_msp34xx = 1, 1863 .no_msp34xx = 1,
@@ -1966,14 +1867,13 @@ struct tvcard bttv_tvcards[] = {
1966 .pll = PLL_28, 1867 .pll = PLL_28,
1967 .tuner_type = TUNER_ABSENT, 1868 .tuner_type = TUNER_ABSENT,
1968 .tuner_addr = ADDR_UNSET, 1869 .tuner_addr = ADDR_UNSET,
1969 .radio_addr = ADDR_UNSET,
1970 }, 1870 },
1971 [BTTV_BOARD_PV150] = { 1871 [BTTV_BOARD_PV150] = {
1972 /* Luc Van Hoeylandt <luc@e-magic.be> */ 1872 /* Luc Van Hoeylandt <luc@e-magic.be> */
1973 .name = "ProVideo PV150", /* 0x4f */ 1873 .name = "ProVideo PV150", /* 0x4f */
1974 .video_inputs = 2, 1874 .video_inputs = 2,
1975 .audio_inputs = 0, 1875 /* .audio_inputs= 0, */
1976 .svhs = UNSET, 1876 .svhs = NO_SVHS,
1977 .gpiomask = 0, 1877 .gpiomask = 0,
1978 .muxsel = { 2, 3 }, 1878 .muxsel = { 2, 3 },
1979 .gpiomux = { 0 }, 1879 .gpiomux = { 0 },
@@ -1982,14 +1882,13 @@ struct tvcard bttv_tvcards[] = {
1982 .pll = PLL_28, 1882 .pll = PLL_28,
1983 .tuner_type = TUNER_ABSENT, 1883 .tuner_type = TUNER_ABSENT,
1984 .tuner_addr = ADDR_UNSET, 1884 .tuner_addr = ADDR_UNSET,
1985 .radio_addr = ADDR_UNSET,
1986 }, 1885 },
1987 [BTTV_BOARD_AD_TVK503] = { 1886 [BTTV_BOARD_AD_TVK503] = {
1988 /* Hiroshi Takekawa <sian@big.or.jp> */ 1887 /* Hiroshi Takekawa <sian@big.or.jp> */
1989 /* This card lacks subsystem ID */ 1888 /* This card lacks subsystem ID */
1990 .name = "AD-TVK503", /* 0x63 */ 1889 .name = "AD-TVK503", /* 0x63 */
1991 .video_inputs = 4, 1890 .video_inputs = 4,
1992 .audio_inputs = 1, 1891 /* .audio_inputs= 1, */
1993 .svhs = 2, 1892 .svhs = 2,
1994 .gpiomask = 0x001e8007, 1893 .gpiomask = 0x001e8007,
1995 .muxsel = { 2, 3, 1, 0 }, 1894 .muxsel = { 2, 3, 1, 0 },
@@ -2001,7 +1900,6 @@ struct tvcard bttv_tvcards[] = {
2001 .pll = PLL_28, 1900 .pll = PLL_28,
2002 .tuner_type = TUNER_PHILIPS_NTSC, 1901 .tuner_type = TUNER_PHILIPS_NTSC,
2003 .tuner_addr = ADDR_UNSET, 1902 .tuner_addr = ADDR_UNSET,
2004 .radio_addr = ADDR_UNSET,
2005 .audio_mode_gpio= adtvk503_audio, 1903 .audio_mode_gpio= adtvk503_audio,
2006 }, 1904 },
2007 1905
@@ -2009,7 +1907,7 @@ struct tvcard bttv_tvcards[] = {
2009 [BTTV_BOARD_HERCULES_SM_TV] = { 1907 [BTTV_BOARD_HERCULES_SM_TV] = {
2010 .name = "Hercules Smart TV Stereo", 1908 .name = "Hercules Smart TV Stereo",
2011 .video_inputs = 4, 1909 .video_inputs = 4,
2012 .audio_inputs = 1, 1910 /* .audio_inputs= 1, */
2013 .svhs = 2, 1911 .svhs = 2,
2014 .gpiomask = 0x00, 1912 .gpiomask = 0x00,
2015 .muxsel = { 2, 3, 1, 1 }, 1913 .muxsel = { 2, 3, 1, 1 },
@@ -2018,7 +1916,6 @@ struct tvcard bttv_tvcards[] = {
2018 .pll = PLL_28, 1916 .pll = PLL_28,
2019 .tuner_type = TUNER_PHILIPS_PAL, 1917 .tuner_type = TUNER_PHILIPS_PAL,
2020 .tuner_addr = ADDR_UNSET, 1918 .tuner_addr = ADDR_UNSET,
2021 .radio_addr = ADDR_UNSET,
2022 /* Notes: 1919 /* Notes:
2023 - card lacks subsystem ID 1920 - card lacks subsystem ID
2024 - stereo variant w/ daughter board with tda9874a @0xb0 1921 - stereo variant w/ daughter board with tda9874a @0xb0
@@ -2032,7 +1929,7 @@ struct tvcard bttv_tvcards[] = {
2032 [BTTV_BOARD_PACETV] = { 1929 [BTTV_BOARD_PACETV] = {
2033 .name = "Pace TV & Radio Card", 1930 .name = "Pace TV & Radio Card",
2034 .video_inputs = 4, 1931 .video_inputs = 4,
2035 .audio_inputs = 1, 1932 /* .audio_inputs= 1, */
2036 .svhs = 2, 1933 .svhs = 2,
2037 .muxsel = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */ 1934 .muxsel = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */
2038 .gpiomask = 0, 1935 .gpiomask = 0,
@@ -2040,7 +1937,6 @@ struct tvcard bttv_tvcards[] = {
2040 .no_tda7432 = 1, 1937 .no_tda7432 = 1,
2041 .tuner_type = TUNER_PHILIPS_PAL_I, 1938 .tuner_type = TUNER_PHILIPS_PAL_I,
2042 .tuner_addr = ADDR_UNSET, 1939 .tuner_addr = ADDR_UNSET,
2043 .radio_addr = ADDR_UNSET,
2044 .has_radio = 1, 1940 .has_radio = 1,
2045 .pll = PLL_28, 1941 .pll = PLL_28,
2046 /* Bt878, Bt832, FI1246 tuner; no pci subsystem id 1942 /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
@@ -2054,11 +1950,10 @@ struct tvcard bttv_tvcards[] = {
2054 /* Chris Willing <chris@vislab.usyd.edu.au> */ 1950 /* Chris Willing <chris@vislab.usyd.edu.au> */
2055 .name = "IVC-200", 1951 .name = "IVC-200",
2056 .video_inputs = 1, 1952 .video_inputs = 1,
2057 .audio_inputs = 0, 1953 /* .audio_inputs= 0, */
2058 .tuner_type = TUNER_ABSENT, 1954 .tuner_type = TUNER_ABSENT,
2059 .tuner_addr = ADDR_UNSET, 1955 .tuner_addr = ADDR_UNSET,
2060 .radio_addr = ADDR_UNSET, 1956 .svhs = NO_SVHS,
2061 .svhs = UNSET,
2062 .gpiomask = 0xdf, 1957 .gpiomask = 0xdf,
2063 .muxsel = { 2 }, 1958 .muxsel = { 2 },
2064 .pll = PLL_28, 1959 .pll = PLL_28,
@@ -2066,11 +1961,10 @@ struct tvcard bttv_tvcards[] = {
2066 [BTTV_BOARD_IVCE8784] = { 1961 [BTTV_BOARD_IVCE8784] = {
2067 .name = "IVCE-8784", 1962 .name = "IVCE-8784",
2068 .video_inputs = 1, 1963 .video_inputs = 1,
2069 .audio_inputs = 0, 1964 /* .audio_inputs= 0, */
2070 .tuner_type = TUNER_ABSENT, 1965 .tuner_type = TUNER_ABSENT,
2071 .tuner_addr = ADDR_UNSET, 1966 .tuner_addr = ADDR_UNSET,
2072 .radio_addr = ADDR_UNSET, 1967 .svhs = NO_SVHS,
2073 .svhs = UNSET,
2074 .gpiomask = 0xdf, 1968 .gpiomask = 0xdf,
2075 .muxsel = { 2 }, 1969 .muxsel = { 2 },
2076 .pll = PLL_28, 1970 .pll = PLL_28,
@@ -2078,11 +1972,10 @@ struct tvcard bttv_tvcards[] = {
2078 [BTTV_BOARD_XGUARD] = { 1972 [BTTV_BOARD_XGUARD] = {
2079 .name = "Grand X-Guard / Trust 814PCI", 1973 .name = "Grand X-Guard / Trust 814PCI",
2080 .video_inputs = 16, 1974 .video_inputs = 16,
2081 .audio_inputs = 0, 1975 /* .audio_inputs= 0, */
2082 .svhs = UNSET, 1976 .svhs = NO_SVHS,
2083 .tuner_type = TUNER_ABSENT, 1977 .tuner_type = TUNER_ABSENT,
2084 .tuner_addr = ADDR_UNSET, 1978 .tuner_addr = ADDR_UNSET,
2085 .radio_addr = ADDR_UNSET,
2086 .gpiomask2 = 0xff, 1979 .gpiomask2 = 0xff,
2087 .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, 1980 .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
2088 .muxsel_hook = xguard_muxsel, 1981 .muxsel_hook = xguard_muxsel,
@@ -2096,7 +1989,7 @@ struct tvcard bttv_tvcards[] = {
2096 [BTTV_BOARD_NEBULA_DIGITV] = { 1989 [BTTV_BOARD_NEBULA_DIGITV] = {
2097 .name = "Nebula Electronics DigiTV", 1990 .name = "Nebula Electronics DigiTV",
2098 .video_inputs = 1, 1991 .video_inputs = 1,
2099 .svhs = UNSET, 1992 .svhs = NO_SVHS,
2100 .muxsel = { 2, 3, 1, 0 }, 1993 .muxsel = { 2, 3, 1, 0 },
2101 .no_msp34xx = 1, 1994 .no_msp34xx = 1,
2102 .no_tda9875 = 1, 1995 .no_tda9875 = 1,
@@ -2104,7 +1997,6 @@ struct tvcard bttv_tvcards[] = {
2104 .pll = PLL_28, 1997 .pll = PLL_28,
2105 .tuner_type = TUNER_ABSENT, 1998 .tuner_type = TUNER_ABSENT,
2106 .tuner_addr = ADDR_UNSET, 1999 .tuner_addr = ADDR_UNSET,
2107 .radio_addr = ADDR_UNSET,
2108 .has_dvb = 1, 2000 .has_dvb = 1,
2109 .has_remote = 1, 2001 .has_remote = 1,
2110 .gpiomask = 0x1b, 2002 .gpiomask = 0x1b,
@@ -2114,8 +2006,8 @@ struct tvcard bttv_tvcards[] = {
2114 /* Jorge Boncompte - DTI2 <jorge@dti2.net> */ 2006 /* Jorge Boncompte - DTI2 <jorge@dti2.net> */
2115 .name = "ProVideo PV143", 2007 .name = "ProVideo PV143",
2116 .video_inputs = 4, 2008 .video_inputs = 4,
2117 .audio_inputs = 0, 2009 /* .audio_inputs= 0, */
2118 .svhs = UNSET, 2010 .svhs = NO_SVHS,
2119 .gpiomask = 0, 2011 .gpiomask = 0,
2120 .muxsel = { 2, 3, 1, 0 }, 2012 .muxsel = { 2, 3, 1, 0 },
2121 .gpiomux = { 0 }, 2013 .gpiomux = { 0 },
@@ -2124,13 +2016,12 @@ struct tvcard bttv_tvcards[] = {
2124 .pll = PLL_28, 2016 .pll = PLL_28,
2125 .tuner_type = TUNER_ABSENT, 2017 .tuner_type = TUNER_ABSENT,
2126 .tuner_addr = ADDR_UNSET, 2018 .tuner_addr = ADDR_UNSET,
2127 .radio_addr = ADDR_UNSET,
2128 }, 2019 },
2129 [BTTV_BOARD_VD009X1_VD011_MINIDIN] = { 2020 [BTTV_BOARD_VD009X1_VD011_MINIDIN] = {
2130 /* M.Klahr@phytec.de */ 2021 /* M.Klahr@phytec.de */
2131 .name = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)", 2022 .name = "PHYTEC VD-009-X1 VD-011 MiniDIN (bt878)",
2132 .video_inputs = 4, 2023 .video_inputs = 4,
2133 .audio_inputs = 0, 2024 /* .audio_inputs= 0, */
2134 .svhs = 3, 2025 .svhs = 3,
2135 .gpiomask = 0x00, 2026 .gpiomask = 0x00,
2136 .muxsel = { 2, 3, 1, 0 }, 2027 .muxsel = { 2, 3, 1, 0 },
@@ -2139,12 +2030,11 @@ struct tvcard bttv_tvcards[] = {
2139 .pll = PLL_28, 2030 .pll = PLL_28,
2140 .tuner_type = TUNER_ABSENT, 2031 .tuner_type = TUNER_ABSENT,
2141 .tuner_addr = ADDR_UNSET, 2032 .tuner_addr = ADDR_UNSET,
2142 .radio_addr = ADDR_UNSET,
2143 }, 2033 },
2144 [BTTV_BOARD_VD009X1_VD011_COMBI] = { 2034 [BTTV_BOARD_VD009X1_VD011_COMBI] = {
2145 .name = "PHYTEC VD-009-X1 VD-011 Combi (bt878)", 2035 .name = "PHYTEC VD-009-X1 VD-011 Combi (bt878)",
2146 .video_inputs = 4, 2036 .video_inputs = 4,
2147 .audio_inputs = 0, 2037 /* .audio_inputs= 0, */
2148 .svhs = 3, 2038 .svhs = 3,
2149 .gpiomask = 0x00, 2039 .gpiomask = 0x00,
2150 .muxsel = { 2, 3, 1, 1 }, 2040 .muxsel = { 2, 3, 1, 1 },
@@ -2153,14 +2043,13 @@ struct tvcard bttv_tvcards[] = {
2153 .pll = PLL_28, 2043 .pll = PLL_28,
2154 .tuner_type = TUNER_ABSENT, 2044 .tuner_type = TUNER_ABSENT,
2155 .tuner_addr = ADDR_UNSET, 2045 .tuner_addr = ADDR_UNSET,
2156 .radio_addr = ADDR_UNSET,
2157 }, 2046 },
2158 2047
2159 /* ---- card 0x6c ---------------------------------- */ 2048 /* ---- card 0x6c ---------------------------------- */
2160 [BTTV_BOARD_VD009_MINIDIN] = { 2049 [BTTV_BOARD_VD009_MINIDIN] = {
2161 .name = "PHYTEC VD-009 MiniDIN (bt878)", 2050 .name = "PHYTEC VD-009 MiniDIN (bt878)",
2162 .video_inputs = 10, 2051 .video_inputs = 10,
2163 .audio_inputs = 0, 2052 /* .audio_inputs= 0, */
2164 .svhs = 9, 2053 .svhs = 9,
2165 .gpiomask = 0x00, 2054 .gpiomask = 0x00,
2166 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2055 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2172,12 +2061,11 @@ struct tvcard bttv_tvcards[] = {
2172 .pll = PLL_28, 2061 .pll = PLL_28,
2173 .tuner_type = TUNER_ABSENT, 2062 .tuner_type = TUNER_ABSENT,
2174 .tuner_addr = ADDR_UNSET, 2063 .tuner_addr = ADDR_UNSET,
2175 .radio_addr = ADDR_UNSET,
2176 }, 2064 },
2177 [BTTV_BOARD_VD009_COMBI] = { 2065 [BTTV_BOARD_VD009_COMBI] = {
2178 .name = "PHYTEC VD-009 Combi (bt878)", 2066 .name = "PHYTEC VD-009 Combi (bt878)",
2179 .video_inputs = 10, 2067 .video_inputs = 10,
2180 .audio_inputs = 0, 2068 /* .audio_inputs= 0, */
2181 .svhs = 9, 2069 .svhs = 9,
2182 .gpiomask = 0x00, 2070 .gpiomask = 0x00,
2183 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio 2071 .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio
@@ -2189,16 +2077,14 @@ struct tvcard bttv_tvcards[] = {
2189 .pll = PLL_28, 2077 .pll = PLL_28,
2190 .tuner_type = TUNER_ABSENT, 2078 .tuner_type = TUNER_ABSENT,
2191 .tuner_addr = ADDR_UNSET, 2079 .tuner_addr = ADDR_UNSET,
2192 .radio_addr = ADDR_UNSET,
2193 }, 2080 },
2194 [BTTV_BOARD_IVC100] = { 2081 [BTTV_BOARD_IVC100] = {
2195 .name = "IVC-100", 2082 .name = "IVC-100",
2196 .video_inputs = 4, 2083 .video_inputs = 4,
2197 .audio_inputs = 0, 2084 /* .audio_inputs= 0, */
2198 .tuner_type = TUNER_ABSENT, 2085 .tuner_type = TUNER_ABSENT,
2199 .tuner_addr = ADDR_UNSET, 2086 .tuner_addr = ADDR_UNSET,
2200 .radio_addr = ADDR_UNSET, 2087 .svhs = NO_SVHS,
2201 .svhs = UNSET,
2202 .gpiomask = 0xdf, 2088 .gpiomask = 0xdf,
2203 .muxsel = { 2, 3, 1, 0 }, 2089 .muxsel = { 2, 3, 1, 0 },
2204 .pll = PLL_28, 2090 .pll = PLL_28,
@@ -2207,11 +2093,10 @@ struct tvcard bttv_tvcards[] = {
2207 /* IVC-120G - Alan Garfield <alan@fromorbit.com> */ 2093 /* IVC-120G - Alan Garfield <alan@fromorbit.com> */
2208 .name = "IVC-120G", 2094 .name = "IVC-120G",
2209 .video_inputs = 16, 2095 .video_inputs = 16,
2210 .audio_inputs = 0, /* card has no audio */ 2096 /* .audio_inputs= 0, */
2211 .tuner_type = TUNER_ABSENT, 2097 .tuner_type = TUNER_ABSENT,
2212 .tuner_addr = ADDR_UNSET, 2098 .tuner_addr = ADDR_UNSET,
2213 .radio_addr = ADDR_UNSET, 2099 .svhs = NO_SVHS, /* card has no svhs */
2214 .svhs = UNSET, /* card has no svhs */
2215 .needs_tvaudio = 0, 2100 .needs_tvaudio = 0,
2216 .no_msp34xx = 1, 2101 .no_msp34xx = 1,
2217 .no_tda9875 = 1, 2102 .no_tda9875 = 1,
@@ -2227,12 +2112,11 @@ struct tvcard bttv_tvcards[] = {
2227 [BTTV_BOARD_PC_HDTV] = { 2112 [BTTV_BOARD_PC_HDTV] = {
2228 .name = "pcHDTV HD-2000 TV", 2113 .name = "pcHDTV HD-2000 TV",
2229 .video_inputs = 4, 2114 .video_inputs = 4,
2230 .audio_inputs = 1, 2115 /* .audio_inputs= 1, */
2231 .svhs = 2, 2116 .svhs = 2,
2232 .muxsel = { 2, 3, 1, 0 }, 2117 .muxsel = { 2, 3, 1, 0 },
2233 .tuner_type = TUNER_PHILIPS_FCV1236D, 2118 .tuner_type = TUNER_PHILIPS_FCV1236D,
2234 .tuner_addr = ADDR_UNSET, 2119 .tuner_addr = ADDR_UNSET,
2235 .radio_addr = ADDR_UNSET,
2236 .has_dvb = 1, 2120 .has_dvb = 1,
2237 }, 2121 },
2238 [BTTV_BOARD_TWINHAN_DST] = { 2122 [BTTV_BOARD_TWINHAN_DST] = {
@@ -2242,14 +2126,13 @@ struct tvcard bttv_tvcards[] = {
2242 .no_tda7432 = 1, 2126 .no_tda7432 = 1,
2243 .tuner_type = TUNER_ABSENT, 2127 .tuner_type = TUNER_ABSENT,
2244 .tuner_addr = ADDR_UNSET, 2128 .tuner_addr = ADDR_UNSET,
2245 .radio_addr = ADDR_UNSET,
2246 .no_video = 1, 2129 .no_video = 1,
2247 .has_dvb = 1, 2130 .has_dvb = 1,
2248 }, 2131 },
2249 [BTTV_BOARD_WINFASTVC100] = { 2132 [BTTV_BOARD_WINFASTVC100] = {
2250 .name = "Winfast VC100", 2133 .name = "Winfast VC100",
2251 .video_inputs = 3, 2134 .video_inputs = 3,
2252 .audio_inputs = 0, 2135 /* .audio_inputs= 0, */
2253 .svhs = 1, 2136 .svhs = 1,
2254 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */ 2137 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */
2255 .no_msp34xx = 1, 2138 .no_msp34xx = 1,
@@ -2257,13 +2140,12 @@ struct tvcard bttv_tvcards[] = {
2257 .no_tda7432 = 1, 2140 .no_tda7432 = 1,
2258 .tuner_type = TUNER_ABSENT, 2141 .tuner_type = TUNER_ABSENT,
2259 .tuner_addr = ADDR_UNSET, 2142 .tuner_addr = ADDR_UNSET,
2260 .radio_addr = ADDR_UNSET,
2261 .pll = PLL_28, 2143 .pll = PLL_28,
2262 }, 2144 },
2263 [BTTV_BOARD_TEV560] = { 2145 [BTTV_BOARD_TEV560] = {
2264 .name = "Teppro TEV-560/InterVision IV-560", 2146 .name = "Teppro TEV-560/InterVision IV-560",
2265 .video_inputs = 3, 2147 .video_inputs = 3,
2266 .audio_inputs = 1, 2148 /* .audio_inputs= 1, */
2267 .svhs = 2, 2149 .svhs = 2,
2268 .gpiomask = 3, 2150 .gpiomask = 3,
2269 .muxsel = { 2, 3, 1, 1 }, 2151 .muxsel = { 2, 3, 1, 1 },
@@ -2271,7 +2153,6 @@ struct tvcard bttv_tvcards[] = {
2271 .needs_tvaudio = 1, 2153 .needs_tvaudio = 1,
2272 .tuner_type = TUNER_PHILIPS_PAL, 2154 .tuner_type = TUNER_PHILIPS_PAL,
2273 .tuner_addr = ADDR_UNSET, 2155 .tuner_addr = ADDR_UNSET,
2274 .radio_addr = ADDR_UNSET,
2275 .pll = PLL_35, 2156 .pll = PLL_35,
2276 }, 2157 },
2277 2158
@@ -2279,11 +2160,10 @@ struct tvcard bttv_tvcards[] = {
2279 [BTTV_BOARD_SIMUS_GVC1100] = { 2160 [BTTV_BOARD_SIMUS_GVC1100] = {
2280 .name = "SIMUS GVC1100", 2161 .name = "SIMUS GVC1100",
2281 .video_inputs = 4, 2162 .video_inputs = 4,
2282 .audio_inputs = 0, 2163 /* .audio_inputs= 0, */
2283 .svhs = UNSET, 2164 .svhs = NO_SVHS,
2284 .tuner_type = TUNER_ABSENT, 2165 .tuner_type = TUNER_ABSENT,
2285 .tuner_addr = ADDR_UNSET, 2166 .tuner_addr = ADDR_UNSET,
2286 .radio_addr = ADDR_UNSET,
2287 .pll = PLL_28, 2167 .pll = PLL_28,
2288 .muxsel = { 2, 2, 2, 2 }, 2168 .muxsel = { 2, 2, 2, 2 },
2289 .gpiomask = 0x3F, 2169 .gpiomask = 0x3F,
@@ -2301,15 +2181,14 @@ struct tvcard bttv_tvcards[] = {
2301 .pll = PLL_28, 2181 .pll = PLL_28,
2302 .tuner_type = TUNER_PHILIPS_PAL, 2182 .tuner_type = TUNER_PHILIPS_PAL,
2303 .tuner_addr = ADDR_UNSET, 2183 .tuner_addr = ADDR_UNSET,
2304 .radio_addr = ADDR_UNSET,
2305 .has_remote = 1, 2184 .has_remote = 1,
2306 }, 2185 },
2307 [BTTV_BOARD_LMLBT4] = { 2186 [BTTV_BOARD_LMLBT4] = {
2308 /* http://linuxmedialabs.com */ 2187 /* http://linuxmedialabs.com */
2309 .name = "LMLBT4", 2188 .name = "LMLBT4",
2310 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ 2189 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */
2311 .audio_inputs = 0, 2190 /* .audio_inputs= 0, */
2312 .svhs = UNSET, 2191 .svhs = NO_SVHS,
2313 .muxsel = { 2, 3, 1, 0 }, 2192 .muxsel = { 2, 3, 1, 0 },
2314 .no_msp34xx = 1, 2193 .no_msp34xx = 1,
2315 .no_tda9875 = 1, 2194 .no_tda9875 = 1,
@@ -2317,16 +2196,14 @@ struct tvcard bttv_tvcards[] = {
2317 .needs_tvaudio = 0, 2196 .needs_tvaudio = 0,
2318 .tuner_type = TUNER_ABSENT, 2197 .tuner_type = TUNER_ABSENT,
2319 .tuner_addr = ADDR_UNSET, 2198 .tuner_addr = ADDR_UNSET,
2320 .radio_addr = ADDR_UNSET,
2321 }, 2199 },
2322 [BTTV_BOARD_TEKRAM_M205] = { 2200 [BTTV_BOARD_TEKRAM_M205] = {
2323 /* Helmroos Harri <harri.helmroos@pp.inet.fi> */ 2201 /* Helmroos Harri <harri.helmroos@pp.inet.fi> */
2324 .name = "Tekram M205 PRO", 2202 .name = "Tekram M205 PRO",
2325 .video_inputs = 3, 2203 .video_inputs = 3,
2326 .audio_inputs = 1, 2204 /* .audio_inputs= 1, */
2327 .tuner_type = TUNER_PHILIPS_PAL, 2205 .tuner_type = TUNER_PHILIPS_PAL,
2328 .tuner_addr = ADDR_UNSET, 2206 .tuner_addr = ADDR_UNSET,
2329 .radio_addr = ADDR_UNSET,
2330 .svhs = 2, 2207 .svhs = 2,
2331 .needs_tvaudio = 0, 2208 .needs_tvaudio = 0,
2332 .gpiomask = 0x68, 2209 .gpiomask = 0x68,
@@ -2341,7 +2218,7 @@ struct tvcard bttv_tvcards[] = {
2341 /* bt878 TV + FM without subsystem ID */ 2218 /* bt878 TV + FM without subsystem ID */
2342 .name = "Conceptronic CONTVFMi", 2219 .name = "Conceptronic CONTVFMi",
2343 .video_inputs = 3, 2220 .video_inputs = 3,
2344 .audio_inputs = 1, 2221 /* .audio_inputs= 1, */
2345 .svhs = 2, 2222 .svhs = 2,
2346 .gpiomask = 0x008007, 2223 .gpiomask = 0x008007,
2347 .muxsel = { 2, 3, 1, 1 }, 2224 .muxsel = { 2, 3, 1, 1 },
@@ -2351,7 +2228,6 @@ struct tvcard bttv_tvcards[] = {
2351 .pll = PLL_28, 2228 .pll = PLL_28,
2352 .tuner_type = TUNER_PHILIPS_PAL, 2229 .tuner_type = TUNER_PHILIPS_PAL,
2353 .tuner_addr = ADDR_UNSET, 2230 .tuner_addr = ADDR_UNSET,
2354 .radio_addr = ADDR_UNSET,
2355 .has_remote = 1, 2231 .has_remote = 1,
2356 .has_radio = 1, 2232 .has_radio = 1,
2357 }, 2233 },
@@ -2362,8 +2238,8 @@ struct tvcard bttv_tvcards[] = {
2362 /*0x79 in bttv.h*/ 2238 /*0x79 in bttv.h*/
2363 .name = "Euresys Picolo Tetra", 2239 .name = "Euresys Picolo Tetra",
2364 .video_inputs = 4, 2240 .video_inputs = 4,
2365 .audio_inputs = 0, 2241 /* .audio_inputs= 0, */
2366 .svhs = UNSET, 2242 .svhs = NO_SVHS,
2367 .gpiomask = 0, 2243 .gpiomask = 0,
2368 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/ 2244 .gpiomask2 = 0x3C<<16,/*Set the GPIO[18]->GPIO[21] as output pin.==> drive the video inputs through analog multiplexers*/
2369 .no_msp34xx = 1, 2245 .no_msp34xx = 1,
@@ -2376,21 +2252,19 @@ struct tvcard bttv_tvcards[] = {
2376 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ 2252 .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
2377 .tuner_type = TUNER_ABSENT, 2253 .tuner_type = TUNER_ABSENT,
2378 .tuner_addr = ADDR_UNSET, 2254 .tuner_addr = ADDR_UNSET,
2379 .radio_addr = ADDR_UNSET,
2380 }, 2255 },
2381 [BTTV_BOARD_SPIRIT_TV] = { 2256 [BTTV_BOARD_SPIRIT_TV] = {
2382 /* Spirit TV Tuner from http://spiritmodems.com.au */ 2257 /* Spirit TV Tuner from http://spiritmodems.com.au */
2383 /* Stafford Goodsell <surge@goliath.homeunix.org> */ 2258 /* Stafford Goodsell <surge@goliath.homeunix.org> */
2384 .name = "Spirit TV Tuner", 2259 .name = "Spirit TV Tuner",
2385 .video_inputs = 3, 2260 .video_inputs = 3,
2386 .audio_inputs = 1, 2261 /* .audio_inputs= 1, */
2387 .svhs = 2, 2262 .svhs = 2,
2388 .gpiomask = 0x0000000f, 2263 .gpiomask = 0x0000000f,
2389 .muxsel = { 2, 1, 1 }, 2264 .muxsel = { 2, 1, 1 },
2390 .gpiomux = { 0x02, 0x00, 0x00, 0x00 }, 2265 .gpiomux = { 0x02, 0x00, 0x00, 0x00 },
2391 .tuner_type = TUNER_TEMIC_PAL, 2266 .tuner_type = TUNER_TEMIC_PAL,
2392 .tuner_addr = ADDR_UNSET, 2267 .tuner_addr = ADDR_UNSET,
2393 .radio_addr = ADDR_UNSET,
2394 .no_msp34xx = 1, 2268 .no_msp34xx = 1,
2395 .no_tda9875 = 1, 2269 .no_tda9875 = 1,
2396 }, 2270 },
@@ -2401,7 +2275,6 @@ struct tvcard bttv_tvcards[] = {
2401 .svhs = 1, 2275 .svhs = 1,
2402 .tuner_type = TUNER_ABSENT, 2276 .tuner_type = TUNER_ABSENT,
2403 .tuner_addr = ADDR_UNSET, 2277 .tuner_addr = ADDR_UNSET,
2404 .radio_addr = ADDR_UNSET,
2405 .muxsel = { 3 , 3 }, 2278 .muxsel = { 3 , 3 },
2406 .no_msp34xx = 1, 2279 .no_msp34xx = 1,
2407 .no_tda9875 = 1, 2280 .no_tda9875 = 1,
@@ -2425,43 +2298,40 @@ struct tvcard bttv_tvcards[] = {
2425 .pll = PLL_28, 2298 .pll = PLL_28,
2426 .tuner_type = TUNER_ABSENT, 2299 .tuner_type = TUNER_ABSENT,
2427 .tuner_addr = ADDR_UNSET, 2300 .tuner_addr = ADDR_UNSET,
2428 .radio_addr = ADDR_UNSET,
2429 .has_dvb = 1, 2301 .has_dvb = 1,
2430 .no_gpioirq = 1, 2302 .no_gpioirq = 1,
2431 .has_remote = 1, 2303 .has_remote = 1,
2432 }, 2304 },
2433 [BTTV_BOARD_MATRIX_VISIONSQ] = { 2305 [BTTV_BOARD_MATRIX_VISIONSQ] = {
2434 /* andre.schwarz@matrix-vision.de */ 2306 /* andre.schwarz@matrix-vision.de */
2435 .name = "MATRIX Vision Sigma-SQ", 2307 .name = "MATRIX Vision Sigma-SQ",
2436 .video_inputs = 16, 2308 .video_inputs = 16,
2437 .audio_inputs = 0, 2309 /* .audio_inputs= 0, */
2438 .svhs = UNSET, 2310 .svhs = NO_SVHS,
2439 .gpiomask = 0x0, 2311 .gpiomask = 0x0,
2440 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2312 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
2441 3, 3, 3, 3, 3, 3, 3, 3 }, 2313 3, 3, 3, 3, 3, 3, 3, 3 },
2442 .muxsel_hook = sigmaSQ_muxsel, 2314 .muxsel_hook = sigmaSQ_muxsel,
2443 .gpiomux = { 0 }, 2315 .gpiomux = { 0 },
2444 .no_msp34xx = 1, 2316 .no_msp34xx = 1,
2445 .pll = PLL_28, 2317 .pll = PLL_28,
2446 .tuner_type = TUNER_ABSENT, 2318 .tuner_type = TUNER_ABSENT,
2447 .tuner_addr = ADDR_UNSET, 2319 .tuner_addr = ADDR_UNSET,
2448 .radio_addr = ADDR_UNSET,
2449 }, 2320 },
2450 [BTTV_BOARD_MATRIX_VISIONSLC] = { 2321 [BTTV_BOARD_MATRIX_VISIONSLC] = {
2451 /* andre.schwarz@matrix-vision.de */ 2322 /* andre.schwarz@matrix-vision.de */
2452 .name = "MATRIX Vision Sigma-SLC", 2323 .name = "MATRIX Vision Sigma-SLC",
2453 .video_inputs = 4, 2324 .video_inputs = 4,
2454 .audio_inputs = 0, 2325 /* .audio_inputs= 0, */
2455 .svhs = UNSET, 2326 .svhs = NO_SVHS,
2456 .gpiomask = 0x0, 2327 .gpiomask = 0x0,
2457 .muxsel = { 2, 2, 2, 2 }, 2328 .muxsel = { 2, 2, 2, 2 },
2458 .muxsel_hook = sigmaSLC_muxsel, 2329 .muxsel_hook = sigmaSLC_muxsel,
2459 .gpiomux = { 0 }, 2330 .gpiomux = { 0 },
2460 .no_msp34xx = 1, 2331 .no_msp34xx = 1,
2461 .pll = PLL_28, 2332 .pll = PLL_28,
2462 .tuner_type = TUNER_ABSENT, 2333 .tuner_type = TUNER_ABSENT,
2463 .tuner_addr = ADDR_UNSET, 2334 .tuner_addr = ADDR_UNSET,
2464 .radio_addr = ADDR_UNSET,
2465 }, 2335 },
2466 /* BTTV_BOARD_APAC_VIEWCOMP */ 2336 /* BTTV_BOARD_APAC_VIEWCOMP */
2467 [BTTV_BOARD_APAC_VIEWCOMP] = { 2337 [BTTV_BOARD_APAC_VIEWCOMP] = {
@@ -2469,8 +2339,8 @@ struct tvcard bttv_tvcards[] = {
2469 /* bt878 TV + FM 0x00000000 subsystem ID */ 2339 /* bt878 TV + FM 0x00000000 subsystem ID */
2470 .name = "APAC Viewcomp 878(AMAX)", 2340 .name = "APAC Viewcomp 878(AMAX)",
2471 .video_inputs = 2, 2341 .video_inputs = 2,
2472 .audio_inputs = 1, 2342 /* .audio_inputs= 1, */
2473 .svhs = UNSET, 2343 .svhs = NO_SVHS,
2474 .gpiomask = 0xFF, 2344 .gpiomask = 0xFF,
2475 .muxsel = { 2, 3, 1, 1 }, 2345 .muxsel = { 2, 3, 1, 1 },
2476 .gpiomux = { 2, 0, 0, 0 }, 2346 .gpiomux = { 2, 0, 0, 0 },
@@ -2479,7 +2349,6 @@ struct tvcard bttv_tvcards[] = {
2479 .pll = PLL_28, 2349 .pll = PLL_28,
2480 .tuner_type = TUNER_PHILIPS_PAL, 2350 .tuner_type = TUNER_PHILIPS_PAL,
2481 .tuner_addr = ADDR_UNSET, 2351 .tuner_addr = ADDR_UNSET,
2482 .radio_addr = ADDR_UNSET,
2483 .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */ 2352 .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */
2484 .has_radio = 1, /* not every card has radio */ 2353 .has_radio = 1, /* not every card has radio */
2485 }, 2354 },
@@ -2496,13 +2365,12 @@ struct tvcard bttv_tvcards[] = {
2496 .has_dvb = 1, 2365 .has_dvb = 1,
2497 .tuner_type = TUNER_ABSENT, 2366 .tuner_type = TUNER_ABSENT,
2498 .tuner_addr = ADDR_UNSET, 2367 .tuner_addr = ADDR_UNSET,
2499 .radio_addr = ADDR_UNSET,
2500 }, 2368 },
2501 [BTTV_BOARD_VGEAR_MYVCD] = { 2369 [BTTV_BOARD_VGEAR_MYVCD] = {
2502 /* Steven <photon38@pchome.com.tw> */ 2370 /* Steven <photon38@pchome.com.tw> */
2503 .name = "V-Gear MyVCD", 2371 .name = "V-Gear MyVCD",
2504 .video_inputs = 3, 2372 .video_inputs = 3,
2505 .audio_inputs = 1, 2373 /* .audio_inputs= 1, */
2506 .svhs = 2, 2374 .svhs = 2,
2507 .gpiomask = 0x3f, 2375 .gpiomask = 0x3f,
2508 .muxsel = {2, 3, 1, 0 }, 2376 .muxsel = {2, 3, 1, 0 },
@@ -2512,19 +2380,17 @@ struct tvcard bttv_tvcards[] = {
2512 .pll = PLL_28, 2380 .pll = PLL_28,
2513 .tuner_type = TUNER_PHILIPS_NTSC_M, 2381 .tuner_type = TUNER_PHILIPS_NTSC_M,
2514 .tuner_addr = ADDR_UNSET, 2382 .tuner_addr = ADDR_UNSET,
2515 .radio_addr = ADDR_UNSET,
2516 .has_radio = 0, 2383 .has_radio = 0,
2517 }, 2384 },
2518 [BTTV_BOARD_SUPER_TV] = { 2385 [BTTV_BOARD_SUPER_TV] = {
2519 /* Rick C <cryptdragoon@gmail.com> */ 2386 /* Rick C <cryptdragoon@gmail.com> */
2520 .name = "Super TV Tuner", 2387 .name = "Super TV Tuner",
2521 .video_inputs = 4, 2388 .video_inputs = 4,
2522 .audio_inputs = 1, 2389 /* .audio_inputs= 1, */
2523 .svhs = 2, 2390 .svhs = 2,
2524 .muxsel = { 2, 3, 1, 0 }, 2391 .muxsel = { 2, 3, 1, 0 },
2525 .tuner_type = TUNER_PHILIPS_NTSC, 2392 .tuner_type = TUNER_PHILIPS_NTSC,
2526 .tuner_addr = ADDR_UNSET, 2393 .tuner_addr = ADDR_UNSET,
2527 .radio_addr = ADDR_UNSET,
2528 .gpiomask = 0x008007, 2394 .gpiomask = 0x008007,
2529 .gpiomux = { 0, 0x000001,0,0 }, 2395 .gpiomux = { 0, 0x000001,0,0 },
2530 .needs_tvaudio = 1, 2396 .needs_tvaudio = 1,
@@ -2534,8 +2400,8 @@ struct tvcard bttv_tvcards[] = {
2534 /* Chris Fanning <video4linux@haydon.net> */ 2400 /* Chris Fanning <video4linux@haydon.net> */
2535 .name = "Tibet Systems 'Progress DVR' CS16", 2401 .name = "Tibet Systems 'Progress DVR' CS16",
2536 .video_inputs = 16, 2402 .video_inputs = 16,
2537 .audio_inputs = 0, 2403 /* .audio_inputs= 0, */
2538 .svhs = UNSET, 2404 .svhs = NO_SVHS,
2539 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, 2405 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 },
2540 .pll = PLL_28, 2406 .pll = PLL_28,
2541 .no_msp34xx = 1, 2407 .no_msp34xx = 1,
@@ -2543,7 +2409,6 @@ struct tvcard bttv_tvcards[] = {
2543 .no_tda7432 = 1, 2409 .no_tda7432 = 1,
2544 .tuner_type = TUNER_ABSENT, 2410 .tuner_type = TUNER_ABSENT,
2545 .tuner_addr = ADDR_UNSET, 2411 .tuner_addr = ADDR_UNSET,
2546 .radio_addr = ADDR_UNSET,
2547 .muxsel_hook = tibetCS16_muxsel, 2412 .muxsel_hook = tibetCS16_muxsel,
2548 }, 2413 },
2549 [BTTV_BOARD_KODICOM_4400R] = { 2414 [BTTV_BOARD_KODICOM_4400R] = {
@@ -2560,11 +2425,10 @@ struct tvcard bttv_tvcards[] = {
2560 */ 2425 */
2561 .name = "Kodicom 4400R (master)", 2426 .name = "Kodicom 4400R (master)",
2562 .video_inputs = 16, 2427 .video_inputs = 16,
2563 .audio_inputs = 0, 2428 /* .audio_inputs= 0, */
2564 .tuner_type = TUNER_ABSENT, 2429 .tuner_type = TUNER_ABSENT,
2565 .tuner_addr = ADDR_UNSET, 2430 .tuner_addr = ADDR_UNSET,
2566 .radio_addr = ADDR_UNSET, 2431 .svhs = NO_SVHS,
2567 .svhs = UNSET,
2568 /* GPIO bits 0-9 used for analog switch: 2432 /* GPIO bits 0-9 used for analog switch:
2569 * 00 - 03: camera selector 2433 * 00 - 03: camera selector
2570 * 04 - 06: channel (controller) selector 2434 * 04 - 06: channel (controller) selector
@@ -2591,11 +2455,10 @@ struct tvcard bttv_tvcards[] = {
2591 */ 2455 */
2592 .name = "Kodicom 4400R (slave)", 2456 .name = "Kodicom 4400R (slave)",
2593 .video_inputs = 16, 2457 .video_inputs = 16,
2594 .audio_inputs = 0, 2458 /* .audio_inputs= 0, */
2595 .tuner_type = TUNER_ABSENT, 2459 .tuner_type = TUNER_ABSENT,
2596 .tuner_addr = ADDR_UNSET, 2460 .tuner_addr = ADDR_UNSET,
2597 .radio_addr = ADDR_UNSET, 2461 .svhs = NO_SVHS,
2598 .svhs = UNSET,
2599 .gpiomask = 0x010000, 2462 .gpiomask = 0x010000,
2600 .no_gpioirq = 1, 2463 .no_gpioirq = 1,
2601 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 2464 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 },
@@ -2611,12 +2474,11 @@ struct tvcard bttv_tvcards[] = {
2611 /* Adlink RTV24 with special unlock codes */ 2474 /* Adlink RTV24 with special unlock codes */
2612 .name = "Adlink RTV24", 2475 .name = "Adlink RTV24",
2613 .video_inputs = 4, 2476 .video_inputs = 4,
2614 .audio_inputs = 1, 2477 /* .audio_inputs= 1, */
2615 .svhs = 2, 2478 .svhs = 2,
2616 .muxsel = { 2, 3, 1, 0 }, 2479 .muxsel = { 2, 3, 1, 0 },
2617 .tuner_type = UNSET, 2480 .tuner_type = UNSET,
2618 .tuner_addr = ADDR_UNSET, 2481 .tuner_addr = ADDR_UNSET,
2619 .radio_addr = ADDR_UNSET,
2620 .pll = PLL_28, 2482 .pll = PLL_28,
2621 }, 2483 },
2622 /* ---- card 0x87---------------------------------- */ 2484 /* ---- card 0x87---------------------------------- */
@@ -2625,9 +2487,8 @@ struct tvcard bttv_tvcards[] = {
2625 .name = "DViCO FusionHDTV 5 Lite", 2487 .name = "DViCO FusionHDTV 5 Lite",
2626 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */ 2488 .tuner_type = TUNER_LG_TDVS_H06XF, /* TDVS-H064F */
2627 .tuner_addr = ADDR_UNSET, 2489 .tuner_addr = ADDR_UNSET,
2628 .radio_addr = ADDR_UNSET,
2629 .video_inputs = 3, 2490 .video_inputs = 3,
2630 .audio_inputs = 1, 2491 /* .audio_inputs= 1, */
2631 .svhs = 2, 2492 .svhs = 2,
2632 .muxsel = { 2, 3, 1 }, 2493 .muxsel = { 2, 3, 1 },
2633 .gpiomask = 0x00e00007, 2494 .gpiomask = 0x00e00007,
@@ -2643,7 +2504,7 @@ struct tvcard bttv_tvcards[] = {
2643 /* Mauro Carvalho Chehab <mchehab@infradead.org> */ 2504 /* Mauro Carvalho Chehab <mchehab@infradead.org> */
2644 .name = "Acorp Y878F", 2505 .name = "Acorp Y878F",
2645 .video_inputs = 3, 2506 .video_inputs = 3,
2646 .audio_inputs = 1, 2507 /* .audio_inputs= 1, */
2647 .svhs = 2, 2508 .svhs = 2,
2648 .gpiomask = 0x01fe00, 2509 .gpiomask = 0x01fe00,
2649 .muxsel = { 2, 3, 1, 1 }, 2510 .muxsel = { 2, 3, 1, 1 },
@@ -2653,14 +2514,13 @@ struct tvcard bttv_tvcards[] = {
2653 .pll = PLL_28, 2514 .pll = PLL_28,
2654 .tuner_type = TUNER_YMEC_TVF66T5_B_DFF, 2515 .tuner_type = TUNER_YMEC_TVF66T5_B_DFF,
2655 .tuner_addr = 0xc1 >>1, 2516 .tuner_addr = 0xc1 >>1,
2656 .radio_addr = 0xc1 >>1,
2657 .has_radio = 1, 2517 .has_radio = 1,
2658 }, 2518 },
2659 /* ---- card 0x89 ---------------------------------- */ 2519 /* ---- card 0x89 ---------------------------------- */
2660 [BTTV_BOARD_CONCEPTRONIC_CTVFMI2] = { 2520 [BTTV_BOARD_CONCEPTRONIC_CTVFMI2] = {
2661 .name = "Conceptronic CTVFMi v2", 2521 .name = "Conceptronic CTVFMi v2",
2662 .video_inputs = 3, 2522 .video_inputs = 3,
2663 .audio_inputs = 1, 2523 /* .audio_inputs= 1, */
2664 .svhs = 2, 2524 .svhs = 2,
2665 .gpiomask = 0x001c0007, 2525 .gpiomask = 0x001c0007,
2666 .muxsel = { 2, 3, 1, 1 }, 2526 .muxsel = { 2, 3, 1, 1 },
@@ -2670,34 +2530,32 @@ struct tvcard bttv_tvcards[] = {
2670 .pll = PLL_28, 2530 .pll = PLL_28,
2671 .tuner_type = TUNER_TENA_9533_DI, 2531 .tuner_type = TUNER_TENA_9533_DI,
2672 .tuner_addr = ADDR_UNSET, 2532 .tuner_addr = ADDR_UNSET,
2673 .radio_addr = ADDR_UNSET,
2674 .has_remote = 1, 2533 .has_remote = 1,
2675 .has_radio = 1, 2534 .has_radio = 1,
2676 }, 2535 },
2677 /* ---- card 0x8a ---------------------------------- */ 2536 /* ---- card 0x8a ---------------------------------- */
2678 [BTTV_BOARD_PV_BT878P_2E] = { 2537 [BTTV_BOARD_PV_BT878P_2E] = {
2679 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)", 2538 .name = "Prolink Pixelview PV-BT878P+ (Rev.2E)",
2680 .video_inputs = 5, 2539 .video_inputs = 5,
2681 .audio_inputs = 1, 2540 /* .audio_inputs= 1, */
2682 .svhs = 3, 2541 .svhs = 3,
2683 .gpiomask = 0x01fe00, 2542 .gpiomask = 0x01fe00,
2684 .muxsel = { 2,3,1,1,-1 }, 2543 .muxsel = { 2, 3, 1, 1, -1 },
2685 .digital_mode = DIGITAL_MODE_CAMERA, 2544 /* .digital_mode= DIGITAL_MODE_CAMERA, */
2686 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 }, 2545 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 },
2687 .gpiomute = 0x12400, 2546 .gpiomute = 0x12400,
2688 .no_msp34xx = 1, 2547 .no_msp34xx = 1,
2689 .pll = PLL_28, 2548 .pll = PLL_28,
2690 .tuner_type = TUNER_LG_PAL_FM, 2549 .tuner_type = TUNER_LG_PAL_FM,
2691 .tuner_addr = ADDR_UNSET, 2550 .tuner_addr = ADDR_UNSET,
2692 .radio_addr = ADDR_UNSET, 2551 .has_remote = 1,
2693 .has_remote = 1,
2694 }, 2552 },
2695 /* ---- card 0x8b ---------------------------------- */ 2553 /* ---- card 0x8b ---------------------------------- */
2696 [BTTV_BOARD_PV_M4900] = { 2554 [BTTV_BOARD_PV_M4900] = {
2697 /* Sérgio Fortier <sergiofortier@yahoo.com.br> */ 2555 /* Sérgio Fortier <sergiofortier@yahoo.com.br> */
2698 .name = "Prolink PixelView PlayTV MPEG2 PV-M4900", 2556 .name = "Prolink PixelView PlayTV MPEG2 PV-M4900",
2699 .video_inputs = 3, 2557 .video_inputs = 3,
2700 .audio_inputs = 1, 2558 /* .audio_inputs= 1, */
2701 .svhs = 2, 2559 .svhs = 2,
2702 .gpiomask = 0x3f, 2560 .gpiomask = 0x3f,
2703 .muxsel = { 2, 3, 1, 1 }, 2561 .muxsel = { 2, 3, 1, 1 },
@@ -2707,7 +2565,6 @@ struct tvcard bttv_tvcards[] = {
2707 .pll = PLL_28, 2565 .pll = PLL_28,
2708 .tuner_type = TUNER_YMEC_TVF_5533MF, 2566 .tuner_type = TUNER_YMEC_TVF_5533MF,
2709 .tuner_addr = ADDR_UNSET, 2567 .tuner_addr = ADDR_UNSET,
2710 .radio_addr = ADDR_UNSET,
2711 .has_radio = 1, 2568 .has_radio = 1,
2712 .has_remote = 1, 2569 .has_remote = 1,
2713 }, 2570 },
@@ -2727,8 +2584,8 @@ struct tvcard bttv_tvcards[] = {
2727 [BTTV_BOARD_OSPREY440] = { 2584 [BTTV_BOARD_OSPREY440] = {
2728 .name = "Osprey 440", 2585 .name = "Osprey 440",
2729 .video_inputs = 4, 2586 .video_inputs = 4,
2730 .audio_inputs = 2, /* this is meaningless */ 2587 /* .audio_inputs= 2, */
2731 .svhs = UNSET, 2588 .svhs = NO_SVHS,
2732 .muxsel = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */ 2589 .muxsel = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */
2733 .gpiomask = 0x303, 2590 .gpiomask = 0x303,
2734 .gpiomute = 0x000, /* int + 32kHz */ 2591 .gpiomute = 0x000, /* int + 32kHz */
@@ -2736,7 +2593,6 @@ struct tvcard bttv_tvcards[] = {
2736 .pll = PLL_28, 2593 .pll = PLL_28,
2737 .tuner_type = TUNER_ABSENT, 2594 .tuner_type = TUNER_ABSENT,
2738 .tuner_addr = ADDR_UNSET, 2595 .tuner_addr = ADDR_UNSET,
2739 .radio_addr = ADDR_UNSET,
2740 .no_msp34xx = 1, 2596 .no_msp34xx = 1,
2741 .no_tda9875 = 1, 2597 .no_tda9875 = 1,
2742 .no_tda7432 = 1, 2598 .no_tda7432 = 1,
@@ -2745,7 +2601,7 @@ struct tvcard bttv_tvcards[] = {
2745 [BTTV_BOARD_ASOUND_SKYEYE] = { 2601 [BTTV_BOARD_ASOUND_SKYEYE] = {
2746 .name = "Asound Skyeye PCTV", 2602 .name = "Asound Skyeye PCTV",
2747 .video_inputs = 3, 2603 .video_inputs = 3,
2748 .audio_inputs = 1, 2604 /* .audio_inputs= 1, */
2749 .svhs = 2, 2605 .svhs = 2,
2750 .gpiomask = 15, 2606 .gpiomask = 15,
2751 .muxsel = { 2, 3, 1, 1 }, 2607 .muxsel = { 2, 3, 1, 1 },
@@ -2755,13 +2611,12 @@ struct tvcard bttv_tvcards[] = {
2755 .pll = PLL_28, 2611 .pll = PLL_28,
2756 .tuner_type = TUNER_PHILIPS_NTSC, 2612 .tuner_type = TUNER_PHILIPS_NTSC,
2757 .tuner_addr = ADDR_UNSET, 2613 .tuner_addr = ADDR_UNSET,
2758 .radio_addr = ADDR_UNSET,
2759 }, 2614 },
2760 /* ---- card 0x8e ---------------------------------- */ 2615 /* ---- card 0x8e ---------------------------------- */
2761 [BTTV_BOARD_SABRENT_TVFM] = { 2616 [BTTV_BOARD_SABRENT_TVFM] = {
2762 .name = "Sabrent TV-FM (bttv version)", 2617 .name = "Sabrent TV-FM (bttv version)",
2763 .video_inputs = 3, 2618 .video_inputs = 3,
2764 .audio_inputs = 1, 2619 /* .audio_inputs= 1, */
2765 .svhs = 2, 2620 .svhs = 2,
2766 .gpiomask = 0x108007, 2621 .gpiomask = 0x108007,
2767 .muxsel = { 2, 3, 1, 1 }, 2622 .muxsel = { 2, 3, 1, 1 },
@@ -2778,8 +2633,8 @@ struct tvcard bttv_tvcards[] = {
2778 [BTTV_BOARD_HAUPPAUGE_IMPACTVCB] = { 2633 [BTTV_BOARD_HAUPPAUGE_IMPACTVCB] = {
2779 .name = "Hauppauge ImpactVCB (bt878)", 2634 .name = "Hauppauge ImpactVCB (bt878)",
2780 .video_inputs = 4, 2635 .video_inputs = 4,
2781 .audio_inputs = 0, 2636 /* .audio_inputs= 0, */
2782 .svhs = UNSET, 2637 .svhs = NO_SVHS,
2783 .gpiomask = 0x0f, /* old: 7 */ 2638 .gpiomask = 0x0f, /* old: 7 */
2784 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */ 2639 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */
2785 .no_msp34xx = 1, 2640 .no_msp34xx = 1,
@@ -2787,7 +2642,6 @@ struct tvcard bttv_tvcards[] = {
2787 .no_tda7432 = 1, 2642 .no_tda7432 = 1,
2788 .tuner_type = TUNER_ABSENT, 2643 .tuner_type = TUNER_ABSENT,
2789 .tuner_addr = ADDR_UNSET, 2644 .tuner_addr = ADDR_UNSET,
2790 .radio_addr = ADDR_UNSET,
2791 }, 2645 },
2792 [BTTV_BOARD_MACHTV_MAGICTV] = { 2646 [BTTV_BOARD_MACHTV_MAGICTV] = {
2793 /* Julian Calaby <julian.calaby@gmail.com> 2647 /* Julian Calaby <julian.calaby@gmail.com>
@@ -2799,7 +2653,7 @@ struct tvcard bttv_tvcards[] = {
2799 2653
2800 .name = "MagicTV", /* rebranded MachTV */ 2654 .name = "MagicTV", /* rebranded MachTV */
2801 .video_inputs = 3, 2655 .video_inputs = 3,
2802 .audio_inputs = 1, 2656 /* .audio_inputs= 1, */
2803 .svhs = 2, 2657 .svhs = 2,
2804 .gpiomask = 7, 2658 .gpiomask = 7,
2805 .muxsel = { 2, 3, 1, 1 }, 2659 .muxsel = { 2, 3, 1, 1 },
@@ -2807,7 +2661,6 @@ struct tvcard bttv_tvcards[] = {
2807 .gpiomute = 4, 2661 .gpiomute = 4,
2808 .tuner_type = TUNER_TEMIC_4009FR5_PAL, 2662 .tuner_type = TUNER_TEMIC_4009FR5_PAL,
2809 .tuner_addr = ADDR_UNSET, 2663 .tuner_addr = ADDR_UNSET,
2810 .radio_addr = ADDR_UNSET,
2811 .pll = PLL_28, 2664 .pll = PLL_28,
2812 .has_radio = 1, 2665 .has_radio = 1,
2813 .has_remote = 1, 2666 .has_remote = 1,
@@ -2815,31 +2668,28 @@ struct tvcard bttv_tvcards[] = {
2815 [BTTV_BOARD_SSAI_SECURITY] = { 2668 [BTTV_BOARD_SSAI_SECURITY] = {
2816 .name = "SSAI Security Video Interface", 2669 .name = "SSAI Security Video Interface",
2817 .video_inputs = 4, 2670 .video_inputs = 4,
2818 .audio_inputs = 0, 2671 /* .audio_inputs= 0, */
2819 .svhs = UNSET, 2672 .svhs = NO_SVHS,
2820 .muxsel = { 0, 1, 2, 3 }, 2673 .muxsel = { 0, 1, 2, 3 },
2821 .tuner_type = TUNER_ABSENT, 2674 .tuner_type = TUNER_ABSENT,
2822 .tuner_addr = ADDR_UNSET, 2675 .tuner_addr = ADDR_UNSET,
2823 .radio_addr = ADDR_UNSET,
2824 }, 2676 },
2825 [BTTV_BOARD_SSAI_ULTRASOUND] = { 2677 [BTTV_BOARD_SSAI_ULTRASOUND] = {
2826 .name = "SSAI Ultrasound Video Interface", 2678 .name = "SSAI Ultrasound Video Interface",
2827 .video_inputs = 2, 2679 .video_inputs = 2,
2828 .audio_inputs = 0, 2680 /* .audio_inputs= 0, */
2829 .svhs = 1, 2681 .svhs = 1,
2830 .muxsel = { 2, 0, 1, 3 }, 2682 .muxsel = { 2, 0, 1, 3 },
2831 .tuner_type = TUNER_ABSENT, 2683 .tuner_type = TUNER_ABSENT,
2832 .tuner_addr = ADDR_UNSET, 2684 .tuner_addr = ADDR_UNSET,
2833 .radio_addr = ADDR_UNSET,
2834 }, 2685 },
2835 /* ---- card 0x94---------------------------------- */ 2686 /* ---- card 0x94---------------------------------- */
2836 [BTTV_BOARD_DVICO_FUSIONHDTV_2] = { 2687 [BTTV_BOARD_DVICO_FUSIONHDTV_2] = {
2837 .name = "DViCO FusionHDTV 2", 2688 .name = "DViCO FusionHDTV 2",
2838 .tuner_type = TUNER_PHILIPS_FCV1236D, 2689 .tuner_type = TUNER_PHILIPS_FCV1236D,
2839 .tuner_addr = ADDR_UNSET, 2690 .tuner_addr = ADDR_UNSET,
2840 .radio_addr = ADDR_UNSET,
2841 .video_inputs = 3, 2691 .video_inputs = 3,
2842 .audio_inputs = 1, 2692 /* .audio_inputs= 1, */
2843 .svhs = 2, 2693 .svhs = 2,
2844 .muxsel = { 2, 3, 1 }, 2694 .muxsel = { 2, 3, 1 },
2845 .gpiomask = 0x00e00007, 2695 .gpiomask = 0x00e00007,
@@ -2853,7 +2703,7 @@ struct tvcard bttv_tvcards[] = {
2853 [BTTV_BOARD_TYPHOON_TVTUNERPCI] = { 2703 [BTTV_BOARD_TYPHOON_TVTUNERPCI] = {
2854 .name = "Typhoon TV-Tuner PCI (50684)", 2704 .name = "Typhoon TV-Tuner PCI (50684)",
2855 .video_inputs = 3, 2705 .video_inputs = 3,
2856 .audio_inputs = 1, 2706 /* .audio_inputs= 1, */
2857 .svhs = 2, 2707 .svhs = 2,
2858 .gpiomask = 0x3014f, 2708 .gpiomask = 0x3014f,
2859 .muxsel = { 2, 3, 1, 1 }, 2709 .muxsel = { 2, 3, 1, 1 },
@@ -2863,24 +2713,22 @@ struct tvcard bttv_tvcards[] = {
2863 .pll = PLL_28, 2713 .pll = PLL_28,
2864 .tuner_type = TUNER_PHILIPS_PAL_I, 2714 .tuner_type = TUNER_PHILIPS_PAL_I,
2865 .tuner_addr = ADDR_UNSET, 2715 .tuner_addr = ADDR_UNSET,
2866 .radio_addr = ADDR_UNSET,
2867 }, 2716 },
2868 [BTTV_BOARD_GEOVISION_GV600] = { 2717 [BTTV_BOARD_GEOVISION_GV600] = {
2869 /* emhn@usb.ve */ 2718 /* emhn@usb.ve */
2870 .name = "Geovision GV-600", 2719 .name = "Geovision GV-600",
2871 .video_inputs = 16, 2720 .video_inputs = 16,
2872 .audio_inputs = 0, 2721 /* .audio_inputs= 0, */
2873 .svhs = UNSET, 2722 .svhs = NO_SVHS,
2874 .gpiomask = 0x0, 2723 .gpiomask = 0x0,
2875 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2724 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2,
2876 2, 2, 2, 2, 2, 2, 2, 2 }, 2725 2, 2, 2, 2, 2, 2, 2, 2 },
2877 .muxsel_hook = geovision_muxsel, 2726 .muxsel_hook = geovision_muxsel,
2878 .gpiomux = { 0 }, 2727 .gpiomux = { 0 },
2879 .no_msp34xx = 1, 2728 .no_msp34xx = 1,
2880 .pll = PLL_28, 2729 .pll = PLL_28,
2881 .tuner_type = TUNER_ABSENT, 2730 .tuner_type = TUNER_ABSENT,
2882 .tuner_addr = ADDR_UNSET, 2731 .tuner_addr = ADDR_UNSET,
2883 .radio_addr = ADDR_UNSET,
2884 }, 2732 },
2885 [BTTV_BOARD_KOZUMI_KTV_01C] = { 2733 [BTTV_BOARD_KOZUMI_KTV_01C] = {
2886 /* Mauro Lacy <mauro@lacy.com.ar> 2734 /* Mauro Lacy <mauro@lacy.com.ar>
@@ -2888,7 +2736,7 @@ struct tvcard bttv_tvcards[] = {
2888 2736
2889 .name = "Kozumi KTV-01C", 2737 .name = "Kozumi KTV-01C",
2890 .video_inputs = 3, 2738 .video_inputs = 3,
2891 .audio_inputs = 1, 2739 /* .audio_inputs= 1, */
2892 .svhs = 2, 2740 .svhs = 2,
2893 .gpiomask = 0x008007, 2741 .gpiomask = 0x008007,
2894 .muxsel = { 2, 3, 1, 1 }, 2742 .muxsel = { 2, 3, 1, 1 },
@@ -2897,7 +2745,6 @@ struct tvcard bttv_tvcards[] = {
2897 .needs_tvaudio = 0, 2745 .needs_tvaudio = 0,
2898 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MK3 */ 2746 .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, /* TCL MK3 */
2899 .tuner_addr = ADDR_UNSET, 2747 .tuner_addr = ADDR_UNSET,
2900 .radio_addr = ADDR_UNSET,
2901 .pll = PLL_28, 2748 .pll = PLL_28,
2902 .has_radio = 1, 2749 .has_radio = 1,
2903 .has_remote = 1, 2750 .has_remote = 1,
@@ -2907,7 +2754,7 @@ struct tvcard bttv_tvcards[] = {
2907 Mauro Carvalho Chehab <mchehab@infradead.org */ 2754 Mauro Carvalho Chehab <mchehab@infradead.org */
2908 .name = "Encore ENL TV-FM-2", 2755 .name = "Encore ENL TV-FM-2",
2909 .video_inputs = 3, 2756 .video_inputs = 3,
2910 .audio_inputs = 1, 2757 /* .audio_inputs= 1, */
2911 .svhs = 2, 2758 .svhs = 2,
2912 /* bit 6 -> IR disabled 2759 /* bit 6 -> IR disabled
2913 bit 18/17 = 00 -> mute 2760 bit 18/17 = 00 -> mute
@@ -2921,7 +2768,6 @@ struct tvcard bttv_tvcards[] = {
2921 .gpiomute = 0, 2768 .gpiomute = 0,
2922 .tuner_type = TUNER_TCL_MF02GIP_5N, 2769 .tuner_type = TUNER_TCL_MF02GIP_5N,
2923 .tuner_addr = ADDR_UNSET, 2770 .tuner_addr = ADDR_UNSET,
2924 .radio_addr = ADDR_UNSET,
2925 .pll = PLL_28, 2771 .pll = PLL_28,
2926 .has_radio = 1, 2772 .has_radio = 1,
2927 .has_remote = 1, 2773 .has_remote = 1,
@@ -2930,8 +2776,8 @@ struct tvcard bttv_tvcards[] = {
2930 /* D.Heer@Phytec.de */ 2776 /* D.Heer@Phytec.de */
2931 .name = "PHYTEC VD-012 (bt878)", 2777 .name = "PHYTEC VD-012 (bt878)",
2932 .video_inputs = 4, 2778 .video_inputs = 4,
2933 .audio_inputs = 0, 2779 /* .audio_inputs= 0, */
2934 .svhs = UNSET, /* card has no s-video */ 2780 .svhs = NO_SVHS,
2935 .gpiomask = 0x00, 2781 .gpiomask = 0x00,
2936 .muxsel = { 0, 2, 3, 1 }, 2782 .muxsel = { 0, 2, 3, 1 },
2937 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2783 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
@@ -2939,13 +2785,12 @@ struct tvcard bttv_tvcards[] = {
2939 .pll = PLL_28, 2785 .pll = PLL_28,
2940 .tuner_type = TUNER_ABSENT, 2786 .tuner_type = TUNER_ABSENT,
2941 .tuner_addr = ADDR_UNSET, 2787 .tuner_addr = ADDR_UNSET,
2942 .radio_addr = ADDR_UNSET,
2943 }, 2788 },
2944 [BTTV_BOARD_VD012_X1] = { 2789 [BTTV_BOARD_VD012_X1] = {
2945 /* D.Heer@Phytec.de */ 2790 /* D.Heer@Phytec.de */
2946 .name = "PHYTEC VD-012-X1 (bt878)", 2791 .name = "PHYTEC VD-012-X1 (bt878)",
2947 .video_inputs = 4, 2792 .video_inputs = 4,
2948 .audio_inputs = 0, 2793 /* .audio_inputs= 0, */
2949 .svhs = 3, 2794 .svhs = 3,
2950 .gpiomask = 0x00, 2795 .gpiomask = 0x00,
2951 .muxsel = { 2, 3, 1 }, 2796 .muxsel = { 2, 3, 1 },
@@ -2954,13 +2799,12 @@ struct tvcard bttv_tvcards[] = {
2954 .pll = PLL_28, 2799 .pll = PLL_28,
2955 .tuner_type = TUNER_ABSENT, 2800 .tuner_type = TUNER_ABSENT,
2956 .tuner_addr = ADDR_UNSET, 2801 .tuner_addr = ADDR_UNSET,
2957 .radio_addr = ADDR_UNSET,
2958 }, 2802 },
2959 [BTTV_BOARD_VD012_X2] = { 2803 [BTTV_BOARD_VD012_X2] = {
2960 /* D.Heer@Phytec.de */ 2804 /* D.Heer@Phytec.de */
2961 .name = "PHYTEC VD-012-X2 (bt878)", 2805 .name = "PHYTEC VD-012-X2 (bt878)",
2962 .video_inputs = 4, 2806 .video_inputs = 4,
2963 .audio_inputs = 0, 2807 /* .audio_inputs= 0, */
2964 .svhs = 3, 2808 .svhs = 3,
2965 .gpiomask = 0x00, 2809 .gpiomask = 0x00,
2966 .muxsel = { 3, 2, 1 }, 2810 .muxsel = { 3, 2, 1 },
@@ -2969,7 +2813,6 @@ struct tvcard bttv_tvcards[] = {
2969 .pll = PLL_28, 2813 .pll = PLL_28,
2970 .tuner_type = TUNER_ABSENT, 2814 .tuner_type = TUNER_ABSENT,
2971 .tuner_addr = ADDR_UNSET, 2815 .tuner_addr = ADDR_UNSET,
2972 .radio_addr = ADDR_UNSET,
2973 } 2816 }
2974}; 2817};
2975 2818
@@ -3574,7 +3417,8 @@ void __devinit bttv_init_card2(struct bttv *btv)
3574 bttv_call_i2c_clients(btv, TUNER_SET_CONFIG, &tda9887_cfg); 3417 bttv_call_i2c_clients(btv, TUNER_SET_CONFIG, &tda9887_cfg);
3575 } 3418 }
3576 3419
3577 btv->svhs = bttv_tvcards[btv->c.type].svhs; 3420 btv->svhs = bttv_tvcards[btv->c.type].svhs == NO_SVHS ?
3421 UNSET : bttv_tvcards[btv->c.type].svhs;
3578 if (svhs[btv->c.nr] != UNSET) 3422 if (svhs[btv->c.nr] != UNSET)
3579 btv->svhs = svhs[btv->c.nr]; 3423 btv->svhs = svhs[btv->c.nr];
3580 if (remote[btv->c.nr] != UNSET) 3424 if (remote[btv->c.nr] != UNSET)
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h
index 861ff2f8f985..a2e140a25df6 100644
--- a/drivers/media/video/bt8xx/bttv.h
+++ b/drivers/media/video/bt8xx/bttv.h
@@ -192,10 +192,6 @@
192#define WINVIEW_PT2254_DATA 0x20 192#define WINVIEW_PT2254_DATA 0x20
193#define WINVIEW_PT2254_STROBE 0x80 193#define WINVIEW_PT2254_STROBE 0x80
194 194
195/* digital_mode */
196#define DIGITAL_MODE_VIDEO 1
197#define DIGITAL_MODE_CAMERA 2
198
199struct bttv_core { 195struct bttv_core {
200 /* device structs */ 196 /* device structs */
201 struct pci_dev *pci; 197 struct pci_dev *pci;
@@ -211,19 +207,24 @@ struct bttv_core {
211struct bttv; 207struct bttv;
212 208
213 209
214struct tvcard 210struct tvcard {
215{
216 char *name; 211 char *name;
217 unsigned int video_inputs; 212 void (*volume_gpio)(struct bttv *btv, __u16 volume);
218 unsigned int audio_inputs; 213 void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set);
219 unsigned int svhs; 214 void (*muxsel_hook)(struct bttv *btv, unsigned int input);
220 unsigned int digital_mode; // DIGITAL_MODE_CAMERA or DIGITAL_MODE_VIDEO 215
221 u32 gpiomask; 216 u32 gpiomask;
222 u32 muxsel[16]; 217 u32 muxsel[16];
223 u32 gpiomux[4]; /* Tuner, Radio, external, internal */ 218 u32 gpiomux[4]; /* Tuner, Radio, external, internal */
224 u32 gpiomute; /* GPIO mute setting */ 219 u32 gpiomute; /* GPIO mute setting */
225 u32 gpiomask2; /* GPIO MUX mask */ 220 u32 gpiomask2; /* GPIO MUX mask */
226 221
222 unsigned int tuner_type;
223 u8 tuner_addr;
224 u8 video_inputs; /* Number of inputs */
225 unsigned int svhs:4; /* Which input is s-video */
226#define NO_SVHS 15
227
227 /* i2c audio flags */ 228 /* i2c audio flags */
228 unsigned int no_msp34xx:1; 229 unsigned int no_msp34xx:1;
229 unsigned int no_tda9875:1; 230 unsigned int no_tda9875:1;
@@ -231,28 +232,15 @@ struct tvcard
231 unsigned int needs_tvaudio:1; 232 unsigned int needs_tvaudio:1;
232 unsigned int msp34xx_alt:1; 233 unsigned int msp34xx_alt:1;
233 234
234 /* flag: video pci function is unused */ 235 unsigned int no_video:1; /* video pci function is unused */
235 unsigned int no_video:1;
236 unsigned int has_dvb:1; 236 unsigned int has_dvb:1;
237 unsigned int has_remote:1; 237 unsigned int has_remote:1;
238 unsigned int has_radio:1;
238 unsigned int no_gpioirq:1; 239 unsigned int no_gpioirq:1;
239 240 unsigned int pll:2;
240 /* other settings */
241 unsigned int pll;
242#define PLL_NONE 0 241#define PLL_NONE 0
243#define PLL_28 1 242#define PLL_28 1
244#define PLL_35 2 243#define PLL_35 2
245
246 unsigned int tuner_type;
247 unsigned int tuner_addr;
248 unsigned int radio_addr;
249
250 unsigned int has_radio;
251
252 void (*volume_gpio)(struct bttv *btv, __u16 volume);
253 void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set);
254
255 void (*muxsel_hook)(struct bttv *btv, unsigned int input);
256}; 244};
257 245
258extern struct tvcard bttv_tvcards[]; 246extern struct tvcard bttv_tvcards[];