|
@@ -26,8 +26,6 @@
|
|
|
|
|
|
#include "gdm_mux.h"
|
|
#include "gdm_mux.h"
|
|
|
|
|
|
-static struct workqueue_struct *mux_rx_wq;
|
|
|
|
-
|
|
|
|
static u16 packet_type[TTY_MAX_COUNT] = {0xF011, 0xF010};
|
|
static u16 packet_type[TTY_MAX_COUNT] = {0xF011, 0xF010};
|
|
|
|
|
|
#define USB_DEVICE_CDC_DATA(vid, pid) \
|
|
#define USB_DEVICE_CDC_DATA(vid, pid) \
|
|
@@ -275,7 +273,7 @@ static void gdm_mux_rcv_complete(struct urb *urb)
|
|
r->len = r->urb->actual_length;
|
|
r->len = r->urb->actual_length;
|
|
spin_lock_irqsave(&rx->to_host_lock, flags);
|
|
spin_lock_irqsave(&rx->to_host_lock, flags);
|
|
list_add_tail(&r->to_host_list, &rx->to_host_list);
|
|
list_add_tail(&r->to_host_list, &rx->to_host_list);
|
|
- queue_work(mux_rx_wq, &mux_dev->work_rx.work);
|
|
|
|
|
|
+ schedule_work(&mux_dev->work_rx.work);
|
|
spin_unlock_irqrestore(&rx->to_host_lock, flags);
|
|
spin_unlock_irqrestore(&rx->to_host_lock, flags);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -602,6 +600,8 @@ static int gdm_mux_suspend(struct usb_interface *intf, pm_message_t pm_msg)
|
|
mux_dev = tty_dev->priv_dev;
|
|
mux_dev = tty_dev->priv_dev;
|
|
rx = &mux_dev->rx;
|
|
rx = &mux_dev->rx;
|
|
|
|
|
|
|
|
+ cancel_work_sync(&mux_dev->work_rx.work);
|
|
|
|
+
|
|
if (mux_dev->usb_state != PM_NORMAL) {
|
|
if (mux_dev->usb_state != PM_NORMAL) {
|
|
dev_err(intf->usb_dev, "usb suspend - invalid state\n");
|
|
dev_err(intf->usb_dev, "usb suspend - invalid state\n");
|
|
return -1;
|
|
return -1;
|
|
@@ -656,13 +656,6 @@ static struct usb_driver gdm_mux_driver = {
|
|
|
|
|
|
static int __init gdm_usb_mux_init(void)
|
|
static int __init gdm_usb_mux_init(void)
|
|
{
|
|
{
|
|
-
|
|
|
|
- mux_rx_wq = create_workqueue("mux_rx_wq");
|
|
|
|
- if (!mux_rx_wq) {
|
|
|
|
- pr_err("work queue create fail\n");
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
register_lte_tty_driver();
|
|
register_lte_tty_driver();
|
|
|
|
|
|
return usb_register(&gdm_mux_driver);
|
|
return usb_register(&gdm_mux_driver);
|
|
@@ -672,11 +665,6 @@ static void __exit gdm_usb_mux_exit(void)
|
|
{
|
|
{
|
|
unregister_lte_tty_driver();
|
|
unregister_lte_tty_driver();
|
|
|
|
|
|
- if (mux_rx_wq) {
|
|
|
|
- flush_workqueue(mux_rx_wq);
|
|
|
|
- destroy_workqueue(mux_rx_wq);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
usb_deregister(&gdm_mux_driver);
|
|
usb_deregister(&gdm_mux_driver);
|
|
}
|
|
}
|
|
|
|
|