[media] radio-keene: support suspend/resume
authorHans Verkuil <hans.verkuil@cisco.com>
Wed, 18 Apr 2012 09:47:02 +0000 (06:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 7 May 2012 18:23:17 +0000 (15:23 -0300)
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/radio/radio-keene.c

index 5f33047d0d43d5096df76b6b2f914c616afbb851..62d32c4946f71b7939ebb7e01ed2c31f038948f9 100644 (file)
@@ -156,6 +156,23 @@ static void usb_keene_disconnect(struct usb_interface *intf)
        v4l2_device_put(&radio->v4l2_dev);
 }
 
+static int usb_keene_suspend(struct usb_interface *intf, pm_message_t message)
+{
+       struct keene_device *radio = to_keene_dev(usb_get_intfdata(intf));
+
+       return keene_cmd_main(radio, 0, false);
+}
+
+static int usb_keene_resume(struct usb_interface *intf)
+{
+       struct keene_device *radio = to_keene_dev(usb_get_intfdata(intf));
+
+       mdelay(50);
+       keene_cmd_set(radio);
+       keene_cmd_main(radio, radio->curfreq, true);
+       return 0;
+}
+
 static int vidioc_querycap(struct file *file, void *priv,
                                        struct v4l2_capability *v)
 {
@@ -402,6 +419,9 @@ static struct usb_driver usb_keene_driver = {
        .probe                  = usb_keene_probe,
        .disconnect             = usb_keene_disconnect,
        .id_table               = usb_keene_device_table,
+       .suspend                = usb_keene_suspend,
+       .resume                 = usb_keene_resume,
+       .reset_resume           = usb_keene_resume,
 };
 
 static int __init keene_init(void)