diff options
author | Antti Palosaari <crope@iki.fi> | 2011-04-29 12:55:02 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 08:30:02 -0400 |
commit | bedbf3d1451dbecd7a46ffbc6ece28561673b748 (patch) | |
tree | b23f46ea91727a5ef5db872a8c1eab330a5ac37f /drivers/media/dvb | |
parent | f0a53105edabcf3d91fabeef4fbdb574d05ab551 (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/Kconfig | 2 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/anysee.c | 60 | ||||
-rw-r--r-- | drivers/media/dvb/dvb-usb/anysee.h | 1 |
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 | ||
313 | static 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 | |||
324 | static struct stv6110_config anysee_stv6110_config = { | ||
325 | .i2c_address = (0xc0 >> 1), | ||
326 | .mclk = 16000000, | ||
327 | .clk_div = 1, | ||
328 | }; | ||
329 | |||
311 | static struct isl6423_config anysee_isl6423_config = { | 330 | static 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 | ||
391 | static int anysee_frontend_attach(struct dvb_usb_adapter *adap) | 419 | static 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) */ |