diff options
author | Steven Toth <stoth@linuxtv.org> | 2008-09-04 00:17:33 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2008-10-12 07:37:03 -0400 |
commit | 5bd1b66359437864e6b46420ba6770c2b1c4362c (patch) | |
tree | 610860306d4a0c40456ef6b7b12904251880ddbd /drivers/media/video/cx88/cx88-cards.c | |
parent | 0d46748c3f874defbbbf98bcf40c7b18964abbc0 (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.c | 79 |
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; |