diff --git a/drivers/media/video/tda8290.c b/drivers/media/video/tda8290.c
index d5517bc..245b202 100644
--- a/drivers/media/video/tda8290.c
+++ b/drivers/media/video/tda8290.c
@@ -110,31 +110,32 @@
 
 /*---------------------------------------------------------------------*/
 
-static void set_audio(struct dvb_frontend *fe)
+static void set_audio(struct dvb_frontend *fe,
+		      struct analog_parameters *params)
 {
 	struct tda8290_priv *priv = fe->analog_demod_priv;
 	struct tuner *t = priv->t;
 	char* mode;
 
-	if (t->std & V4L2_STD_MN) {
+	if (params->std & V4L2_STD_MN) {
 		priv->tda8290_easy_mode = 0x01;
 		mode = "MN";
-	} else if (t->std & V4L2_STD_B) {
+	} else if (params->std & V4L2_STD_B) {
 		priv->tda8290_easy_mode = 0x02;
 		mode = "B";
-	} else if (t->std & V4L2_STD_GH) {
+	} else if (params->std & V4L2_STD_GH) {
 		priv->tda8290_easy_mode = 0x04;
 		mode = "GH";
-	} else if (t->std & V4L2_STD_PAL_I) {
+	} else if (params->std & V4L2_STD_PAL_I) {
 		priv->tda8290_easy_mode = 0x08;
 		mode = "I";
-	} else if (t->std & V4L2_STD_DK) {
+	} else if (params->std & V4L2_STD_DK) {
 		priv->tda8290_easy_mode = 0x10;
 		mode = "DK";
-	} else if (t->std & V4L2_STD_SECAM_L) {
+	} else if (params->std & V4L2_STD_SECAM_L) {
 		priv->tda8290_easy_mode = 0x20;
 		mode = "L";
-	} else if (t->std & V4L2_STD_SECAM_LC) {
+	} else if (params->std & V4L2_STD_SECAM_LC) {
 		priv->tda8290_easy_mode = 0x40;
 		mode = "LC";
 	} else {
@@ -145,7 +146,8 @@
 	tuner_dbg("setting tda829x to system %s\n", mode);
 }
 
-static void tda8290_set_freq(struct dvb_frontend *fe, unsigned int freq)
+static void tda8290_set_params(struct dvb_frontend *fe,
+			       struct analog_parameters *params)
 {
 	struct tda8290_priv *priv = fe->analog_demod_priv;
 	struct tuner *t = priv->t;
@@ -172,14 +174,7 @@
 		      pll_stat;
 	int i;
 
-	struct analog_parameters params = {
-		.frequency = freq,
-		.mode      = t->mode,
-		.audmode   = t->audmode,
-		.std       = t->std
-	};
-
-	set_audio(fe);
+	set_audio(fe, params);
 
 	tuner_dbg("tda827xa config is 0x%02x\n", t->config);
 	tuner_i2c_xfer_send(&priv->i2c_props, easy_mode, 2);
@@ -200,7 +195,7 @@
 	tda8290_i2c_bridge(fe, 1);
 
 	if (fe->ops.tuner_ops.set_analog_params)
-		fe->ops.tuner_ops.set_analog_params(fe, &params);
+		fe->ops.tuner_ops.set_analog_params(fe, params);
 
 	for (i = 0; i < 3; i++) {
 		tuner_i2c_xfer_send(&priv->i2c_props, &addr_pll_stat, 1);
@@ -363,23 +358,17 @@
 
 /*---------------------------------------------------------------------*/
 
-static void tda8295_set_freq(struct dvb_frontend *fe, unsigned int freq)
+static void tda8295_set_params(struct dvb_frontend *fe,
+			       struct analog_parameters *params)
 {
 	struct tda8290_priv *priv = fe->analog_demod_priv;
 	struct tuner *t = priv->t;
 
 	unsigned char blanking_mode[]     = { 0x1d, 0x00 };
 
-	struct analog_parameters params = {
-		.frequency = freq,
-		.mode      = t->mode,
-		.audmode   = t->audmode,
-		.std       = t->std
-	};
+	set_audio(fe, params);
 
-	set_audio(fe);
-
-	tuner_dbg("%s: freq = %d\n", __FUNCTION__, freq);
+	tuner_dbg("%s: freq = %d\n", __FUNCTION__, params->frequency);
 
 	tda8295_power(fe, 1);
 	tda8295_agc1_out(fe, 1);
@@ -396,7 +385,7 @@
 	tda8295_i2c_bridge(fe, 1);
 
 	if (fe->ops.tuner_ops.set_analog_params)
-		fe->ops.tuner_ops.set_analog_params(fe, &params);
+		fe->ops.tuner_ops.set_analog_params(fe, params);
 
 	if (priv->cfg.agcf)
 		priv->cfg.agcf(fe);
@@ -673,8 +662,7 @@
 }
 
 static struct analog_tuner_ops tda8290_tuner_ops = {
-	.set_tv_freq    = tda8290_set_freq,
-	.set_radio_freq = tda8290_set_freq,
+	.set_params     = tda8290_set_params,
 	.has_signal     = tda8290_has_signal,
 	.standby        = tda8290_standby,
 	.release        = tda829x_release,
@@ -682,8 +670,7 @@
 };
 
 static struct analog_tuner_ops tda8295_tuner_ops = {
-	.set_tv_freq    = tda8295_set_freq,
-	.set_radio_freq = tda8295_set_freq,
+	.set_params     = tda8295_set_params,
 	.has_signal     = tda8295_has_signal,
 	.standby        = tda8295_standby,
 	.release        = tda829x_release,
