V4L/DVB: get_frontend for STV0900
authorAbylay Ospan <aospan@netup.ru>
Sat, 6 Mar 2010 18:05:26 +0000 (15:05 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 18 May 2010 03:46:41 +0000 (00:46 -0300)
Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/dvb/frontends/stv0900_core.c

index 01f8f1f802fdadefc5e50ac8603e1ff97f3c9eac..a3cdca7246340b8f4be555c3076dd4b4fd05116c 100644 (file)
@@ -1583,7 +1583,7 @@ static enum dvbfe_search stv0900_search(struct dvb_frontend *fe,
        struct dtv_frontend_properties *c = &fe->dtv_property_cache;
 
        struct stv0900_search_params p_search;
-       struct stv0900_signal_info p_result;
+       struct stv0900_signal_info p_result = intp->result[demod];
 
        enum fe_stv0900_error error = STV0900_NO_ERROR;
 
@@ -1842,6 +1842,19 @@ static void stv0900_release(struct dvb_frontend *fe)
        kfree(state);
 }
 
+static int stv0900_get_frontend(struct dvb_frontend *fe,
+                               struct dvb_frontend_parameters *p)
+{
+       struct stv0900_state *state = fe->demodulator_priv;
+       struct stv0900_internal *intp = state->internal;
+       enum fe_stv0900_demod_num demod = state->demod;
+       struct stv0900_signal_info p_result = intp->result[demod];
+
+       p->frequency = p_result.locked ? p_result.frequency : 0;
+       p->u.qpsk.symbol_rate = p_result.locked ? p_result.symbol_rate : 0;
+       return 0;
+}
+
 static struct dvb_frontend_ops stv0900_ops = {
 
        .info = {
@@ -1862,6 +1875,7 @@ static struct dvb_frontend_ops stv0900_ops = {
        },
        .release                        = stv0900_release,
        .init                           = stv0900_init,
+       .get_frontend                   = stv0900_get_frontend,
        .get_frontend_algo              = stv0900_frontend_algo,
        .i2c_gate_ctrl                  = stv0900_i2c_gate_ctrl,
        .diseqc_send_master_cmd         = stv0900_send_master_cmd,