Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a3c900bb authored by Colin Leroy's avatar Colin Leroy Committed by Greg Kroah-Hartman
Browse files

[PATCH] USB: PM support for zd1201



This patch enables power management (suspend, resume) support for zd1201.
It fixes problems after wakeup for me, but these problems did not appear
everytime without this patch.  it's a bit empirical, based on what the
usbnet does, so maybe not correct...  Maybe someone can give it a look
before it's applied.

Signed-off-by: default avatarColin Leroy <colin@colino.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 507ca9bc
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ struct zd1201 {
	char			essid[IW_ESSID_MAX_SIZE+1];
	int			essidlen;
	int			mac_enabled;
	int			was_enabled;
	int			monitor;
	int			encode_enabled;
	int			encode_restricted;