From d92532d9860663cb39828e18a3e6aed27821f2bf Mon Sep 17 00:00:00 2001
From: Patrick Boettcher <pb@linuxtv.org>
Date: Wed, 18 Oct 2006 08:35:16 -0300
Subject: V4L/DVB (4773): Misc fixes for DiB3000 and DiB7000

This patch contains several fixes for the autosearch algorithm and other small ones.

Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
---
 drivers/media/dvb/frontends/dib7000m.c | 19 +++++++------------
 1 file changed, 7 insertions(+), 12 deletions(-)

(limited to 'drivers/media/dvb/frontends/dib7000m.c')

diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
index a85190319cf4..f5d40aa3d27f 100644
--- a/drivers/media/dvb/frontends/dib7000m.c
+++ b/drivers/media/dvb/frontends/dib7000m.c
@@ -637,15 +637,14 @@ static int dib7000m_autosearch_start(struct dvb_frontend *demod, struct dibx000_
 	struct dib7000m_state *state = demod->demodulator_priv;
 	struct dibx000_ofdm_channel auto_ch;
 	int ret = 0;
-	u8 seq;
 	u32 value;
 
 	INIT_OFDM_CHANNEL(&auto_ch);
 	auto_ch.RF_kHz           = ch->RF_kHz;
 	auto_ch.Bw               = ch->Bw;
 	auto_ch.nqam             = 2;
-	auto_ch.guard            = ch->guard == GUARD_INTERVAL_AUTO ? 0 : ch->guard;
-	auto_ch.nfft             = ch->nfft  == -1            ? 1 : ch->nfft;
+	auto_ch.guard            = 0;
+	auto_ch.nfft             = 1;
 	auto_ch.vit_alpha        = 1;
 	auto_ch.vit_select_hp    = 1;
 	auto_ch.vit_code_rate_hp = 2;
@@ -653,20 +652,16 @@ static int dib7000m_autosearch_start(struct dvb_frontend *demod, struct dibx000_
 	auto_ch.vit_hrch         = 0;
 	auto_ch.intlv_native     = 1;
 
-	seq = 0;
-	if (ch->nfft == -1 && ch->guard == GUARD_INTERVAL_AUTO) seq = 7;
-	if (ch->nfft == -1 && ch->guard != GUARD_INTERVAL_AUTO) seq = 2;
-	if (ch->nfft != -1 && ch->guard == GUARD_INTERVAL_AUTO) seq = 3;
-	dib7000m_set_channel(state, &auto_ch, seq);
+	dib7000m_set_channel(state, &auto_ch, 7);
 
 	// always use the setting for 8MHz here lock_time for 7,6 MHz are longer
-	value = 30 * state->cfg.bw[BANDWIDTH_8_MHZ].internal;
+	value = 30 * state->cfg.bw->internal;
 	ret |= dib7000m_write_word(state, 6,  (u16) ((value >> 16) & 0xffff)); // lock0 wait time
 	ret |= dib7000m_write_word(state, 7,  (u16)  (value        & 0xffff)); // lock0 wait time
-	value = 100 * state->cfg.bw[BANDWIDTH_8_MHZ].internal;
+	value = 100 * state->cfg.bw->internal;
 	ret |= dib7000m_write_word(state, 8,  (u16) ((value >> 16) & 0xffff)); // lock1 wait time
 	ret |= dib7000m_write_word(state, 9,  (u16)  (value        & 0xffff)); // lock1 wait time
-	value = 500 * state->cfg.bw[BANDWIDTH_8_MHZ].internal;
+	value = 500 * state->cfg.bw->internal;
 	ret |= dib7000m_write_word(state, 10, (u16) ((value >> 16) & 0xffff)); // lock2 wait time
 	ret |= dib7000m_write_word(state, 11, (u16)  (value        & 0xffff)); // lock2 wait time
 
@@ -919,7 +914,7 @@ static int dib7000m_get_frontend(struct dvb_frontend* fe,
 
 	fep->u.ofdm.bandwidth = state->current_bandwidth;
 
-	switch ((tps >> 8) & 0x2) {
+	switch ((tps >> 8) & 0x3) {
 		case 0: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_2K; break;
 		case 1: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_8K; break;
 		/* case 2: fep->u.ofdm.transmission_mode = TRANSMISSION_MODE_4K; break; */
-- 
cgit v1.2.3