Add min delay of 2000 ms on symbol rate more than 3000000 and
delay of 3000ms less than this.

This prevents crashing the frontend on continuous transponder scans.

Otherwise other dvb_frontend_tune_settings are the same as default.

This makes very little time difference to good channel scans, but slows down
the set frontend where lock can never be achieved i.e. DVB-S2.

Signed-off-by: Malcolm Priestley <tvbox...@gmail.com>
Cc: sta...@vger.kernel.org # v3.9+
---
 drivers/media/dvb-frontends/m88rs2000.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/media/dvb-frontends/m88rs2000.c 
b/drivers/media/dvb-frontends/m88rs2000.c
index ee2fec8..32cffca 100644
--- a/drivers/media/dvb-frontends/m88rs2000.c
+++ b/drivers/media/dvb-frontends/m88rs2000.c
@@ -715,6 +715,22 @@ static int m88rs2000_get_frontend(struct dvb_frontend *fe)
        return 0;
 }
 
+static int m88rs2000_get_tune_settings(struct dvb_frontend *fe,
+       struct dvb_frontend_tune_settings *tune)
+{
+       struct dtv_frontend_properties *c = &fe->dtv_property_cache;
+
+       if (c->symbol_rate > 3000000)
+               tune->min_delay_ms = 2000;
+       else
+               tune->min_delay_ms = 3000;
+
+       tune->step_size = c->symbol_rate / 16000;
+       tune->max_drift = c->symbol_rate / 2000;
+
+       return 0;
+}
+
 static int m88rs2000_i2c_gate_ctrl(struct dvb_frontend *fe, int enable)
 {
        struct m88rs2000_state *state = fe->demodulator_priv;
@@ -766,6 +782,7 @@ static struct dvb_frontend_ops m88rs2000_ops = {
 
        .set_frontend = m88rs2000_set_frontend,
        .get_frontend = m88rs2000_get_frontend,
+       .get_tune_settings = m88rs2000_get_tune_settings,
 };
 
 struct dvb_frontend *m88rs2000_attach(const struct m88rs2000_config *config,
-- 
1.9.rc1


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to