[media] anysee: add support for Anysee E7 S2
authorAntti Palosaari <crope@iki.fi>
Fri, 29 Apr 2011 16:55:02 +0000 (13:55 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 20 May 2011 12:30:02 +0000 (09:30 -0300)
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>
drivers/media/dvb/dvb-usb/Kconfig
drivers/media/dvb/dvb-usb/anysee.c
drivers/media/dvb/dvb-usb/anysee.h

index 9931ec95d900cd6773b2adefb9fd6013d46cb518..e85304c59a2bcea78273f4b316d241aa6c49152c 100644 (file)
@@ -294,6 +294,8 @@ config DVB_USB_ANYSEE
        select DVB_TDA10023 if !DVB_FE_CUSTOMISE
        select MEDIA_TUNER_TDA18212 if !MEDIA_TUNER_CUSTOMISE
        select DVB_CX24116 if !DVB_FE_CUSTOMISE
+       select DVB_STV0900 if !DVB_FE_CUSTOMISE
+       select DVB_STV6110 if !DVB_FE_CUSTOMISE
        select DVB_ISL6423 if !DVB_FE_CUSTOMISE
        help
          Say Y here to support the Anysee E30, Anysee E30 Plus or
index ebcc05b73c7f4702148aa14031f9611012aebc4d..4dc1ca3332363e7569f34e08a034f13186f677fd 100644 (file)
@@ -38,6 +38,8 @@
 #include "zl10353.h"
 #include "tda18212.h"
 #include "cx24116.h"
+#include "stv0900.h"
+#include "stv6110.h"
 #include "isl6423.h"
 
 /* debug */
@@ -308,6 +310,23 @@ static struct cx24116_config anysee_cx24116_config = {
        .i2c_wr_max = 48,
 };
 
+static struct stv0900_config anysee_stv0900_config = {
+       .demod_address = (0xd0 >> 1),
+       .demod_mode = 0,
+       .xtal = 8000000,
+       .clkmode = 3,
+       .diseqc_mode = 2,
+       .tun1_maddress = 0,
+       .tun1_adc = 1, /* 1 Vpp */
+       .path1_mode = 3,
+};
+
+static struct stv6110_config anysee_stv6110_config = {
+       .i2c_address = (0xc0 >> 1),
+       .mclk = 16000000,
+       .clk_div = 1,
+};
+
 static struct isl6423_config anysee_isl6423_config = {
        .current_max = SEC_CURRENT_800m,
        .curlim  = SEC_CURRENT_LIM_OFF,
@@ -386,6 +405,15 @@ static struct isl6423_config anysee_isl6423_config = {
  * IOD[5] TDA10023 0=disabled
  * IOD[6] ZL10353 1=enabled
  * IOE[0] IF 0=enabled
+ *
+ * E7 S2 VID=1c73 PID=861f HW=19 FW=0.4 AMTCI=0.5 "anysee-E7S2(LP)"
+ * PCB: 508S2 (rev0.7)
+ * parts: DNBU10512IST(STV0903, STV6110), ISL6423
+ * OEA=80 OEB=00 OEC=03 OED=f7 OEF=ff
+ * IOA=4d IOB=00 IOC=c4 IOD=08 IOF=e4
+ * IOA[7] TS 1=enabled
+ * IOE[5] STV0903 1=enabled
+ *
  */
 
 static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
@@ -615,6 +643,24 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
                                &adap->dev->i2c_adap, 0x48);
                }
 
+               break;
+       case ANYSEE_HW_508S2: /* 19 */
+               /* E7 S2 */
+
+               /* enable transport stream on IOA[7] */
+               ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80);
+               if (ret)
+                       goto error;
+
+               /* enable DVB-S/S2 demod on IOE[5] */
+               ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 5), 0x20);
+               if (ret)
+                       goto error;
+
+               /* attach demod */
+               adap->fe = dvb_attach(stv0900_attach, &anysee_stv0900_config,
+                       &adap->dev->i2c_adap, 0);
+
                break;
        }
 
@@ -722,6 +768,20 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
                fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap,
                        &anysee_tda18212_config);
 
+               break;
+       case ANYSEE_HW_508S2: /* 19 */
+               /* E7 S2 */
+
+               /* attach tuner */
+               fe = dvb_attach(stv6110_attach, adap->fe,
+                       &anysee_stv6110_config, &adap->dev->i2c_adap);
+
+               if (fe) {
+                       /* attach LNB controller */
+                       fe = dvb_attach(isl6423_attach, adap->fe,
+                               &adap->dev->i2c_adap, &anysee_isl6423_config);
+               }
+
                break;
        default:
                fe = NULL;
index c6181047b9784e7a3630137e9750ea6bce17966d..a7673aa1e007810627876ad9702ec4662607c003 100644 (file)
@@ -67,6 +67,7 @@ struct anysee_state {
 #define ANYSEE_HW_507SI 11 /* E30 S2 Plus */
 #define ANYSEE_HW_507FA 15 /* E30 Combo Plus / E30 C Plus */
 #define ANYSEE_HW_508TC 18 /* E7 TC */
+#define ANYSEE_HW_508S2 19 /* E7 S2 */
 
 #define REG_IOA       0x80 /* Port A (bit addressable) */
 #define REG_IOB       0x90 /* Port B (bit addressable) */