diff options
Diffstat (limited to 'drivers/media/common/tuners/tuner-xc2028.c')
-rw-r--r-- | drivers/media/common/tuners/tuner-xc2028.c | 33 |
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; |