From: Greg Kroah-Hartman Date: Tue, 31 Jan 2012 00:54:24 +0000 (-0800) Subject: 3.2-stable patches X-Git-Tag: v3.0.19~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=71f7fad57340ec61f82f933d2394a718a54b577a;p=thirdparty%2Fkernel%2Fstable-queue.git 3.2-stable patches added patches: qcaux-add-more-pantech-uml190-and-uml290-ports.patch usb-dwc3-ep0-tidy-up-pending-request-handling.patch usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch --- diff --git a/queue-3.2/qcaux-add-more-pantech-uml190-and-uml290-ports.patch b/queue-3.2/qcaux-add-more-pantech-uml190-and-uml290-ports.patch new file mode 100644 index 00000000000..2658985fb10 --- /dev/null +++ b/queue-3.2/qcaux-add-more-pantech-uml190-and-uml290-ports.patch @@ -0,0 +1,41 @@ +From 074cc73506f529f39fef32ad1c9e1d4cdd8acf6c Mon Sep 17 00:00:00 2001 +From: Dan Williams +Date: Tue, 24 Jan 2012 17:16:54 -0600 +Subject: qcaux: add more Pantech UML190 and UML290 ports + +From: Dan Williams + +commit 074cc73506f529f39fef32ad1c9e1d4cdd8acf6c upstream. + +More ports we now know how to talk to. + +Signed-off-by: Dan Williams +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/qcaux.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/drivers/usb/serial/qcaux.c ++++ b/drivers/usb/serial/qcaux.c +@@ -36,6 +36,7 @@ + #define UTSTARCOM_PRODUCT_UM175_V1 0x3712 + #define UTSTARCOM_PRODUCT_UM175_V2 0x3714 + #define UTSTARCOM_PRODUCT_UM175_ALLTEL 0x3715 ++#define PANTECH_PRODUCT_UML190_VZW 0x3716 + #define PANTECH_PRODUCT_UML290_VZW 0x3718 + + /* CMOTECH devices */ +@@ -67,7 +68,11 @@ static struct usb_device_id id_table[] = + { USB_DEVICE_AND_INTERFACE_INFO(LG_VENDOR_ID, LG_PRODUCT_VX4400_6000, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SANYO_VENDOR_ID, SANYO_PRODUCT_KATANA_LX, 0xff, 0xff, 0x00) }, + { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_U520, 0xff, 0x00, 0x00) }, +- { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xff, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML190_VZW, 0xff, 0xfe, 0xff) }, ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfd, 0xff) }, /* NMEA */ ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xfe, 0xff) }, /* WMC */ ++ { USB_DEVICE_AND_INTERFACE_INFO(UTSTARCOM_VENDOR_ID, PANTECH_PRODUCT_UML290_VZW, 0xff, 0xff, 0xff) }, /* DIAG */ + { }, + }; + MODULE_DEVICE_TABLE(usb, id_table); diff --git a/queue-3.2/series b/queue-3.2/series index deb0bd2b127..4f890cb1d64 100644 --- a/queue-3.2/series +++ b/queue-3.2/series @@ -44,3 +44,6 @@ usb-serial-ftdi-additional-ids.patch usb-ftdi_sio-add-more-identifiers.patch usb-cdc-wdm-updating-desc-length-must-be-protected-by-spin_lock.patch usb-cdc-wdm-use-two-mutexes-to-allow-simultaneous-read-and-write.patch +qcaux-add-more-pantech-uml190-and-uml290-ports.patch +usb-dwc3-ep0-tidy-up-pending-request-handling.patch +usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch diff --git a/queue-3.2/usb-dwc3-ep0-tidy-up-pending-request-handling.patch b/queue-3.2/usb-dwc3-ep0-tidy-up-pending-request-handling.patch new file mode 100644 index 00000000000..8cd9c58ffe7 --- /dev/null +++ b/queue-3.2/usb-dwc3-ep0-tidy-up-pending-request-handling.patch @@ -0,0 +1,52 @@ +From 68d8a781575d7be490f97eb2c403fb13b083da6a Mon Sep 17 00:00:00 2001 +From: Felipe Balbi +Date: Thu, 29 Dec 2011 06:32:29 +0200 +Subject: usb: dwc3: ep0: tidy up Pending Request handling + +From: Felipe Balbi + +commit 68d8a781575d7be490f97eb2c403fb13b083da6a upstream. + +The way our code was written, we should never have +a DWC3_EP_PENDING_REQUEST flag set out of a Data Phase +and the code in __dwc3_gadget_ep0_queue() did not +reflect that situation properly. + +Tidy up that case to avoid any possible mistakes +when starting requests for IRQs which are long +gone. + +Signed-off-by: Felipe Balbi +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/dwc3/ep0.c | 14 ++++---------- + 1 file changed, 4 insertions(+), 10 deletions(-) + +--- a/drivers/usb/dwc3/ep0.c ++++ b/drivers/usb/dwc3/ep0.c +@@ -149,20 +149,14 @@ static int __dwc3_gadget_ep0_queue(struc + + direction = !!(dep->flags & DWC3_EP0_DIR_IN); + +- if (dwc->ep0state == EP0_STATUS_PHASE) { +- type = dwc->three_stage_setup +- ? DWC3_TRBCTL_CONTROL_STATUS3 +- : DWC3_TRBCTL_CONTROL_STATUS2; +- } else if (dwc->ep0state == EP0_DATA_PHASE) { +- type = DWC3_TRBCTL_CONTROL_DATA; +- } else { +- /* should never happen */ +- WARN_ON(1); ++ if (dwc->ep0state != EP0_DATA_PHASE) { ++ dev_WARN(dwc->dev, "Unexpected pending request\n"); + return 0; + } + + ret = dwc3_ep0_start_trans(dwc, direction, +- req->request.dma, req->request.length, type); ++ req->request.dma, req->request.length, ++ DWC3_TRBCTL_CONTROL_DATA); + dep->flags &= ~(DWC3_EP_PENDING_REQUEST | + DWC3_EP0_DIR_IN); + } diff --git a/queue-3.2/usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch b/queue-3.2/usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch new file mode 100644 index 00000000000..2ff56dfc625 --- /dev/null +++ b/queue-3.2/usb-io_ti-make-edge_remove_sysfs_attrs-the-port_remove-method.patch @@ -0,0 +1,57 @@ +From 6d443d8499e4e59ffb949759cdded32730f8d2f6 Mon Sep 17 00:00:00 2001 +From: "Eric W. Biederman" +Date: Fri, 13 Jan 2012 21:32:06 -0800 +Subject: usb: io_ti: Make edge_remove_sysfs_attrs the port_remove method. + +From: "Eric W. Biederman" + +commit 6d443d8499e4e59ffb949759cdded32730f8d2f6 upstream. + +Calling edge_remove_sysfs_attrs from edge_disconnect is too late +as the device has already been removed from sysfs. + +Do the simple and obvious thing and make edge_remove_sysfs_attrs +the port_remove method. + +Signed-off-by: Eric W. Biederman +Reported-by: Wolfgang Frisch +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/usb/serial/io_ti.c | 10 ++-------- + 1 file changed, 2 insertions(+), 8 deletions(-) + +--- a/drivers/usb/serial/io_ti.c ++++ b/drivers/usb/serial/io_ti.c +@@ -2677,15 +2677,7 @@ cleanup: + + static void edge_disconnect(struct usb_serial *serial) + { +- int i; +- struct edgeport_port *edge_port; +- + dbg("%s", __func__); +- +- for (i = 0; i < serial->num_ports; ++i) { +- edge_port = usb_get_serial_port_data(serial->port[i]); +- edge_remove_sysfs_attrs(edge_port->port); +- } + } + + static void edge_release(struct usb_serial *serial) +@@ -2764,6 +2756,7 @@ static struct usb_serial_driver edgeport + .disconnect = edge_disconnect, + .release = edge_release, + .port_probe = edge_create_sysfs_attrs, ++ .port_remove = edge_remove_sysfs_attrs, + .ioctl = edge_ioctl, + .set_termios = edge_set_termios, + .tiocmget = edge_tiocmget, +@@ -2795,6 +2788,7 @@ static struct usb_serial_driver edgeport + .disconnect = edge_disconnect, + .release = edge_release, + .port_probe = edge_create_sysfs_attrs, ++ .port_remove = edge_remove_sysfs_attrs, + .ioctl = edge_ioctl, + .set_termios = edge_set_termios, + .tiocmget = edge_tiocmget,