diff options
author | Antti Palosaari <crope@iki.fi> | 2011-04-07 15:34:44 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 08:30:11 -0400 |
commit | d6a5f921fb8cbd418b298e5bbe83e5c8c8e1da16 (patch) | |
tree | d940e49635606143992af86911205c220884d5ca /drivers/media/video/em28xx/em28xx-dvb.c | |
parent | 27cfc85e3dae187a470f7aa54123689a487970f2 (diff) |
[media] Add support for PCTV nanoStick T2 290e [2013:024f]
Supports DVB-T/T2/C, USB ID: 2013:024f.
Empia EM28174, Sony CXD2820R and NXP TDA18271HD/C2.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/video/em28xx/em28xx-dvb.c')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-dvb.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/media/video/em28xx/em28xx-dvb.c b/drivers/media/video/em28xx/em28xx-dvb.c index 0766bc6be14b..7904ca4b6913 100644 --- a/drivers/media/video/em28xx/em28xx-dvb.c +++ b/drivers/media/video/em28xx/em28xx-dvb.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include "tda18271.h" | 39 | #include "tda18271.h" |
40 | #include "s921.h" | 40 | #include "s921.h" |
41 | #include "drxd.h" | 41 | #include "drxd.h" |
42 | #include "cxd2820r.h" | ||
42 | 43 | ||
43 | MODULE_DESCRIPTION("driver for em28xx based DVB cards"); | 44 | MODULE_DESCRIPTION("driver for em28xx based DVB cards"); |
44 | MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); | 45 | MODULE_AUTHOR("Mauro Carvalho Chehab <mchehab@infradead.org>"); |
@@ -334,6 +335,26 @@ static struct tda10023_config em28xx_tda10023_config = { | |||
334 | .invert = 1, | 335 | .invert = 1, |
335 | }; | 336 | }; |
336 | 337 | ||
338 | static struct cxd2820r_config em28xx_cxd2820r_config = { | ||
339 | .i2c_address = (0xd8 >> 1), | ||
340 | .ts_mode = CXD2820R_TS_SERIAL, | ||
341 | .if_dvbt_6 = 3300, | ||
342 | .if_dvbt_7 = 3500, | ||
343 | .if_dvbt_8 = 4000, | ||
344 | .if_dvbt2_6 = 3300, | ||
345 | .if_dvbt2_7 = 3500, | ||
346 | .if_dvbt2_8 = 4000, | ||
347 | .if_dvbc = 5000, | ||
348 | |||
349 | /* enable LNA for DVB-T2 and DVB-C */ | ||
350 | .gpio_dvbt2[0] = CXD2820R_GPIO_E | CXD2820R_GPIO_O | CXD2820R_GPIO_L, | ||
351 | .gpio_dvbc[0] = CXD2820R_GPIO_E | CXD2820R_GPIO_O | CXD2820R_GPIO_L, | ||
352 | }; | ||
353 | |||
354 | static struct tda18271_config em28xx_cxd2820r_tda18271_config = { | ||
355 | .output_opt = TDA18271_OUTPUT_LT_OFF, | ||
356 | }; | ||
357 | |||
337 | /* ------------------------------------------------------------------ */ | 358 | /* ------------------------------------------------------------------ */ |
338 | 359 | ||
339 | static int attach_xc3028(u8 addr, struct em28xx *dev) | 360 | static int attach_xc3028(u8 addr, struct em28xx *dev) |
@@ -640,6 +661,34 @@ static int dvb_init(struct em28xx *dev) | |||
640 | dvb_attach(tda18271_attach, dvb->fe[0], 0x60, | 661 | dvb_attach(tda18271_attach, dvb->fe[0], 0x60, |
641 | &dev->i2c_adap, &kworld_a340_config); | 662 | &dev->i2c_adap, &kworld_a340_config); |
642 | break; | 663 | break; |
664 | case EM28174_BOARD_PCTV_290E: | ||
665 | /* MFE | ||
666 | * FE 0 = DVB-T/T2 + FE 1 = DVB-C, both sharing same tuner. */ | ||
667 | /* FE 0 */ | ||
668 | dvb->fe[0] = dvb_attach(cxd2820r_attach, | ||
669 | &em28xx_cxd2820r_config, &dev->i2c_adap, NULL); | ||
670 | if (dvb->fe[0]) { | ||
671 | struct i2c_adapter *i2c_tuner; | ||
672 | i2c_tuner = cxd2820r_get_tuner_i2c_adapter(dvb->fe[0]); | ||
673 | /* FE 0 attach tuner */ | ||
674 | if (!dvb_attach(tda18271_attach, dvb->fe[0], 0x60, | ||
675 | i2c_tuner, &em28xx_cxd2820r_tda18271_config)) { | ||
676 | dvb_frontend_detach(dvb->fe[0]); | ||
677 | result = -EINVAL; | ||
678 | goto out_free; | ||
679 | } | ||
680 | /* FE 1. This dvb_attach() cannot fail. */ | ||
681 | dvb->fe[1] = dvb_attach(cxd2820r_attach, NULL, NULL, | ||
682 | dvb->fe[0]); | ||
683 | dvb->fe[1]->id = 1; | ||
684 | /* FE 1 attach tuner */ | ||
685 | if (!dvb_attach(tda18271_attach, dvb->fe[1], 0x60, | ||
686 | i2c_tuner, &em28xx_cxd2820r_tda18271_config)) { | ||
687 | dvb_frontend_detach(dvb->fe[1]); | ||
688 | /* leave FE 0 still active */ | ||
689 | } | ||
690 | } | ||
691 | break; | ||
643 | default: | 692 | default: |
644 | em28xx_errdev("/2: The frontend of your DVB/ATSC card" | 693 | em28xx_errdev("/2: The frontend of your DVB/ATSC card" |
645 | " isn't supported yet\n"); | 694 | " isn't supported yet\n"); |