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

Manu Abraham abraham.manu at gmail.com
Fri Nov 18 12:53:57 CET 2005


Andrew de Quincey wrote:

>On Thursday 17 Nov 2005 20:23, Johannes Stezenbach wrote:
>  
>
>>Hi Andrew,
>>
>>On Thu, Nov 17, 2005 at 07:29:28PM +0000, Andrew de Quincey wrote:
>>    
>>
>>>How about:
>>>
>>>/**
>>> * When set, this flag will disable any zigzagging or other "normal"
>>>tuning * behaviour. Additionally, there will be no automatic monitoring
>>>of the lock * status, and hence no frontend events will be generated.
>>> */
>>>#define FE_TUNE_MODE_ONESHOT 0x01
>>>      
>>>
>>Don't forget the comment about open() resetting the flag.
>>
>>Please post the complete frontend.h API change
>>to the list again before comitting.
>>    
>>
>
>Here you go.
>
>  
>
>------------------------------------------------------------------------
>
>? tunealgo-2.patch
>? tunealgo-3.patch
>? tunealgo-4.patch
>? tunealgo-5.patch
>? tunealgo-6.pa
>? tunealgo-6.patch
>? tunealgo.patch
>? build-2.6/.tmp_versions
>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	17 Nov 2005 21:03:12 -0000
>@@ -1341,30 +1341,39 @@
> 	return 0;
> }
> 
>-static int dst_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_parameters *p)
>+static int dst_set_frontend(struct dvb_frontend* fe,
>+			    struct dvb_frontend_parameters* p,
>+			    fe_tune_mode_flags_t mode_flags,
>+			    int *delay,
>+			    fe_status_t *status)
> {
> 	struct dst_state *state = fe->demodulator_priv;
> 
>-	dst_set_freq(state, p->frequency);
>-	dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency);
>-
>-	if (state->dst_type == DST_TYPE_IS_SAT) {
>-		if (state->type_flags & DST_TYPE_HAS_OBS_REGS)
>-			dst_set_inversion(state, p->inversion);
>-		dst_set_fec(state, p->u.qpsk.fec_inner);
>-		dst_set_symbolrate(state, p->u.qpsk.symbol_rate);
>-		dst_set_polarization(state);
>-		dprintk(verbose, DST_DEBUG, 1, "Set Symbolrate=[%d]", p->u.qpsk.symbol_rate);
>-
>-	} else if (state->dst_type == DST_TYPE_IS_TERR)
>-		dst_set_bandwidth(state, p->u.ofdm.bandwidth);
>-	else if (state->dst_type == DST_TYPE_IS_CABLE) {
>-		dst_set_fec(state, p->u.qam.fec_inner);
>-		dst_set_symbolrate(state, p->u.qam.symbol_rate);
>-		dst_set_modulation(state, p->u.qam.modulation);
>+	if (p != NULL) {
>+		dst_set_freq(state, p->frequency);
>+		dprintk(verbose, DST_DEBUG, 1, "Set Frequency=[%d]", p->frequency);
>+
>+		if (state->dst_type == DST_TYPE_IS_SAT) {
>+			if (state->type_flags & DST_TYPE_HAS_OBS_REGS)
>+				dst_set_inversion(state, p->inversion);
>+			dst_set_fec(state, p->u.qpsk.fec_inner);
>+			dst_set_symbolrate(state, p->u.qpsk.symbol_rate);
>+			dst_set_polarization(state);
>+			dprintk(verbose, DST_DEBUG, 1, "Set Symbolrate=[%d]", p->u.qpsk.symbol_rate);
>+
>+		} else if (state->dst_type == DST_TYPE_IS_TERR)
>+			dst_set_bandwidth(state, p->u.ofdm.bandwidth);
>+		else if (state->dst_type == DST_TYPE_IS_CABLE) {
>+			dst_set_fec(state, p->u.qam.fec_inner);
>+			dst_set_symbolrate(state, p->u.qam.symbol_rate);
>+			dst_set_modulation(state, p->u.qam.modulation);
>+		}
>+		dst_write_tuna(fe);
> 	}
>-	dst_write_tuna(fe);
> 
>+	dst_read_status(fe, status);
>+
>+	*delay = HZ/10;
> 	return 0;
> }
> 
>@@ -1445,7 +1454,7 @@
> 
> 	.release = dst_release,
> 	.init = dst_init,
>-	.set_frontend = dst_set_frontend,
>+	.tune = dst_set_frontend,
> 	.get_frontend = dst_get_frontend,
> 	.read_status = dst_read_status,
> 	.read_signal_strength = dst_read_signal_strength,
>@@ -1469,7 +1478,7 @@
> 
> 	.release = dst_release,
> 	.init = dst_init,
>-	.set_frontend = dst_set_frontend,
>+	.tune = dst_set_frontend,
> 	.get_frontend = dst_get_frontend,
> 	.read_status = dst_read_status,
> 	.read_signal_strength = dst_read_signal_strength,
>@@ -1496,7 +1505,7 @@
> 
> 	.release = dst_release,
> 	.init = dst_init,
>-	.set_frontend = dst_set_frontend,
>+	.tune = dst_set_frontend,
> 	.get_frontend = dst_get_frontend,
> 	.read_status = dst_read_status,
> 	.read_signal_strength = dst_read_signal_strength,
>  
>

Ack'd.


Manu




More information about the linux-dvb mailing list