diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index fbaab68fd05cb0e04fc3203487f3aadb9f373309..a5efd5f6e57c73390952d57683d66a5187a07627 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -665,9 +665,10 @@ static int check_firmware(struct dvb_frontend *fe, enum tuner_mode new_mode,
 	tuner_dbg("I should change bandwidth %u\n", change_digital_bandwidth);
 
 	if (change_digital_bandwidth) {
-
-		/*FIXME: Should allow selecting between D2620 and D2633 */
-		type |= D2620;
+		if (priv->ctrl.d2633)
+			type |= D2633;
+		else
+			type |= D2620;
 
 		/* FIXME: When should select a DTV78 firmware?
 		 */
diff --git a/drivers/media/video/tuner-xc2028.h b/drivers/media/video/tuner-xc2028.h
index a20eeb4935d01e5053df3c241462ba396952199c..4edc4b735c84506fc6a3a8f91b3a531eac4178db 100644
--- a/drivers/media/video/tuner-xc2028.h
+++ b/drivers/media/video/tuner-xc2028.h
@@ -20,6 +20,7 @@ struct xc2028_ctrl {
 	enum xc2028_firm_type	type;
 	char			*fname;
 	int			max_len;
+	int			d2633:1;
 };
 
 struct xc2028_config {