summaryrefslogtreecommitdiffstats
path: root/drivers/media/video/tuner-xc2028.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/tuner-xc2028.c')
-rw-r--r--drivers/media/video/tuner-xc2028.c42
1 files changed, 27 insertions, 15 deletions
diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index cef170cc2ad8..42fb141fc386 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -919,35 +919,47 @@ static int xc2028_set_params(struct dvb_frontend *fe,
{
struct xc2028_data *priv = fe->tuner_priv;
unsigned int type=0;
- fe_bandwidth_t bw;
+ fe_bandwidth_t bw = BANDWIDTH_8_MHZ;
tuner_dbg("%s called\n", __FUNCTION__);
- /* FIXME: Only OFDM implemented */
- if (fe->ops.info.type != FE_OFDM) {
- tuner_err("DTV type not implemented.\n");
- return -EINVAL;
- }
- bw = p->u.ofdm.bandwidth;
-
- if (bw == BANDWIDTH_7_MHZ || bw == BANDWIDTH_8_MHZ)
- type |= F8MHZ;
-
if (priv->ctrl.d2633)
type |= D2633;
else
type |= D2620;
+ switch(fe->ops.info.type) {
+ case FE_QPSK:
+ break;
+ case FE_OFDM:
+ bw = p->u.ofdm.bandwidth;
+ break;
+ case FE_QAM:
+ bw = BANDWIDTH_6_MHZ;
+ type |= QAM;
+ break;
+ case FE_ATSC:
+ bw = BANDWIDTH_6_MHZ;
+ type |= ATSC| D2633;
+ break;
+ }
+
+ bw = p->u.ofdm.bandwidth;
+
+ /* 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;
+ type |= DTV8 | F8MHZ;
break;
case BANDWIDTH_7_MHZ:
- type |= DTV7;
+ type |= DTV7 | F8MHZ;
break;
case BANDWIDTH_6_MHZ:
- /* FIXME: Should allow select also ATSC */
- type |= DTV6 | QAM;
+ type |= DTV6 ;
break;
default:
tuner_err("error: bandwidth not supported.\n");