aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/bt8xx/bttv-cards.c316
-rw-r--r--drivers/media/video/bt8xx/bttv-driver.c2
-rw-r--r--drivers/media/video/bt8xx/bttv.h30
-rw-r--r--drivers/media/video/bt8xx/bttvp.h6
4 files changed, 195 insertions, 159 deletions
diff --git a/drivers/media/video/bt8xx/bttv-cards.c b/drivers/media/video/bt8xx/bttv-cards.c
index fc2b796b25fc..fd1ab7a15cd4 100644
--- a/drivers/media/video/bt8xx/bttv-cards.c
+++ b/drivers/media/video/bt8xx/bttv-cards.c
@@ -323,7 +323,7 @@ struct tvcard bttv_tvcards[] = {
323 .name = " *** UNKNOWN/GENERIC *** ", 323 .name = " *** UNKNOWN/GENERIC *** ",
324 .video_inputs = 4, 324 .video_inputs = 4,
325 .svhs = 2, 325 .svhs = 2,
326 .muxsel = { 2, 3, 1, 0 }, 326 .muxsel = MUXSEL(2, 3, 1, 0),
327 .tuner_type = UNSET, 327 .tuner_type = UNSET,
328 .tuner_addr = ADDR_UNSET, 328 .tuner_addr = ADDR_UNSET,
329 }, 329 },
@@ -333,7 +333,7 @@ struct tvcard bttv_tvcards[] = {
333 /* .audio_inputs= 1, */ 333 /* .audio_inputs= 1, */
334 .svhs = 2, 334 .svhs = 2,
335 .gpiomask = 15, 335 .gpiomask = 15,
336 .muxsel = { 2, 3, 1, 1 }, 336 .muxsel = MUXSEL(2, 3, 1, 1),
337 .gpiomux = { 2, 0, 0, 0 }, 337 .gpiomux = { 2, 0, 0, 0 },
338 .gpiomute = 10, 338 .gpiomute = 10,
339 .needs_tvaudio = 1, 339 .needs_tvaudio = 1,
@@ -346,7 +346,7 @@ struct tvcard bttv_tvcards[] = {
346 /* .audio_inputs= 1, */ 346 /* .audio_inputs= 1, */
347 .svhs = 2, 347 .svhs = 2,
348 .gpiomask = 7, 348 .gpiomask = 7,
349 .muxsel = { 2, 3, 1, 1 }, 349 .muxsel = MUXSEL(2, 3, 1, 1),
350 .gpiomux = { 0, 1, 2, 3 }, 350 .gpiomux = { 0, 1, 2, 3 },
351 .gpiomute = 4, 351 .gpiomute = 4,
352 .needs_tvaudio = 1, 352 .needs_tvaudio = 1,
@@ -359,7 +359,7 @@ struct tvcard bttv_tvcards[] = {
359 /* .audio_inputs= 1, */ 359 /* .audio_inputs= 1, */
360 .svhs = 2, 360 .svhs = 2,
361 .gpiomask = 7, 361 .gpiomask = 7,
362 .muxsel = { 2, 3, 1, 1 }, 362 .muxsel = MUXSEL(2, 3, 1, 1),
363 .gpiomux = { 4, 0, 2, 3 }, 363 .gpiomux = { 4, 0, 2, 3 },
364 .gpiomute = 1, 364 .gpiomute = 1,
365 .no_msp34xx = 1, 365 .no_msp34xx = 1,
@@ -377,7 +377,7 @@ struct tvcard bttv_tvcards[] = {
377 /* .audio_inputs= 0, */ 377 /* .audio_inputs= 0, */
378 .svhs = 2, 378 .svhs = 2,
379 .gpiomask = 0, 379 .gpiomask = 0,
380 .muxsel = { 2, 3, 1, 1 }, 380 .muxsel = MUXSEL(2, 3, 1, 1),
381 .gpiomux = { 0 }, 381 .gpiomux = { 0 },
382 .needs_tvaudio = 0, 382 .needs_tvaudio = 0,
383 .tuner_type = TUNER_ABSENT, 383 .tuner_type = TUNER_ABSENT,
@@ -389,7 +389,7 @@ struct tvcard bttv_tvcards[] = {
389 /* .audio_inputs= 1, */ 389 /* .audio_inputs= 1, */
390 .svhs = 2, 390 .svhs = 2,
391 .gpiomask = 3, 391 .gpiomask = 3,
392 .muxsel = { 2, 3, 1, 0 }, 392 .muxsel = MUXSEL(2, 3, 1, 0),
393 .gpiomux = { 0, 1, 0, 1 }, 393 .gpiomux = { 0, 1, 0, 1 },
394 .gpiomute = 3, 394 .gpiomute = 3,
395 .needs_tvaudio = 1, 395 .needs_tvaudio = 1,
@@ -401,7 +401,7 @@ struct tvcard bttv_tvcards[] = {
401 .video_inputs = 3, 401 .video_inputs = 3,
402 /* .audio_inputs= 1, */ 402 /* .audio_inputs= 1, */
403 .svhs = 3, 403 .svhs = 3,
404 .muxsel = { 2, 3, 1, 1 }, 404 .muxsel = MUXSEL(2, 3, 1, 1),
405 .gpiomask = 0x0f, 405 .gpiomask = 0x0f,
406 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 }, 406 .gpiomux = { 0x0c, 0x04, 0x08, 0x04 },
407 /* 0x04 for some cards ?? */ 407 /* 0x04 for some cards ?? */
@@ -417,7 +417,7 @@ struct tvcard bttv_tvcards[] = {
417 /* .audio_inputs= 1, */ 417 /* .audio_inputs= 1, */
418 .svhs = 3, 418 .svhs = 3,
419 .gpiomask = 0, 419 .gpiomask = 0,
420 .muxsel = { 2, 3, 1, 0, 0 }, 420 .muxsel = MUXSEL(2, 3, 1, 0, 0),
421 .gpiomux = { 0 }, 421 .gpiomux = { 0 },
422 .needs_tvaudio = 1, 422 .needs_tvaudio = 1,
423 .tuner_type = TUNER_ABSENT, 423 .tuner_type = TUNER_ABSENT,
@@ -431,7 +431,7 @@ struct tvcard bttv_tvcards[] = {
431 /* .audio_inputs= 1, */ 431 /* .audio_inputs= 1, */
432 .svhs = 2, 432 .svhs = 2,
433 .gpiomask = 0xc00, 433 .gpiomask = 0xc00,
434 .muxsel = { 2, 3, 1, 1 }, 434 .muxsel = MUXSEL(2, 3, 1, 1),
435 .gpiomux = { 0, 0xc00, 0x800, 0x400 }, 435 .gpiomux = { 0, 0xc00, 0x800, 0x400 },
436 .gpiomute = 0xc00, 436 .gpiomute = 0xc00,
437 .needs_tvaudio = 1, 437 .needs_tvaudio = 1,
@@ -445,7 +445,7 @@ struct tvcard bttv_tvcards[] = {
445 /* .audio_inputs= 1, */ 445 /* .audio_inputs= 1, */
446 .svhs = 2, 446 .svhs = 2,
447 .gpiomask = 3, 447 .gpiomask = 3,
448 .muxsel = { 2, 3, 1, 1 }, 448 .muxsel = MUXSEL(2, 3, 1, 1),
449 .gpiomux = { 1, 1, 2, 3 }, 449 .gpiomux = { 1, 1, 2, 3 },
450 .needs_tvaudio = 0, 450 .needs_tvaudio = 0,
451 .pll = PLL_28, 451 .pll = PLL_28,
@@ -458,7 +458,7 @@ struct tvcard bttv_tvcards[] = {
458 /* .audio_inputs= 1, */ 458 /* .audio_inputs= 1, */
459 .svhs = 2, 459 .svhs = 2,
460 .gpiomask = 0x0f, /* old: 7 */ 460 .gpiomask = 0x0f, /* old: 7 */
461 .muxsel = { 2, 0, 1, 1 }, 461 .muxsel = MUXSEL(2, 0, 1, 1),
462 .gpiomux = { 0, 1, 2, 3 }, 462 .gpiomux = { 0, 1, 2, 3 },
463 .gpiomute = 4, 463 .gpiomute = 4,
464 .needs_tvaudio = 1, 464 .needs_tvaudio = 1,
@@ -472,7 +472,7 @@ struct tvcard bttv_tvcards[] = {
472 /* .audio_inputs= 1, */ 472 /* .audio_inputs= 1, */
473 .svhs = 2, 473 .svhs = 2,
474 .gpiomask = 0x3014f, 474 .gpiomask = 0x3014f,
475 .muxsel = { 2, 3, 1, 1 }, 475 .muxsel = MUXSEL(2, 3, 1, 1),
476 .gpiomux = { 0x20001,0x10001, 0, 0 }, 476 .gpiomux = { 0x20001,0x10001, 0, 0 },
477 .gpiomute = 10, 477 .gpiomute = 10,
478 .needs_tvaudio = 1, 478 .needs_tvaudio = 1,
@@ -487,7 +487,7 @@ struct tvcard bttv_tvcards[] = {
487 /* .audio_inputs= 1, */ 487 /* .audio_inputs= 1, */
488 .svhs = 2, 488 .svhs = 2,
489 .gpiomask = 15, 489 .gpiomask = 15,
490 .muxsel = { 2, 3, 1, 1 }, 490 .muxsel = MUXSEL(2, 3, 1, 1),
491 .gpiomux = { 13, 14, 11, 7 }, 491 .gpiomux = { 13, 14, 11, 7 },
492 .needs_tvaudio = 1, 492 .needs_tvaudio = 1,
493 .tuner_type = UNSET, 493 .tuner_type = UNSET,
@@ -499,7 +499,7 @@ struct tvcard bttv_tvcards[] = {
499 /* .audio_inputs= 4, */ 499 /* .audio_inputs= 4, */
500 .svhs = 2, 500 .svhs = 2,
501 .gpiomask = 15, 501 .gpiomask = 15,
502 .muxsel = { 2, 3, 1, 1 }, 502 .muxsel = MUXSEL(2, 3, 1, 1),
503 .gpiomux = { 13, 14, 11, 7 }, 503 .gpiomux = { 13, 14, 11, 7 },
504 .needs_tvaudio = 1, 504 .needs_tvaudio = 1,
505 .msp34xx_alt = 1, 505 .msp34xx_alt = 1,
@@ -515,7 +515,7 @@ struct tvcard bttv_tvcards[] = {
515 /* .audio_inputs= 1, */ 515 /* .audio_inputs= 1, */
516 .svhs = 2, 516 .svhs = 2,
517 .gpiomask = 7, 517 .gpiomask = 7,
518 .muxsel = { 2, 3, 1, 1 }, 518 .muxsel = MUXSEL(2, 3, 1, 1),
519 .gpiomux = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */ 519 .gpiomux = { 0, 2, 1, 3 }, /* old: {0, 1, 2, 3, 4} */
520 .gpiomute = 4, 520 .gpiomute = 4,
521 .needs_tvaudio = 1, 521 .needs_tvaudio = 1,
@@ -529,7 +529,7 @@ struct tvcard bttv_tvcards[] = {
529 /* .audio_inputs= 1, */ 529 /* .audio_inputs= 1, */
530 .svhs = 2, 530 .svhs = 2,
531 .gpiomask = 15, 531 .gpiomask = 15,
532 .muxsel = { 2, 3, 1, 1 }, 532 .muxsel = MUXSEL(2, 3, 1, 1),
533 .gpiomux = { 0, 0, 1, 0 }, 533 .gpiomux = { 0, 0, 1, 0 },
534 .gpiomute = 10, 534 .gpiomute = 10,
535 .needs_tvaudio = 1, 535 .needs_tvaudio = 1,
@@ -544,7 +544,7 @@ struct tvcard bttv_tvcards[] = {
544 /* .audio_inputs= 1, */ 544 /* .audio_inputs= 1, */
545 .svhs = 2, 545 .svhs = 2,
546 .gpiomask = 0x01fe00, 546 .gpiomask = 0x01fe00,
547 .muxsel = { 2, 3, 1, 1 }, 547 .muxsel = MUXSEL(2, 3, 1, 1),
548 /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */ 548 /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */
549 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 }, 549 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
550 .gpiomute = 0x002000, 550 .gpiomute = 0x002000,
@@ -559,7 +559,7 @@ struct tvcard bttv_tvcards[] = {
559 /* .audio_inputs= 1, */ 559 /* .audio_inputs= 1, */
560 .svhs = 2, 560 .svhs = 2,
561 .gpiomask = 0x8300f8, 561 .gpiomask = 0x8300f8,
562 .muxsel = { 2, 3, 1, 1,0 }, 562 .muxsel = MUXSEL(2, 3, 1, 1, 0),
563 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 }, 563 .gpiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007 },
564 .gpiomute = 0xcfa007, 564 .gpiomute = 0xcfa007,
565 .needs_tvaudio = 1, 565 .needs_tvaudio = 1,
@@ -574,7 +574,7 @@ struct tvcard bttv_tvcards[] = {
574 /* .audio_inputs= 2, */ 574 /* .audio_inputs= 2, */
575 .svhs = 2, 575 .svhs = 2,
576 .gpiomask = 0, 576 .gpiomask = 0,
577 .muxsel = { 2, 3, 1, 1 }, 577 .muxsel = MUXSEL(2, 3, 1, 1),
578 .gpiomux = { 1, 0, 0, 0 }, 578 .gpiomux = { 1, 0, 0, 0 },
579 .needs_tvaudio = 1, 579 .needs_tvaudio = 1,
580 .tuner_type = UNSET, 580 .tuner_type = UNSET,
@@ -586,7 +586,7 @@ struct tvcard bttv_tvcards[] = {
586 /* .audio_inputs= 1, */ 586 /* .audio_inputs= 1, */
587 .svhs = NO_SVHS, 587 .svhs = NO_SVHS,
588 .gpiomask = 0x8dff00, 588 .gpiomask = 0x8dff00,
589 .muxsel = { 2, 3, 1, 1 }, 589 .muxsel = MUXSEL(2, 3, 1, 1),
590 .gpiomux = { 0 }, 590 .gpiomux = { 0 },
591 .no_msp34xx = 1, 591 .no_msp34xx = 1,
592 .tuner_type = TUNER_ABSENT, 592 .tuner_type = TUNER_ABSENT,
@@ -599,7 +599,7 @@ struct tvcard bttv_tvcards[] = {
599 .video_inputs = 3, 599 .video_inputs = 3,
600 /* .audio_inputs= 3, */ 600 /* .audio_inputs= 3, */
601 .svhs = 2, 601 .svhs = 2,
602 .muxsel = { 2, 3, 1, 1 }, 602 .muxsel = MUXSEL(2, 3, 1, 1),
603 .tuner_type = UNSET, 603 .tuner_type = UNSET,
604 .tuner_addr = ADDR_UNSET, 604 .tuner_addr = ADDR_UNSET,
605 }, 605 },
@@ -609,7 +609,7 @@ struct tvcard bttv_tvcards[] = {
609 /* .audio_inputs= 2, tuner, line in */ 609 /* .audio_inputs= 2, tuner, line in */
610 .svhs = 2, 610 .svhs = 2,
611 .gpiomask = 0x1800, 611 .gpiomask = 0x1800,
612 .muxsel = { 2, 3, 1, 1 }, 612 .muxsel = MUXSEL(2, 3, 1, 1),
613 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 613 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
614 .gpiomute = 0x1800, 614 .gpiomute = 0x1800,
615 .pll = PLL_28, 615 .pll = PLL_28,
@@ -622,7 +622,7 @@ struct tvcard bttv_tvcards[] = {
622 /* .audio_inputs= 1, */ 622 /* .audio_inputs= 1, */
623 .svhs = 2, 623 .svhs = 2,
624 .gpiomask = 0xc00, 624 .gpiomask = 0xc00,
625 .muxsel = { 2, 3, 1, 1 }, 625 .muxsel = MUXSEL(2, 3, 1, 1),
626 .gpiomux = { 0, 1, 0x800, 0x400 }, 626 .gpiomux = { 0, 1, 0x800, 0x400 },
627 .gpiomute = 0xc00, 627 .gpiomute = 0xc00,
628 .needs_tvaudio = 1, 628 .needs_tvaudio = 1,
@@ -637,7 +637,7 @@ struct tvcard bttv_tvcards[] = {
637 .svhs = NO_SVHS, 637 .svhs = NO_SVHS,
638 .has_dig_in = 1, 638 .has_dig_in = 1,
639 .gpiomask = 7, 639 .gpiomask = 7,
640 .muxsel = { 2, 3, 0 }, /* input 2 is digital */ 640 .muxsel = MUXSEL(2, 3, 0), /* input 2 is digital */
641 /* .digital_mode= DIGITAL_MODE_CAMERA, */ 641 /* .digital_mode= DIGITAL_MODE_CAMERA, */
642 .gpiomux = { 0, 0, 0, 0 }, 642 .gpiomux = { 0, 0, 0, 0 },
643 .no_msp34xx = 1, 643 .no_msp34xx = 1,
@@ -653,7 +653,7 @@ struct tvcard bttv_tvcards[] = {
653 /* .audio_inputs= 1, */ 653 /* .audio_inputs= 1, */
654 .svhs = 2, 654 .svhs = 2,
655 .gpiomask = 0xe00, 655 .gpiomask = 0xe00,
656 .muxsel = { 2, 3, 1, 1 }, 656 .muxsel = MUXSEL(2, 3, 1, 1),
657 .gpiomux = {0x400, 0x400, 0x400, 0x400 }, 657 .gpiomux = {0x400, 0x400, 0x400, 0x400 },
658 .gpiomute = 0xc00, 658 .gpiomute = 0xc00,
659 .needs_tvaudio = 1, 659 .needs_tvaudio = 1,
@@ -668,7 +668,7 @@ struct tvcard bttv_tvcards[] = {
668 /* .audio_inputs= 1, */ 668 /* .audio_inputs= 1, */
669 .svhs = 2, 669 .svhs = 2,
670 .gpiomask = 0x1f0fff, 670 .gpiomask = 0x1f0fff,
671 .muxsel = { 2, 3, 1, 1 }, 671 .muxsel = MUXSEL(2, 3, 1, 1),
672 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 }, 672 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
673 .gpiomute = 0x40000, 673 .gpiomute = 0x40000,
674 .needs_tvaudio = 0, 674 .needs_tvaudio = 0,
@@ -682,7 +682,7 @@ struct tvcard bttv_tvcards[] = {
682 /* .audio_inputs= 1, */ 682 /* .audio_inputs= 1, */
683 .svhs = 3, 683 .svhs = 3,
684 .gpiomask = 7, 684 .gpiomask = 7,
685 .muxsel = { 2, 0, 1, 1 }, 685 .muxsel = MUXSEL(2, 0, 1, 1),
686 .gpiomux = { 0, 1, 2, 3 }, 686 .gpiomux = { 0, 1, 2, 3 },
687 .gpiomute = 4, 687 .gpiomute = 4,
688 .needs_tvaudio = 1, 688 .needs_tvaudio = 1,
@@ -695,7 +695,7 @@ struct tvcard bttv_tvcards[] = {
695 /* .audio_inputs= 2, */ 695 /* .audio_inputs= 2, */
696 .svhs = 2, 696 .svhs = 2,
697 .gpiomask = 0x1800, 697 .gpiomask = 0x1800,
698 .muxsel = { 2, 3, 1, 1 }, 698 .muxsel = MUXSEL(2, 3, 1, 1),
699 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 699 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
700 .gpiomute = 0x1800, 700 .gpiomute = 0x1800,
701 .pll = PLL_28, 701 .pll = PLL_28,
@@ -710,7 +710,7 @@ struct tvcard bttv_tvcards[] = {
710 /* .audio_inputs= 1, */ 710 /* .audio_inputs= 1, */
711 .svhs = 2, 711 .svhs = 2,
712 .gpiomask = 0x1f0fff, 712 .gpiomask = 0x1f0fff,
713 .muxsel = { 2, 3, 1, 1 }, 713 .muxsel = MUXSEL(2, 3, 1, 1),
714 .gpiomux = { 0x20000, 0x30000, 0x10000, 0x00000 }, 714 .gpiomux = { 0x20000, 0x30000, 0x10000, 0x00000 },
715 .gpiomute = 0x40000, 715 .gpiomute = 0x40000,
716 .needs_tvaudio = 0, 716 .needs_tvaudio = 0,
@@ -756,7 +756,7 @@ struct tvcard bttv_tvcards[] = {
756 /* .audio_inputs= 1, */ 756 /* .audio_inputs= 1, */
757 .svhs = 1, /* was: 4 */ 757 .svhs = 1, /* was: 4 */
758 .gpiomask = 0, 758 .gpiomask = 0,
759 .muxsel = { 2, 3, 1, 0, 0}, 759 .muxsel = MUXSEL(2, 3, 1, 0, 0),
760 .gpiomux = { 0 }, 760 .gpiomux = { 0 },
761 .needs_tvaudio = 1, 761 .needs_tvaudio = 1,
762 .tuner_type = TUNER_ABSENT, 762 .tuner_type = TUNER_ABSENT,
@@ -770,7 +770,7 @@ struct tvcard bttv_tvcards[] = {
770 /* .audio_inputs= 1, */ 770 /* .audio_inputs= 1, */
771 .svhs = 2, 771 .svhs = 2,
772 .gpiomask = 0x1800, /* 0x8dfe00 */ 772 .gpiomask = 0x1800, /* 0x8dfe00 */
773 .muxsel = { 2, 3, 1, 1 }, 773 .muxsel = MUXSEL(2, 3, 1, 1),
774 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 }, 774 .gpiomux = { 0, 0x0800, 0x1000, 0x1000 },
775 .gpiomute = 0x1800, 775 .gpiomute = 0x1800,
776 .pll = PLL_28, 776 .pll = PLL_28,
@@ -783,7 +783,7 @@ struct tvcard bttv_tvcards[] = {
783 /* .audio_inputs= 1, */ 783 /* .audio_inputs= 1, */
784 .svhs = 3, 784 .svhs = 3,
785 .gpiomask = 1, 785 .gpiomask = 1,
786 .muxsel = { 2, 3, 1, 1 }, 786 .muxsel = MUXSEL(2, 3, 1, 1),
787 .gpiomux = { 1, 0, 0, 0 }, 787 .gpiomux = { 1, 0, 0, 0 },
788 .pll = PLL_28, 788 .pll = PLL_28,
789 .tuner_type = TUNER_PHILIPS_PAL, 789 .tuner_type = TUNER_PHILIPS_PAL,
@@ -797,7 +797,7 @@ struct tvcard bttv_tvcards[] = {
797 /* .audio_inputs= 0, */ 797 /* .audio_inputs= 0, */
798 .svhs = 2, 798 .svhs = 2,
799 .gpiomask = 0, 799 .gpiomask = 0,
800 .muxsel = { 2, 3, 1, 1 }, 800 .muxsel = MUXSEL(2, 3, 1, 1),
801 .gpiomux = { 0 }, 801 .gpiomux = { 0 },
802 .needs_tvaudio = 0, 802 .needs_tvaudio = 0,
803 .tuner_type = TUNER_ABSENT, 803 .tuner_type = TUNER_ABSENT,
@@ -809,7 +809,7 @@ struct tvcard bttv_tvcards[] = {
809 /* .audio_inputs= 1, */ 809 /* .audio_inputs= 1, */
810 .svhs = 2, 810 .svhs = 2,
811 .gpiomask = 0xffff00, 811 .gpiomask = 0xffff00,
812 .muxsel = { 2, 3, 1, 1 }, 812 .muxsel = MUXSEL(2, 3, 1, 1),
813 .gpiomux = { 0x500, 0, 0x300, 0x900 }, 813 .gpiomux = { 0x500, 0, 0x300, 0x900 },
814 .gpiomute = 0x900, 814 .gpiomute = 0x900,
815 .needs_tvaudio = 1, 815 .needs_tvaudio = 1,
@@ -822,7 +822,8 @@ struct tvcard bttv_tvcards[] = {
822 .video_inputs = 4, 822 .video_inputs = 4,
823 /* .audio_inputs= 1, */ 823 /* .audio_inputs= 1, */
824 .svhs = 2, 824 .svhs = 2,
825 .muxsel = { 2, 3, 1, 1, 0 }, /* TV, CVid, SVid, CVid over SVid connector */ 825 /* TV, CVid, SVid, CVid over SVid connector */
826 .muxsel = MUXSEL(2, 3, 1, 1, 0),
826 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ 827 /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
827 .gpiomask = 0xb33000, 828 .gpiomask = 0xb33000,
828 .gpiomux = { 0x122000,0x1000,0x0000,0x620000 }, 829 .gpiomux = { 0x122000,0x1000,0x0000,0x620000 },
@@ -852,7 +853,7 @@ struct tvcard bttv_tvcards[] = {
852 /* .audio_inputs= 3, */ 853 /* .audio_inputs= 3, */
853 .svhs = 2, 854 .svhs = 2,
854 .gpiomask = 0x1800, 855 .gpiomask = 0x1800,
855 .muxsel = { 2, 3, 1, 1 }, 856 .muxsel = MUXSEL(2, 3, 1, 1),
856 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 857 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
857 .gpiomute = 0x1800, 858 .gpiomute = 0x1800,
858 .pll = PLL_28, 859 .pll = PLL_28,
@@ -867,7 +868,7 @@ struct tvcard bttv_tvcards[] = {
867 /* .audio_inputs= 3, */ 868 /* .audio_inputs= 3, */
868 .svhs = 2, 869 .svhs = 2,
869 .gpiomask = 0x1800, 870 .gpiomask = 0x1800,
870 .muxsel = { 2, 3, 1, 1 }, 871 .muxsel = MUXSEL(2, 3, 1, 1),
871 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 872 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
872 .gpiomute = 0x1800, 873 .gpiomute = 0x1800,
873 .pll = PLL_28, 874 .pll = PLL_28,
@@ -881,7 +882,7 @@ struct tvcard bttv_tvcards[] = {
881 /* .audio_inputs= 1, */ 882 /* .audio_inputs= 1, */
882 .svhs = 2, 883 .svhs = 2,
883 .gpiomask = 0xff, 884 .gpiomask = 0xff,
884 .muxsel = { 2, 3, 1, 1 }, 885 .muxsel = MUXSEL(2, 3, 1, 1),
885 .gpiomux = { 0x21, 0x20, 0x24, 0x2c }, 886 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
886 .gpiomute = 0x29, 887 .gpiomute = 0x29,
887 .no_msp34xx = 1, 888 .no_msp34xx = 1,
@@ -895,7 +896,7 @@ struct tvcard bttv_tvcards[] = {
895 /* .audio_inputs= 1, */ 896 /* .audio_inputs= 1, */
896 .svhs = 2, 897 .svhs = 2,
897 .gpiomask = 0x551e00, 898 .gpiomask = 0x551e00,
898 .muxsel = { 2, 3, 1, 0 }, 899 .muxsel = MUXSEL(2, 3, 1, 0),
899 .gpiomux = { 0x551400, 0x551200, 0, 0 }, 900 .gpiomux = { 0x551400, 0x551200, 0, 0 },
900 .gpiomute = 0x551c00, 901 .gpiomute = 0x551c00,
901 .needs_tvaudio = 1, 902 .needs_tvaudio = 1,
@@ -910,7 +911,7 @@ struct tvcard bttv_tvcards[] = {
910 /* .audio_inputs= 1, */ 911 /* .audio_inputs= 1, */
911 .svhs = 2, 912 .svhs = 2,
912 .gpiomask = 0x03000F, 913 .gpiomask = 0x03000F,
913 .muxsel = { 2, 3, 1, 1 }, 914 .muxsel = MUXSEL(2, 3, 1, 1),
914 .gpiomux = { 2, 0xd0001, 0, 0 }, 915 .gpiomux = { 2, 0xd0001, 0, 0 },
915 .gpiomute = 1, 916 .gpiomute = 1,
916 .needs_tvaudio = 0, 917 .needs_tvaudio = 0,
@@ -926,7 +927,7 @@ struct tvcard bttv_tvcards[] = {
926 /* .audio_inputs= 1, */ 927 /* .audio_inputs= 1, */
927 .svhs = 2, 928 .svhs = 2,
928 .gpiomask = 7, 929 .gpiomask = 7,
929 .muxsel = { 2, 3, 1, 1 }, 930 .muxsel = MUXSEL(2, 3, 1, 1),
930 .gpiomux = { 4, 0, 2, 3 }, 931 .gpiomux = { 4, 0, 2, 3 },
931 .gpiomute = 1, 932 .gpiomute = 1,
932 .no_msp34xx = 1, 933 .no_msp34xx = 1,
@@ -942,7 +943,7 @@ struct tvcard bttv_tvcards[] = {
942 /* .audio_inputs= 4, */ 943 /* .audio_inputs= 4, */
943 .svhs = 2, 944 .svhs = 2,
944 .gpiomask = 15, 945 .gpiomask = 15,
945 .muxsel = { 2, 3, 1, 1 }, 946 .muxsel = MUXSEL(2, 3, 1, 1),
946 .gpiomux = { 13, 4, 11, 7 }, 947 .gpiomux = { 13, 4, 11, 7 },
947 .needs_tvaudio = 1, 948 .needs_tvaudio = 1,
948 .pll = PLL_28, 949 .pll = PLL_28,
@@ -957,7 +958,7 @@ struct tvcard bttv_tvcards[] = {
957 /* .audio_inputs= 1, */ 958 /* .audio_inputs= 1, */
958 .svhs = 2, 959 .svhs = 2,
959 .gpiomask = 0, 960 .gpiomask = 0,
960 .muxsel = { 2, 3, 1, 1}, 961 .muxsel = MUXSEL(2, 3, 1, 1),
961 .gpiomux = { 0, 0, 0, 0}, 962 .gpiomux = { 0, 0, 0, 0},
962 .needs_tvaudio = 1, 963 .needs_tvaudio = 1,
963 .no_msp34xx = 1, 964 .no_msp34xx = 1,
@@ -971,7 +972,7 @@ struct tvcard bttv_tvcards[] = {
971 /* .audio_inputs= 1, */ 972 /* .audio_inputs= 1, */
972 .svhs = 2, 973 .svhs = 2,
973 .gpiomask = 0xe00b, 974 .gpiomask = 0xe00b,
974 .muxsel = { 2, 3, 1, 1 }, 975 .muxsel = MUXSEL(2, 3, 1, 1),
975 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 }, 976 .gpiomux = { 0xff9ff6, 0xff9ff6, 0xff1ff7, 0 },
976 .gpiomute = 0xff3ffc, 977 .gpiomute = 0xff3ffc,
977 .no_msp34xx = 1, 978 .no_msp34xx = 1,
@@ -986,7 +987,7 @@ struct tvcard bttv_tvcards[] = {
986 /* .audio_inputs= 1, */ 987 /* .audio_inputs= 1, */
987 .svhs = NO_SVHS, 988 .svhs = NO_SVHS,
988 .gpiomask = 3, 989 .gpiomask = 3,
989 .muxsel = { 2, 3, 1, 1 }, 990 .muxsel = MUXSEL(2, 3, 1, 1),
990 .gpiomux = { 1, 1, 0, 2 }, 991 .gpiomux = { 1, 1, 0, 2 },
991 .gpiomute = 3, 992 .gpiomute = 3,
992 .no_msp34xx = 1, 993 .no_msp34xx = 1,
@@ -1000,7 +1001,7 @@ struct tvcard bttv_tvcards[] = {
1000 /* .audio_inputs= 1, */ 1001 /* .audio_inputs= 1, */
1001 .svhs = 3, 1002 .svhs = 3,
1002 .gpiomask = 0, 1003 .gpiomask = 0,
1003 .muxsel = { 2, 3, 1, 0, 0 }, 1004 .muxsel = MUXSEL(2, 3, 1, 0, 0),
1004 .gpiomux = { 0 }, 1005 .gpiomux = { 0 },
1005 .no_msp34xx = 1, 1006 .no_msp34xx = 1,
1006 .pll = PLL_28, 1007 .pll = PLL_28,
@@ -1013,7 +1014,7 @@ struct tvcard bttv_tvcards[] = {
1013 /* .audio_inputs= 1, */ 1014 /* .audio_inputs= 1, */
1014 .svhs = 2, 1015 .svhs = 2,
1015 .gpiomask = 0xbcf03f, 1016 .gpiomask = 0xbcf03f,
1016 .muxsel = { 2, 3, 1, 1 }, 1017 .muxsel = MUXSEL(2, 3, 1, 1),
1017 .gpiomux = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 }, 1018 .gpiomux = { 0xbc803f, 0xbc903f, 0xbcb03f, 0 },
1018 .gpiomute = 0xbcb03f, 1019 .gpiomute = 0xbcb03f,
1019 .no_msp34xx = 1, 1020 .no_msp34xx = 1,
@@ -1027,7 +1028,7 @@ struct tvcard bttv_tvcards[] = {
1027 /* .audio_inputs= 1, */ 1028 /* .audio_inputs= 1, */
1028 .svhs = 2, 1029 .svhs = 2,
1029 .gpiomask = 0x70000, 1030 .gpiomask = 0x70000,
1030 .muxsel = { 2, 3, 1, 1 }, 1031 .muxsel = MUXSEL(2, 3, 1, 1),
1031 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 }, 1032 .gpiomux = { 0x20000, 0x30000, 0x10000, 0 },
1032 .gpiomute = 0x40000, 1033 .gpiomute = 0x40000,
1033 .needs_tvaudio = 1, 1034 .needs_tvaudio = 1,
@@ -1045,7 +1046,7 @@ struct tvcard bttv_tvcards[] = {
1045 /* .audio_inputs= 1, */ 1046 /* .audio_inputs= 1, */
1046 .svhs = 2, 1047 .svhs = 2,
1047 .gpiomask = 15, 1048 .gpiomask = 15,
1048 .muxsel = { 2, 3, 1, 1 }, 1049 .muxsel = MUXSEL(2, 3, 1, 1),
1049 .gpiomux = {2,0,0,0 }, 1050 .gpiomux = {2,0,0,0 },
1050 .gpiomute = 1, 1051 .gpiomute = 1,
1051 .needs_tvaudio = 1, 1052 .needs_tvaudio = 1,
@@ -1059,7 +1060,7 @@ struct tvcard bttv_tvcards[] = {
1059 /* .audio_inputs= 1, */ 1060 /* .audio_inputs= 1, */
1060 .svhs = 2, 1061 .svhs = 2,
1061 .gpiomask = 0x010f00, 1062 .gpiomask = 0x010f00,
1062 .muxsel = {2, 3, 0, 0 }, 1063 .muxsel = MUXSEL(2, 3, 0, 0),
1063 .gpiomux = {0x10000, 0, 0x10000, 0 }, 1064 .gpiomux = {0x10000, 0, 0x10000, 0 },
1064 .no_msp34xx = 1, 1065 .no_msp34xx = 1,
1065 .pll = PLL_28, 1066 .pll = PLL_28,
@@ -1074,7 +1075,7 @@ struct tvcard bttv_tvcards[] = {
1074 .svhs = 3, 1075 .svhs = 3,
1075 .has_dig_in = 1, 1076 .has_dig_in = 1,
1076 .gpiomask = 0xAA0000, 1077 .gpiomask = 0xAA0000,
1077 .muxsel = { 2, 3, 1, 1, 0 }, /* input 4 is digital */ 1078 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
1078 /* .digital_mode= DIGITAL_MODE_CAMERA, */ 1079 /* .digital_mode= DIGITAL_MODE_CAMERA, */
1079 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 }, 1080 .gpiomux = { 0x20000, 0, 0x80000, 0x80000 },
1080 .gpiomute = 0xa8000, 1081 .gpiomute = 0xa8000,
@@ -1099,7 +1100,7 @@ struct tvcard bttv_tvcards[] = {
1099 /* .audio_inputs= 1, */ 1100 /* .audio_inputs= 1, */
1100 .svhs = 2, 1101 .svhs = 2,
1101 .gpiomask = 7, 1102 .gpiomask = 7,
1102 .muxsel = { 2, 0, 1, 1 }, 1103 .muxsel = MUXSEL(2, 0, 1, 1),
1103 .gpiomux = { 0, 1, 2, 3 }, 1104 .gpiomux = { 0, 1, 2, 3 },
1104 .gpiomute = 4, 1105 .gpiomute = 4,
1105 .pll = PLL_28, 1106 .pll = PLL_28,
@@ -1115,7 +1116,7 @@ struct tvcard bttv_tvcards[] = {
1115 /* .audio_inputs= 1, */ 1116 /* .audio_inputs= 1, */
1116 .svhs = 3, 1117 .svhs = 3,
1117 .gpiomask = 0x03000F, 1118 .gpiomask = 0x03000F,
1118 .muxsel = { 2, 3, 1, 1 }, 1119 .muxsel = MUXSEL(2, 3, 1, 1),
1119 .gpiomux = { 1, 0xd0001, 0, 0 }, 1120 .gpiomux = { 1, 0xd0001, 0, 0 },
1120 .gpiomute = 10, 1121 .gpiomute = 10,
1121 /* sound path (5 sources): 1122 /* sound path (5 sources):
@@ -1140,7 +1141,7 @@ struct tvcard bttv_tvcards[] = {
1140 /* .audio_inputs= 3, */ 1141 /* .audio_inputs= 3, */
1141 .svhs = 2, 1142 .svhs = 2,
1142 .gpiomask = 0x1c, 1143 .gpiomask = 0x1c,
1143 .muxsel = { 2, 3, 1, 1 }, 1144 .muxsel = MUXSEL(2, 3, 1, 1),
1144 .gpiomux = { 0, 0, 0x10, 8 }, 1145 .gpiomux = { 0, 0, 0x10, 8 },
1145 .gpiomute = 4, 1146 .gpiomute = 4,
1146 .needs_tvaudio = 1, 1147 .needs_tvaudio = 1,
@@ -1160,7 +1161,7 @@ struct tvcard bttv_tvcards[] = {
1160 /* .audio_inputs= 1, */ 1161 /* .audio_inputs= 1, */
1161 .svhs = 2, 1162 .svhs = 2,
1162 .gpiomask = 0x18e0, 1163 .gpiomask = 0x18e0,
1163 .muxsel = { 2, 3, 1, 1 }, 1164 .muxsel = MUXSEL(2, 3, 1, 1),
1164 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 }, 1165 .gpiomux = { 0x0000,0x0800,0x1000,0x1000 },
1165 .gpiomute = 0x18e0, 1166 .gpiomute = 0x18e0,
1166 /* For cards with tda9820/tda9821: 1167 /* For cards with tda9820/tda9821:
@@ -1179,7 +1180,7 @@ struct tvcard bttv_tvcards[] = {
1179 /* .audio_inputs= 1, */ 1180 /* .audio_inputs= 1, */
1180 .svhs = 2, 1181 .svhs = 2,
1181 .gpiomask = 0xF, 1182 .gpiomask = 0xF,
1182 .muxsel = { 2, 3, 1, 0 }, 1183 .muxsel = MUXSEL(2, 3, 1, 0),
1183 .gpiomux = { 2, 0, 0, 0 }, 1184 .gpiomux = { 2, 0, 0, 0 },
1184 .gpiomute = 10, 1185 .gpiomute = 10,
1185 .needs_tvaudio = 0, 1186 .needs_tvaudio = 0,
@@ -1196,7 +1197,7 @@ struct tvcard bttv_tvcards[] = {
1196 /* .audio_inputs= 3, */ 1197 /* .audio_inputs= 3, */
1197 .svhs = 2, 1198 .svhs = 2,
1198 .gpiomask = 0x1800, 1199 .gpiomask = 0x1800,
1199 .muxsel = { 2, 3, 1, 1 }, 1200 .muxsel = MUXSEL(2, 3, 1, 1),
1200 .gpiomux = { 0, 0x800, 0x1000, 0x1000 }, 1201 .gpiomux = { 0, 0x800, 0x1000, 0x1000 },
1201 .gpiomute = 0x1800, 1202 .gpiomute = 0x1800,
1202 .pll = PLL_28, 1203 .pll = PLL_28,
@@ -1212,7 +1213,7 @@ struct tvcard bttv_tvcards[] = {
1212 /* .audio_inputs= 0, */ 1213 /* .audio_inputs= 0, */
1213 .svhs = 1, 1214 .svhs = 1,
1214 .gpiomask = 0, 1215 .gpiomask = 0,
1215 .muxsel = { 3, 1 }, 1216 .muxsel = MUXSEL(3, 1),
1216 .gpiomux = { 0 }, 1217 .gpiomux = { 0 },
1217 .needs_tvaudio = 0, 1218 .needs_tvaudio = 0,
1218 .no_msp34xx = 1, 1219 .no_msp34xx = 1,
@@ -1227,7 +1228,7 @@ struct tvcard bttv_tvcards[] = {
1227 /* .audio_inputs= 1, */ 1228 /* .audio_inputs= 1, */
1228 .svhs = 2, 1229 .svhs = 2,
1229 .gpiomask = 0xe00, 1230 .gpiomask = 0xe00,
1230 .muxsel = { 2, 3, 1, 1}, 1231 .muxsel = MUXSEL(2, 3, 1, 1),
1231 .gpiomux = { 0x400, 0x400, 0x400, 0x400 }, 1232 .gpiomux = { 0x400, 0x400, 0x400, 0x400 },
1232 .gpiomute = 0x800, 1233 .gpiomute = 0x800,
1233 .needs_tvaudio = 1, 1234 .needs_tvaudio = 1,
@@ -1242,7 +1243,7 @@ struct tvcard bttv_tvcards[] = {
1242 /* .audio_inputs= 1, */ 1243 /* .audio_inputs= 1, */
1243 .svhs = 2, 1244 .svhs = 2,
1244 .gpiomask = 0x03000F, 1245 .gpiomask = 0x03000F,
1245 .muxsel = { 2, 3, 1, 0 }, 1246 .muxsel = MUXSEL(2, 3, 1, 0),
1246 .gpiomux = { 2, 0, 0, 0 }, 1247 .gpiomux = { 2, 0, 0, 0 },
1247 .gpiomute = 1, 1248 .gpiomute = 1,
1248 .pll = PLL_28, 1249 .pll = PLL_28,
@@ -1258,7 +1259,7 @@ struct tvcard bttv_tvcards[] = {
1258 /* .audio_inputs= 2, */ 1259 /* .audio_inputs= 2, */
1259 .svhs = NO_SVHS, 1260 .svhs = NO_SVHS,
1260 .gpiomask = 11, 1261 .gpiomask = 11,
1261 .muxsel = { 2, 3, 1, 1 }, 1262 .muxsel = MUXSEL(2, 3, 1, 1),
1262 .gpiomux = { 2, 0, 0, 1 }, 1263 .gpiomux = { 2, 0, 0, 1 },
1263 .gpiomute = 8, 1264 .gpiomute = 8,
1264 .pll = PLL_35, 1265 .pll = PLL_35,
@@ -1272,7 +1273,7 @@ struct tvcard bttv_tvcards[] = {
1272 /* .audio_inputs= 0, */ 1273 /* .audio_inputs= 0, */
1273 .svhs = 1, 1274 .svhs = 1,
1274 .gpiomask = 0xF, 1275 .gpiomask = 0xF,
1275 .muxsel = { 2, 2 }, 1276 .muxsel = MUXSEL(2, 2),
1276 .gpiomux = { }, 1277 .gpiomux = { },
1277 .no_msp34xx = 1, 1278 .no_msp34xx = 1,
1278 .needs_tvaudio = 0, 1279 .needs_tvaudio = 0,
@@ -1289,7 +1290,7 @@ struct tvcard bttv_tvcards[] = {
1289 /* .audio_inputs= 2, */ 1290 /* .audio_inputs= 2, */
1290 .svhs = 2, 1291 .svhs = 2,
1291 .gpiomask = 0xFF, 1292 .gpiomask = 0xFF,
1292 .muxsel = { 2, 3, 1, 0 }, 1293 .muxsel = MUXSEL(2, 3, 1, 0),
1293 .gpiomux = { 1, 0, 4, 4 }, 1294 .gpiomux = { 1, 0, 4, 4 },
1294 .gpiomute = 9, 1295 .gpiomute = 9,
1295 .needs_tvaudio = 0, 1296 .needs_tvaudio = 0,
@@ -1304,7 +1305,7 @@ struct tvcard bttv_tvcards[] = {
1304 /* .audio_inputs= 1, */ 1305 /* .audio_inputs= 1, */
1305 .svhs = 2, 1306 .svhs = 2,
1306 .gpiomask = 0xf03f, 1307 .gpiomask = 0xf03f,
1307 .muxsel = { 2, 3, 1, 0 }, 1308 .muxsel = MUXSEL(2, 3, 1, 0),
1308 .gpiomux = { 0xbffe, 0, 0xbfff, 0 }, 1309 .gpiomux = { 0xbffe, 0, 0xbfff, 0 },
1309 .gpiomute = 0xbffe, 1310 .gpiomute = 0xbffe,
1310 .pll = PLL_28, 1311 .pll = PLL_28,
@@ -1320,7 +1321,7 @@ struct tvcard bttv_tvcards[] = {
1320 /* .audio_inputs= 1, */ 1321 /* .audio_inputs= 1, */
1321 .svhs = NO_SVHS, 1322 .svhs = NO_SVHS,
1322 .gpiomask = 1, 1323 .gpiomask = 1,
1323 .muxsel = { 2, 3, 0, 1 }, 1324 .muxsel = MUXSEL(2, 3, 0, 1),
1324 .gpiomux = { 0, 0, 1, 0 }, 1325 .gpiomux = { 0, 0, 1, 0 },
1325 .no_msp34xx = 1, 1326 .no_msp34xx = 1,
1326 .pll = PLL_28, 1327 .pll = PLL_28,
@@ -1334,7 +1335,7 @@ struct tvcard bttv_tvcards[] = {
1334 /* .audio_inputs= 3, */ 1335 /* .audio_inputs= 3, */
1335 .svhs = 2, 1336 .svhs = 2,
1336 .gpiomask = 0x18e0, 1337 .gpiomask = 0x18e0,
1337 .muxsel = { 2, 3, 0, 1 }, 1338 .muxsel = MUXSEL(2, 3, 0, 1),
1338 /* Radio changed from 1e80 to 0x800 to make 1339 /* Radio changed from 1e80 to 0x800 to make
1339 FlyVideo2000S in .hu happy (gm)*/ 1340 FlyVideo2000S in .hu happy (gm)*/
1340 /* -dk-???: set mute=0x1800 for tda9874h daughterboard */ 1341 /* -dk-???: set mute=0x1800 for tda9874h daughterboard */
@@ -1354,7 +1355,7 @@ struct tvcard bttv_tvcards[] = {
1354 /* .audio_inputs= 1, */ 1355 /* .audio_inputs= 1, */
1355 .svhs = 2, 1356 .svhs = 2,
1356 .gpiomask = 0xffff00, 1357 .gpiomask = 0xffff00,
1357 .muxsel = { 2, 3, 1, 1 }, 1358 .muxsel = MUXSEL(2, 3, 1, 1),
1358 .gpiomux = { 0x500, 0x500, 0x300, 0x900 }, 1359 .gpiomux = { 0x500, 0x500, 0x300, 0x900 },
1359 .gpiomute = 0x900, 1360 .gpiomute = 0x900,
1360 .needs_tvaudio = 1, 1361 .needs_tvaudio = 1,
@@ -1370,7 +1371,7 @@ struct tvcard bttv_tvcards[] = {
1370 /* .audio_inputs= 1, */ 1371 /* .audio_inputs= 1, */
1371 .svhs = 2, 1372 .svhs = 2,
1372 .gpiomask = 0x010f00, 1373 .gpiomask = 0x010f00,
1373 .muxsel = {2, 3, 0, 0 }, 1374 .muxsel = MUXSEL(2, 3, 0, 0),
1374 .gpiomux = {0x10000, 0, 0x10000, 0 }, 1375 .gpiomux = {0x10000, 0, 0x10000, 0 },
1375 .no_msp34xx = 1, 1376 .no_msp34xx = 1,
1376 .pll = PLL_28, 1377 .pll = PLL_28,
@@ -1394,7 +1395,7 @@ struct tvcard bttv_tvcards[] = {
1394 .gpiomute = 0x947fff, 1395 .gpiomute = 0x947fff,
1395 /* tvtuner, radio, external,internal, mute, stereo 1396 /* tvtuner, radio, external,internal, mute, stereo
1396 * tuner, Composit, SVid, Composit-on-Svid-adapter */ 1397 * tuner, Composit, SVid, Composit-on-Svid-adapter */
1397 .muxsel = { 2, 3 ,0 ,1 }, 1398 .muxsel = MUXSEL(2, 3, 0, 1),
1398 .tuner_type = TUNER_MT2032, 1399 .tuner_type = TUNER_MT2032,
1399 .tuner_addr = ADDR_UNSET, 1400 .tuner_addr = ADDR_UNSET,
1400 .pll = PLL_28, 1401 .pll = PLL_28,
@@ -1414,7 +1415,7 @@ struct tvcard bttv_tvcards[] = {
1414 .gpiomute = 0x947fff, 1415 .gpiomute = 0x947fff,
1415 /* tvtuner, radio, external,internal, mute, stereo 1416 /* tvtuner, radio, external,internal, mute, stereo
1416 * tuner, Composit, SVid, Composit-on-Svid-adapter */ 1417 * tuner, Composit, SVid, Composit-on-Svid-adapter */
1417 .muxsel = { 2, 3 ,0 ,1 }, 1418 .muxsel = MUXSEL(2, 3, 0, 1),
1418 .tuner_type = TUNER_MT2032, 1419 .tuner_type = TUNER_MT2032,
1419 .tuner_addr = ADDR_UNSET, 1420 .tuner_addr = ADDR_UNSET,
1420 .pll = PLL_28, 1421 .pll = PLL_28,
@@ -1428,7 +1429,7 @@ struct tvcard bttv_tvcards[] = {
1428 .tuner_type = TUNER_ABSENT, 1429 .tuner_type = TUNER_ABSENT,
1429 .tuner_addr = ADDR_UNSET, 1430 .tuner_addr = ADDR_UNSET,
1430 .pll = PLL_28, 1431 .pll = PLL_28,
1431 .muxsel = { 2 }, 1432 .muxsel = MUXSEL(2),
1432 .gpiomask = 0 1433 .gpiomask = 0
1433 }, 1434 },
1434 [BTTV_BOARD_PV_BT878P_PLUS] = { 1435 [BTTV_BOARD_PV_BT878P_PLUS] = {
@@ -1438,7 +1439,7 @@ struct tvcard bttv_tvcards[] = {
1438 /* .audio_inputs= 4, */ 1439 /* .audio_inputs= 4, */
1439 .svhs = 2, 1440 .svhs = 2,
1440 .gpiomask = 15, 1441 .gpiomask = 15,
1441 .muxsel = { 2, 3, 1, 1 }, 1442 .muxsel = MUXSEL(2, 3, 1, 1),
1442 .gpiomux = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */ 1443 .gpiomux = { 0, 0, 11, 7 }, /* TV and Radio with same GPIO ! */
1443 .gpiomute = 13, 1444 .gpiomute = 13,
1444 .needs_tvaudio = 1, 1445 .needs_tvaudio = 1,
@@ -1459,7 +1460,8 @@ struct tvcard bttv_tvcards[] = {
1459 .video_inputs = 4, 1460 .video_inputs = 4,
1460 /* .audio_inputs= 0, */ 1461 /* .audio_inputs= 0, */
1461 .svhs = 2, 1462 .svhs = 2,
1462 .muxsel = { 2, 3, 1, 1 }, /* AV1, AV2, SVHS, CVid adapter on SVHS */ 1463 /* AV1, AV2, SVHS, CVid adapter on SVHS */
1464 .muxsel = MUXSEL(2, 3, 1, 1),
1463 .pll = PLL_28, 1465 .pll = PLL_28,
1464 .no_msp34xx = 1, 1466 .no_msp34xx = 1,
1465 .tuner_type = TUNER_ABSENT, 1467 .tuner_type = TUNER_ABSENT,
@@ -1474,7 +1476,7 @@ struct tvcard bttv_tvcards[] = {
1474 /* .audio_inputs= 1, */ 1476 /* .audio_inputs= 1, */
1475 .svhs = 2, 1477 .svhs = 2,
1476 .gpiomask = 0x3f, 1478 .gpiomask = 0x3f,
1477 .muxsel = { 2, 3, 1, 1 }, 1479 .muxsel = MUXSEL(2, 3, 1, 1),
1478 .gpiomux = { 0x01, 0x00, 0x03, 0x03 }, 1480 .gpiomux = { 0x01, 0x00, 0x03, 0x03 },
1479 .gpiomute = 0x09, 1481 .gpiomute = 0x09,
1480 .needs_tvaudio = 1, 1482 .needs_tvaudio = 1,
@@ -1502,7 +1504,7 @@ struct tvcard bttv_tvcards[] = {
1502 /* .audio_inputs= 0, */ 1504 /* .audio_inputs= 0, */
1503 .svhs = 4, 1505 .svhs = 4,
1504 .gpiomask = 0, 1506 .gpiomask = 0,
1505 .muxsel = { 2, 3, 1, 0, 0 }, 1507 .muxsel = MUXSEL(2, 3, 1, 0, 0),
1506 .gpiomux = { 0 }, 1508 .gpiomux = { 0 },
1507 .needs_tvaudio = 0, 1509 .needs_tvaudio = 0,
1508 .tuner_type = TUNER_ABSENT, 1510 .tuner_type = TUNER_ABSENT,
@@ -1516,7 +1518,7 @@ struct tvcard bttv_tvcards[] = {
1516 .svhs = NO_SVHS, 1518 .svhs = NO_SVHS,
1517 .gpiomask = 0x00, 1519 .gpiomask = 0x00,
1518 .gpiomask2 = 0x07ff, 1520 .gpiomask2 = 0x07ff,
1519 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 1521 .muxsel = MUXSEL(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
1520 .no_msp34xx = 1, 1522 .no_msp34xx = 1,
1521 .no_tda9875 = 1, 1523 .no_tda9875 = 1,
1522 .tuner_type = TUNER_ABSENT, 1524 .tuner_type = TUNER_ABSENT,
@@ -1529,7 +1531,7 @@ struct tvcard bttv_tvcards[] = {
1529 /* .audio_inputs= 2, */ 1531 /* .audio_inputs= 2, */
1530 .svhs = 2, 1532 .svhs = 2,
1531 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */ 1533 .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
1532 .muxsel = { 2, 1, 1, }, 1534 .muxsel = MUXSEL(2, 1, 1),
1533 .gpiomux = { 0, 1, 2, 2 }, 1535 .gpiomux = { 0, 1, 2, 2 },
1534 .gpiomute = 4, 1536 .gpiomute = 4,
1535 .needs_tvaudio = 0, 1537 .needs_tvaudio = 0,
@@ -1547,7 +1549,7 @@ struct tvcard bttv_tvcards[] = {
1547 /* .audio_inputs= 1, */ 1549 /* .audio_inputs= 1, */
1548 .svhs = 2, 1550 .svhs = 2,
1549 .gpiomask = 0x140007, 1551 .gpiomask = 0x140007,
1550 .muxsel = { 2, 3, 1, 1 }, 1552 .muxsel = MUXSEL(2, 3, 1, 1),
1551 .gpiomux = { 0, 1, 2, 3 }, 1553 .gpiomux = { 0, 1, 2, 3 },
1552 .gpiomute = 4, 1554 .gpiomute = 4,
1553 .tuner_type = TUNER_PHILIPS_NTSC, 1555 .tuner_type = TUNER_PHILIPS_NTSC,
@@ -1560,7 +1562,7 @@ struct tvcard bttv_tvcards[] = {
1560 /* .audio_inputs= 0, */ 1562 /* .audio_inputs= 0, */
1561 .svhs = NO_SVHS, 1563 .svhs = NO_SVHS,
1562 .gpiomask = 0, 1564 .gpiomask = 0,
1563 .muxsel = { 2, 3, 1, 0 }, 1565 .muxsel = MUXSEL(2, 3, 1, 0),
1564 .gpiomux = { 0 }, 1566 .gpiomux = { 0 },
1565 .needs_tvaudio = 0, 1567 .needs_tvaudio = 0,
1566 .no_msp34xx = 1, 1568 .no_msp34xx = 1,
@@ -1574,7 +1576,8 @@ struct tvcard bttv_tvcards[] = {
1574 /* .audio_inputs= 3, */ 1576 /* .audio_inputs= 3, */
1575 .svhs = 2, 1577 .svhs = 2,
1576 .gpiomask = 7, 1578 .gpiomask = 7,
1577 .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */ 1579 /* Tuner, SVid, SVHS, SVid to SVHS connector */
1580 .muxsel = MUXSEL(2, 3, 1, 1),
1578 .gpiomux = { 0, 0, 4, 4 },/* Yes, this tuner uses the same audio output for TV and FM radio! 1581 .gpiomux = { 0, 0, 4, 4 },/* Yes, this tuner uses the same audio output for TV and FM radio!
1579 * This card lacks external Audio In, so we mute it on Ext. & Int. 1582 * This card lacks external Audio In, so we mute it on Ext. & Int.
1580 * The PCB can take a sbx1637/sbx1673, wiring unknown. 1583 * The PCB can take a sbx1637/sbx1673, wiring unknown.
@@ -1606,7 +1609,7 @@ struct tvcard bttv_tvcards[] = {
1606 .name = "DSP Design TCVIDEO", 1609 .name = "DSP Design TCVIDEO",
1607 .video_inputs = 4, 1610 .video_inputs = 4,
1608 .svhs = NO_SVHS, 1611 .svhs = NO_SVHS,
1609 .muxsel = { 2, 3, 1, 0 }, 1612 .muxsel = MUXSEL(2, 3, 1, 0),
1610 .pll = PLL_28, 1613 .pll = PLL_28,
1611 .tuner_type = UNSET, 1614 .tuner_type = UNSET,
1612 .tuner_addr = ADDR_UNSET, 1615 .tuner_addr = ADDR_UNSET,
@@ -1618,7 +1621,7 @@ struct tvcard bttv_tvcards[] = {
1618 .video_inputs = 4, 1621 .video_inputs = 4,
1619 /* .audio_inputs= 1, */ 1622 /* .audio_inputs= 1, */
1620 .svhs = 2, 1623 .svhs = 2,
1621 .muxsel = { 2, 0, 1, 1 }, 1624 .muxsel = MUXSEL(2, 0, 1, 1),
1622 .needs_tvaudio = 1, 1625 .needs_tvaudio = 1,
1623 .pll = PLL_28, 1626 .pll = PLL_28,
1624 .tuner_type = UNSET, 1627 .tuner_type = UNSET,
@@ -1633,7 +1636,7 @@ struct tvcard bttv_tvcards[] = {
1633 /* .audio_inputs= 1, */ 1636 /* .audio_inputs= 1, */
1634 .svhs = 2, 1637 .svhs = 2,
1635 .gpiomask = 0x0f0f80, 1638 .gpiomask = 0x0f0f80,
1636 .muxsel = {2, 3, 1, 0 }, 1639 .muxsel = MUXSEL(2, 3, 1, 0),
1637 .gpiomux = {0x030000, 0x010000, 0, 0 }, 1640 .gpiomux = {0x030000, 0x010000, 0, 0 },
1638 .gpiomute = 0x020000, 1641 .gpiomute = 0x020000,
1639 .no_msp34xx = 1, 1642 .no_msp34xx = 1,
@@ -1648,7 +1651,7 @@ struct tvcard bttv_tvcards[] = {
1648 .video_inputs = 4, /* id-inputs-clock */ 1651 .video_inputs = 4, /* id-inputs-clock */
1649 /* .audio_inputs= 0, */ 1652 /* .audio_inputs= 0, */
1650 .svhs = 3, 1653 .svhs = 3,
1651 .muxsel = { 3, 2, 0, 1 }, 1654 .muxsel = MUXSEL(3, 2, 0, 1),
1652 .pll = PLL_28, 1655 .pll = PLL_28,
1653 .tuner_type = TUNER_ABSENT, 1656 .tuner_type = TUNER_ABSENT,
1654 .tuner_addr = ADDR_UNSET, 1657 .tuner_addr = ADDR_UNSET,
@@ -1661,7 +1664,7 @@ struct tvcard bttv_tvcards[] = {
1661 .video_inputs = 3, 1664 .video_inputs = 3,
1662 /* .audio_inputs= 0, */ 1665 /* .audio_inputs= 0, */
1663 .svhs = 2, 1666 .svhs = 2,
1664 .muxsel = { 2, 3, 1 }, 1667 .muxsel = MUXSEL(2, 3, 1),
1665 .pll = PLL_28, 1668 .pll = PLL_28,
1666 .tuner_type = TUNER_ABSENT, 1669 .tuner_type = TUNER_ABSENT,
1667 .tuner_addr = ADDR_UNSET, 1670 .tuner_addr = ADDR_UNSET,
@@ -1676,7 +1679,7 @@ struct tvcard bttv_tvcards[] = {
1676 .video_inputs = 2, 1679 .video_inputs = 2,
1677 /* .audio_inputs= 0, */ 1680 /* .audio_inputs= 0, */
1678 .svhs = 1, 1681 .svhs = 1,
1679 .muxsel = { 3, 1 }, 1682 .muxsel = MUXSEL(3, 1),
1680 .pll = PLL_28, 1683 .pll = PLL_28,
1681 .tuner_type = TUNER_ABSENT, 1684 .tuner_type = TUNER_ABSENT,
1682 .tuner_addr = ADDR_UNSET, 1685 .tuner_addr = ADDR_UNSET,
@@ -1689,7 +1692,7 @@ struct tvcard bttv_tvcards[] = {
1689 .video_inputs = 1, 1692 .video_inputs = 1,
1690 /* .audio_inputs= 0, */ 1693 /* .audio_inputs= 0, */
1691 .svhs = NO_SVHS, 1694 .svhs = NO_SVHS,
1692 .muxsel = { 0 }, 1695 .muxsel = MUXSEL(0),
1693 .pll = PLL_28, 1696 .pll = PLL_28,
1694 .tuner_type = TUNER_ABSENT, 1697 .tuner_type = TUNER_ABSENT,
1695 .tuner_addr = ADDR_UNSET, 1698 .tuner_addr = ADDR_UNSET,
@@ -1702,7 +1705,7 @@ struct tvcard bttv_tvcards[] = {
1702 .video_inputs = 2, 1705 .video_inputs = 2,
1703 /* .audio_inputs= 0, */ 1706 /* .audio_inputs= 0, */
1704 .svhs = 1, 1707 .svhs = 1,
1705 .muxsel = { 0, 1 }, 1708 .muxsel = MUXSEL(0, 1),
1706 .pll = PLL_28, 1709 .pll = PLL_28,
1707 .tuner_type = TUNER_ABSENT, 1710 .tuner_type = TUNER_ABSENT,
1708 .tuner_addr = ADDR_UNSET, 1711 .tuner_addr = ADDR_UNSET,
@@ -1715,7 +1718,7 @@ struct tvcard bttv_tvcards[] = {
1715 .video_inputs = 1, 1718 .video_inputs = 1,
1716 /* .audio_inputs= 1, */ 1719 /* .audio_inputs= 1, */
1717 .svhs = NO_SVHS, 1720 .svhs = NO_SVHS,
1718 .muxsel = { 0 }, 1721 .muxsel = MUXSEL(0),
1719 .pll = PLL_28, 1722 .pll = PLL_28,
1720 .tuner_type = TUNER_ABSENT, 1723 .tuner_type = TUNER_ABSENT,
1721 .tuner_addr = ADDR_UNSET, 1724 .tuner_addr = ADDR_UNSET,
@@ -1730,7 +1733,7 @@ struct tvcard bttv_tvcards[] = {
1730 .video_inputs = 2, 1733 .video_inputs = 2,
1731 /* .audio_inputs= 1, */ 1734 /* .audio_inputs= 1, */
1732 .svhs = 1, 1735 .svhs = 1,
1733 .muxsel = { 0, 1 }, 1736 .muxsel = MUXSEL(0, 1),
1734 .pll = PLL_28, 1737 .pll = PLL_28,
1735 .tuner_type = TUNER_ABSENT, 1738 .tuner_type = TUNER_ABSENT,
1736 .tuner_addr = ADDR_UNSET, 1739 .tuner_addr = ADDR_UNSET,
@@ -1743,7 +1746,7 @@ struct tvcard bttv_tvcards[] = {
1743 .video_inputs = 2, 1746 .video_inputs = 2,
1744 /* .audio_inputs= 1, */ 1747 /* .audio_inputs= 1, */
1745 .svhs = 1, 1748 .svhs = 1,
1746 .muxsel = { 2, 3 }, 1749 .muxsel = MUXSEL(2, 3),
1747 .pll = PLL_28, 1750 .pll = PLL_28,
1748 .tuner_type = TUNER_ABSENT, 1751 .tuner_type = TUNER_ABSENT,
1749 .tuner_addr = ADDR_UNSET, 1752 .tuner_addr = ADDR_UNSET,
@@ -1756,7 +1759,7 @@ struct tvcard bttv_tvcards[] = {
1756 .video_inputs = 2, 1759 .video_inputs = 2,
1757 /* .audio_inputs= 1, */ 1760 /* .audio_inputs= 1, */
1758 .svhs = 1, 1761 .svhs = 1,
1759 .muxsel = { 2, 3 }, 1762 .muxsel = MUXSEL(2, 3),
1760 .pll = PLL_28, 1763 .pll = PLL_28,
1761 .tuner_type = TUNER_ABSENT, 1764 .tuner_type = TUNER_ABSENT,
1762 .tuner_addr = ADDR_UNSET, 1765 .tuner_addr = ADDR_UNSET,
@@ -1782,7 +1785,7 @@ struct tvcard bttv_tvcards[] = {
1782 .video_inputs = 2, 1785 .video_inputs = 2,
1783 /* .audio_inputs= 1, */ 1786 /* .audio_inputs= 1, */
1784 .svhs = 1, 1787 .svhs = 1,
1785 .muxsel = { 2, 3 }, 1788 .muxsel = MUXSEL(2, 3),
1786 .pll = PLL_28, 1789 .pll = PLL_28,
1787 .tuner_type = TUNER_ABSENT, 1790 .tuner_type = TUNER_ABSENT,
1788 .tuner_addr = ADDR_UNSET, 1791 .tuner_addr = ADDR_UNSET,
@@ -1799,7 +1802,7 @@ struct tvcard bttv_tvcards[] = {
1799 .tuner_addr = ADDR_UNSET, 1802 .tuner_addr = ADDR_UNSET,
1800 .svhs = NO_SVHS, 1803 .svhs = NO_SVHS,
1801 .gpiomask = 0, 1804 .gpiomask = 0,
1802 .muxsel = { 2, 2, 2, 2 }, 1805 .muxsel = MUXSEL(2, 2, 2, 2),
1803 .muxsel_hook = eagle_muxsel, 1806 .muxsel_hook = eagle_muxsel,
1804 .no_msp34xx = 1, 1807 .no_msp34xx = 1,
1805 .no_tda9875 = 1, 1808 .no_tda9875 = 1,
@@ -1815,7 +1818,7 @@ struct tvcard bttv_tvcards[] = {
1815 .no_msp34xx = 1, 1818 .no_msp34xx = 1,
1816 .no_tda9875 = 1, 1819 .no_tda9875 = 1,
1817 .no_tda7432 = 1, 1820 .no_tda7432 = 1,
1818 .muxsel = { 3, 1 }, 1821 .muxsel = MUXSEL(3, 1),
1819 .pll = PLL_28, 1822 .pll = PLL_28,
1820 .no_gpioirq = 1, 1823 .no_gpioirq = 1,
1821 .has_dvb = 1, 1824 .has_dvb = 1,
@@ -1827,7 +1830,7 @@ struct tvcard bttv_tvcards[] = {
1827 .svhs = 3, 1830 .svhs = 3,
1828 .gpiomask = 2, 1831 .gpiomask = 2,
1829 /* TV, Comp1, Composite over SVID con, SVID */ 1832 /* TV, Comp1, Composite over SVID con, SVID */
1830 .muxsel = { 2, 3, 1, 1 }, 1833 .muxsel = MUXSEL(2, 3, 1, 1),
1831 .gpiomux = { 2, 2, 0, 0 }, 1834 .gpiomux = { 2, 2, 0, 0 },
1832 .pll = PLL_28, 1835 .pll = PLL_28,
1833 .has_radio = 1, 1836 .has_radio = 1,
@@ -1849,7 +1852,7 @@ struct tvcard bttv_tvcards[] = {
1849 /* .audio_inputs= 1, */ 1852 /* .audio_inputs= 1, */
1850 .svhs = NO_SVHS, 1853 .svhs = NO_SVHS,
1851 .gpiomask = 7, 1854 .gpiomask = 7,
1852 .muxsel = { 2, 3, 1, 1}, 1855 .muxsel = MUXSEL(2, 3, 1, 1),
1853 .gpiomux = { 0, 1, 2, 3}, 1856 .gpiomux = { 0, 1, 2, 3},
1854 .gpiomute = 4, 1857 .gpiomute = 4,
1855 .needs_tvaudio = 1, 1858 .needs_tvaudio = 1,
@@ -1866,7 +1869,7 @@ struct tvcard bttv_tvcards[] = {
1866 .no_msp34xx = 1, 1869 .no_msp34xx = 1,
1867 .no_tda9875 = 1, 1870 .no_tda9875 = 1,
1868 .no_tda7432 = 1, 1871 .no_tda7432 = 1,
1869 .muxsel = { 2, 0, 1}, 1872 .muxsel = MUXSEL(2, 0, 1),
1870 .pll = PLL_28, 1873 .pll = PLL_28,
1871 .tuner_type = TUNER_ABSENT, 1874 .tuner_type = TUNER_ABSENT,
1872 .tuner_addr = ADDR_UNSET, 1875 .tuner_addr = ADDR_UNSET,
@@ -1878,7 +1881,7 @@ struct tvcard bttv_tvcards[] = {
1878 /* .audio_inputs= 0, */ 1881 /* .audio_inputs= 0, */
1879 .svhs = NO_SVHS, 1882 .svhs = NO_SVHS,
1880 .gpiomask = 0, 1883 .gpiomask = 0,
1881 .muxsel = { 2, 3 }, 1884 .muxsel = MUXSEL(2, 3),
1882 .gpiomux = { 0 }, 1885 .gpiomux = { 0 },
1883 .needs_tvaudio = 0, 1886 .needs_tvaudio = 0,
1884 .no_msp34xx = 1, 1887 .no_msp34xx = 1,
@@ -1894,7 +1897,7 @@ struct tvcard bttv_tvcards[] = {
1894 /* .audio_inputs= 1, */ 1897 /* .audio_inputs= 1, */
1895 .svhs = 2, 1898 .svhs = 2,
1896 .gpiomask = 0x001e8007, 1899 .gpiomask = 0x001e8007,
1897 .muxsel = { 2, 3, 1, 0 }, 1900 .muxsel = MUXSEL(2, 3, 1, 0),
1898 /* Tuner, Radio, external, internal, off, on */ 1901 /* Tuner, Radio, external, internal, off, on */
1899 .gpiomux = { 0x08, 0x0f, 0x0a, 0x08 }, 1902 .gpiomux = { 0x08, 0x0f, 0x0a, 0x08 },
1900 .gpiomute = 0x0f, 1903 .gpiomute = 0x0f,
@@ -1913,7 +1916,7 @@ struct tvcard bttv_tvcards[] = {
1913 /* .audio_inputs= 1, */ 1916 /* .audio_inputs= 1, */
1914 .svhs = 2, 1917 .svhs = 2,
1915 .gpiomask = 0x00, 1918 .gpiomask = 0x00,
1916 .muxsel = { 2, 3, 1, 1 }, 1919 .muxsel = MUXSEL(2, 3, 1, 1),
1917 .needs_tvaudio = 1, 1920 .needs_tvaudio = 1,
1918 .no_msp34xx = 1, 1921 .no_msp34xx = 1,
1919 .pll = PLL_28, 1922 .pll = PLL_28,
@@ -1934,7 +1937,8 @@ struct tvcard bttv_tvcards[] = {
1934 .video_inputs = 4, 1937 .video_inputs = 4,
1935 /* .audio_inputs= 1, */ 1938 /* .audio_inputs= 1, */
1936 .svhs = 2, 1939 .svhs = 2,
1937 .muxsel = { 2, 3, 1, 1 }, /* Tuner, CVid, SVid, CVid over SVid connector */ 1940 /* Tuner, CVid, SVid, CVid over SVid connector */
1941 .muxsel = MUXSEL(2, 3, 1, 1),
1938 .gpiomask = 0, 1942 .gpiomask = 0,
1939 .no_tda9875 = 1, 1943 .no_tda9875 = 1,
1940 .no_tda7432 = 1, 1944 .no_tda7432 = 1,
@@ -1958,7 +1962,7 @@ struct tvcard bttv_tvcards[] = {
1958 .tuner_addr = ADDR_UNSET, 1962 .tuner_addr = ADDR_UNSET,
1959 .svhs = NO_SVHS, 1963 .svhs = NO_SVHS,
1960 .gpiomask = 0xdf, 1964 .gpiomask = 0xdf,
1961 .muxsel = { 2 }, 1965 .muxsel = MUXSEL(2),
1962 .pll = PLL_28, 1966 .pll = PLL_28,
1963 }, 1967 },
1964 [BTTV_BOARD_IVCE8784] = { 1968 [BTTV_BOARD_IVCE8784] = {
@@ -1969,7 +1973,7 @@ struct tvcard bttv_tvcards[] = {
1969 .tuner_addr = ADDR_UNSET, 1973 .tuner_addr = ADDR_UNSET,
1970 .svhs = NO_SVHS, 1974 .svhs = NO_SVHS,
1971 .gpiomask = 0xdf, 1975 .gpiomask = 0xdf,
1972 .muxsel = { 2 }, 1976 .muxsel = MUXSEL(2),
1973 .pll = PLL_28, 1977 .pll = PLL_28,
1974 }, 1978 },
1975 [BTTV_BOARD_XGUARD] = { 1979 [BTTV_BOARD_XGUARD] = {
@@ -1980,7 +1984,7 @@ struct tvcard bttv_tvcards[] = {
1980 .tuner_type = TUNER_ABSENT, 1984 .tuner_type = TUNER_ABSENT,
1981 .tuner_addr = ADDR_UNSET, 1985 .tuner_addr = ADDR_UNSET,
1982 .gpiomask2 = 0xff, 1986 .gpiomask2 = 0xff,
1983 .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, 1987 .muxsel = MUXSEL(2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0),
1984 .muxsel_hook = xguard_muxsel, 1988 .muxsel_hook = xguard_muxsel,
1985 .no_msp34xx = 1, 1989 .no_msp34xx = 1,
1986 .no_tda9875 = 1, 1990 .no_tda9875 = 1,
@@ -1993,7 +1997,7 @@ struct tvcard bttv_tvcards[] = {
1993 .name = "Nebula Electronics DigiTV", 1997 .name = "Nebula Electronics DigiTV",
1994 .video_inputs = 1, 1998 .video_inputs = 1,
1995 .svhs = NO_SVHS, 1999 .svhs = NO_SVHS,
1996 .muxsel = { 2, 3, 1, 0 }, 2000 .muxsel = MUXSEL(2, 3, 1, 0),
1997 .no_msp34xx = 1, 2001 .no_msp34xx = 1,
1998 .no_tda9875 = 1, 2002 .no_tda9875 = 1,
1999 .no_tda7432 = 1, 2003 .no_tda7432 = 1,
@@ -2012,7 +2016,7 @@ struct tvcard bttv_tvcards[] = {
2012 /* .audio_inputs= 0, */ 2016 /* .audio_inputs= 0, */
2013 .svhs = NO_SVHS, 2017 .svhs = NO_SVHS,
2014 .gpiomask = 0, 2018 .gpiomask = 0,
2015 .muxsel = { 2, 3, 1, 0 }, 2019 .muxsel = MUXSEL(2, 3, 1, 0),
2016 .gpiomux = { 0 }, 2020 .gpiomux = { 0 },
2017 .needs_tvaudio = 0, 2021 .needs_tvaudio = 0,
2018 .no_msp34xx = 1, 2022 .no_msp34xx = 1,
@@ -2027,7 +2031,7 @@ struct tvcard bttv_tvcards[] = {
2027 /* .audio_inputs= 0, */ 2031 /* .audio_inputs= 0, */
2028 .svhs = 3, 2032 .svhs = 3,
2029 .gpiomask = 0x00, 2033 .gpiomask = 0x00,
2030 .muxsel = { 2, 3, 1, 0 }, 2034 .muxsel = MUXSEL(2, 3, 1, 0),
2031 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2035 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2032 .needs_tvaudio = 0, 2036 .needs_tvaudio = 0,
2033 .pll = PLL_28, 2037 .pll = PLL_28,
@@ -2040,7 +2044,7 @@ struct tvcard bttv_tvcards[] = {
2040 /* .audio_inputs= 0, */ 2044 /* .audio_inputs= 0, */
2041 .svhs = 3, 2045 .svhs = 3,
2042 .gpiomask = 0x00, 2046 .gpiomask = 0x00,
2043 .muxsel = { 2, 3, 1, 1 }, 2047 .muxsel = MUXSEL(2, 3, 1, 1),
2044 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2048 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2045 .needs_tvaudio = 0, 2049 .needs_tvaudio = 0,
2046 .pll = PLL_28, 2050 .pll = PLL_28,
@@ -2056,7 +2060,7 @@ struct tvcard bttv_tvcards[] = {
2056 .svhs = 9, 2060 .svhs = 9,
2057 .gpiomask = 0x00, 2061 .gpiomask = 0x00,
2058 .gpiomask2 = 0x03, /* used for external vodeo mux */ 2062 .gpiomask2 = 0x03, /* used for external vodeo mux */
2059 .muxsel = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 0 }, 2063 .muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 0),
2060 .muxsel_hook = phytec_muxsel, 2064 .muxsel_hook = phytec_muxsel,
2061 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2065 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2062 .needs_tvaudio = 1, 2066 .needs_tvaudio = 1,
@@ -2071,7 +2075,7 @@ struct tvcard bttv_tvcards[] = {
2071 .svhs = 9, 2075 .svhs = 9,
2072 .gpiomask = 0x00, 2076 .gpiomask = 0x00,
2073 .gpiomask2 = 0x03, /* used for external vodeo mux */ 2077 .gpiomask2 = 0x03, /* used for external vodeo mux */
2074 .muxsel = { 2, 2, 2, 2, 3, 3, 3, 3, 1, 1 }, 2078 .muxsel = MUXSEL(2, 2, 2, 2, 3, 3, 3, 3, 1, 1),
2075 .muxsel_hook = phytec_muxsel, 2079 .muxsel_hook = phytec_muxsel,
2076 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2080 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2077 .needs_tvaudio = 1, 2081 .needs_tvaudio = 1,
@@ -2087,7 +2091,7 @@ struct tvcard bttv_tvcards[] = {
2087 .tuner_addr = ADDR_UNSET, 2091 .tuner_addr = ADDR_UNSET,
2088 .svhs = NO_SVHS, 2092 .svhs = NO_SVHS,
2089 .gpiomask = 0xdf, 2093 .gpiomask = 0xdf,
2090 .muxsel = { 2, 3, 1, 0 }, 2094 .muxsel = MUXSEL(2, 3, 1, 0),
2091 .pll = PLL_28, 2095 .pll = PLL_28,
2092 }, 2096 },
2093 [BTTV_BOARD_IVC120] = { 2097 [BTTV_BOARD_IVC120] = {
@@ -2103,7 +2107,7 @@ struct tvcard bttv_tvcards[] = {
2103 .no_tda9875 = 1, 2107 .no_tda9875 = 1,
2104 .no_tda7432 = 1, 2108 .no_tda7432 = 1,
2105 .gpiomask = 0x00, 2109 .gpiomask = 0x00,
2106 .muxsel = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 2110 .muxsel = MUXSEL(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
2107 .muxsel_hook = ivc120_muxsel, 2111 .muxsel_hook = ivc120_muxsel,
2108 .pll = PLL_28, 2112 .pll = PLL_28,
2109 }, 2113 },
@@ -2114,7 +2118,7 @@ struct tvcard bttv_tvcards[] = {
2114 .video_inputs = 4, 2118 .video_inputs = 4,
2115 /* .audio_inputs= 1, */ 2119 /* .audio_inputs= 1, */
2116 .svhs = 2, 2120 .svhs = 2,
2117 .muxsel = { 2, 3, 1, 0 }, 2121 .muxsel = MUXSEL(2, 3, 1, 0),
2118 .tuner_type = TUNER_PHILIPS_FCV1236D, 2122 .tuner_type = TUNER_PHILIPS_FCV1236D,
2119 .tuner_addr = ADDR_UNSET, 2123 .tuner_addr = ADDR_UNSET,
2120 .has_dvb = 1, 2124 .has_dvb = 1,
@@ -2134,7 +2138,8 @@ struct tvcard bttv_tvcards[] = {
2134 .video_inputs = 3, 2138 .video_inputs = 3,
2135 /* .audio_inputs= 0, */ 2139 /* .audio_inputs= 0, */
2136 .svhs = 1, 2140 .svhs = 1,
2137 .muxsel = { 3, 1, 1, 3 }, /* Vid In, SVid In, Vid over SVid in connector */ 2141 /* Vid In, SVid In, Vid over SVid in connector */
2142 .muxsel = MUXSEL(3, 1, 1, 3),
2138 .no_msp34xx = 1, 2143 .no_msp34xx = 1,
2139 .no_tda9875 = 1, 2144 .no_tda9875 = 1,
2140 .no_tda7432 = 1, 2145 .no_tda7432 = 1,
@@ -2148,7 +2153,7 @@ struct tvcard bttv_tvcards[] = {
2148 /* .audio_inputs= 1, */ 2153 /* .audio_inputs= 1, */
2149 .svhs = 2, 2154 .svhs = 2,
2150 .gpiomask = 3, 2155 .gpiomask = 3,
2151 .muxsel = { 2, 3, 1, 1 }, 2156 .muxsel = MUXSEL(2, 3, 1, 1),
2152 .gpiomux = { 1, 1, 1, 1 }, 2157 .gpiomux = { 1, 1, 1, 1 },
2153 .needs_tvaudio = 1, 2158 .needs_tvaudio = 1,
2154 .tuner_type = TUNER_PHILIPS_PAL, 2159 .tuner_type = TUNER_PHILIPS_PAL,
@@ -2165,7 +2170,7 @@ struct tvcard bttv_tvcards[] = {
2165 .tuner_type = TUNER_ABSENT, 2170 .tuner_type = TUNER_ABSENT,
2166 .tuner_addr = ADDR_UNSET, 2171 .tuner_addr = ADDR_UNSET,
2167 .pll = PLL_28, 2172 .pll = PLL_28,
2168 .muxsel = { 2, 2, 2, 2 }, 2173 .muxsel = MUXSEL(2, 2, 2, 2),
2169 .gpiomask = 0x3F, 2174 .gpiomask = 0x3F,
2170 .muxsel_hook = gvc1100_muxsel, 2175 .muxsel_hook = gvc1100_muxsel,
2171 }, 2176 },
@@ -2175,7 +2180,7 @@ struct tvcard bttv_tvcards[] = {
2175 .video_inputs = 3, 2180 .video_inputs = 3,
2176 .svhs = 2, 2181 .svhs = 2,
2177 .gpiomask = 0x008007, 2182 .gpiomask = 0x008007,
2178 .muxsel = { 2, 3, 0, 0 }, 2183 .muxsel = MUXSEL(2, 3, 0, 0),
2179 .gpiomux = { 0, 0, 0, 0 }, 2184 .gpiomux = { 0, 0, 0, 0 },
2180 .gpiomute = 0x000003, 2185 .gpiomute = 0x000003,
2181 .pll = PLL_28, 2186 .pll = PLL_28,
@@ -2189,7 +2194,7 @@ struct tvcard bttv_tvcards[] = {
2189 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ 2194 .video_inputs = 4, /* IN1,IN2,IN3,IN4 */
2190 /* .audio_inputs= 0, */ 2195 /* .audio_inputs= 0, */
2191 .svhs = NO_SVHS, 2196 .svhs = NO_SVHS,
2192 .muxsel = { 2, 3, 1, 0 }, 2197 .muxsel = MUXSEL(2, 3, 1, 0),
2193 .no_msp34xx = 1, 2198 .no_msp34xx = 1,
2194 .no_tda9875 = 1, 2199 .no_tda9875 = 1,
2195 .no_tda7432 = 1, 2200 .no_tda7432 = 1,
@@ -2207,7 +2212,7 @@ struct tvcard bttv_tvcards[] = {
2207 .svhs = 2, 2212 .svhs = 2,
2208 .needs_tvaudio = 0, 2213 .needs_tvaudio = 0,
2209 .gpiomask = 0x68, 2214 .gpiomask = 0x68,
2210 .muxsel = { 2, 3, 1 }, 2215 .muxsel = MUXSEL(2, 3, 1),
2211 .gpiomux = { 0x68, 0x68, 0x61, 0x61 }, 2216 .gpiomux = { 0x68, 0x68, 0x61, 0x61 },
2212 .pll = PLL_28, 2217 .pll = PLL_28,
2213 }, 2218 },
@@ -2221,7 +2226,7 @@ struct tvcard bttv_tvcards[] = {
2221 /* .audio_inputs= 1, */ 2226 /* .audio_inputs= 1, */
2222 .svhs = 2, 2227 .svhs = 2,
2223 .gpiomask = 0x008007, 2228 .gpiomask = 0x008007,
2224 .muxsel = { 2, 3, 1, 1 }, 2229 .muxsel = MUXSEL(2, 3, 1, 1),
2225 .gpiomux = { 0, 1, 2, 2 }, 2230 .gpiomux = { 0, 1, 2, 2 },
2226 .gpiomute = 3, 2231 .gpiomute = 3,
2227 .needs_tvaudio = 0, 2232 .needs_tvaudio = 0,
@@ -2245,7 +2250,8 @@ struct tvcard bttv_tvcards[] = {
2245 .no_msp34xx = 1, 2250 .no_msp34xx = 1,
2246 .no_tda9875 = 1, 2251 .no_tda9875 = 1,
2247 .no_tda7432 = 1, 2252 .no_tda7432 = 1,
2248 .muxsel = {2,2,2,2},/*878A input is always MUX0, see above.*/ 2253 /*878A input is always MUX0, see above.*/
2254 .muxsel = MUXSEL(2, 2, 2, 2),
2249 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2255 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2250 .pll = PLL_28, 2256 .pll = PLL_28,
2251 .needs_tvaudio = 0, 2257 .needs_tvaudio = 0,
@@ -2261,7 +2267,7 @@ struct tvcard bttv_tvcards[] = {
2261 /* .audio_inputs= 1, */ 2267 /* .audio_inputs= 1, */
2262 .svhs = 2, 2268 .svhs = 2,
2263 .gpiomask = 0x0000000f, 2269 .gpiomask = 0x0000000f,
2264 .muxsel = { 2, 1, 1 }, 2270 .muxsel = MUXSEL(2, 1, 1),
2265 .gpiomux = { 0x02, 0x00, 0x00, 0x00 }, 2271 .gpiomux = { 0x02, 0x00, 0x00, 0x00 },
2266 .tuner_type = TUNER_TEMIC_PAL, 2272 .tuner_type = TUNER_TEMIC_PAL,
2267 .tuner_addr = ADDR_UNSET, 2273 .tuner_addr = ADDR_UNSET,
@@ -2275,7 +2281,7 @@ struct tvcard bttv_tvcards[] = {
2275 .svhs = 1, 2281 .svhs = 1,
2276 .tuner_type = TUNER_ABSENT, 2282 .tuner_type = TUNER_ABSENT,
2277 .tuner_addr = ADDR_UNSET, 2283 .tuner_addr = ADDR_UNSET,
2278 .muxsel = { 3 , 3 }, 2284 .muxsel = MUXSEL(3, 3),
2279 .no_msp34xx = 1, 2285 .no_msp34xx = 1,
2280 .no_tda9875 = 1, 2286 .no_tda9875 = 1,
2281 .no_tda7432 = 1, 2287 .no_tda7432 = 1,
@@ -2291,7 +2297,7 @@ struct tvcard bttv_tvcards[] = {
2291 .name = "AverMedia AverTV DVB-T 761", 2297 .name = "AverMedia AverTV DVB-T 761",
2292 .video_inputs = 2, 2298 .video_inputs = 2,
2293 .svhs = 1, 2299 .svhs = 1,
2294 .muxsel = { 3, 1, 2, 0 }, /* Comp0, S-Video, ?, ? */ 2300 .muxsel = MUXSEL(3, 1, 2, 0), /* Comp0, S-Video, ?, ? */
2295 .no_msp34xx = 1, 2301 .no_msp34xx = 1,
2296 .no_tda9875 = 1, 2302 .no_tda9875 = 1,
2297 .no_tda7432 = 1, 2303 .no_tda7432 = 1,
@@ -2309,8 +2315,7 @@ struct tvcard bttv_tvcards[] = {
2309 /* .audio_inputs= 0, */ 2315 /* .audio_inputs= 0, */
2310 .svhs = NO_SVHS, 2316 .svhs = NO_SVHS,
2311 .gpiomask = 0x0, 2317 .gpiomask = 0x0,
2312 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2318 .muxsel = MUXSEL(2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3),
2313 3, 3, 3, 3, 3, 3, 3, 3 },
2314 .muxsel_hook = sigmaSQ_muxsel, 2319 .muxsel_hook = sigmaSQ_muxsel,
2315 .gpiomux = { 0 }, 2320 .gpiomux = { 0 },
2316 .no_msp34xx = 1, 2321 .no_msp34xx = 1,
@@ -2325,7 +2330,7 @@ struct tvcard bttv_tvcards[] = {
2325 /* .audio_inputs= 0, */ 2330 /* .audio_inputs= 0, */
2326 .svhs = NO_SVHS, 2331 .svhs = NO_SVHS,
2327 .gpiomask = 0x0, 2332 .gpiomask = 0x0,
2328 .muxsel = { 2, 2, 2, 2 }, 2333 .muxsel = MUXSEL(2, 2, 2, 2),
2329 .muxsel_hook = sigmaSLC_muxsel, 2334 .muxsel_hook = sigmaSLC_muxsel,
2330 .gpiomux = { 0 }, 2335 .gpiomux = { 0 },
2331 .no_msp34xx = 1, 2336 .no_msp34xx = 1,
@@ -2342,7 +2347,7 @@ struct tvcard bttv_tvcards[] = {
2342 /* .audio_inputs= 1, */ 2347 /* .audio_inputs= 1, */
2343 .svhs = NO_SVHS, 2348 .svhs = NO_SVHS,
2344 .gpiomask = 0xFF, 2349 .gpiomask = 0xFF,
2345 .muxsel = { 2, 3, 1, 1 }, 2350 .muxsel = MUXSEL(2, 3, 1, 1),
2346 .gpiomux = { 2, 0, 0, 0 }, 2351 .gpiomux = { 2, 0, 0, 0 },
2347 .gpiomute = 10, 2352 .gpiomute = 10,
2348 .needs_tvaudio = 0, 2353 .needs_tvaudio = 0,
@@ -2373,7 +2378,7 @@ struct tvcard bttv_tvcards[] = {
2373 /* .audio_inputs= 1, */ 2378 /* .audio_inputs= 1, */
2374 .svhs = 2, 2379 .svhs = 2,
2375 .gpiomask = 0x3f, 2380 .gpiomask = 0x3f,
2376 .muxsel = {2, 3, 1, 0 }, 2381 .muxsel = MUXSEL(2, 3, 1, 0),
2377 .gpiomux = {0x31, 0x31, 0x31, 0x31 }, 2382 .gpiomux = {0x31, 0x31, 0x31, 0x31 },
2378 .gpiomute = 0x31, 2383 .gpiomute = 0x31,
2379 .no_msp34xx = 1, 2384 .no_msp34xx = 1,
@@ -2388,7 +2393,7 @@ struct tvcard bttv_tvcards[] = {
2388 .video_inputs = 4, 2393 .video_inputs = 4,
2389 /* .audio_inputs= 1, */ 2394 /* .audio_inputs= 1, */
2390 .svhs = 2, 2395 .svhs = 2,
2391 .muxsel = { 2, 3, 1, 0 }, 2396 .muxsel = MUXSEL(2, 3, 1, 0),
2392 .tuner_type = TUNER_PHILIPS_NTSC, 2397 .tuner_type = TUNER_PHILIPS_NTSC,
2393 .tuner_addr = ADDR_UNSET, 2398 .tuner_addr = ADDR_UNSET,
2394 .gpiomask = 0x008007, 2399 .gpiomask = 0x008007,
@@ -2402,7 +2407,7 @@ struct tvcard bttv_tvcards[] = {
2402 .video_inputs = 16, 2407 .video_inputs = 16,
2403 /* .audio_inputs= 0, */ 2408 /* .audio_inputs= 0, */
2404 .svhs = NO_SVHS, 2409 .svhs = NO_SVHS,
2405 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, 2410 .muxsel = MUXSEL(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
2406 .pll = PLL_28, 2411 .pll = PLL_28,
2407 .no_msp34xx = 1, 2412 .no_msp34xx = 1,
2408 .no_tda9875 = 1, 2413 .no_tda9875 = 1,
@@ -2439,7 +2444,7 @@ struct tvcard bttv_tvcards[] = {
2439 */ 2444 */
2440 .gpiomask = 0x0003ff, 2445 .gpiomask = 0x0003ff,
2441 .no_gpioirq = 1, 2446 .no_gpioirq = 1,
2442 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 2447 .muxsel = MUXSEL(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
2443 .pll = PLL_28, 2448 .pll = PLL_28,
2444 .no_msp34xx = 1, 2449 .no_msp34xx = 1,
2445 .no_tda7432 = 1, 2450 .no_tda7432 = 1,
@@ -2461,7 +2466,7 @@ struct tvcard bttv_tvcards[] = {
2461 .svhs = NO_SVHS, 2466 .svhs = NO_SVHS,
2462 .gpiomask = 0x010000, 2467 .gpiomask = 0x010000,
2463 .no_gpioirq = 1, 2468 .no_gpioirq = 1,
2464 .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, 2469 .muxsel = MUXSEL(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3),
2465 .pll = PLL_28, 2470 .pll = PLL_28,
2466 .no_msp34xx = 1, 2471 .no_msp34xx = 1,
2467 .no_tda7432 = 1, 2472 .no_tda7432 = 1,
@@ -2476,7 +2481,7 @@ struct tvcard bttv_tvcards[] = {
2476 .video_inputs = 4, 2481 .video_inputs = 4,
2477 /* .audio_inputs= 1, */ 2482 /* .audio_inputs= 1, */
2478 .svhs = 2, 2483 .svhs = 2,
2479 .muxsel = { 2, 3, 1, 0 }, 2484 .muxsel = MUXSEL(2, 3, 1, 0),
2480 .tuner_type = UNSET, 2485 .tuner_type = UNSET,
2481 .tuner_addr = ADDR_UNSET, 2486 .tuner_addr = ADDR_UNSET,
2482 .pll = PLL_28, 2487 .pll = PLL_28,
@@ -2490,7 +2495,7 @@ struct tvcard bttv_tvcards[] = {
2490 .video_inputs = 3, 2495 .video_inputs = 3,
2491 /* .audio_inputs= 1, */ 2496 /* .audio_inputs= 1, */
2492 .svhs = 2, 2497 .svhs = 2,
2493 .muxsel = { 2, 3, 1 }, 2498 .muxsel = MUXSEL(2, 3, 1),
2494 .gpiomask = 0x00e00007, 2499 .gpiomask = 0x00e00007,
2495 .gpiomux = { 0x00400005, 0, 0x00000001, 0 }, 2500 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2496 .gpiomute = 0x00c00007, 2501 .gpiomute = 0x00c00007,
@@ -2507,7 +2512,7 @@ struct tvcard bttv_tvcards[] = {
2507 /* .audio_inputs= 1, */ 2512 /* .audio_inputs= 1, */
2508 .svhs = 2, 2513 .svhs = 2,
2509 .gpiomask = 0x01fe00, 2514 .gpiomask = 0x01fe00,
2510 .muxsel = { 2, 3, 1, 1 }, 2515 .muxsel = MUXSEL(2, 3, 1, 1),
2511 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 }, 2516 .gpiomux = { 0x001e00, 0, 0x018000, 0x014000 },
2512 .gpiomute = 0x002000, 2517 .gpiomute = 0x002000,
2513 .needs_tvaudio = 1, 2518 .needs_tvaudio = 1,
@@ -2523,7 +2528,7 @@ struct tvcard bttv_tvcards[] = {
2523 /* .audio_inputs= 1, */ 2528 /* .audio_inputs= 1, */
2524 .svhs = 2, 2529 .svhs = 2,
2525 .gpiomask = 0x001c0007, 2530 .gpiomask = 0x001c0007,
2526 .muxsel = { 2, 3, 1, 1 }, 2531 .muxsel = MUXSEL(2, 3, 1, 1),
2527 .gpiomux = { 0, 1, 2, 2 }, 2532 .gpiomux = { 0, 1, 2, 2 },
2528 .gpiomute = 3, 2533 .gpiomute = 3,
2529 .needs_tvaudio = 0, 2534 .needs_tvaudio = 0,
@@ -2541,7 +2546,7 @@ struct tvcard bttv_tvcards[] = {
2541 .svhs = 3, 2546 .svhs = 3,
2542 .has_dig_in = 1, 2547 .has_dig_in = 1,
2543 .gpiomask = 0x01fe00, 2548 .gpiomask = 0x01fe00,
2544 .muxsel = { 2, 3, 1, 1, 0 }, /* in 4 is digital */ 2549 .muxsel = MUXSEL(2, 3, 1, 1, 0), /* in 4 is digital */
2545 /* .digital_mode= DIGITAL_MODE_CAMERA, */ 2550 /* .digital_mode= DIGITAL_MODE_CAMERA, */
2546 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 }, 2551 .gpiomux = { 0x00400, 0x10400, 0x04400, 0x80000 },
2547 .gpiomute = 0x12400, 2552 .gpiomute = 0x12400,
@@ -2559,7 +2564,7 @@ struct tvcard bttv_tvcards[] = {
2559 /* .audio_inputs= 1, */ 2564 /* .audio_inputs= 1, */
2560 .svhs = 2, 2565 .svhs = 2,
2561 .gpiomask = 0x3f, 2566 .gpiomask = 0x3f,
2562 .muxsel = { 2, 3, 1, 1 }, 2567 .muxsel = MUXSEL(2, 3, 1, 1),
2563 .gpiomux = { 0x21, 0x20, 0x24, 0x2c }, 2568 .gpiomux = { 0x21, 0x20, 0x24, 0x2c },
2564 .gpiomute = 0x29, 2569 .gpiomute = 0x29,
2565 .no_msp34xx = 1, 2570 .no_msp34xx = 1,
@@ -2587,7 +2592,7 @@ struct tvcard bttv_tvcards[] = {
2587 .video_inputs = 4, 2592 .video_inputs = 4,
2588 /* .audio_inputs= 2, */ 2593 /* .audio_inputs= 2, */
2589 .svhs = NO_SVHS, 2594 .svhs = NO_SVHS,
2590 .muxsel = { 2, 3, 0, 1 }, /* 3,0,1 are guesses */ 2595 .muxsel = MUXSEL(2, 3, 0, 1), /* 3,0,1 are guesses */
2591 .gpiomask = 0x303, 2596 .gpiomask = 0x303,
2592 .gpiomute = 0x000, /* int + 32kHz */ 2597 .gpiomute = 0x000, /* int + 32kHz */
2593 .gpiomux = { 0, 0, 0x000, 0x100}, 2598 .gpiomux = { 0, 0, 0x000, 0x100},
@@ -2605,7 +2610,7 @@ struct tvcard bttv_tvcards[] = {
2605 /* .audio_inputs= 1, */ 2610 /* .audio_inputs= 1, */
2606 .svhs = 2, 2611 .svhs = 2,
2607 .gpiomask = 15, 2612 .gpiomask = 15,
2608 .muxsel = { 2, 3, 1, 1 }, 2613 .muxsel = MUXSEL(2, 3, 1, 1),
2609 .gpiomux = { 2, 0, 0, 0 }, 2614 .gpiomux = { 2, 0, 0, 0 },
2610 .gpiomute = 1, 2615 .gpiomute = 1,
2611 .needs_tvaudio = 1, 2616 .needs_tvaudio = 1,
@@ -2620,7 +2625,7 @@ struct tvcard bttv_tvcards[] = {
2620 /* .audio_inputs= 1, */ 2625 /* .audio_inputs= 1, */
2621 .svhs = 2, 2626 .svhs = 2,
2622 .gpiomask = 0x108007, 2627 .gpiomask = 0x108007,
2623 .muxsel = { 2, 3, 1, 1 }, 2628 .muxsel = MUXSEL(2, 3, 1, 1),
2624 .gpiomux = { 100000, 100002, 100002, 100000 }, 2629 .gpiomux = { 100000, 100002, 100002, 100000 },
2625 .no_msp34xx = 1, 2630 .no_msp34xx = 1,
2626 .no_tda9875 = 1, 2631 .no_tda9875 = 1,
@@ -2637,7 +2642,7 @@ struct tvcard bttv_tvcards[] = {
2637 /* .audio_inputs= 0, */ 2642 /* .audio_inputs= 0, */
2638 .svhs = NO_SVHS, 2643 .svhs = NO_SVHS,
2639 .gpiomask = 0x0f, /* old: 7 */ 2644 .gpiomask = 0x0f, /* old: 7 */
2640 .muxsel = { 0, 1, 3, 2 }, /* Composite 0-3 */ 2645 .muxsel = MUXSEL(0, 1, 3, 2), /* Composite 0-3 */
2641 .no_msp34xx = 1, 2646 .no_msp34xx = 1,
2642 .no_tda9875 = 1, 2647 .no_tda9875 = 1,
2643 .no_tda7432 = 1, 2648 .no_tda7432 = 1,
@@ -2657,7 +2662,7 @@ struct tvcard bttv_tvcards[] = {
2657 /* .audio_inputs= 1, */ 2662 /* .audio_inputs= 1, */
2658 .svhs = 2, 2663 .svhs = 2,
2659 .gpiomask = 7, 2664 .gpiomask = 7,
2660 .muxsel = { 2, 3, 1, 1 }, 2665 .muxsel = MUXSEL(2, 3, 1, 1),
2661 .gpiomux = { 0, 1, 2, 3 }, 2666 .gpiomux = { 0, 1, 2, 3 },
2662 .gpiomute = 4, 2667 .gpiomute = 4,
2663 .tuner_type = TUNER_TEMIC_4009FR5_PAL, 2668 .tuner_type = TUNER_TEMIC_4009FR5_PAL,
@@ -2671,7 +2676,7 @@ struct tvcard bttv_tvcards[] = {
2671 .video_inputs = 4, 2676 .video_inputs = 4,
2672 /* .audio_inputs= 0, */ 2677 /* .audio_inputs= 0, */
2673 .svhs = NO_SVHS, 2678 .svhs = NO_SVHS,
2674 .muxsel = { 0, 1, 2, 3 }, 2679 .muxsel = MUXSEL(0, 1, 2, 3),
2675 .tuner_type = TUNER_ABSENT, 2680 .tuner_type = TUNER_ABSENT,
2676 .tuner_addr = ADDR_UNSET, 2681 .tuner_addr = ADDR_UNSET,
2677 }, 2682 },
@@ -2680,7 +2685,7 @@ struct tvcard bttv_tvcards[] = {
2680 .video_inputs = 2, 2685 .video_inputs = 2,
2681 /* .audio_inputs= 0, */ 2686 /* .audio_inputs= 0, */
2682 .svhs = 1, 2687 .svhs = 1,
2683 .muxsel = { 2, 0, 1, 3 }, 2688 .muxsel = MUXSEL(2, 0, 1, 3),
2684 .tuner_type = TUNER_ABSENT, 2689 .tuner_type = TUNER_ABSENT,
2685 .tuner_addr = ADDR_UNSET, 2690 .tuner_addr = ADDR_UNSET,
2686 }, 2691 },
@@ -2692,7 +2697,7 @@ struct tvcard bttv_tvcards[] = {
2692 .video_inputs = 3, 2697 .video_inputs = 3,
2693 /* .audio_inputs= 1, */ 2698 /* .audio_inputs= 1, */
2694 .svhs = 2, 2699 .svhs = 2,
2695 .muxsel = { 2, 3, 1 }, 2700 .muxsel = MUXSEL(2, 3, 1),
2696 .gpiomask = 0x00e00007, 2701 .gpiomask = 0x00e00007,
2697 .gpiomux = { 0x00400005, 0, 0x00000001, 0 }, 2702 .gpiomux = { 0x00400005, 0, 0x00000001, 0 },
2698 .gpiomute = 0x00c00007, 2703 .gpiomute = 0x00c00007,
@@ -2707,7 +2712,7 @@ struct tvcard bttv_tvcards[] = {
2707 /* .audio_inputs= 1, */ 2712 /* .audio_inputs= 1, */
2708 .svhs = 2, 2713 .svhs = 2,
2709 .gpiomask = 0x3014f, 2714 .gpiomask = 0x3014f,
2710 .muxsel = { 2, 3, 1, 1 }, 2715 .muxsel = MUXSEL(2, 3, 1, 1),
2711 .gpiomux = { 0x20001,0x10001, 0, 0 }, 2716 .gpiomux = { 0x20001,0x10001, 0, 0 },
2712 .gpiomute = 10, 2717 .gpiomute = 10,
2713 .needs_tvaudio = 1, 2718 .needs_tvaudio = 1,
@@ -2722,8 +2727,7 @@ struct tvcard bttv_tvcards[] = {
2722 /* .audio_inputs= 0, */ 2727 /* .audio_inputs= 0, */
2723 .svhs = NO_SVHS, 2728 .svhs = NO_SVHS,
2724 .gpiomask = 0x0, 2729 .gpiomask = 0x0,
2725 .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2730 .muxsel = MUXSEL(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
2726 2, 2, 2, 2, 2, 2, 2, 2 },
2727 .muxsel_hook = geovision_muxsel, 2731 .muxsel_hook = geovision_muxsel,
2728 .gpiomux = { 0 }, 2732 .gpiomux = { 0 },
2729 .no_msp34xx = 1, 2733 .no_msp34xx = 1,
@@ -2740,7 +2744,7 @@ struct tvcard bttv_tvcards[] = {
2740 /* .audio_inputs= 1, */ 2744 /* .audio_inputs= 1, */
2741 .svhs = 2, 2745 .svhs = 2,
2742 .gpiomask = 0x008007, 2746 .gpiomask = 0x008007,
2743 .muxsel = { 2, 3, 1, 1 }, 2747 .muxsel = MUXSEL(2, 3, 1, 1),
2744 .gpiomux = { 0, 1, 2, 2 }, /* CONTVFMi */ 2748 .gpiomux = { 0, 1, 2, 2 }, /* CONTVFMi */
2745 .gpiomute = 3, /* CONTVFMi */ 2749 .gpiomute = 3, /* CONTVFMi */
2746 .needs_tvaudio = 0, 2750 .needs_tvaudio = 0,
@@ -2764,7 +2768,7 @@ struct tvcard bttv_tvcards[] = {
2764 11 -> internal audio input 2768 11 -> internal audio input
2765 */ 2769 */
2766 .gpiomask = 0x060040, 2770 .gpiomask = 0x060040,
2767 .muxsel = { 2, 3, 3 }, 2771 .muxsel = MUXSEL(2, 3, 3),
2768 .gpiomux = { 0x60000, 0x60000, 0x20000, 0x20000 }, 2772 .gpiomux = { 0x60000, 0x60000, 0x20000, 0x20000 },
2769 .gpiomute = 0, 2773 .gpiomute = 0,
2770 .tuner_type = TUNER_TCL_MF02GIP_5N, 2774 .tuner_type = TUNER_TCL_MF02GIP_5N,
@@ -2780,7 +2784,7 @@ struct tvcard bttv_tvcards[] = {
2780 /* .audio_inputs= 0, */ 2784 /* .audio_inputs= 0, */
2781 .svhs = NO_SVHS, 2785 .svhs = NO_SVHS,
2782 .gpiomask = 0x00, 2786 .gpiomask = 0x00,
2783 .muxsel = { 0, 2, 3, 1 }, 2787 .muxsel = MUXSEL(0, 2, 3, 1),
2784 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2788 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2785 .needs_tvaudio = 0, 2789 .needs_tvaudio = 0,
2786 .pll = PLL_28, 2790 .pll = PLL_28,
@@ -2794,7 +2798,7 @@ struct tvcard bttv_tvcards[] = {
2794 /* .audio_inputs= 0, */ 2798 /* .audio_inputs= 0, */
2795 .svhs = 3, 2799 .svhs = 3,
2796 .gpiomask = 0x00, 2800 .gpiomask = 0x00,
2797 .muxsel = { 2, 3, 1 }, 2801 .muxsel = MUXSEL(2, 3, 1),
2798 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2802 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2799 .needs_tvaudio = 0, 2803 .needs_tvaudio = 0,
2800 .pll = PLL_28, 2804 .pll = PLL_28,
@@ -2808,7 +2812,7 @@ struct tvcard bttv_tvcards[] = {
2808 /* .audio_inputs= 0, */ 2812 /* .audio_inputs= 0, */
2809 .svhs = 3, 2813 .svhs = 3,
2810 .gpiomask = 0x00, 2814 .gpiomask = 0x00,
2811 .muxsel = { 3, 2, 1 }, 2815 .muxsel = MUXSEL(3, 2, 1),
2812 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */ 2816 .gpiomux = { 0, 0, 0, 0 }, /* card has no audio */
2813 .needs_tvaudio = 0, 2817 .needs_tvaudio = 0,
2814 .pll = PLL_28, 2818 .pll = PLL_28,
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 8d9756b9587e..ccf6aa6a975b 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1142,7 +1142,7 @@ video_mux(struct bttv *btv, unsigned int input)
1142 btand(~BT848_CONTROL_COMP, BT848_E_CONTROL); 1142 btand(~BT848_CONTROL_COMP, BT848_E_CONTROL);
1143 btand(~BT848_CONTROL_COMP, BT848_O_CONTROL); 1143 btand(~BT848_CONTROL_COMP, BT848_O_CONTROL);
1144 } 1144 }
1145 mux = bttv_tvcards[btv->c.type].muxsel[input] & 3; 1145 mux = bttv_muxsel(btv, input);
1146 btaor(mux<<5, ~(3<<5), BT848_IFORM); 1146 btaor(mux<<5, ~(3<<5), BT848_IFORM);
1147 dprintk(KERN_DEBUG "bttv%d: video mux: input=%d mux=%d\n", 1147 dprintk(KERN_DEBUG "bttv%d: video mux: input=%d mux=%d\n",
1148 btv->c.nr,input,mux); 1148 btv->c.nr,input,mux);
diff --git a/drivers/media/video/bt8xx/bttv.h b/drivers/media/video/bt8xx/bttv.h
index e377e2887a53..ead6e749372a 100644
--- a/drivers/media/video/bt8xx/bttv.h
+++ b/drivers/media/video/bt8xx/bttv.h
@@ -206,15 +206,16 @@ struct bttv_core {
206 206
207struct bttv; 207struct bttv;
208 208
209
210struct tvcard { 209struct tvcard {
211 char *name; 210 char *name;
212 void (*volume_gpio)(struct bttv *btv, __u16 volume); 211 void (*volume_gpio)(struct bttv *btv, __u16 volume);
213 void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set); 212 void (*audio_mode_gpio)(struct bttv *btv, struct v4l2_tuner *tuner, int set);
214 void (*muxsel_hook)(struct bttv *btv, unsigned int input); 213 void (*muxsel_hook)(struct bttv *btv, unsigned int input);
215 214
215 /* MUX bits for each input, two bits per input starting with the LSB */
216 u32 muxsel; /* Use MUXSEL() to set */
217
216 u32 gpiomask; 218 u32 gpiomask;
217 u32 muxsel[16];
218 u32 gpiomux[4]; /* Tuner, Radio, external, internal */ 219 u32 gpiomux[4]; /* Tuner, Radio, external, internal */
219 u32 gpiomute; /* GPIO mute setting */ 220 u32 gpiomute; /* GPIO mute setting */
220 u32 gpiomask2; /* GPIO MUX mask */ 221 u32 gpiomask2; /* GPIO MUX mask */
@@ -246,6 +247,31 @@ struct tvcard {
246 247
247extern struct tvcard bttv_tvcards[]; 248extern struct tvcard bttv_tvcards[];
248 249
250/*
251 * This bit of cpp voodoo is used to create a macro with a variable number of
252 * arguments (1 to 16). It will pack each argument into a word two bits at a
253 * time. It can't be a function because it needs to be compile time constant to
254 * initialize structures. Since each argument must fit in two bits, it's ok
255 * that they are changed to octal. One should not use hex number, macros, or
256 * anything else with this macro. Just use plain integers from 0 to 3.
257 */
258#define _MUXSELf(a) 0##a << 30
259#define _MUXSELe(a, b...) 0##a << 28 | _MUXSELf(b)
260#define _MUXSELd(a, b...) 0##a << 26 | _MUXSELe(b)
261#define _MUXSELc(a, b...) 0##a << 24 | _MUXSELd(b)
262#define _MUXSELb(a, b...) 0##a << 22 | _MUXSELc(b)
263#define _MUXSELa(a, b...) 0##a << 20 | _MUXSELb(b)
264#define _MUXSEL9(a, b...) 0##a << 18 | _MUXSELa(b)
265#define _MUXSEL8(a, b...) 0##a << 16 | _MUXSEL9(b)
266#define _MUXSEL7(a, b...) 0##a << 14 | _MUXSEL8(b)
267#define _MUXSEL6(a, b...) 0##a << 12 | _MUXSEL7(b)
268#define _MUXSEL5(a, b...) 0##a << 10 | _MUXSEL6(b)
269#define _MUXSEL4(a, b...) 0##a << 8 | _MUXSEL5(b)
270#define _MUXSEL3(a, b...) 0##a << 6 | _MUXSEL4(b)
271#define _MUXSEL2(a, b...) 0##a << 4 | _MUXSEL3(b)
272#define _MUXSEL1(a, b...) 0##a << 2 | _MUXSEL2(b)
273#define MUXSEL(a, b...) (a | _MUXSEL1(b))
274
249/* identification / initialization of the card */ 275/* identification / initialization of the card */
250extern void bttv_idcard(struct bttv *btv); 276extern void bttv_idcard(struct bttv *btv);
251extern void bttv_init_card1(struct bttv *btv); 277extern void bttv_init_card1(struct bttv *btv);
diff --git a/drivers/media/video/bt8xx/bttvp.h b/drivers/media/video/bt8xx/bttvp.h
index 23ab1c9527e4..497c8dcb4ae8 100644
--- a/drivers/media/video/bt8xx/bttvp.h
+++ b/drivers/media/video/bt8xx/bttvp.h
@@ -464,6 +464,12 @@ struct bttv {
464extern unsigned int bttv_num; 464extern unsigned int bttv_num;
465extern struct bttv bttvs[BTTV_MAX]; 465extern struct bttv bttvs[BTTV_MAX];
466 466
467static inline unsigned int bttv_muxsel(const struct bttv *btv,
468 unsigned int input)
469{
470 return (bttv_tvcards[btv->c.type].muxsel >> (input * 2)) & 3;
471}
472
467#endif 473#endif
468 474
469#define btwrite(dat,adr) writel((dat), btv->bt848_mmio+(adr)) 475#define btwrite(dat,adr) writel((dat), btv->bt848_mmio+(adr))