V4L/DVB (6674): Add support for other DTV types

Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index cef170c..42fb141 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -919,35 +919,47 @@
 {
 	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");