[media] tuner-core: do the right thing for suspend/resume
authorMauro Carvalho Chehab <mchehab@redhat.com>
Fri, 4 Feb 2011 14:15:21 +0000 (11:15 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 21 Mar 2011 23:32:01 +0000 (20:32 -0300)
Power down tuners at suspend. At resume, if the tuner is in standby,
calls set_mode, that will turn it on and set the latest frequencies.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/tuner-core.c

index e6855a4..e6b63e9 100644 (file)
@@ -1121,9 +1121,13 @@ static int tuner_log_status(struct v4l2_subdev *sd)
 static int tuner_suspend(struct i2c_client *c, pm_message_t state)
 {
        struct tuner *t = to_tuner(i2c_get_clientdata(c));
+       struct analog_demod_ops *analog_ops = &t->fe.ops.analog_ops;
 
        tuner_dbg("suspend\n");
-       /* FIXME: power down ??? */
+
+       if (!t->standby && analog_ops->standby)
+               analog_ops->standby(&t->fe);
+
        return 0;
 }
 
@@ -1132,10 +1136,10 @@ static int tuner_resume(struct i2c_client *c)
        struct tuner *t = to_tuner(i2c_get_clientdata(c));
 
        tuner_dbg("resume\n");
-       if (V4L2_TUNER_RADIO == t->mode)
-               set_freq(c, t->radio_freq);
-       else
-               set_freq(c, t->tv_freq);
+
+       if (!t->standby)
+               set_mode_freq(c, t, t->type, 0);
+
        return 0;
 }