[linux-dvb] [patch] Add support for different tuning algorithms

Philip Prindeville philipp_subx at redfish-solutions.com
Wed Nov 16 04:56:57 CET 2005


Comments inline...


Andrew de Quincey wrote:

>Hi, this patch allows frontends (and the user) to select from one of several 
>different tuning algorithms. The patch adds four possibilities:
>
>1) SW - the current dvb-kernel software zigzag code.
>2) HW - the hardware supports zigzagging internally (e.g. DST), so use that as 
>it will be faster.
>3) ADAPTIVE - frontend-specific code exploiting frontend-specific features.
>4) SIMPLE - just set the frontend once and do nothing else (e.g. for frequency 
>scanner apps).
>
>Frontends can specify which algorithms they support using 
>FE_CAPS_CAN_TUNE_ALGO_*. They can also specify the default algorithm to use. 
>Currently the default is SW for all frontends except the DST (which has HW).
>
>ADAPTIVE is not implemented internally yet. Enough information to do this for 
>many frontends is provided on their datasheets - for example I know roughly 
>how to do it for the stv0299, stv0297, and sh1420 frontends. This needs 
>experimentation before any real adaptive code can be committed to CVS 
>however, but I thought it was better to change the API _once_ instead of 
>several times. None of the frontends currently set the 
>FE_CAN_TUNE_ALGO_ADAPTIVE flag, so it cannot be accidentally enabled.
>
>The userspace app can also choose an algorithm using an IOCTL.
>
>When a frontend device is opened read/write, the tuning algo will 
>automatically be set back to whatever the frontend specified as the default - 
>so that userspace apps don't have to care if something else changed algos.
>
>Comments/ideas welcomed!
>  
>
>------------------------------------------------------------------------
>
>? tunealgo.patch
>? build-2.6/.tmp_versions
>Index: linux/drivers/media/dvb/b2c2/stv0297_cs2.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/b2c2/stv0297_cs2.c,v
>retrieving revision 1.1
>diff -a -u -r1.1 stv0297_cs2.c
>--- linux/drivers/media/dvb/b2c2/stv0297_cs2.c	10 Sep 2005 12:43:48 -0000	1.1
>+++ linux/drivers/media/dvb/b2c2/stv0297_cs2.c	15 Nov 2005 12:53:07 -0000
>@@ -750,7 +750,9 @@
> 		 .symbol_rate_min = 870000,
> 		 .symbol_rate_max = 11700000,
> 		 .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
>-		 FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO},
>+			FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = stv0297_release,
> 
>Index: linux/drivers/media/dvb/bt8xx/dst.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/bt8xx/dst.c,v
>retrieving revision 1.44
>diff -a -u -r1.44 dst.c
>--- linux/drivers/media/dvb/bt8xx/dst.c	24 Oct 2005 00:10:35 -0000	1.44
>+++ linux/drivers/media/dvb/bt8xx/dst.c	15 Nov 2005 12:53:08 -0000
>@@ -1440,8 +1440,12 @@
> 		.frequency_min = 137000000,
> 		.frequency_max = 858000000,
> 		.frequency_stepsize = 166667,
>-		.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO | FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO
>+		.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO |
>+			FE_CAN_TRANSMISSION_MODE_AUTO |
>+			FE_CAN_GUARD_INTERVAL_AUTO  |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_HW
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_HW,
> 
> 	.release = dst_release,
> 	.init = dst_init,
>@@ -1464,8 +1468,10 @@
> 		.symbol_rate_min = 1000000,
> 		.symbol_rate_max = 45000000,
> 	/*     . symbol_rate_tolerance	=	???,*/
>-		.caps = FE_CAN_FEC_AUTO | FE_CAN_QPSK
>+		.caps = FE_CAN_FEC_AUTO | FE_CAN_QPSK |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_HW
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_HW,
> 
> 	.release = dst_release,
> 	.init = dst_init,
>@@ -1491,8 +1497,10 @@
> 		.symbol_rate_min = 1000000,
> 		.symbol_rate_max = 45000000,
> 	/*     . symbol_rate_tolerance	=	???,*/
>-		.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO
>+		.caps = FE_CAN_FEC_AUTO | FE_CAN_QAM_AUTO |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_HW
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_HW,
> 
> 	.release = dst_release,
> 	.init = dst_init,
>Index: linux/drivers/media/dvb/cinergyT2/cinergyT2.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/cinergyT2/cinergyT2.c,v
>retrieving revision 1.30
>diff -a -u -r1.30 cinergyT2.c
>--- linux/drivers/media/dvb/cinergyT2/cinergyT2.c	31 Oct 2005 17:01:06 -0000	1.30
>+++ linux/drivers/media/dvb/cinergyT2/cinergyT2.c	15 Nov 2005 12:53:09 -0000
>@@ -110,7 +110,8 @@
> 		FE_CAN_FEC_AUTO |
> 		FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 		FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>-		FE_CAN_HIERARCHY_AUTO | FE_CAN_RECOVER | FE_CAN_MUTE_TS
>+		FE_CAN_HIERARCHY_AUTO | FE_CAN_RECOVER | FE_CAN_MUTE_TS |
>+		FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> };
> 
> struct cinergyt2 {
>Index: linux/drivers/media/dvb/dvb-core/dvb_frontend.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_frontend.c,v
>retrieving revision 1.114
>diff -a -u -r1.114 dvb_frontend.c
>--- linux/drivers/media/dvb/dvb-core/dvb_frontend.c	3 Oct 2005 14:23:07 -0000	1.114
>+++ linux/drivers/media/dvb/dvb-core/dvb_frontend.c	15 Nov 2005 12:53:10 -0000
>@@ -114,6 +114,7 @@
> 	int wakeup;
> 	fe_status_t status;
> 	fe_sec_tone_mode_t tone;
>+	fe_tune_algo_t cur_tune_algo;
> };
> 
> 
>@@ -404,6 +405,18 @@
> 			continue;
> 		}
> 
>+		/* in SIMPLE/HW mode, we just set the frontend when asked and leave it alone */
>+		if ((fepriv->cur_tune_algo == FE_TUNE_ALGO_SIMPLE) ||
>+		    (fepriv->cur_tune_algo == FE_TUNE_ALGO_HW)) {
>+			if (fepriv->state & fepriv->state & FESTATE_RETUNE) {
>+				if (fe->ops->set_frontend)
>  
>

Combine these with &&?


>+					fe->ops->set_frontend(fe, &fepriv->parameters);
>+			}
>+			delay = 3*HZ;
>+			quality = 0;
>+			continue;
>+		}
>+
> 		/* get the frontend status */
> 		if (fepriv->state & FESTATE_RETUNE) {
> 			s = 0;
>@@ -891,6 +904,31 @@
> 			err = fe->ops->get_frontend(fe, (struct dvb_frontend_parameters*) parg);
> 		}
> 		break;
>+
>+	case FE_SET_FRONTEND_TUNE_ALGO:
>+		switch((fe_tune_algo_t) parg) {
>+		case FE_TUNE_ALGO_SW:
>+			if (!(fe->ops->info.caps & FE_CAN_TUNE_ALGO_SW))
>+				return -EINVAL;
>+			break;
>+
>+		case FE_TUNE_ALGO_HW:
>+			if (!(fe->ops->info.caps & FE_CAN_TUNE_ALGO_HW))
>+				return -EINVAL;
>+			break;
>+
>+		case FE_TUNE_ALGO_ADAPTIVE:
>+			if (!(fe->ops->info.caps & FE_CAN_TUNE_ALGO_ADAPTIVE))
>+				return -EINVAL;
>+			break;
>+
>+		case FE_TUNE_ALGO_SIMPLE:
>+			if (!(fe->ops->info.caps & FE_CAN_TUNE_ALGO_SIMPLE))
>+				return -EINVAL;
>+			break;
>+		}
>+		fepriv->cur_tune_algo = (fe_tune_algo_t) parg;
>+		break;
> 	};
> 
> 	up (&fepriv->sem);
>@@ -932,6 +970,9 @@
> 
> 		/*  empty event queue */
> 		fepriv->events.eventr = fepriv->events.eventw = 0;
>+
>+		/* default tune mode when opened R/W */
>+		fepriv->cur_tune_algo = fe->ops->default_tune_algo;
> 	}
> 
> 	return ret;
>Index: linux/drivers/media/dvb/dvb-core/dvb_frontend.h
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_frontend.h,v
>retrieving revision 1.23
>diff -a -u -r1.23 dvb_frontend.h
>--- linux/drivers/media/dvb/dvb-core/dvb_frontend.h	26 Sep 2005 21:58:15 -0000	1.23
>+++ linux/drivers/media/dvb/dvb-core/dvb_frontend.h	15 Nov 2005 12:53:10 -0000
>@@ -52,6 +52,7 @@
> struct dvb_frontend_ops {
> 
> 	struct dvb_frontend_info info;
>+	fe_tune_algo_t default_tune_algo;
> 
> 	void (*release)(struct dvb_frontend* fe);
> 
>Index: linux/drivers/media/dvb/dvb-usb/dtt200u-fe.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-usb/dtt200u-fe.c,v
>retrieving revision 1.5
>diff -a -u -r1.5 dtt200u-fe.c
>--- linux/drivers/media/dvb/dvb-usb/dtt200u-fe.c	22 Jul 2005 15:29:11 -0000	1.5
>+++ linux/drivers/media/dvb/dvb-usb/dtt200u-fe.c	15 Nov 2005 12:53:10 -0000
>@@ -190,8 +190,10 @@
> 				FE_CAN_TRANSMISSION_MODE_AUTO |
> 				FE_CAN_GUARD_INTERVAL_AUTO |
> 				FE_CAN_RECOVER |
>-				FE_CAN_HIERARCHY_AUTO,
>+				FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+				FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dtt200u_fe_release,
> 
>Index: linux/drivers/media/dvb/dvb-usb/vp702x-fe.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-usb/vp702x-fe.c,v
>retrieving revision 1.2
>diff -a -u -r1.2 vp702x-fe.c
>--- linux/drivers/media/dvb/dvb-usb/vp702x-fe.c	10 Jul 2005 13:34:17 -0000	1.2
>+++ linux/drivers/media/dvb/dvb-usb/vp702x-fe.c	15 Nov 2005 12:53:11 -0000
>@@ -315,8 +315,11 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
> 		FE_CAN_QPSK |
>-		FE_CAN_FEC_AUTO
>+		FE_CAN_FEC_AUTO | FE_CAN_TUNE_ALGO_SW |
>+		FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
>+
> 	.release = vp702x_fe_release,
> 
> 	.init = NULL,
>Index: linux/drivers/media/dvb/dvb-usb/vp7045-fe.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/dvb-usb/vp7045-fe.c,v
>retrieving revision 1.2
>diff -a -u -r1.2 vp7045-fe.c
>--- linux/drivers/media/dvb/dvb-usb/vp7045-fe.c	30 Mar 2005 14:08:53 -0000	1.2
>+++ linux/drivers/media/dvb/dvb-usb/vp7045-fe.c	15 Nov 2005 12:53:11 -0000
>@@ -176,8 +176,10 @@
> 				FE_CAN_TRANSMISSION_MODE_AUTO |
> 				FE_CAN_GUARD_INTERVAL_AUTO |
> 				FE_CAN_RECOVER |
>-				FE_CAN_HIERARCHY_AUTO,
>+				FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+				FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = vp7045_fe_release,
> 
>Index: linux/drivers/media/dvb/frontends/at76c651.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/at76c651.c,v
>retrieving revision 1.29
>diff -a -u -r1.29 at76c651.c
>--- linux/drivers/media/dvb/frontends/at76c651.c	5 Apr 2005 00:30:38 -0000	1.29
>+++ linux/drivers/media/dvb/frontends/at76c651.c	15 Nov 2005 12:53:12 -0000
>@@ -423,8 +423,10 @@
> 		    FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
> 		    FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO |
> 		    FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 | FE_CAN_QAM_128 |
>-		    FE_CAN_MUTE_TS | FE_CAN_QAM_256 | FE_CAN_RECOVER
>+		    FE_CAN_MUTE_TS | FE_CAN_QAM_256 | FE_CAN_RECOVER |
>+		    FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = at76c651_release,
> 
>Index: linux/drivers/media/dvb/frontends/bcm3510.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/bcm3510.c,v
>retrieving revision 1.4
>diff -a -u -r1.4 bcm3510.c
>--- linux/drivers/media/dvb/frontends/bcm3510.c	7 Nov 2005 23:23:52 -0000	1.4
>+++ linux/drivers/media/dvb/frontends/bcm3510.c	15 Nov 2005 12:53:12 -0000
>@@ -833,8 +833,11 @@
> 			FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 			FE_CAN_8VSB | FE_CAN_16VSB |
>-			FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_128 | FE_CAN_QAM_256
>+			FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_128 |
>+			FE_CAN_QAM_256 | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = bcm3510_release,
> 
>Index: linux/drivers/media/dvb/frontends/cx22700.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/cx22700.c,v
>retrieving revision 1.6
>diff -a -u -r1.6 cx22700.c
>--- linux/drivers/media/dvb/frontends/cx22700.c	5 Apr 2005 00:30:38 -0000	1.6
>+++ linux/drivers/media/dvb/frontends/cx22700.c	15 Nov 2005 12:53:13 -0000
>@@ -407,8 +407,10 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		      FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 		      FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
>-	              FE_CAN_RECOVER
>+		      FE_CAN_RECOVER | FE_CAN_TUNE_ALGO_SW |
>+		      FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = cx22700_release,
> 
>Index: linux/drivers/media/dvb/frontends/cx22702.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/cx22702.c,v
>retrieving revision 1.12
>diff -a -u -r1.12 cx22702.c
>--- linux/drivers/media/dvb/frontends/cx22702.c	7 Jun 2005 15:53:14 -0000	1.12
>+++ linux/drivers/media/dvb/frontends/cx22702.c	15 Nov 2005 12:53:13 -0000
>@@ -515,8 +515,10 @@
> 		FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 		FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 		FE_CAN_HIERARCHY_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>-		FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_RECOVER
>+		FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_RECOVER |
>+		FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = cx22702_release,
> 
>Index: linux/drivers/media/dvb/frontends/cx24110.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/cx24110.c,v
>retrieving revision 1.29
>diff -a -u -r1.29 cx24110.c
>--- linux/drivers/media/dvb/frontends/cx24110.c	2 Aug 2005 23:00:18 -0000	1.29
>+++ linux/drivers/media/dvb/frontends/cx24110.c	15 Nov 2005 12:53:14 -0000
>@@ -633,8 +633,10 @@
> 		.caps = FE_CAN_INVERSION_AUTO |
> 			FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_QPSK | FE_CAN_RECOVER
>+			FE_CAN_QPSK | FE_CAN_RECOVER | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = cx24110_release,
> 
>Index: linux/drivers/media/dvb/frontends/dib3000mb.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/dib3000mb.c,v
>retrieving revision 1.35
>diff -a -u -r1.35 dib3000mb.c
>--- linux/drivers/media/dvb/frontends/dib3000mb.c	7 Nov 2005 23:23:52 -0000	1.35
>+++ linux/drivers/media/dvb/frontends/dib3000mb.c	15 Nov 2005 12:53:14 -0000
>@@ -749,8 +749,10 @@
> 				FE_CAN_TRANSMISSION_MODE_AUTO |
> 				FE_CAN_GUARD_INTERVAL_AUTO |
> 				FE_CAN_RECOVER |
>-				FE_CAN_HIERARCHY_AUTO,
>+				FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+				FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dib3000mb_release,
> 
>Index: linux/drivers/media/dvb/frontends/dib3000mc.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/dib3000mc.c,v
>retrieving revision 1.20
>diff -a -u -r1.20 dib3000mc.c
>--- linux/drivers/media/dvb/frontends/dib3000mc.c	7 Nov 2005 23:23:52 -0000	1.20
>+++ linux/drivers/media/dvb/frontends/dib3000mc.c	15 Nov 2005 12:53:15 -0000
>@@ -893,8 +893,10 @@
> 				FE_CAN_TRANSMISSION_MODE_AUTO |
> 				FE_CAN_GUARD_INTERVAL_AUTO |
> 				FE_CAN_RECOVER |
>-				FE_CAN_HIERARCHY_AUTO,
>+				FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+				FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dib3000mc_release,
> 
>Index: linux/drivers/media/dvb/frontends/dvb_dummy_fe.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/dvb_dummy_fe.c,v
>retrieving revision 1.17
>diff -a -u -r1.17 dvb_dummy_fe.c
>--- linux/drivers/media/dvb/frontends/dvb_dummy_fe.c	7 Nov 2005 23:23:52 -0000	1.17
>+++ linux/drivers/media/dvb/frontends/dvb_dummy_fe.c	15 Nov 2005 12:53:16 -0000
>@@ -189,8 +189,10 @@
> 				FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 				FE_CAN_TRANSMISSION_MODE_AUTO |
> 				FE_CAN_GUARD_INTERVAL_AUTO |
>-				FE_CAN_HIERARCHY_AUTO,
>+				FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+				FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dvb_dummy_fe_release,
> 
>@@ -219,8 +221,10 @@
> 		.symbol_rate_max	= (57840000/2)/4,      /* SACLK/4 */
> 		.caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
> 			FE_CAN_QAM_128 | FE_CAN_QAM_256 |
>-			FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO
>+			FE_CAN_FEC_AUTO | FE_CAN_INVERSION_AUTO |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dvb_dummy_fe_release,
> 
>@@ -251,8 +255,9 @@
> 		.caps = FE_CAN_INVERSION_AUTO |
> 			FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_QPSK
>+			FE_CAN_QPSK | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = dvb_dummy_fe_release,
> 
>Index: linux/drivers/media/dvb/frontends/l64781.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/l64781.c,v
>retrieving revision 1.9
>diff -a -u -r1.9 l64781.c
>--- linux/drivers/media/dvb/frontends/l64781.c	24 Oct 2005 00:10:35 -0000	1.9
>+++ linux/drivers/media/dvb/frontends/l64781.c	15 Nov 2005 12:53:16 -0000
>@@ -578,8 +578,9 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		      FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
> 		      FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
>-		      FE_CAN_MUTE_TS
>+		      FE_CAN_MUTE_TS | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = l64781_release,
> 
>Index: linux/drivers/media/dvb/frontends/lgdt330x.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/lgdt330x.c,v
>retrieving revision 1.14
>diff -a -u -r1.14 lgdt330x.c
>--- linux/drivers/media/dvb/frontends/lgdt330x.c	7 Nov 2005 23:23:52 -0000	1.14
>+++ linux/drivers/media/dvb/frontends/lgdt330x.c	15 Nov 2005 12:53:17 -0000
>@@ -775,8 +775,11 @@
> 		.frequency_stepsize= 62500,
> 		.symbol_rate_min    = 5056941,	/* QAM 64 */
> 		.symbol_rate_max    = 10762000,	/* VSB 8  */
>-		.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
>+		.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
>+
> 	.init                 = lgdt330x_init,
> 	.set_frontend         = lgdt330x_set_parameters,
> 	.get_frontend         = lgdt330x_get_frontend,
>@@ -798,8 +801,11 @@
> 		.frequency_stepsize= 62500,
> 		.symbol_rate_min    = 5056941,	/* QAM 64 */
> 		.symbol_rate_max    = 10762000,	/* VSB 8  */
>-		.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB
>+		.caps = FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_8VSB |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
>+
> 	.init                 = lgdt330x_init,
> 	.set_frontend         = lgdt330x_set_parameters,
> 	.get_frontend         = lgdt330x_get_frontend,
>Index: linux/drivers/media/dvb/frontends/mt312.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/mt312.c,v
>retrieving revision 1.25
>diff -a -u -r1.25 mt312.c
>--- linux/drivers/media/dvb/frontends/mt312.c	7 Nov 2005 23:23:52 -0000	1.25
>+++ linux/drivers/media/dvb/frontends/mt312.c	15 Nov 2005 12:53:18 -0000
>@@ -695,8 +695,9 @@
> 		    FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 |
> 		    FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
> 		    FE_CAN_FEC_AUTO | FE_CAN_QPSK | FE_CAN_MUTE_TS |
>-	            FE_CAN_RECOVER
>+		    FE_CAN_RECOVER | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = mt312_release,
> 
>Index: linux/drivers/media/dvb/frontends/mt352.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/mt352.c,v
>retrieving revision 1.30
>diff -a -u -r1.30 mt352.c
>--- linux/drivers/media/dvb/frontends/mt352.c	7 Nov 2005 23:23:52 -0000	1.30
>+++ linux/drivers/media/dvb/frontends/mt352.c	15 Nov 2005 12:53:19 -0000
>@@ -572,8 +572,9 @@
> 			FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 			FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
> 			FE_CAN_HIERARCHY_AUTO | FE_CAN_RECOVER |
>-			FE_CAN_MUTE_TS
>+			FE_CAN_MUTE_TS | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = mt352_release,
> 
>Index: linux/drivers/media/dvb/frontends/nxt2002.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/nxt2002.c,v
>retrieving revision 1.9
>diff -a -u -r1.9 nxt2002.c
>--- linux/drivers/media/dvb/frontends/nxt2002.c	7 Nov 2005 23:23:52 -0000	1.9
>+++ linux/drivers/media/dvb/frontends/nxt2002.c	15 Nov 2005 12:53:19 -0000
>@@ -676,8 +676,10 @@
> 		.frequency_stepsize = 166666,
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256
>+			FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256 |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = nxt2002_release,
> 
>Index: linux/drivers/media/dvb/frontends/nxt200x.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/nxt200x.c,v
>retrieving revision 1.9
>diff -a -u -r1.9 nxt200x.c
>--- linux/drivers/media/dvb/frontends/nxt200x.c	4 Nov 2005 23:25:05 -0000	1.9
>+++ linux/drivers/media/dvb/frontends/nxt200x.c	15 Nov 2005 12:53:20 -0000
>@@ -32,7 +32,7 @@
>  * This driver needs external firmware. Please use the command
>  * "<kerneldir>/Documentation/dvb/get_dvb_firmware nxt2002" or
>  * "<kerneldir>/Documentation/dvb/get_dvb_firmware nxt2004" to
>- * download/extract the appropriate firmware, and then copy it to 
>+ * download/extract the appropriate firmware, and then copy it to
>  
>

What am I looking at here?  Whitespace only changes?  Please avoid these.

They cause confusion, and will cause subsequent patches against the same 
code
to fail if all of the intervening patches haven't been applied (which is 
a real pain).


