diff options
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-dvb.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c index 3ac8d3025fea..c7c04bf712aa 100644 --- a/drivers/media/video/em28xx/em28xx-dvb.c +++ b/drivers/media/video/em28xx/em28xx-dvb.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include "mt352_priv.h" /* FIXME */ | 37 | #include "mt352_priv.h" /* FIXME */ |
38 | #include "tda1002x.h" | 38 | #include "tda1002x.h" |
39 | #include "tda18271.h" | 39 | #include "tda18271.h" |
40 | #include "s921.h" | ||
40 | 41 | ||
41 | MODULE_DESCRIPTION("driver for em28xx based DVB cards"); | 42 | MODULE_DESCRIPTION("driver for em28xx based DVB cards"); |
42 | MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); | 43 | MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); |
@@ -245,6 +246,10 @@ static struct lgdt3305_config em2870_lgdt3304_dev = { | |||
245 | .qam_if_khz = 4000, | 246 | .qam_if_khz = 4000, |
246 | }; | 247 | }; |
247 | 248 | ||
249 | static struct s921_config sharp_isdbt = { | ||
250 | .demod_address = 0x30 >> 1 | ||
251 | }; | ||
252 | |||
248 | static struct zl10353_config em28xx_zl10353_with_xc3028 = { | 253 | static struct zl10353_config em28xx_zl10353_with_xc3028 = { |
249 | .demod_address = (0x1e >> 1), | 254 | .demod_address = (0x1e >> 1), |
250 | .no_tuner = 1, | 255 | .no_tuner = 1, |
@@ -481,6 +486,7 @@ static int dvb_init(struct em28xx *dev) | |||
481 | 486 | ||
482 | if (!dev->board.has_dvb) { | 487 | if (!dev->board.has_dvb) { |
483 | /* This device does not support the extension */ | 488 | /* This device does not support the extension */ |
489 | printk(KERN_INFO "em28xx_dvb: This device does not support the extension\n"); | ||
484 | return 0; | 490 | return 0; |
485 | } | 491 | } |
486 | 492 | ||
@@ -496,6 +502,16 @@ static int dvb_init(struct em28xx *dev) | |||
496 | em28xx_set_mode(dev, EM28XX_DIGITAL_MODE); | 502 | em28xx_set_mode(dev, EM28XX_DIGITAL_MODE); |
497 | /* init frontend */ | 503 | /* init frontend */ |
498 | switch (dev->model) { | 504 | switch (dev->model) { |
505 | case EM2874_LEADERSHIP_ISDBT: | ||
506 | dvb->frontend = dvb_attach(s921_attach, | ||
507 | &sharp_isdbt, &dev->i2c_adap); | ||
508 | |||
509 | if (!dvb->frontend) { | ||
510 | result = -EINVAL; | ||
511 | goto out_free; | ||
512 | } | ||
513 | |||
514 | break; | ||
499 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850: | 515 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850: |
500 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950: | 516 | case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950: |
501 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: | 517 | case EM2880_BOARD_PINNACLE_PCTV_HD_PRO: |