|
@@ -1884,12 +1884,50 @@ static void zd1201_disconnect(struct usb_interface *interface)
|
|
|
kfree(zd);
|
|
|
}
|
|
|
|
|
|
+#ifdef CONFIG_PM
|
|
|
+
|
|
|
+static int zd1201_suspend(struct usb_interface *interface,
|
|
|
+ pm_message_t message)
|
|
|
+{
|
|
|
+ struct zd1201 *zd = usb_get_intfdata(interface);
|
|
|
+
|
|
|
+ netif_device_detach(zd->dev);
|
|
|
+
|
|
|
+ zd->was_enabled = zd->mac_enabled;
|
|
|
+
|
|
|
+ if (zd->was_enabled)
|
|
|
+ return zd1201_disable(zd);
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int zd1201_resume(struct usb_interface *interface)
|
|
|
+{
|
|
|
+ struct zd1201 *zd = usb_get_intfdata(interface);
|
|
|
+
|
|
|
+ netif_device_attach(zd->dev);
|
|
|
+
|
|
|
+ if (zd->was_enabled)
|
|
|
+ return zd1201_enable(zd);
|
|
|
+ else
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#else
|
|
|
+
|
|
|
+#define zd1201_suspend NULL
|
|
|
+#define zd1201_resume NULL
|
|
|
+
|
|
|
+#endif
|
|
|
+
|
|
|
static struct usb_driver zd1201_usb = {
|
|
|
.owner = THIS_MODULE,
|
|
|
.name = "zd1201",
|
|
|
.probe = zd1201_probe,
|
|
|
.disconnect = zd1201_disconnect,
|
|
|
.id_table = zd1201_table,
|
|
|
+ .suspend = zd1201_suspend,
|
|
|
+ .resume = zd1201_resume,
|
|
|
};
|
|
|
|
|
|
static int __init zd1201_init(void)
|