PATCH 29/44 multiproto + backward compatibility [SAA7134]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



diff -Naurp v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c mp-bc1/linux/drivers/media/video/saa7134/saa7134-dvb.c
--- v4l-dvb/linux/drivers/media/video/saa7134/saa7134-dvb.c	2006-06-30 19:59:11.000000000 +0400
+++ mp-bc1/linux/drivers/media/video/saa7134/saa7134-dvb.c	2006-07-23 12:33:22.000000000 +0400
@@ -133,8 +133,8 @@ static int mt352_aver777_init(struct dvb
 	return 0;
 }
 
-static int mt352_pinnacle_tuner_set_params(struct dvb_frontend* fe,
-					   struct dvb_frontend_parameters* params)
+static int mt352_pinnacle_tuner_set_params_compat(struct dvb_frontend* fe,
+						  struct dvb_frontend_parameters* params)
 {
 	u8 off[] = { 0x00, 0xf1};
 	u8 on[]  = { 0x00, 0x71};
@@ -162,7 +162,36 @@ static int mt352_pinnacle_tuner_set_para
 	return mt352_pinnacle_init(fe);
 }
 
-static int mt352_aver777_tuner_calc_regs(struct dvb_frontend *fe, struct dvb_frontend_parameters *params, u8* pllbuf, int buf_len)
+static int mt352_pinnacle_tuner_set_params(struct dvb_frontend *fe,
+					   struct dvbfe_params *params)
+{
+	u8 off[] = { 0x00, 0xf1};
+	u8 on[]  = { 0x00, 0x71};
+	struct i2c_msg msg = {.addr=0x43, .flags=0, .buf=off, .len = sizeof (off)};
+
+	struct saa7134_dev *dev = fe->dvb->priv;
+	struct v4l2_frequency f;
+
+	/* set frequency (mt2050) */
+	f.tuner     = 0;
+	f.type      = V4L2_TUNER_DIGITAL_TV;
+	f.frequency = params->frequency / 1000 * 16 / 1000;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+	saa7134_i2c_call_clients(dev,VIDIOC_S_FREQUENCY,&f);
+	msg.buf = on;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+
+	pinnacle_antenna_pwr(dev, antenna_pwr);
+
+	/* mt352 setup */
+	return mt352_pinnacle_init(fe);
+}
+
+static int mt352_aver777_tuner_calc_regs_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params, u8* pllbuf, int buf_len)
 {
 	if (buf_len < 5)
 		return -EINVAL;
@@ -174,6 +203,21 @@ static int mt352_aver777_tuner_calc_regs
 	return 5;
 }
 
