23 #include <linux/module.h>
24 #include <linux/pci.h>
39 static unsigned int netup_card_rev = 4;
42 "NetUP Dual DVB-T/C CI card revision");
43 static unsigned int enable_885_ir;
46 "Enable integrated IR controller for supported\n"
47 "\t\t CX2388[57] boards that are wired for it:\n"
48 "\t\t\tHVR-1250 (reported safe)\n"
49 "\t\t\tTerraTec Cinergy T PCIe Dual (not well tested, appears to be safe)\n"
50 "\t\t\tTeVii S470 (reported unsafe)\n"
51 "\t\t This can cause an interrupt storm with some cards.\n"
52 "\t\t Default: 0 [Disabled]");
59 .name =
"UNKNOWN/GENERIC",
77 .name =
"Hauppauge WinTV-HVR1800lp",
98 .name =
"Hauppauge WinTV-HVR1800",
102 .tuner_type = TUNER_PHILIPS_TDA8290,
130 .name =
"Hauppauge WinTV-HVR1250",
133 #ifdef MT2131_NO_ANALOG_SUPPORT_YET
134 .tuner_type = TUNER_PHILIPS_TDA8290,
140 #ifdef MT2131_NO_ANALOG_SUPPORT_YET
166 .name =
"DViCO FusionHDTV5 Express",
170 .name =
"Hauppauge WinTV-HVR1500Q",
174 .name =
"Hauppauge WinTV-HVR1500",
177 .tuner_type = TUNER_XC2028,
201 .name =
"Hauppauge WinTV-HVR1200",
205 .name =
"Hauppauge WinTV-HVR1700",
209 .name =
"Hauppauge WinTV-HVR1400",
213 .name =
"DViCO FusionHDTV7 Dual Express",
218 .name =
"DViCO FusionHDTV DVB-T Dual Express",
223 .name =
"Leadtek Winfast PxDVR3200 H",
227 .name =
"Leadtek Winfast PxDVR3200 H XC4000",
230 .tuner_type = TUNER_XC4000,
233 .radio_addr = ADDR_UNSET,
255 .name =
"Compro VideoMate E650F",
259 .name =
"TurboSight TBS 6920",
263 .name =
"TeVii S470",
267 .name =
"DVBWorld DVB-S2 2005",
272 .name =
"NetUP Dual DVB-S2 CI",
277 .name =
"Hauppauge WinTV-HVR1270",
281 .name =
"Hauppauge WinTV-HVR1275",
285 .name =
"Hauppauge WinTV-HVR1255",
288 .tuner_type = TUNER_ABSENT,
314 .name =
"Hauppauge WinTV-HVR1255",
317 .tuner_type = TUNER_ABSENT,
337 .name =
"Hauppauge WinTV-HVR1210",
341 .name =
"Mygica X8506 DMB-TH",
342 .tuner_type = TUNER_XC5000,
371 .name =
"Magic-Pro ProHDTV Extreme 2",
372 .tuner_type = TUNER_XC5000,
401 .name =
"Hauppauge WinTV-HVR1850",
405 .tuner_type = TUNER_ABSENT,
431 .name =
"Compro VideoMate E800",
435 .name =
"Hauppauge WinTV-HVR1290",
439 .name =
"Mygica X8558 PRO DMB-TH",
444 .name =
"LEADTEK WinFast PxTV1200",
446 .tuner_type = TUNER_XC2028,
470 .name =
"GoTView X5 3D Hybrid",
471 .tuner_type = TUNER_XC5000,
492 .name =
"NetUP Dual DVB-T/C-CI RF",
498 .tuner_type = TUNER_XC5000,
531 .name =
"Mygica X8507",
532 .tuner_type = TUNER_XC5000,
564 .name =
"TerraTec Cinergy T PCIe Dual",
569 .name =
"TeVii S471",
573 .name =
"Prof Revolution DVB-S2 8000",
799 if (0 == dev->
pci->subsystem_vendor &&
800 0 == dev->
pci->subsystem_device) {
802 "%s: Board has no valid PCIe Subsystem ID and can't\n"
803 "%s: be autodetected. Pass card=<n> insmod option\n"
804 "%s: to workaround that. Redirect complaints to the\n"
805 "%s: vendor of the TV card. Best regards,\n"
810 "%s: Your board isn't known (yet) to the driver.\n"
811 "%s: Try to pick one of the existing card configs via\n"
812 "%s: card=<n> insmod option. Updating to the latest\n"
813 "%s: version might help as well.\n",
816 printk(
KERN_INFO "%s: Here is a list of valid choices for the card=<n> insmod option:\n",
820 dev->
name, i, cx23885_boards[i].
name);
963 "unknown hauppauge model #%d\n",
964 dev->
name, tv.model);
969 dev->
name, tv.model);
987 switch (dev->
board) {
1005 else if (port->
nr == 2)
1029 switch (dev->
board) {
1324 const size_t ir_rxtx_pin_cfg_count =
ARRAY_SIZE(ir_rxtx_pin_cfg);
1335 const size_t ir_rx_pin_cfg_count =
ARRAY_SIZE(ir_rx_pin_cfg);
1339 switch (dev->
board) {
1357 ir_rx_pin_cfg_count, ir_rx_pin_cfg);
1366 ir_rxtx_pin_cfg_count, ir_rxtx_pin_cfg);
1389 ir_rx_pin_cfg_count, ir_rx_pin_cfg);
1400 ir_rxtx_pin_cfg_count, ir_rxtx_pin_cfg);
1403 request_module(
"ir-kbd-i2c");
1412 switch (dev->
board) {
1437 data |= (tms ? 0x00020002 : 0x00020000);
1442 data |= (tdi ? 0x00008000 : 0);
1445 tdo = (data & 0x00004000) ? 1 : 0;
1457 switch (dev->
board) {
1480 if (dev->
i2c_bus[0].i2c_rc == 0) {
1481 dev->
i2c_bus[0].i2c_client.addr = 0xa0 >> 1;
1483 eeprom,
sizeof(eeprom));
1486 switch (dev->
board) {
1488 if (dev->
i2c_bus[0].i2c_rc == 0) {
1489 if (eeprom[0x80] != 0x84)
1490 hauppauge_eeprom(dev, eeprom+0xc0);
1492 hauppauge_eeprom(dev, eeprom+0x80);
1498 if (dev->
i2c_bus[0].i2c_rc == 0)
1499 hauppauge_eeprom(dev, eeprom+0x80);
1512 if (dev->
i2c_bus[0].i2c_rc == 0)
1513 hauppauge_eeprom(dev, eeprom+0xc0);
1517 switch (dev->
board) {
1611 switch (dev->
board) {
1641 "cx25840", 0x88 >> 1,
NULL);
1650 switch (dev->
board) {
1657 const char *
filename =
"dvb-netup-altera-01.fw";
1658 char *
action =
"configure";
1670 cinfo.
rev = netup_card_rev;
1672 switch (cinfo.
rev) {
1674 filename =
"dvb-netup-altera-04.fw";
1677 filename =
"dvb-netup-altera-01.fw";
1681 cinfo.
rev, filename);
1686 "Please see linux/Documentation/dvb/ for more details "
1687 "on firmware-problems.", filename);