diff options
author | Antti Palosaari <crope@iki.fi> | 2011-04-12 18:43:30 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 08:27:10 -0400 |
commit | e82eea79a3518e116f7e337fab2b5ca3072ed99c (patch) | |
tree | 4c5a5f3fbb8cd1fd4b1ea148d5dea156b02b310e /drivers/media | |
parent | 1fd80701b5bd42fce36f4d32d5c5415354e68d98 (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.c | 43 |
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 | } |
585 | error: | 572 | error: |
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 | |||
681 | error: | 672 | error: |
682 | return ret; | 673 | return ret; |
683 | } | 674 | } |