+static int mt352_aver777_tuner_calc_regs(struct dvb_frontend *fe,
+					 struct dvbfe_params *params,
+					 u8* pllbuf,
+					 int buf_len)
+{
+	if (buf_len < 5)
+		return -EINVAL;
+
+	pllbuf[0] = 0x61;
+	dvb_pll_configure(&dvb_pll_philips_td1316, pllbuf + 1,
+			  params->frequency,
+			  params->delsys.dvbt.bandwidth);
+	return 5;
+}
+
 static struct mt352_config pinnacle_300i = {
 	.demod_address = 0x3c >> 1,
 	.adc_clock     = 20333,
@@ -192,7 +236,9 @@ static struct mt352_config avermedia_777
 
 #ifdef HAVE_TDA1004X
 
-static int philips_tda6651_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tda6651_pll_set_compat(u8 addr,
+					  struct dvb_frontend *fe,
+					  struct dvb_frontend_parameters *params)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
 	u8 tuner_buf[4];
@@ -275,6 +321,88 @@ static int philips_tda6651_pll_set(u8 ad
 	return 0;
 }
 
+static int philips_tda6651_pll_set(u8 addr,
+				   struct dvb_frontend *fe,
+				   struct dvbfe_params *params)
+{
+	struct saa7134_dev *dev = fe->dvb->priv;
+	u8 tuner_buf[4];
+	struct i2c_msg tuner_msg = {.addr = addr,.flags = 0,.buf = tuner_buf,.len =
+			sizeof(tuner_buf) };
+	int tuner_frequency = 0;
+	u8 band, cp, filter;
+
+	/* determine charge pump */
+	tuner_frequency = params->frequency + 36166000;
+	if (tuner_frequency < 87000000)
+		return -EINVAL;
+	else if (tuner_frequency < 130000000)
+		cp = 3;
+	else if (tuner_frequency < 160000000)
+		cp = 5;
+	else if (tuner_frequency < 200000000)
+		cp = 6;
+	else if (tuner_frequency < 290000000)
+		cp = 3;
+	else if (tuner_frequency < 420000000)
+		cp = 5;
+	else if (tuner_frequency < 480000000)
+		cp = 6;
+	else if (tuner_frequency < 620000000)
+		cp = 3;
+	else if (tuner_frequency < 830000000)
+		cp = 5;
+	else if (tuner_frequency < 895000000)
+		cp = 7;
+	else
+		return -EINVAL;
+
+	/* determine band */
+	if (params->frequency < 49000000)
+		return -EINVAL;
+	else if (params->frequency < 161000000)
+		band = 1;
+	else if (params->frequency < 444000000)
+		band = 2;
+	else if (params->frequency < 861000000)
+		band = 4;
+	else
+		return -EINVAL;
+
+	/* setup PLL filter */
+	switch (params->delsys.dvbt.bandwidth) {
+	case DVBFE_BANDWIDTH_6_MHZ:
+		filter = 0;
+		break;
+	case DVBFE_BANDWIDTH_7_MHZ:
+		filter = 0;
+		break;
+	case DVBFE_BANDWIDTH_8_MHZ:
+		filter = 1;
+		break;
+	default:
+		return -EINVAL;
+	}
+
+	/* calculate divisor
+	 * ((36166000+((1000000/6)/2)) + Finput)/(1000000/6)
+	 */
+	tuner_frequency = (((params->frequency / 1000) * 6) + 217496) / 1000;
+
+	/* setup tuner buffer */
+	tuner_buf[0] = (tuner_frequency >> 8) & 0x7f;
+	tuner_buf[1] = tuner_frequency & 0xff;
+	tuner_buf[2] = 0xca;
+	tuner_buf[3] = (cp << 5) | (filter << 3) | band;
+
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
+		return -EIO;
+	msleep(1);
+	return 0;
+}
+
 static int philips_tda6651_pll_init(u8 addr, struct dvb_frontend *fe)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
@@ -298,7 +426,13 @@ static int philips_tu1216_tuner_60_init(
 	return philips_tda6651_pll_init(0x60, fe);
 }
 
-static int philips_tu1216_tuner_60_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tu1216_tuner_60_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+	return philips_tda6651_pll_set_compat(0x60, fe, params);
+}
+
+static int philips_tu1216_tuner_60_set_params(struct dvb_frontend *fe,
+					      struct dvbfe_params *params)
 {
 	return philips_tda6651_pll_set(0x60, fe, params);
 }
@@ -328,7 +462,13 @@ static int philips_tu1216_tuner_61_init(
 	return philips_tda6651_pll_init(0x61, fe);
 }
 
-static int philips_tu1216_tuner_61_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tu1216_tuner_61_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+	return philips_tda6651_pll_set_compat(0x61, fe, params);
+}
+
+static int philips_tu1216_tuner_61_set_params(struct dvb_frontend *fe,
+					      struct dvbfe_params *params)
 {
 	return philips_tda6651_pll_set(0x61, fe, params);
 }
@@ -372,7 +512,13 @@ static int philips_europa_tuner_init(str
 	return 0;
 }
 
-static int philips_td1316_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_td1316_tuner_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+	return philips_tda6651_pll_set_compat(0x61, fe, params);
+}
+
+static int philips_td1316_tuner_set_params(struct dvb_frontend *fe,
+					   struct dvbfe_params *params)
 {
 	return philips_tda6651_pll_set(0x61, fe, params);
 }
@@ -457,7 +603,7 @@ static int philips_fmd1216_tuner_sleep(s
 	return 0;
 }
 
-static int philips_fmd1216_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_fmd1216_tuner_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
 	u8 tuner_buf[4];
@@ -541,6 +687,91 @@ static int philips_fmd1216_tuner_set_par
 	return 0;
 }
 
