aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-01-21 07:38:05 -0800
committerGerrit Code Review <gerrit@review.cyanogenmod.com>2013-01-21 07:38:05 -0800
commitd4ece4be472c73dcc59b9ca0d4f3f0023e36e047 (patch)
tree35810d111f7bfa5d1e721be00739dc6b9ba27111 /drivers/net
parentfa4e880a9894605db70ef2ee88902d139eb48989 (diff)
parent76fcb2e9deea2bb578db7fc897f68312a0dea9a0 (diff)
downloadkernel_samsung_smdk4412-d4ece4be472c73dcc59b9ca0d4f3f0023e36e047.zip
kernel_samsung_smdk4412-d4ece4be472c73dcc59b9ca0d4f3f0023e36e047.tar.gz
kernel_samsung_smdk4412-d4ece4be472c73dcc59b9ca0d4f3f0023e36e047.tar.bz2
Merge "mdm: Update mdm" into cm-10.1
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/usb/rmnet_usb_ctrl.c27
-rw-r--r--drivers/net/usb/rmnet_usb_data.c5
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;
}