>  * /usr/lib/hotplug/firmware/ or /lib/firmware/
>  * (depending on configuration of firmware hotplug).
>  */
>@@ -932,9 +932,9 @@
> 	nxt2004_microcontroller_init(state);
> 	nxt200x_microcontroller_stop(state);
> 
>-	/* soft reset everything (agc,frontend,eq,fec)*/                                
>+	/* soft reset everything (agc,frontend,eq,fec)*/
> 	buf[0] = 0xFF;
>-	nxt200x_writereg_multibyte(state, 0x08, buf, 1);                                                
>+	nxt200x_writereg_multibyte(state, 0x08, buf, 1);
>  
>

Ditto.  It would be nice if new code being committed was checked for
trailing whitespace, but once it's in... well, it's in.  Sigh.


> 	buf[0] = 0x00;
> 	nxt200x_writereg_multibyte(state, 0x08, buf, 1);
> 
>@@ -1176,8 +1176,10 @@
> 		.frequency_stepsize = 166666,	/* stepsize is just a guess */
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256
>+			FE_CAN_8VSB | FE_CAN_QAM_64 | FE_CAN_QAM_256 |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = nxt200x_release,
> 
>Index: linux/drivers/media/dvb/frontends/nxt6000.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/nxt6000.c,v
>retrieving revision 1.29
>diff -a -u -r1.29 nxt6000.c
>--- linux/drivers/media/dvb/frontends/nxt6000.c	10 Sep 2005 08:02:17 -0000	1.29
>+++ linux/drivers/media/dvb/frontends/nxt6000.c	15 Nov 2005 12:53:21 -0000
>@@ -578,8 +578,9 @@
> 	                FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO |
> 	                FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 	                FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>-	                FE_CAN_HIERARCHY_AUTO,
>+			FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = nxt6000_release,
> 
>Index: linux/drivers/media/dvb/frontends/or51132.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/or51132.c,v
>retrieving revision 1.9
>diff -a -u -r1.9 or51132.c
>--- linux/drivers/media/dvb/frontends/or51132.c	7 Nov 2005 23:23:52 -0000	1.9
>+++ linux/drivers/media/dvb/frontends/or51132.c	15 Nov 2005 12:53:21 -0000
>@@ -597,8 +597,9 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 			FE_CAN_QAM_64 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO |
>-			FE_CAN_8VSB
>+			FE_CAN_8VSB | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = or51132_release,
> 
>Index: linux/drivers/media/dvb/frontends/or51211.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/or51211.c,v
>retrieving revision 1.8
>diff -a -u -r1.8 or51211.c
>--- linux/drivers/media/dvb/frontends/or51211.c	7 Nov 2005 23:23:52 -0000	1.8
>+++ linux/drivers/media/dvb/frontends/or51211.c	15 Nov 2005 12:53:22 -0000
>@@ -608,8 +608,9 @@
> 		.frequency_stepsize = 166666,
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_8VSB
>+			FE_CAN_8VSB | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = or51211_release,
> 
>Index: linux/drivers/media/dvb/frontends/s5h1420.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/s5h1420.c,v
>retrieving revision 1.17
>diff -a -u -r1.17 s5h1420.c
>--- linux/drivers/media/dvb/frontends/s5h1420.c	7 Nov 2005 23:23:52 -0000	1.17
>+++ linux/drivers/media/dvb/frontends/s5h1420.c	15 Nov 2005 12:53:22 -0000
>@@ -793,8 +793,9 @@
> 		.caps = FE_CAN_INVERSION_AUTO |
> 		FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-		FE_CAN_QPSK
>+		FE_CAN_QPSK  | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = s5h1420_release,
> 
>Index: linux/drivers/media/dvb/frontends/sp8870.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/sp8870.c,v
>retrieving revision 1.7
>diff -a -u -r1.7 sp8870.c
>--- linux/drivers/media/dvb/frontends/sp8870.c	7 Nov 2005 23:23:52 -0000	1.7
>+++ linux/drivers/media/dvb/frontends/sp8870.c	15 Nov 2005 12:53:23 -0000
>@@ -589,8 +589,10 @@
> 					  FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 					  FE_CAN_QPSK | FE_CAN_QAM_16 |
> 					  FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
>-					  FE_CAN_HIERARCHY_AUTO |  FE_CAN_RECOVER
>+					  FE_CAN_HIERARCHY_AUTO |  FE_CAN_RECOVER |
>+					  FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = sp8870_release,
> 
>Index: linux/drivers/media/dvb/frontends/sp887x.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/sp887x.c,v
>retrieving revision 1.27
>diff -a -u -r1.27 sp887x.c
>--- linux/drivers/media/dvb/frontends/sp887x.c	7 Nov 2005 23:23:52 -0000	1.27
>+++ linux/drivers/media/dvb/frontends/sp887x.c	15 Nov 2005 12:53:23 -0000
>@@ -581,8 +581,10 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 			FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 |
>-	                FE_CAN_RECOVER
>+			FE_CAN_RECOVER | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = sp887x_release,
> 
>Index: linux/drivers/media/dvb/frontends/stv0297.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/stv0297.c,v
>retrieving revision 1.27
>diff -a -u -r1.27 stv0297.c
>--- linux/drivers/media/dvb/frontends/stv0297.c	7 Nov 2005 23:23:52 -0000	1.27
>+++ linux/drivers/media/dvb/frontends/stv0297.c	15 Nov 2005 12:53:24 -0000
>@@ -666,7 +666,9 @@
> 		 .symbol_rate_min = 870000,
> 		 .symbol_rate_max = 11700000,
> 		 .caps = FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
>-		 FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO},
>+			 FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_FEC_AUTO |
>+			 FE_CAN_TUNE_ALGO_SW|FE_CAN_TUNE_ALGO_SIMPLE},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = stv0297_release,
> 
>Index: linux/drivers/media/dvb/frontends/stv0299.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/stv0299.c,v
>retrieving revision 1.74
>diff -a -u -r1.74 stv0299.c
>--- linux/drivers/media/dvb/frontends/stv0299.c	7 Nov 2005 23:23:52 -0000	1.74
>+++ linux/drivers/media/dvb/frontends/stv0299.c	15 Nov 2005 12:53:24 -0000
>@@ -681,8 +681,9 @@
> 		.caps = FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		      FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 |
> 		      FE_CAN_QPSK |
>-		      FE_CAN_FEC_AUTO
>+		      FE_CAN_FEC_AUTO | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = stv0299_release,
> 
>Index: linux/drivers/media/dvb/frontends/tda10021.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/tda10021.c,v
>retrieving revision 1.10
>diff -a -u -r1.10 tda10021.c
>--- linux/drivers/media/dvb/frontends/tda10021.c	26 Sep 2005 21:31:27 -0000	1.10
>+++ linux/drivers/media/dvb/frontends/tda10021.c	15 Nov 2005 12:53:25 -0000
>@@ -441,8 +441,9 @@
> 		.caps = 0x400 | //FE_CAN_QAM_4
> 			FE_CAN_QAM_16 | FE_CAN_QAM_32 | FE_CAN_QAM_64 |
> 			FE_CAN_QAM_128 | FE_CAN_QAM_256 |
>-			FE_CAN_FEC_AUTO
>+			FE_CAN_FEC_AUTO | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = tda10021_release,
> 
>Index: linux/drivers/media/dvb/frontends/tda1004x.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/tda1004x.c,v
>retrieving revision 1.65
>diff -a -u -r1.65 tda1004x.c
>--- linux/drivers/media/dvb/frontends/tda1004x.c	7 Nov 2005 23:23:52 -0000	1.65
>+++ linux/drivers/media/dvb/frontends/tda1004x.c	15 Nov 2005 12:53:26 -0000
>@@ -278,7 +278,7 @@
> 	static u8 bandwidth_6mhz_48M[] = { 0x70, 0x02, 0x49, 0x24, 0x92 };
> 	static u8 bandwidth_7mhz_48M[] = { 0x60, 0x02, 0xaa, 0xaa, 0xab };
> 	static u8 bandwidth_8mhz_48M[] = { 0x54, 0x03, 0x0c, 0x30, 0xc3 };
>-	int tda10046_clk53m;	
>+	int tda10046_clk53m;
>  
>

