diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/media/dvb/frontends/tda18271-fe.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/drivers/media/dvb/frontends/tda18271-fe.c b/drivers/media/dvb/frontends/tda18271-fe.c index 26042a977e4e..250899a90aa2 100644 --- a/drivers/media/dvb/frontends/tda18271-fe.c +++ b/drivers/media/dvb/frontends/tda18271-fe.c | |||
@@ -652,21 +652,13 @@ static int tda18271c2_tune(struct dvb_frontend *fe, | |||
652 | 652 | ||
653 | /* ------------------------------------------------------------------ */ | 653 | /* ------------------------------------------------------------------ */ |
654 | 654 | ||
655 | static int tda18271c1_tune(struct dvb_frontend *fe, | 655 | static int tda18271c1_rf_tracking_filter_calibration(struct dvb_frontend *fe, |
656 | u32 ifc, u32 freq, u32 bw, u8 std, int radio) | 656 | u32 freq, u32 bw) |
657 | { | 657 | { |
658 | struct tda18271_priv *priv = fe->tuner_priv; | 658 | struct tda18271_priv *priv = fe->tuner_priv; |
659 | unsigned char *regs = priv->tda18271_regs; | 659 | unsigned char *regs = priv->tda18271_regs; |
660 | u32 N = 0; | 660 | u32 N = 0; |
661 | 661 | ||
662 | tda18271_init(fe); | ||
663 | |||
664 | mutex_lock(&priv->lock); | ||
665 | |||
666 | tda_dbg("freq = %d, ifc = %d\n", freq, ifc); | ||
667 | |||
668 | /* RF tracking filter calibration */ | ||
669 | |||
670 | /* calculate bp filter */ | 662 | /* calculate bp filter */ |
671 | tda18271_calc_bp_filter(fe, &freq); | 663 | tda18271_calc_bp_filter(fe, &freq); |
672 | tda18271_write_regs(fe, R_EP1, 1); | 664 | tda18271_write_regs(fe, R_EP1, 1); |
@@ -737,7 +729,7 @@ static int tda18271c1_tune(struct dvb_frontend *fe, | |||
737 | 729 | ||
738 | regs[R_EB7] = 0x40; | 730 | regs[R_EB7] = 0x40; |
739 | tda18271_write_regs(fe, R_EB7, 1); | 731 | tda18271_write_regs(fe, R_EB7, 1); |
740 | msleep(10); | 732 | msleep(10); /* pll locking */ |
741 | 733 | ||
742 | regs[R_EB20] = 0xec; | 734 | regs[R_EB20] = 0xec; |
743 | tda18271_write_regs(fe, R_EB20, 1); | 735 | tda18271_write_regs(fe, R_EB20, 1); |
@@ -752,6 +744,22 @@ static int tda18271c1_tune(struct dvb_frontend *fe, | |||
752 | if (0 == tda18271_calc_rf_cal(fe, &freq)) | 744 | if (0 == tda18271_calc_rf_cal(fe, &freq)) |
753 | tda18271_write_regs(fe, R_EB14, 1); | 745 | tda18271_write_regs(fe, R_EB14, 1); |
754 | 746 | ||
747 | return 0; | ||
748 | } | ||
749 | |||
750 | static int tda18271c1_tune(struct dvb_frontend *fe, | ||
751 | u32 ifc, u32 freq, u32 bw, u8 std, int radio) | ||
752 | { | ||
753 | struct tda18271_priv *priv = fe->tuner_priv; | ||
754 | |||
755 | tda18271_init(fe); | ||
756 | |||
757 | mutex_lock(&priv->lock); | ||
758 | |||
759 | tda_dbg("freq = %d, ifc = %d\n", freq, ifc); | ||
760 | |||
761 | tda18271c1_rf_tracking_filter_calibration(fe, freq, bw); | ||
762 | |||
755 | tda18271_channel_configuration(fe, ifc, freq, bw, std, radio); | 763 | tda18271_channel_configuration(fe, ifc, freq, bw, std, radio); |
756 | 764 | ||
757 | mutex_unlock(&priv->lock); | 765 | mutex_unlock(&priv->lock); |