+static int philips_fmd1216_tuner_set_params(struct dvb_frontend *fe,
+					    struct dvbfe_params *params)
+{
+	struct saa7134_dev *dev = fe->dvb->priv;
+	u8 tuner_buf[4];
+	struct i2c_msg tuner_msg = {.addr = 0x61,.flags = 0,.buf = tuner_buf,.len =
+			sizeof(tuner_buf) };
+	int tuner_frequency = 0;
+	int divider = 0;
+	u8 band, mode, cp;
+
+	/* determine charge pump */
+	tuner_frequency = params->frequency + 36130000;
+	if (tuner_frequency < 87000000)
+		return -EINVAL;
+	/* low band */
+	else if (tuner_frequency < 180000000) {
+		band = 1;
+		mode = 7;
+		cp   = 0;
+	} else if (tuner_frequency < 195000000) {
+		band = 1;
+		mode = 6;
+		cp   = 1;
+	/* mid band	*/
+	} else if (tuner_frequency < 366000000) {
+		if (params->delsys.dvbt.bandwidth == DVBFE_BANDWIDTH_8_MHZ) {
+			band = 10;
+		} else {
+			band = 2;
+		}
+		mode = 7;
+		cp   = 0;
+	} else if (tuner_frequency < 478000000) {
+		if (params->delsys.dvbt.bandwidth == DVBFE_BANDWIDTH_8_MHZ) {
+			band = 10;
+		} else {
+			band = 2;
+		}
+		mode = 6;
+		cp   = 1;
+	/* high band */
+	} else if (tuner_frequency < 662000000) {
+		if (params->delsys.dvbt.bandwidth == DVBFE_BANDWIDTH_8_MHZ) {
+			band = 12;
+		} else {
+			band = 4;
+		}
+		mode = 7;
+		cp   = 0;
+	} else if (tuner_frequency < 840000000) {
+		if (params->delsys.dvbt.bandwidth == DVBFE_BANDWIDTH_8_MHZ) {
+			band = 12;
+		} else {
+			band = 4;
+		}
+		mode = 6;
+		cp   = 1;
+	} else {
+		if (params->delsys.dvbt.bandwidth == DVBFE_BANDWIDTH_8_MHZ) {
+			band = 12;
+		} else {
+			band = 4;
+		}
+		mode = 7;
+		cp   = 1;
+
+	}
+	/* calculate divisor */
+	/* ((36166000 + Finput) / 166666) rounded! */
+	divider = (tuner_frequency + 83333) / 166667;
+
+	/* setup tuner buffer */
+	tuner_buf[0] = (divider >> 8) & 0x7f;
+	tuner_buf[1] = divider & 0xff;
+	tuner_buf[2] = 0x80 | (cp << 6) | (mode  << 3) | 4;
+	tuner_buf[3] = 0x40 | band;
+
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
+		return -EIO;
+	return 0;
+}
+
 static struct tda1004x_config medion_cardbus = {
 	.demod_address = 0x08,
 	.invert        = 1,
@@ -600,7 +831,7 @@ static int philips_tda827x_tuner_init(st
 	return 0;
 }
 
-static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tda827x_tuner_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
 	u8 tuner_buf[14];
@@ -664,6 +895,71 @@ static int philips_tda827x_tuner_set_par
 	return 0;
 }
 
