diff options
author | Antti Palosaari <crope@iki.fi> | 2011-04-10 19:23:02 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 08:27:05 -0400 |
commit | a43be980b3cf9c72f4bac4c7ce043e52004c6d90 (patch) | |
tree | 105ccdd08442bbc47dfb5c6b149c9aff1083fb94 /drivers/media/dvb/dvb-usb/anysee.c | |
parent | 72ffd2b822b4ff589432df0f56e3d2cd60c10447 (diff) |
[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 3c8a3abae831..fa5acd040e93 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) | |||
505 | break; | 505 | break; |
506 | } | 506 | } |
507 | break; | 507 | break; |
508 | case ANYSEE_HW_508TC: /* 18 */ | ||
509 | /* E7 TC */ | ||
510 | |||
511 | /* enable transport stream on IOA[7] */ | ||
512 | ret = anysee_wr_reg_mask(adap->dev, REG_IOA, (1 << 7), 0x80); | ||
513 | if (ret) | ||
514 | goto error; | ||
515 | |||
516 | if (dvb_usb_anysee_delsys) { | ||
517 | /* disable DVB-C demod on IOD[5] */ | ||
518 | ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 5), | ||
519 | 0x20); | ||
520 | if (ret) | ||
521 | goto error; | ||
522 | |||
523 | /* enable DVB-T demod on IOD[6] */ | ||
524 | ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (1 << 6), | ||
525 | 0x40); | ||
526 | if (ret) | ||
527 | goto error; | ||
528 | |||
529 | /* enable IF route on IOE[0] */ | ||
530 | ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (0 << 0), | ||
531 | 0x01); | ||
532 | if (ret) | ||
533 | goto error; | ||
534 | |||
535 | /* attach demod */ | ||
536 | adap->fe = dvb_attach(zl10353_attach, | ||
537 | &anysee_zl10353_tda18212_config, | ||
538 | &adap->dev->i2c_adap); | ||
539 | if (adap->fe) | ||
540 | break; | ||
541 | } else { | ||
542 | /* disable DVB-T demod on IOD[6] */ | ||
543 | ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 6), | ||
544 | 0x40); | ||
545 | if (ret) | ||
546 | goto error; | ||
547 | |||
548 | /* enable DVB-C demod on IOD[5] */ | ||
549 | ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (1 << 5), | ||
550 | 0x20); | ||
551 | if (ret) | ||
552 | goto error; | ||
553 | |||
554 | /* enable IF route on IOE[0] */ | ||
555 | ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 0), | ||
556 | 0x01); | ||
557 | if (ret) | ||
558 | goto error; | ||
559 | |||
560 | /* attach demod */ | ||
561 | adap->fe = dvb_attach(tda10023_attach, | ||
562 | &anysee_tda10023_tda18212_config, | ||
563 | &adap->dev->i2c_adap, 0x48); | ||
564 | if (adap->fe) | ||
565 | break; | ||
566 | } | ||
567 | break; | ||
508 | } | 568 | } |
509 | 569 | ||
510 | if (!adap->fe) { | 570 | if (!adap->fe) { |
@@ -590,6 +650,22 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap) | |||
590 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); | 650 | &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); |
591 | 651 | ||
592 | break; | 652 | break; |
653 | case ANYSEE_HW_508TC: /* 18 */ | ||
654 | /* E7 TC */ | ||
655 | |||
656 | /* enable tuner on IOE[4] */ | ||
657 | ret = anysee_wr_reg_mask(adap->dev, REG_IOE, (1 << 4), 0x10); | ||
658 | if (ret) | ||
659 | goto error; | ||
660 | |||
661 | /* attach tuner */ | ||
662 | fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap, | ||
663 | &anysee_tda18212_config); | ||
664 | if (!fe) | ||
665 | ret = -ENODEV; | ||
666 | |||
667 | break; | ||
668 | |||
593 | default: | 669 | default: |
594 | ret = -ENODEV; | 670 | ret = -ENODEV; |
595 | } | 671 | } |