aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/common/tuners/tuner-xc2028.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/common/tuners/tuner-xc2028.c')
-rw-r--r--drivers/media/common/tuners/tuner-xc2028.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/drivers/media/common/tuners/tuner-xc2028.c b/drivers/media/common/tuners/tuner-xc2028.c
index fc82d154c8c2..b65e6803e6c6 100644
--- a/drivers/media/common/tuners/tuner-xc2028.c
+++ b/drivers/media/common/tuners/tuner-xc2028.c
@@ -1013,11 +1013,6 @@ static int xc2028_set_params(struct dvb_frontend *fe,
1013 1013
1014 tuner_dbg("%s called\n", __func__); 1014 tuner_dbg("%s called\n", __func__);
1015 1015
1016 if (priv->ctrl.d2633)
1017 type |= D2633;
1018 else
1019 type |= D2620;
1020
1021 switch(fe->ops.info.type) { 1016 switch(fe->ops.info.type) {
1022 case FE_OFDM: 1017 case FE_OFDM:
1023 bw = p->u.ofdm.bandwidth; 1018 bw = p->u.ofdm.bandwidth;
@@ -1032,10 +1027,8 @@ static int xc2028_set_params(struct dvb_frontend *fe,
1032 break; 1027 break;
1033 case FE_ATSC: 1028 case FE_ATSC:
1034 bw = BANDWIDTH_6_MHZ; 1029 bw = BANDWIDTH_6_MHZ;
1035 /* The only ATSC firmware (at least on v2.7) is D2633, 1030 /* The only ATSC firmware (at least on v2.7) is D2633 */
1036 so overrides ctrl->d2633 */ 1031 type |= ATSC | D2633;
1037 type |= ATSC| D2633;
1038 type &= ~D2620;
1039 break; 1032 break;
1040 /* DVB-S is not supported */ 1033 /* DVB-S is not supported */
1041 default: 1034 default:
@@ -1068,6 +1061,28 @@ static int xc2028_set_params(struct dvb_frontend *fe,
1068 tuner_err("error: bandwidth not supported.\n"); 1061 tuner_err("error: bandwidth not supported.\n");
1069 }; 1062 };
1070 1063
1064 /*
1065 Selects between D2633 or D2620 firmware.
1066 It doesn't make sense for ATSC, since it should be D2633 on all cases
1067 */
1068 if (fe->ops.info.type != FE_ATSC) {
1069 switch (priv->ctrl.type) {
1070 case XC2028_D2633:
1071 type |= D2633;
1072 break;
1073 case XC2028_D2620:
1074 type |= D2620;
1075 break;
1076 case XC2028_AUTO:
1077 default:
1078 /* Zarlink seems to need D2633 */
1079 if (priv->ctrl.demod == XC3028_FE_ZARLINK456)
1080 type |= D2633;
1081 else
1082 type |= D2620;
1083 }
1084 }
1085
1071 /* All S-code tables need a 200kHz shift */ 1086 /* All S-code tables need a 200kHz shift */
1072 if (priv->ctrl.demod) 1087 if (priv->ctrl.demod)
1073 demod = priv->ctrl.demod + 200; 1088 demod = priv->ctrl.demod + 200;