From a4ed0f990a738412a0ba6bb071cce961a97b9d57 Mon Sep 17 00:00:00 2001 From: Andreas Oberritter Date: Sun, 8 May 2011 20:03:41 -0300 Subject: [PATCH] --- yaml --- r: 250325 b: refs/heads/master c: bbe880b4a7c66ba14b67ee7acfbaaaa1c7be2d03 h: refs/heads/master i: 250323: 029901bb235826dc85a091afe2c5480b8de91253 v: v3 --- [refs] | 2 +- .../drivers/media/dvb/dvb-core/dvb_frontend.c | 19 +++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 8b1715ff8924..622b3c6c6393 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a5959dbea37973a2440eeba39fba32c79d862ec2 +refs/heads/master: bbe880b4a7c66ba14b67ee7acfbaaaa1c7be2d03 diff --git a/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c b/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c index 3666529e2dd4..98278041d75f 100644 --- a/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/trunk/drivers/media/dvb/dvb-core/dvb_frontend.c @@ -1023,10 +1023,9 @@ static int is_legacy_delivery_system(fe_delivery_system_t s) * it's being used for the legacy or new API, reducing code and complexity. */ static void dtv_property_cache_sync(struct dvb_frontend *fe, - struct dvb_frontend_parameters *p) + struct dtv_frontend_properties *c, + const struct dvb_frontend_parameters *p) { - struct dtv_frontend_properties *c = &fe->dtv_property_cache; - c->frequency = p->frequency; c->inversion = p->inversion; @@ -1200,8 +1199,20 @@ static int dtv_property_process_get(struct dvb_frontend *fe, struct file *file) { const struct dtv_frontend_properties *c = &fe->dtv_property_cache; + struct dvb_frontend_private *fepriv = fe->frontend_priv; + struct dtv_frontend_properties cdetected; int r; + /* + * If the driver implements a get_frontend function, then convert + * detected parameters to S2API properties. + */ + if (fe->ops.get_frontend) { + cdetected = *c; + dtv_property_cache_sync(fe, &cdetected, &fepriv->parameters_out); + c = &cdetected; + } + switch(tvp->cmd) { case DTV_FREQUENCY: tvp->u.data = c->frequency; @@ -1812,7 +1823,7 @@ static int dvb_frontend_ioctl_legacy(struct file *file, memcpy (&fepriv->parameters_in, parg, sizeof (struct dvb_frontend_parameters)); - dtv_property_cache_sync(fe, &fepriv->parameters_in); + dtv_property_cache_sync(fe, c, &fepriv->parameters_in); } memset(&fetunesettings, 0, sizeof(struct dvb_frontend_tune_settings));