aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2011-04-12 18:43:30 -0400
committerMauro Carvalho Chehab <mchehab@redhat.com>2011-05-20 08:27:10 -0400
commite82eea79a3518e116f7e337fab2b5ca3072ed99c (patch)
tree4c5a5f3fbb8cd1fd4b1ea148d5dea156b02b310e /drivers/media
parent1fd80701b5bd42fce36f4d32d5c5415354e68d98 (diff)
[media] anysee: enhance demod and tuner attach
Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/dvb/dvb-usb/anysee.c43
1 files changed, 17 insertions, 26 deletions
diff --git a/drivers/media/dvb/dvb-usb/anysee.c b/drivers/media/dvb/dvb-usb/anysee.c
index e55a2c0ea81a..27019471cdd9 100644
--- a/drivers/media/dvb/dvb-usb/anysee.c
+++ b/drivers/media/dvb/dvb-usb/anysee.c
@@ -396,8 +396,6 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
396 /* attach demod */ 396 /* attach demod */
397 adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config, 397 adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config,
398 &adap->dev->i2c_adap); 398 &adap->dev->i2c_adap);
399 if (adap->fe)
400 break;
401 399
402 break; 400 break;
403 case ANYSEE_HW_507CD: /* 6 */ 401 case ANYSEE_HW_507CD: /* 6 */
@@ -416,8 +414,6 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
416 /* attach demod */ 414 /* attach demod */
417 adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config, 415 adap->fe = dvb_attach(zl10353_attach, &anysee_zl10353_config,
418 &adap->dev->i2c_adap); 416 &adap->dev->i2c_adap);
419 if (adap->fe)
420 break;
421 417
422 break; 418 break;
423 case ANYSEE_HW_507DC: /* 10 */ 419 case ANYSEE_HW_507DC: /* 10 */
@@ -431,8 +427,6 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
431 /* attach demod */ 427 /* attach demod */
432 adap->fe = dvb_attach(tda10023_attach, &anysee_tda10023_config, 428 adap->fe = dvb_attach(tda10023_attach, &anysee_tda10023_config,
433 &adap->dev->i2c_adap, 0x48); 429 &adap->dev->i2c_adap, 0x48);
434 if (adap->fe)
435 break;
436 430
437 break; 431 break;
438 case ANYSEE_HW_507FA: /* 15 */ 432 case ANYSEE_HW_507FA: /* 15 */
@@ -482,8 +476,6 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
482 &anysee_zl10353_config, 476 &anysee_zl10353_config,
483 &adap->dev->i2c_adap); 477 &adap->dev->i2c_adap);
484 } 478 }
485 if (adap->fe)
486 break;
487 } else { 479 } else {
488 /* disable DVB-T demod on IOD[0] */ 480 /* disable DVB-T demod on IOD[0] */
489 ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 0), 481 ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 0),
@@ -509,9 +501,8 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
509 &anysee_tda10023_config, 501 &anysee_tda10023_config,
510 &adap->dev->i2c_adap, 0x48); 502 &adap->dev->i2c_adap, 0x48);
511 } 503 }
512 if (adap->fe)
513 break;
514 } 504 }
505
515 break; 506 break;
516 case ANYSEE_HW_508TC: /* 18 */ 507 case ANYSEE_HW_508TC: /* 18 */
517 /* E7 TC */ 508 /* E7 TC */
@@ -544,8 +535,6 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
544 adap->fe = dvb_attach(zl10353_attach, 535 adap->fe = dvb_attach(zl10353_attach,
545 &anysee_zl10353_tda18212_config, 536 &anysee_zl10353_tda18212_config,
546 &adap->dev->i2c_adap); 537 &adap->dev->i2c_adap);
547 if (adap->fe)
548 break;
549 } else { 538 } else {
550 /* disable DVB-T demod on IOD[6] */ 539 /* disable DVB-T demod on IOD[6] */
551 ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 6), 540 ret = anysee_wr_reg_mask(adap->dev, REG_IOD, (0 << 6),
@@ -569,18 +558,16 @@ static int anysee_frontend_attach(struct dvb_usb_adapter *adap)
569 adap->fe = dvb_attach(tda10023_attach, 558 adap->fe = dvb_attach(tda10023_attach,
570 &anysee_tda10023_tda18212_config, 559 &anysee_tda10023_tda18212_config,
571 &adap->dev->i2c_adap, 0x48); 560 &adap->dev->i2c_adap, 0x48);
572 if (adap->fe)
573 break;
574 } 561 }
562
575 break; 563 break;
576 } 564 }
577 565
578 if (!adap->fe) { 566 if (!adap->fe) {
579 /* we have no frontend :-( */ 567 /* we have no frontend :-( */
580 ret = -ENODEV; 568 ret = -ENODEV;
581 err("Unknown Anysee version: %02x %02x %02x. " \ 569 err("Unsupported Anysee version. " \
582 "Please report the <linux-media@vger.kernel.org>.", 570 "Please report the <linux-media@vger.kernel.org>.");
583 hw_info[0], hw_info[1], hw_info[2]);
584 } 571 }
585error: 572error:
586 return ret; 573 return ret;
@@ -590,7 +577,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
590{ 577{
591 struct anysee_state *state = adap->dev->priv; 578 struct anysee_state *state = adap->dev->priv;
592 struct dvb_frontend *fe; 579 struct dvb_frontend *fe;
593 int ret = 0; 580 int ret;
594 deb_info("%s:\n", __func__); 581 deb_info("%s:\n", __func__);
595 582
596 switch (state->hw) { 583 switch (state->hw) {
@@ -598,14 +585,15 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
598 /* E30 */ 585 /* E30 */
599 586
600 /* attach tuner */ 587 /* attach tuner */
601 dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1), 588 fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1),
602 NULL, DVB_PLL_THOMSON_DTT7579); 589 NULL, DVB_PLL_THOMSON_DTT7579);
590
603 break; 591 break;
604 case ANYSEE_HW_507CD: /* 6 */ 592 case ANYSEE_HW_507CD: /* 6 */
605 /* E30 Plus */ 593 /* E30 Plus */
606 594
607 /* attach tuner */ 595 /* attach tuner */
608 dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1), 596 fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc2 >> 1),
609 &adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579); 597 &adap->dev->i2c_adap, DVB_PLL_THOMSON_DTT7579);
610 598
611 break; 599 break;
@@ -613,8 +601,9 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
613 /* E30 C Plus */ 601 /* E30 C Plus */
614 602
615 /* attach tuner */ 603 /* attach tuner */
616 dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1), 604 fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1),
617 &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); 605 &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A);
606
618 break; 607 break;
619 case ANYSEE_HW_507FA: /* 15 */ 608 case ANYSEE_HW_507FA: /* 15 */
620 /* E30 Combo Plus */ 609 /* E30 Combo Plus */
@@ -654,7 +643,7 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
654 goto error; 643 goto error;
655 644
656 /* attach tuner */ 645 /* attach tuner */
657 dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1), 646 fe = dvb_attach(dvb_pll_attach, adap->fe, (0xc0 >> 1),
658 &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A); 647 &adap->dev->i2c_adap, DVB_PLL_SAMSUNG_DTOS403IH102A);
659 648
660 break; 649 break;
@@ -669,15 +658,17 @@ static int anysee_tuner_attach(struct dvb_usb_adapter *adap)
669 /* attach tuner */ 658 /* attach tuner */
670 fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap, 659 fe = dvb_attach(tda18212_attach, adap->fe, &adap->dev->i2c_adap,
671 &anysee_tda18212_config); 660 &anysee_tda18212_config);
672 if (!fe)
673 ret = -ENODEV;
674 661
675 break; 662 break;
676
677 default: 663 default:
678 ret = -ENODEV; 664 fe = NULL;
679 } 665 }
680 666
667 if (fe)
668 ret = 0;
669 else
670 ret = -ENODEV;
671
681error: 672error:
682 return ret; 673 return ret;
683} 674}