diff options
author | Curtis Menard <curtis.menard@gmail.com> | 2013-01-20 15:28:07 -0500 |
---|---|---|
committer | codeworkx <codeworkx@cyanogenmod.org> | 2013-01-21 16:16:57 +0000 |
commit | 76fcb2e9deea2bb578db7fc897f68312a0dea9a0 (patch) | |
tree | 744e3a1ae3f474a3f840f8a81fb395e227e549e0 /drivers/net/usb | |
parent | 10b2523bd76efada8f212f55b5b36889091b991a (diff) | |
download | kernel_samsung_smdk4412-76fcb2e9deea2bb578db7fc897f68312a0dea9a0.zip kernel_samsung_smdk4412-76fcb2e9deea2bb578db7fc897f68312a0dea9a0.tar.gz kernel_samsung_smdk4412-76fcb2e9deea2bb578db7fc897f68312a0dea9a0.tar.bz2 |
mdm: Update mdm
This update produces less wakelocs for mdm_hsic. It also allows building without
CONFIG_USB_ANDROID_SAMSUNG_COMPOSITE. USB tethering works well this way on t0lte.
Patch Set 1: Fixed typo in defconfig that was breaking the build
Signed-off-by: Curtis Menard <curtis.menard@gmail.com>
Change-Id: Id602ea291093a8cebbcd5ab7f7687364fab0d029
Diffstat (limited to 'drivers/net/usb')
-rw-r--r-- | drivers/net/usb/rmnet_usb_ctrl.c | 27 | ||||
-rw-r--r-- | drivers/net/usb/rmnet_usb_data.c | 5 |
2 files changed, 30 insertions, 2 deletions
diff --git a/drivers/net/usb/rmnet_usb_ctrl.c b/drivers/net/usb/rmnet_usb_ctrl.c index 83638a7..9fd6c74 100644 --- a/drivers/net/usb/rmnet_usb_ctrl.c +++ b/drivers/net/usb/rmnet_usb_ctrl.c @@ -424,6 +424,23 @@ static void ctrl_write_callback(struct urb *urb) usb_autopm_put_interface_async(dev->intf); } +static int usb_anchor_len(struct usb_anchor *anchor) +{ + unsigned long flags; + struct urb *urb; + int len = 0; + + spin_lock_irqsave(&anchor->lock, flags); + list_for_each_entry(urb, &anchor->urb_list, anchor_list) { + len++; + } + spin_unlock_irqrestore(&anchor->lock, flags); + + pr_debug("%s:%d", __func__, len); + + return len; +} + static int rmnet_usb_ctrl_write(struct rmnet_ctrl_dev *dev, char *buf, size_t size) { @@ -889,6 +906,9 @@ int rmnet_usb_ctrl_probe(struct usb_interface *intf, dev->tx_ctrl_in_req_cnt = 0; dev->tx_block = false; + /* give margin before send DTR high */ + msleep(20); + pr_info("%s: send DTR high to Modem\n", __func__); ret = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), USB_CDC_REQ_SET_CONTROL_LINE_STATE, (USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE), @@ -941,9 +961,12 @@ int rmnet_usb_ctrl_probe(struct usb_interface *intf, ctl_msg_dbg_mask = MSM_USB_CTL_DUMP_BUFFER; - dev->reset_notifier_block.notifier_call = rmnet_ctrl_reset_notifier; - blocking_notifier_chain_register(&mdm_reset_notifier_list, + if (!ret) { + dev->reset_notifier_block.notifier_call = + rmnet_ctrl_reset_notifier; + blocking_notifier_chain_register(&mdm_reset_notifier_list, &dev->reset_notifier_block); + } return ret; } diff --git a/drivers/net/usb/rmnet_usb_data.c b/drivers/net/usb/rmnet_usb_data.c index 6333dd0..0b30618 100644 --- a/drivers/net/usb/rmnet_usb_data.c +++ b/drivers/net/usb/rmnet_usb_data.c @@ -575,6 +575,11 @@ static int rmnet_usb_probe(struct usb_interface *iface, /* allow modem to wake up suspended system */ device_set_wakeup_enable(&udev->dev, 1); out: +#ifdef CONFIG_MDM_HSIC_PM + /* make reset or dump at 2nd enumeration fail */ + if (status < 0) + mdm_force_fatal(); +#endif return status; } |