23 #include <linux/module.h>
24 #include <linux/pci.h>
34 #define REGLEN_16bit 2
45 .name =
"Generic Rev2",
51 .name =
"Generic Rev3",
55 .name =
"Hauppauge WinTV-HVR2200",
68 .i2c_bus_addr = 0xa0 >> 1,
75 .i2c_bus_addr = 0xc0 >> 1,
82 .i2c_bus_addr = 0xc0 >> 1,
89 .i2c_bus_addr = 0x10 >> 1,
96 .i2c_bus_addr = 0x12 >> 1,
101 .name =
"Hauppauge WinTV-HVR2200",
114 .i2c_bus_addr = 0xa0 >> 1,
119 .name =
"TDA18271-1",
121 .i2c_bus_addr = 0xc0 >> 1,
126 .name =
"TDA10048-1",
128 .i2c_bus_addr = 0x10 >> 1,
133 .name =
"TDA18271-2",
135 .i2c_bus_addr = 0xc0 >> 1,
140 .name =
"TDA10048-2",
142 .i2c_bus_addr = 0x12 >> 1,
147 .name =
"Hauppauge WinTV-HVR2200",
160 .i2c_bus_addr = 0xa0 >> 1,
165 .name =
"TDA18271-1",
167 .i2c_bus_addr = 0xc0 >> 1,
174 .i2c_bus_addr = 0x84 >> 1,
179 .name =
"TDA18271-2",
181 .i2c_bus_addr = 0xc0 >> 1,
188 .i2c_bus_addr = 0x84 >> 1,
193 .name =
"TDA10048-1",
195 .i2c_bus_addr = 0x10 >> 1,
200 .name =
"TDA10048-2",
202 .i2c_bus_addr = 0x12 >> 1,
207 .name =
"Hauppauge WinTV-HVR2200",
220 .i2c_bus_addr = 0xa0 >> 1,
225 .name =
"TDA18271-1",
227 .i2c_bus_addr = 0xc0 >> 1,
234 .i2c_bus_addr = 0x84 >> 1,
239 .name =
"TDA18271-2",
241 .i2c_bus_addr = 0xc0 >> 1,
248 .i2c_bus_addr = 0x84 >> 1,
253 .name =
"TDA10048-1",
255 .i2c_bus_addr = 0x10 >> 1,
260 .name =
"TDA10048-2",
262 .i2c_bus_addr = 0x12 >> 1,
267 .name =
"Hauppauge WinTV-HVR2250",
280 .i2c_bus_addr = 0xa0 >> 1,
285 .name =
"TDA18271-1",
287 .i2c_bus_addr = 0xc0 >> 1,
292 .name =
"CX24228/S5H1411-1 (TOP)",
294 .i2c_bus_addr = 0x32 >> 1,
299 .name =
"CX24228/S5H1411-1 (QAM)",
301 .i2c_bus_addr = 0x34 >> 1,
306 .name =
"TDA18271-2",
308 .i2c_bus_addr = 0xc0 >> 1,
313 .name =
"CX24228/S5H1411-2 (TOP)",
315 .i2c_bus_addr = 0x32 >> 1,
320 .name =
"CX24228/S5H1411-2 (QAM)",
322 .i2c_bus_addr = 0x34 >> 1,
327 .name =
"Hauppauge WinTV-HVR2250",
340 .i2c_bus_addr = 0xa0 >> 1,
345 .name =
"TDA18271-1",
347 .i2c_bus_addr = 0xc0 >> 1,
352 .name =
"CX24228/S5H1411-1 (TOP)",
354 .i2c_bus_addr = 0x32 >> 1,
359 .name =
"CX24228/S5H1411-1 (QAM)",
361 .i2c_bus_addr = 0x34 >> 1,
366 .name =
"TDA18271-2",
368 .i2c_bus_addr = 0xc0 >> 1,
373 .name =
"CX24228/S5H1411-2 (TOP)",
375 .i2c_bus_addr = 0x32 >> 1,
380 .name =
"CX24228/S5H1411-2 (QAM)",
382 .i2c_bus_addr = 0x34 >> 1,
387 .name =
"Hauppauge WinTV-HVR2250",
400 .i2c_bus_addr = 0xa0 >> 1,
405 .name =
"TDA18271-1",
407 .i2c_bus_addr = 0xc0 >> 1,
412 .name =
"CX24228/S5H1411-1 (TOP)",
414 .i2c_bus_addr = 0x32 >> 1,
419 .name =
"CX24228/S5H1411-1 (QAM)",
421 .i2c_bus_addr = 0x34 >> 1,
426 .name =
"TDA18271-2",
428 .i2c_bus_addr = 0xc0 >> 1,
433 .name =
"CX24228/S5H1411-2 (TOP)",
435 .i2c_bus_addr = 0x32 >> 1,
440 .name =
"CX24228/S5H1411-2 (QAM)",
442 .i2c_bus_addr = 0x34 >> 1,
447 .name =
"Hauppauge WinTV-HVR2200",
456 .i2c_bus_addr = 0xa0 >> 1,
461 .name =
"TDA18271-1",
463 .i2c_bus_addr = 0xc0 >> 1,
470 .i2c_bus_addr = 0x84 >> 1,
475 .name =
"TDA18271-2",
477 .i2c_bus_addr = 0xc0 >> 1,
484 .i2c_bus_addr = 0x84 >> 1,
489 .name =
"TDA10048-1",
491 .i2c_bus_addr = 0x10 >> 1,
496 .name =
"TDA10048-2",
498 .i2c_bus_addr = 0x12 >> 1,
557 if (0 == dev->
pci->subsystem_vendor &&
558 0 == dev->
pci->subsystem_device) {
560 "%s: Board has no valid PCIe Subsystem ID and can't\n"
561 "%s: be autodetected. Pass card=<n> insmod option to\n"
562 "%s: workaround that. Send complaints to the vendor\n"
563 "%s: of the TV card. Best regards,\n"
568 "%s: Your board isn't known (yet) to the driver.\n"
569 "%s: Try to pick one of the existing card configs via\n"
570 "%s: card=<n> insmod option. Updating to the latest\n"
571 "%s: version might help as well.\n",
575 printk(
KERN_ERR "%s: Here are valid choices for the card=<n> insmod "
576 "option:\n", dev->
name);
580 dev->
name, i, saa7164_boards[i].
name);
584 #define PCIEBRIDGE_UNITID 2
588 switch (dev->
board) {
652 dev->
name, tv.model);
664 if (dev->
i2c_bus[0].i2c_rc == 0) {
670 switch (dev->
board) {
679 hauppauge_eeprom(dev, &eeprom[0]);
753 char *undefed =
"UNDEFINED";
767 if (unitid == unit->
id)