diff options
author | Michael Krufky <mkrufky@linuxtv.org> | 2008-04-19 14:36:51 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-04-24 13:09:49 -0400 |
commit | 95814bc2b792dced5296a710704de7d5ecec2776 (patch) | |
tree | 044ecaeb8120a8177788f259749e9547a14bbe70 /drivers/media | |
parent | f55a871241899ea2ecc85670d7c9a83e4de29637 (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/media')
-rw-r--r-- | drivers/media/video/pvrusb2/pvrusb2-devattr.c | 52 |
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 | ||
283 | static 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 | |||
290 | static struct tda829x_config tda829x_no_probe = { | ||
291 | .probe_tuner = TDA829X_DONT_PROBE, | ||
292 | }; | ||
293 | |||
294 | static struct tda18271_config hauppauge_tda18271_dvb_config = { | ||
295 | .gate = TDA18271_GATE_ANALOG, | ||
296 | }; | ||
297 | |||
298 | static 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 | |||
308 | static 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 | |||
320 | struct 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 | |||
281 | static const char *pvr2_client_73xxx[] = { | 326 | static 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 | ||
322 | static struct tda829x_config tda829x_no_probe = { | ||
323 | .probe_tuner = TDA829X_DONT_PROBE, | ||
324 | }; | ||
325 | |||
326 | static struct tda18271_std_map hauppauge_tda18271_std_map = { | 370 | static 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, }, |