diff options
| author | Andreas Oberritter <obi@linuxtv.org> | 2011-05-08 20:03:41 -0300 | 
|---|---|---|
| committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-05-20 19:53:31 -0300 | 
| commit | bbe880b4a7c66ba14b67ee7acfbaaaa1c7be2d03 (patch) | |
| tree | c0461e06aeb084a74cb8ae6dacdd8be87109c69a | |
| parent | a5959dbea37973a2440eeba39fba32c79d862ec2 (diff) | |
[media] DVB: allow to read back of detected parameters through S2API
Signed-off-by: Andreas Oberritter <obi@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| -rw-r--r-- | drivers/media/dvb/dvb-core/dvb_frontend.c | 19 | 
1 files changed, 15 insertions, 4 deletions
| diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c index 3666529e2dd4..98278041d75f 100644 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c +++ b/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)); | 