+static int philips_tda827x_tuner_set_params(struct dvb_frontend *fe,
+					    struct dvbfe_params *params)
+{
+	struct saa7134_dev *dev = fe->dvb->priv;
+	u8 tuner_buf[14];
+
+	struct i2c_msg tuner_msg = {.addr = 0x60,.flags = 0,.buf = tuner_buf,
+					.len = sizeof(tuner_buf) };
+	int i, tuner_freq, if_freq;
+	u32 N;
+	switch (params->delsys.dvbt.bandwidth) {
+	case DVBFE_BANDWIDTH_6_MHZ:
+		if_freq = 4000000;
+		break;
+	case DVBFE_BANDWIDTH_7_MHZ:
+		if_freq = 4500000;
+		break;
+	default:		   /* 8 MHz or Auto */
+		if_freq = 5000000;
+		break;
+	}
+	tuner_freq = params->frequency + if_freq;
+
+	i = 0;
+	while (tda827x_dvbt[i].lomax < tuner_freq) {
+		if(tda827x_dvbt[i + 1].lomax == 0)
+			break;
+		i++;
+	}
+
+	N = ((tuner_freq + 125000) / 250000) << (tda827x_dvbt[i].spd + 2);
+	tuner_buf[0] = 0;
+	tuner_buf[1] = (N>>8) | 0x40;
+	tuner_buf[2] = N & 0xff;
+	tuner_buf[3] = 0;
+	tuner_buf[4] = 0x52;
+	tuner_buf[5] = (tda827x_dvbt[i].spd << 6) + (tda827x_dvbt[i].div1p5 << 5) +
+				   (tda827x_dvbt[i].bs << 3) + tda827x_dvbt[i].bp;
+	tuner_buf[6] = (tda827x_dvbt[i].gc3 << 4) + 0x8f;
+	tuner_buf[7] = 0xbf;
+	tuner_buf[8] = 0x2a;
+	tuner_buf[9] = 0x05;
+	tuner_buf[10] = 0xff;
+	tuner_buf[11] = 0x00;
+	tuner_buf[12] = 0x00;
+	tuner_buf[13] = 0x40;
+
+	tuner_msg.len = 14;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	if (i2c_transfer(&dev->i2c_adap, &tuner_msg, 1) != 1)
+		return -EIO;
+
+	msleep(500);
+	/* correct CP value */
+	tuner_buf[0] = 0x30;
+	tuner_buf[1] = 0x50 + tda827x_dvbt[i].cp;
+	tuner_msg.len = 2;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &tuner_msg, 1);
+
+	return 0;
+}
+
 static int philips_tda827x_tuner_sleep(struct dvb_frontend *fe)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
@@ -727,7 +1023,7 @@ static struct tda827xa_data tda827xa_dvb
 	{ .lomax =         0, .svco = 0, .spd = 0, .scr = 0, .sbs = 0, .gc3 = 0}};
 
 
