From: James Wylder Date: Tue, 5 Apr 2011 18:00:29 +0000 (-0500) Subject: net: usb: cdc_ether: use oob_wake for wrigley modem on tegra X-Git-Tag: firefly_0821_release~9834^2~24 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bbfcda71e628c110481a62e1633b770ecfe4807e;p=firefly-linux-kernel-4.4.55.git net: usb: cdc_ether: use oob_wake for wrigley modem on tegra Change-Id: Ic00782db2ff8a1a791d3324db16dc21a8016e2ca Signed-off-by: James Wylder --- diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index b3fe0de40469..c29546ddee47 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c @@ -31,6 +31,7 @@ #include #include #include +#include #if defined(CONFIG_USB_NET_RNDIS_HOST) || defined(CONFIG_USB_NET_RNDIS_HOST_MODULE) @@ -469,6 +470,35 @@ static const struct driver_info mbm_info = { .manage_power = cdc_manage_power, }; +#ifdef CONFIG_USB_OOBWAKE +/* out of band wake devices */ +static void oob_wake_cdc_unbind(struct usbnet *dev, struct usb_interface *intf) +{ + pr_info("%s: unregister interface for out of band wakeups\n", __func__); + oob_wake_unregister(intf); + usbnet_cdc_unbind(dev, intf); +} + +static int oob_wake_cdc_bind(struct usbnet *dev, struct usb_interface *intf) +{ + int status; + + pr_info("%s: register interface for out of band wakeups\n", __func__); + status = cdc_bind(dev, intf); + oob_wake_register(intf); + return status; +} + +static const struct driver_info oob_wake_cdc_info = { + .description = "CDC Wakeable Ethernet Device", + .flags = FLAG_ETHER, + .bind = oob_wake_cdc_bind, + .unbind = oob_wake_cdc_unbind, + .status = cdc_status, + .manage_power = cdc_manage_power, +}; +#endif /* CONFIG_USB_OOBWAKE */ + /*-------------------------------------------------------------------------*/ @@ -573,6 +603,14 @@ static const struct usb_device_id products [] = { * NOTE: this match must come AFTER entries blacklisting devices * because of bugs/quirks in a given product (like Zaurus, above). */ +#ifdef CONFIG_USB_OOBWAKE +{ + /* Motorola Wrigley LTE Modem */ + USB_DEVICE_AND_INTERFACE_INFO(0x22b8, 0x4267, USB_CLASS_COMM, + USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), + .driver_info = (unsigned long) &oob_wake_cdc_info, +}, +#endif /* CONFIG_USB_OOBWAKE */ { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),