aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/pvrusb2/pvrusb2-devattr.c
diff options
context:
space:
mode:
authorMichael Krufky <mkrufky@linuxtv.org>2008-04-25 03:19:02 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2008-04-26 08:29:56 -0400
commit4aef8fddb6639056ea830509ce3015c79f158011 (patch)
treee312b4625762505f9c05f2f02ed103cd2a6bdd45 /drivers/media/video/pvrusb2/pvrusb2-devattr.c
parentd893d5dc7fef94a072a74f3141f9d1f60fd0cc7e (diff)
V4L/DVB (7744): pvrusb2-dvb: add atsc/qam support for Hauppauge pvrusb2 model 751xx
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/video/pvrusb2/pvrusb2-devattr.c')
-rw-r--r--drivers/media/video/pvrusb2/pvrusb2-devattr.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/media/video/pvrusb2/pvrusb2-devattr.c b/drivers/media/video/pvrusb2/pvrusb2-devattr.c
index 2dd06a90adce..3a141d93e1a9 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 "s5h1411.h"
39#include "tda10048.h" 40#include "tda10048.h"
40#include "tda18271.h" 41#include "tda18271.h"
41#include "tda8290.h" 42#include "tda8290.h"
@@ -368,6 +369,15 @@ static struct s5h1409_config pvr2_s5h1409_config = {
368 .status_mode = S5H1409_DEMODLOCKING, 369 .status_mode = S5H1409_DEMODLOCKING,
369}; 370};
370 371
372static struct s5h1411_config pvr2_s5h1411_config = {
373 .output_mode = S5H1411_PARALLEL_OUTPUT,
374 .gpio = S5H1411_GPIO_OFF,
375 .vsb_if = S5H1411_IF_44000,
376 .qam_if = S5H1411_IF_4000,
377 .inversion = S5H1411_INVERSION_ON,
378 .status_mode = S5H1411_DEMODLOCKING,
379};
380
371static struct tda18271_std_map hauppauge_tda18271_std_map = { 381static struct tda18271_std_map hauppauge_tda18271_std_map = {
372 .atsc_6 = { .if_freq = 5380, .agc_mode = 3, .std = 3, 382 .atsc_6 = { .if_freq = 5380, .agc_mode = 3, .std = 3,
373 .if_lvl = 6, .rfagc_top = 0x37, }, 383 .if_lvl = 6, .rfagc_top = 0x37, },
@@ -390,6 +400,16 @@ static int pvr2_s5h1409_attach(struct pvr2_dvb_adapter *adap)
390 return -EIO; 400 return -EIO;
391} 401}
392 402
403static int pvr2_s5h1411_attach(struct pvr2_dvb_adapter *adap)
404{
405 adap->fe = dvb_attach(s5h1411_attach, &pvr2_s5h1411_config,
406 &adap->channel.hdw->i2c_adap);
407 if (adap->fe)
408 return 0;
409
410 return -EIO;
411}
412
393static int pvr2_tda18271_8295_attach(struct pvr2_dvb_adapter *adap) 413static int pvr2_tda18271_8295_attach(struct pvr2_dvb_adapter *adap)
394{ 414{
395 dvb_attach(tda829x_attach, adap->fe, 415 dvb_attach(tda829x_attach, adap->fe,
@@ -406,6 +426,11 @@ struct pvr2_dvb_props pvr2_750xx_dvb_props = {
406 .frontend_attach = pvr2_s5h1409_attach, 426 .frontend_attach = pvr2_s5h1409_attach,
407 .tuner_attach = pvr2_tda18271_8295_attach, 427 .tuner_attach = pvr2_tda18271_8295_attach,
408}; 428};
429
430struct pvr2_dvb_props pvr2_751xx_dvb_props = {
431 .frontend_attach = pvr2_s5h1411_attach,
432 .tuner_attach = pvr2_tda18271_8295_attach,
433};
409#endif 434#endif
410 435
411static const char *pvr2_client_75xxx[] = { 436static const char *pvr2_client_75xxx[] = {
@@ -454,6 +479,9 @@ static const struct pvr2_device_desc pvr2_device_751xx = {
454 .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE, 479 .digital_control_scheme = PVR2_DIGITAL_SCHEME_HAUPPAUGE,
455 .default_std_mask = V4L2_STD_NTSC_M, 480 .default_std_mask = V4L2_STD_NTSC_M,
456 .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE, 481 .led_scheme = PVR2_LED_SCHEME_HAUPPAUGE,
482#ifdef CONFIG_VIDEO_PVRUSB2_DVB
483 .dvb_props = &pvr2_751xx_dvb_props,
484#endif
457}; 485};
458 486
459 487