Commit 2f56c34b authored by Uri Shkolnik's avatar Uri Shkolnik Committed by Mauro Carvalho Chehab

V4L/DVB (9740): sms1xxx: add USB suspend and hibernation support

This patch provides USB suspend and hibernation support
for Siano's SMS chipset based USB device
Signed-off-by: default avatarUri Shkolnik <uris@siano-ms.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 7b29e10d
...@@ -432,11 +432,56 @@ static void smsusb_disconnect(struct usb_interface *intf) ...@@ -432,11 +432,56 @@ static void smsusb_disconnect(struct usb_interface *intf)
smsusb_term_device(intf); smsusb_term_device(intf);
} }
static int smsusb_suspend(struct usb_interface *intf, pm_message_t msg)
{
struct smsusb_device_t *dev =
(struct smsusb_device_t *)usb_get_intfdata(intf);
printk(KERN_INFO "%s Entering status %d.\n", __func__, msg.event);
smsusb_stop_streaming(dev);
return 0;
}
static int smsusb_resume(struct usb_interface *intf)
{
int rc, i;
struct smsusb_device_t *dev =
(struct smsusb_device_t *)usb_get_intfdata(intf);
struct usb_device *udev = interface_to_usbdev(intf);
printk(KERN_INFO "%s Entering.\n", __func__);
usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x81));
usb_clear_halt(udev, usb_rcvbulkpipe(udev, 0x02));
for (i = 0; i < intf->cur_altsetting->desc.bNumEndpoints; i++)
printk(KERN_INFO "endpoint %d %02x %02x %d\n", i,
intf->cur_altsetting->endpoint[i].desc.bEndpointAddress,
intf->cur_altsetting->endpoint[i].desc.bmAttributes,
intf->cur_altsetting->endpoint[i].desc.wMaxPacketSize);
if (intf->num_altsetting > 0) {
rc = usb_set_interface(udev,
intf->cur_altsetting->desc.
bInterfaceNumber, 0);
if (rc < 0) {
printk(KERN_INFO
"%s usb_set_interface failed, rc %d\n",
__func__, rc);
return rc;
}
}
smsusb_start_streaming(dev);
return 0;
}
static struct usb_driver smsusb_driver = { static struct usb_driver smsusb_driver = {
.name = "sms1xxx", .name = "sms1xxx",
.probe = smsusb_probe, .probe = smsusb_probe,
.disconnect = smsusb_disconnect, .disconnect = smsusb_disconnect,
.id_table = smsusb_id_table, .id_table = smsusb_id_table,
.suspend = smsusb_suspend,
.resume = smsusb_resume,
}; };
int smsusb_register(void) int smsusb_register(void)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment