diff options
author | Antti Palosaari <crope@iki.fi> | 2011-04-10 20:23:02 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 09:27:05 -0300 |
commit | a43be980b3cf9c72f4bac4c7ce043e52004c6d90 (patch) | |
tree | 105ccdd08442bbc47dfb5c6b149c9aff1083fb94 /drivers/media/dvb/dvb-usb/anysee.c | |
parent | 72ffd2b822b4ff589432df0f56e3d2cd60c10447 (diff) | |
download | op-kernel-dev-a43be980b3cf9c72f4bac4c7ce043e52004c6d90.zip op-kernel-dev-a43be980b3cf9c72f4bac4c7ce043e52004c6d90.tar.gz |
[media] anysee: add support for Anysee E7 TC
It is ZL10353, TDA10023 and TDA18212.
Tuner is inside of Samsung DNOD44CDH086A tuner module.
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/dvb-usb/anysee.c')
-rw-r--r-- | drivers/media/dvb/dvb-usb/anysee.c | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c index 3c8a3ab..fa5acd0 100644 --- a/drivers/media/dvb/dvb-usb/anysee.c +++ b/drivers/media/dvb/dvb-usb/anysee.c @@ -505,6 +505,66 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap) break; } break; + case ANYSEE_HW_508TC: /* 18 */ + /* E7 TC */ + + /* enable transport stream on IOA[7] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80); + if (ret) + goto error; + + if (dvb_usb_anysee_delsys) { + /* disable DVB-C demod on IOD[5] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 5), + 0x20); + if (ret) + goto error; + + /* enable DVB-T demod on IOD[6] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (1 << 6), + 0x40); + if (ret) + goto error; + + /* enable IF route on IOE[0] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (0 << 0), + 0x01); + if (ret) + goto error; + + /* attach demod */ + adap->fe = dvb_attach(zl10353_attach, + &anysee_zl10353_tda18212_config, + &adap->dev->i2c_adap); + if (adap->fe) + break; + } else { + /* disable DVB-T demod on IOD[6] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 6), + 0x40); + if (ret) + goto error; + + /* enable DVB-C demod on IOD[5] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (1 << 5), + 0x20); + if (ret) + goto error; + + /* enable IF route on IOE[0] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 0), + 0x01); + if (ret) + goto error; + + /* attach demod */ + adap->fe = dvb_attach(tda10023_attach, + &anysee_tda10023_tda18212_config, + &adap->dev->i2c_adap, 0x48); + if (adap->fe) + break; + } + break; } if (!adap->fe) { @@ -590,6 +650,22 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); break; + case ANYSEE_HW_508TC: /* 18 */ + /* E7 TC */ + + /* enable tuner on IOE[4] */ + ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 4), 0x10); + if (ret) + goto error; + + /* attach tuner */ + fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap, + &anysee_tda18212_config); + if (!fe) + ret = -ENODEV; + + break; + default: ret = -ENODEV; } |