diff options
| author | Soeren Moch <Soeren.Moch@stud.uni-hannover.de> | 2008-01-25 04:27:06 -0500 |
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2008-01-25 16:05:17 -0500 |
| commit | 853ea132c75ff2c4e3c3aaf61bf3ef5779774dbc (patch) | |
| tree | a70a35f555011abdccc7ce86abcdd58a5eb05df2 | |
| parent | 13b83b5d516abe2610ae7812267d7d322050bf68 (diff) | |
V4L/DVB (7070): Fix some tuning problems
The attached patch solves all my vdr tuning problems on a dib7000p
nova-t stick as far as I could check within the last weekend.
It disables streaming while tuning, like that the number of faulty TS
packets is reduced.
Signed-off-by: Soeren Moch <Soeren.Moch@stud.uni-hannover.de>
Signed-off-by: Patrick Boettcher <pb@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
| -rw-r--r-- | drivers/media/dvb/frontends/dib3000mc.c | 8 | ||||
| -rw-r--r-- | drivers/media/dvb/frontends/dib7000m.c | 9 | ||||
| -rw-r--r-- | drivers/media/dvb/frontends/dib7000p.c | 8 |
3 files changed, 17 insertions, 8 deletions
diff --git a/drivers/media/dvb/frontends/dib3000mc.c b/drivers/media/dvb/frontends/dib3000mc.c index 3667f8e48091..fa851601e7d4 100644 --- a/drivers/media/dvb/frontends/dib3000mc.c +++ b/drivers/media/dvb/frontends/dib3000mc.c | |||
| @@ -684,6 +684,9 @@ static int dib3000mc_set_frontend(struct dvb_frontend* fe, | |||
| 684 | struct dvb_frontend_parameters *fep) | 684 | struct dvb_frontend_parameters *fep) |
| 685 | { | 685 | { |
| 686 | struct dib3000mc_state *state = fe->demodulator_priv; | 686 | struct dib3000mc_state *state = fe->demodulator_priv; |
| 687 | int ret; | ||
| 688 | |||
| 689 | dib3000mc_set_output_mode(state, OUTMODE_HIGH_Z); | ||
| 687 | 690 | ||
| 688 | state->current_bandwidth = fep->u.ofdm.bandwidth; | 691 | state->current_bandwidth = fep->u.ofdm.bandwidth; |
| 689 | dib3000mc_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); | 692 | dib3000mc_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); |
| @@ -715,10 +718,11 @@ static int dib3000mc_set_frontend(struct dvb_frontend* fe, | |||
| 715 | dib3000mc_get_frontend(fe, fep); | 718 | dib3000mc_get_frontend(fe, fep); |
| 716 | } | 719 | } |
| 717 | 720 | ||
| 721 | ret = dib3000mc_tune(fe, fep); | ||
| 722 | |||
| 718 | /* make this a config parameter */ | 723 | /* make this a config parameter */ |
| 719 | dib3000mc_set_output_mode(state, OUTMODE_MPEG2_FIFO); | 724 | dib3000mc_set_output_mode(state, OUTMODE_MPEG2_FIFO); |
| 720 | 725 | return ret; | |
| 721 | return dib3000mc_tune(fe, fep); | ||
| 722 | } | 726 | } |
| 723 | 727 | ||
| 724 | static int dib3000mc_read_status(struct dvb_frontend *fe, fe_status_t *stat) | 728 | static int dib3000mc_read_status(struct dvb_frontend *fe, fe_status_t *stat) |
diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c index fb18441a8c57..5f1375e30dfc 100644 --- a/drivers/media/dvb/frontends/dib7000m.c +++ b/drivers/media/dvb/frontends/dib7000m.c | |||
| @@ -1171,7 +1171,9 @@ static int dib7000m_set_frontend(struct dvb_frontend* fe, | |||
| 1171 | struct dvb_frontend_parameters *fep) | 1171 | struct dvb_frontend_parameters *fep) |
| 1172 | { | 1172 | { |
| 1173 | struct dib7000m_state *state = fe->demodulator_priv; | 1173 | struct dib7000m_state *state = fe->demodulator_priv; |
| 1174 | int time; | 1174 | int time, ret; |
| 1175 | |||
| 1176 | dib7000m_set_output_mode(state, OUTMODE_HIGH_Z); | ||
| 1175 | 1177 | ||
| 1176 | state->current_bandwidth = fep->u.ofdm.bandwidth; | 1178 | state->current_bandwidth = fep->u.ofdm.bandwidth; |
| 1177 | dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); | 1179 | dib7000m_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); |
| @@ -1206,10 +1208,11 @@ static int dib7000m_set_frontend(struct dvb_frontend* fe, | |||
| 1206 | dib7000m_get_frontend(fe, fep); | 1208 | dib7000m_get_frontend(fe, fep); |
| 1207 | } | 1209 | } |
| 1208 | 1210 | ||
| 1211 | ret = dib7000m_tune(fe, fep); | ||
| 1212 | |||
| 1209 | /* make this a config parameter */ | 1213 | /* make this a config parameter */ |
| 1210 | dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO); | 1214 | dib7000m_set_output_mode(state, OUTMODE_MPEG2_FIFO); |
| 1211 | 1215 | return ret; | |
| 1212 | return dib7000m_tune(fe, fep); | ||
| 1213 | } | 1216 | } |
| 1214 | 1217 | ||
| 1215 | static int dib7000m_read_status(struct dvb_frontend *fe, fe_status_t *stat) | 1218 | static int dib7000m_read_status(struct dvb_frontend *fe, fe_status_t *stat) |
diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c index f45bcfc51cf8..0396a6f31ef8 100644 --- a/drivers/media/dvb/frontends/dib7000p.c +++ b/drivers/media/dvb/frontends/dib7000p.c | |||
| @@ -1128,8 +1128,9 @@ static int dib7000p_set_frontend(struct dvb_frontend* fe, | |||
| 1128 | struct dvb_frontend_parameters *fep) | 1128 | struct dvb_frontend_parameters *fep) |
| 1129 | { | 1129 | { |
| 1130 | struct dib7000p_state *state = fe->demodulator_priv; | 1130 | struct dib7000p_state *state = fe->demodulator_priv; |
| 1131 | int time; | 1131 | int time, ret; |
| 1132 | 1132 | ||
| 1133 | dib7000p_set_output_mode(state, OUTMODE_HIGH_Z); | ||
| 1133 | state->current_bandwidth = fep->u.ofdm.bandwidth; | 1134 | state->current_bandwidth = fep->u.ofdm.bandwidth; |
| 1134 | dib7000p_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); | 1135 | dib7000p_set_bandwidth(state, BANDWIDTH_TO_KHZ(fep->u.ofdm.bandwidth)); |
| 1135 | 1136 | ||
| @@ -1166,10 +1167,11 @@ static int dib7000p_set_frontend(struct dvb_frontend* fe, | |||
| 1166 | dib7000p_get_frontend(fe, fep); | 1167 | dib7000p_get_frontend(fe, fep); |
| 1167 | } | 1168 | } |
| 1168 | 1169 | ||
| 1170 | ret = dib7000p_tune(fe, fep); | ||
| 1171 | |||
| 1169 | /* make this a config parameter */ | 1172 | /* make this a config parameter */ |
| 1170 | dib7000p_set_output_mode(state, OUTMODE_MPEG2_FIFO); | 1173 | dib7000p_set_output_mode(state, OUTMODE_MPEG2_FIFO); |
| 1171 | 1174 | return ret; | |
| 1172 | return dib7000p_tune(fe, fep); | ||
| 1173 | } | 1175 | } |
| 1174 | 1176 | ||
| 1175 | static int dib7000p_read_status(struct dvb_frontend *fe, fe_status_t *stat) | 1177 | static int dib7000p_read_status(struct dvb_frontend *fe, fe_status_t *stat) |
