aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/media/video/tuner-xc2028.c23
-rw-r--r--drivers/media/video/tuner-xc2028.h2
2 files changed, 17 insertions, 8 deletions
diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index 63a6fca1f8c..0565edd224b 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -998,20 +998,27 @@ static int xc2028_set_params(struct dvb_frontend *fe,
return -EINVAL;
}
- /* FIXME:
- There are two Scodes that will never be selected:
- DTV78 ZARLINK456, DTV78 DIBCOM52
- When it should opt for DTV78 instead of DTV7 or DTV8?
- */
switch (bw) {
case BANDWIDTH_8_MHZ:
- type |= DTV8 | F8MHZ;
+ if (p->frequency < 470000000)
+ priv->ctrl.vhfbw7 = 0;
+ else
+ priv->ctrl.uhfbw8 = 1;
+ type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV8;
+ type |= F8MHZ;
break;
case BANDWIDTH_7_MHZ:
- type |= DTV7 | F8MHZ;
+ if (p->frequency < 470000000)
+ priv->ctrl.vhfbw7 = 1;
+ else
+ priv->ctrl.uhfbw8 = 0;
+ type |= (priv->ctrl.vhfbw7 && priv->ctrl.uhfbw8) ? DTV78 : DTV7;
+ type |= F8MHZ;
break;
case BANDWIDTH_6_MHZ:
- type |= DTV6 ;
+ type |= DTV6;
+ priv->ctrl.vhfbw7 = 0;
+ priv->ctrl.uhfbw8 = 0;
break;
default:
tuner_err("error: bandwidth not supported.\n");
diff --git a/drivers/media/video/tuner-xc2028.h b/drivers/media/video/tuner-xc2028.h
index 1fe8b195960..7462629b98f 100644
--- a/drivers/media/video/tuner-xc2028.h
+++ b/drivers/media/video/tuner-xc2028.h
@@ -30,6 +30,8 @@ struct xc2028_ctrl {
unsigned int mts :1;
unsigned int d2633 :1;
unsigned int input1:1;
+ unsigned int vhfbw7:1;
+ unsigned int uhfbw8:1;
unsigned int demod;
};