diff options
-rw-r--r-- | Documentation/video4linux/CARDLIST.bttv | 2 | ||||
-rw-r--r-- | drivers/media/video/bttv-cards.c | 1175 | ||||
-rw-r--r-- | drivers/media/video/bttv-driver.c | 48 | ||||
-rw-r--r-- | drivers/media/video/bttv-gpio.c | 1 | ||||
-rw-r--r-- | drivers/media/video/bttv-i2c.c | 2 | ||||
-rw-r--r-- | drivers/media/video/bttv-if.c | 1 | ||||
-rw-r--r-- | drivers/media/video/bttv-risc.c | 1 | ||||
-rw-r--r-- | drivers/media/video/bttv-vbi.c | 1 | ||||
-rw-r--r-- | drivers/media/video/bttv.h | 3 | ||||
-rw-r--r-- | drivers/media/video/bttvp.h | 3 |
10 files changed, 723 insertions, 514 deletions
diff --git a/Documentation/video4linux/CARDLIST.bttv b/Documentation/video4linux/CARDLIST.bttv index 62a12a08e2ac..7979c060e787 100644 --- a/Documentation/video4linux/CARDLIST.bttv +++ b/Documentation/video4linux/CARDLIST.bttv | |||
@@ -133,3 +133,5 @@ card=131 - Tibet Systems 'Progress DVR' CS16 | |||
133 | card=132 - Kodicom 4400R (master) | 133 | card=132 - Kodicom 4400R (master) |
134 | card=133 - Kodicom 4400R (slave) | 134 | card=133 - Kodicom 4400R (slave) |
135 | card=134 - Adlink RTV24 | 135 | card=134 - Adlink RTV24 |
136 | card=135 - DVICO FusionHDTV 5 Lite | ||
137 | card=136 - Acorp Y878F | ||
diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c index a97b9b958ed6..3cb398b7a028 100644 --- a/drivers/media/video/bttv-cards.c +++ b/drivers/media/video/bttv-cards.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-cards.c,v 1.54 2005/07/19 18:26:46 mkrufky Exp $ | ||
3 | 2 | ||
4 | bttv-cards.c | 3 | bttv-cards.c |
5 | 4 | ||
@@ -169,10 +168,10 @@ static struct CARD { | |||
169 | { 0xd01810fc, BTTV_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" }, | 168 | { 0xd01810fc, BTTV_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" }, |
170 | 169 | ||
171 | { 0x001211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, | 170 | { 0x001211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, |
172 | // some cards ship with byteswapped IDs ... | 171 | /* some cards ship with byteswapped IDs ... */ |
173 | { 0x1200bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, | 172 | { 0x1200bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, |
174 | { 0xff00bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, | 173 | { 0xff00bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, |
175 | // this seems to happen as well ... | 174 | /* this seems to happen as well ... */ |
176 | { 0xff1211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, | 175 | { 0xff1211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, |
177 | 176 | ||
178 | { 0x3000121a, BTTV_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, | 177 | { 0x3000121a, BTTV_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, |
@@ -200,12 +199,12 @@ static struct CARD { | |||
200 | 199 | ||
201 | { 0x1123153b, BTTV_TERRATVRADIO, "Terratec TV Radio+" }, | 200 | { 0x1123153b, BTTV_TERRATVRADIO, "Terratec TV Radio+" }, |
202 | { 0x1127153b, BTTV_TERRATV, "Terratec TV+ (V1.05)" }, | 201 | { 0x1127153b, BTTV_TERRATV, "Terratec TV+ (V1.05)" }, |
203 | // clashes with FlyVideo | 202 | /* clashes with FlyVideo |
204 | //{ 0x18521852, BTTV_TERRATV, "Terratec TV+ (V1.10)" }, | 203 | *{ 0x18521852, BTTV_TERRATV, "Terratec TV+ (V1.10)" }, */ |
205 | { 0x1134153b, BTTV_TERRATVALUE, "Terratec TValue (LR102)" }, | 204 | { 0x1134153b, BTTV_TERRATVALUE, "Terratec TValue (LR102)" }, |
206 | { 0x1135153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, // LR102 | 205 | { 0x1135153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, /* LR102 */ |
207 | { 0x5018153b, BTTV_TERRATVALUE, "Terratec TValue" }, // ?? | 206 | { 0x5018153b, BTTV_TERRATVALUE, "Terratec TValue" }, /* ?? */ |
208 | { 0xff3b153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, // ?? | 207 | { 0xff3b153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, /* ?? */ |
209 | 208 | ||
210 | { 0x400015b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, | 209 | { 0x400015b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, |
211 | { 0x400a15b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, | 210 | { 0x400a15b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, |
@@ -287,10 +286,12 @@ static struct CARD { | |||
287 | { 0x01071805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" }, | 286 | { 0x01071805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" }, |
288 | { 0x01081805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" }, | 287 | { 0x01081805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" }, |
289 | 288 | ||
290 | // likely broken, vendor id doesn't match the other magic views ... | 289 | { 0x15409511, BTTV_ACORP_Y878F, "Acorp Y878F" }, |
291 | //{ 0xa0fca04f, BTTV_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, | ||
292 | 290 | ||
293 | // DVB cards (using pci function .1 for mpeg data xfer) | 291 | /* likely broken, vendor id doesn't match the other magic views ... |
292 | * { 0xa0fca04f, BTTV_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */ | ||
293 | |||
294 | /* DVB cards (using pci function .1 for mpeg data xfer) */ | ||
294 | { 0x01010071, BTTV_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, | 295 | { 0x01010071, BTTV_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, |
295 | { 0x07611461, BTTV_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, | 296 | { 0x07611461, BTTV_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, |
296 | { 0x001c11bd, BTTV_PINNACLESAT, "Pinnacle PCTV Sat" }, | 297 | { 0x001c11bd, BTTV_PINNACLESAT, "Pinnacle PCTV Sat" }, |
@@ -299,6 +300,7 @@ static struct CARD { | |||
299 | { 0xfc00270f, BTTV_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" }, | 300 | { 0xfc00270f, BTTV_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" }, |
300 | { 0x07711461, BTTV_AVDVBT_771, "AVermedia AverTV DVB-T 771" }, | 301 | { 0x07711461, BTTV_AVDVBT_771, "AVermedia AverTV DVB-T 771" }, |
301 | { 0xdb1018ac, BTTV_DVICO_DVBT_LITE, "DVICO FusionHDTV DVB-T Lite" }, | 302 | { 0xdb1018ac, BTTV_DVICO_DVBT_LITE, "DVICO FusionHDTV DVB-T Lite" }, |
303 | { 0xd50018ac, BTTV_DVICO_FUSIONHDTV_5_LITE, "DVICO FusionHDTV 5 Lite" }, | ||
302 | 304 | ||
303 | { 0, -1, NULL } | 305 | { 0, -1, NULL } |
304 | }; | 306 | }; |
@@ -316,6 +318,7 @@ struct tvcard bttv_tvcards[] = { | |||
316 | .svhs = 2, | 318 | .svhs = 2, |
317 | .muxsel = { 2, 3, 1, 0}, | 319 | .muxsel = { 2, 3, 1, 0}, |
318 | .tuner_type = -1, | 320 | .tuner_type = -1, |
321 | .tuner_addr = ADDR_UNSET, | ||
319 | },{ | 322 | },{ |
320 | .name = "MIRO PCTV", | 323 | .name = "MIRO PCTV", |
321 | .video_inputs = 4, | 324 | .video_inputs = 4, |
@@ -327,6 +330,7 @@ struct tvcard bttv_tvcards[] = { | |||
327 | .audiomux = { 2, 0, 0, 0, 10}, | 330 | .audiomux = { 2, 0, 0, 0, 10}, |
328 | .needs_tvaudio = 1, | 331 | .needs_tvaudio = 1, |
329 | .tuner_type = -1, | 332 | .tuner_type = -1, |
333 | .tuner_addr = ADDR_UNSET, | ||
330 | },{ | 334 | },{ |
331 | .name = "Hauppauge (bt848)", | 335 | .name = "Hauppauge (bt848)", |
332 | .video_inputs = 4, | 336 | .video_inputs = 4, |
@@ -338,6 +342,7 @@ struct tvcard bttv_tvcards[] = { | |||
338 | .audiomux = { 0, 1, 2, 3, 4}, | 342 | .audiomux = { 0, 1, 2, 3, 4}, |
339 | .needs_tvaudio = 1, | 343 | .needs_tvaudio = 1, |
340 | .tuner_type = -1, | 344 | .tuner_type = -1, |
345 | .tuner_addr = ADDR_UNSET, | ||
341 | },{ | 346 | },{ |
342 | .name = "STB, Gateway P/N 6000699 (bt848)", | 347 | .name = "STB, Gateway P/N 6000699 (bt848)", |
343 | .video_inputs = 3, | 348 | .video_inputs = 3, |
@@ -350,6 +355,7 @@ struct tvcard bttv_tvcards[] = { | |||
350 | .no_msp34xx = 1, | 355 | .no_msp34xx = 1, |
351 | .needs_tvaudio = 1, | 356 | .needs_tvaudio = 1, |
352 | .tuner_type = TUNER_PHILIPS_NTSC, | 357 | .tuner_type = TUNER_PHILIPS_NTSC, |
358 | .tuner_addr = ADDR_UNSET, | ||
353 | .pll = PLL_28, | 359 | .pll = PLL_28, |
354 | .has_radio = 1, | 360 | .has_radio = 1, |
355 | },{ | 361 | },{ |
@@ -365,6 +371,7 @@ struct tvcard bttv_tvcards[] = { | |||
365 | .audiomux = { 0 }, | 371 | .audiomux = { 0 }, |
366 | .needs_tvaudio = 0, | 372 | .needs_tvaudio = 0, |
367 | .tuner_type = 4, | 373 | .tuner_type = 4, |
374 | .tuner_addr = ADDR_UNSET, | ||
368 | },{ | 375 | },{ |
369 | .name = "Diamond DTV2000", | 376 | .name = "Diamond DTV2000", |
370 | .video_inputs = 4, | 377 | .video_inputs = 4, |
@@ -376,6 +383,7 @@ struct tvcard bttv_tvcards[] = { | |||
376 | .audiomux = { 0, 1, 0, 1, 3}, | 383 | .audiomux = { 0, 1, 0, 1, 3}, |
377 | .needs_tvaudio = 1, | 384 | .needs_tvaudio = 1, |
378 | .tuner_type = -1, | 385 | .tuner_type = -1, |
386 | .tuner_addr = ADDR_UNSET, | ||
379 | },{ | 387 | },{ |
380 | .name = "AVerMedia TVPhone", | 388 | .name = "AVerMedia TVPhone", |
381 | .video_inputs = 3, | 389 | .video_inputs = 3, |
@@ -388,6 +396,7 @@ struct tvcard bttv_tvcards[] = { | |||
388 | /* 0x04 for some cards ?? */ | 396 | /* 0x04 for some cards ?? */ |
389 | .needs_tvaudio = 1, | 397 | .needs_tvaudio = 1, |
390 | .tuner_type = -1, | 398 | .tuner_type = -1, |
399 | .tuner_addr = ADDR_UNSET, | ||
391 | .audio_hook = avermedia_tvphone_audio, | 400 | .audio_hook = avermedia_tvphone_audio, |
392 | .has_remote = 1, | 401 | .has_remote = 1, |
393 | },{ | 402 | },{ |
@@ -401,6 +410,7 @@ struct tvcard bttv_tvcards[] = { | |||
401 | .audiomux = {0 }, | 410 | .audiomux = {0 }, |
402 | .needs_tvaudio = 1, | 411 | .needs_tvaudio = 1, |
403 | .tuner_type = -1, | 412 | .tuner_type = -1, |
413 | .tuner_addr = ADDR_UNSET, | ||
404 | },{ | 414 | },{ |
405 | 415 | ||
406 | /* ---- card 0x08 ---------------------------------- */ | 416 | /* ---- card 0x08 ---------------------------------- */ |
@@ -415,6 +425,7 @@ struct tvcard bttv_tvcards[] = { | |||
415 | .needs_tvaudio = 1, | 425 | .needs_tvaudio = 1, |
416 | .pll = PLL_28, | 426 | .pll = PLL_28, |
417 | .tuner_type = -1, | 427 | .tuner_type = -1, |
428 | .tuner_addr = ADDR_UNSET, | ||
418 | },{ | 429 | },{ |
419 | .name = "IMS/IXmicro TurboTV", | 430 | .name = "IMS/IXmicro TurboTV", |
420 | .video_inputs = 3, | 431 | .video_inputs = 3, |
@@ -427,6 +438,7 @@ struct tvcard bttv_tvcards[] = { | |||
427 | .needs_tvaudio = 0, | 438 | .needs_tvaudio = 0, |
428 | .pll = PLL_28, | 439 | .pll = PLL_28, |
429 | .tuner_type = TUNER_TEMIC_PAL, | 440 | .tuner_type = TUNER_TEMIC_PAL, |
441 | .tuner_addr = ADDR_UNSET, | ||
430 | },{ | 442 | },{ |
431 | .name = "Hauppauge (bt878)", | 443 | .name = "Hauppauge (bt878)", |
432 | .video_inputs = 4, | 444 | .video_inputs = 4, |
@@ -439,6 +451,7 @@ struct tvcard bttv_tvcards[] = { | |||
439 | .needs_tvaudio = 1, | 451 | .needs_tvaudio = 1, |
440 | .pll = PLL_28, | 452 | .pll = PLL_28, |
441 | .tuner_type = -1, | 453 | .tuner_type = -1, |
454 | .tuner_addr = ADDR_UNSET, | ||
442 | },{ | 455 | },{ |
443 | .name = "MIRO PCTV pro", | 456 | .name = "MIRO PCTV pro", |
444 | .video_inputs = 3, | 457 | .video_inputs = 3, |
@@ -450,6 +463,7 @@ struct tvcard bttv_tvcards[] = { | |||
450 | .audiomux = { 0x20001,0x10001, 0, 0,10}, | 463 | .audiomux = { 0x20001,0x10001, 0, 0,10}, |
451 | .needs_tvaudio = 1, | 464 | .needs_tvaudio = 1, |
452 | .tuner_type = -1, | 465 | .tuner_type = -1, |
466 | .tuner_addr = ADDR_UNSET, | ||
453 | },{ | 467 | },{ |
454 | 468 | ||
455 | /* ---- card 0x0c ---------------------------------- */ | 469 | /* ---- card 0x0c ---------------------------------- */ |
@@ -463,6 +477,7 @@ struct tvcard bttv_tvcards[] = { | |||
463 | .audiomux = { 13, 14, 11, 7, 0, 0}, | 477 | .audiomux = { 13, 14, 11, 7, 0, 0}, |
464 | .needs_tvaudio = 1, | 478 | .needs_tvaudio = 1, |
465 | .tuner_type = -1, | 479 | .tuner_type = -1, |
480 | .tuner_addr = ADDR_UNSET, | ||
466 | },{ | 481 | },{ |
467 | .name = "AVerMedia TVCapture 98", | 482 | .name = "AVerMedia TVCapture 98", |
468 | .video_inputs = 3, | 483 | .video_inputs = 3, |
@@ -476,6 +491,7 @@ struct tvcard bttv_tvcards[] = { | |||
476 | .msp34xx_alt = 1, | 491 | .msp34xx_alt = 1, |
477 | .pll = PLL_28, | 492 | .pll = PLL_28, |
478 | .tuner_type = TUNER_PHILIPS_PAL, | 493 | .tuner_type = TUNER_PHILIPS_PAL, |
494 | .tuner_addr = ADDR_UNSET, | ||
479 | .audio_hook = avermedia_tv_stereo_audio, | 495 | .audio_hook = avermedia_tv_stereo_audio, |
480 | },{ | 496 | },{ |
481 | .name = "Aimslab Video Highway Xtreme (VHX)", | 497 | .name = "Aimslab Video Highway Xtreme (VHX)", |
@@ -489,6 +505,7 @@ struct tvcard bttv_tvcards[] = { | |||
489 | .needs_tvaudio = 1, | 505 | .needs_tvaudio = 1, |
490 | .pll = PLL_28, | 506 | .pll = PLL_28, |
491 | .tuner_type = -1, | 507 | .tuner_type = -1, |
508 | .tuner_addr = ADDR_UNSET, | ||
492 | },{ | 509 | },{ |
493 | .name = "Zoltrix TV-Max", | 510 | .name = "Zoltrix TV-Max", |
494 | .video_inputs = 3, | 511 | .video_inputs = 3, |
@@ -500,6 +517,7 @@ struct tvcard bttv_tvcards[] = { | |||
500 | .audiomux = {0 , 0, 1 , 0, 10}, | 517 | .audiomux = {0 , 0, 1 , 0, 10}, |
501 | .needs_tvaudio = 1, | 518 | .needs_tvaudio = 1, |
502 | .tuner_type = -1, | 519 | .tuner_type = -1, |
520 | .tuner_addr = ADDR_UNSET, | ||
503 | },{ | 521 | },{ |
504 | 522 | ||
505 | /* ---- card 0x10 ---------------------------------- */ | 523 | /* ---- card 0x10 ---------------------------------- */ |
@@ -510,7 +528,7 @@ struct tvcard bttv_tvcards[] = { | |||
510 | .svhs = 2, | 528 | .svhs = 2, |
511 | .gpiomask = 0x01fe00, | 529 | .gpiomask = 0x01fe00, |
512 | .muxsel = { 2, 3, 1, 1}, | 530 | .muxsel = { 2, 3, 1, 1}, |
513 | // 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> | 531 | /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */ |
514 | .audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 }, | 532 | .audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 }, |
515 | .needs_tvaudio = 1, | 533 | .needs_tvaudio = 1, |
516 | .pll = PLL_28, | 534 | .pll = PLL_28, |
@@ -526,6 +544,7 @@ struct tvcard bttv_tvcards[] = { | |||
526 | .audiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007}, | 544 | .audiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007}, |
527 | .needs_tvaudio = 1, | 545 | .needs_tvaudio = 1, |
528 | .tuner_type = -1, | 546 | .tuner_type = -1, |
547 | .tuner_addr = ADDR_UNSET, | ||
529 | .audio_hook = winview_audio, | 548 | .audio_hook = winview_audio, |
530 | .has_radio = 1, | 549 | .has_radio = 1, |
531 | },{ | 550 | },{ |
@@ -539,6 +558,7 @@ struct tvcard bttv_tvcards[] = { | |||
539 | .audiomux = {1, 0, 0, 0, 0}, | 558 | .audiomux = {1, 0, 0, 0, 0}, |
540 | .needs_tvaudio = 1, | 559 | .needs_tvaudio = 1, |
541 | .tuner_type = -1, | 560 | .tuner_type = -1, |
561 | .tuner_addr = ADDR_UNSET, | ||
542 | },{ | 562 | },{ |
543 | .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", | 563 | .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", |
544 | .video_inputs = 4, | 564 | .video_inputs = 4, |
@@ -550,6 +570,7 @@ struct tvcard bttv_tvcards[] = { | |||
550 | .audiomux = { 0 }, | 570 | .audiomux = { 0 }, |
551 | .no_msp34xx = 1, | 571 | .no_msp34xx = 1, |
552 | .tuner_type = -1, | 572 | .tuner_type = -1, |
573 | .tuner_addr = ADDR_UNSET, | ||
553 | },{ | 574 | },{ |
554 | 575 | ||
555 | /* ---- card 0x14 ---------------------------------- */ | 576 | /* ---- card 0x14 ---------------------------------- */ |
@@ -560,10 +581,11 @@ struct tvcard bttv_tvcards[] = { | |||
560 | .svhs = 2, | 581 | .svhs = 2, |
561 | .muxsel = {2, 3, 1, 1}, | 582 | .muxsel = {2, 3, 1, 1}, |
562 | .tuner_type = -1, | 583 | .tuner_type = -1, |
584 | .tuner_addr = ADDR_UNSET, | ||
563 | },{ | 585 | },{ |
564 | .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", | 586 | .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", |
565 | .video_inputs = 4, | 587 | .video_inputs = 4, |
566 | .audio_inputs = 2, // tuner, line in | 588 | .audio_inputs = 2, /* tuner, line in */ |
567 | .tuner = 0, | 589 | .tuner = 0, |
568 | .svhs = 2, | 590 | .svhs = 2, |
569 | .gpiomask = 0x1800, | 591 | .gpiomask = 0x1800, |
@@ -571,6 +593,7 @@ struct tvcard bttv_tvcards[] = { | |||
571 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, | 593 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, |
572 | .pll = PLL_28, | 594 | .pll = PLL_28, |
573 | .tuner_type = TUNER_PHILIPS_PAL_I, | 595 | .tuner_type = TUNER_PHILIPS_PAL_I, |
596 | .tuner_addr = ADDR_UNSET, | ||
574 | },{ | 597 | },{ |
575 | .name = "Askey CPH050/ Phoebe Tv Master + FM", | 598 | .name = "Askey CPH050/ Phoebe Tv Master + FM", |
576 | .video_inputs = 3, | 599 | .video_inputs = 3, |
@@ -583,6 +606,7 @@ struct tvcard bttv_tvcards[] = { | |||
583 | .needs_tvaudio = 1, | 606 | .needs_tvaudio = 1, |
584 | .pll = PLL_28, | 607 | .pll = PLL_28, |
585 | .tuner_type = -1, | 608 | .tuner_type = -1, |
609 | .tuner_addr = ADDR_UNSET, | ||
586 | },{ | 610 | },{ |
587 | .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", | 611 | .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", |
588 | .video_inputs = 3, | 612 | .video_inputs = 3, |
@@ -591,11 +615,12 @@ struct tvcard bttv_tvcards[] = { | |||
591 | .svhs = -1, | 615 | .svhs = -1, |
592 | .gpiomask = 7, | 616 | .gpiomask = 7, |
593 | .muxsel = { 2, 3, -1 }, | 617 | .muxsel = { 2, 3, -1 }, |
594 | .digital_mode = DIGITAL_MODE_CAMERA, | 618 | .digital_mode = DIGITAL_MODE_CAMERA, |
595 | .audiomux = { 0, 0, 0, 0, 0 }, | 619 | .audiomux = { 0, 0, 0, 0, 0 }, |
596 | .no_msp34xx = 1, | 620 | .no_msp34xx = 1, |
597 | .pll = PLL_28, | 621 | .pll = PLL_28, |
598 | .tuner_type = TUNER_ALPS_TSBB5_PAL_I, | 622 | .tuner_type = TUNER_ALPS_TSBB5_PAL_I, |
623 | .tuner_addr = ADDR_UNSET, | ||
599 | },{ | 624 | },{ |
600 | 625 | ||
601 | /* ---- card 0x18 ---------------------------------- */ | 626 | /* ---- card 0x18 ---------------------------------- */ |
@@ -610,6 +635,7 @@ struct tvcard bttv_tvcards[] = { | |||
610 | .needs_tvaudio = 1, | 635 | .needs_tvaudio = 1, |
611 | .pll = PLL_28, | 636 | .pll = PLL_28, |
612 | .tuner_type = -1, | 637 | .tuner_type = -1, |
638 | .tuner_addr = ADDR_UNSET, | ||
613 | .has_remote = 1, | 639 | .has_remote = 1, |
614 | },{ | 640 | },{ |
615 | .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar", | 641 | .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar", |
@@ -622,6 +648,7 @@ struct tvcard bttv_tvcards[] = { | |||
622 | .audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000}, | 648 | .audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000}, |
623 | .needs_tvaudio = 0, | 649 | .needs_tvaudio = 0, |
624 | .tuner_type = TUNER_PHILIPS_PAL, | 650 | .tuner_type = TUNER_PHILIPS_PAL, |
651 | .tuner_addr = ADDR_UNSET, | ||
625 | .audio_hook = terratv_audio, | 652 | .audio_hook = terratv_audio, |
626 | },{ | 653 | },{ |
627 | .name = "Hauppauge WinCam newer (bt878)", | 654 | .name = "Hauppauge WinCam newer (bt878)", |
@@ -634,6 +661,7 @@ struct tvcard bttv_tvcards[] = { | |||
634 | .audiomux = { 0, 1, 2, 3, 4}, | 661 | .audiomux = { 0, 1, 2, 3, 4}, |
635 | .needs_tvaudio = 1, | 662 | .needs_tvaudio = 1, |
636 | .tuner_type = -1, | 663 | .tuner_type = -1, |
664 | .tuner_addr = ADDR_UNSET, | ||
637 | },{ | 665 | },{ |
638 | .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", | 666 | .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", |
639 | .video_inputs = 4, | 667 | .video_inputs = 4, |
@@ -645,6 +673,7 @@ struct tvcard bttv_tvcards[] = { | |||
645 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, | 673 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, |
646 | .pll = PLL_28, | 674 | .pll = PLL_28, |
647 | .tuner_type = TUNER_PHILIPS_SECAM, | 675 | .tuner_type = TUNER_PHILIPS_SECAM, |
676 | .tuner_addr = ADDR_UNSET, | ||
648 | },{ | 677 | },{ |
649 | 678 | ||
650 | /* ---- card 0x1c ---------------------------------- */ | 679 | /* ---- card 0x1c ---------------------------------- */ |
@@ -658,37 +687,38 @@ struct tvcard bttv_tvcards[] = { | |||
658 | .audiomux = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000}, | 687 | .audiomux = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000}, |
659 | .needs_tvaudio = 0, | 688 | .needs_tvaudio = 0, |
660 | .tuner_type = TUNER_PHILIPS_PAL, | 689 | .tuner_type = TUNER_PHILIPS_PAL, |
690 | .tuner_addr = ADDR_UNSET, | ||
661 | .audio_hook = terratv_audio, | 691 | .audio_hook = terratv_audio, |
662 | /* GPIO wiring: | 692 | /* GPIO wiring: |
663 | External 20 pin connector (for Active Radio Upgrade board) | 693 | External 20 pin connector (for Active Radio Upgrade board) |
664 | gpio00: i2c-sda | 694 | gpio00: i2c-sda |
665 | gpio01: i2c-scl | 695 | gpio01: i2c-scl |
666 | gpio02: om5610-data | 696 | gpio02: om5610-data |
667 | gpio03: om5610-clk | 697 | gpio03: om5610-clk |
668 | gpio04: om5610-wre | 698 | gpio04: om5610-wre |
669 | gpio05: om5610-stereo | 699 | gpio05: om5610-stereo |
670 | gpio06: rds6588-davn | 700 | gpio06: rds6588-davn |
671 | gpio07: Pin 7 n.c. | 701 | gpio07: Pin 7 n.c. |
672 | gpio08: nIOW | 702 | gpio08: nIOW |
673 | gpio09+10: nIOR, nSEL ?? (bt878) | 703 | gpio09+10: nIOR, nSEL ?? (bt878) |
674 | gpio09: nIOR (bt848) | 704 | gpio09: nIOR (bt848) |
675 | gpio10: nSEL (bt848) | 705 | gpio10: nSEL (bt848) |
676 | Sound Routing: | 706 | Sound Routing: |
677 | gpio16: u2-A0 (1st 4052bt) | 707 | gpio16: u2-A0 (1st 4052bt) |
678 | gpio17: u2-A1 | 708 | gpio17: u2-A1 |
679 | gpio18: u2-nEN | 709 | gpio18: u2-nEN |
680 | gpio19: u4-A0 (2nd 4052) | 710 | gpio19: u4-A0 (2nd 4052) |
681 | gpio20: u4-A1 | 711 | gpio20: u4-A1 |
682 | u4-nEN - GND | 712 | u4-nEN - GND |
683 | Btspy: | 713 | Btspy: |
684 | 00000 : Cdrom (internal audio input) | 714 | 00000 : Cdrom (internal audio input) |
685 | 10000 : ext. Video audio input | 715 | 10000 : ext. Video audio input |
686 | 20000 : TV Mono | 716 | 20000 : TV Mono |
687 | a0000 : TV Mono/2 | 717 | a0000 : TV Mono/2 |
688 | 1a0000 : TV Stereo | 718 | 1a0000 : TV Stereo |
689 | 30000 : Radio | 719 | 30000 : Radio |
690 | 40000 : Mute | 720 | 40000 : Mute |
691 | */ | 721 | */ |
692 | 722 | ||
693 | },{ | 723 | },{ |
694 | /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */ | 724 | /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */ |
@@ -702,6 +732,7 @@ struct tvcard bttv_tvcards[] = { | |||
702 | .audiomux = { 0 }, | 732 | .audiomux = { 0 }, |
703 | .needs_tvaudio = 1, | 733 | .needs_tvaudio = 1, |
704 | .tuner_type = -1, | 734 | .tuner_type = -1, |
735 | .tuner_addr = ADDR_UNSET, | ||
705 | .muxsel_hook = PXC200_muxsel, | 736 | .muxsel_hook = PXC200_muxsel, |
706 | 737 | ||
707 | },{ | 738 | },{ |
@@ -710,11 +741,12 @@ struct tvcard bttv_tvcards[] = { | |||
710 | .audio_inputs = 1, | 741 | .audio_inputs = 1, |
711 | .tuner = 0, | 742 | .tuner = 0, |
712 | .svhs = 2, | 743 | .svhs = 2, |
713 | .gpiomask = 0x1800, //0x8dfe00 | 744 | .gpiomask = 0x1800, /* 0x8dfe00 */ |
714 | .muxsel = { 2, 3, 1, 1}, | 745 | .muxsel = { 2, 3, 1, 1}, |
715 | .audiomux = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 }, | 746 | .audiomux = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 }, |
716 | .pll = PLL_28, | 747 | .pll = PLL_28, |
717 | .tuner_type = -1, | 748 | .tuner_type = -1, |
749 | .tuner_addr = ADDR_UNSET, | ||
718 | },{ | 750 | },{ |
719 | .name = "Formac iProTV, Formac ProTV I (bt848)", | 751 | .name = "Formac iProTV, Formac ProTV I (bt848)", |
720 | .video_inputs = 4, | 752 | .video_inputs = 4, |
@@ -726,6 +758,7 @@ struct tvcard bttv_tvcards[] = { | |||
726 | .audiomux = { 1, 0, 0, 0, 0 }, | 758 | .audiomux = { 1, 0, 0, 0, 0 }, |
727 | .pll = PLL_28, | 759 | .pll = PLL_28, |
728 | .tuner_type = TUNER_PHILIPS_PAL, | 760 | .tuner_type = TUNER_PHILIPS_PAL, |
761 | .tuner_addr = ADDR_UNSET, | ||
729 | },{ | 762 | },{ |
730 | 763 | ||
731 | /* ---- card 0x20 ---------------------------------- */ | 764 | /* ---- card 0x20 ---------------------------------- */ |
@@ -739,6 +772,7 @@ struct tvcard bttv_tvcards[] = { | |||
739 | .audiomux = { 0 }, | 772 | .audiomux = { 0 }, |
740 | .needs_tvaudio = 0, | 773 | .needs_tvaudio = 0, |
741 | .tuner_type = 4, | 774 | .tuner_type = 4, |
775 | .tuner_addr = ADDR_UNSET, | ||
742 | },{ | 776 | },{ |
743 | .name = "Terratec TerraTValue Version Bt878", | 777 | .name = "Terratec TerraTValue Version Bt878", |
744 | .video_inputs = 3, | 778 | .video_inputs = 3, |
@@ -751,31 +785,33 @@ struct tvcard bttv_tvcards[] = { | |||
751 | .needs_tvaudio = 1, | 785 | .needs_tvaudio = 1, |
752 | .pll = PLL_28, | 786 | .pll = PLL_28, |
753 | .tuner_type = TUNER_PHILIPS_PAL, | 787 | .tuner_type = TUNER_PHILIPS_PAL, |
788 | .tuner_addr = ADDR_UNSET, | ||
754 | },{ | 789 | },{ |
755 | .name = "Leadtek WinFast 2000/ WinFast 2000 XP", | 790 | .name = "Leadtek WinFast 2000/ WinFast 2000 XP", |
756 | .video_inputs = 4, | 791 | .video_inputs = 4, |
757 | .audio_inputs = 1, | 792 | .audio_inputs = 1, |
758 | .tuner = 0, | 793 | .tuner = 0, |
759 | .svhs = 2, | 794 | .svhs = 2, |
760 | .muxsel = { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector | 795 | .muxsel = { 2, 3, 1, 1, 0}, /* TV, CVid, SVid, CVid over SVid connector */ |
761 | /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ | 796 | /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ |
762 | .gpiomask = 0xb33000, | 797 | .gpiomask = 0xb33000, |
763 | .audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 }, | 798 | .audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 }, |
764 | /* Audio Routing for "WinFast 2000 XP" (no tv stereo !) | 799 | /* Audio Routing for "WinFast 2000 XP" (no tv stereo !) |
765 | gpio23 -- hef4052:nEnable (0x800000) | 800 | gpio23 -- hef4052:nEnable (0x800000) |
766 | gpio12 -- hef4052:A1 | 801 | gpio12 -- hef4052:A1 |
767 | gpio13 -- hef4052:A0 | 802 | gpio13 -- hef4052:A0 |
768 | 0x0000: external audio | 803 | 0x0000: external audio |
769 | 0x1000: FM | 804 | 0x1000: FM |
770 | 0x2000: TV | 805 | 0x2000: TV |
771 | 0x3000: n.c. | 806 | 0x3000: n.c. |
772 | Note: There exists another variant "Winfast 2000" with tv stereo !? | 807 | Note: There exists another variant "Winfast 2000" with tv stereo !? |
773 | Note: eeprom only contains FF and pci subsystem id 107d:6606 | 808 | Note: eeprom only contains FF and pci subsystem id 107d:6606 |
774 | */ | 809 | */ |
775 | .needs_tvaudio = 0, | 810 | .needs_tvaudio = 0, |
776 | .pll = PLL_28, | 811 | .pll = PLL_28, |
777 | .has_radio = 1, | 812 | .has_radio = 1, |
778 | .tuner_type = 5, // default for now, gpio reads BFFF06 for Pal bg+dk | 813 | .tuner_type = 5, /* default for now, gpio reads BFFF06 for Pal bg+dk */ |
814 | .tuner_addr = ADDR_UNSET, | ||
779 | .audio_hook = winfast2000_audio, | 815 | .audio_hook = winfast2000_audio, |
780 | .has_remote = 1, | 816 | .has_remote = 1, |
781 | },{ | 817 | },{ |
@@ -789,6 +825,7 @@ struct tvcard bttv_tvcards[] = { | |||
789 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, | 825 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, |
790 | .pll = PLL_28, | 826 | .pll = PLL_28, |
791 | .tuner_type = -1, | 827 | .tuner_type = -1, |
828 | .tuner_addr = ADDR_UNSET, | ||
792 | },{ | 829 | },{ |
793 | 830 | ||
794 | /* ---- card 0x24 ---------------------------------- */ | 831 | /* ---- card 0x24 ---------------------------------- */ |
@@ -802,6 +839,7 @@ struct tvcard bttv_tvcards[] = { | |||
802 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, | 839 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, |
803 | .pll = PLL_28, | 840 | .pll = PLL_28, |
804 | .tuner_type = -1, | 841 | .tuner_type = -1, |
842 | .tuner_addr = ADDR_UNSET, | ||
805 | .has_radio = 1, | 843 | .has_radio = 1, |
806 | },{ | 844 | },{ |
807 | .name = "Prolink PixelView PlayTV pro", | 845 | .name = "Prolink PixelView PlayTV pro", |
@@ -815,6 +853,7 @@ struct tvcard bttv_tvcards[] = { | |||
815 | .no_msp34xx = 1, | 853 | .no_msp34xx = 1, |
816 | .pll = PLL_28, | 854 | .pll = PLL_28, |
817 | .tuner_type = -1, | 855 | .tuner_type = -1, |
856 | .tuner_addr = ADDR_UNSET, | ||
818 | },{ | 857 | },{ |
819 | .name = "Askey CPH06X TView99", | 858 | .name = "Askey CPH06X TView99", |
820 | .video_inputs = 4, | 859 | .video_inputs = 4, |
@@ -827,6 +866,7 @@ struct tvcard bttv_tvcards[] = { | |||
827 | .needs_tvaudio = 1, | 866 | .needs_tvaudio = 1, |
828 | .pll = PLL_28, | 867 | .pll = PLL_28, |
829 | .tuner_type = 1, | 868 | .tuner_type = 1, |
869 | .tuner_addr = ADDR_UNSET, | ||
830 | .has_remote = 1, | 870 | .has_remote = 1, |
831 | },{ | 871 | },{ |
832 | .name = "Pinnacle PCTV Studio/Rave", | 872 | .name = "Pinnacle PCTV Studio/Rave", |
@@ -840,6 +880,7 @@ struct tvcard bttv_tvcards[] = { | |||
840 | .needs_tvaudio = 0, | 880 | .needs_tvaudio = 0, |
841 | .pll = PLL_28, | 881 | .pll = PLL_28, |
842 | .tuner_type = -1, | 882 | .tuner_type = -1, |
883 | .tuner_addr = ADDR_UNSET, | ||
843 | },{ | 884 | },{ |
844 | 885 | ||
845 | /* ---- card 0x28 ---------------------------------- */ | 886 | /* ---- card 0x28 ---------------------------------- */ |
@@ -854,6 +895,7 @@ struct tvcard bttv_tvcards[] = { | |||
854 | .no_msp34xx = 1, | 895 | .no_msp34xx = 1, |
855 | .needs_tvaudio = 1, | 896 | .needs_tvaudio = 1, |
856 | .tuner_type = TUNER_PHILIPS_NTSC, | 897 | .tuner_type = TUNER_PHILIPS_NTSC, |
898 | .tuner_addr = ADDR_UNSET, | ||
857 | .pll = PLL_28, | 899 | .pll = PLL_28, |
858 | .has_radio = 1, | 900 | .has_radio = 1, |
859 | },{ | 901 | },{ |
@@ -868,6 +910,7 @@ struct tvcard bttv_tvcards[] = { | |||
868 | .needs_tvaudio = 1, | 910 | .needs_tvaudio = 1, |
869 | .pll = PLL_28, | 911 | .pll = PLL_28, |
870 | .tuner_type = -1, | 912 | .tuner_type = -1, |
913 | .tuner_addr = ADDR_UNSET, | ||
871 | .has_radio = 1, | 914 | .has_radio = 1, |
872 | .audio_hook = avermedia_tvphone_audio, | 915 | .audio_hook = avermedia_tvphone_audio, |
873 | },{ | 916 | },{ |
@@ -883,6 +926,7 @@ struct tvcard bttv_tvcards[] = { | |||
883 | .no_msp34xx = 1, | 926 | .no_msp34xx = 1, |
884 | .pll = PLL_28, | 927 | .pll = PLL_28, |
885 | .tuner_type = 1, | 928 | .tuner_type = 1, |
929 | .tuner_addr = ADDR_UNSET, | ||
886 | },{ | 930 | },{ |
887 | .name = "Little OnAir TV", | 931 | .name = "Little OnAir TV", |
888 | .video_inputs = 3, | 932 | .video_inputs = 3, |
@@ -894,6 +938,7 @@ struct tvcard bttv_tvcards[] = { | |||
894 | .audiomux = {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc}, | 938 | .audiomux = {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc}, |
895 | .no_msp34xx = 1, | 939 | .no_msp34xx = 1, |
896 | .tuner_type = -1, | 940 | .tuner_type = -1, |
941 | .tuner_addr = ADDR_UNSET, | ||
897 | },{ | 942 | },{ |
898 | 943 | ||
899 | /* ---- card 0x2c ---------------------------------- */ | 944 | /* ---- card 0x2c ---------------------------------- */ |
@@ -908,6 +953,7 @@ struct tvcard bttv_tvcards[] = { | |||
908 | .no_msp34xx = 1, | 953 | .no_msp34xx = 1, |
909 | .pll = PLL_NONE, | 954 | .pll = PLL_NONE, |
910 | .tuner_type = -1, | 955 | .tuner_type = -1, |
956 | .tuner_addr = ADDR_UNSET, | ||
911 | },{ | 957 | },{ |
912 | .name = "MATRIX-Vision MV-Delta 2", | 958 | .name = "MATRIX-Vision MV-Delta 2", |
913 | .video_inputs = 5, | 959 | .video_inputs = 5, |
@@ -920,6 +966,7 @@ struct tvcard bttv_tvcards[] = { | |||
920 | .no_msp34xx = 1, | 966 | .no_msp34xx = 1, |
921 | .pll = PLL_28, | 967 | .pll = PLL_28, |
922 | .tuner_type = -1, | 968 | .tuner_type = -1, |
969 | .tuner_addr = ADDR_UNSET, | ||
923 | },{ | 970 | },{ |
924 | .name = "Zoltrix Genie TV/FM", | 971 | .name = "Zoltrix Genie TV/FM", |
925 | .video_inputs = 3, | 972 | .video_inputs = 3, |
@@ -932,6 +979,7 @@ struct tvcard bttv_tvcards[] = { | |||
932 | .no_msp34xx = 1, | 979 | .no_msp34xx = 1, |
933 | .pll = PLL_28, | 980 | .pll = PLL_28, |
934 | .tuner_type = 21, | 981 | .tuner_type = 21, |
982 | .tuner_addr = ADDR_UNSET, | ||
935 | },{ | 983 | },{ |
936 | .name = "Terratec TV/Radio+", | 984 | .name = "Terratec TV/Radio+", |
937 | .video_inputs = 3, | 985 | .video_inputs = 3, |
@@ -945,6 +993,7 @@ struct tvcard bttv_tvcards[] = { | |||
945 | .no_msp34xx = 1, | 993 | .no_msp34xx = 1, |
946 | .pll = PLL_35, | 994 | .pll = PLL_35, |
947 | .tuner_type = 1, | 995 | .tuner_type = 1, |
996 | .tuner_addr = ADDR_UNSET, | ||
948 | .has_radio = 1, | 997 | .has_radio = 1, |
949 | },{ | 998 | },{ |
950 | 999 | ||
@@ -960,6 +1009,7 @@ struct tvcard bttv_tvcards[] = { | |||
960 | .needs_tvaudio = 1, | 1009 | .needs_tvaudio = 1, |
961 | .pll = PLL_28, | 1010 | .pll = PLL_28, |
962 | .tuner_type = -1, | 1011 | .tuner_type = -1, |
1012 | .tuner_addr = ADDR_UNSET, | ||
963 | },{ | 1013 | },{ |
964 | .name = "IODATA GV-BCTV3/PCI", | 1014 | .name = "IODATA GV-BCTV3/PCI", |
965 | .video_inputs = 3, | 1015 | .video_inputs = 3, |
@@ -972,6 +1022,7 @@ struct tvcard bttv_tvcards[] = { | |||
972 | .no_msp34xx = 1, | 1022 | .no_msp34xx = 1, |
973 | .pll = PLL_28, | 1023 | .pll = PLL_28, |
974 | .tuner_type = TUNER_ALPS_TSHC6_NTSC, | 1024 | .tuner_type = TUNER_ALPS_TSHC6_NTSC, |
1025 | .tuner_addr = ADDR_UNSET, | ||
975 | .audio_hook = gvbctv3pci_audio, | 1026 | .audio_hook = gvbctv3pci_audio, |
976 | },{ | 1027 | },{ |
977 | .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP", | 1028 | .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP", |
@@ -986,6 +1037,7 @@ struct tvcard bttv_tvcards[] = { | |||
986 | .no_msp34xx = 1, | 1037 | .no_msp34xx = 1, |
987 | .pll = PLL_28, | 1038 | .pll = PLL_28, |
988 | .tuner_type = TUNER_PHILIPS_PAL_I, | 1039 | .tuner_type = TUNER_PHILIPS_PAL_I, |
1040 | .tuner_addr = ADDR_UNSET, | ||
989 | .has_remote = 1, | 1041 | .has_remote = 1, |
990 | /* GPIO wiring: (different from Rev.4C !) | 1042 | /* GPIO wiring: (different from Rev.4C !) |
991 | GPIO17: U4.A0 (first hef4052bt) | 1043 | GPIO17: U4.A0 (first hef4052bt) |
@@ -994,8 +1046,8 @@ struct tvcard bttv_tvcards[] = { | |||
994 | GPIO21: U4.nEN | 1046 | GPIO21: U4.nEN |
995 | GPIO22: BT832 Reset Line | 1047 | GPIO22: BT832 Reset Line |
996 | GPIO23: A5,A0, U5,nEN | 1048 | GPIO23: A5,A0, U5,nEN |
997 | Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22 | 1049 | Note: At i2c=0x8a is a Bt832 chip, which changes to 0x88 after being reset via GPIO22 |
998 | */ | 1050 | */ |
999 | },{ | 1051 | },{ |
1000 | .name = "Eagle Wireless Capricorn2 (bt878A)", | 1052 | .name = "Eagle Wireless Capricorn2 (bt878A)", |
1001 | .video_inputs = 4, | 1053 | .video_inputs = 4, |
@@ -1007,6 +1059,7 @@ struct tvcard bttv_tvcards[] = { | |||
1007 | .audiomux = { 0, 1, 2, 3, 4}, | 1059 | .audiomux = { 0, 1, 2, 3, 4}, |
1008 | .pll = PLL_28, | 1060 | .pll = PLL_28, |
1009 | .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */, | 1061 | .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */, |
1062 | .tuner_addr = ADDR_UNSET, | ||
1010 | },{ | 1063 | },{ |
1011 | 1064 | ||
1012 | /* ---- card 0x34 ---------------------------------- */ | 1065 | /* ---- card 0x34 ---------------------------------- */ |
@@ -1020,20 +1073,21 @@ struct tvcard bttv_tvcards[] = { | |||
1020 | .muxsel = { 2, 3, 1, 1}, | 1073 | .muxsel = { 2, 3, 1, 1}, |
1021 | .audiomux = { 1, 0xd0001, 0, 0, 10}, | 1074 | .audiomux = { 1, 0xd0001, 0, 0, 10}, |
1022 | /* sound path (5 sources): | 1075 | /* sound path (5 sources): |
1023 | MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable) | 1076 | MUX1 (mask 0x03), Enable Pin 0x08 (0=enable, 1=disable) |
1024 | 0= ext. Audio IN | 1077 | 0= ext. Audio IN |
1025 | 1= from MUX2 | 1078 | 1= from MUX2 |
1026 | 2= Mono TV sound from Tuner | 1079 | 2= Mono TV sound from Tuner |
1027 | 3= not connected | 1080 | 3= not connected |
1028 | MUX2 (mask 0x30000): | 1081 | MUX2 (mask 0x30000): |
1029 | 0,2,3= from MSP34xx | 1082 | 0,2,3= from MSP34xx |
1030 | 1= FM stereo Radio from Tuner */ | 1083 | 1= FM stereo Radio from Tuner */ |
1031 | .needs_tvaudio = 0, | 1084 | .needs_tvaudio = 0, |
1032 | .pll = PLL_28, | 1085 | .pll = PLL_28, |
1033 | .tuner_type = -1, | 1086 | .tuner_type = -1, |
1087 | .tuner_addr = ADDR_UNSET, | ||
1034 | },{ | 1088 | },{ |
1035 | /* Claas Langbehn <claas@bigfoot.com>, | 1089 | /* Claas Langbehn <claas@bigfoot.com>, |
1036 | Sven Grothklags <sven@upb.de> */ | 1090 | Sven Grothklags <sven@upb.de> */ |
1037 | .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS", | 1091 | .name = "Typhoon TView RDS + FM Stereo / KNC1 TV Station RDS", |
1038 | .video_inputs = 4, | 1092 | .video_inputs = 4, |
1039 | .audio_inputs = 3, | 1093 | .audio_inputs = 3, |
@@ -1045,10 +1099,11 @@ struct tvcard bttv_tvcards[] = { | |||
1045 | .needs_tvaudio = 1, | 1099 | .needs_tvaudio = 1, |
1046 | .pll = PLL_28, | 1100 | .pll = PLL_28, |
1047 | .tuner_type = TUNER_PHILIPS_PAL, | 1101 | .tuner_type = TUNER_PHILIPS_PAL, |
1102 | .tuner_addr = ADDR_UNSET, | ||
1048 | .has_radio = 1, | 1103 | .has_radio = 1, |
1049 | },{ | 1104 | },{ |
1050 | /* Tim Röstermundt <rosterm@uni-muenster.de> | 1105 | /* Tim Röstermundt <rosterm@uni-muenster.de> |
1051 | in de.comp.os.unix.linux.hardware: | 1106 | in de.comp.os.unix.linux.hardware: |
1052 | options bttv card=0 pll=1 radio=1 gpiomask=0x18e0 | 1107 | options bttv card=0 pll=1 radio=1 gpiomask=0x18e0 |
1053 | audiomux=0x44c71f,0x44d71f,0,0x44d71f,0x44dfff | 1108 | audiomux=0x44c71f,0x44d71f,0,0x44d71f,0x44dfff |
1054 | options tuner type=5 */ | 1109 | options tuner type=5 */ |
@@ -1060,15 +1115,16 @@ struct tvcard bttv_tvcards[] = { | |||
1060 | .gpiomask = 0x18e0, | 1115 | .gpiomask = 0x18e0, |
1061 | .muxsel = { 2, 3, 1, 1}, | 1116 | .muxsel = { 2, 3, 1, 1}, |
1062 | .audiomux = { 0x0000,0x0800,0x1000,0x1000,0x18e0 }, | 1117 | .audiomux = { 0x0000,0x0800,0x1000,0x1000,0x18e0 }, |
1063 | /* For cards with tda9820/tda9821: | 1118 | /* For cards with tda9820/tda9821: |
1064 | 0x0000: Tuner normal stereo | 1119 | 0x0000: Tuner normal stereo |
1065 | 0x0080: Tuner A2 SAP (second audio program = Zweikanalton) | 1120 | 0x0080: Tuner A2 SAP (second audio program = Zweikanalton) |
1066 | 0x0880: Tuner A2 stereo */ | 1121 | 0x0880: Tuner A2 stereo */ |
1067 | .pll = PLL_28, | 1122 | .pll = PLL_28, |
1068 | .tuner_type = -1, | 1123 | .tuner_type = -1, |
1124 | .tuner_addr = ADDR_UNSET, | ||
1069 | },{ | 1125 | },{ |
1070 | /* Miguel Angel Alvarez <maacruz@navegalia.com> | 1126 | /* Miguel Angel Alvarez <maacruz@navegalia.com> |
1071 | old Easy TV BT848 version (model CPH031) */ | 1127 | old Easy TV BT848 version (model CPH031) */ |
1072 | .name = "Askey CPH031/ BESTBUY Easy TV", | 1128 | .name = "Askey CPH031/ BESTBUY Easy TV", |
1073 | .video_inputs = 4, | 1129 | .video_inputs = 4, |
1074 | .audio_inputs = 1, | 1130 | .audio_inputs = 1, |
@@ -1080,6 +1136,7 @@ struct tvcard bttv_tvcards[] = { | |||
1080 | .needs_tvaudio = 0, | 1136 | .needs_tvaudio = 0, |
1081 | .pll = PLL_28, | 1137 | .pll = PLL_28, |
1082 | .tuner_type = TUNER_TEMIC_PAL, | 1138 | .tuner_type = TUNER_TEMIC_PAL, |
1139 | .tuner_addr = ADDR_UNSET, | ||
1083 | },{ | 1140 | },{ |
1084 | 1141 | ||
1085 | /* ---- card 0x38 ---------------------------------- */ | 1142 | /* ---- card 0x38 ---------------------------------- */ |
@@ -1094,10 +1151,11 @@ struct tvcard bttv_tvcards[] = { | |||
1094 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, | 1151 | .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, |
1095 | .pll = PLL_28, | 1152 | .pll = PLL_28, |
1096 | .tuner_type = 5, | 1153 | .tuner_type = 5, |
1154 | .tuner_addr = ADDR_UNSET, | ||
1097 | },{ | 1155 | },{ |
1098 | /* This is the ultimate cheapo capture card | 1156 | /* This is the ultimate cheapo capture card |
1099 | * just a BT848A on a small PCB! | 1157 | * just a BT848A on a small PCB! |
1100 | * Steve Hosgood <steve@equiinet.com> */ | 1158 | * Steve Hosgood <steve@equiinet.com> */ |
1101 | .name = "GrandTec 'Grand Video Capture' (Bt848)", | 1159 | .name = "GrandTec 'Grand Video Capture' (Bt848)", |
1102 | .video_inputs = 2, | 1160 | .video_inputs = 2, |
1103 | .audio_inputs = 0, | 1161 | .audio_inputs = 0, |
@@ -1110,19 +1168,21 @@ struct tvcard bttv_tvcards[] = { | |||
1110 | .no_msp34xx = 1, | 1168 | .no_msp34xx = 1, |
1111 | .pll = PLL_35, | 1169 | .pll = PLL_35, |
1112 | .tuner_type = -1, | 1170 | .tuner_type = -1, |
1171 | .tuner_addr = ADDR_UNSET, | ||
1113 | },{ | 1172 | },{ |
1114 | /* Daniel Herrington <daniel.herrington@home.com> */ | 1173 | /* Daniel Herrington <daniel.herrington@home.com> */ |
1115 | .name = "Askey CPH060/ Phoebe TV Master Only (No FM)", | 1174 | .name = "Askey CPH060/ Phoebe TV Master Only (No FM)", |
1116 | .video_inputs = 3, | 1175 | .video_inputs = 3, |
1117 | .audio_inputs = 1, | 1176 | .audio_inputs = 1, |
1118 | .tuner = 0, | 1177 | .tuner = 0, |
1119 | .svhs = 2, | 1178 | .svhs = 2, |
1120 | .gpiomask = 0xe00, | 1179 | .gpiomask = 0xe00, |
1121 | .muxsel = { 2, 3, 1, 1}, | 1180 | .muxsel = { 2, 3, 1, 1}, |
1122 | .audiomux = { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 }, | 1181 | .audiomux = { 0x400, 0x400, 0x400, 0x400, 0x800, 0x400 }, |
1123 | .needs_tvaudio = 1, | 1182 | .needs_tvaudio = 1, |
1124 | .pll = PLL_28, | 1183 | .pll = PLL_28, |
1125 | .tuner_type = TUNER_TEMIC_4036FY5_NTSC, | 1184 | .tuner_type = TUNER_TEMIC_4036FY5_NTSC, |
1185 | .tuner_addr = ADDR_UNSET, | ||
1126 | },{ | 1186 | },{ |
1127 | /* Matti Mottus <mottus@physic.ut.ee> */ | 1187 | /* Matti Mottus <mottus@physic.ut.ee> */ |
1128 | .name = "Askey CPH03x TV Capturer", | 1188 | .name = "Askey CPH03x TV Capturer", |
@@ -1130,11 +1190,12 @@ struct tvcard bttv_tvcards[] = { | |||
1130 | .audio_inputs = 1, | 1190 | .audio_inputs = 1, |
1131 | .tuner = 0, | 1191 | .tuner = 0, |
1132 | .svhs = 2, | 1192 | .svhs = 2, |
1133 | .gpiomask = 0x03000F, | 1193 | .gpiomask = 0x03000F, |
1134 | .muxsel = { 2, 3, 1, 0}, | 1194 | .muxsel = { 2, 3, 1, 0}, |
1135 | .audiomux = { 2,0,0,0,1 }, | 1195 | .audiomux = { 2,0,0,0,1 }, |
1136 | .pll = PLL_28, | 1196 | .pll = PLL_28, |
1137 | .tuner_type = 0, | 1197 | .tuner_type = 0, |
1198 | .tuner_addr = ADDR_UNSET, | ||
1138 | },{ | 1199 | },{ |
1139 | 1200 | ||
1140 | /* ---- card 0x3c ---------------------------------- */ | 1201 | /* ---- card 0x3c ---------------------------------- */ |
@@ -1149,7 +1210,7 @@ struct tvcard bttv_tvcards[] = { | |||
1149 | .audiomux = { 2, 0, 0, 1, 8}, | 1210 | .audiomux = { 2, 0, 0, 1, 8}, |
1150 | .pll = PLL_35, | 1211 | .pll = PLL_35, |
1151 | .tuner_type = TUNER_TEMIC_PAL, | 1212 | .tuner_type = TUNER_TEMIC_PAL, |
1152 | 1213 | .tuner_addr = ADDR_UNSET, | |
1153 | },{ | 1214 | },{ |
1154 | /* Adrian Cox <adrian@humboldt.co.uk */ | 1215 | /* Adrian Cox <adrian@humboldt.co.uk */ |
1155 | .name = "AG Electronics GMV1", | 1216 | .name = "AG Electronics GMV1", |
@@ -1164,10 +1225,11 @@ struct tvcard bttv_tvcards[] = { | |||
1164 | .needs_tvaudio = 0, | 1225 | .needs_tvaudio = 0, |
1165 | .pll = PLL_28, | 1226 | .pll = PLL_28, |
1166 | .tuner_type = -1, | 1227 | .tuner_type = -1, |
1228 | .tuner_addr = ADDR_UNSET, | ||
1167 | },{ | 1229 | },{ |
1168 | /* Miguel Angel Alvarez <maacruz@navegalia.com> | 1230 | /* Miguel Angel Alvarez <maacruz@navegalia.com> |
1169 | new Easy TV BT878 version (model CPH061) | 1231 | new Easy TV BT878 version (model CPH061) |
1170 | special thanks to Informatica Mieres for providing the card */ | 1232 | special thanks to Informatica Mieres for providing the card */ |
1171 | .name = "Askey CPH061/ BESTBUY Easy TV (bt878)", | 1233 | .name = "Askey CPH061/ BESTBUY Easy TV (bt878)", |
1172 | .video_inputs = 3, | 1234 | .video_inputs = 3, |
1173 | .audio_inputs = 2, | 1235 | .audio_inputs = 2, |
@@ -1179,6 +1241,7 @@ struct tvcard bttv_tvcards[] = { | |||
1179 | .needs_tvaudio = 0, | 1241 | .needs_tvaudio = 0, |
1180 | .pll = PLL_28, | 1242 | .pll = PLL_28, |
1181 | .tuner_type = TUNER_PHILIPS_PAL, | 1243 | .tuner_type = TUNER_PHILIPS_PAL, |
1244 | .tuner_addr = ADDR_UNSET, | ||
1182 | },{ | 1245 | },{ |
1183 | /* Lukas Gebauer <geby@volny.cz> */ | 1246 | /* Lukas Gebauer <geby@volny.cz> */ |
1184 | .name = "ATI TV-Wonder", | 1247 | .name = "ATI TV-Wonder", |
@@ -1191,6 +1254,7 @@ struct tvcard bttv_tvcards[] = { | |||
1191 | .audiomux = { 0xbffe, 0, 0xbfff, 0, 0xbffe}, | 1254 | .audiomux = { 0xbffe, 0, 0xbfff, 0, 0xbffe}, |
1192 | .pll = PLL_28, | 1255 | .pll = PLL_28, |
1193 | .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, | 1256 | .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, |
1257 | .tuner_addr = ADDR_UNSET, | ||
1194 | },{ | 1258 | },{ |
1195 | 1259 | ||
1196 | /* ---- card 0x40 ---------------------------------- */ | 1260 | /* ---- card 0x40 ---------------------------------- */ |
@@ -1206,6 +1270,7 @@ struct tvcard bttv_tvcards[] = { | |||
1206 | .no_msp34xx = 1, | 1270 | .no_msp34xx = 1, |
1207 | .pll = PLL_28, | 1271 | .pll = PLL_28, |
1208 | .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, | 1272 | .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, |
1273 | .tuner_addr = ADDR_UNSET, | ||
1209 | },{ | 1274 | },{ |
1210 | /* DeeJay <deejay@westel900.net (2000S) */ | 1275 | /* DeeJay <deejay@westel900.net (2000S) */ |
1211 | .name = "Lifeview FlyVideo 2000S LR90", | 1276 | .name = "Lifeview FlyVideo 2000S LR90", |
@@ -1216,7 +1281,7 @@ struct tvcard bttv_tvcards[] = { | |||
1216 | .gpiomask = 0x18e0, | 1281 | .gpiomask = 0x18e0, |
1217 | .muxsel = { 2, 3, 0, 1}, | 1282 | .muxsel = { 2, 3, 0, 1}, |
1218 | /* Radio changed from 1e80 to 0x800 to make | 1283 | /* Radio changed from 1e80 to 0x800 to make |
1219 | FlyVideo2000S in .hu happy (gm)*/ | 1284 | FlyVideo2000S in .hu happy (gm)*/ |
1220 | /* -dk-???: set mute=0x1800 for tda9874h daughterboard */ | 1285 | /* -dk-???: set mute=0x1800 for tda9874h daughterboard */ |
1221 | .audiomux = { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 }, | 1286 | .audiomux = { 0x0000,0x0800,0x1000,0x1000,0x1800, 0x1080 }, |
1222 | .audio_hook = fv2000s_audio, | 1287 | .audio_hook = fv2000s_audio, |
@@ -1225,6 +1290,7 @@ struct tvcard bttv_tvcards[] = { | |||
1225 | .needs_tvaudio = 1, | 1290 | .needs_tvaudio = 1, |
1226 | .pll = PLL_28, | 1291 | .pll = PLL_28, |
1227 | .tuner_type = 5, | 1292 | .tuner_type = 5, |
1293 | .tuner_addr = ADDR_UNSET, | ||
1228 | },{ | 1294 | },{ |
1229 | .name = "Terratec TValueRadio", | 1295 | .name = "Terratec TValueRadio", |
1230 | .video_inputs = 3, | 1296 | .video_inputs = 3, |
@@ -1237,6 +1303,7 @@ struct tvcard bttv_tvcards[] = { | |||
1237 | .needs_tvaudio = 1, | 1303 | .needs_tvaudio = 1, |
1238 | .pll = PLL_28, | 1304 | .pll = PLL_28, |
1239 | .tuner_type = TUNER_PHILIPS_PAL, | 1305 | .tuner_type = TUNER_PHILIPS_PAL, |
1306 | .tuner_addr = ADDR_UNSET, | ||
1240 | .has_radio = 1, | 1307 | .has_radio = 1, |
1241 | },{ | 1308 | },{ |
1242 | /* TANAKA Kei <peg00625@nifty.com> */ | 1309 | /* TANAKA Kei <peg00625@nifty.com> */ |
@@ -1251,25 +1318,27 @@ struct tvcard bttv_tvcards[] = { | |||
1251 | .no_msp34xx = 1, | 1318 | .no_msp34xx = 1, |
1252 | .pll = PLL_28, | 1319 | .pll = PLL_28, |
1253 | .tuner_type = TUNER_SHARP_2U5JF5540_NTSC, | 1320 | .tuner_type = TUNER_SHARP_2U5JF5540_NTSC, |
1321 | .tuner_addr = ADDR_UNSET, | ||
1254 | .audio_hook = gvbctv3pci_audio, | 1322 | .audio_hook = gvbctv3pci_audio, |
1255 | },{ | 1323 | },{ |
1256 | 1324 | ||
1257 | /* ---- card 0x44 ---------------------------------- */ | 1325 | /* ---- card 0x44 ---------------------------------- */ |
1258 | .name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", | 1326 | .name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", |
1259 | // try "insmod msp3400 simple=0" if you have | 1327 | /* try "insmod msp3400 simple=0" if you have |
1260 | // sound problems with this card. | 1328 | * sound problems with this card. */ |
1261 | .video_inputs = 4, | 1329 | .video_inputs = 4, |
1262 | .audio_inputs = 1, | 1330 | .audio_inputs = 1, |
1263 | .tuner = 0, | 1331 | .tuner = 0, |
1264 | .svhs = -1, | 1332 | .svhs = -1, |
1265 | .gpiomask = 0x4f8a00, | 1333 | .gpiomask = 0x4f8a00, |
1266 | // 0x100000: 1=MSP enabled (0=disable again) | 1334 | /* 0x100000: 1=MSP enabled (0=disable again) |
1267 | // 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) | 1335 | * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */ |
1268 | .audiomux = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff}, | 1336 | .audiomux = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff}, |
1269 | // tvtuner, radio, external,internal, mute, stereo | 1337 | /* tvtuner, radio, external,internal, mute, stereo |
1270 | /* tuner, Composit, SVid, Composit-on-Svid-adapter*/ | 1338 | * tuner, Composit, SVid, Composit-on-Svid-adapter */ |
1271 | .muxsel = { 2, 3 ,0 ,1}, | 1339 | .muxsel = { 2, 3 ,0 ,1}, |
1272 | .tuner_type = TUNER_MT2032, | 1340 | .tuner_type = TUNER_MT2032, |
1341 | .tuner_addr = ADDR_UNSET, | ||
1273 | .pll = PLL_28, | 1342 | .pll = PLL_28, |
1274 | .has_radio = 1, | 1343 | .has_radio = 1, |
1275 | },{ | 1344 | },{ |
@@ -1279,22 +1348,24 @@ struct tvcard bttv_tvcards[] = { | |||
1279 | .audio_inputs = 0, | 1348 | .audio_inputs = 0, |
1280 | .tuner = -1, | 1349 | .tuner = -1, |
1281 | .tuner_type = -1, | 1350 | .tuner_type = -1, |
1351 | .tuner_addr = ADDR_UNSET, | ||
1282 | .pll = PLL_28, | 1352 | .pll = PLL_28, |
1283 | .muxsel = { 2 }, | 1353 | .muxsel = { 2 }, |
1284 | .gpiomask = 0 | 1354 | .gpiomask = 0 |
1285 | },{ | 1355 | },{ |
1286 | /* Tomasz Pyra <hellfire@sedez.iq.pl> */ | 1356 | /* Tomasz Pyra <hellfire@sedez.iq.pl> */ |
1287 | .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)", | 1357 | .name = "Prolink Pixelview PV-BT878P+ (Rev.4C,8E)", |
1288 | .video_inputs = 3, | 1358 | .video_inputs = 3, |
1289 | .audio_inputs = 4, | 1359 | .audio_inputs = 4, |
1290 | .tuner = 0, | 1360 | .tuner = 0, |
1291 | .svhs = 2, | 1361 | .svhs = 2, |
1292 | .gpiomask = 15, | 1362 | .gpiomask = 15, |
1293 | .muxsel = { 2, 3, 1, 1}, | 1363 | .muxsel = { 2, 3, 1, 1}, |
1294 | .audiomux = { 0, 0, 11, 7, 13, 0}, // TV and Radio with same GPIO ! | 1364 | .audiomux = { 0, 0, 11, 7, 13, 0}, /* TV and Radio with same GPIO ! */ |
1295 | .needs_tvaudio = 1, | 1365 | .needs_tvaudio = 1, |
1296 | .pll = PLL_28, | 1366 | .pll = PLL_28, |
1297 | .tuner_type = 25, | 1367 | .tuner_type = 25, |
1368 | .tuner_addr = ADDR_UNSET, | ||
1298 | .has_remote = 1, | 1369 | .has_remote = 1, |
1299 | /* GPIO wiring: | 1370 | /* GPIO wiring: |
1300 | GPIO0: U4.A0 (hef4052bt) | 1371 | GPIO0: U4.A0 (hef4052bt) |
@@ -1302,16 +1373,18 @@ struct tvcard bttv_tvcards[] = { | |||
1302 | GPIO2: U4.A1 (second hef4052bt) | 1373 | GPIO2: U4.A1 (second hef4052bt) |
1303 | GPIO3: U4.nEN, U5.A0, A5.nEN | 1374 | GPIO3: U4.nEN, U5.A0, A5.nEN |
1304 | GPIO8-15: vrd866b ? | 1375 | GPIO8-15: vrd866b ? |
1305 | */ | 1376 | */ |
1306 | },{ | 1377 | },{ |
1307 | .name = "Lifeview FlyVideo 98EZ (capture only) LR51", | 1378 | .name = "Lifeview FlyVideo 98EZ (capture only) LR51", |
1308 | .video_inputs = 4, | 1379 | .video_inputs = 4, |
1309 | .audio_inputs = 0, | 1380 | .audio_inputs = 0, |
1310 | .tuner = -1, | 1381 | .tuner = -1, |
1311 | .svhs = 2, | 1382 | .svhs = 2, |
1312 | .muxsel = { 2, 3, 1, 1}, // AV1, AV2, SVHS, CVid adapter on SVHS | 1383 | .muxsel = { 2, 3, 1, 1}, /* AV1, AV2, SVHS, CVid adapter on SVHS */ |
1313 | .pll = PLL_28, | 1384 | .pll = PLL_28, |
1314 | .no_msp34xx = 1, | 1385 | .no_msp34xx = 1, |
1386 | .tuner_type = UNSET, | ||
1387 | .tuner_addr = ADDR_UNSET, | ||
1315 | },{ | 1388 | },{ |
1316 | 1389 | ||
1317 | /* ---- card 0x48 ---------------------------------- */ | 1390 | /* ---- card 0x48 ---------------------------------- */ |
@@ -1329,8 +1402,9 @@ struct tvcard bttv_tvcards[] = { | |||
1329 | .no_tda9875 = 1, | 1402 | .no_tda9875 = 1, |
1330 | .pll = PLL_28, | 1403 | .pll = PLL_28, |
1331 | .tuner_type = 5, | 1404 | .tuner_type = 5, |
1332 | .audio_hook = pvbt878p9b_audio, // Note: not all cards have stereo | 1405 | .tuner_addr = ADDR_UNSET, |
1333 | .has_radio = 1, // Note: not all cards have radio | 1406 | .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */ |
1407 | .has_radio = 1, /* Note: not all cards have radio */ | ||
1334 | .has_remote = 1, | 1408 | .has_remote = 1, |
1335 | /* GPIO wiring: | 1409 | /* GPIO wiring: |
1336 | GPIO0: A0 hef4052 | 1410 | GPIO0: A0 hef4052 |
@@ -1338,7 +1412,7 @@ struct tvcard bttv_tvcards[] = { | |||
1338 | GPIO3: nEN hef4052 | 1412 | GPIO3: nEN hef4052 |
1339 | GPIO8-15: vrd866b | 1413 | GPIO8-15: vrd866b |
1340 | GPIO20,22,23: R30,R29,R28 | 1414 | GPIO20,22,23: R30,R29,R28 |
1341 | */ | 1415 | */ |
1342 | },{ | 1416 | },{ |
1343 | /* Clay Kunz <ckunz@mail.arc.nasa.gov> */ | 1417 | /* Clay Kunz <ckunz@mail.arc.nasa.gov> */ |
1344 | /* you must jumper JP5 for the card to work */ | 1418 | /* you must jumper JP5 for the card to work */ |
@@ -1352,6 +1426,7 @@ struct tvcard bttv_tvcards[] = { | |||
1352 | .audiomux = { 0 }, | 1426 | .audiomux = { 0 }, |
1353 | .needs_tvaudio = 0, | 1427 | .needs_tvaudio = 0, |
1354 | .tuner_type = -1, | 1428 | .tuner_type = -1, |
1429 | .tuner_addr = ADDR_UNSET, | ||
1355 | },{ | 1430 | },{ |
1356 | /* Miguel Freitas <miguel@cetuc.puc-rio.br> */ | 1431 | /* Miguel Freitas <miguel@cetuc.puc-rio.br> */ |
1357 | .name = "RemoteVision MX (RV605)", | 1432 | .name = "RemoteVision MX (RV605)", |
@@ -1362,71 +1437,78 @@ struct tvcard bttv_tvcards[] = { | |||
1362 | .gpiomask = 0x00, | 1437 | .gpiomask = 0x00, |
1363 | .gpiomask2 = 0x07ff, | 1438 | .gpiomask2 = 0x07ff, |
1364 | .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, | 1439 | .muxsel = { 0x33, 0x13, 0x23, 0x43, 0xf3, 0x73, 0xe3, 0x03, |
1365 | 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 }, | 1440 | 0xd3, 0xb3, 0xc3, 0x63, 0x93, 0x53, 0x83, 0xa3 }, |
1366 | .no_msp34xx = 1, | 1441 | .no_msp34xx = 1, |
1367 | .no_tda9875 = 1, | 1442 | .no_tda9875 = 1, |
1368 | .tuner_type = -1, | 1443 | .tuner_type = -1, |
1444 | .tuner_addr = ADDR_UNSET, | ||
1369 | .muxsel_hook = rv605_muxsel, | 1445 | .muxsel_hook = rv605_muxsel, |
1370 | },{ | 1446 | },{ |
1371 | .name = "Powercolor MTV878/ MTV878R/ MTV878F", | 1447 | .name = "Powercolor MTV878/ MTV878R/ MTV878F", |
1372 | .video_inputs = 3, | 1448 | .video_inputs = 3, |
1373 | .audio_inputs = 2, | 1449 | .audio_inputs = 2, |
1374 | .tuner = 0, | 1450 | .tuner = 0, |
1375 | .svhs = 2, | 1451 | .svhs = 2, |
1376 | .gpiomask = 0x1C800F, // Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset | 1452 | .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */ |
1377 | .muxsel = { 2, 1, 1, }, | 1453 | .muxsel = { 2, 1, 1, }, |
1378 | .audiomux = { 0, 1, 2, 2, 4 }, | 1454 | .audiomux = { 0, 1, 2, 2, 4 }, |
1379 | .needs_tvaudio = 0, | 1455 | .needs_tvaudio = 0, |
1380 | .tuner_type = TUNER_PHILIPS_PAL, | 1456 | .tuner_type = TUNER_PHILIPS_PAL, |
1457 | .tuner_addr = ADDR_UNSET, | ||
1381 | .pll = PLL_28, | 1458 | .pll = PLL_28, |
1382 | .has_radio = 1, | 1459 | .has_radio = 1, |
1383 | },{ | 1460 | },{ |
1384 | 1461 | ||
1385 | /* ---- card 0x4c ---------------------------------- */ | 1462 | /* ---- card 0x4c ---------------------------------- */ |
1386 | /* Masaki Suzuki <masaki@btree.org> */ | 1463 | /* Masaki Suzuki <masaki@btree.org> */ |
1387 | .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)", | 1464 | .name = "Canopus WinDVR PCI (COMPAQ Presario 3524JP, 5112JP)", |
1388 | .video_inputs = 3, | 1465 | .video_inputs = 3, |
1389 | .audio_inputs = 1, | 1466 | .audio_inputs = 1, |
1390 | .tuner = 0, | 1467 | .tuner = 0, |
1391 | .svhs = 2, | 1468 | .svhs = 2, |
1392 | .gpiomask = 0x140007, | 1469 | .gpiomask = 0x140007, |
1393 | .muxsel = { 2, 3, 1, 1 }, | 1470 | .muxsel = { 2, 3, 1, 1 }, |
1394 | .audiomux = { 0, 1, 2, 3, 4, 0 }, | 1471 | .audiomux = { 0, 1, 2, 3, 4, 0 }, |
1395 | .tuner_type = TUNER_PHILIPS_NTSC, | 1472 | .tuner_type = TUNER_PHILIPS_NTSC, |
1396 | .audio_hook = windvr_audio, | 1473 | .tuner_addr = ADDR_UNSET, |
1397 | },{ | 1474 | .audio_hook = windvr_audio, |
1398 | .name = "GrandTec Multi Capture Card (Bt878)", | 1475 | },{ |
1399 | .video_inputs = 4, | 1476 | .name = "GrandTec Multi Capture Card (Bt878)", |
1400 | .audio_inputs = 0, | 1477 | .video_inputs = 4, |
1401 | .tuner = -1, | 1478 | .audio_inputs = 0, |
1402 | .svhs = -1, | 1479 | .tuner = -1, |
1403 | .gpiomask = 0, | 1480 | .svhs = -1, |
1404 | .muxsel = { 2, 3, 1, 0 }, | 1481 | .gpiomask = 0, |
1405 | .audiomux = { 0 }, | 1482 | .muxsel = { 2, 3, 1, 0 }, |
1406 | .needs_tvaudio = 0, | 1483 | .audiomux = { 0 }, |
1407 | .no_msp34xx = 1, | 1484 | .needs_tvaudio = 0, |
1408 | .pll = PLL_28, | 1485 | .no_msp34xx = 1, |
1409 | .tuner_type = -1, | 1486 | .pll = PLL_28, |
1410 | },{ | 1487 | .tuner_type = -1, |
1411 | .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", | 1488 | .tuner_addr = ADDR_UNSET, |
1412 | .video_inputs = 4, | 1489 | },{ |
1413 | .audio_inputs = 3, | 1490 | .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", |
1414 | .tuner = 0, | 1491 | .video_inputs = 4, |
1415 | .svhs = 2, | 1492 | .audio_inputs = 3, |
1416 | .gpiomask = 7, | 1493 | .tuner = 0, |
1417 | .muxsel = { 2, 3, 1, 1 }, // Tuner, SVid, SVHS, SVid to SVHS connector | 1494 | .svhs = 2, |
1418 | .audiomux = { 0 ,0 ,4, 4,4,4},// Yes, this tuner uses the same audio output for TV and FM radio! | 1495 | .gpiomask = 7, |
1419 | // This card lacks external Audio In, so we mute it on Ext. & Int. | 1496 | .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */ |
1420 | // The PCB can take a sbx1637/sbx1673, wiring unknown. | 1497 | .audiomux = { 0 ,0 ,4, 4,4,4},/* Yes, this tuner uses the same audio output for TV and FM radio! |
1421 | // This card lacks PCI subsystem ID, sigh. | 1498 | * This card lacks external Audio In, so we mute it on Ext. & Int. |
1422 | // audiomux=1: lower volume, 2+3: mute | 1499 | * The PCB can take a sbx1637/sbx1673, wiring unknown. |
1423 | // btwincap uses 0x80000/0x80003 | 1500 | * This card lacks PCI subsystem ID, sigh. |
1424 | .needs_tvaudio = 0, | 1501 | * audiomux=1: lower volume, 2+3: mute |
1425 | .no_msp34xx = 1, | 1502 | * btwincap uses 0x80000/0x80003 |
1426 | .pll = PLL_28, | 1503 | */ |
1427 | .tuner_type = 5, // Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and | 1504 | .needs_tvaudio = 0, |
1428 | // radio signal strength indicators work fine. | 1505 | .no_msp34xx = 1, |
1429 | .has_radio = 1, | 1506 | .pll = PLL_28, |
1507 | .tuner_type = 5, | ||
1508 | .tuner_addr = ADDR_UNSET, | ||
1509 | /* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and | ||
1510 | radio signal strength indicators work fine. */ | ||
1511 | .has_radio = 1, | ||
1430 | /* GPIO Info: | 1512 | /* GPIO Info: |
1431 | GPIO0,1: HEF4052 A0,A1 | 1513 | GPIO0,1: HEF4052 A0,A1 |
1432 | GPIO2: HEF4052 nENABLE | 1514 | GPIO2: HEF4052 nENABLE |
@@ -1437,25 +1519,27 @@ struct tvcard bttv_tvcards[] = { | |||
1437 | GPIO22,23: ?? | 1519 | GPIO22,23: ?? |
1438 | ?? : mtu8b56ep microcontroller for IR (GPIO wiring unknown)*/ | 1520 | ?? : mtu8b56ep microcontroller for IR (GPIO wiring unknown)*/ |
1439 | },{ | 1521 | },{ |
1440 | /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */ | 1522 | /* Arthur Tetzlaff-Deas, DSP Design Ltd <software@dspdesign.com> */ |
1441 | .name = "DSP Design TCVIDEO", | 1523 | .name = "DSP Design TCVIDEO", |
1442 | .video_inputs = 4, | 1524 | .video_inputs = 4, |
1443 | .svhs = -1, | 1525 | .svhs = -1, |
1444 | .muxsel = { 2, 3, 1, 0}, | 1526 | .muxsel = { 2, 3, 1, 0}, |
1445 | .pll = PLL_28, | 1527 | .pll = PLL_28, |
1446 | .tuner_type = -1, | 1528 | .tuner_type = -1, |
1529 | .tuner_addr = ADDR_UNSET, | ||
1447 | },{ | 1530 | },{ |
1448 | 1531 | ||
1449 | /* ---- card 0x50 ---------------------------------- */ | 1532 | /* ---- card 0x50 ---------------------------------- */ |
1450 | .name = "Hauppauge WinTV PVR", | 1533 | .name = "Hauppauge WinTV PVR", |
1451 | .video_inputs = 4, | 1534 | .video_inputs = 4, |
1452 | .audio_inputs = 1, | 1535 | .audio_inputs = 1, |
1453 | .tuner = 0, | 1536 | .tuner = 0, |
1454 | .svhs = 2, | 1537 | .svhs = 2, |
1455 | .muxsel = { 2, 0, 1, 1}, | 1538 | .muxsel = { 2, 0, 1, 1}, |
1456 | .needs_tvaudio = 1, | 1539 | .needs_tvaudio = 1, |
1457 | .pll = PLL_28, | 1540 | .pll = PLL_28, |
1458 | .tuner_type = -1, | 1541 | .tuner_type = -1, |
1542 | .tuner_addr = ADDR_UNSET, | ||
1459 | 1543 | ||
1460 | .gpiomask = 7, | 1544 | .gpiomask = 7, |
1461 | .audiomux = {7}, | 1545 | .audiomux = {7}, |
@@ -1471,6 +1555,7 @@ struct tvcard bttv_tvcards[] = { | |||
1471 | .no_msp34xx = 1, | 1555 | .no_msp34xx = 1, |
1472 | .pll = PLL_28, | 1556 | .pll = PLL_28, |
1473 | .tuner_type = TUNER_PHILIPS_NTSC_M, | 1557 | .tuner_type = TUNER_PHILIPS_NTSC_M, |
1558 | .tuner_addr = ADDR_UNSET, | ||
1474 | .audio_hook = gvbctv5pci_audio, | 1559 | .audio_hook = gvbctv5pci_audio, |
1475 | .has_radio = 1, | 1560 | .has_radio = 1, |
1476 | },{ | 1561 | },{ |
@@ -1482,9 +1567,10 @@ struct tvcard bttv_tvcards[] = { | |||
1482 | .muxsel = { 3, 2, 0, 1 }, | 1567 | .muxsel = { 3, 2, 0, 1 }, |
1483 | .pll = PLL_28, | 1568 | .pll = PLL_28, |
1484 | .tuner_type = -1, | 1569 | .tuner_type = -1, |
1485 | .no_msp34xx = 1, | 1570 | .tuner_addr = ADDR_UNSET, |
1486 | .no_tda9875 = 1, | 1571 | .no_msp34xx = 1, |
1487 | .no_tda7432 = 1, | 1572 | .no_tda9875 = 1, |
1573 | .no_tda7432 = 1, | ||
1488 | },{ | 1574 | },{ |
1489 | .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */ | 1575 | .name = "Osprey 100/150 (848)", /* 0x04-54C0-C1 & older boards */ |
1490 | .video_inputs = 3, | 1576 | .video_inputs = 3, |
@@ -1494,9 +1580,10 @@ struct tvcard bttv_tvcards[] = { | |||
1494 | .muxsel = { 2, 3, 1 }, | 1580 | .muxsel = { 2, 3, 1 }, |
1495 | .pll = PLL_28, | 1581 | .pll = PLL_28, |
1496 | .tuner_type = -1, | 1582 | .tuner_type = -1, |
1497 | .no_msp34xx = 1, | 1583 | .tuner_addr = ADDR_UNSET, |
1498 | .no_tda9875 = 1, | 1584 | .no_msp34xx = 1, |
1499 | .no_tda7432 = 1, | 1585 | .no_tda9875 = 1, |
1586 | .no_tda7432 = 1, | ||
1500 | },{ | 1587 | },{ |
1501 | 1588 | ||
1502 | /* ---- card 0x54 ---------------------------------- */ | 1589 | /* ---- card 0x54 ---------------------------------- */ |
@@ -1508,9 +1595,10 @@ struct tvcard bttv_tvcards[] = { | |||
1508 | .muxsel = { 3, 1 }, | 1595 | .muxsel = { 3, 1 }, |
1509 | .pll = PLL_28, | 1596 | .pll = PLL_28, |
1510 | .tuner_type = -1, | 1597 | .tuner_type = -1, |
1511 | .no_msp34xx = 1, | 1598 | .tuner_addr = ADDR_UNSET, |
1512 | .no_tda9875 = 1, | 1599 | .no_msp34xx = 1, |
1513 | .no_tda7432 = 1, | 1600 | .no_tda9875 = 1, |
1601 | .no_tda7432 = 1, | ||
1514 | },{ | 1602 | },{ |
1515 | .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */ | 1603 | .name = "Osprey 101/151", /* 0x1(4|5)-0004-C4 */ |
1516 | .video_inputs = 1, | 1604 | .video_inputs = 1, |
@@ -1520,9 +1608,10 @@ struct tvcard bttv_tvcards[] = { | |||
1520 | .muxsel = { 0 }, | 1608 | .muxsel = { 0 }, |
1521 | .pll = PLL_28, | 1609 | .pll = PLL_28, |
1522 | .tuner_type = -1, | 1610 | .tuner_type = -1, |
1523 | .no_msp34xx = 1, | 1611 | .tuner_addr = ADDR_UNSET, |
1524 | .no_tda9875 = 1, | 1612 | .no_msp34xx = 1, |
1525 | .no_tda7432 = 1, | 1613 | .no_tda9875 = 1, |
1614 | .no_tda7432 = 1, | ||
1526 | },{ | 1615 | },{ |
1527 | .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */ | 1616 | .name = "Osprey 101/151 w/ svid", /* 0x(16|17|20)-00C4-C1 */ |
1528 | .video_inputs = 2, | 1617 | .video_inputs = 2, |
@@ -1532,9 +1621,10 @@ struct tvcard bttv_tvcards[] = { | |||
1532 | .muxsel = { 0, 1 }, | 1621 | .muxsel = { 0, 1 }, |
1533 | .pll = PLL_28, | 1622 | .pll = PLL_28, |
1534 | .tuner_type = -1, | 1623 | .tuner_type = -1, |
1535 | .no_msp34xx = 1, | 1624 | .tuner_addr = ADDR_UNSET, |
1536 | .no_tda9875 = 1, | 1625 | .no_msp34xx = 1, |
1537 | .no_tda7432 = 1, | 1626 | .no_tda9875 = 1, |
1627 | .no_tda7432 = 1, | ||
1538 | },{ | 1628 | },{ |
1539 | .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */ | 1629 | .name = "Osprey 200/201/250/251", /* 0x1(8|9|E|F)-0004-C4 */ |
1540 | .video_inputs = 1, | 1630 | .video_inputs = 1, |
@@ -1543,10 +1633,11 @@ struct tvcard bttv_tvcards[] = { | |||
1543 | .svhs = -1, | 1633 | .svhs = -1, |
1544 | .muxsel = { 0 }, | 1634 | .muxsel = { 0 }, |
1545 | .pll = PLL_28, | 1635 | .pll = PLL_28, |
1546 | .tuner_type = -1, | 1636 | .tuner_type = UNSET, |
1547 | .no_msp34xx = 1, | 1637 | .tuner_addr = ADDR_UNSET, |
1548 | .no_tda9875 = 1, | 1638 | .no_msp34xx = 1, |
1549 | .no_tda7432 = 1, | 1639 | .no_tda9875 = 1, |
1640 | .no_tda7432 = 1, | ||
1550 | },{ | 1641 | },{ |
1551 | 1642 | ||
1552 | /* ---- card 0x58 ---------------------------------- */ | 1643 | /* ---- card 0x58 ---------------------------------- */ |
@@ -1557,10 +1648,11 @@ struct tvcard bttv_tvcards[] = { | |||
1557 | .svhs = 1, | 1648 | .svhs = 1, |
1558 | .muxsel = { 0, 1 }, | 1649 | .muxsel = { 0, 1 }, |
1559 | .pll = PLL_28, | 1650 | .pll = PLL_28, |
1560 | .tuner_type = -1, | 1651 | .tuner_type = UNSET, |
1561 | .no_msp34xx = 1, | 1652 | .tuner_addr = ADDR_UNSET, |
1562 | .no_tda9875 = 1, | 1653 | .no_msp34xx = 1, |
1563 | .no_tda7432 = 1, | 1654 | .no_tda9875 = 1, |
1655 | .no_tda7432 = 1, | ||
1564 | },{ | 1656 | },{ |
1565 | .name = "Osprey 210/220", /* 0x1(A|B)-04C0-C1 */ | 1657 | .name = "Osprey 210/220", /* 0x1(A|B)-04C0-C1 */ |
1566 | .video_inputs = 2, | 1658 | .video_inputs = 2, |
@@ -1569,10 +1661,11 @@ struct tvcard bttv_tvcards[] = { | |||
1569 | .svhs = 1, | 1661 | .svhs = 1, |
1570 | .muxsel = { 2, 3 }, | 1662 | .muxsel = { 2, 3 }, |
1571 | .pll = PLL_28, | 1663 | .pll = PLL_28, |
1572 | .tuner_type = -1, | 1664 | .tuner_type = UNSET, |
1573 | .no_msp34xx = 1, | 1665 | .tuner_addr = ADDR_UNSET, |
1574 | .no_tda9875 = 1, | 1666 | .no_msp34xx = 1, |
1575 | .no_tda7432 = 1, | 1667 | .no_tda9875 = 1, |
1668 | .no_tda7432 = 1, | ||
1576 | },{ | 1669 | },{ |
1577 | .name = "Osprey 500", /* 500 */ | 1670 | .name = "Osprey 500", /* 500 */ |
1578 | .video_inputs = 2, | 1671 | .video_inputs = 2, |
@@ -1582,19 +1675,21 @@ struct tvcard bttv_tvcards[] = { | |||
1582 | .muxsel = { 2, 3 }, | 1675 | .muxsel = { 2, 3 }, |
1583 | .pll = PLL_28, | 1676 | .pll = PLL_28, |
1584 | .tuner_type = -1, | 1677 | .tuner_type = -1, |
1585 | .no_msp34xx = 1, | 1678 | .tuner_addr = ADDR_UNSET, |
1586 | .no_tda9875 = 1, | 1679 | .no_msp34xx = 1, |
1587 | .no_tda7432 = 1, | 1680 | .no_tda9875 = 1, |
1681 | .no_tda7432 = 1, | ||
1588 | },{ | 1682 | },{ |
1589 | .name = "Osprey 540", /* 540 */ | 1683 | .name = "Osprey 540", /* 540 */ |
1590 | .video_inputs = 4, | 1684 | .video_inputs = 4, |
1591 | .audio_inputs = 1, | 1685 | .audio_inputs = 1, |
1592 | .tuner = -1, | 1686 | .tuner = -1, |
1593 | .pll = PLL_28, | 1687 | .pll = PLL_28, |
1594 | .tuner_type = -1, | 1688 | .tuner_type = -1, |
1595 | .no_msp34xx = 1, | 1689 | .tuner_addr = ADDR_UNSET, |
1596 | .no_tda9875 = 1, | 1690 | .no_msp34xx = 1, |
1597 | .no_tda7432 = 1, | 1691 | .no_tda9875 = 1, |
1692 | .no_tda7432 = 1, | ||
1598 | },{ | 1693 | },{ |
1599 | 1694 | ||
1600 | /* ---- card 0x5C ---------------------------------- */ | 1695 | /* ---- card 0x5C ---------------------------------- */ |
@@ -1605,10 +1700,11 @@ struct tvcard bttv_tvcards[] = { | |||
1605 | .svhs = 1, | 1700 | .svhs = 1, |
1606 | .muxsel = { 2, 3 }, | 1701 | .muxsel = { 2, 3 }, |
1607 | .pll = PLL_28, | 1702 | .pll = PLL_28, |
1608 | .tuner_type = -1, | 1703 | .tuner_type = UNSET, |
1609 | .no_msp34xx = 1, | 1704 | .tuner_addr = ADDR_UNSET, |
1610 | .no_tda9875 = 1, | 1705 | .no_msp34xx = 1, |
1611 | .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */ | 1706 | .no_tda9875 = 1, |
1707 | .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */ | ||
1612 | },{ | 1708 | },{ |
1613 | /* M G Berberich <berberic@forwiss.uni-passau.de> */ | 1709 | /* M G Berberich <berberic@forwiss.uni-passau.de> */ |
1614 | .name = "IDS Eagle", | 1710 | .name = "IDS Eagle", |
@@ -1616,6 +1712,7 @@ struct tvcard bttv_tvcards[] = { | |||
1616 | .audio_inputs = 0, | 1712 | .audio_inputs = 0, |
1617 | .tuner = -1, | 1713 | .tuner = -1, |
1618 | .tuner_type = -1, | 1714 | .tuner_type = -1, |
1715 | .tuner_addr = ADDR_UNSET, | ||
1619 | .svhs = -1, | 1716 | .svhs = -1, |
1620 | .gpiomask = 0, | 1717 | .gpiomask = 0, |
1621 | .muxsel = { 0, 1, 2, 3 }, | 1718 | .muxsel = { 0, 1, 2, 3 }, |
@@ -1630,6 +1727,7 @@ struct tvcard bttv_tvcards[] = { | |||
1630 | .svhs = 1, | 1727 | .svhs = 1, |
1631 | .tuner = -1, | 1728 | .tuner = -1, |
1632 | .tuner_type = -1, | 1729 | .tuner_type = -1, |
1730 | .tuner_addr = ADDR_UNSET, | ||
1633 | .no_msp34xx = 1, | 1731 | .no_msp34xx = 1, |
1634 | .no_tda9875 = 1, | 1732 | .no_tda9875 = 1, |
1635 | .no_tda7432 = 1, | 1733 | .no_tda7432 = 1, |
@@ -1641,38 +1739,40 @@ struct tvcard bttv_tvcards[] = { | |||
1641 | .no_gpioirq = 1, | 1739 | .no_gpioirq = 1, |
1642 | .has_dvb = 1, | 1740 | .has_dvb = 1, |
1643 | },{ | 1741 | },{ |
1644 | .name = "Formac ProTV II (bt878)", | 1742 | .name = "Formac ProTV II (bt878)", |
1645 | .video_inputs = 4, | 1743 | .video_inputs = 4, |
1646 | .audio_inputs = 1, | 1744 | .audio_inputs = 1, |
1647 | .tuner = 0, | 1745 | .tuner = 0, |
1648 | .svhs = 3, | 1746 | .svhs = 3, |
1649 | .gpiomask = 2, | 1747 | .gpiomask = 2, |
1650 | // TV, Comp1, Composite over SVID con, SVID | 1748 | /* TV, Comp1, Composite over SVID con, SVID */ |
1651 | .muxsel = { 2, 3, 1, 1}, | 1749 | .muxsel = { 2, 3, 1, 1}, |
1652 | .audiomux = { 2, 2, 0, 0, 0 }, | 1750 | .audiomux = { 2, 2, 0, 0, 0 }, |
1653 | .pll = PLL_28, | 1751 | .pll = PLL_28, |
1654 | .has_radio = 1, | 1752 | .has_radio = 1, |
1655 | .tuner_type = TUNER_PHILIPS_PAL, | 1753 | .tuner_type = TUNER_PHILIPS_PAL, |
1656 | /* sound routing: | 1754 | .tuner_addr = ADDR_UNSET, |
1657 | GPIO=0x00,0x01,0x03: mute (?) | 1755 | /* sound routing: |
1658 | 0x02: both TV and radio (tuner: FM1216/I) | 1756 | GPIO=0x00,0x01,0x03: mute (?) |
1659 | The card has onboard audio connectors labeled "cdrom" and "board", | 1757 | 0x02: both TV and radio (tuner: FM1216/I) |
1660 | not soldered here, though unknown wiring. | 1758 | The card has onboard audio connectors labeled "cdrom" and "board", |
1661 | Card lacks: external audio in, pci subsystem id. | 1759 | not soldered here, though unknown wiring. |
1662 | */ | 1760 | Card lacks: external audio in, pci subsystem id. |
1761 | */ | ||
1663 | },{ | 1762 | },{ |
1664 | 1763 | ||
1665 | /* ---- card 0x60 ---------------------------------- */ | 1764 | /* ---- card 0x60 ---------------------------------- */ |
1666 | .name = "MachTV", | 1765 | .name = "MachTV", |
1667 | .video_inputs = 3, | 1766 | .video_inputs = 3, |
1668 | .audio_inputs = 1, | 1767 | .audio_inputs = 1, |
1669 | .tuner = 0, | 1768 | .tuner = 0, |
1670 | .svhs = -1, | 1769 | .svhs = -1, |
1671 | .gpiomask = 7, | 1770 | .gpiomask = 7, |
1672 | .muxsel = { 2, 3, 1, 1}, | 1771 | .muxsel = { 2, 3, 1, 1}, |
1673 | .audiomux = { 0, 1, 2, 3, 4}, | 1772 | .audiomux = { 0, 1, 2, 3, 4}, |
1674 | .needs_tvaudio = 1, | 1773 | .needs_tvaudio = 1, |
1675 | .tuner_type = 5, | 1774 | .tuner_type = 5, |
1775 | .tuner_addr = ADDR_UNSET, | ||
1676 | .pll = 1, | 1776 | .pll = 1, |
1677 | },{ | 1777 | },{ |
1678 | .name = "Euresys Picolo", | 1778 | .name = "Euresys Picolo", |
@@ -1686,6 +1786,8 @@ struct tvcard bttv_tvcards[] = { | |||
1686 | .no_tda7432 = 1, | 1786 | .no_tda7432 = 1, |
1687 | .muxsel = { 2, 0, 1}, | 1787 | .muxsel = { 2, 0, 1}, |
1688 | .pll = PLL_28, | 1788 | .pll = PLL_28, |
1789 | .tuner_type = UNSET, | ||
1790 | .tuner_addr = ADDR_UNSET, | ||
1689 | },{ | 1791 | },{ |
1690 | /* Luc Van Hoeylandt <luc@e-magic.be> */ | 1792 | /* Luc Van Hoeylandt <luc@e-magic.be> */ |
1691 | .name = "ProVideo PV150", /* 0x4f */ | 1793 | .name = "ProVideo PV150", /* 0x4f */ |
@@ -1699,7 +1801,8 @@ struct tvcard bttv_tvcards[] = { | |||
1699 | .needs_tvaudio = 0, | 1801 | .needs_tvaudio = 0, |
1700 | .no_msp34xx = 1, | 1802 | .no_msp34xx = 1, |
1701 | .pll = PLL_28, | 1803 | .pll = PLL_28, |
1702 | .tuner_type = -1, | 1804 | .tuner_type = UNSET, |
1805 | .tuner_addr = ADDR_UNSET, | ||
1703 | },{ | 1806 | },{ |
1704 | /* Hiroshi Takekawa <sian@big.or.jp> */ | 1807 | /* Hiroshi Takekawa <sian@big.or.jp> */ |
1705 | /* This card lacks subsystem ID */ | 1808 | /* This card lacks subsystem ID */ |
@@ -1716,78 +1819,85 @@ struct tvcard bttv_tvcards[] = { | |||
1716 | .no_msp34xx = 1, | 1819 | .no_msp34xx = 1, |
1717 | .pll = PLL_28, | 1820 | .pll = PLL_28, |
1718 | .tuner_type = 2, | 1821 | .tuner_type = 2, |
1822 | .tuner_addr = ADDR_UNSET, | ||
1719 | .audio_hook = adtvk503_audio, | 1823 | .audio_hook = adtvk503_audio, |
1720 | },{ | 1824 | },{ |
1721 | 1825 | ||
1722 | /* ---- card 0x64 ---------------------------------- */ | 1826 | /* ---- card 0x64 ---------------------------------- */ |
1723 | .name = "Hercules Smart TV Stereo", | 1827 | .name = "Hercules Smart TV Stereo", |
1724 | .video_inputs = 4, | 1828 | .video_inputs = 4, |
1725 | .audio_inputs = 1, | 1829 | .audio_inputs = 1, |
1726 | .tuner = 0, | 1830 | .tuner = 0, |
1727 | .svhs = 2, | 1831 | .svhs = 2, |
1728 | .gpiomask = 0x00, | 1832 | .gpiomask = 0x00, |
1729 | .muxsel = { 2, 3, 1, 1 }, | 1833 | .muxsel = { 2, 3, 1, 1 }, |
1730 | .needs_tvaudio = 1, | 1834 | .needs_tvaudio = 1, |
1731 | .no_msp34xx = 1, | 1835 | .no_msp34xx = 1, |
1732 | .pll = PLL_28, | 1836 | .pll = PLL_28, |
1733 | .tuner_type = 5, | 1837 | .tuner_type = 5, |
1838 | .tuner_addr = ADDR_UNSET, | ||
1734 | /* Notes: | 1839 | /* Notes: |
1735 | - card lacks subsystem ID | 1840 | - card lacks subsystem ID |
1736 | - stereo variant w/ daughter board with tda9874a @0xb0 | 1841 | - stereo variant w/ daughter board with tda9874a @0xb0 |
1737 | - Audio Routing: | 1842 | - Audio Routing: |
1738 | always from tda9874 independent of GPIO (?) | 1843 | always from tda9874 independent of GPIO (?) |
1739 | external line in: unknown | 1844 | external line in: unknown |
1740 | - Other chips: em78p156elp @ 0x96 (probably IR remote control) | 1845 | - Other chips: em78p156elp @ 0x96 (probably IR remote control) |
1741 | hef4053 (instead 4052) for unknown function | 1846 | hef4053 (instead 4052) for unknown function |
1742 | */ | 1847 | */ |
1743 | },{ | 1848 | },{ |
1744 | .name = "Pace TV & Radio Card", | 1849 | .name = "Pace TV & Radio Card", |
1745 | .video_inputs = 4, | 1850 | .video_inputs = 4, |
1746 | .audio_inputs = 1, | 1851 | .audio_inputs = 1, |
1747 | .tuner = 0, | 1852 | .tuner = 0, |
1748 | .svhs = 2, | 1853 | .svhs = 2, |
1749 | .muxsel = { 2, 3, 1, 1}, // Tuner, CVid, SVid, CVid over SVid connector | 1854 | .muxsel = { 2, 3, 1, 1}, /* Tuner, CVid, SVid, CVid over SVid connector */ |
1750 | .gpiomask = 0, | 1855 | .gpiomask = 0, |
1751 | .no_tda9875 = 1, | 1856 | .no_tda9875 = 1, |
1752 | .no_tda7432 = 1, | 1857 | .no_tda7432 = 1, |
1753 | .tuner_type = 1, | 1858 | .tuner_type = 1, |
1754 | .has_radio = 1, | 1859 | .tuner_addr = ADDR_UNSET, |
1755 | .pll = PLL_28, | 1860 | .has_radio = 1, |
1756 | /* Bt878, Bt832, FI1246 tuner; no pci subsystem id | 1861 | .pll = PLL_28, |
1757 | only internal line out: (4pin header) RGGL | 1862 | /* Bt878, Bt832, FI1246 tuner; no pci subsystem id |
1758 | Radio must be decoded by msp3410d (not routed through)*/ | 1863 | only internal line out: (4pin header) RGGL |
1759 | // .digital_mode = DIGITAL_MODE_CAMERA, // todo! | 1864 | Radio must be decoded by msp3410d (not routed through)*/ |
1760 | },{ | 1865 | /* |
1761 | /* Chris Willing <chris@vislab.usyd.edu.au> */ | 1866 | .digital_mode = DIGITAL_MODE_CAMERA, todo! |
1762 | .name = "IVC-200", | 1867 | */ |
1763 | .video_inputs = 1, | 1868 | },{ |
1764 | .audio_inputs = 0, | 1869 | /* Chris Willing <chris@vislab.usyd.edu.au> */ |
1765 | .tuner = -1, | 1870 | .name = "IVC-200", |
1766 | .tuner_type = -1, | 1871 | .video_inputs = 1, |
1767 | .svhs = -1, | 1872 | .audio_inputs = 0, |
1768 | .gpiomask = 0xdf, | 1873 | .tuner = -1, |
1769 | .muxsel = { 2 }, | 1874 | .tuner_type = -1, |
1770 | .pll = PLL_28, | 1875 | .tuner_addr = ADDR_UNSET, |
1876 | .svhs = -1, | ||
1877 | .gpiomask = 0xdf, | ||
1878 | .muxsel = { 2 }, | ||
1879 | .pll = PLL_28, | ||
1771 | },{ | 1880 | },{ |
1772 | .name = "Grand X-Guard / Trust 814PCI", | 1881 | .name = "Grand X-Guard / Trust 814PCI", |
1773 | .video_inputs = 16, | 1882 | .video_inputs = 16, |
1774 | .audio_inputs = 0, | 1883 | .audio_inputs = 0, |
1775 | .tuner = -1, | 1884 | .tuner = -1, |
1776 | .svhs = -1, | 1885 | .svhs = -1, |
1777 | .tuner_type = 4, | 1886 | .tuner_type = 4, |
1778 | .gpiomask2 = 0xff, | 1887 | .tuner_addr = ADDR_UNSET, |
1888 | .gpiomask2 = 0xff, | ||
1779 | .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, | 1889 | .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, |
1780 | .muxsel_hook = xguard_muxsel, | 1890 | .muxsel_hook = xguard_muxsel, |
1781 | .no_msp34xx = 1, | 1891 | .no_msp34xx = 1, |
1782 | .no_tda9875 = 1, | 1892 | .no_tda9875 = 1, |
1783 | .no_tda7432 = 1, | 1893 | .no_tda7432 = 1, |
1784 | .pll = PLL_28, | 1894 | .pll = PLL_28, |
1785 | },{ | 1895 | },{ |
1786 | 1896 | ||
1787 | /* ---- card 0x68 ---------------------------------- */ | 1897 | /* ---- card 0x68 ---------------------------------- */ |
1788 | .name = "Nebula Electronics DigiTV", | 1898 | .name = "Nebula Electronics DigiTV", |
1789 | .video_inputs = 1, | 1899 | .video_inputs = 1, |
1790 | .tuner = -1, | 1900 | .tuner = -1, |
1791 | .svhs = -1, | 1901 | .svhs = -1, |
1792 | .muxsel = { 2, 3, 1, 0}, | 1902 | .muxsel = { 2, 3, 1, 0}, |
1793 | .no_msp34xx = 1, | 1903 | .no_msp34xx = 1, |
@@ -1795,22 +1905,24 @@ struct tvcard bttv_tvcards[] = { | |||
1795 | .no_tda7432 = 1, | 1905 | .no_tda7432 = 1, |
1796 | .pll = PLL_28, | 1906 | .pll = PLL_28, |
1797 | .tuner_type = -1, | 1907 | .tuner_type = -1, |
1908 | .tuner_addr = ADDR_UNSET, | ||
1798 | .has_dvb = 1, | 1909 | .has_dvb = 1, |
1799 | .no_gpioirq = 1, | 1910 | .no_gpioirq = 1, |
1800 | },{ | 1911 | },{ |
1801 | /* Jorge Boncompte - DTI2 <jorge@dti2.net> */ | 1912 | /* Jorge Boncompte - DTI2 <jorge@dti2.net> */ |
1802 | .name = "ProVideo PV143", | 1913 | .name = "ProVideo PV143", |
1803 | .video_inputs = 4, | 1914 | .video_inputs = 4, |
1804 | .audio_inputs = 0, | 1915 | .audio_inputs = 0, |
1805 | .tuner = -1, | 1916 | .tuner = -1, |
1806 | .svhs = -1, | 1917 | .svhs = -1, |
1807 | .gpiomask = 0, | 1918 | .gpiomask = 0, |
1808 | .muxsel = { 2, 3, 1, 0 }, | 1919 | .muxsel = { 2, 3, 1, 0 }, |
1809 | .audiomux = { 0 }, | 1920 | .audiomux = { 0 }, |
1810 | .needs_tvaudio = 0, | 1921 | .needs_tvaudio = 0, |
1811 | .no_msp34xx = 1, | 1922 | .no_msp34xx = 1, |
1812 | .pll = PLL_28, | 1923 | .pll = PLL_28, |
1813 | .tuner_type = -1, | 1924 | .tuner_type = -1, |
1925 | .tuner_addr = ADDR_UNSET, | ||
1814 | },{ | 1926 | },{ |
1815 | /* M.Klahr@phytec.de */ | 1927 | /* M.Klahr@phytec.de */ |
1816 | .name = "PHYTEC VD-009-X1 MiniDIN (bt878)", | 1928 | .name = "PHYTEC VD-009-X1 MiniDIN (bt878)", |
@@ -1824,6 +1936,7 @@ struct tvcard bttv_tvcards[] = { | |||
1824 | .needs_tvaudio = 1, | 1936 | .needs_tvaudio = 1, |
1825 | .pll = PLL_28, | 1937 | .pll = PLL_28, |
1826 | .tuner_type = -1, | 1938 | .tuner_type = -1, |
1939 | .tuner_addr = ADDR_UNSET, | ||
1827 | },{ | 1940 | },{ |
1828 | .name = "PHYTEC VD-009-X1 Combi (bt878)", | 1941 | .name = "PHYTEC VD-009-X1 Combi (bt878)", |
1829 | .video_inputs = 4, | 1942 | .video_inputs = 4, |
@@ -1836,6 +1949,7 @@ struct tvcard bttv_tvcards[] = { | |||
1836 | .needs_tvaudio = 1, | 1949 | .needs_tvaudio = 1, |
1837 | .pll = PLL_28, | 1950 | .pll = PLL_28, |
1838 | .tuner_type = -1, | 1951 | .tuner_type = -1, |
1952 | .tuner_addr = ADDR_UNSET, | ||
1839 | },{ | 1953 | },{ |
1840 | 1954 | ||
1841 | /* ---- card 0x6c ---------------------------------- */ | 1955 | /* ---- card 0x6c ---------------------------------- */ |
@@ -1846,13 +1960,14 @@ struct tvcard bttv_tvcards[] = { | |||
1846 | .svhs = 9, | 1960 | .svhs = 9, |
1847 | .gpiomask = 0x00, | 1961 | .gpiomask = 0x00, |
1848 | .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio | 1962 | .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio |
1849 | via the upper nibble of muxsel. here: used for | 1963 | via the upper nibble of muxsel. here: used for |
1850 | xternal video-mux */ | 1964 | xternal video-mux */ |
1851 | .muxsel = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 }, | 1965 | .muxsel = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x00 }, |
1852 | .audiomux = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */ | 1966 | .audiomux = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */ |
1853 | .needs_tvaudio = 1, | 1967 | .needs_tvaudio = 1, |
1854 | .pll = PLL_28, | 1968 | .pll = PLL_28, |
1855 | .tuner_type = -1, | 1969 | .tuner_type = -1, |
1970 | .tuner_addr = ADDR_UNSET, | ||
1856 | },{ | 1971 | },{ |
1857 | .name = "PHYTEC VD-009 Combi (bt878)", | 1972 | .name = "PHYTEC VD-009 Combi (bt878)", |
1858 | .video_inputs = 10, | 1973 | .video_inputs = 10, |
@@ -1861,23 +1976,25 @@ struct tvcard bttv_tvcards[] = { | |||
1861 | .svhs = 9, | 1976 | .svhs = 9, |
1862 | .gpiomask = 0x00, | 1977 | .gpiomask = 0x00, |
1863 | .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio | 1978 | .gpiomask2 = 0x03, /* gpiomask2 defines the bits used to switch audio |
1864 | via the upper nibble of muxsel. here: used for | 1979 | via the upper nibble of muxsel. here: used for |
1865 | xternal video-mux */ | 1980 | xternal video-mux */ |
1866 | .muxsel = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 }, | 1981 | .muxsel = { 0x02, 0x12, 0x22, 0x32, 0x03, 0x13, 0x23, 0x33, 0x01, 0x01 }, |
1867 | .audiomux = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */ | 1982 | .audiomux = { 0, 0, 0, 0, 0, 0 }, /* card has no audio */ |
1868 | .needs_tvaudio = 1, | 1983 | .needs_tvaudio = 1, |
1869 | .pll = PLL_28, | 1984 | .pll = PLL_28, |
1870 | .tuner_type = -1, | 1985 | .tuner_type = -1, |
1986 | .tuner_addr = ADDR_UNSET, | ||
1871 | },{ | 1987 | },{ |
1872 | .name = "IVC-100", | 1988 | .name = "IVC-100", |
1873 | .video_inputs = 4, | 1989 | .video_inputs = 4, |
1874 | .audio_inputs = 0, | 1990 | .audio_inputs = 0, |
1875 | .tuner = -1, | 1991 | .tuner = -1, |
1876 | .tuner_type = -1, | 1992 | .tuner_type = -1, |
1877 | .svhs = -1, | 1993 | .tuner_addr = ADDR_UNSET, |
1878 | .gpiomask = 0xdf, | 1994 | .svhs = -1, |
1879 | .muxsel = { 2, 3, 1, 0 }, | 1995 | .gpiomask = 0xdf, |
1880 | .pll = PLL_28, | 1996 | .muxsel = { 2, 3, 1, 0 }, |
1997 | .pll = PLL_28, | ||
1881 | },{ | 1998 | },{ |
1882 | /* IVC-120G - Alan Garfield <alan@fromorbit.com> */ | 1999 | /* IVC-120G - Alan Garfield <alan@fromorbit.com> */ |
1883 | .name = "IVC-120G", | 2000 | .name = "IVC-120G", |
@@ -1885,6 +2002,7 @@ struct tvcard bttv_tvcards[] = { | |||
1885 | .audio_inputs = 0, /* card has no audio */ | 2002 | .audio_inputs = 0, /* card has no audio */ |
1886 | .tuner = -1, /* card has no tuner */ | 2003 | .tuner = -1, /* card has no tuner */ |
1887 | .tuner_type = -1, | 2004 | .tuner_type = -1, |
2005 | .tuner_addr = ADDR_UNSET, | ||
1888 | .svhs = -1, /* card has no svhs */ | 2006 | .svhs = -1, /* card has no svhs */ |
1889 | .needs_tvaudio = 0, | 2007 | .needs_tvaudio = 0, |
1890 | .no_msp34xx = 1, | 2008 | .no_msp34xx = 1, |
@@ -1892,7 +2010,7 @@ struct tvcard bttv_tvcards[] = { | |||
1892 | .no_tda7432 = 1, | 2010 | .no_tda7432 = 1, |
1893 | .gpiomask = 0x00, | 2011 | .gpiomask = 0x00, |
1894 | .muxsel = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, | 2012 | .muxsel = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, |
1895 | 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }, | 2013 | 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }, |
1896 | .muxsel_hook = ivc120_muxsel, | 2014 | .muxsel_hook = ivc120_muxsel, |
1897 | .pll = PLL_28, | 2015 | .pll = PLL_28, |
1898 | },{ | 2016 | },{ |
@@ -1905,6 +2023,7 @@ struct tvcard bttv_tvcards[] = { | |||
1905 | .svhs = 2, | 2023 | .svhs = 2, |
1906 | .muxsel = { 2, 3, 1, 0}, | 2024 | .muxsel = { 2, 3, 1, 0}, |
1907 | .tuner_type = TUNER_PHILIPS_ATSC, | 2025 | .tuner_type = TUNER_PHILIPS_ATSC, |
2026 | .tuner_addr = ADDR_UNSET, | ||
1908 | .has_dvb = 1, | 2027 | .has_dvb = 1, |
1909 | },{ | 2028 | },{ |
1910 | .name = "Twinhan DST + clones", | 2029 | .name = "Twinhan DST + clones", |
@@ -1912,19 +2031,21 @@ struct tvcard bttv_tvcards[] = { | |||
1912 | .no_tda9875 = 1, | 2031 | .no_tda9875 = 1, |
1913 | .no_tda7432 = 1, | 2032 | .no_tda7432 = 1, |
1914 | .tuner_type = TUNER_ABSENT, | 2033 | .tuner_type = TUNER_ABSENT, |
2034 | .tuner_addr = ADDR_UNSET, | ||
1915 | .no_video = 1, | 2035 | .no_video = 1, |
1916 | .has_dvb = 1, | 2036 | .has_dvb = 1, |
1917 | },{ | 2037 | },{ |
1918 | .name = "Winfast VC100", | 2038 | .name = "Winfast VC100", |
1919 | .video_inputs = 3, | 2039 | .video_inputs = 3, |
1920 | .audio_inputs = 0, | 2040 | .audio_inputs = 0, |
1921 | .svhs = 1, | 2041 | .svhs = 1, |
1922 | .tuner = -1, // no tuner | 2042 | .tuner = -1, |
1923 | .muxsel = { 3, 1, 1, 3}, // Vid In, SVid In, Vid over SVid in connector | 2043 | .muxsel = { 3, 1, 1, 3}, /* Vid In, SVid In, Vid over SVid in connector */ |
1924 | .no_msp34xx = 1, | 2044 | .no_msp34xx = 1, |
1925 | .no_tda9875 = 1, | 2045 | .no_tda9875 = 1, |
1926 | .no_tda7432 = 1, | 2046 | .no_tda7432 = 1, |
1927 | .tuner_type = TUNER_ABSENT, | 2047 | .tuner_type = TUNER_ABSENT, |
2048 | .tuner_addr = ADDR_UNSET, | ||
1928 | .pll = PLL_28, | 2049 | .pll = PLL_28, |
1929 | },{ | 2050 | },{ |
1930 | .name = "Teppro TEV-560/InterVision IV-560", | 2051 | .name = "Teppro TEV-560/InterVision IV-560", |
@@ -1937,44 +2058,49 @@ struct tvcard bttv_tvcards[] = { | |||
1937 | .audiomux = { 1, 1, 1, 1, 0}, | 2058 | .audiomux = { 1, 1, 1, 1, 0}, |
1938 | .needs_tvaudio = 1, | 2059 | .needs_tvaudio = 1, |
1939 | .tuner_type = TUNER_PHILIPS_PAL, | 2060 | .tuner_type = TUNER_PHILIPS_PAL, |
2061 | .tuner_addr = ADDR_UNSET, | ||
1940 | .pll = PLL_35, | 2062 | .pll = PLL_35, |
1941 | },{ | 2063 | },{ |
1942 | 2064 | ||
1943 | /* ---- card 0x74 ---------------------------------- */ | 2065 | /* ---- card 0x74 ---------------------------------- */ |
1944 | .name = "SIMUS GVC1100", | 2066 | .name = "SIMUS GVC1100", |
1945 | .video_inputs = 4, | 2067 | .video_inputs = 4, |
1946 | .audio_inputs = 0, | 2068 | .audio_inputs = 0, |
1947 | .tuner = -1, | 2069 | .tuner = -1, |
1948 | .svhs = -1, | 2070 | .svhs = -1, |
1949 | .tuner_type = -1, | 2071 | .tuner_type = -1, |
1950 | .pll = PLL_28, | 2072 | .tuner_addr = ADDR_UNSET, |
1951 | .muxsel = { 2, 2, 2, 2}, | 2073 | .pll = PLL_28, |
1952 | .gpiomask = 0x3F, | 2074 | .muxsel = { 2, 2, 2, 2}, |
2075 | .gpiomask = 0x3F, | ||
1953 | .muxsel_hook = gvc1100_muxsel, | 2076 | .muxsel_hook = gvc1100_muxsel, |
1954 | },{ | 2077 | },{ |
1955 | /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */ | 2078 | /* Carlos Silva r3pek@r3pek.homelinux.org || card 0x75 */ |
1956 | .name = "NGS NGSTV+", | 2079 | .name = "NGS NGSTV+", |
1957 | .video_inputs = 3, | 2080 | .video_inputs = 3, |
1958 | .tuner = 0, | 2081 | .tuner = 0, |
1959 | .svhs = 2, | 2082 | .svhs = 2, |
1960 | .gpiomask = 0x008007, | 2083 | .gpiomask = 0x008007, |
1961 | .muxsel = {2, 3, 0, 0}, | 2084 | .muxsel = {2, 3, 0, 0}, |
1962 | .audiomux = {0, 0, 0, 0, 0x000003, 0}, | 2085 | .audiomux = {0, 0, 0, 0, 0x000003, 0}, |
1963 | .pll = PLL_28, | 2086 | .pll = PLL_28, |
1964 | .tuner_type = TUNER_PHILIPS_PAL, | 2087 | .tuner_type = TUNER_PHILIPS_PAL, |
1965 | .has_remote = 1, | 2088 | .tuner_addr = ADDR_UNSET, |
1966 | },{ | 2089 | .has_remote = 1, |
1967 | /* http://linuxmedialabs.com */ | 2090 | },{ |
1968 | .name = "LMLBT4", | 2091 | /* http://linuxmedialabs.com */ |
1969 | .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ | 2092 | .name = "LMLBT4", |
1970 | .audio_inputs = 0, | 2093 | .video_inputs = 4, /* IN1,IN2,IN3,IN4 */ |
1971 | .tuner = -1, | 2094 | .audio_inputs = 0, |
1972 | .svhs = -1, | 2095 | .tuner = -1, |
1973 | .muxsel = { 2, 3, 1, 0 }, | 2096 | .svhs = -1, |
1974 | .no_msp34xx = 1, | 2097 | .muxsel = { 2, 3, 1, 0 }, |
1975 | .no_tda9875 = 1, | 2098 | .no_msp34xx = 1, |
1976 | .no_tda7432 = 1, | 2099 | .no_tda9875 = 1, |
1977 | .needs_tvaudio = 0, | 2100 | .no_tda7432 = 1, |
2101 | .needs_tvaudio = 0, | ||
2102 | .tuner_type = -1, | ||
2103 | .tuner_addr = ADDR_UNSET, | ||
1978 | },{ | 2104 | },{ |
1979 | /* Helmroos Harri <harri.helmroos@pp.inet.fi> */ | 2105 | /* Helmroos Harri <harri.helmroos@pp.inet.fi> */ |
1980 | .name = "Tekram M205 PRO", | 2106 | .name = "Tekram M205 PRO", |
@@ -1982,6 +2108,7 @@ struct tvcard bttv_tvcards[] = { | |||
1982 | .audio_inputs = 1, | 2108 | .audio_inputs = 1, |
1983 | .tuner = 0, | 2109 | .tuner = 0, |
1984 | .tuner_type = TUNER_PHILIPS_PAL, | 2110 | .tuner_type = TUNER_PHILIPS_PAL, |
2111 | .tuner_addr = ADDR_UNSET, | ||
1985 | .svhs = 2, | 2112 | .svhs = 2, |
1986 | .needs_tvaudio = 0, | 2113 | .needs_tvaudio = 0, |
1987 | .gpiomask = 0x68, | 2114 | .gpiomask = 0x68, |
@@ -2004,6 +2131,7 @@ struct tvcard bttv_tvcards[] = { | |||
2004 | .needs_tvaudio = 0, | 2131 | .needs_tvaudio = 0, |
2005 | .pll = PLL_28, | 2132 | .pll = PLL_28, |
2006 | .tuner_type = TUNER_PHILIPS_PAL, | 2133 | .tuner_type = TUNER_PHILIPS_PAL, |
2134 | .tuner_addr = ADDR_UNSET, | ||
2007 | .has_remote = 1, | 2135 | .has_remote = 1, |
2008 | .has_radio = 1, | 2136 | .has_radio = 1, |
2009 | },{ | 2137 | },{ |
@@ -2026,6 +2154,8 @@ struct tvcard bttv_tvcards[] = { | |||
2026 | .pll = PLL_28, | 2154 | .pll = PLL_28, |
2027 | .needs_tvaudio = 0, | 2155 | .needs_tvaudio = 0, |
2028 | .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ | 2156 | .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ |
2157 | .tuner_type = -1, | ||
2158 | .tuner_addr = ADDR_UNSET, | ||
2029 | },{ | 2159 | },{ |
2030 | /* Spirit TV Tuner from http://spiritmodems.com.au */ | 2160 | /* Spirit TV Tuner from http://spiritmodems.com.au */ |
2031 | /* Stafford Goodsell <surge@goliath.homeunix.org> */ | 2161 | /* Stafford Goodsell <surge@goliath.homeunix.org> */ |
@@ -2038,23 +2168,25 @@ struct tvcard bttv_tvcards[] = { | |||
2038 | .muxsel = { 2, 1, 1 }, | 2168 | .muxsel = { 2, 1, 1 }, |
2039 | .audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00}, | 2169 | .audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00}, |
2040 | .tuner_type = TUNER_TEMIC_PAL, | 2170 | .tuner_type = TUNER_TEMIC_PAL, |
2171 | .tuner_addr = ADDR_UNSET, | ||
2041 | .no_msp34xx = 1, | 2172 | .no_msp34xx = 1, |
2042 | .no_tda9875 = 1, | 2173 | .no_tda9875 = 1, |
2043 | },{ | 2174 | },{ |
2044 | /* Wolfram Joost <wojo@frokaschwei.de> */ | 2175 | /* Wolfram Joost <wojo@frokaschwei.de> */ |
2045 | .name = "AVerMedia AVerTV DVB-T 771", | 2176 | .name = "AVerMedia AVerTV DVB-T 771", |
2046 | .video_inputs = 2, | 2177 | .video_inputs = 2, |
2047 | .svhs = 1, | 2178 | .svhs = 1, |
2048 | .tuner = -1, | 2179 | .tuner = -1, |
2049 | .tuner_type = TUNER_ABSENT, | 2180 | .tuner_type = TUNER_ABSENT, |
2050 | .muxsel = { 3 , 3 }, | 2181 | .tuner_addr = ADDR_UNSET, |
2051 | .no_msp34xx = 1, | 2182 | .muxsel = { 3 , 3 }, |
2052 | .no_tda9875 = 1, | 2183 | .no_msp34xx = 1, |
2053 | .no_tda7432 = 1, | 2184 | .no_tda9875 = 1, |
2054 | .pll = PLL_28, | 2185 | .no_tda7432 = 1, |
2055 | .has_dvb = 1, | 2186 | .pll = PLL_28, |
2056 | .no_gpioirq = 1, | 2187 | .has_dvb = 1, |
2057 | .has_remote = 1, | 2188 | .no_gpioirq = 1, |
2189 | .has_remote = 1, | ||
2058 | },{ | 2190 | },{ |
2059 | /* ---- card 0x7c ---------------------------------- */ | 2191 | /* ---- card 0x7c ---------------------------------- */ |
2060 | /* Matt Jesson <dvb@jesson.eclipse.co.uk> */ | 2192 | /* Matt Jesson <dvb@jesson.eclipse.co.uk> */ |
@@ -2069,6 +2201,7 @@ struct tvcard bttv_tvcards[] = { | |||
2069 | .no_tda7432 = 1, | 2201 | .no_tda7432 = 1, |
2070 | .pll = PLL_28, | 2202 | .pll = PLL_28, |
2071 | .tuner_type = -1, | 2203 | .tuner_type = -1, |
2204 | .tuner_addr = ADDR_UNSET, | ||
2072 | .has_dvb = 1, | 2205 | .has_dvb = 1, |
2073 | .no_gpioirq = 1, | 2206 | .no_gpioirq = 1, |
2074 | .has_remote = 1, | 2207 | .has_remote = 1, |
@@ -2081,12 +2214,13 @@ struct tvcard bttv_tvcards[] = { | |||
2081 | .svhs = -1, | 2214 | .svhs = -1, |
2082 | .gpiomask = 0x0, | 2215 | .gpiomask = 0x0, |
2083 | .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, | 2216 | .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, |
2084 | 3, 3, 3, 3, 3, 3, 3, 3 }, | 2217 | 3, 3, 3, 3, 3, 3, 3, 3 }, |
2085 | .muxsel_hook = sigmaSQ_muxsel, | 2218 | .muxsel_hook = sigmaSQ_muxsel, |
2086 | .audiomux = { 0 }, | 2219 | .audiomux = { 0 }, |
2087 | .no_msp34xx = 1, | 2220 | .no_msp34xx = 1, |
2088 | .pll = PLL_28, | 2221 | .pll = PLL_28, |
2089 | .tuner_type = -1, | 2222 | .tuner_type = -1, |
2223 | .tuner_addr = ADDR_UNSET, | ||
2090 | },{ | 2224 | },{ |
2091 | /* andre.schwarz@matrix-vision.de */ | 2225 | /* andre.schwarz@matrix-vision.de */ |
2092 | .name = "MATRIX Vision Sigma-SLC", | 2226 | .name = "MATRIX Vision Sigma-SLC", |
@@ -2101,6 +2235,7 @@ struct tvcard bttv_tvcards[] = { | |||
2101 | .no_msp34xx = 1, | 2235 | .no_msp34xx = 1, |
2102 | .pll = PLL_28, | 2236 | .pll = PLL_28, |
2103 | .tuner_type = -1, | 2237 | .tuner_type = -1, |
2238 | .tuner_addr = ADDR_UNSET, | ||
2104 | },{ | 2239 | },{ |
2105 | /* BTTV_APAC_VIEWCOMP */ | 2240 | /* BTTV_APAC_VIEWCOMP */ |
2106 | /* Attila Kondoros <attila.kondoros@chello.hu> */ | 2241 | /* Attila Kondoros <attila.kondoros@chello.hu> */ |
@@ -2116,6 +2251,7 @@ struct tvcard bttv_tvcards[] = { | |||
2116 | .needs_tvaudio = 0, | 2251 | .needs_tvaudio = 0, |
2117 | .pll = PLL_28, | 2252 | .pll = PLL_28, |
2118 | .tuner_type = TUNER_PHILIPS_PAL, | 2253 | .tuner_type = TUNER_PHILIPS_PAL, |
2254 | .tuner_addr = ADDR_UNSET, | ||
2119 | .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */ | 2255 | .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */ |
2120 | .has_radio = 1, /* not every card has radio */ | 2256 | .has_radio = 1, /* not every card has radio */ |
2121 | },{ | 2257 | },{ |
@@ -2131,6 +2267,7 @@ struct tvcard bttv_tvcards[] = { | |||
2131 | .no_video = 1, | 2267 | .no_video = 1, |
2132 | .has_dvb = 1, | 2268 | .has_dvb = 1, |
2133 | .tuner_type = -1, | 2269 | .tuner_type = -1, |
2270 | .tuner_addr = ADDR_UNSET, | ||
2134 | },{ | 2271 | },{ |
2135 | /* Steven <photon38@pchome.com.tw> */ | 2272 | /* Steven <photon38@pchome.com.tw> */ |
2136 | .name = "V-Gear MyVCD", | 2273 | .name = "V-Gear MyVCD", |
@@ -2144,62 +2281,65 @@ struct tvcard bttv_tvcards[] = { | |||
2144 | .no_msp34xx = 1, | 2281 | .no_msp34xx = 1, |
2145 | .pll = PLL_28, | 2282 | .pll = PLL_28, |
2146 | .tuner_type = TUNER_PHILIPS_NTSC_M, | 2283 | .tuner_type = TUNER_PHILIPS_NTSC_M, |
2284 | .tuner_addr = ADDR_UNSET, | ||
2147 | .has_radio = 0, | 2285 | .has_radio = 0, |
2148 | // .has_remote = 1, | ||
2149 | },{ | 2286 | },{ |
2150 | /* Rick C <cryptdragoon@gmail.com> */ | 2287 | /* Rick C <cryptdragoon@gmail.com> */ |
2151 | .name = "Super TV Tuner", | 2288 | .name = "Super TV Tuner", |
2152 | .video_inputs = 4, | 2289 | .video_inputs = 4, |
2153 | .audio_inputs = 1, | 2290 | .audio_inputs = 1, |
2154 | .tuner = 0, | 2291 | .tuner = 0, |
2155 | .svhs = 2, | 2292 | .svhs = 2, |
2156 | .muxsel = { 2, 3, 1, 0}, | 2293 | .muxsel = { 2, 3, 1, 0}, |
2157 | .tuner_type = TUNER_PHILIPS_NTSC, | 2294 | .tuner_type = TUNER_PHILIPS_NTSC, |
2158 | .gpiomask = 0x008007, | 2295 | .tuner_addr = ADDR_UNSET, |
2159 | .audiomux = { 0, 0x000001,0,0, 0}, | 2296 | .gpiomask = 0x008007, |
2160 | .needs_tvaudio = 1, | 2297 | .audiomux = { 0, 0x000001,0,0, 0}, |
2161 | .has_radio = 1, | 2298 | .needs_tvaudio = 1, |
2162 | },{ | 2299 | .has_radio = 1, |
2163 | /* Chris Fanning <video4linux@haydon.net> */ | 2300 | },{ |
2164 | .name = "Tibet Systems 'Progress DVR' CS16", | 2301 | /* Chris Fanning <video4linux@haydon.net> */ |
2165 | .video_inputs = 16, | 2302 | .name = "Tibet Systems 'Progress DVR' CS16", |
2166 | .audio_inputs = 0, | 2303 | .video_inputs = 16, |
2167 | .tuner = -1, | 2304 | .audio_inputs = 0, |
2168 | .svhs = -1, | 2305 | .tuner = -1, |
2169 | .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, | 2306 | .svhs = -1, |
2170 | .pll = PLL_28, | 2307 | .muxsel = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }, |
2171 | .no_msp34xx = 1, | 2308 | .pll = PLL_28, |
2172 | .no_tda9875 = 1, | 2309 | .no_msp34xx = 1, |
2173 | .no_tda7432 = 1, | 2310 | .no_tda9875 = 1, |
2174 | .tuner_type = -1, | 2311 | .no_tda7432 = 1, |
2175 | .muxsel_hook = tibetCS16_muxsel, | 2312 | .tuner_type = -1, |
2313 | .tuner_addr = ADDR_UNSET, | ||
2314 | .muxsel_hook = tibetCS16_muxsel, | ||
2176 | }, | 2315 | }, |
2177 | { | 2316 | { |
2178 | /* Bill Brack <wbrack@mmm.com.hk> */ | 2317 | /* Bill Brack <wbrack@mmm.com.hk> */ |
2179 | /* | 2318 | /* |
2180 | * Note that, because of the card's wiring, the "master" | 2319 | * Note that, because of the card's wiring, the "master" |
2181 | * BT878A chip (i.e. the one which controls the analog switch | 2320 | * BT878A chip (i.e. the one which controls the analog switch |
2182 | * and must use this card type) is the 2nd one detected. The | 2321 | * and must use this card type) is the 2nd one detected. The |
2183 | * other 3 chips should use card type 0x85, whose description | 2322 | * other 3 chips should use card type 0x85, whose description |
2184 | * follows this one. There is a EEPROM on the card (which is | 2323 | * follows this one. There is a EEPROM on the card (which is |
2185 | * connected to the I2C of one of those other chips), but is | 2324 | * connected to the I2C of one of those other chips), but is |
2186 | * not currently handled. There is also a facility for a | 2325 | * not currently handled. There is also a facility for a |
2187 | * "monitor", which is also not currently implemented. | 2326 | * "monitor", which is also not currently implemented. |
2188 | */ | 2327 | */ |
2189 | .name = "Kodicom 4400R (master)", | 2328 | .name = "Kodicom 4400R (master)", |
2190 | .video_inputs = 16, | 2329 | .video_inputs = 16, |
2191 | .audio_inputs = 0, | 2330 | .audio_inputs = 0, |
2192 | .tuner = -1, | 2331 | .tuner = -1, |
2193 | .tuner_type = -1, | 2332 | .tuner_type = -1, |
2333 | .tuner_addr = ADDR_UNSET, | ||
2194 | .svhs = -1, | 2334 | .svhs = -1, |
2195 | /* GPIO bits 0-9 used for analog switch: | 2335 | /* GPIO bits 0-9 used for analog switch: |
2196 | * 00 - 03: camera selector | 2336 | * 00 - 03: camera selector |
2197 | * 04 - 06: channel (controller) selector | 2337 | * 04 - 06: channel (controller) selector |
2198 | * 07: data (1->on, 0->off) | 2338 | * 07: data (1->on, 0->off) |
2199 | * 08: strobe | 2339 | * 08: strobe |
2200 | * 09: reset | 2340 | * 09: reset |
2201 | * bit 16 is input from sync separator for the channel | 2341 | * bit 16 is input from sync separator for the channel |
2202 | */ | 2342 | */ |
2203 | .gpiomask = 0x0003ff, | 2343 | .gpiomask = 0x0003ff, |
2204 | .no_gpioirq = 1, | 2344 | .no_gpioirq = 1, |
2205 | .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, | 2345 | .muxsel = { 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }, |
@@ -2212,15 +2352,16 @@ struct tvcard bttv_tvcards[] = { | |||
2212 | { | 2352 | { |
2213 | /* Bill Brack <wbrack@mmm.com.hk> */ | 2353 | /* Bill Brack <wbrack@mmm.com.hk> */ |
2214 | /* Note that, for reasons unknown, the "master" BT878A chip (i.e. the | 2354 | /* Note that, for reasons unknown, the "master" BT878A chip (i.e. the |
2215 | * one which controls the analog switch, and must use the card type) | 2355 | * one which controls the analog switch, and must use the card type) |
2216 | * is the 2nd one detected. The other 3 chips should use this card | 2356 | * is the 2nd one detected. The other 3 chips should use this card |
2217 | * type | 2357 | * type |
2218 | */ | 2358 | */ |
2219 | .name = "Kodicom 4400R (slave)", | 2359 | .name = "Kodicom 4400R (slave)", |
2220 | .video_inputs = 16, | 2360 | .video_inputs = 16, |
2221 | .audio_inputs = 0, | 2361 | .audio_inputs = 0, |
2222 | .tuner = -1, | 2362 | .tuner = -1, |
2223 | .tuner_type = -1, | 2363 | .tuner_type = -1, |
2364 | .tuner_addr = ADDR_UNSET, | ||
2224 | .svhs = -1, | 2365 | .svhs = -1, |
2225 | .gpiomask = 0x010000, | 2366 | .gpiomask = 0x010000, |
2226 | .no_gpioirq = 1, | 2367 | .no_gpioirq = 1, |
@@ -2232,18 +2373,51 @@ struct tvcard bttv_tvcards[] = { | |||
2232 | .muxsel_hook = kodicom4400r_muxsel, | 2373 | .muxsel_hook = kodicom4400r_muxsel, |
2233 | }, | 2374 | }, |
2234 | { | 2375 | { |
2235 | /* ---- card 0x85---------------------------------- */ | 2376 | /* ---- card 0x86---------------------------------- */ |
2236 | /* Michael Henson <mhenson@clarityvi.com> */ | 2377 | /* Michael Henson <mhenson@clarityvi.com> */ |
2237 | /* Adlink RTV24 with special unlock codes */ | 2378 | /* Adlink RTV24 with special unlock codes */ |
2238 | .name = "Adlink RTV24", | 2379 | .name = "Adlink RTV24", |
2239 | .video_inputs = 4, | 2380 | .video_inputs = 4, |
2240 | .audio_inputs = 1, | 2381 | .audio_inputs = 1, |
2241 | .tuner = 0, | 2382 | .tuner = 0, |
2242 | .svhs = 2, | 2383 | .svhs = 2, |
2243 | .muxsel = { 2, 3, 1, 0}, | 2384 | .muxsel = { 2, 3, 1, 0}, |
2244 | .tuner_type = -1, | 2385 | .tuner_type = -1, |
2245 | .pll = PLL_28, | 2386 | .tuner_addr = ADDR_UNSET, |
2246 | 2387 | .pll = PLL_28, | |
2388 | }, | ||
2389 | { | ||
2390 | /* ---- card 0x87---------------------------------- */ | ||
2391 | /* Michael Krufky <mkrufky@m1k.net> */ | ||
2392 | .name = "DVICO FusionHDTV 5 Lite", | ||
2393 | .tuner = 0, | ||
2394 | .tuner_type = TUNER_LG_TDVS_H062F, | ||
2395 | .tuner_addr = ADDR_UNSET, | ||
2396 | .video_inputs = 2, | ||
2397 | .audio_inputs = 1, | ||
2398 | .svhs = 2, | ||
2399 | .muxsel = { 2, 3 }, | ||
2400 | .gpiomask = 0x00e00007, | ||
2401 | .audiomux = { 0x00400005, 0, 0, 0, 0, 0 }, | ||
2402 | .no_msp34xx = 1, | ||
2403 | .no_tda9875 = 1, | ||
2404 | .no_tda7432 = 1, | ||
2405 | },{ | ||
2406 | /* ---- card 0x88---------------------------------- */ | ||
2407 | /* Mauro Carvalho Chehab <mchehab@brturbo.com.br> */ | ||
2408 | .name = "Acorp Y878F", | ||
2409 | .video_inputs = 3, | ||
2410 | .audio_inputs = 1, | ||
2411 | .tuner = 0, | ||
2412 | .svhs = 2, | ||
2413 | .gpiomask = 0x01fe00, | ||
2414 | .muxsel = { 2, 3, 1, 1}, | ||
2415 | .audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 }, | ||
2416 | .needs_tvaudio = 1, | ||
2417 | .pll = PLL_28, | ||
2418 | .tuner_type = TUNER_YMEC_TVF66T5_B_DFF, | ||
2419 | .tuner_addr = 0xc1 >>1, | ||
2420 | .has_radio = 1, | ||
2247 | }}; | 2421 | }}; |
2248 | 2422 | ||
2249 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); | 2423 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); |
@@ -2355,32 +2529,32 @@ static void flyvideo_gpio(struct bttv *btv) | |||
2355 | int tuner=-1,ttype; | 2529 | int tuner=-1,ttype; |
2356 | 2530 | ||
2357 | gpio_inout(0xffffff, 0); | 2531 | gpio_inout(0xffffff, 0); |
2358 | udelay(8); // without this we would see the 0x1800 mask | 2532 | udelay(8); /* without this we would see the 0x1800 mask */ |
2359 | gpio = gpio_read(); | 2533 | gpio = gpio_read(); |
2360 | /* FIXME: must restore OUR_EN ??? */ | 2534 | /* FIXME: must restore OUR_EN ??? */ |
2361 | 2535 | ||
2362 | // all cards provide GPIO info, some have an additional eeprom | 2536 | /* all cards provide GPIO info, some have an additional eeprom |
2363 | // LR50: GPIO coding can be found lower right CP1 .. CP9 | 2537 | * LR50: GPIO coding can be found lower right CP1 .. CP9 |
2364 | // CP9=GPIO23 .. CP1=GPIO15; when OPEN, the corresponding GPIO reads 1. | 2538 | * CP9=GPIO23 .. CP1=GPIO15; when OPEN, the corresponding GPIO reads 1. |
2365 | // GPIO14-12: n.c. | 2539 | * GPIO14-12: n.c. |
2366 | // LR90: GP9=GPIO23 .. GP1=GPIO15 (right above the bt878) | 2540 | * LR90: GP9=GPIO23 .. GP1=GPIO15 (right above the bt878) |
2367 | |||
2368 | // lowest 3 bytes are remote control codes (no handshake needed) | ||
2369 | // xxxFFF: No remote control chip soldered | ||
2370 | // xxxF00(LR26/LR50), xxxFE0(LR90): Remote control chip (LVA001 or CF45) soldered | ||
2371 | // Note: Some bits are Audio_Mask ! | ||
2372 | 2541 | ||
2542 | * lowest 3 bytes are remote control codes (no handshake needed) | ||
2543 | * xxxFFF: No remote control chip soldered | ||
2544 | * xxxF00(LR26/LR50), xxxFE0(LR90): Remote control chip (LVA001 or CF45) soldered | ||
2545 | * Note: Some bits are Audio_Mask ! | ||
2546 | */ | ||
2373 | ttype=(gpio&0x0f0000)>>16; | 2547 | ttype=(gpio&0x0f0000)>>16; |
2374 | switch(ttype) { | 2548 | switch(ttype) { |
2375 | case 0x0: tuner=2; // NTSC, e.g. TPI8NSR11P | 2549 | case 0x0: tuner=2; /* NTSC, e.g. TPI8NSR11P */ |
2376 | break; | 2550 | break; |
2377 | case 0x2: tuner=39;// LG NTSC (newer TAPC series) TAPC-H701P | 2551 | case 0x2: tuner=39;/* LG NTSC (newer TAPC series) TAPC-H701P */ |
2378 | break; | 2552 | break; |
2379 | case 0x4: tuner=5; // Philips PAL TPI8PSB02P, TPI8PSB12P, TPI8PSB12D or FI1216, FM1216 | 2553 | case 0x4: tuner=5; /* Philips PAL TPI8PSB02P, TPI8PSB12P, TPI8PSB12D or FI1216, FM1216 */ |
2380 | break; | 2554 | break; |
2381 | case 0x6: tuner=37; // LG PAL (newer TAPC series) TAPC-G702P | 2555 | case 0x6: tuner=37;/* LG PAL (newer TAPC series) TAPC-G702P */ |
2382 | break; | 2556 | break; |
2383 | case 0xC: tuner=3; // Philips SECAM(+PAL) FQ1216ME or FI1216MF | 2557 | case 0xC: tuner=3; /* Philips SECAM(+PAL) FQ1216ME or FI1216MF */ |
2384 | break; | 2558 | break; |
2385 | default: | 2559 | default: |
2386 | printk(KERN_INFO "bttv%d: FlyVideo_gpio: unknown tuner type.\n", btv->c.nr); | 2560 | printk(KERN_INFO "bttv%d: FlyVideo_gpio: unknown tuner type.\n", btv->c.nr); |
@@ -2388,15 +2562,16 @@ static void flyvideo_gpio(struct bttv *btv) | |||
2388 | 2562 | ||
2389 | has_remote = gpio & 0x800000; | 2563 | has_remote = gpio & 0x800000; |
2390 | has_radio = gpio & 0x400000; | 2564 | has_radio = gpio & 0x400000; |
2391 | // unknown 0x200000; | 2565 | /* unknown 0x200000; |
2392 | // unknown2 0x100000; | 2566 | * unknown2 0x100000; */ |
2393 | is_capture_only = !(gpio & 0x008000); //GPIO15 | 2567 | is_capture_only = !(gpio & 0x008000); /* GPIO15 */ |
2394 | has_tda9820_tda9821 = !(gpio & 0x004000); | 2568 | has_tda9820_tda9821 = !(gpio & 0x004000); |
2395 | is_lr90 = !(gpio & 0x002000); // else LR26/LR50 (LR38/LR51 f. capture only) | 2569 | is_lr90 = !(gpio & 0x002000); /* else LR26/LR50 (LR38/LR51 f. capture only) */ |
2396 | // gpio & 0x001000 // output bit for audio routing | 2570 | /* |
2571 | * gpio & 0x001000 output bit for audio routing */ | ||
2397 | 2572 | ||
2398 | if(is_capture_only) | 2573 | if(is_capture_only) |
2399 | tuner=4; // No tuner present | 2574 | tuner=4; /* No tuner present */ |
2400 | 2575 | ||
2401 | printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", | 2576 | printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", |
2402 | btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio); | 2577 | btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio); |
@@ -2404,15 +2579,15 @@ static void flyvideo_gpio(struct bttv *btv) | |||
2404 | btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ", | 2579 | btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ", |
2405 | is_capture_only?"yes":"no "); | 2580 | is_capture_only?"yes":"no "); |
2406 | 2581 | ||
2407 | if(tuner!= -1) // only set if known tuner autodetected, else let insmod option through | 2582 | if(tuner!= -1) /* only set if known tuner autodetected, else let insmod option through */ |
2408 | btv->tuner_type = tuner; | 2583 | btv->tuner_type = tuner; |
2409 | btv->has_radio = has_radio; | 2584 | btv->has_radio = has_radio; |
2410 | 2585 | ||
2411 | // LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80 | 2586 | /* LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80 |
2412 | // LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00 | 2587 | * LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00 |
2413 | // Audio options: from tuner, from tda9821/tda9821(mono,stereo,sap), from tda9874, ext., mute | 2588 | * Audio options: from tuner, from tda9821/tda9821(mono,stereo,sap), from tda9874, ext., mute */ |
2414 | if(has_tda9820_tda9821) btv->audio_hook = lt9415_audio; | 2589 | if(has_tda9820_tda9821) btv->audio_hook = lt9415_audio; |
2415 | //todo: if(has_tda9874) btv->audio_hook = fv2000s_audio; | 2590 | /* todo: if(has_tda9874) btv->audio_hook = fv2000s_audio; */ |
2416 | } | 2591 | } |
2417 | 2592 | ||
2418 | static int miro_tunermap[] = { 0,6,2,3, 4,5,6,0, 3,0,4,5, 5,2,16,1, | 2593 | static int miro_tunermap[] = { 0,6,2,3, 4,5,6,0, 3,0,4,5, 5,2,16,1, |
@@ -2633,6 +2808,8 @@ void __devinit bttv_init_card1(struct bttv *btv) | |||
2633 | void __devinit bttv_init_card2(struct bttv *btv) | 2808 | void __devinit bttv_init_card2(struct bttv *btv) |
2634 | { | 2809 | { |
2635 | int tda9887; | 2810 | int tda9887; |
2811 | int addr=ADDR_UNSET; | ||
2812 | |||
2636 | btv->tuner_type = -1; | 2813 | btv->tuner_type = -1; |
2637 | 2814 | ||
2638 | if (BTTV_UNKNOWN == btv->c.type) { | 2815 | if (BTTV_UNKNOWN == btv->c.type) { |
@@ -2773,9 +2950,12 @@ void __devinit bttv_init_card2(struct bttv *btv) | |||
2773 | btv->pll.pll_current = -1; | 2950 | btv->pll.pll_current = -1; |
2774 | 2951 | ||
2775 | /* tuner configuration (from card list / autodetect / insmod option) */ | 2952 | /* tuner configuration (from card list / autodetect / insmod option) */ |
2776 | if (UNSET != bttv_tvcards[btv->c.type].tuner_type) | 2953 | if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr) |
2954 | addr = bttv_tvcards[btv->c.type].tuner_addr; | ||
2955 | |||
2956 | if (UNSET != bttv_tvcards[btv->c.type].tuner_type) | ||
2777 | if(UNSET == btv->tuner_type) | 2957 | if(UNSET == btv->tuner_type) |
2778 | btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; | 2958 | btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; |
2779 | if (UNSET != tuner[btv->c.nr]) | 2959 | if (UNSET != tuner[btv->c.nr]) |
2780 | btv->tuner_type = tuner[btv->c.nr]; | 2960 | btv->tuner_type = tuner[btv->c.nr]; |
2781 | printk("bttv%d: using tuner=%d\n",btv->c.nr,btv->tuner_type); | 2961 | printk("bttv%d: using tuner=%d\n",btv->c.nr,btv->tuner_type); |
@@ -2787,7 +2967,7 @@ void __devinit bttv_init_card2(struct bttv *btv) | |||
2787 | 2967 | ||
2788 | tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; | 2968 | tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; |
2789 | tun_setup.type = btv->tuner_type; | 2969 | tun_setup.type = btv->tuner_type; |
2790 | tun_setup.addr = ADDR_UNSET; | 2970 | tun_setup.addr = addr; |
2791 | 2971 | ||
2792 | bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup); | 2972 | bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup); |
2793 | } | 2973 | } |
@@ -2902,7 +3082,7 @@ static int terratec_active_radio_upgrade(struct bttv *btv) | |||
2902 | btv->mbox_csel = 1 << 10; | 3082 | btv->mbox_csel = 1 << 10; |
2903 | 3083 | ||
2904 | freq=88000/62.5; | 3084 | freq=88000/62.5; |
2905 | tea5757_write(btv, 5 * freq + 0x358); // write 0x1ed8 | 3085 | tea5757_write(btv, 5 * freq + 0x358); /* write 0x1ed8 */ |
2906 | if (0x1ed8 == tea5757_read(btv)) { | 3086 | if (0x1ed8 == tea5757_read(btv)) { |
2907 | printk("bttv%d: Terratec Active Radio Upgrade found.\n", | 3087 | printk("bttv%d: Terratec Active Radio Upgrade found.\n", |
2908 | btv->c.nr); | 3088 | btv->c.nr); |
@@ -3073,7 +3253,7 @@ static void __devinit osprey_eeprom(struct bttv *btv) | |||
3073 | case 0x0060: | 3253 | case 0x0060: |
3074 | case 0x0070: | 3254 | case 0x0070: |
3075 | btv->c.type = BTTV_OSPREY2x0; | 3255 | btv->c.type = BTTV_OSPREY2x0; |
3076 | //enable output on select control lines | 3256 | /* enable output on select control lines */ |
3077 | gpio_inout(0xffffff,0x000303); | 3257 | gpio_inout(0xffffff,0x000303); |
3078 | break; | 3258 | break; |
3079 | default: | 3259 | default: |
@@ -3105,7 +3285,7 @@ static int tuner_1_table[] = { | |||
3105 | TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL, | 3285 | TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL, |
3106 | TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, | 3286 | TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, |
3107 | TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, | 3287 | TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, |
3108 | TUNER_TEMIC_4012FY5, TUNER_TEMIC_4012FY5, //TUNER_TEMIC_SECAM | 3288 | TUNER_TEMIC_4012FY5, TUNER_TEMIC_4012FY5, /* TUNER_TEMIC_SECAM */ |
3109 | TUNER_TEMIC_4012FY5, TUNER_TEMIC_PAL}; | 3289 | TUNER_TEMIC_4012FY5, TUNER_TEMIC_PAL}; |
3110 | 3290 | ||
3111 | static void __devinit avermedia_eeprom(struct bttv *btv) | 3291 | static void __devinit avermedia_eeprom(struct bttv *btv) |
@@ -3126,7 +3306,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv) | |||
3126 | 3306 | ||
3127 | if (tuner_make == 4) | 3307 | if (tuner_make == 4) |
3128 | if(tuner_format == 0x09) | 3308 | if(tuner_format == 0x09) |
3129 | tuner = TUNER_LG_NTSC_NEW_TAPC; // TAPC-G702P | 3309 | tuner = TUNER_LG_NTSC_NEW_TAPC; /* TAPC-G702P */ |
3130 | 3310 | ||
3131 | printk(KERN_INFO "bttv%d: Avermedia eeprom[0x%02x%02x]: tuner=", | 3311 | printk(KERN_INFO "bttv%d: Avermedia eeprom[0x%02x%02x]: tuner=", |
3132 | btv->c.nr,eeprom_data[0x41],eeprom_data[0x42]); | 3312 | btv->c.nr,eeprom_data[0x41],eeprom_data[0x42]); |
@@ -3143,7 +3323,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv) | |||
3143 | /* used on Voodoo TV/FM (Voodoo 200), S0 wired to 0x10000 */ | 3323 | /* used on Voodoo TV/FM (Voodoo 200), S0 wired to 0x10000 */ |
3144 | void bttv_tda9880_setnorm(struct bttv *btv, int norm) | 3324 | void bttv_tda9880_setnorm(struct bttv *btv, int norm) |
3145 | { | 3325 | { |
3146 | // fix up our card entry | 3326 | /* fix up our card entry */ |
3147 | if(norm==VIDEO_MODE_NTSC) { | 3327 | if(norm==VIDEO_MODE_NTSC) { |
3148 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[0]=0x957fff; | 3328 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[0]=0x957fff; |
3149 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x957fff; | 3329 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x957fff; |
@@ -3154,7 +3334,7 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm) | |||
3154 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x947fff; | 3334 | bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x947fff; |
3155 | dprintk("bttv_tda9880_setnorm to PAL\n"); | 3335 | dprintk("bttv_tda9880_setnorm to PAL\n"); |
3156 | } | 3336 | } |
3157 | // set GPIO according | 3337 | /* set GPIO according */ |
3158 | gpio_bits(bttv_tvcards[btv->c.type].gpiomask, | 3338 | gpio_bits(bttv_tvcards[btv->c.type].gpiomask, |
3159 | bttv_tvcards[btv->c.type].audiomux[btv->audio]); | 3339 | bttv_tvcards[btv->c.type].audiomux[btv->audio]); |
3160 | } | 3340 | } |
@@ -3447,7 +3627,7 @@ static int tea5757_read(struct bttv *btv) | |||
3447 | udelay(10); | 3627 | udelay(10); |
3448 | timeout= jiffies + HZ; | 3628 | timeout= jiffies + HZ; |
3449 | 3629 | ||
3450 | // wait for DATA line to go low; error if it doesn't | 3630 | /* wait for DATA line to go low; error if it doesn't */ |
3451 | while (bus_in(btv,btv->mbox_data) && time_before(jiffies, timeout)) | 3631 | while (bus_in(btv,btv->mbox_data) && time_before(jiffies, timeout)) |
3452 | schedule(); | 3632 | schedule(); |
3453 | if (bus_in(btv,btv->mbox_data)) { | 3633 | if (bus_in(btv,btv->mbox_data)) { |
@@ -3574,8 +3754,8 @@ gvbctv3pci_audio(struct bttv *btv, struct video_audio *v, int set) | |||
3574 | con = 0x300; | 3754 | con = 0x300; |
3575 | if (v->mode & VIDEO_SOUND_STEREO) | 3755 | if (v->mode & VIDEO_SOUND_STEREO) |
3576 | con = 0x200; | 3756 | con = 0x200; |
3577 | // if (v->mode & VIDEO_SOUND_MONO) | 3757 | /* if (v->mode & VIDEO_SOUND_MONO) |
3578 | // con = 0x100; | 3758 | * con = 0x100; */ |
3579 | gpio_bits(0x300, con); | 3759 | gpio_bits(0x300, con); |
3580 | } else { | 3760 | } else { |
3581 | v->mode = VIDEO_SOUND_STEREO | | 3761 | v->mode = VIDEO_SOUND_STEREO | |
@@ -3718,7 +3898,7 @@ lt9415_audio(struct bttv *btv, struct video_audio *v, int set) | |||
3718 | } | 3898 | } |
3719 | } | 3899 | } |
3720 | 3900 | ||
3721 | // TDA9821 on TerraTV+ Bt848, Bt878 | 3901 | /* TDA9821 on TerraTV+ Bt848, Bt878 */ |
3722 | static void | 3902 | static void |
3723 | terratv_audio(struct bttv *btv, struct video_audio *v, int set) | 3903 | terratv_audio(struct bttv *btv, struct video_audio *v, int set) |
3724 | { | 3904 | { |
@@ -3818,7 +3998,7 @@ fv2000s_audio(struct bttv *btv, struct video_audio *v, int set) | |||
3818 | } | 3998 | } |
3819 | if ((v->mode & (VIDEO_SOUND_LANG1 | VIDEO_SOUND_LANG2)) | 3999 | if ((v->mode & (VIDEO_SOUND_LANG1 | VIDEO_SOUND_LANG2)) |
3820 | || (v->mode & VIDEO_SOUND_STEREO)) { | 4000 | || (v->mode & VIDEO_SOUND_STEREO)) { |
3821 | val = 0x1080; //-dk-???: 0x0880, 0x0080, 0x1800 ... | 4001 | val = 0x1080; /*-dk-???: 0x0880, 0x0080, 0x1800 ... */ |
3822 | } | 4002 | } |
3823 | if (val != 0xffff) { | 4003 | if (val != 0xffff) { |
3824 | gpio_bits(0x1800, val); | 4004 | gpio_bits(0x1800, val); |
@@ -3869,10 +4049,10 @@ adtvk503_audio(struct bttv *btv, struct video_audio *v, int set) | |||
3869 | { | 4049 | { |
3870 | unsigned int con = 0xffffff; | 4050 | unsigned int con = 0xffffff; |
3871 | 4051 | ||
3872 | //btaor(0x1e0000, ~0x1e0000, BT848_GPIO_OUT_EN); | 4052 | /* btaor(0x1e0000, ~0x1e0000, BT848_GPIO_OUT_EN); */ |
3873 | 4053 | ||
3874 | if (set) { | 4054 | if (set) { |
3875 | //btor(***, BT848_GPIO_OUT_EN); | 4055 | /* btor(***, BT848_GPIO_OUT_EN); */ |
3876 | if (v->mode & VIDEO_SOUND_LANG1) | 4056 | if (v->mode & VIDEO_SOUND_LANG1) |
3877 | con = 0x00000000; | 4057 | con = 0x00000000; |
3878 | if (v->mode & VIDEO_SOUND_LANG2) | 4058 | if (v->mode & VIDEO_SOUND_LANG2) |
@@ -4079,14 +4259,14 @@ static void kodicom4400r_init(struct bttv *btv) | |||
4079 | master[btv->c.nr+2] = btv; | 4259 | master[btv->c.nr+2] = btv; |
4080 | } | 4260 | } |
4081 | 4261 | ||
4082 | // The Grandtec X-Guard framegrabber card uses two Dual 4-channel | 4262 | /* The Grandtec X-Guard framegrabber card uses two Dual 4-channel |
4083 | // video multiplexers to provide up to 16 video inputs. These | 4263 | * video multiplexers to provide up to 16 video inputs. These |
4084 | // multiplexers are controlled by the lower 8 GPIO pins of the | 4264 | * multiplexers are controlled by the lower 8 GPIO pins of the |
4085 | // bt878. The multiplexers probably Pericom PI5V331Q or similar. | 4265 | * bt878. The multiplexers probably Pericom PI5V331Q or similar. |
4086 | |||
4087 | // xxx0 is pin xxx of multiplexer U5, | ||
4088 | // yyy1 is pin yyy of multiplexer U2 | ||
4089 | 4266 | ||
4267 | * xxx0 is pin xxx of multiplexer U5, | ||
4268 | * yyy1 is pin yyy of multiplexer U2 | ||
4269 | */ | ||
4090 | #define ENA0 0x01 | 4270 | #define ENA0 0x01 |
4091 | #define ENB0 0x02 | 4271 | #define ENB0 0x02 |
4092 | #define ENA1 0x04 | 4272 | #define ENA1 0x04 |
@@ -4157,14 +4337,14 @@ static void picolo_tetra_muxsel (struct bttv* btv, unsigned int input) | |||
4157 | 4337 | ||
4158 | static void ivc120_muxsel(struct bttv *btv, unsigned int input) | 4338 | static void ivc120_muxsel(struct bttv *btv, unsigned int input) |
4159 | { | 4339 | { |
4160 | // Simple maths | 4340 | /* Simple maths */ |
4161 | int key = input % 4; | 4341 | int key = input % 4; |
4162 | int matrix = input / 4; | 4342 | int matrix = input / 4; |
4163 | 4343 | ||
4164 | dprintk("bttv%d: ivc120_muxsel: Input - %02d | TDA - %02d | In - %02d\n", | 4344 | dprintk("bttv%d: ivc120_muxsel: Input - %02d | TDA - %02d | In - %02d\n", |
4165 | btv->c.nr, input, matrix, key); | 4345 | btv->c.nr, input, matrix, key); |
4166 | 4346 | ||
4167 | // Handles the input selection on the TDA8540's | 4347 | /* Handles the input selection on the TDA8540's */ |
4168 | bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00, | 4348 | bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00, |
4169 | ((matrix == 3) ? (key | key << 2) : 0x00), 1); | 4349 | ((matrix == 3) ? (key | key << 2) : 0x00), 1); |
4170 | bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00, | 4350 | bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00, |
@@ -4174,17 +4354,17 @@ static void ivc120_muxsel(struct bttv *btv, unsigned int input) | |||
4174 | bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00, | 4354 | bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00, |
4175 | ((matrix == 2) ? (key | key << 2) : 0x00), 1); | 4355 | ((matrix == 2) ? (key | key << 2) : 0x00), 1); |
4176 | 4356 | ||
4177 | // Handles the output enables on the TDA8540's | 4357 | /* Handles the output enables on the TDA8540's */ |
4178 | bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02, | 4358 | bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02, |
4179 | ((matrix == 3) ? 0x03 : 0x00), 1); // 13 - 16 | 4359 | ((matrix == 3) ? 0x03 : 0x00), 1); /* 13 - 16 */ |
4180 | bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02, | 4360 | bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02, |
4181 | ((matrix == 0) ? 0x03 : 0x00), 1); // 1-4 | 4361 | ((matrix == 0) ? 0x03 : 0x00), 1); /* 1-4 */ |
4182 | bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02, | 4362 | bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02, |
4183 | ((matrix == 1) ? 0x03 : 0x00), 1); // 5-8 | 4363 | ((matrix == 1) ? 0x03 : 0x00), 1); /* 5-8 */ |
4184 | bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02, | 4364 | bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02, |
4185 | ((matrix == 2) ? 0x03 : 0x00), 1); // 9-12 | 4365 | ((matrix == 2) ? 0x03 : 0x00), 1); /* 9-12 */ |
4186 | 4366 | ||
4187 | // Selects MUX0 for input on the 878 | 4367 | /* Selects MUX0 for input on the 878 */ |
4188 | btaor((0)<<5, ~(3<<5), BT848_IFORM); | 4368 | btaor((0)<<5, ~(3<<5), BT848_IFORM); |
4189 | } | 4369 | } |
4190 | 4370 | ||
@@ -4305,7 +4485,6 @@ void __devinit bttv_check_chipset(void) | |||
4305 | } | 4485 | } |
4306 | if (UNSET != latency) | 4486 | if (UNSET != latency) |
4307 | printk(KERN_INFO "bttv: pci latency fixup [%d]\n",latency); | 4487 | printk(KERN_INFO "bttv: pci latency fixup [%d]\n",latency); |
4308 | |||
4309 | while ((dev = pci_find_device(PCI_VENDOR_ID_INTEL, | 4488 | while ((dev = pci_find_device(PCI_VENDOR_ID_INTEL, |
4310 | PCI_DEVICE_ID_INTEL_82441, dev))) { | 4489 | PCI_DEVICE_ID_INTEL_82441, dev))) { |
4311 | unsigned char b; | 4490 | unsigned char b; |
diff --git a/drivers/media/video/bttv-driver.c b/drivers/media/video/bttv-driver.c index 087efb4dea09..53ecdbf46222 100644 --- a/drivers/media/video/bttv-driver.c +++ b/drivers/media/video/bttv-driver.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-driver.c,v 1.52 2005/08/04 00:55:16 mchehab Exp $ | ||
3 | 2 | ||
4 | bttv - Bt848 frame grabber driver | 3 | bttv - Bt848 frame grabber driver |
5 | 4 | ||
@@ -42,6 +41,9 @@ | |||
42 | 41 | ||
43 | #include "bttvp.h" | 42 | #include "bttvp.h" |
44 | 43 | ||
44 | #include "rds.h" | ||
45 | |||
46 | |||
45 | unsigned int bttv_num; /* number of Bt848s in use */ | 47 | unsigned int bttv_num; /* number of Bt848s in use */ |
46 | struct bttv bttvs[BTTV_MAX]; | 48 | struct bttv bttvs[BTTV_MAX]; |
47 | 49 | ||
@@ -3128,15 +3130,12 @@ static int radio_open(struct inode *inode, struct file *file) | |||
3128 | 3130 | ||
3129 | dprintk("bttv%d: open called (radio)\n",btv->c.nr); | 3131 | dprintk("bttv%d: open called (radio)\n",btv->c.nr); |
3130 | down(&btv->lock); | 3132 | down(&btv->lock); |
3131 | if (btv->radio_user) { | 3133 | |
3132 | up(&btv->lock); | ||
3133 | return -EBUSY; | ||
3134 | } | ||
3135 | btv->radio_user++; | 3134 | btv->radio_user++; |
3135 | |||
3136 | file->private_data = btv; | 3136 | file->private_data = btv; |
3137 | 3137 | ||
3138 | i2c_vidiocschan(btv); | 3138 | bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type); |
3139 | bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type); | ||
3140 | audio_mux(btv,AUDIO_RADIO); | 3139 | audio_mux(btv,AUDIO_RADIO); |
3141 | 3140 | ||
3142 | up(&btv->lock); | 3141 | up(&btv->lock); |
@@ -3145,9 +3144,13 @@ static int radio_open(struct inode *inode, struct file *file) | |||
3145 | 3144 | ||
3146 | static int radio_release(struct inode *inode, struct file *file) | 3145 | static int radio_release(struct inode *inode, struct file *file) |
3147 | { | 3146 | { |
3148 | struct bttv *btv = file->private_data; | 3147 | struct bttv *btv = file->private_data; |
3148 | struct rds_command cmd; | ||
3149 | 3149 | ||
3150 | btv->radio_user--; | 3150 | btv->radio_user--; |
3151 | |||
3152 | bttv_call_i2c_clients(btv, RDS_CMD_CLOSE, &cmd); | ||
3153 | |||
3151 | return 0; | 3154 | return 0; |
3152 | } | 3155 | } |
3153 | 3156 | ||
@@ -3203,13 +3206,42 @@ static int radio_ioctl(struct inode *inode, struct file *file, | |||
3203 | return video_usercopy(inode, file, cmd, arg, radio_do_ioctl); | 3206 | return video_usercopy(inode, file, cmd, arg, radio_do_ioctl); |
3204 | } | 3207 | } |
3205 | 3208 | ||
3209 | static ssize_t radio_read(struct file *file, char __user *data, | ||
3210 | size_t count, loff_t *ppos) | ||
3211 | { | ||
3212 | struct bttv *btv = file->private_data; | ||
3213 | struct rds_command cmd; | ||
3214 | cmd.block_count = count/3; | ||
3215 | cmd.buffer = data; | ||
3216 | cmd.instance = file; | ||
3217 | cmd.result = -ENODEV; | ||
3218 | |||
3219 | bttv_call_i2c_clients(btv, RDS_CMD_READ, &cmd); | ||
3220 | |||
3221 | return cmd.result; | ||
3222 | } | ||
3223 | |||
3224 | static unsigned int radio_poll(struct file *file, poll_table *wait) | ||
3225 | { | ||
3226 | struct bttv *btv = file->private_data; | ||
3227 | struct rds_command cmd; | ||
3228 | cmd.instance = file; | ||
3229 | cmd.event_list = wait; | ||
3230 | cmd.result = -ENODEV; | ||
3231 | bttv_call_i2c_clients(btv, RDS_CMD_POLL, &cmd); | ||
3232 | |||
3233 | return cmd.result; | ||
3234 | } | ||
3235 | |||
3206 | static struct file_operations radio_fops = | 3236 | static struct file_operations radio_fops = |
3207 | { | 3237 | { |
3208 | .owner = THIS_MODULE, | 3238 | .owner = THIS_MODULE, |
3209 | .open = radio_open, | 3239 | .open = radio_open, |
3240 | .read = radio_read, | ||
3210 | .release = radio_release, | 3241 | .release = radio_release, |
3211 | .ioctl = radio_ioctl, | 3242 | .ioctl = radio_ioctl, |
3212 | .llseek = no_llseek, | 3243 | .llseek = no_llseek, |
3244 | .poll = radio_poll, | ||
3213 | }; | 3245 | }; |
3214 | 3246 | ||
3215 | static struct video_device radio_template = | 3247 | static struct video_device radio_template = |
diff --git a/drivers/media/video/bttv-gpio.c b/drivers/media/video/bttv-gpio.c index 77320cdf205f..6b280c03e398 100644 --- a/drivers/media/video/bttv-gpio.c +++ b/drivers/media/video/bttv-gpio.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-gpio.c,v 1.7 2005/02/16 12:14:10 kraxel Exp $ | ||
3 | 2 | ||
4 | bttv-gpio.c -- gpio sub drivers | 3 | bttv-gpio.c -- gpio sub drivers |
5 | 4 | ||
diff --git a/drivers/media/video/bttv-i2c.c b/drivers/media/video/bttv-i2c.c index 706dc48df962..e684df37eb0e 100644 --- a/drivers/media/video/bttv-i2c.c +++ b/drivers/media/video/bttv-i2c.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-i2c.c,v 1.25 2005/07/05 17:37:35 nsh Exp $ | ||
3 | 2 | ||
4 | bttv-i2c.c -- all the i2c code is here | 3 | bttv-i2c.c -- all the i2c code is here |
5 | 4 | ||
@@ -381,6 +380,7 @@ void __devinit bttv_readee(struct bttv *btv, unsigned char *eedata, int addr) | |||
381 | } | 380 | } |
382 | 381 | ||
383 | static char *i2c_devs[128] = { | 382 | static char *i2c_devs[128] = { |
383 | [ 0x1c >> 1 ] = "lgdt330x", | ||
384 | [ 0x30 >> 1 ] = "IR (hauppauge)", | 384 | [ 0x30 >> 1 ] = "IR (hauppauge)", |
385 | [ 0x80 >> 1 ] = "msp34xx", | 385 | [ 0x80 >> 1 ] = "msp34xx", |
386 | [ 0x86 >> 1 ] = "tda9887", | 386 | [ 0x86 >> 1 ] = "tda9887", |
diff --git a/drivers/media/video/bttv-if.c b/drivers/media/video/bttv-if.c index f7b5543a96a1..e8aada772b89 100644 --- a/drivers/media/video/bttv-if.c +++ b/drivers/media/video/bttv-if.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-if.c,v 1.4 2004/11/17 18:47:47 kraxel Exp $ | ||
3 | 2 | ||
4 | bttv-if.c -- old gpio interface to other kernel modules | 3 | bttv-if.c -- old gpio interface to other kernel modules |
5 | don't use in new code, will go away in 2.7 | 4 | don't use in new code, will go away in 2.7 |
diff --git a/drivers/media/video/bttv-risc.c b/drivers/media/video/bttv-risc.c index 9ed21fd190c6..a5ed99b89445 100644 --- a/drivers/media/video/bttv-risc.c +++ b/drivers/media/video/bttv-risc.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-risc.c,v 1.10 2004/11/19 18:07:12 kraxel Exp $ | ||
3 | 2 | ||
4 | bttv-risc.c -- interfaces to other kernel modules | 3 | bttv-risc.c -- interfaces to other kernel modules |
5 | 4 | ||
diff --git a/drivers/media/video/bttv-vbi.c b/drivers/media/video/bttv-vbi.c index 06f3e62b3e8d..f4f58c60f152 100644 --- a/drivers/media/video/bttv-vbi.c +++ b/drivers/media/video/bttv-vbi.c | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttv-vbi.c,v 1.9 2005/01/13 17:22:33 kraxel Exp $ | ||
3 | 2 | ||
4 | bttv - Bt848 frame grabber driver | 3 | bttv - Bt848 frame grabber driver |
5 | vbi interface | 4 | vbi interface |
diff --git a/drivers/media/video/bttv.h b/drivers/media/video/bttv.h index f2af9e1454f0..d254e90e3bb9 100644 --- a/drivers/media/video/bttv.h +++ b/drivers/media/video/bttv.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: bttv.h,v 1.22 2005/07/28 18:41:21 mchehab Exp $ | ||
3 | * | 2 | * |
4 | * bttv - Bt848 frame grabber driver | 3 | * bttv - Bt848 frame grabber driver |
5 | * | 4 | * |
@@ -218,6 +217,8 @@ struct tvcard | |||
218 | #define PLL_35 2 | 217 | #define PLL_35 2 |
219 | 218 | ||
220 | unsigned int tuner_type; | 219 | unsigned int tuner_type; |
220 | unsigned int tuner_addr; | ||
221 | |||
221 | unsigned int has_radio; | 222 | unsigned int has_radio; |
222 | void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set); | 223 | void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set); |
223 | void (*muxsel_hook)(struct bttv *btv, unsigned int input); | 224 | void (*muxsel_hook)(struct bttv *btv, unsigned int input); |
diff --git a/drivers/media/video/bttvp.h b/drivers/media/video/bttvp.h index aab094bc243d..a0eb0ce1aa96 100644 --- a/drivers/media/video/bttvp.h +++ b/drivers/media/video/bttvp.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | $Id: bttvp.h,v 1.21 2005/07/15 21:44:14 mchehab Exp $ | ||
3 | 2 | ||
4 | bttv - Bt848 frame grabber driver | 3 | bttv - Bt848 frame grabber driver |
5 | 4 | ||
@@ -26,7 +25,7 @@ | |||
26 | #ifndef _BTTVP_H_ | 25 | #ifndef _BTTVP_H_ |
27 | #define _BTTVP_H_ | 26 | #define _BTTVP_H_ |
28 | 27 | ||
29 | #include <linux/version.h> | 28 | #include <linux/utsname.h> |
30 | #define BTTV_VERSION_CODE KERNEL_VERSION(0,9,16) | 29 | #define BTTV_VERSION_CODE KERNEL_VERSION(0,9,16) |
31 | 30 | ||
32 | #include <linux/types.h> | 31 | #include <linux/types.h> |