aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/cx88/cx88-cards.c
diff options
context:
space:
mode:
authorSteven Toth <stoth@linuxtv.org>2008-09-04 00:17:33 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2008-10-12 07:37:03 -0400
commit5bd1b66359437864e6b46420ba6770c2b1c4362c (patch)
tree610860306d4a0c40456ef6b7b12904251880ddbd /drivers/media/video/cx88/cx88-cards.c
parent0d46748c3f874defbbbf98bcf40c7b18964abbc0 (diff)
V4L/DVB (8987): cx88: Add support for the Hauppauge HVR4000 and HVR4000-LITE (S2) boards
Adding support for Hauppauge's cx88 S2 based products, based on the cx24116 DVB-S2 demodulator. Signed-off-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/cx88/cx88-cards.c')
-rw-r--r--drivers/media/video/cx88/cx88-cards.c79
1 files changed, 79 insertions, 0 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index de199a206a15..538967e32284 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -1664,6 +1664,51 @@ static const struct cx88_board cx88_boards[] = {
1664 }, 1664 },
1665 .mpeg = CX88_MPEG_DVB, 1665 .mpeg = CX88_MPEG_DVB,
1666 }, 1666 },
1667 [CX88_BOARD_HAUPPAUGE_HVR4000] = {
1668 .name = "Hauppauge WinTV-HVR4000 DVB-S/S2/T/Hybrid",
1669 .tuner_type = TUNER_PHILIPS_FMD1216ME_MK3,
1670 .radio_type = UNSET,
1671 .tuner_addr = ADDR_UNSET,
1672 .radio_addr = ADDR_UNSET,
1673 .tda9887_conf = TDA9887_PRESENT,
1674 /*
1675 * GPIO0 (WINTV2000)
1676 *
1677 * Analogue SAT DVB-T
1678 * Antenna 0xc4bf 0xc4bb
1679 * Composite 0xc4bf 0xc4bb
1680 * S-Video 0xc4bf 0xc4bb
1681 * Composite1 0xc4ff 0xc4fb
1682 * S-Video1 0xc4ff 0xc4fb
1683 */
1684 .input = {{
1685 .type = CX88_VMUX_TELEVISION,
1686 .vmux = 0,
1687 .gpio0 = 0xc4bf,
1688 }, {
1689 .type = CX88_VMUX_COMPOSITE1,
1690 .vmux = 1,
1691 .gpio0 = 0xc4bf,
1692 }, {
1693 .type = CX88_VMUX_SVIDEO,
1694 .vmux = 2,
1695 .gpio0 = 0xc4bf,
1696 } },
1697 /* fixme: Add radio support */
1698 .mpeg = CX88_MPEG_DVB,
1699 },
1700 [CX88_BOARD_HAUPPAUGE_HVR4000LITE] = {
1701 .name = "Hauppauge WinTV-HVR4000(Lite) DVB-S/S2",
1702 .tuner_type = UNSET,
1703 .radio_type = UNSET,
1704 .tuner_addr = ADDR_UNSET,
1705 .radio_addr = ADDR_UNSET,
1706 .input = {{
1707 .type = CX88_VMUX_DVB,
1708 .vmux = 0,
1709 } },
1710 .mpeg = CX88_MPEG_DVB,
1711 },
1667}; 1712};
1668 1713
1669/* ------------------------------------------------------------------ */ 1714/* ------------------------------------------------------------------ */
@@ -2013,6 +2058,26 @@ static const struct cx88_subid cx88_subids[] = {
2013 .subvendor = 0x17de, 2058 .subvendor = 0x17de,
2014 .subdevice = 0x08c1, 2059 .subdevice = 0x08c1,
2015 .card = CX88_BOARD_KWORLD_ATSC_120, 2060 .card = CX88_BOARD_KWORLD_ATSC_120,
2061 }, {
2062 .subvendor = 0x0070,
2063 .subdevice = 0x6900,
2064 .card = CX88_BOARD_HAUPPAUGE_HVR4000,
2065 }, {
2066 .subvendor = 0x0070,
2067 .subdevice = 0x6904,
2068 .card = CX88_BOARD_HAUPPAUGE_HVR4000,
2069 }, {
2070 .subvendor = 0x0070,
2071 .subdevice = 0x6902,
2072 .card = CX88_BOARD_HAUPPAUGE_HVR4000,
2073 }, {
2074 .subvendor = 0x0070,
2075 .subdevice = 0x6905,
2076 .card = CX88_BOARD_HAUPPAUGE_HVR4000LITE,
2077 }, {
2078 .subvendor = 0x0070,
2079 .subdevice = 0x6906,
2080 .card = CX88_BOARD_HAUPPAUGE_HVR4000LITE,
2016 }, 2081 },
2017}; 2082};
2018 2083
@@ -2065,6 +2130,13 @@ static void hauppauge_eeprom(struct cx88_core *core, u8 *eeprom_data)
2065 case 14669: /* WinTV-HVR3000 (OEM, no IR, no b/panel video - Low profile) */ 2130 case 14669: /* WinTV-HVR3000 (OEM, no IR, no b/panel video - Low profile) */
2066 case 28552: /* WinTV-PVR 'Roslyn' (No IR) */ 2131 case 28552: /* WinTV-PVR 'Roslyn' (No IR) */
2067 case 34519: /* WinTV-PCI-FM */ 2132 case 34519: /* WinTV-PCI-FM */
2133 case 69009:
2134 /* WinTV-HVR4000 (DVBS/S2/T, Video and IR, back panel inputs) */
2135 case 69100: /* WinTV-HVR4000LITE (DVBS/S2, IR) */
2136 case 69500: /* WinTV-HVR4000LITE (DVBS/S2, No IR) */
2137 case 69559:
2138 /* WinTV-HVR4000 (DVBS/S2/T, Video no IR, back panel inputs) */
2139 case 69569: /* WinTV-HVR4000 (DVBS/S2/T, Video no IR) */
2068 case 90002: /* Nova-T-PCI (9002) */ 2140 case 90002: /* Nova-T-PCI (9002) */
2069 case 92001: /* Nova-S-Plus (Video and IR) */ 2141 case 92001: /* Nova-S-Plus (Video and IR) */
2070 case 92002: /* Nova-S-Plus (Video and IR) */ 2142 case 92002: /* Nova-S-Plus (Video and IR) */
@@ -2415,6 +2487,11 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
2415 /* Enable the xc5000 tuner */ 2487 /* Enable the xc5000 tuner */
2416 cx_set(MO_GP0_IO, 0x00001010); 2488 cx_set(MO_GP0_IO, 0x00001010);
2417 break; 2489 break;
2490 case CX88_BOARD_HAUPPAUGE_HVR4000:
2491 case CX88_BOARD_HAUPPAUGE_HVR4000LITE:
2492 /* Init GPIO to allow tuner to attach */
2493 cx_write(MO_GP0_IO, 0x0000c4bf);
2494 udelay(1000);
2418 } 2495 }
2419} 2496}
2420 2497
@@ -2489,6 +2566,8 @@ static void cx88_card_setup(struct cx88_core *core)
2489 case CX88_BOARD_HAUPPAUGE_HVR1100LP: 2566 case CX88_BOARD_HAUPPAUGE_HVR1100LP:
2490 case CX88_BOARD_HAUPPAUGE_HVR3000: 2567 case CX88_BOARD_HAUPPAUGE_HVR3000:
2491 case CX88_BOARD_HAUPPAUGE_HVR1300: 2568 case CX88_BOARD_HAUPPAUGE_HVR1300:
2569 case CX88_BOARD_HAUPPAUGE_HVR4000:
2570 case CX88_BOARD_HAUPPAUGE_HVR4000LITE:
2492 if (0 == core->i2c_rc) 2571 if (0 == core->i2c_rc)
2493 hauppauge_eeprom(core, eeprom); 2572 hauppauge_eeprom(core, eeprom);
2494 break; 2573 break;