aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2008-04-19 14:36:51 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-24 13:09:49 -0400
commit95814bc2b792dced5296a710704de7d5ecec2776 (patch)
tree044ecaeb8120a8177788f259749e9547a14bbe70 /drivers
parentf55a871241899ea2ecc85670d7c9a83e4de29637 (diff)
V4L/DVB (7717): pvrusb2-dvb: add DVB-T support for Hauppauge pvrusb2 model 73xxx
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.c52
1 files changed, 48 insertions, 4 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
index 74c92a470eb6..43c49fb66209 100644
--- a/drivers/media/video/pvrusb2/pvrusb2-devattr.c
+++ b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
@@ -36,6 +36,7 @@ pvr2_device_desc structures.
36#include "pvrusb2-hdw-internal.h" 36#include "pvrusb2-hdw-internal.h"
37#include "lgdt330x.h" 37#include "lgdt330x.h"
38#include "s5h1409.h" 38#include "s5h1409.h"
39#include "tda10048.h"
39#include "tda18271.h" 40#include "tda18271.h"
40#include "tda8290.h" 41#include "tda8290.h"
41#include "tuner-simple.h" 42#include "tuner-simple.h"
@@ -278,6 +279,50 @@ static const struct pvr2_device_desc pvr2_device_onair_usb2 = {
278/*------------------------------------------------------------------------*/ 279/*------------------------------------------------------------------------*/
279/* Hauppauge PVR-USB2 Model 73xxx */ 280/* Hauppauge PVR-USB2 Model 73xxx */
280 281
282#ifdef CONFIG_VIDEO_PVRUSB2_DVB
283static struct tda10048_config hauppauge_tda10048_config = {
284 .demod_address = 0x10 >> 1,
285 .output_mode = TDA10048_PARALLEL_OUTPUT,
286 .fwbulkwritelen = TDA10048_BULKWRITE_50,
287 .inversion = TDA10048_INVERSION_ON,
288};
289
290static struct tda829x_config tda829x_no_probe = {
291 .probe_tuner = TDA829X_DONT_PROBE,
292};
293
294static struct tda18271_config hauppauge_tda18271_dvb_config = {
295 .gate = TDA18271_GATE_ANALOG,
296};
297
298static int pvr2_tda10048_attach(struct pvr2_dvb_adapter *adap)
299{
300 adap->fe = dvb_attach(tda10048_attach, &hauppauge_tda10048_config,
301 &adap->channel.hdw->i2c_adap);
302 if (adap->fe)
303 return 0;
304
305 return -EIO;
306}
307
308static int pvr2_73xxx_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
309{
310 dvb_attach(tda829x_attach, adap->fe,
311 &adap->channel.hdw->i2c_adap, 0x42,
312 &tda829x_no_probe);
313 dvb_attach(tda18271_attach, adap->fe, 0x60,
314 &adap->channel.hdw->i2c_adap,
315 &hauppauge_tda18271_dvb_config);
316
317 return 0;
318}
319
320struct pvr2_dvb_props pvr2_73xxx_dvb_props = {
321 .frontend_attach = pvr2_tda10048_attach,
322 .tuner_attach = pvr2_73xxx_tda18271_8295_attach,
323};
324#endif
325
281static const char *pvr2_client_73xxx[] = { 326static const char *pvr2_client_73xxx[] = {
282 "cx25840", 327 "cx25840",
283 "tuner", 328 "tuner",
@@ -302,6 +347,9 @@ static const struct pvr2_device_desc pvr2_device_73xxx = {
302 .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE, 347 .signal_routing_scheme = PVR2_ROUTING_SCHEME_HAUPPAUGE,
303 .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE, 348 .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
304 .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE, 349 .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
350#ifdef CONFIG_VIDEO_PVRUSB2_DVB
351 .dvb_props = &pvr2_73xxx_dvb_props,
352#endif
305}; 353};
306 354
307 355
@@ -319,10 +367,6 @@ static struct s5h1409_config pvr2_s5h1409_config = {
319 .status_mode = S5H1409_DEMODLOCKING, 367 .status_mode = S5H1409_DEMODLOCKING,
320}; 368};
321 369
322static struct tda829x_config tda829x_no_probe = {
323 .probe_tuner = TDA829X_DONT_PROBE,
324};
325
326static struct tda18271_std_map hauppauge_tda18271_std_map = { 370static struct tda18271_std_map hauppauge_tda18271_std_map = {
327 .atsc_6 = { .if_freq = 5380, .agc_mode = 3, .std = 3, 371 .atsc_6 = { .if_freq = 5380, .agc_mode = 3, .std = 3,
328 .if_lvl = 6, .rfagc_top = 0x37, }, 372 .if_lvl = 6, .rfagc_top = 0x37, },