summaryrefslogtreecommitdiff
path: root/linux/drivers/media/dvb
diff options
context:
space:
mode:
authorPatrick Boettcher <pboettcher@kernellabs.com>2009-08-17 17:53:51 +0200
committerPatrick Boettcher <pboettcher@kernellabs.com>2009-08-17 17:53:51 +0200
commiteb80450edef873c9b5d0a839659da0a642e7716a (patch)
tree1a2be29778fca9738b1949d11efe051d042d4e37 /linux/drivers/media/dvb
parentb651b32e5b4b73b2a95243d8e7e8ae4fa8ee3cdb (diff)
downloadmediapointer-dvb-s2-eb80450edef873c9b5d0a839659da0a642e7716a.tar.gz
mediapointer-dvb-s2-eb80450edef873c9b5d0a839659da0a642e7716a.tar.bz2
DiB8000: fix channel search parameter initialization
From: Patrick Boettcher <pboettcher@dibcom.fr> This patch is fixing the initialization of the channel search parameters. Priority: normal Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr> Signed-off-by: Patrick Boettcher <pboettcher@dibcom.fr>
Diffstat (limited to 'linux/drivers/media/dvb')
-rw-r--r--linux/drivers/media/dvb/frontends/dib8000.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/linux/drivers/media/dvb/frontends/dib8000.c b/linux/drivers/media/dvb/frontends/dib8000.c
index cc2fae3be..bb16712a0 100644
--- a/linux/drivers/media/dvb/frontends/dib8000.c
+++ b/linux/drivers/media/dvb/frontends/dib8000.c
@@ -23,7 +23,7 @@
#define FE_CALLBACK_TIME_NEVER 0xffffffff
-static int debug = 0;
+static int debug;
module_param(debug, int, 0644);
MODULE_PARM_DESC(debug, "turn on debugging (default: 0)");
@@ -1672,10 +1672,6 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
int slist = 0;
- state->fe.dtv_property_cache.transmission_mode = TRANSMISSION_MODE_8K;
- state->fe.dtv_property_cache.guard_interval = GUARD_INTERVAL_1_8;
- //state->fe.dtv_property_cache.isdbt_sb_mode = 0;
- //state->fe.dtv_property_cache.isdbt_partial_reception = 0;
state->fe.dtv_property_cache.inversion = 0;
if (!state->fe.dtv_property_cache.isdbt_sb_mode)
state->fe.dtv_property_cache.layer[0].segment_count = 13;
@@ -1685,6 +1681,8 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
//choose the right list, in sb, always do everything
if (state->fe.dtv_property_cache.isdbt_sb_mode) {
+ state->fe.dtv_property_cache.transmission_mode = TRANSMISSION_MODE_8K;
+ state->fe.dtv_property_cache.guard_interval = GUARD_INTERVAL_1_8;
slist = 7;
dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x9fff) | (1 << 13));
} else {
@@ -1692,22 +1690,21 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
if (state->fe.dtv_property_cache.transmission_mode == TRANSMISSION_MODE_AUTO) {
slist = 7;
dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x9fff) | (1 << 13)); // P_mode = 1 to have autosearch start ok with mode2
- } else {
+ } else
slist = 3;
- state->fe.dtv_property_cache.transmission_mode = state->fe.dtv_property_cache.transmission_mode;
- }
} else {
if (state->fe.dtv_property_cache.transmission_mode == TRANSMISSION_MODE_AUTO) {
slist = 2;
- state->fe.dtv_property_cache.guard_interval = state->fe.dtv_property_cache.guard_interval;
dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x9fff) | (1 << 13)); // P_mode = 1
- } else {
+ } else
slist = 0;
- state->fe.dtv_property_cache.transmission_mode = state->fe.dtv_property_cache.transmission_mode;
- state->fe.dtv_property_cache.guard_interval = state->fe.dtv_property_cache.guard_interval;
- }
}
+ if (state->fe.dtv_property_cache.transmission_mode == TRANSMISSION_MODE_AUTO)
+ state->fe.dtv_property_cache.transmission_mode = TRANSMISSION_MODE_8K;
+ if (state->fe.dtv_property_cache.guard_interval == GUARD_INTERVAL_AUTO)
+ state->fe.dtv_property_cache.guard_interval = GUARD_INTERVAL_1_8;
+
dprintk("using list for autosearch : %d", slist);
dib8000_set_channel(state, (unsigned char)slist, 1);
//dib8000_write_word(state, 0, (dib8000_read_word(state, 0) & 0x9fff) | (1 << 13)); // P_mode = 1
@@ -1734,6 +1731,7 @@ static int dib8000_autosearch_start(struct dvb_frontend *fe)
dib8000_write_word(state, 0, (u16) ((1 << 15) | value));
dib8000_read_word(state, 1284); // reset the INT. n_irq_pending
dib8000_write_word(state, 0, (u16) value);
+
}
return 0;