Commit 24a70fdc authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab Committed by Linus Torvalds

[PATCH] v4l: BTTV updates and card additions

- Remove $Id CVS logs for V4L files
- Added DVICO FusionHDTV 5 Lite card.
- Added Acorp Y878F.
- CodingStyle fixes.
- Added tuner_addr to bttv cards structure.
- linux/version.h replaced by linux/utsname.h on bttvp.h
- kernel module for acquiring RDS data from a SAA6588.
- Allow multiple open() and reading calls to /dev/radio on bttv-driver.c
- added i2c address for lgdt330x.
Signed-off-by: default avatarHans J. Koch <koch@hjk-az.de>
Signed-off-by: default avatarMichael Krufky <mkrufky@m1k.net>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 793cf9e6
...@@ -133,3 +133,5 @@ card=131 - Tibet Systems 'Progress DVR' CS16 ...@@ -133,3 +133,5 @@ card=131 - Tibet Systems 'Progress DVR' CS16
card=132 - Kodicom 4400R (master) card=132 - Kodicom 4400R (master)
card=133 - Kodicom 4400R (slave) card=133 - Kodicom 4400R (slave)
card=134 - Adlink RTV24 card=134 - Adlink RTV24
card=135 - DVICO FusionHDTV 5 Lite
card=136 - Acorp Y878F
/* /*
$Id: bttv-cards.c,v 1.54 2005/07/19 18:26:46 mkrufky Exp $
bttv-cards.c bttv-cards.c
...@@ -169,10 +168,10 @@ static struct CARD { ...@@ -169,10 +168,10 @@ static struct CARD {
{ 0xd01810fc, BTTV_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" }, { 0xd01810fc, BTTV_GVBCTV5PCI, "I-O Data Co. GV-BCTV5/PCI" },
{ 0x001211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, { 0x001211bd, BTTV_PINNACLE, "Pinnacle PCTV" },
// some cards ship with byteswapped IDs ... /* some cards ship with byteswapped IDs ... */
{ 0x1200bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, { 0x1200bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" },
{ 0xff00bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" }, { 0xff00bd11, BTTV_PINNACLE, "Pinnacle PCTV [bswap]" },
// this seems to happen as well ... /* this seems to happen as well ... */
{ 0xff1211bd, BTTV_PINNACLE, "Pinnacle PCTV" }, { 0xff1211bd, BTTV_PINNACLE, "Pinnacle PCTV" },
{ 0x3000121a, BTTV_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" }, { 0x3000121a, BTTV_VOODOOTV_FM, "3Dfx VoodooTV FM/ VoodooTV 200" },
...@@ -200,12 +199,12 @@ static struct CARD { ...@@ -200,12 +199,12 @@ static struct CARD {
{ 0x1123153b, BTTV_TERRATVRADIO, "Terratec TV Radio+" }, { 0x1123153b, BTTV_TERRATVRADIO, "Terratec TV Radio+" },
{ 0x1127153b, BTTV_TERRATV, "Terratec TV+ (V1.05)" }, { 0x1127153b, BTTV_TERRATV, "Terratec TV+ (V1.05)" },
// clashes with FlyVideo /* clashes with FlyVideo
//{ 0x18521852, BTTV_TERRATV, "Terratec TV+ (V1.10)" }, *{ 0x18521852, BTTV_TERRATV, "Terratec TV+ (V1.10)" }, */
{ 0x1134153b, BTTV_TERRATVALUE, "Terratec TValue (LR102)" }, { 0x1134153b, BTTV_TERRATVALUE, "Terratec TValue (LR102)" },
{ 0x1135153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, // LR102 { 0x1135153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, /* LR102 */
{ 0x5018153b, BTTV_TERRATVALUE, "Terratec TValue" }, // ?? { 0x5018153b, BTTV_TERRATVALUE, "Terratec TValue" }, /* ?? */
{ 0xff3b153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, // ?? { 0xff3b153b, BTTV_TERRATVALUER, "Terratec TValue Radio" }, /* ?? */
{ 0x400015b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, { 0x400015b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
{ 0x400a15b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" }, { 0x400a15b0, BTTV_ZOLTRIX_GENIE, "Zoltrix Genie TV" },
...@@ -287,10 +286,12 @@ static struct CARD { ...@@ -287,10 +286,12 @@ static struct CARD {
{ 0x01071805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" }, { 0x01071805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #3" },
{ 0x01081805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" }, { 0x01081805, BTTV_PICOLO_TETRA_CHIP, "Picolo Tetra Chip #4" },
// likely broken, vendor id doesn't match the other magic views ... { 0x15409511, BTTV_ACORP_Y878F, "Acorp Y878F" },
//{ 0xa0fca04f, BTTV_MAGICTVIEW063, "Guillemot Maxi TV Video 3" },
// DVB cards (using pci function .1 for mpeg data xfer) /* likely broken, vendor id doesn't match the other magic views ...
* { 0xa0fca04f, BTTV_MAGICTVIEW063, "Guillemot Maxi TV Video 3" }, */
/* DVB cards (using pci function .1 for mpeg data xfer) */
{ 0x01010071, BTTV_NEBULA_DIGITV, "Nebula Electronics DigiTV" }, { 0x01010071, BTTV_NEBULA_DIGITV, "Nebula Electronics DigiTV" },
{ 0x07611461, BTTV_AVDVBT_761, "AverMedia AverTV DVB-T 761" }, { 0x07611461, BTTV_AVDVBT_761, "AverMedia AverTV DVB-T 761" },
{ 0x001c11bd, BTTV_PINNACLESAT, "Pinnacle PCTV Sat" }, { 0x001c11bd, BTTV_PINNACLESAT, "Pinnacle PCTV Sat" },
...@@ -299,6 +300,7 @@ static struct CARD { ...@@ -299,6 +300,7 @@ static struct CARD {
{ 0xfc00270f, BTTV_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" }, { 0xfc00270f, BTTV_TWINHAN_DST, "ChainTech digitop DST-1000 DVB-S" },
{ 0x07711461, BTTV_AVDVBT_771, "AVermedia AverTV DVB-T 771" }, { 0x07711461, BTTV_AVDVBT_771, "AVermedia AverTV DVB-T 771" },
{ 0xdb1018ac, BTTV_DVICO_DVBT_LITE, "DVICO FusionHDTV DVB-T Lite" }, { 0xdb1018ac, BTTV_DVICO_DVBT_LITE, "DVICO FusionHDTV DVB-T Lite" },
{ 0xd50018ac, BTTV_DVICO_FUSIONHDTV_5_LITE, "DVICO FusionHDTV 5 Lite" },
{ 0, -1, NULL } { 0, -1, NULL }
}; };
...@@ -316,6 +318,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -316,6 +318,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 0}, .muxsel = { 2, 3, 1, 0},
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "MIRO PCTV", .name = "MIRO PCTV",
.video_inputs = 4, .video_inputs = 4,
...@@ -327,6 +330,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -327,6 +330,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 2, 0, 0, 0, 10}, .audiomux = { 2, 0, 0, 0, 10},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Hauppauge (bt848)", .name = "Hauppauge (bt848)",
.video_inputs = 4, .video_inputs = 4,
...@@ -338,6 +342,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -338,6 +342,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 1, 2, 3, 4}, .audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "STB, Gateway P/N 6000699 (bt848)", .name = "STB, Gateway P/N 6000699 (bt848)",
.video_inputs = 3, .video_inputs = 3,
...@@ -350,6 +355,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -350,6 +355,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = TUNER_PHILIPS_NTSC, .tuner_type = TUNER_PHILIPS_NTSC,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -365,6 +371,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -365,6 +371,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0 }, .audiomux = { 0 },
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = 4, .tuner_type = 4,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Diamond DTV2000", .name = "Diamond DTV2000",
.video_inputs = 4, .video_inputs = 4,
...@@ -376,6 +383,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -376,6 +383,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 1, 0, 1, 3}, .audiomux = { 0, 1, 0, 1, 3},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "AVerMedia TVPhone", .name = "AVerMedia TVPhone",
.video_inputs = 3, .video_inputs = 3,
...@@ -388,6 +396,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -388,6 +396,7 @@ struct tvcard bttv_tvcards[] = {
/* 0x04 for some cards ?? */ /* 0x04 for some cards ?? */
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.audio_hook = avermedia_tvphone_audio, .audio_hook = avermedia_tvphone_audio,
.has_remote = 1, .has_remote = 1,
},{ },{
...@@ -401,6 +410,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -401,6 +410,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = {0 }, .audiomux = {0 },
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x08 ---------------------------------- */ /* ---- card 0x08 ---------------------------------- */
...@@ -415,6 +425,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -415,6 +425,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "IMS/IXmicro TurboTV", .name = "IMS/IXmicro TurboTV",
.video_inputs = 3, .video_inputs = 3,
...@@ -427,6 +438,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -427,6 +438,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_TEMIC_PAL, .tuner_type = TUNER_TEMIC_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Hauppauge (bt878)", .name = "Hauppauge (bt878)",
.video_inputs = 4, .video_inputs = 4,
...@@ -439,6 +451,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -439,6 +451,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "MIRO PCTV pro", .name = "MIRO PCTV pro",
.video_inputs = 3, .video_inputs = 3,
...@@ -450,6 +463,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -450,6 +463,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0x20001,0x10001, 0, 0,10}, .audiomux = { 0x20001,0x10001, 0, 0,10},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x0c ---------------------------------- */ /* ---- card 0x0c ---------------------------------- */
...@@ -463,6 +477,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -463,6 +477,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 13, 14, 11, 7, 0, 0}, .audiomux = { 13, 14, 11, 7, 0, 0},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "AVerMedia TVCapture 98", .name = "AVerMedia TVCapture 98",
.video_inputs = 3, .video_inputs = 3,
...@@ -476,6 +491,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -476,6 +491,7 @@ struct tvcard bttv_tvcards[] = {
.msp34xx_alt = 1, .msp34xx_alt = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.audio_hook = avermedia_tv_stereo_audio, .audio_hook = avermedia_tv_stereo_audio,
},{ },{
.name = "Aimslab Video Highway Xtreme (VHX)", .name = "Aimslab Video Highway Xtreme (VHX)",
...@@ -489,6 +505,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -489,6 +505,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Zoltrix TV-Max", .name = "Zoltrix TV-Max",
.video_inputs = 3, .video_inputs = 3,
...@@ -500,6 +517,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -500,6 +517,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = {0 , 0, 1 , 0, 10}, .audiomux = {0 , 0, 1 , 0, 10},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x10 ---------------------------------- */ /* ---- card 0x10 ---------------------------------- */
...@@ -510,7 +528,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -510,7 +528,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.gpiomask = 0x01fe00, .gpiomask = 0x01fe00,
.muxsel = { 2, 3, 1, 1}, .muxsel = { 2, 3, 1, 1},
// 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> /* 2003-10-20 by "Anton A. Arapov" <arapov@mail.ru> */
.audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 }, .audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
...@@ -526,6 +544,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -526,6 +544,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007}, .audiomux = { 0x4fa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007,0xcfa007},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.audio_hook = winview_audio, .audio_hook = winview_audio,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -539,6 +558,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -539,6 +558,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = {1, 0, 0, 0, 0}, .audiomux = {1, 0, 0, 0, 0},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)", .name = "Lifeview FlyVideo II EZ /FlyKit LR38 Bt848 (capture only)",
.video_inputs = 4, .video_inputs = 4,
...@@ -550,6 +570,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -550,6 +570,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0 }, .audiomux = { 0 },
.no_msp34xx = 1, .no_msp34xx = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x14 ---------------------------------- */ /* ---- card 0x14 ---------------------------------- */
...@@ -560,10 +581,11 @@ struct tvcard bttv_tvcards[] = { ...@@ -560,10 +581,11 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.muxsel = {2, 3, 1, 1}, .muxsel = {2, 3, 1, 1},
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50", .name = "Lifeview FlyVideo 98/ Lucky Star Image World ConferenceTV LR50",
.video_inputs = 4, .video_inputs = 4,
.audio_inputs = 2, // tuner, line in .audio_inputs = 2, /* tuner, line in */
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.gpiomask = 0x1800, .gpiomask = 0x1800,
...@@ -571,6 +593,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -571,6 +593,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL_I, .tuner_type = TUNER_PHILIPS_PAL_I,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Askey CPH050/ Phoebe Tv Master + FM", .name = "Askey CPH050/ Phoebe Tv Master + FM",
.video_inputs = 3, .video_inputs = 3,
...@@ -583,6 +606,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -583,6 +606,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878", .name = "Modular Technology MM201/MM202/MM205/MM210/MM215 PCTV, bt878",
.video_inputs = 3, .video_inputs = 3,
...@@ -596,6 +620,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -596,6 +620,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_ALPS_TSBB5_PAL_I, .tuner_type = TUNER_ALPS_TSBB5_PAL_I,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x18 ---------------------------------- */ /* ---- card 0x18 ---------------------------------- */
...@@ -610,6 +635,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -610,6 +635,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
},{ },{
.name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar", .name = "Terratec TerraTV+ Version 1.0 (Bt848)/ Terra TValue Version 1.0/ Vobis TV-Boostar",
...@@ -622,6 +648,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -622,6 +648,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000}, .audiomux = { 0x20000, 0x30000, 0x10000, 0, 0x40000},
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.audio_hook = terratv_audio, .audio_hook = terratv_audio,
},{ },{
.name = "Hauppauge WinCam newer (bt878)", .name = "Hauppauge WinCam newer (bt878)",
...@@ -634,6 +661,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -634,6 +661,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 1, 2, 3, 4}, .audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50", .name = "Lifeview FlyVideo 98/ MAXI TV Video PCI2 LR50",
.video_inputs = 4, .video_inputs = 4,
...@@ -645,6 +673,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -645,6 +673,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_SECAM, .tuner_type = TUNER_PHILIPS_SECAM,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x1c ---------------------------------- */ /* ---- card 0x1c ---------------------------------- */
...@@ -658,6 +687,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -658,6 +687,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000}, .audiomux = { 0x20000, 0x30000, 0x10000, 0x00000, 0x40000},
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.audio_hook = terratv_audio, .audio_hook = terratv_audio,
/* GPIO wiring: /* GPIO wiring:
External 20 pin connector (for Active Radio Upgrade board) External 20 pin connector (for Active Radio Upgrade board)
...@@ -688,7 +718,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -688,7 +718,7 @@ struct tvcard bttv_tvcards[] = {
1a0000 : TV Stereo 1a0000 : TV Stereo
30000 : Radio 30000 : Radio
40000 : Mute 40000 : Mute
*/ */
},{ },{
/* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */ /* Jannik Fritsch <jannik@techfak.uni-bielefeld.de> */
...@@ -702,6 +732,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -702,6 +732,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0 }, .audiomux = { 0 },
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.muxsel_hook = PXC200_muxsel, .muxsel_hook = PXC200_muxsel,
},{ },{
...@@ -710,11 +741,12 @@ struct tvcard bttv_tvcards[] = { ...@@ -710,11 +741,12 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 1, .audio_inputs = 1,
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.gpiomask = 0x1800, //0x8dfe00 .gpiomask = 0x1800, /* 0x8dfe00 */
.muxsel = { 2, 3, 1, 1}, .muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 }, .audiomux = { 0, 0x0800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Formac iProTV, Formac ProTV I (bt848)", .name = "Formac iProTV, Formac ProTV I (bt848)",
.video_inputs = 4, .video_inputs = 4,
...@@ -726,6 +758,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -726,6 +758,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 1, 0, 0, 0, 0 }, .audiomux = { 1, 0, 0, 0, 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x20 ---------------------------------- */ /* ---- card 0x20 ---------------------------------- */
...@@ -739,6 +772,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -739,6 +772,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0 }, .audiomux = { 0 },
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = 4, .tuner_type = 4,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Terratec TerraTValue Version Bt878", .name = "Terratec TerraTValue Version Bt878",
.video_inputs = 3, .video_inputs = 3,
...@@ -751,13 +785,14 @@ struct tvcard bttv_tvcards[] = { ...@@ -751,13 +785,14 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Leadtek WinFast 2000/ WinFast 2000 XP", .name = "Leadtek WinFast 2000/ WinFast 2000 XP",
.video_inputs = 4, .video_inputs = 4,
.audio_inputs = 1, .audio_inputs = 1,
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 1, 0}, // TV, CVid, SVid, CVid over SVid connector .muxsel = { 2, 3, 1, 1, 0}, /* TV, CVid, SVid, CVid over SVid connector */
/* Alexander Varakin <avarakin@hotmail.com> [stereo version] */ /* Alexander Varakin <avarakin@hotmail.com> [stereo version] */
.gpiomask = 0xb33000, .gpiomask = 0xb33000,
.audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 }, .audiomux = { 0x122000,0x1000,0x0000,0x620000,0x800000 },
...@@ -775,7 +810,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -775,7 +810,8 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
.tuner_type = 5, // default for now, gpio reads BFFF06 for Pal bg+dk .tuner_type = 5, /* default for now, gpio reads BFFF06 for Pal bg+dk */
.tuner_addr = ADDR_UNSET,
.audio_hook = winfast2000_audio, .audio_hook = winfast2000_audio,
.has_remote = 1, .has_remote = 1,
},{ },{
...@@ -789,6 +825,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -789,6 +825,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800}, .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x24 ---------------------------------- */ /* ---- card 0x24 ---------------------------------- */
...@@ -802,6 +839,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -802,6 +839,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
},{ },{
.name = "Prolink PixelView PlayTV pro", .name = "Prolink PixelView PlayTV pro",
...@@ -815,6 +853,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -815,6 +853,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Askey CPH06X TView99", .name = "Askey CPH06X TView99",
.video_inputs = 4, .video_inputs = 4,
...@@ -827,6 +866,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -827,6 +866,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 1, .tuner_type = 1,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
},{ },{
.name = "Pinnacle PCTV Studio/Rave", .name = "Pinnacle PCTV Studio/Rave",
...@@ -840,6 +880,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -840,6 +880,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x28 ---------------------------------- */ /* ---- card 0x28 ---------------------------------- */
...@@ -854,6 +895,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -854,6 +895,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = TUNER_PHILIPS_NTSC, .tuner_type = TUNER_PHILIPS_NTSC,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -868,6 +910,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -868,6 +910,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
.audio_hook = avermedia_tvphone_audio, .audio_hook = avermedia_tvphone_audio,
},{ },{
...@@ -883,6 +926,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -883,6 +926,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 1, .tuner_type = 1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Little OnAir TV", .name = "Little OnAir TV",
.video_inputs = 3, .video_inputs = 3,
...@@ -894,6 +938,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -894,6 +938,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc}, .audiomux = {0xff9ff6, 0xff9ff6, 0xff1ff7, 0, 0xff3ffc},
.no_msp34xx = 1, .no_msp34xx = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x2c ---------------------------------- */ /* ---- card 0x2c ---------------------------------- */
...@@ -908,6 +953,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -908,6 +953,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_NONE, .pll = PLL_NONE,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "MATRIX-Vision MV-Delta 2", .name = "MATRIX-Vision MV-Delta 2",
.video_inputs = 5, .video_inputs = 5,
...@@ -920,6 +966,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -920,6 +966,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Zoltrix Genie TV/FM", .name = "Zoltrix Genie TV/FM",
.video_inputs = 3, .video_inputs = 3,
...@@ -932,6 +979,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -932,6 +979,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 21, .tuner_type = 21,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Terratec TV/Radio+", .name = "Terratec TV/Radio+",
.video_inputs = 3, .video_inputs = 3,
...@@ -945,6 +993,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -945,6 +993,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_35, .pll = PLL_35,
.tuner_type = 1, .tuner_type = 1,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -960,6 +1009,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -960,6 +1009,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "IODATA GV-BCTV3/PCI", .name = "IODATA GV-BCTV3/PCI",
.video_inputs = 3, .video_inputs = 3,
...@@ -972,6 +1022,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -972,6 +1022,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_ALPS_TSHC6_NTSC, .tuner_type = TUNER_ALPS_TSHC6_NTSC,
.tuner_addr = ADDR_UNSET,
.audio_hook = gvbctv3pci_audio, .audio_hook = gvbctv3pci_audio,
},{ },{
.name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP", .name = "Prolink PV-BT878P+4E / PixelView PlayTV PAK / Lenco MXTV-9578 CP",
...@@ -986,6 +1037,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -986,6 +1037,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL_I, .tuner_type = TUNER_PHILIPS_PAL_I,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
/* GPIO wiring: (different from Rev.4C !) /* GPIO wiring: (different from Rev.4C !)
GPIO17: U4.A0 (first hef4052bt) GPIO17: U4.A0 (first hef4052bt)
...@@ -1007,6 +1059,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1007,6 +1059,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 1, 2, 3, 4}, .audiomux = { 0, 1, 2, 3, 4},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */, .tuner_type = -1 /* TUNER_ALPS_TMDH2_NTSC */,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x34 ---------------------------------- */ /* ---- card 0x34 ---------------------------------- */
...@@ -1031,6 +1084,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1031,6 +1084,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Claas Langbehn <claas@bigfoot.com>, /* Claas Langbehn <claas@bigfoot.com>,
Sven Grothklags <sven@upb.de> */ Sven Grothklags <sven@upb.de> */
...@@ -1045,6 +1099,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1045,6 +1099,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
},{ },{
/* Tim Rstermundt <rosterm@uni-muenster.de> /* Tim Rstermundt <rosterm@uni-muenster.de>
...@@ -1066,6 +1121,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1066,6 +1121,7 @@ struct tvcard bttv_tvcards[] = {
0x0880: Tuner A2 stereo */ 0x0880: Tuner A2 stereo */
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Miguel Angel Alvarez <maacruz@navegalia.com> /* Miguel Angel Alvarez <maacruz@navegalia.com>
old Easy TV BT848 version (model CPH031) */ old Easy TV BT848 version (model CPH031) */
...@@ -1080,6 +1136,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1080,6 +1136,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_TEMIC_PAL, .tuner_type = TUNER_TEMIC_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x38 ---------------------------------- */ /* ---- card 0x38 ---------------------------------- */
...@@ -1094,6 +1151,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1094,6 +1151,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 }, .audiomux = { 0, 0x800, 0x1000, 0x1000, 0x1800, 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 5, .tuner_type = 5,
.tuner_addr = ADDR_UNSET,
},{ },{
/* This is the ultimate cheapo capture card /* This is the ultimate cheapo capture card
* just a BT848A on a small PCB! * just a BT848A on a small PCB!
...@@ -1110,6 +1168,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1110,6 +1168,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_35, .pll = PLL_35,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Daniel Herrington <daniel.herrington@home.com> */ /* Daniel Herrington <daniel.herrington@home.com> */
.name = "Askey CPH060/ Phoebe TV Master Only (No FM)", .name = "Askey CPH060/ Phoebe TV Master Only (No FM)",
...@@ -1123,6 +1182,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1123,6 +1182,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_TEMIC_4036FY5_NTSC, .tuner_type = TUNER_TEMIC_4036FY5_NTSC,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Matti Mottus <mottus@physic.ut.ee> */ /* Matti Mottus <mottus@physic.ut.ee> */
.name = "Askey CPH03x TV Capturer", .name = "Askey CPH03x TV Capturer",
...@@ -1135,6 +1195,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1135,6 +1195,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 2,0,0,0,1 }, .audiomux = { 2,0,0,0,1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 0, .tuner_type = 0,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x3c ---------------------------------- */ /* ---- card 0x3c ---------------------------------- */
...@@ -1149,7 +1210,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1149,7 +1210,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 2, 0, 0, 1, 8}, .audiomux = { 2, 0, 0, 1, 8},
.pll = PLL_35, .pll = PLL_35,
.tuner_type = TUNER_TEMIC_PAL, .tuner_type = TUNER_TEMIC_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Adrian Cox <adrian@humboldt.co.uk */ /* Adrian Cox <adrian@humboldt.co.uk */
.name = "AG Electronics GMV1", .name = "AG Electronics GMV1",
...@@ -1164,6 +1225,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1164,6 +1225,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Miguel Angel Alvarez <maacruz@navegalia.com> /* Miguel Angel Alvarez <maacruz@navegalia.com>
new Easy TV BT878 version (model CPH061) new Easy TV BT878 version (model CPH061)
...@@ -1179,6 +1241,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1179,6 +1241,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Lukas Gebauer <geby@volny.cz> */ /* Lukas Gebauer <geby@volny.cz> */
.name = "ATI TV-Wonder", .name = "ATI TV-Wonder",
...@@ -1191,6 +1254,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1191,6 +1254,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0xbffe, 0, 0xbfff, 0, 0xbffe}, .audiomux = { 0xbffe, 0, 0xbfff, 0, 0xbffe},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x40 ---------------------------------- */ /* ---- card 0x40 ---------------------------------- */
...@@ -1206,6 +1270,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1206,6 +1270,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL, .tuner_type = TUNER_TEMIC_4006FN5_MULTI_PAL,
.tuner_addr = ADDR_UNSET,
},{ },{
/* DeeJay <deejay@westel900.net (2000S) */ /* DeeJay <deejay@westel900.net (2000S) */
.name = "Lifeview FlyVideo 2000S LR90", .name = "Lifeview FlyVideo 2000S LR90",
...@@ -1225,6 +1290,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1225,6 +1290,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 5, .tuner_type = 5,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Terratec TValueRadio", .name = "Terratec TValueRadio",
.video_inputs = 3, .video_inputs = 3,
...@@ -1237,6 +1303,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1237,6 +1303,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
},{ },{
/* TANAKA Kei <peg00625@nifty.com> */ /* TANAKA Kei <peg00625@nifty.com> */
...@@ -1251,25 +1318,27 @@ struct tvcard bttv_tvcards[] = { ...@@ -1251,25 +1318,27 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_SHARP_2U5JF5540_NTSC, .tuner_type = TUNER_SHARP_2U5JF5540_NTSC,
.tuner_addr = ADDR_UNSET,
.audio_hook = gvbctv3pci_audio, .audio_hook = gvbctv3pci_audio,
},{ },{
/* ---- card 0x44 ---------------------------------- */ /* ---- card 0x44 ---------------------------------- */
.name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)", .name = "3Dfx VoodooTV FM (Euro), VoodooTV 200 (USA)",
// try "insmod msp3400 simple=0" if you have /* try "insmod msp3400 simple=0" if you have
// sound problems with this card. * sound problems with this card. */
.video_inputs = 4, .video_inputs = 4,
.audio_inputs = 1, .audio_inputs = 1,
.tuner = 0, .tuner = 0,
.svhs = -1, .svhs = -1,
.gpiomask = 0x4f8a00, .gpiomask = 0x4f8a00,
// 0x100000: 1=MSP enabled (0=disable again) /* 0x100000: 1=MSP enabled (0=disable again)
// 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) * 0x010000: Connected to "S0" on tda9880 (0=Pal/BG, 1=NTSC) */
.audiomux = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff}, .audiomux = {0x947fff, 0x987fff,0x947fff,0x947fff, 0x947fff},
// tvtuner, radio, external,internal, mute, stereo /* tvtuner, radio, external,internal, mute, stereo
/* tuner, Composit, SVid, Composit-on-Svid-adapter*/ * tuner, Composit, SVid, Composit-on-Svid-adapter */
.muxsel = { 2, 3 ,0 ,1}, .muxsel = { 2, 3 ,0 ,1},
.tuner_type = TUNER_MT2032, .tuner_type = TUNER_MT2032,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -1279,6 +1348,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1279,6 +1348,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.muxsel = { 2 }, .muxsel = { 2 },
.gpiomask = 0 .gpiomask = 0
...@@ -1291,10 +1361,11 @@ struct tvcard bttv_tvcards[] = { ...@@ -1291,10 +1361,11 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.gpiomask = 15, .gpiomask = 15,
.muxsel = { 2, 3, 1, 1}, .muxsel = { 2, 3, 1, 1},
.audiomux = { 0, 0, 11, 7, 13, 0}, // TV and Radio with same GPIO ! .audiomux = { 0, 0, 11, 7, 13, 0}, /* TV and Radio with same GPIO ! */
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 25, .tuner_type = 25,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
/* GPIO wiring: /* GPIO wiring:
GPIO0: U4.A0 (hef4052bt) GPIO0: U4.A0 (hef4052bt)
...@@ -1309,9 +1380,11 @@ struct tvcard bttv_tvcards[] = { ...@@ -1309,9 +1380,11 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 1}, // AV1, AV2, SVHS, CVid adapter on SVHS .muxsel = { 2, 3, 1, 1}, /* AV1, AV2, SVHS, CVid adapter on SVHS */
.pll = PLL_28, .pll = PLL_28,
.no_msp34xx = 1, .no_msp34xx = 1,
.tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x48 ---------------------------------- */ /* ---- card 0x48 ---------------------------------- */
...@@ -1329,8 +1402,9 @@ struct tvcard bttv_tvcards[] = { ...@@ -1329,8 +1402,9 @@ struct tvcard bttv_tvcards[] = {
.no_tda9875 = 1, .no_tda9875 = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 5, .tuner_type = 5,
.audio_hook = pvbt878p9b_audio, // Note: not all cards have stereo .tuner_addr = ADDR_UNSET,
.has_radio = 1, // Note: not all cards have radio .audio_hook = pvbt878p9b_audio, /* Note: not all cards have stereo */
.has_radio = 1, /* Note: not all cards have radio */
.has_remote = 1, .has_remote = 1,
/* GPIO wiring: /* GPIO wiring:
GPIO0: A0 hef4052 GPIO0: A0 hef4052
...@@ -1352,6 +1426,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1352,6 +1426,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0 }, .audiomux = { 0 },
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Miguel Freitas <miguel@cetuc.puc-rio.br> */ /* Miguel Freitas <miguel@cetuc.puc-rio.br> */
.name = "RemoteVision MX (RV605)", .name = "RemoteVision MX (RV605)",
...@@ -1366,6 +1441,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1366,6 +1441,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.muxsel_hook = rv605_muxsel, .muxsel_hook = rv605_muxsel,
},{ },{
.name = "Powercolor MTV878/ MTV878R/ MTV878F", .name = "Powercolor MTV878/ MTV878R/ MTV878F",
...@@ -1373,11 +1449,12 @@ struct tvcard bttv_tvcards[] = { ...@@ -1373,11 +1449,12 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 2, .audio_inputs = 2,
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.gpiomask = 0x1C800F, // Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset .gpiomask = 0x1C800F, /* Bit0-2: Audio select, 8-12:remote control 14:remote valid 15:remote reset */
.muxsel = { 2, 1, 1, }, .muxsel = { 2, 1, 1, },
.audiomux = { 0, 1, 2, 2, 4 }, .audiomux = { 0, 1, 2, 2, 4 },
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -1393,6 +1470,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1393,6 +1470,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 2, 3, 1, 1 }, .muxsel = { 2, 3, 1, 1 },
.audiomux = { 0, 1, 2, 3, 4, 0 }, .audiomux = { 0, 1, 2, 3, 4, 0 },
.tuner_type = TUNER_PHILIPS_NTSC, .tuner_type = TUNER_PHILIPS_NTSC,
.tuner_addr = ADDR_UNSET,
.audio_hook = windvr_audio, .audio_hook = windvr_audio,
},{ },{
.name = "GrandTec Multi Capture Card (Bt878)", .name = "GrandTec Multi Capture Card (Bt878)",
...@@ -1407,6 +1485,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1407,6 +1485,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF", .name = "Jetway TV/Capture JW-TV878-FBK, Kworld KW-TV878RF",
.video_inputs = 4, .video_inputs = 4,
...@@ -1414,18 +1493,21 @@ struct tvcard bttv_tvcards[] = { ...@@ -1414,18 +1493,21 @@ struct tvcard bttv_tvcards[] = {
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.gpiomask = 7, .gpiomask = 7,
.muxsel = { 2, 3, 1, 1 }, // Tuner, SVid, SVHS, SVid to SVHS connector .muxsel = { 2, 3, 1, 1 }, /* Tuner, SVid, SVHS, SVid to SVHS connector */
.audiomux = { 0 ,0 ,4, 4,4,4},// Yes, this tuner uses the same audio output for TV and FM radio! .audiomux = { 0 ,0 ,4, 4,4,4},/* Yes, this tuner uses the same audio output for TV and FM radio!
// This card lacks external Audio In, so we mute it on Ext. & Int. * This card lacks external Audio In, so we mute it on Ext. & Int.
// The PCB can take a sbx1637/sbx1673, wiring unknown. * The PCB can take a sbx1637/sbx1673, wiring unknown.
// This card lacks PCI subsystem ID, sigh. * This card lacks PCI subsystem ID, sigh.
// audiomux=1: lower volume, 2+3: mute * audiomux=1: lower volume, 2+3: mute
// btwincap uses 0x80000/0x80003 * btwincap uses 0x80000/0x80003
*/
.needs_tvaudio = 0, .needs_tvaudio = 0,
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 5, // Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and .tuner_type = 5,
// radio signal strength indicators work fine. .tuner_addr = ADDR_UNSET,
/* Samsung TCPA9095PC27A (BG+DK), philips compatible, w/FM, stereo and
radio signal strength indicators work fine. */
.has_radio = 1, .has_radio = 1,
/* GPIO Info: /* GPIO Info:
GPIO0,1: HEF4052 A0,A1 GPIO0,1: HEF4052 A0,A1
...@@ -1444,6 +1526,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1444,6 +1526,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 2, 3, 1, 0}, .muxsel = { 2, 3, 1, 0},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x50 ---------------------------------- */ /* ---- card 0x50 ---------------------------------- */
...@@ -1456,6 +1539,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1456,6 +1539,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.gpiomask = 7, .gpiomask = 7,
.audiomux = {7}, .audiomux = {7},
...@@ -1471,6 +1555,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1471,6 +1555,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_NTSC_M, .tuner_type = TUNER_PHILIPS_NTSC_M,
.tuner_addr = ADDR_UNSET,
.audio_hook = gvbctv5pci_audio, .audio_hook = gvbctv5pci_audio,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -1482,6 +1567,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1482,6 +1567,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 3, 2, 0, 1 }, .muxsel = { 3, 2, 0, 1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1494,6 +1580,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1494,6 +1580,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 2, 3, 1 }, .muxsel = { 2, 3, 1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1508,6 +1595,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1508,6 +1595,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 3, 1 }, .muxsel = { 3, 1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1520,6 +1608,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1520,6 +1608,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 0 }, .muxsel = { 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1532,6 +1621,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1532,6 +1621,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 0, 1 }, .muxsel = { 0, 1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1543,7 +1633,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1543,7 +1633,8 @@ struct tvcard bttv_tvcards[] = {
.svhs = -1, .svhs = -1,
.muxsel = { 0 }, .muxsel = { 0 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1557,7 +1648,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1557,7 +1648,8 @@ struct tvcard bttv_tvcards[] = {
.svhs = 1, .svhs = 1,
.muxsel = { 0, 1 }, .muxsel = { 0, 1 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1569,7 +1661,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1569,7 +1661,8 @@ struct tvcard bttv_tvcards[] = {
.svhs = 1, .svhs = 1,
.muxsel = { 2, 3 }, .muxsel = { 2, 3 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1582,6 +1675,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1582,6 +1675,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 2, 3 }, .muxsel = { 2, 3 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1592,6 +1686,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1592,6 +1686,7 @@ struct tvcard bttv_tvcards[] = {
.tuner = -1, .tuner = -1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1605,7 +1700,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1605,7 +1700,8 @@ struct tvcard bttv_tvcards[] = {
.svhs = 1, .svhs = 1,
.muxsel = { 2, 3 }, .muxsel = { 2, 3 },
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, /* must avoid, conflicts with the bt860 */ .no_tda7432 = 1, /* must avoid, conflicts with the bt860 */
...@@ -1616,6 +1712,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1616,6 +1712,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, .svhs = -1,
.gpiomask = 0, .gpiomask = 0,
.muxsel = { 0, 1, 2, 3 }, .muxsel = { 0, 1, 2, 3 },
...@@ -1630,6 +1727,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1630,6 +1727,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 1, .svhs = 1,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
...@@ -1647,19 +1745,20 @@ struct tvcard bttv_tvcards[] = { ...@@ -1647,19 +1745,20 @@ struct tvcard bttv_tvcards[] = {
.tuner = 0, .tuner = 0,
.svhs = 3, .svhs = 3,
.gpiomask = 2, .gpiomask = 2,
// TV, Comp1, Composite over SVID con, SVID /* TV, Comp1, Composite over SVID con, SVID */
.muxsel = { 2, 3, 1, 1}, .muxsel = { 2, 3, 1, 1},
.audiomux = { 2, 2, 0, 0, 0 }, .audiomux = { 2, 2, 0, 0, 0 },
.pll = PLL_28, .pll = PLL_28,
.has_radio = 1, .has_radio = 1,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
/* sound routing: .tuner_addr = ADDR_UNSET,
/* sound routing:
GPIO=0x00,0x01,0x03: mute (?) GPIO=0x00,0x01,0x03: mute (?)
0x02: both TV and radio (tuner: FM1216/I) 0x02: both TV and radio (tuner: FM1216/I)
The card has onboard audio connectors labeled "cdrom" and "board", The card has onboard audio connectors labeled "cdrom" and "board",
not soldered here, though unknown wiring. not soldered here, though unknown wiring.
Card lacks: external audio in, pci subsystem id. Card lacks: external audio in, pci subsystem id.
*/ */
},{ },{
/* ---- card 0x60 ---------------------------------- */ /* ---- card 0x60 ---------------------------------- */
...@@ -1673,6 +1772,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1673,6 +1772,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 0, 1, 2, 3, 4}, .audiomux = { 0, 1, 2, 3, 4},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = 5, .tuner_type = 5,
.tuner_addr = ADDR_UNSET,
.pll = 1, .pll = 1,
},{ },{
.name = "Euresys Picolo", .name = "Euresys Picolo",
...@@ -1686,6 +1786,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1686,6 +1786,8 @@ struct tvcard bttv_tvcards[] = {
.no_tda7432 = 1, .no_tda7432 = 1,
.muxsel = { 2, 0, 1}, .muxsel = { 2, 0, 1},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Luc Van Hoeylandt <luc@e-magic.be> */ /* Luc Van Hoeylandt <luc@e-magic.be> */
.name = "ProVideo PV150", /* 0x4f */ .name = "ProVideo PV150", /* 0x4f */
...@@ -1699,7 +1801,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1699,7 +1801,8 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = UNSET,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Hiroshi Takekawa <sian@big.or.jp> */ /* Hiroshi Takekawa <sian@big.or.jp> */
/* This card lacks subsystem ID */ /* This card lacks subsystem ID */
...@@ -1716,6 +1819,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1716,6 +1819,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 2, .tuner_type = 2,
.tuner_addr = ADDR_UNSET,
.audio_hook = adtvk503_audio, .audio_hook = adtvk503_audio,
},{ },{
...@@ -1731,6 +1835,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1731,6 +1835,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = 5, .tuner_type = 5,
.tuner_addr = ADDR_UNSET,
/* Notes: /* Notes:
- card lacks subsystem ID - card lacks subsystem ID
- stereo variant w/ daughter board with tda9874a @0xb0 - stereo variant w/ daughter board with tda9874a @0xb0
...@@ -1746,17 +1851,20 @@ struct tvcard bttv_tvcards[] = { ...@@ -1746,17 +1851,20 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 1, .audio_inputs = 1,
.tuner = 0, .tuner = 0,
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 1}, // Tuner, CVid, SVid, CVid over SVid connector .muxsel = { 2, 3, 1, 1}, /* Tuner, CVid, SVid, CVid over SVid connector */
.gpiomask = 0, .gpiomask = 0,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
.tuner_type = 1, .tuner_type = 1,
.tuner_addr = ADDR_UNSET,
.has_radio = 1, .has_radio = 1,
.pll = PLL_28, .pll = PLL_28,
/* Bt878, Bt832, FI1246 tuner; no pci subsystem id /* Bt878, Bt832, FI1246 tuner; no pci subsystem id
only internal line out: (4pin header) RGGL only internal line out: (4pin header) RGGL
Radio must be decoded by msp3410d (not routed through)*/ Radio must be decoded by msp3410d (not routed through)*/
// .digital_mode = DIGITAL_MODE_CAMERA, // todo! /*
.digital_mode = DIGITAL_MODE_CAMERA, todo!
*/
},{ },{
/* Chris Willing <chris@vislab.usyd.edu.au> */ /* Chris Willing <chris@vislab.usyd.edu.au> */
.name = "IVC-200", .name = "IVC-200",
...@@ -1764,6 +1872,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1764,6 +1872,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, .svhs = -1,
.gpiomask = 0xdf, .gpiomask = 0xdf,
.muxsel = { 2 }, .muxsel = { 2 },
...@@ -1775,6 +1884,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1775,6 +1884,7 @@ struct tvcard bttv_tvcards[] = {
.tuner = -1, .tuner = -1,
.svhs = -1, .svhs = -1,
.tuner_type = 4, .tuner_type = 4,
.tuner_addr = ADDR_UNSET,
.gpiomask2 = 0xff, .gpiomask2 = 0xff,
.muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 }, .muxsel = { 2,2,2,2, 3,3,3,3, 1,1,1,1, 0,0,0,0 },
.muxsel_hook = xguard_muxsel, .muxsel_hook = xguard_muxsel,
...@@ -1795,6 +1905,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1795,6 +1905,7 @@ struct tvcard bttv_tvcards[] = {
.no_tda7432 = 1, .no_tda7432 = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.has_dvb = 1, .has_dvb = 1,
.no_gpioirq = 1, .no_gpioirq = 1,
},{ },{
...@@ -1811,6 +1922,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1811,6 +1922,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* M.Klahr@phytec.de */ /* M.Klahr@phytec.de */
.name = "PHYTEC VD-009-X1 MiniDIN (bt878)", .name = "PHYTEC VD-009-X1 MiniDIN (bt878)",
...@@ -1824,6 +1936,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1824,6 +1936,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "PHYTEC VD-009-X1 Combi (bt878)", .name = "PHYTEC VD-009-X1 Combi (bt878)",
.video_inputs = 4, .video_inputs = 4,
...@@ -1836,6 +1949,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1836,6 +1949,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* ---- card 0x6c ---------------------------------- */ /* ---- card 0x6c ---------------------------------- */
...@@ -1853,6 +1967,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1853,6 +1967,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "PHYTEC VD-009 Combi (bt878)", .name = "PHYTEC VD-009 Combi (bt878)",
.video_inputs = 10, .video_inputs = 10,
...@@ -1868,12 +1983,14 @@ struct tvcard bttv_tvcards[] = { ...@@ -1868,12 +1983,14 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 1, .needs_tvaudio = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
.name = "IVC-100", .name = "IVC-100",
.video_inputs = 4, .video_inputs = 4,
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, .svhs = -1,
.gpiomask = 0xdf, .gpiomask = 0xdf,
.muxsel = { 2, 3, 1, 0 }, .muxsel = { 2, 3, 1, 0 },
...@@ -1885,6 +2002,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1885,6 +2002,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, /* card has no audio */ .audio_inputs = 0, /* card has no audio */
.tuner = -1, /* card has no tuner */ .tuner = -1, /* card has no tuner */
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, /* card has no svhs */ .svhs = -1, /* card has no svhs */
.needs_tvaudio = 0, .needs_tvaudio = 0,
.no_msp34xx = 1, .no_msp34xx = 1,
...@@ -1905,6 +2023,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1905,6 +2023,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 0}, .muxsel = { 2, 3, 1, 0},
.tuner_type = TUNER_PHILIPS_ATSC, .tuner_type = TUNER_PHILIPS_ATSC,
.tuner_addr = ADDR_UNSET,
.has_dvb = 1, .has_dvb = 1,
},{ },{
.name = "Twinhan DST + clones", .name = "Twinhan DST + clones",
...@@ -1912,6 +2031,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1912,6 +2031,7 @@ struct tvcard bttv_tvcards[] = {
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
.tuner_type = TUNER_ABSENT, .tuner_type = TUNER_ABSENT,
.tuner_addr = ADDR_UNSET,
.no_video = 1, .no_video = 1,
.has_dvb = 1, .has_dvb = 1,
},{ },{
...@@ -1919,12 +2039,13 @@ struct tvcard bttv_tvcards[] = { ...@@ -1919,12 +2039,13 @@ struct tvcard bttv_tvcards[] = {
.video_inputs = 3, .video_inputs = 3,
.audio_inputs = 0, .audio_inputs = 0,
.svhs = 1, .svhs = 1,
.tuner = -1, // no tuner .tuner = -1,
.muxsel = { 3, 1, 1, 3}, // Vid In, SVid In, Vid over SVid in connector .muxsel = { 3, 1, 1, 3}, /* Vid In, SVid In, Vid over SVid in connector */
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
.tuner_type = TUNER_ABSENT, .tuner_type = TUNER_ABSENT,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
},{ },{
.name = "Teppro TEV-560/InterVision IV-560", .name = "Teppro TEV-560/InterVision IV-560",
...@@ -1937,6 +2058,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1937,6 +2058,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = { 1, 1, 1, 1, 0}, .audiomux = { 1, 1, 1, 1, 0},
.needs_tvaudio = 1, .needs_tvaudio = 1,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.pll = PLL_35, .pll = PLL_35,
},{ },{
...@@ -1947,6 +2069,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1947,6 +2069,7 @@ struct tvcard bttv_tvcards[] = {
.tuner = -1, .tuner = -1,
.svhs = -1, .svhs = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
.muxsel = { 2, 2, 2, 2}, .muxsel = { 2, 2, 2, 2},
.gpiomask = 0x3F, .gpiomask = 0x3F,
...@@ -1962,6 +2085,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1962,6 +2085,7 @@ struct tvcard bttv_tvcards[] = {
.audiomux = {0, 0, 0, 0, 0x000003, 0}, .audiomux = {0, 0, 0, 0, 0x000003, 0},
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
},{ },{
/* http://linuxmedialabs.com */ /* http://linuxmedialabs.com */
...@@ -1975,6 +2099,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -1975,6 +2099,8 @@ struct tvcard bttv_tvcards[] = {
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
.needs_tvaudio = 0, .needs_tvaudio = 0,
.tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Helmroos Harri <harri.helmroos@pp.inet.fi> */ /* Helmroos Harri <harri.helmroos@pp.inet.fi> */
.name = "Tekram M205 PRO", .name = "Tekram M205 PRO",
...@@ -1982,6 +2108,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -1982,6 +2108,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 1, .audio_inputs = 1,
.tuner = 0, .tuner = 0,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.svhs = 2, .svhs = 2,
.needs_tvaudio = 0, .needs_tvaudio = 0,
.gpiomask = 0x68, .gpiomask = 0x68,
...@@ -2004,6 +2131,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2004,6 +2131,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, .has_remote = 1,
.has_radio = 1, .has_radio = 1,
},{ },{
...@@ -2026,6 +2154,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -2026,6 +2154,8 @@ struct tvcard bttv_tvcards[] = {
.pll = PLL_28, .pll = PLL_28,
.needs_tvaudio = 0, .needs_tvaudio = 0,
.muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/ .muxsel_hook = picolo_tetra_muxsel,/*Required as it doesn't follow the classic input selection policy*/
.tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Spirit TV Tuner from http://spiritmodems.com.au */ /* Spirit TV Tuner from http://spiritmodems.com.au */
/* Stafford Goodsell <surge@goliath.homeunix.org> */ /* Stafford Goodsell <surge@goliath.homeunix.org> */
...@@ -2038,6 +2168,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2038,6 +2168,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel = { 2, 1, 1 }, .muxsel = { 2, 1, 1 },
.audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00}, .audiomux = { 0x02, 0x00, 0x00, 0x00, 0x00},
.tuner_type = TUNER_TEMIC_PAL, .tuner_type = TUNER_TEMIC_PAL,
.tuner_addr = ADDR_UNSET,
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
},{ },{
...@@ -2047,6 +2178,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2047,6 +2178,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 1, .svhs = 1,
.tuner = -1, .tuner = -1,
.tuner_type = TUNER_ABSENT, .tuner_type = TUNER_ABSENT,
.tuner_addr = ADDR_UNSET,
.muxsel = { 3 , 3 }, .muxsel = { 3 , 3 },
.no_msp34xx = 1, .no_msp34xx = 1,
.no_tda9875 = 1, .no_tda9875 = 1,
...@@ -2069,6 +2201,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2069,6 +2201,7 @@ struct tvcard bttv_tvcards[] = {
.no_tda7432 = 1, .no_tda7432 = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.has_dvb = 1, .has_dvb = 1,
.no_gpioirq = 1, .no_gpioirq = 1,
.has_remote = 1, .has_remote = 1,
...@@ -2087,6 +2220,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2087,6 +2220,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* andre.schwarz@matrix-vision.de */ /* andre.schwarz@matrix-vision.de */
.name = "MATRIX Vision Sigma-SLC", .name = "MATRIX Vision Sigma-SLC",
...@@ -2101,6 +2235,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2101,6 +2235,7 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* BTTV_APAC_VIEWCOMP */ /* BTTV_APAC_VIEWCOMP */
/* Attila Kondoros <attila.kondoros@chello.hu> */ /* Attila Kondoros <attila.kondoros@chello.hu> */
...@@ -2116,6 +2251,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2116,6 +2251,7 @@ struct tvcard bttv_tvcards[] = {
.needs_tvaudio = 0, .needs_tvaudio = 0,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_PAL, .tuner_type = TUNER_PHILIPS_PAL,
.tuner_addr = ADDR_UNSET,
.has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */ .has_remote = 1, /* miniremote works, see ir-kbd-gpio.c */
.has_radio = 1, /* not every card has radio */ .has_radio = 1, /* not every card has radio */
},{ },{
...@@ -2131,6 +2267,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2131,6 +2267,7 @@ struct tvcard bttv_tvcards[] = {
.no_video = 1, .no_video = 1,
.has_dvb = 1, .has_dvb = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
},{ },{
/* Steven <photon38@pchome.com.tw> */ /* Steven <photon38@pchome.com.tw> */
.name = "V-Gear MyVCD", .name = "V-Gear MyVCD",
...@@ -2144,8 +2281,8 @@ struct tvcard bttv_tvcards[] = { ...@@ -2144,8 +2281,8 @@ struct tvcard bttv_tvcards[] = {
.no_msp34xx = 1, .no_msp34xx = 1,
.pll = PLL_28, .pll = PLL_28,
.tuner_type = TUNER_PHILIPS_NTSC_M, .tuner_type = TUNER_PHILIPS_NTSC_M,
.tuner_addr = ADDR_UNSET,
.has_radio = 0, .has_radio = 0,
// .has_remote = 1,
},{ },{
/* Rick C <cryptdragoon@gmail.com> */ /* Rick C <cryptdragoon@gmail.com> */
.name = "Super TV Tuner", .name = "Super TV Tuner",
...@@ -2155,6 +2292,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2155,6 +2292,7 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 0}, .muxsel = { 2, 3, 1, 0},
.tuner_type = TUNER_PHILIPS_NTSC, .tuner_type = TUNER_PHILIPS_NTSC,
.tuner_addr = ADDR_UNSET,
.gpiomask = 0x008007, .gpiomask = 0x008007,
.audiomux = { 0, 0x000001,0,0, 0}, .audiomux = { 0, 0x000001,0,0, 0},
.needs_tvaudio = 1, .needs_tvaudio = 1,
...@@ -2172,6 +2310,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2172,6 +2310,7 @@ struct tvcard bttv_tvcards[] = {
.no_tda9875 = 1, .no_tda9875 = 1,
.no_tda7432 = 1, .no_tda7432 = 1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.muxsel_hook = tibetCS16_muxsel, .muxsel_hook = tibetCS16_muxsel,
}, },
{ {
...@@ -2191,6 +2330,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2191,6 +2330,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, .svhs = -1,
/* GPIO bits 0-9 used for analog switch: /* GPIO bits 0-9 used for analog switch:
* 00 - 03: camera selector * 00 - 03: camera selector
...@@ -2221,6 +2361,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2221,6 +2361,7 @@ struct tvcard bttv_tvcards[] = {
.audio_inputs = 0, .audio_inputs = 0,
.tuner = -1, .tuner = -1,
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.svhs = -1, .svhs = -1,
.gpiomask = 0x010000, .gpiomask = 0x010000,
.no_gpioirq = 1, .no_gpioirq = 1,
...@@ -2232,7 +2373,7 @@ struct tvcard bttv_tvcards[] = { ...@@ -2232,7 +2373,7 @@ struct tvcard bttv_tvcards[] = {
.muxsel_hook = kodicom4400r_muxsel, .muxsel_hook = kodicom4400r_muxsel,
}, },
{ {
/* ---- card 0x85---------------------------------- */ /* ---- card 0x86---------------------------------- */
/* Michael Henson <mhenson@clarityvi.com> */ /* Michael Henson <mhenson@clarityvi.com> */
/* Adlink RTV24 with special unlock codes */ /* Adlink RTV24 with special unlock codes */
.name = "Adlink RTV24", .name = "Adlink RTV24",
...@@ -2242,8 +2383,41 @@ struct tvcard bttv_tvcards[] = { ...@@ -2242,8 +2383,41 @@ struct tvcard bttv_tvcards[] = {
.svhs = 2, .svhs = 2,
.muxsel = { 2, 3, 1, 0}, .muxsel = { 2, 3, 1, 0},
.tuner_type = -1, .tuner_type = -1,
.tuner_addr = ADDR_UNSET,
.pll = PLL_28, .pll = PLL_28,
},
{
/* ---- card 0x87---------------------------------- */
/* Michael Krufky <mkrufky@m1k.net> */
.name = "DVICO FusionHDTV 5 Lite",
.tuner = 0,
.tuner_type = TUNER_LG_TDVS_H062F,
.tuner_addr = ADDR_UNSET,
.video_inputs = 2,
.audio_inputs = 1,
.svhs = 2,
.muxsel = { 2, 3 },
.gpiomask = 0x00e00007,
.audiomux = { 0x00400005, 0, 0, 0, 0, 0 },
.no_msp34xx = 1,
.no_tda9875 = 1,
.no_tda7432 = 1,
},{
/* ---- card 0x88---------------------------------- */
/* Mauro Carvalho Chehab <mchehab@brturbo.com.br> */
.name = "Acorp Y878F",
.video_inputs = 3,
.audio_inputs = 1,
.tuner = 0,
.svhs = 2,
.gpiomask = 0x01fe00,
.muxsel = { 2, 3, 1, 1},
.audiomux = { 0x001e00, 0, 0x018000, 0x014000, 0x002000, 0 },
.needs_tvaudio = 1,
.pll = PLL_28,
.tuner_type = TUNER_YMEC_TVF66T5_B_DFF,
.tuner_addr = 0xc1 >>1,
.has_radio = 1,
}}; }};
static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards);
...@@ -2355,32 +2529,32 @@ static void flyvideo_gpio(struct bttv *btv) ...@@ -2355,32 +2529,32 @@ static void flyvideo_gpio(struct bttv *btv)
int tuner=-1,ttype; int tuner=-1,ttype;
gpio_inout(0xffffff, 0); gpio_inout(0xffffff, 0);
udelay(8); // without this we would see the 0x1800 mask udelay(8); /* without this we would see the 0x1800 mask */
gpio = gpio_read(); gpio = gpio_read();
/* FIXME: must restore OUR_EN ??? */ /* FIXME: must restore OUR_EN ??? */
// all cards provide GPIO info, some have an additional eeprom /* all cards provide GPIO info, some have an additional eeprom
// LR50: GPIO coding can be found lower right CP1 .. CP9 * LR50: GPIO coding can be found lower right CP1 .. CP9
// CP9=GPIO23 .. CP1=GPIO15; when OPEN, the corresponding GPIO reads 1. * CP9=GPIO23 .. CP1=GPIO15; when OPEN, the corresponding GPIO reads 1.
// GPIO14-12: n.c. * GPIO14-12: n.c.
// LR90: GP9=GPIO23 .. GP1=GPIO15 (right above the bt878) * LR90: GP9=GPIO23 .. GP1=GPIO15 (right above the bt878)
// lowest 3 bytes are remote control codes (no handshake needed)
// xxxFFF: No remote control chip soldered
// xxxF00(LR26/LR50), xxxFE0(LR90): Remote control chip (LVA001 or CF45) soldered
// Note: Some bits are Audio_Mask !
* lowest 3 bytes are remote control codes (no handshake needed)
* xxxFFF: No remote control chip soldered
* xxxF00(LR26/LR50), xxxFE0(LR90): Remote control chip (LVA001 or CF45) soldered
* Note: Some bits are Audio_Mask !
*/
ttype=(gpio&0x0f0000)>>16; ttype=(gpio&0x0f0000)>>16;
switch(ttype) { switch(ttype) {
case 0x0: tuner=2; // NTSC, e.g. TPI8NSR11P case 0x0: tuner=2; /* NTSC, e.g. TPI8NSR11P */
break; break;
case 0x2: tuner=39;// LG NTSC (newer TAPC series) TAPC-H701P case 0x2: tuner=39;/* LG NTSC (newer TAPC series) TAPC-H701P */
break; break;
case 0x4: tuner=5; // Philips PAL TPI8PSB02P, TPI8PSB12P, TPI8PSB12D or FI1216, FM1216 case 0x4: tuner=5; /* Philips PAL TPI8PSB02P, TPI8PSB12P, TPI8PSB12D or FI1216, FM1216 */
break; break;
case 0x6: tuner=37; // LG PAL (newer TAPC series) TAPC-G702P case 0x6: tuner=37;/* LG PAL (newer TAPC series) TAPC-G702P */
break; break;
case 0xC: tuner=3; // Philips SECAM(+PAL) FQ1216ME or FI1216MF case 0xC: tuner=3; /* Philips SECAM(+PAL) FQ1216ME or FI1216MF */
break; break;
default: default:
printk(KERN_INFO "bttv%d: FlyVideo_gpio: unknown tuner type.\n", btv->c.nr); 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,15 +2562,16 @@ static void flyvideo_gpio(struct bttv *btv)
has_remote = gpio & 0x800000; has_remote = gpio & 0x800000;
has_radio = gpio & 0x400000; has_radio = gpio & 0x400000;
// unknown 0x200000; /* unknown 0x200000;
// unknown2 0x100000; * unknown2 0x100000; */
is_capture_only = !(gpio & 0x008000); //GPIO15 is_capture_only = !(gpio & 0x008000); /* GPIO15 */
has_tda9820_tda9821 = !(gpio & 0x004000); has_tda9820_tda9821 = !(gpio & 0x004000);
is_lr90 = !(gpio & 0x002000); // else LR26/LR50 (LR38/LR51 f. capture only) is_lr90 = !(gpio & 0x002000); /* else LR26/LR50 (LR38/LR51 f. capture only) */
// gpio & 0x001000 // output bit for audio routing /*
* gpio & 0x001000 output bit for audio routing */
if(is_capture_only) if(is_capture_only)
tuner=4; // No tuner present tuner=4; /* No tuner present */
printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n", printk(KERN_INFO "bttv%d: FlyVideo Radio=%s RemoteControl=%s Tuner=%d gpio=0x%06x\n",
btv->c.nr, has_radio? "yes":"no ", has_remote? "yes":"no ", tuner, gpio); 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,15 +2579,15 @@ static void flyvideo_gpio(struct bttv *btv)
btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ", btv->c.nr, is_lr90?"yes":"no ", has_tda9820_tda9821?"yes":"no ",
is_capture_only?"yes":"no "); is_capture_only?"yes":"no ");
if(tuner!= -1) // only set if known tuner autodetected, else let insmod option through if(tuner!= -1) /* only set if known tuner autodetected, else let insmod option through */
btv->tuner_type = tuner; btv->tuner_type = tuner;
btv->has_radio = has_radio; btv->has_radio = has_radio;
// LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80 /* LR90 Audio Routing is done by 2 hef4052, so Audio_Mask has 4 bits: 0x001c80
// LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00 * LR26/LR50 only has 1 hef4052, Audio_Mask 0x000c00
// Audio options: from tuner, from tda9821/tda9821(mono,stereo,sap), from tda9874, ext., mute * Audio options: from tuner, from tda9821/tda9821(mono,stereo,sap), from tda9874, ext., mute */
if(has_tda9820_tda9821) btv->audio_hook = lt9415_audio; if(has_tda9820_tda9821) btv->audio_hook = lt9415_audio;
//todo: if(has_tda9874) btv->audio_hook = fv2000s_audio; /* todo: if(has_tda9874) btv->audio_hook = fv2000s_audio; */
} }
static int miro_tunermap[] = { 0,6,2,3, 4,5,6,0, 3,0,4,5, 5,2,16,1, 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,6 +2808,8 @@ void __devinit bttv_init_card1(struct bttv *btv)
void __devinit bttv_init_card2(struct bttv *btv) void __devinit bttv_init_card2(struct bttv *btv)
{ {
int tda9887; int tda9887;
int addr=ADDR_UNSET;
btv->tuner_type = -1; btv->tuner_type = -1;
if (BTTV_UNKNOWN == btv->c.type) { if (BTTV_UNKNOWN == btv->c.type) {
...@@ -2773,6 +2950,9 @@ void __devinit bttv_init_card2(struct bttv *btv) ...@@ -2773,6 +2950,9 @@ void __devinit bttv_init_card2(struct bttv *btv)
btv->pll.pll_current = -1; btv->pll.pll_current = -1;
/* tuner configuration (from card list / autodetect / insmod option) */ /* tuner configuration (from card list / autodetect / insmod option) */
if (ADDR_UNSET != bttv_tvcards[btv->c.type].tuner_addr)
addr = bttv_tvcards[btv->c.type].tuner_addr;
if (UNSET != bttv_tvcards[btv->c.type].tuner_type) if (UNSET != bttv_tvcards[btv->c.type].tuner_type)
if(UNSET == btv->tuner_type) if(UNSET == btv->tuner_type)
btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type; btv->tuner_type = bttv_tvcards[btv->c.type].tuner_type;
...@@ -2787,7 +2967,7 @@ void __devinit bttv_init_card2(struct bttv *btv) ...@@ -2787,7 +2967,7 @@ void __devinit bttv_init_card2(struct bttv *btv)
tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV; tun_setup.mode_mask = T_RADIO | T_ANALOG_TV | T_DIGITAL_TV;
tun_setup.type = btv->tuner_type; tun_setup.type = btv->tuner_type;
tun_setup.addr = ADDR_UNSET; tun_setup.addr = addr;
bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup); bttv_call_i2c_clients(btv, TUNER_SET_TYPE_ADDR, &tun_setup);
} }
...@@ -2902,7 +3082,7 @@ static int terratec_active_radio_upgrade(struct bttv *btv) ...@@ -2902,7 +3082,7 @@ static int terratec_active_radio_upgrade(struct bttv *btv)
btv->mbox_csel = 1 << 10; btv->mbox_csel = 1 << 10;
freq=88000/62.5; freq=88000/62.5;
tea5757_write(btv, 5 * freq + 0x358); // write 0x1ed8 tea5757_write(btv, 5 * freq + 0x358); /* write 0x1ed8 */
if (0x1ed8 == tea5757_read(btv)) { if (0x1ed8 == tea5757_read(btv)) {
printk("bttv%d: Terratec Active Radio Upgrade found.\n", printk("bttv%d: Terratec Active Radio Upgrade found.\n",
btv->c.nr); btv->c.nr);
...@@ -3073,7 +3253,7 @@ static void __devinit osprey_eeprom(struct bttv *btv) ...@@ -3073,7 +3253,7 @@ static void __devinit osprey_eeprom(struct bttv *btv)
case 0x0060: case 0x0060:
case 0x0070: case 0x0070:
btv->c.type = BTTV_OSPREY2x0; btv->c.type = BTTV_OSPREY2x0;
//enable output on select control lines /* enable output on select control lines */
gpio_inout(0xffffff,0x000303); gpio_inout(0xffffff,0x000303);
break; break;
default: default:
...@@ -3105,7 +3285,7 @@ static int tuner_1_table[] = { ...@@ -3105,7 +3285,7 @@ static int tuner_1_table[] = {
TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL, TUNER_TEMIC_NTSC, TUNER_TEMIC_PAL,
TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, TUNER_TEMIC_PAL,
TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, TUNER_TEMIC_PAL, TUNER_TEMIC_PAL,
TUNER_TEMIC_4012FY5, TUNER_TEMIC_4012FY5, //TUNER_TEMIC_SECAM TUNER_TEMIC_4012FY5, TUNER_TEMIC_4012FY5, /* TUNER_TEMIC_SECAM */
TUNER_TEMIC_4012FY5, TUNER_TEMIC_PAL}; TUNER_TEMIC_4012FY5, TUNER_TEMIC_PAL};
static void __devinit avermedia_eeprom(struct bttv *btv) static void __devinit avermedia_eeprom(struct bttv *btv)
...@@ -3126,7 +3306,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv) ...@@ -3126,7 +3306,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv)
if (tuner_make == 4) if (tuner_make == 4)
if(tuner_format == 0x09) if(tuner_format == 0x09)
tuner = TUNER_LG_NTSC_NEW_TAPC; // TAPC-G702P tuner = TUNER_LG_NTSC_NEW_TAPC; /* TAPC-G702P */
printk(KERN_INFO "bttv%d: Avermedia eeprom[0x%02x%02x]: tuner=", printk(KERN_INFO "bttv%d: Avermedia eeprom[0x%02x%02x]: tuner=",
btv->c.nr,eeprom_data[0x41],eeprom_data[0x42]); btv->c.nr,eeprom_data[0x41],eeprom_data[0x42]);
...@@ -3143,7 +3323,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv) ...@@ -3143,7 +3323,7 @@ static void __devinit avermedia_eeprom(struct bttv *btv)
/* used on Voodoo TV/FM (Voodoo 200), S0 wired to 0x10000 */ /* used on Voodoo TV/FM (Voodoo 200), S0 wired to 0x10000 */
void bttv_tda9880_setnorm(struct bttv *btv, int norm) void bttv_tda9880_setnorm(struct bttv *btv, int norm)
{ {
// fix up our card entry /* fix up our card entry */
if(norm==VIDEO_MODE_NTSC) { if(norm==VIDEO_MODE_NTSC) {
bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[0]=0x957fff; bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[0]=0x957fff;
bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x957fff; bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x957fff;
...@@ -3154,7 +3334,7 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm) ...@@ -3154,7 +3334,7 @@ void bttv_tda9880_setnorm(struct bttv *btv, int norm)
bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x947fff; bttv_tvcards[BTTV_VOODOOTV_FM].audiomux[4]=0x947fff;
dprintk("bttv_tda9880_setnorm to PAL\n"); dprintk("bttv_tda9880_setnorm to PAL\n");
} }
// set GPIO according /* set GPIO according */
gpio_bits(bttv_tvcards[btv->c.type].gpiomask, gpio_bits(bttv_tvcards[btv->c.type].gpiomask,
bttv_tvcards[btv->c.type].audiomux[btv->audio]); bttv_tvcards[btv->c.type].audiomux[btv->audio]);
} }
...@@ -3447,7 +3627,7 @@ static int tea5757_read(struct bttv *btv) ...@@ -3447,7 +3627,7 @@ static int tea5757_read(struct bttv *btv)
udelay(10); udelay(10);
timeout= jiffies + HZ; timeout= jiffies + HZ;
// wait for DATA line to go low; error if it doesn't /* wait for DATA line to go low; error if it doesn't */
while (bus_in(btv,btv->mbox_data) && time_before(jiffies, timeout)) while (bus_in(btv,btv->mbox_data) && time_before(jiffies, timeout))
schedule(); schedule();
if (bus_in(btv,btv->mbox_data)) { if (bus_in(btv,btv->mbox_data)) {
...@@ -3574,8 +3754,8 @@ gvbctv3pci_audio(struct bttv *btv, struct video_audio *v, int set) ...@@ -3574,8 +3754,8 @@ gvbctv3pci_audio(struct bttv *btv, struct video_audio *v, int set)
con = 0x300; con = 0x300;
if (v->mode & VIDEO_SOUND_STEREO) if (v->mode & VIDEO_SOUND_STEREO)
con = 0x200; con = 0x200;
// if (v->mode & VIDEO_SOUND_MONO) /* if (v->mode & VIDEO_SOUND_MONO)
// con = 0x100; * con = 0x100; */
gpio_bits(0x300, con); gpio_bits(0x300, con);
} else { } else {
v->mode = VIDEO_SOUND_STEREO | v->mode = VIDEO_SOUND_STEREO |
...@@ -3718,7 +3898,7 @@ lt9415_audio(struct bttv *btv, struct video_audio *v, int set) ...@@ -3718,7 +3898,7 @@ lt9415_audio(struct bttv *btv, struct video_audio *v, int set)
} }
} }
// TDA9821 on TerraTV+ Bt848, Bt878 /* TDA9821 on TerraTV+ Bt848, Bt878 */
static void static void
terratv_audio(struct bttv *btv, struct video_audio *v, int set) terratv_audio(struct bttv *btv, struct video_audio *v, int set)
{ {
...@@ -3818,7 +3998,7 @@ fv2000s_audio(struct bttv *btv, struct video_audio *v, int set) ...@@ -3818,7 +3998,7 @@ fv2000s_audio(struct bttv *btv, struct video_audio *v, int set)
} }
if ((v->mode & (VIDEO_SOUND_LANG1 | VIDEO_SOUND_LANG2)) if ((v->mode & (VIDEO_SOUND_LANG1 | VIDEO_SOUND_LANG2))
|| (v->mode & VIDEO_SOUND_STEREO)) { || (v->mode & VIDEO_SOUND_STEREO)) {
val = 0x1080; //-dk-???: 0x0880, 0x0080, 0x1800 ... val = 0x1080; /*-dk-???: 0x0880, 0x0080, 0x1800 ... */
} }
if (val != 0xffff) { if (val != 0xffff) {
gpio_bits(0x1800, val); gpio_bits(0x1800, val);
...@@ -3869,10 +4049,10 @@ adtvk503_audio(struct bttv *btv, struct video_audio *v, int set) ...@@ -3869,10 +4049,10 @@ adtvk503_audio(struct bttv *btv, struct video_audio *v, int set)
{ {
unsigned int con = 0xffffff; unsigned int con = 0xffffff;
//btaor(0x1e0000, ~0x1e0000, BT848_GPIO_OUT_EN); /* btaor(0x1e0000, ~0x1e0000, BT848_GPIO_OUT_EN); */
if (set) { if (set) {
//btor(***, BT848_GPIO_OUT_EN); /* btor(***, BT848_GPIO_OUT_EN); */
if (v->mode & VIDEO_SOUND_LANG1) if (v->mode & VIDEO_SOUND_LANG1)
con = 0x00000000; con = 0x00000000;
if (v->mode & VIDEO_SOUND_LANG2) if (v->mode & VIDEO_SOUND_LANG2)
...@@ -4079,14 +4259,14 @@ static void kodicom4400r_init(struct bttv *btv) ...@@ -4079,14 +4259,14 @@ static void kodicom4400r_init(struct bttv *btv)
master[btv->c.nr+2] = btv; master[btv->c.nr+2] = btv;
} }
// The Grandtec X-Guard framegrabber card uses two Dual 4-channel /* The Grandtec X-Guard framegrabber card uses two Dual 4-channel
// video multiplexers to provide up to 16 video inputs. These * video multiplexers to provide up to 16 video inputs. These
// multiplexers are controlled by the lower 8 GPIO pins of the * multiplexers are controlled by the lower 8 GPIO pins of the
// bt878. The multiplexers probably Pericom PI5V331Q or similar. * bt878. The multiplexers probably Pericom PI5V331Q or similar.
// xxx0 is pin xxx of multiplexer U5,
// yyy1 is pin yyy of multiplexer U2
* xxx0 is pin xxx of multiplexer U5,
* yyy1 is pin yyy of multiplexer U2
*/
#define ENA0 0x01 #define ENA0 0x01
#define ENB0 0x02 #define ENB0 0x02
#define ENA1 0x04 #define ENA1 0x04
...@@ -4157,14 +4337,14 @@ static void picolo_tetra_muxsel (struct bttv* btv, unsigned int input) ...@@ -4157,14 +4337,14 @@ static void picolo_tetra_muxsel (struct bttv* btv, unsigned int input)
static void ivc120_muxsel(struct bttv *btv, unsigned int input) static void ivc120_muxsel(struct bttv *btv, unsigned int input)
{ {
// Simple maths /* Simple maths */
int key = input % 4; int key = input % 4;
int matrix = input / 4; int matrix = input / 4;
dprintk("bttv%d: ivc120_muxsel: Input - %02d | TDA - %02d | In - %02d\n", dprintk("bttv%d: ivc120_muxsel: Input - %02d | TDA - %02d | In - %02d\n",
btv->c.nr, input, matrix, key); btv->c.nr, input, matrix, key);
// Handles the input selection on the TDA8540's /* Handles the input selection on the TDA8540's */
bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00, bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x00,
((matrix == 3) ? (key | key << 2) : 0x00), 1); ((matrix == 3) ? (key | key << 2) : 0x00), 1);
bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00, bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x00,
...@@ -4174,17 +4354,17 @@ static void ivc120_muxsel(struct bttv *btv, unsigned int input) ...@@ -4174,17 +4354,17 @@ static void ivc120_muxsel(struct bttv *btv, unsigned int input)
bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00, bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x00,
((matrix == 2) ? (key | key << 2) : 0x00), 1); ((matrix == 2) ? (key | key << 2) : 0x00), 1);
// Handles the output enables on the TDA8540's /* Handles the output enables on the TDA8540's */
bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02, bttv_I2CWrite(btv, I2C_TDA8540_ALT3, 0x02,
((matrix == 3) ? 0x03 : 0x00), 1); // 13 - 16 ((matrix == 3) ? 0x03 : 0x00), 1); /* 13 - 16 */
bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02, bttv_I2CWrite(btv, I2C_TDA8540_ALT4, 0x02,
((matrix == 0) ? 0x03 : 0x00), 1); // 1-4 ((matrix == 0) ? 0x03 : 0x00), 1); /* 1-4 */
bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02, bttv_I2CWrite(btv, I2C_TDA8540_ALT5, 0x02,
((matrix == 1) ? 0x03 : 0x00), 1); // 5-8 ((matrix == 1) ? 0x03 : 0x00), 1); /* 5-8 */
bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02, bttv_I2CWrite(btv, I2C_TDA8540_ALT6, 0x02,
((matrix == 2) ? 0x03 : 0x00), 1); // 9-12 ((matrix == 2) ? 0x03 : 0x00), 1); /* 9-12 */
// Selects MUX0 for input on the 878 /* Selects MUX0 for input on the 878 */
btaor((0)<<5, ~(3<<5), BT848_IFORM); btaor((0)<<5, ~(3<<5), BT848_IFORM);
} }
...@@ -4305,7 +4485,6 @@ void __devinit bttv_check_chipset(void) ...@@ -4305,7 +4485,6 @@ void __devinit bttv_check_chipset(void)
} }
if (UNSET != latency) if (UNSET != latency)
printk(KERN_INFO "bttv: pci latency fixup [%d]\n",latency); printk(KERN_INFO "bttv: pci latency fixup [%d]\n",latency);
while ((dev = pci_find_device(PCI_VENDOR_ID_INTEL, while ((dev = pci_find_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_82441, dev))) { PCI_DEVICE_ID_INTEL_82441, dev))) {
unsigned char b; unsigned char b;
......
/* /*
$Id: bttv-driver.c,v 1.52 2005/08/04 00:55:16 mchehab Exp $
bttv - Bt848 frame grabber driver bttv - Bt848 frame grabber driver
...@@ -42,6 +41,9 @@ ...@@ -42,6 +41,9 @@
#include "bttvp.h" #include "bttvp.h"
#include "rds.h"
unsigned int bttv_num; /* number of Bt848s in use */ unsigned int bttv_num; /* number of Bt848s in use */
struct bttv bttvs[BTTV_MAX]; struct bttv bttvs[BTTV_MAX];
...@@ -3128,14 +3130,11 @@ static int radio_open(struct inode *inode, struct file *file) ...@@ -3128,14 +3130,11 @@ static int radio_open(struct inode *inode, struct file *file)
dprintk("bttv%d: open called (radio)\n",btv->c.nr); dprintk("bttv%d: open called (radio)\n",btv->c.nr);
down(&btv->lock); down(&btv->lock);
if (btv->radio_user) {
up(&btv->lock);
return -EBUSY;
}
btv->radio_user++; btv->radio_user++;
file->private_data = btv; file->private_data = btv;
i2c_vidiocschan(btv);
bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type); bttv_call_i2c_clients(btv,AUDC_SET_RADIO,&btv->tuner_type);
audio_mux(btv,AUDIO_RADIO); audio_mux(btv,AUDIO_RADIO);
...@@ -3146,8 +3145,12 @@ static int radio_open(struct inode *inode, struct file *file) ...@@ -3146,8 +3145,12 @@ static int radio_open(struct inode *inode, struct file *file)
static int radio_release(struct inode *inode, struct file *file) static int radio_release(struct inode *inode, struct file *file)
{ {
struct bttv *btv = file->private_data; struct bttv *btv = file->private_data;
struct rds_command cmd;
btv->radio_user--; btv->radio_user--;
bttv_call_i2c_clients(btv, RDS_CMD_CLOSE, &cmd);
return 0; return 0;
} }
...@@ -3203,13 +3206,42 @@ static int radio_ioctl(struct inode *inode, struct file *file, ...@@ -3203,13 +3206,42 @@ static int radio_ioctl(struct inode *inode, struct file *file,
return video_usercopy(inode, file, cmd, arg, radio_do_ioctl); return video_usercopy(inode, file, cmd, arg, radio_do_ioctl);
} }
static ssize_t radio_read(struct file *file, char __user *data,
size_t count, loff_t *ppos)
{
struct bttv *btv = file->private_data;
struct rds_command cmd;
cmd.block_count = count/3;
cmd.buffer = data;
cmd.instance = file;
cmd.result = -ENODEV;
bttv_call_i2c_clients(btv, RDS_CMD_READ, &cmd);
return cmd.result;
}
static unsigned int radio_poll(struct file *file, poll_table *wait)
{
struct bttv *btv = file->private_data;
struct rds_command cmd;
cmd.instance = file;
cmd.event_list = wait;
cmd.result = -ENODEV;
bttv_call_i2c_clients(btv, RDS_CMD_POLL, &cmd);
return cmd.result;
}
static struct file_operations radio_fops = static struct file_operations radio_fops =
{ {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = radio_open, .open = radio_open,
.read = radio_read,
.release = radio_release, .release = radio_release,
.ioctl = radio_ioctl, .ioctl = radio_ioctl,
.llseek = no_llseek, .llseek = no_llseek,
.poll = radio_poll,
}; };
static struct video_device radio_template = static struct video_device radio_template =
......
/* /*
$Id: bttv-gpio.c,v 1.7 2005/02/16 12:14:10 kraxel Exp $
bttv-gpio.c -- gpio sub drivers bttv-gpio.c -- gpio sub drivers
......
/* /*
$Id: bttv-i2c.c,v 1.25 2005/07/05 17:37:35 nsh Exp $
bttv-i2c.c -- all the i2c code is here bttv-i2c.c -- all the i2c code is here
...@@ -381,6 +380,7 @@ void __devinit bttv_readee(struct bttv *btv, unsigned char *eedata, int addr) ...@@ -381,6 +380,7 @@ void __devinit bttv_readee(struct bttv *btv, unsigned char *eedata, int addr)
} }
static char *i2c_devs[128] = { static char *i2c_devs[128] = {
[ 0x1c >> 1 ] = "lgdt330x",
[ 0x30 >> 1 ] = "IR (hauppauge)", [ 0x30 >> 1 ] = "IR (hauppauge)",
[ 0x80 >> 1 ] = "msp34xx", [ 0x80 >> 1 ] = "msp34xx",
[ 0x86 >> 1 ] = "tda9887", [ 0x86 >> 1 ] = "tda9887",
......
/* /*
$Id: bttv-if.c,v 1.4 2004/11/17 18:47:47 kraxel Exp $
bttv-if.c -- old gpio interface to other kernel modules bttv-if.c -- old gpio interface to other kernel modules
don't use in new code, will go away in 2.7 don't use in new code, will go away in 2.7
......
/* /*
$Id: bttv-risc.c,v 1.10 2004/11/19 18:07:12 kraxel Exp $
bttv-risc.c -- interfaces to other kernel modules bttv-risc.c -- interfaces to other kernel modules
......
/* /*
$Id: bttv-vbi.c,v 1.9 2005/01/13 17:22:33 kraxel Exp $
bttv - Bt848 frame grabber driver bttv - Bt848 frame grabber driver
vbi interface vbi interface
......
/* /*
* $Id: bttv.h,v 1.22 2005/07/28 18:41:21 mchehab Exp $
* *
* bttv - Bt848 frame grabber driver * bttv - Bt848 frame grabber driver
* *
...@@ -218,6 +217,8 @@ struct tvcard ...@@ -218,6 +217,8 @@ struct tvcard
#define PLL_35 2 #define PLL_35 2
unsigned int tuner_type; unsigned int tuner_type;
unsigned int tuner_addr;
unsigned int has_radio; unsigned int has_radio;
void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set); void (*audio_hook)(struct bttv *btv, struct video_audio *v, int set);
void (*muxsel_hook)(struct bttv *btv, unsigned int input); void (*muxsel_hook)(struct bttv *btv, unsigned int input);
......
/* /*
$Id: bttvp.h,v 1.21 2005/07/15 21:44:14 mchehab Exp $
bttv - Bt848 frame grabber driver bttv - Bt848 frame grabber driver
...@@ -26,7 +25,7 @@ ...@@ -26,7 +25,7 @@
#ifndef _BTTVP_H_ #ifndef _BTTVP_H_
#define _BTTVP_H_ #define _BTTVP_H_
#include <linux/version.h> #include <linux/utsname.h>
#define BTTV_VERSION_CODE KERNEL_VERSION(0,9,16) #define BTTV_VERSION_CODE KERNEL_VERSION(0,9,16)
#include <linux/types.h> #include <linux/types.h>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment