[<prev] [next>] [day] [month] [year] [list]
Message-Id: <200910191540.52639.oliver@neukum.org>
Date: Mon, 19 Oct 2009 15:40:52 +0200
From: Oliver Neukum <oliver@...kum.org>
To: pavel@....cz, David Brownell <dbrownell@...rs.sourceforge.net>,
linux-usb@...r.kernel.org, netdev@...r.kernel.org
Subject: power management for zaurus
Hi,
could somebody with a zaurus test this patch?
It introduces aggressive usb autosuspend for the devices.
It depends on the attached basic support for usbnet.
Regards
Oliver
--
commit ce0be29fc149b0e178a47a9a2380ef2be52ea7c6
Author: Oliver Neukum <oliver@...kum.org>
Date: Mon Oct 19 13:55:56 2009 +0200
zaurus & rndis_host autosuspend
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c
index 0caa800..4630703 100644
--- a/drivers/net/usb/rndis_host.c
+++ b/drivers/net/usb/rndis_host.c
@@ -571,12 +571,19 @@ fill:
}
EXPORT_SYMBOL_GPL(rndis_tx_fixup);
+static int rndis_manage_power(struct usbnet *dev, int on)
+{
+ dev->intf->needs_remote_wakeup = on;
+ return 0;
+}
+
static const struct driver_info rndis_info = {
.description = "RNDIS device",
.flags = FLAG_ETHER | FLAG_FRAMING_RN | FLAG_NO_SETINT,
.bind = rndis_bind,
.unbind = rndis_unbind,
+ .manage_power = rndis_manage_power,
.status = rndis_status,
.rx_fixup = rndis_rx_fixup,
.tx_fixup = rndis_tx_fixup,
@@ -609,6 +616,7 @@ static struct usb_driver rndis_driver = {
.disconnect = usbnet_disconnect,
.suspend = usbnet_suspend,
.resume = usbnet_resume,
+ .supports_autosuspend = 1,
};
static int __init rndis_init(void)
diff --git a/drivers/net/usb/zaurus.c b/drivers/net/usb/zaurus.c
index 04882c8..015c49d 100644
--- a/drivers/net/usb/zaurus.c
+++ b/drivers/net/usb/zaurus.c
@@ -94,6 +94,12 @@ static int zaurus_bind(struct usbnet *dev, struct usb_interface *intf)
return usbnet_generic_cdc_bind(dev, intf);
}
+static int zaurus_manage_power(struct usbnet *dev, int on)
+{
+ dev->intf->needs_remote_wakeup = on;
+ return 0;
+}
+
/* PDA style devices are always connected if present */
static int always_connected (struct usbnet *dev)
{
@@ -106,6 +112,7 @@ static const struct driver_info zaurus_sl5x00_info = {
.check_connect = always_connected,
.bind = zaurus_bind,
.unbind = usbnet_cdc_unbind,
+ .manage_power = zaurus_manage_power,
.tx_fixup = zaurus_tx_fixup,
};
#define ZAURUS_STRONGARM_INFO ((unsigned long)&zaurus_sl5x00_info)
@@ -116,6 +123,7 @@ static const struct driver_info zaurus_pxa_info = {
.check_connect = always_connected,
.bind = zaurus_bind,
.unbind = usbnet_cdc_unbind,
+ .manage_power = zaurus_manage_power,
.tx_fixup = zaurus_tx_fixup,
};
#define ZAURUS_PXA_INFO ((unsigned long)&zaurus_pxa_info)
@@ -126,6 +134,7 @@ static const struct driver_info olympus_mxl_info = {
.check_connect = always_connected,
.bind = zaurus_bind,
.unbind = usbnet_cdc_unbind,
+ .manage_power = zaurus_manage_power,
.tx_fixup = zaurus_tx_fixup,
};
#define OLYMPUS_MXL_INFO ((unsigned long)&olympus_mxl_info)
@@ -262,6 +271,7 @@ static const struct driver_info bogus_mdlm_info = {
.check_connect = always_connected,
.tx_fixup = zaurus_tx_fixup,
.bind = blan_mdlm_bind,
+ .manage_power = zaurus_manage_power
};
static const struct usb_device_id products [] = {
@@ -370,6 +380,7 @@ static struct usb_driver zaurus_driver = {
.disconnect = usbnet_disconnect,
.suspend = usbnet_suspend,
.resume = usbnet_resume,
+ .supports_autosuspend = 1,
};
static int __init zaurus_init(void)
View attachment "usbnet_tested_auto.diff" of type "text/x-patch" (9624 bytes)
Powered by blists - more mailing lists