Skip to content

Commit

Permalink
[PATCH] USB: PM support for zd1201
Browse files Browse the repository at this point in the history
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: Colin Leroy <colin@colino.net>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Colin Leroy authored and Greg Kroah-Hartman committed Jun 27, 2005
1 parent 507ca9b commit a3c900b
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 0 deletions.
38 changes: 38 additions & 0 deletions drivers/usb/net/zd1201.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
1 change: 1 addition & 0 deletions drivers/usb/net/zd1201.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit a3c900b

Please sign in to comment.