summaryrefslogtreecommitdiffstats
path: root/drivers/media/dvb/frontends/rtl2830.c
diff options
context:
space:
mode:
authorAntti Palosaari <crope@iki.fi>2012-01-22 02:40:58 +0100
committerMauro Carvalho Chehab <mchehab@redhat.com>2012-02-28 22:44:25 +0100
commita8567cf22e0efb9faafa6cf33b607ca5aee3c2fa (patch)
tree158208995684ed035053db50970530b3f8c47299 /drivers/media/dvb/frontends/rtl2830.c
parent[media] rtl28xxu: many small tweaks (diff)
downloadlinux-a8567cf22e0efb9faafa6cf33b607ca5aee3c2fa.tar.xz
linux-a8567cf22e0efb9faafa6cf33b607ca5aee3c2fa.zip
[media] rtl2830: prevent .read_status() when sleeping
Hardware is not accessible when device is sleeping. Preventing such IOCTLs when sleep should be job of DVB CORE... Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Diffstat (limited to 'drivers/media/dvb/frontends/rtl2830.c')
-rw-r--r--drivers/media/dvb/frontends/rtl2830.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/media/dvb/frontends/rtl2830.c b/drivers/media/dvb/frontends/rtl2830.c
index f036701c12ee..f971d949b2af 100644
--- a/drivers/media/dvb/frontends/rtl2830.c
+++ b/drivers/media/dvb/frontends/rtl2830.c
@@ -273,12 +273,21 @@ static int rtl2830_init(struct dvb_frontend *fe)
if (ret)
goto err;
+ priv->sleeping = false;
+
return ret;
err:
dbg("%s: failed=%d", __func__, ret);
return ret;
}
+static int rtl2830_sleep(struct dvb_frontend *fe)
+{
+ struct rtl2830_priv *priv = fe->demodulator_priv;
+ priv->sleeping = true;
+ return 0;
+}
+
int rtl2830_get_tune_settings(struct dvb_frontend *fe,
struct dvb_frontend_tune_settings *s)
{
@@ -372,6 +381,9 @@ static int rtl2830_read_status(struct dvb_frontend *fe, fe_status_t *status)
u8 tmp;
*status = 0;
+ if (priv->sleeping)
+ return 0;
+
ret = rtl2830_rd_reg_mask(priv, 0x351, &tmp, 0x78); /* [6:3] */
if (ret)
goto err;
@@ -498,6 +510,8 @@ struct dvb_frontend *rtl2830_attach(const struct rtl2830_config *cfg,
goto err;
}
+ priv->sleeping = true;
+
return &priv->fe;
err:
dbg("%s: failed=%d", __func__, ret);
@@ -530,6 +544,7 @@ static struct dvb_frontend_ops rtl2830_ops = {
.release = rtl2830_release,
.init = rtl2830_init,
+ .sleep = rtl2830_sleep,
.get_tune_settings = rtl2830_get_tune_settings,