Mailing List archive

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

[linux-dvb] Re: ALPS-TDMB7 ALPS-TDLB7 tuner problems?



	Subject: [linux-dvb] Re: ALPS-TDMB7 ALPS-TDLB7 tuner problems?
	Date: Mon, Mar 29, 2004 at 10:30:29PM +0100

Quoting Andrew de Quincey (adq_dvb@lidskialf.net):

> > Actually, maybe the zigzag scan is also the culprit here. Is there a
> > simple way to disable it?
> 
> Hmm, not really, 

Long time ago I had proposed a patch for disabling/enabling zigzag
with a ioctl call. I need it when using a software I wrote for
positioning my dish. The patch was not accepted, but I continued to
modify and upgrade it. It is very simple. I include the latest
version, based on the current CVS dvb-kernel.

I am not sure if this is the proper way, but it works for me. If you
want to include it (or something better)into the mainstream source, it
will make me very happy ;-).

Usage is very simple. Zigzag is disabled as default. Just call ioctl
FE_DONT_ZIGZAG, and zigzag will stop. With FE_ZIGZAG, zigzag will
resume.

The patch disables the modification of the frequency, and it also
disables the lengthening of the timeout period if zigzag is disabled -
I need to collect tuning information very often - even when the signal
is locked - when positioning my dish. 

Carlo

-- 
  *         Se la Strada e la sua Virtu' non fossero state messe da parte,
* K * Carlo E. Prelz - fluido@fluido.as             che bisogno ci sarebbe
  *               di parlare tanto di amore e di rettitudine? (Chuang-Tzu)
Index: dvb-kernel/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.77
diff -u -r1.77 dvb_frontend.c
--- dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	15 Mar 2004 14:29:13 -0000	1.77
+++ dvb-kernel/linux/drivers/media/dvb/dvb-core/dvb_frontend.c	30 Mar 2004 05:24:07 -0000
@@ -113,6 +113,7 @@
 	int exit;
 	int wakeup;
 	fe_status_t status;
+        unsigned char dont_zigzag;
 };
 
 
@@ -440,6 +441,7 @@
 		fe->started_auto_step);
     
 	// set the frontend itself
+	if(!fe->dont_zigzag)
 	fe->parameters.frequency += fe->lnb_drift + fe->bending;
 	if (autoinversion) fe->parameters.inversion = fe->inversion;
 	dvb_frontend_internal_ioctl (&fe->frontend, FE_SET_FRONTEND, &fe->parameters);
@@ -502,7 +504,8 @@
 	while (1) {
 		up (&fe->sem);	    /* is locked when we enter the thread... */
 
-		timeout = wait_event_interruptible_timeout(fe->wait_queue,0 != dvb_frontend_should_wakeup (fe), delay);
+		timeout = wait_event_interruptible_timeout(fe->wait_queue,0 != dvb_frontend_should_wakeup (fe),
+							   fe->dont_zigzag ? fe->min_delay : delay);
 		if (-ERESTARTSYS == timeout || 0 != dvb_frontend_is_exiting (fe)) {
 			/* got signal or quitting */
 			break;
@@ -684,6 +687,7 @@
 	fe->state = FESTATE_IDLE;
 	fe->exit = 0;
 	fe->thread_pid = 0;
+	fe->dont_zigzag = 0;
 	mb();
 
 #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
@@ -793,7 +797,12 @@
 	case FE_GET_EVENT:
 		err = dvb_frontend_get_event (fe, parg, file->f_flags);
 		break;
-	    
+	case FE_ZIGZAG:
+	        fe->dont_zigzag=0;
+		break;
+	case FE_DONT_ZIGZAG:
+	        fe->dont_zigzag=1;
+		break;
 	case FE_GET_FRONTEND:
 		memcpy (parg, &fe->parameters,
 			sizeof (struct dvb_frontend_parameters));
Index: dvb-kernel/linux/include/linux/dvb/frontend.h
===================================================================
RCS file: /cvs/linuxtv/dvb-kernel/linux/include/linux/dvb/frontend.h,v
retrieving revision 1.11
diff -u -r1.11 frontend.h
--- dvb-kernel/linux/include/linux/dvb/frontend.h	11 Mar 2004 18:40:45 -0000	1.11
+++ dvb-kernel/linux/include/linux/dvb/frontend.h	30 Mar 2004 05:24:08 -0000
@@ -255,6 +255,8 @@
 #define FE_GET_FRONTEND            _IOR('o', 77, struct dvb_frontend_parameters)
 #define FE_GET_EVENT               _IOR('o', 78, struct dvb_frontend_event)
 
+#define FE_ZIGZAG                  _IO('o', 79)
+#define FE_DONT_ZIGZAG             _IO('o', 80)
 
 #endif /*_DVBFRONTEND_H_*/
 

Home | Main Index | Thread Index