[media] rtl2832: implement sleep
authorAntti Palosaari <crope@iki.fi>
Tue, 16 Dec 2014 17:51:33 +0000 (14:51 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 3 Feb 2015 18:20:02 +0000 (16:20 -0200)
Put demod to soft reset in order to save power when sleep. That drops
power usage ~30mA @5V on USB dongle I tested. In real life it does
not matter much as USB IF powers off demod too, but now it is done
twice - demod and USB IF.

Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/rtl2832.c

index e5f7d79..e80c6b9 100644 (file)
@@ -410,13 +410,23 @@ static int rtl2832_sleep(struct dvb_frontend *fe)
 {
        struct rtl2832_dev *dev = fe->demodulator_priv;
        struct i2c_client *client = dev->client;
+       int ret;
 
        dev_dbg(&client->dev, "\n");
+
        dev->sleeping = true;
        /* stop statistics polling */
        cancel_delayed_work_sync(&dev->stat_work);
        dev->fe_status = 0;
+
+       ret = rtl2832_wr_demod_reg(dev, DVBT_SOFT_RST, 0x1);
+       if (ret)
+               goto err;
+
        return 0;
+err:
+       dev_dbg(&client->dev, "failed=%d\n", ret);
+       return ret;
 }
 
 static int rtl2832_get_tune_settings(struct dvb_frontend *fe,