aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2011-04-29 12:55:02 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-05-20 08:30:02 -0400
commitbedbf3d1451dbecd7a46ffbc6ece28561673b748 (patch)
treeb23f46ea91727a5ef5db872a8c1eab330a5ac37f /drivers/media/dvb
parentf0a53105edabcf3d91fabeef4fbdb574d05ab551 (diff)
[media] anysee: add support for Anysee E7 S2
It is DVB-S/S2 USB box. * DNBU10512IST NIM * STV0903 demod * STV6110 tuner * Intersil ISL6423 LNB controller Signed-off-by: Antti Palosaari <crope@iki.fi> Cc: info@anysee.com Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb')
-rw-r--r--drivers/media/dvb/dvb-usb/Kconfig2
-rw-r--r--drivers/media/dvb/dvb-usb/anysee.c60
-rw-r--r--drivers/media/dvb/dvb-usb/anysee.h1
3 files changed, 63 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/Kconfig b/drivers/media/dvb/dvb-usb/Kconfig
index 9931ec95d900..e85304c59a2b 100644
--- a/drivers/media/dvb/dvb-usb/Kconfig
+++ b/drivers/media/dvb/dvb-usb/Kconfig
@@ -294,6 +294,8 @@ config DVB_USB_ANYSEE
294 select DVB_TDA10023 if !DVB_FE_CUSTOMISE 294 select DVB_TDA10023 if !DVB_FE_CUSTOMISE
295 select MEDIA_TUNER_TDA18212 if !MEDIA_TUNER_CUSTOMISE 295 select MEDIA_TUNER_TDA18212 if !MEDIA_TUNER_CUSTOMISE
296 select DVB_CX24116 if !DVB_FE_CUSTOMISE 296 select DVB_CX24116 if !DVB_FE_CUSTOMISE
297 select DVB_STV0900 if !DVB_FE_CUSTOMISE
298 select DVB_STV6110 if !DVB_FE_CUSTOMISE
297 select DVB_ISL6423 if !DVB_FE_CUSTOMISE 299 select DVB_ISL6423 if !DVB_FE_CUSTOMISE
298 help 300 help
299 Say Y here to support the Anysee E30, Anysee E30 Plus or 301 Say Y here to support the Anysee E30, Anysee E30 Plus or
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
index ebcc05b73c7f..4dc1ca333236 100644
--- a/drivers/media/dvb/dvb-usb/anysee.c
+++ b/drivers/media/dvb/dvb-usb/anysee.c
@@ -38,6 +38,8 @@
38#include "zl10353.h" 38#include "zl10353.h"
39#include "tda18212.h" 39#include "tda18212.h"
40#include "cx24116.h" 40#include "cx24116.h"
41#include "stv0900.h"
42#include "stv6110.h"
41#include "isl6423.h" 43#include "isl6423.h"
42 44
43/* debug */ 45/* debug */
@@ -308,6 +310,23 @@ static struct cx24116_config anysee_cx24116_config = {
308 .i2c_wr_max = 48, 310 .i2c_wr_max = 48,
309}; 311};
310 312
313static struct stv0900_config anysee_stv0900_config = {
314 .demod_address = (0xd0 >> 1),
315 .demod_mode = 0,
316 .xtal = 8000000,
317 .clkmode = 3,
318 .diseqc_mode = 2,
319 .tun1_maddress = 0,
320 .tun1_adc = 1, /* 1 Vpp */
321 .path1_mode = 3,
322};
323
324static struct stv6110_config anysee_stv6110_config = {
325 .i2c_address = (0xc0 >> 1),
326 .mclk = 16000000,
327 .clk_div = 1,
328};
329
311static struct isl6423_config anysee_isl6423_config = { 330static struct isl6423_config anysee_isl6423_config = {
312 .current_max = SEC_CURRENT_800m, 331 .current_max = SEC_CURRENT_800m,
313 .curlim = SEC_CURRENT_LIM_OFF, 332 .curlim = SEC_CURRENT_LIM_OFF,
@@ -386,6 +405,15 @@ static struct isl6423_config anysee_isl6423_config = {
386 * IOD[5] TDA10023 0=disabled 405 * IOD[5] TDA10023 0=disabled
387 * IOD[6] ZL10353 1=enabled 406 * IOD[6] ZL10353 1=enabled
388 * IOE[0] IF 0=enabled 407 * IOE[0] IF 0=enabled
408 *
409 * E7 S2 VID=1c73 PID=861f HW=19 FW=0.4 AMTCI=0.5 "anysee-E7S2(LP)"
410 * PCB: 508S2 (rev0.7)
411 * parts: DNBU10512IST(STV0903, STV6110), ISL6423
412 * OEA=80 OEB=00 OEC=03 OED=f7 OEF=ff
413 * IOA=4d IOB=00 IOC=c4 IOD=08 IOF=e4
414 * IOA[7] TS 1=enabled
415 * IOE[5] STV0903 1=enabled
416 *
389 */ 417 */
390 418
391static int anysee_frontend_attach(struct dvb_usb_adapter *adap) 419static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
@@ -616,6 +644,24 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
616 } 644 }
617 645
618 break; 646 break;
647 case ANYSEE_HW_508S2: /* 19 */
648 /* E7 S2 */
649
650 /* enable transport stream on IOA[7] */
651 ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80);
652 if (ret)
653 goto error;
654
655 /* enable DVB-S/S2 demod on IOE[5] */
656 ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 5), 0x20);
657 if (ret)
658 goto error;
659
660 /* attach demod */
661 adap->fe = dvb_attach(stv0900_attach, &anysee_stv0900_config,
662 &adap->dev->i2c_adap, 0);
663
664 break;
619 } 665 }
620 666
621 if (!adap->fe) { 667 if (!adap->fe) {
@@ -723,6 +769,20 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
723 &anysee_tda18212_config); 769 &anysee_tda18212_config);
724 770
725 break; 771 break;
772 case ANYSEE_HW_508S2: /* 19 */
773 /* E7 S2 */
774
775 /* attach tuner */
776 fe = dvb_attach(stv6110_attach, adap->fe,
777 &anysee_stv6110_config, &adap->dev->i2c_adap);
778
779 if (fe) {
780 /* attach LNB controller */
781 fe = dvb_attach(isl6423_attach, adap->fe,
782 &adap->dev->i2c_adap, &anysee_isl6423_config);
783 }
784
785 break;
726 default: 786 default:
727 fe = NULL; 787 fe = NULL;
728 } 788 }
diff --git a/drivers/media/dvb/dvb-usb/anysee.h b/drivers/media/dvb/dvb-usb/anysee.h
index c6181047b978..a7673aa1e007 100644
--- a/drivers/media/dvb/dvb-usb/anysee.h
+++ b/drivers/media/dvb/dvb-usb/anysee.h
@@ -67,6 +67,7 @@ struct anysee_state {
67#define ANYSEE_HW_507SI 11 /* E30 S2 Plus */ 67#define ANYSEE_HW_507SI 11 /* E30 S2 Plus */
68#define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */ 68#define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */
69#define ANYSEE_HW_508TC 18 /* E7 TC */ 69#define ANYSEE_HW_508TC 18 /* E7 TC */
70#define ANYSEE_HW_508S2 19 /* E7 S2 */
70 71
71#define REG_IOA 0x80 /* Port A (bit addressable) */ 72#define REG_IOA 0x80 /* Port A (bit addressable) */
72#define REG_IOB 0x90 /* Port B (bit addressable) */ 73#define REG_IOB 0x90 /* Port B (bit addressable) */