Ditto.


> 
> 	if ((state->config->if_freq == TDA10046_FREQ_045) ||
> 	    (state->config->if_freq == TDA10046_FREQ_052))
>@@ -443,7 +443,7 @@
> static void tda10046_init_plls(struct dvb_frontend* fe)
> {
> 	struct tda1004x_state* state = fe->demodulator_priv;
>-	int tda10046_clk53m;	
>+	int tda10046_clk53m;
>  
>

Ditto.

> 
> 	if ((state->config->if_freq == TDA10046_FREQ_045) ||
> 	    (state->config->if_freq == TDA10046_FREQ_052))
>@@ -470,7 +470,7 @@
> 		tda1004x_write_byteI(state, TDA10046H_FREQ_OFFSET, 0x67);
> 	else
> 		tda1004x_write_byteI(state, TDA10046H_FREQ_OFFSET, 0x72);
>-	/* Note clock frequency is handled implicitly */		
>+	/* Note clock frequency is handled implicitly */
>  
>

Ditto.

-Philip


> 	switch (state->config->if_freq) {
> 	case TDA10046_FREQ_045:
> 		tda1004x_write_byteI(state, TDA10046H_FREQ_PHY2_MSB, 0x0c);
>@@ -1220,8 +1220,10 @@
> 		    FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		    FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 		    FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
>-		    FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO
>+		    FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>+		    FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = tda1004x_release,
> 
>@@ -1279,8 +1281,10 @@
> 		    FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 		    FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 		    FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
>-		    FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO
>+		    FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>+		    FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = tda1004x_release,
> 
>Index: linux/drivers/media/dvb/frontends/tda8083.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/tda8083.c,v
>retrieving revision 1.6
>diff -a -u -r1.6 tda8083.c
>--- linux/drivers/media/dvb/frontends/tda8083.c	7 Nov 2005 23:23:52 -0000	1.6
>+++ linux/drivers/media/dvb/frontends/tda8083.c	15 Nov 2005 12:53:26 -0000
>@@ -426,8 +426,10 @@
> 			FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
> 			FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO |
>-			FE_CAN_QPSK | FE_CAN_MUTE_TS
>+			FE_CAN_QPSK | FE_CAN_MUTE_TS  | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = tda8083_release,
> 
>Index: linux/drivers/media/dvb/frontends/tda80xx.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/tda80xx.c,v
>retrieving revision 1.7
>diff -a -u -r1.7 tda80xx.c
>--- linux/drivers/media/dvb/frontends/tda80xx.c	31 Aug 2005 12:28:11 -0000	1.7
>+++ linux/drivers/media/dvb/frontends/tda80xx.c	15 Nov 2005 12:53:27 -0000
>@@ -703,8 +703,10 @@
> 			FE_CAN_FEC_4_5 | FE_CAN_FEC_5_6 | FE_CAN_FEC_6_7 |
> 			FE_CAN_FEC_7_8 | FE_CAN_FEC_8_9 | FE_CAN_FEC_AUTO |
> 			FE_CAN_QPSK |
>-			FE_CAN_MUTE_TS
>+			FE_CAN_MUTE_TS |
>+			FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = tda80xx_release,
> 
>Index: linux/drivers/media/dvb/frontends/ves1820.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/ves1820.c,v
>retrieving revision 1.57
>diff -a -u -r1.57 ves1820.c
>--- linux/drivers/media/dvb/frontends/ves1820.c	24 Jul 2005 20:04:55 -0000	1.57
>+++ linux/drivers/media/dvb/frontends/ves1820.c	15 Nov 2005 12:53:27 -0000
>@@ -419,8 +419,11 @@
> 			FE_CAN_QAM_64 |
> 			FE_CAN_QAM_128 |
> 			FE_CAN_QAM_256 |
>-			FE_CAN_FEC_AUTO
>+			FE_CAN_FEC_AUTO |
>+			FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = ves1820_release,
> 
>Index: linux/drivers/media/dvb/frontends/ves1x93.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/frontends/ves1x93.c,v
>retrieving revision 1.26
>diff -a -u -r1.26 ves1x93.c
>--- linux/drivers/media/dvb/frontends/ves1x93.c	5 Apr 2005 00:30:39 -0000	1.26
>+++ linux/drivers/media/dvb/frontends/ves1x93.c	15 Nov 2005 12:53:27 -0000
>@@ -516,8 +516,9 @@
> 		.caps = FE_CAN_INVERSION_AUTO |
> 			FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
>-			FE_CAN_QPSK
>+			FE_CAN_QPSK | FE_CAN_TUNE_ALGO_SW | FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = ves1x93_release,
> 
>Index: linux/drivers/media/dvb/ttusb-dec/ttusbdecfe.c
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/drivers/media/dvb/ttusb-dec/ttusbdecfe.c,v
>retrieving revision 1.6
>diff -a -u -r1.6 ttusbdecfe.c
>--- linux/drivers/media/dvb/ttusb-dec/ttusbdecfe.c	22 Jun 2005 23:04:39 -0000	1.6
>+++ linux/drivers/media/dvb/ttusb-dec/ttusbdecfe.c	15 Nov 2005 12:53:28 -0000
>@@ -205,8 +205,10 @@
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 			FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 			FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>-			FE_CAN_HIERARCHY_AUTO,
>+			FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = ttusbdecfe_release,
> 
>@@ -227,8 +229,10 @@
> 			FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
> 			FE_CAN_QAM_16 | FE_CAN_QAM_64 | FE_CAN_QAM_AUTO |
> 			FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_GUARD_INTERVAL_AUTO |
>-			FE_CAN_HIERARCHY_AUTO,
>+			FE_CAN_HIERARCHY_AUTO | FE_CAN_TUNE_ALGO_SW |
>+			FE_CAN_TUNE_ALGO_SIMPLE
> 	},
>+	.default_tune_algo = FE_TUNE_ALGO_SW,
> 
> 	.release = ttusbdecfe_release,
> 
>Index: linux/include/linux/dvb/frontend.h
>===================================================================
>RCS file: /cvs/linuxtv/dvb-kernel/linux/include/linux/dvb/frontend.h,v
>retrieving revision 1.18
>diff -a -u -r1.18 frontend.h
>--- linux/include/linux/dvb/frontend.h	2 Mar 2005 21:42:01 -0000	1.18
>+++ linux/include/linux/dvb/frontend.h	15 Nov 2005 12:53:29 -0000
>@@ -62,11 +62,27 @@
> 	FE_CAN_HIERARCHY_AUTO		= 0x100000,
> 	FE_CAN_8VSB			= 0x200000,
> 	FE_CAN_16VSB			= 0x400000,
>+	FE_CAN_TUNE_ALGO_SW		= 0x800000,
>+	FE_CAN_TUNE_ALGO_HW		= 0x1000000,
>+	FE_CAN_TUNE_ALGO_ADAPTIVE	= 0x2000000,
>+	FE_CAN_TUNE_ALGO_SIMPLE		= 0x4000000,
> 	FE_NEEDS_BENDING		= 0x20000000, // not supported anymore, don't use (frontend requires frequency bending)
> 	FE_CAN_RECOVER			= 0x40000000, // frontend can recover from a cable unplug automatically
> 	FE_CAN_MUTE_TS			= 0x80000000  // frontend can stop spurious TS data output
> } fe_caps_t;
> 
>+/**
>+ * FE_TUNE_ALGO_SW - Use the standard dvb-kernel software zigzag/tuning code.
>+ * FE_TUNE_ALGO_HW - Use hardware zigzag/tuning (e.g. for twinhan cards).
>+ * FE_TUNE_ALGO_ADAPTIVE - Use frontend-specific optimised software tuning code.
>+ * FE_TUNE_ALGO_SIMPLE - Just set the parameters once (e.g. for frequency scanners.)
>+ */
>+typedef enum fe_tune_algo {
>+	FE_TUNE_ALGO_SW		= 0,
>+	FE_TUNE_ALGO_HW		= 1,
>+	FE_TUNE_ALGO_ADAPTIVE	= 2,
>+	FE_TUNE_ALGO_SIMPLE	= 3,
>+} fe_tune_algo_t;
> 
> struct dvb_frontend_info {
> 	char       name[128];
>@@ -260,6 +276,7 @@
> 
> #define FE_SET_FRONTEND		   _IOW('o', 76, struct dvb_frontend_parameters)
> #define FE_GET_FRONTEND		   _IOR('o', 77, struct dvb_frontend_parameters)
>+#define FE_SET_FRONTEND_TUNE_ALGO  _IO('o', 81 /* fe_tune_algo_t */)
> #define FE_GET_EVENT		   _IOR('o', 78, struct dvb_frontend_event)
> 
> #define FE_DISHNETWORK_SEND_LEGACY_CMD _IO('o', 80) /* unsigned int */
>  
>
>------------------------------------------------------------------------
>




More information about the linux-dvb mailing list