|
@@ -1744,6 +1744,7 @@ static int dvb_frontend_ioctl_properties(struct file *file,
|
|
|
{
|
|
|
struct dvb_device *dvbdev = file->private_data;
|
|
|
struct dvb_frontend *fe = dvbdev->priv;
|
|
|
+ struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
|
|
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
|
|
int err = 0;
|
|
|
|
|
@@ -1810,9 +1811,14 @@ static int dvb_frontend_ioctl_properties(struct file *file,
|
|
|
|
|
|
/*
|
|
|
* Fills the cache out struct with the cache contents, plus
|
|
|
- * the data retrieved from get_frontend.
|
|
|
+ * the data retrieved from get_frontend, if the frontend
|
|
|
+ * is not idle. Otherwise, returns the cached content
|
|
|
*/
|
|
|
- dtv_get_frontend(fe, NULL);
|
|
|
+ if (fepriv->state != FESTATE_IDLE) {
|
|
|
+ err = dtv_get_frontend(fe, NULL);
|
|
|
+ if (err < 0)
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
for (i = 0; i < tvps->num; i++) {
|
|
|
err = dtv_property_process_get(fe, c, tvp + i, file);
|
|
|
if (err < 0)
|