diff options
author | Steven Toth <stoth@hauppauge.com> | 2006-09-29 23:43:58 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-10-13 23:43:48 -0400 |
commit | 76dc82ab57236105285fd8520895c1404b8b952f (patch) | |
tree | 3abcb21421032ead4e9faf5a9a032a9f1690c198 | |
parent | b4bd8c66435a8cdf8c90334fb3b517a23ff2ab95 (diff) |
V4L/DVB (4692): Add WinTV-HVR3000 DVB-T support
The WinTV-HVR3000 is currently defined for analog support only. This
patch adds full DVB-T support. (DVB-S support will be added soon)
Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | Documentation/video4linux/CARDLIST.cx88 | 2 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 21 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 17 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 2 |
4 files changed, 41 insertions, 1 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88 index 126e59d935cd..8755b3e7b09e 100644 --- a/Documentation/video4linux/CARDLIST.cx88 +++ b/Documentation/video4linux/CARDLIST.cx88 | |||
@@ -51,7 +51,7 @@ | |||
51 | 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] | 51 | 50 -> NPG Tech Real TV FM Top 10 [14f1:0842] |
52 | 51 -> WinFast DTV2000 H [107d:665e] | 52 | 51 -> WinFast DTV2000 H [107d:665e] |
53 | 52 -> Geniatech DVB-S [14f1:0084] | 53 | 52 -> Geniatech DVB-S [14f1:0084] |
54 | 53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404] | 54 | 53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404,0070:1400,0070:1401,0070:1402] |
55 | 54 -> Norwood Micro TV Tuner | 55 | 54 -> Norwood Micro TV Tuner |
56 | 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980] | 56 | 55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980] |
57 | 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602] | 57 | 56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602] |
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index af71d4225c76..f764a57c56be 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1230,6 +1230,7 @@ struct cx88_board cx88_boards[] = { | |||
1230 | .vmux = 2, | 1230 | .vmux = 2, |
1231 | .gpio0 = 0x84bf, | 1231 | .gpio0 = 0x84bf, |
1232 | }}, | 1232 | }}, |
1233 | .mpeg = CX88_MPEG_DVB, | ||
1233 | }, | 1234 | }, |
1234 | [CX88_BOARD_NORWOOD_MICRO] = { | 1235 | [CX88_BOARD_NORWOOD_MICRO] = { |
1235 | .name = "Norwood Micro TV Tuner", | 1236 | .name = "Norwood Micro TV Tuner", |
@@ -1590,6 +1591,18 @@ struct cx88_subid cx88_subids[] = { | |||
1590 | .subvendor = 0x0070, | 1591 | .subvendor = 0x0070, |
1591 | .subdevice = 0x9000, | 1592 | .subdevice = 0x9000, |
1592 | .card = CX88_BOARD_HAUPPAUGE_DVB_T1, | 1593 | .card = CX88_BOARD_HAUPPAUGE_DVB_T1, |
1594 | },{ | ||
1595 | .subvendor = 0x0070, | ||
1596 | .subdevice = 0x1400, | ||
1597 | .card = CX88_BOARD_HAUPPAUGE_HVR3000, | ||
1598 | },{ | ||
1599 | .subvendor = 0x0070, | ||
1600 | .subdevice = 0x1401, | ||
1601 | .card = CX88_BOARD_HAUPPAUGE_HVR3000, | ||
1602 | },{ | ||
1603 | .subvendor = 0x0070, | ||
1604 | .subdevice = 0x1402, | ||
1605 | .card = CX88_BOARD_HAUPPAUGE_HVR3000, | ||
1593 | }, | 1606 | }, |
1594 | }; | 1607 | }; |
1595 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 1608 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
@@ -1633,7 +1646,15 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data) | |||
1633 | /* Make sure we support the board model */ | 1646 | /* Make sure we support the board model */ |
1634 | switch (tv.model) | 1647 | switch (tv.model) |
1635 | { | 1648 | { |
1649 | case 14009: /* WinTV-HVR3000 (Retail, IR, b/panel video, 3.5mm audio in) */ | ||
1650 | case 14019: /* WinTV-HVR3000 (Retail, IR Blaster, b/panel video, 3.5mm audio in) */ | ||
1651 | case 14029: /* WinTV-HVR3000 (Retail, IR, b/panel video, 3.5mm audio in - 880 bridge) */ | ||
1652 | case 14109: /* WinTV-HVR3000 (Retail, IR, b/panel video, 3.5mm audio in - low profile) */ | ||
1653 | case 14129: /* WinTV-HVR3000 (Retail, IR, b/panel video, 3.5mm audio in - 880 bridge - LP) */ | ||
1654 | case 14559: /* WinTV-HVR3000 (OEM, no IR, b/panel video, 3.5mm audio in) */ | ||
1636 | case 14569: /* WinTV-HVR3000 (OEM, no IR, no back panel video) */ | 1655 | case 14569: /* WinTV-HVR3000 (OEM, no IR, no back panel video) */ |
1656 | case 14659: /* WinTV-HVR3000 (OEM, no IR, b/panel video, RCA audio in - Low profile) */ | ||
1657 | case 14669: /* WinTV-HVR3000 (OEM, no IR, no b/panel video - Low profile) */ | ||
1637 | case 28552: /* WinTV-PVR 'Roslyn' (No IR) */ | 1658 | case 28552: /* WinTV-PVR 'Roslyn' (No IR) */ |
1638 | case 34519: /* WinTV-PCI-FM */ | 1659 | case 34519: /* WinTV-PCI-FM */ |
1639 | case 90002: /* Nova-T-PCI (9002) */ | 1660 | case 90002: /* Nova-T-PCI (9002) */ |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index bd0c8797f26d..0ef13e7efa2e 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -315,15 +315,22 @@ static struct cx22702_config hauppauge_novat_config = { | |||
315 | .demod_address = 0x43, | 315 | .demod_address = 0x43, |
316 | .output_mode = CX22702_SERIAL_OUTPUT, | 316 | .output_mode = CX22702_SERIAL_OUTPUT, |
317 | }; | 317 | }; |
318 | |||
318 | static struct cx22702_config hauppauge_hvr1100_config = { | 319 | static struct cx22702_config hauppauge_hvr1100_config = { |
319 | .demod_address = 0x63, | 320 | .demod_address = 0x63, |
320 | .output_mode = CX22702_SERIAL_OUTPUT, | 321 | .output_mode = CX22702_SERIAL_OUTPUT, |
321 | }; | 322 | }; |
323 | |||
322 | static struct cx22702_config hauppauge_hvr1300_config = { | 324 | static struct cx22702_config hauppauge_hvr1300_config = { |
323 | .demod_address = 0x63, | 325 | .demod_address = 0x63, |
324 | .output_mode = CX22702_SERIAL_OUTPUT, | 326 | .output_mode = CX22702_SERIAL_OUTPUT, |
325 | }; | 327 | }; |
326 | 328 | ||
329 | static struct cx22702_config hauppauge_hvr3000_config = { | ||
330 | .demod_address = 0x63, | ||
331 | .output_mode = CX22702_SERIAL_OUTPUT, | ||
332 | }; | ||
333 | |||
327 | static int or51132_set_ts_param(struct dvb_frontend* fe, | 334 | static int or51132_set_ts_param(struct dvb_frontend* fe, |
328 | int is_punctured) | 335 | int is_punctured) |
329 | { | 336 | { |
@@ -558,6 +565,16 @@ static int dvb_register(struct cx8802_dev *dev) | |||
558 | &dvb_pll_fmd1216me); | 565 | &dvb_pll_fmd1216me); |
559 | } | 566 | } |
560 | break; | 567 | break; |
568 | case CX88_BOARD_HAUPPAUGE_HVR3000: | ||
569 | dev->dvb.frontend = dvb_attach(cx22702_attach, | ||
570 | &hauppauge_hvr3000_config, | ||
571 | &dev->core->i2c_adap); | ||
572 | if (dev->dvb.frontend != NULL) { | ||
573 | dvb_attach(dvb_pll_attach, dev->dvb.frontend, 0x61, | ||
574 | &dev->core->i2c_adap, | ||
575 | &dvb_pll_fmd1216me); | ||
576 | } | ||
577 | break; | ||
561 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: | 578 | case CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS: |
562 | dev->dvb.frontend = dvb_attach(mt352_attach, | 579 | dev->dvb.frontend = dvb_attach(mt352_attach, |
563 | &dvico_fusionhdtv, | 580 | &dvico_fusionhdtv, |
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index 83ebf7a3c054..ee48995a4ab5 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -196,6 +196,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
196 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: | 196 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: |
197 | case CX88_BOARD_HAUPPAUGE_HVR1100: | 197 | case CX88_BOARD_HAUPPAUGE_HVR1100: |
198 | case CX88_BOARD_HAUPPAUGE_HVR1300: | 198 | case CX88_BOARD_HAUPPAUGE_HVR1300: |
199 | case CX88_BOARD_HAUPPAUGE_HVR3000: | ||
199 | ir_codes = ir_codes_hauppauge_new; | 200 | ir_codes = ir_codes_hauppauge_new; |
200 | ir_type = IR_TYPE_RC5; | 201 | ir_type = IR_TYPE_RC5; |
201 | ir->sampling = 1; | 202 | ir->sampling = 1; |
@@ -419,6 +420,7 @@ void cx88_ir_irq(struct cx88_core *core) | |||
419 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: | 420 | case CX88_BOARD_HAUPPAUGE_NOVASPLUS_S1: |
420 | case CX88_BOARD_HAUPPAUGE_HVR1100: | 421 | case CX88_BOARD_HAUPPAUGE_HVR1100: |
421 | case CX88_BOARD_HAUPPAUGE_HVR1300: | 422 | case CX88_BOARD_HAUPPAUGE_HVR1300: |
423 | case CX88_BOARD_HAUPPAUGE_HVR3000: | ||
422 | ircode = ir_decode_biphase(ir->samples, ir->scount, 5, 7); | 424 | ircode = ir_decode_biphase(ir->samples, ir->scount, 5, 7); |
423 | ir_dprintk("biphase decoded: %x\n", ircode); | 425 | ir_dprintk("biphase decoded: %x\n", ircode); |
424 | if ((ircode & 0xfffff000) != 0x3000) | 426 | if ((ircode & 0xfffff000) != 0x3000) |