-static int philips_tda827xa_pll_set(u8 addr, struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tda827xa_pll_set_compat(u8 addr, struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
 	u8 tuner_buf[14];
@@ -813,6 +1109,94 @@ static int philips_tda827xa_pll_set(u8 a
 
 }
 
+static int philips_tda827xa_pll_set(u8 addr,
+				    struct dvb_frontend *fe,
+				    struct dvbfe_params *params)
+{
+	struct saa7134_dev *dev = fe->dvb->priv;
+	u8 tuner_buf[14];
+	unsigned char reg2[2];
+
+	struct i2c_msg msg = {.addr = addr,.flags = 0,.buf = tuner_buf};
+	int i, tuner_freq, if_freq;
+	u32 N;
+
+	switch (params->delsys.dvbt.bandwidth) {
+	case DVBFE_BANDWIDTH_6_MHZ:
+		if_freq = 4000000;
+		break;
+	case DVBFE_BANDWIDTH_7_MHZ:
+		if_freq = 4500000;
+		break;
+	default:		   /* 8 MHz or Auto */
+		if_freq = 5000000;
+		break;
+	}
+	tuner_freq = params->frequency + if_freq;
+
+	i = 0;
+	while (tda827xa_dvbt[i].lomax < tuner_freq) {
+		if(tda827xa_dvbt[i + 1].lomax == 0)
+			break;
+		i++;
+	}
+
+	N = ((tuner_freq + 31250) / 62500) << tda827xa_dvbt[i].spd;
+	tuner_buf[0] = 0;            // subaddress
+	tuner_buf[1] = N >> 8;
+	tuner_buf[2] = N & 0xff;
+	tuner_buf[3] = 0;
+	tuner_buf[4] = 0x16;
+	tuner_buf[5] = (tda827xa_dvbt[i].spd << 5) + (tda827xa_dvbt[i].svco << 3) +
+			tda827xa_dvbt[i].sbs;
+	tuner_buf[6] = 0x4b + (tda827xa_dvbt[i].gc3 << 4);
+	tuner_buf[7] = 0x0c;
+	tuner_buf[8] = 0x06;
+	tuner_buf[9] = 0x24;
+	tuner_buf[10] = 0xff;
+	tuner_buf[11] = 0x60;
+	tuner_buf[12] = 0x00;
+	tuner_buf[13] = 0x39;  // lpsel
+	msg.len = 14;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	if (i2c_transfer(&dev->i2c_adap, &msg, 1) != 1)
+		return -EIO;
+
+	msg.buf= reg2;
+	msg.len = 2;
+	reg2[0] = 0x60;
+	reg2[1] = 0x3c;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+
+	reg2[0] = 0xa0;
+	reg2[1] = 0x40;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+
+	msleep(2);
+	/* correct CP value */
+	reg2[0] = 0x30;
+	reg2[1] = 0x10 + tda827xa_dvbt[i].scr;
+	msg.len = 2;
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+
+	msleep(550);
+	reg2[0] = 0x50;
+	reg2[1] = 0x4f + (tda827xa_dvbt[i].gc3 << 4);
+	if (fe->ops.i2c_gate_ctrl)
+		fe->ops.i2c_gate_ctrl(fe, 1);
+	i2c_transfer(&dev->i2c_adap, &msg, 1);
+
+	return 0;
+
+}
+
 static int philips_tda827xa_tuner_sleep(u8 addr, struct dvb_frontend *fe)
 {
 	struct saa7134_dev *dev = fe->dvb->priv;
@@ -827,7 +1211,31 @@ static int philips_tda827xa_tuner_sleep(
 
 /* ------------------------------------------------------------------ */
 
-static int philips_tiger_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int philips_tiger_tuner_set_params_compat(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+{
+	int ret;
+	struct saa7134_dev *dev = fe->dvb->priv;
+	static u8 tda8290_close[] = { 0x21, 0xc0};
+	static u8 tda8290_open[]  = { 0x21, 0x80};
+	struct i2c_msg tda8290_msg = {.addr = 0x4b,.flags = 0, .len = 2};
+
+	/* close tda8290 i2c bridge */
+	tda8290_msg.buf = tda8290_close;
+	ret = i2c_transfer(&dev->i2c_adap, &tda8290_msg, 1);
+	if (ret != 1)
+		return -EIO;
+	msleep(20);
+	ret = philips_tda827xa_pll_set_compat(0x61, fe, params);
+	if (ret != 0)
+		return ret;
+	/* open tda8290 i2c bridge */
+	tda8290_msg.buf = tda8290_open;
+	i2c_transfer(&dev->i2c_adap, &tda8290_msg, 1);
+	return ret;
+}
+
+static int philips_tiger_tuner_set_params(struct dvb_frontend *fe,
+					  struct dvbfe_params *params)
 {
 	int ret;
 	struct saa7134_dev *dev = fe->dvb->priv;
@@ -884,7 +1292,17 @@ static struct tda1004x_config philips_ti
 
 /* ------------------------------------------------------------------ */
 
-static int lifeview_trio_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int lifeview_trio_tuner_set_params_compat(struct dvb_frontend *fe,
+						 struct dvb_frontend_parameters *params)
+{
+	int ret;
+
+	ret = philips_tda827xa_pll_set_compat(0x60, fe, params);
+	return ret;
+}
+
+static int lifeview_trio_tuner_set_params(struct dvb_frontend *fe,
+					  struct dvbfe_params *params)
 {
 	int ret;
 
@@ -910,7 +1328,17 @@ static struct tda1004x_config lifeview_t
 
 /* ------------------------------------------------------------------ */
 
-static int ads_duo_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int ads_duo_tuner_set_params_compat(struct dvb_frontend *fe,
+					   struct dvb_frontend_parameters *params)
+{
+	int ret;
+
+	ret = philips_tda827xa_pll_set_compat(0x61, fe, params);
+	return ret;
+}
+
+static int ads_duo_tuner_set_params(struct dvb_frontend *fe,
+				    struct dvbfe_params *params)
 {
 	int ret;
 
@@ -947,7 +1375,16 @@ static struct tda1004x_config ads_tech_d
 
 /* ------------------------------------------------------------------ */
 
-static int tevion_dvb220rf_tuner_set_params(struct dvb_frontend *fe, struct dvb_frontend_parameters *params)
+static int tevion_dvb220rf_tuner_set_params_compat(struct dvb_frontend *fe,
+						   struct dvb_frontend_parameters *params)
+{
+	int ret;
+	ret = philips_tda827xa_pll_set_compat(0x60, fe, params);
+	return ret;
+}
+
+static int tevion_dvb220rf_tuner_set_params(struct dvb_frontend *fe,
+					    struct dvbfe_params *params)
 {
 	int ret;
 	ret = philips_tda827xa_pll_set(0x60, fe, params);
@@ -1016,6 +1453,7 @@ static int dvb_init(struct saa7134_dev *
 		dev->dvb.frontend = mt352_attach(&pinnacle_300i,
 						 &dev->i2c_adap);
 		if (dev->dvb.frontend) {
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = mt352_pinnacle_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = mt352_pinnacle_tuner_set_params;
 		}
 		break;
@@ -1025,6 +1463,7 @@ static int dvb_init(struct saa7134_dev *
 		dev->dvb.frontend = mt352_attach(&avermedia_777,
 						 &dev->i2c_adap);
 		if (dev->dvb.frontend) {
+			dev->dvb.frontend->ops.tuner_ops.calc_regs_compat = mt352_aver777_tuner_calc_regs_compat;
 			dev->dvb.frontend->ops.tuner_ops.calc_regs = mt352_aver777_tuner_calc_regs;
 		}
 		break;
@@ -1036,6 +1475,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_fmd1216_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_fmd1216_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_fmd1216_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_fmd1216_tuner_set_params;
 		}
 		break;
@@ -1044,6 +1484,7 @@ static int dvb_init(struct saa7134_dev *
 						    &dev->i2c_adap);
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tu1216_tuner_60_init;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tu1216_tuner_60_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tu1216_tuner_60_set_params;
 		}
 		break;
@@ -1053,6 +1494,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tda827x_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
 		}
 		break;
@@ -1062,6 +1504,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tda827x_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
 		}
 		break;
@@ -1073,6 +1516,7 @@ static int dvb_init(struct saa7134_dev *
 			dev->dvb.frontend->ops.sleep = philips_europa_demod_sleep;
 			dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_td1316_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params;
 		}
 		break;
@@ -1082,6 +1526,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_europa_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_europa_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_td1316_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_td1316_tuner_set_params;
 		}
 		break;
@@ -1090,6 +1535,7 @@ static int dvb_init(struct saa7134_dev *
 						    &dev->i2c_adap);
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tu1216_tuner_61_init;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tu1216_tuner_61_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tu1216_tuner_61_set_params;
 		}
 		break;
@@ -1099,6 +1545,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tiger_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_tiger_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tiger_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params;
 		}
 		break;
@@ -1108,6 +1555,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tiger_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_tiger_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tiger_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tiger_tuner_set_params;
 		}
 		break;
@@ -1117,6 +1565,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = philips_tda827x_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = philips_tda827x_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = philips_tda827x_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = philips_tda827x_tuner_set_params;
 		}
 		break;
@@ -1125,6 +1574,7 @@ static int dvb_init(struct saa7134_dev *
 						    &dev->i2c_adap);
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.sleep = lifeview_trio_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = lifeview_trio_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = lifeview_trio_tuner_set_params;
 		}
 		break;
@@ -1134,6 +1584,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = ads_duo_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = ads_duo_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = ads_duo_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = ads_duo_tuner_set_params;
 		}
 		break;
@@ -1142,6 +1593,7 @@ static int dvb_init(struct saa7134_dev *
 						    &dev->i2c_adap);
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.sleep = tevion_dvb220rf_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = tevion_dvb220rf_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = tevion_dvb220rf_tuner_set_params;
 		}
 		break;
@@ -1151,6 +1603,7 @@ static int dvb_init(struct saa7134_dev *
 		if (dev->dvb.frontend) {
 			dev->dvb.frontend->ops.tuner_ops.init = ads_duo_tuner_init;
 			dev->dvb.frontend->ops.tuner_ops.sleep = ads_duo_tuner_sleep;
+			dev->dvb.frontend->ops.tuner_ops.set_params_compat = ads_duo_tuner_set_params_compat;
 			dev->dvb.frontend->ops.tuner_ops.set_params = ads_duo_tuner_set_params;
 		}
 		break;
_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux