aboutsummaryrefslogtreecommitdiffstats
path: root/usb.current
diff options
Diffstat (limited to 'usb.current')
-rw-r--r--usb.current/arm-imx-fix-build-failure-concerning-otg-ulpi.patch86
-rw-r--r--usb.current/usb-add-device-ids-for-igotu-to-navman.patch43
-rw-r--r--usb.current/usb-adutux-fix-misuse-of-return-value-of-copy_to_user.patch33
-rw-r--r--usb.current/usb-cp210x-fix-break-on-off.patch33
-rw-r--r--usb.current/usb-ftdi_sio-add-id-for-ionics-plugcomputer.patch46
-rw-r--r--usb.current/usb-ftdi_sio-add-product-id-for-lenz-li-usb.patch46
-rw-r--r--usb.current/usb-ftdi_sio-fix-endianess-of-max-packet-size.patch34
-rw-r--r--usb.current/usb-gadget-fix-composite-kernel-doc-warnings.patch50
-rw-r--r--usb.current/usb-gadget-return-enomem-on-memory-allocation.patch51
-rw-r--r--usb.current/usb-io_ti-check-firmware-version-before-updating.patch36
-rw-r--r--usb.current/usb-iowarrior-fix-misuse-of-return-value-of-copy_to_user.patch41
-rw-r--r--usb.current/usb-isp1760-use-a-write-barrier-to-ensure-proper-ndelay-timing.patch49
-rw-r--r--usb.current/usb-option-add-celot-ct-650.patch43
-rw-r--r--usb.current/usb-otg-twl4030-fix-wrong-assumption-of-starting-state.patch52
-rw-r--r--usb.current/usb-pl2303-new-vendor-and-product-id.patch50
-rw-r--r--usb.current/usb-r8a66597-udc-return-enomem-if-kzalloc-fails.patch26
-rw-r--r--usb.current/usb-serial-export-symbol-usb_serial_generic_disconnect.patch27
-rw-r--r--usb.current/usb-serial-fix-leak-of-usb-serial-module-refrence-count.patch117
-rw-r--r--usb.current/usb-serial-io_ti.c-don-t-return-0-if-writing-the-download-record-failed.patch32
-rw-r--r--usb.current/usb-ssu100-add-disconnect-function-for-ssu100.patch37
-rw-r--r--usb.current/usb-ssu100-add-locking-for-port-private-data-in-ssu100.patch76
-rw-r--r--usb.current/usb-ssu100-add-register-parameter-to-ssu100_setregister.patch51
-rw-r--r--usb.current/usb-ssu100-refine-process_packet-in-ssu100.patch36
-rw-r--r--usb.current/usb-ssu100-remove-duplicate-defines-in-ssu100.patch194
-rw-r--r--usb.current/usb-ssu100-rework-logic-for-tiocmiwait.patch215
-rw-r--r--usb.current/usb-ssu100-set-tty_flags-in-ssu100_process_packet.patch91
-rw-r--r--usb.current/usb-uvc_v4l2-cleanup-test-for-end-of-loop.patch37
-rw-r--r--usb.current/usb-xhci-remove-buggy-assignment-in-next_trb.patch42
-rw-r--r--usb.current/usb-xhci-update-ring-dequeue-pointer-when-process-missed-tds.patch47
29 files changed, 0 insertions, 1721 deletions
diff --git a/usb.current/arm-imx-fix-build-failure-concerning-otg-ulpi.patch b/usb.current/arm-imx-fix-build-failure-concerning-otg-ulpi.patch
deleted file mode 100644
index 66853a5a9e8d6b..00000000000000
--- a/usb.current/arm-imx-fix-build-failure-concerning-otg-ulpi.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From ukl@pengutronix.de Mon Aug 23 09:54:58 2010
-From: =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@pengutronix.de>
-To: linux-kernel@vger.kernel.org,
- linux-arm-kernel@lists.infradead.org, linux-usb@vger.kernel.org
-Cc: Sergei Shtylyov <sshtylyov@mvista.com>,
- Igor Grinberg <grinberg@compulab.co.il>,
- Mike Rapoport <mike@compulab.co.il>,
- Greg Kroah-Hartman <gregkh@suse.de>
-Subject: ARM: imx: fix build failure concerning otg/ulpi
-Date: Fri, 13 Aug 2010 14:06:50 +0200
-Message-Id: <1281701210-27776-1-git-send-email-u.kleine-koenig@pengutronix.de>
-
-The build failure was introduced by
-
- 13dd0c9 (USB: otg/ulpi: extend the generic ulpi driver.)
-
-Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
-Acked-by: Igor Grinberg <grinberg@compulab.co.il>
-Cc: Mike Rapoport <mike@compulab.co.il>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- arch/arm/mach-imx/mach-cpuimx27.c | 4 ++--
- arch/arm/mach-imx/mach-pca100.c | 4 ++--
- arch/arm/mach-mx25/mach-cpuimx25.c | 2 +-
- arch/arm/mach-mx3/mach-cpuimx35.c | 2 +-
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
---- a/arch/arm/mach-imx/mach-cpuimx27.c
-+++ b/arch/arm/mach-imx/mach-cpuimx27.c
-@@ -279,13 +279,13 @@ static void __init eukrea_cpuimx27_init(
- #if defined(CONFIG_USB_ULPI)
- if (otg_mode_host) {
- otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_otg_host, &otg_pdata);
- }
-
- usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_usbh2, &usbh2_pdata);
- #endif
---- a/arch/arm/mach-imx/mach-pca100.c
-+++ b/arch/arm/mach-imx/mach-pca100.c
-@@ -419,13 +419,13 @@ static void __init pca100_init(void)
- #if defined(CONFIG_USB_ULPI)
- if (otg_mode_host) {
- otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_otg_host, &otg_pdata);
- }
-
- usbh2_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_usbh2, &usbh2_pdata);
- #endif
---- a/arch/arm/mach-mx25/mach-cpuimx25.c
-+++ b/arch/arm/mach-mx25/mach-cpuimx25.c
-@@ -138,7 +138,7 @@ static void __init eukrea_cpuimx25_init(
- #if defined(CONFIG_USB_ULPI)
- if (otg_mode_host) {
- otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_otg, &otg_pdata);
- }
---- a/arch/arm/mach-mx3/mach-cpuimx35.c
-+++ b/arch/arm/mach-mx3/mach-cpuimx35.c
-@@ -192,7 +192,7 @@ static void __init mxc_board_init(void)
- #if defined(CONFIG_USB_ULPI)
- if (otg_mode_host) {
- otg_pdata.otg = otg_ulpi_create(&mxc_ulpi_access_ops,
-- USB_OTG_DRV_VBUS | USB_OTG_DRV_VBUS_EXT);
-+ ULPI_OTG_DRVVBUS | ULPI_OTG_DRVVBUS_EXT);
-
- mxc_register_device(&mxc_otg_host, &otg_pdata);
- }
diff --git a/usb.current/usb-add-device-ids-for-igotu-to-navman.patch b/usb.current/usb-add-device-ids-for-igotu-to-navman.patch
deleted file mode 100644
index 81840fa98092de..00000000000000
--- a/usb.current/usb-add-device-ids-for-igotu-to-navman.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From ross@linux.intel.com Thu Aug 12 13:46:35 2010
-Subject: USB: add device IDs for igotu to navman
-From: Ross Burton <ross@linux.intel.com>
-To: linux-kernel@vger.kernel.org
-Cc: gregkh@suse.de
-Date: Fri, 06 Aug 2010 16:36:39 +0100
-Message-ID: <1281108999.3781.50.camel@flashheart.burtonini.com>
-
-
-I recently bought a i-gotU USB GPS, and whilst hunting around for linux
-support discovered this post by you back in 2009:
-
-http://kerneltrap.org/mailarchive/linux-usb/2009/3/12/5148644
-
->Try the navman driver instead. You can either add the device id to the
-> driver and rebuild it, or do this before you plug the device in:
-> modprobe navman
-> echo -n "0x0df7 0x0900" > /sys/bus/usb-serial/drivers/navman/new_id
->
-> and then plug your device in and see if that works.
-
-I can confirm that the navman driver works with the right device IDs on
-my i-gotU GT-600, which has the same device IDs. Attached is a patch
-adding the IDs.
-
-From: Ross Burton <ross@linux.intel.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/navman.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/usb/serial/navman.c
-+++ b/drivers/usb/serial/navman.c
-@@ -25,6 +25,7 @@ static int debug;
-
- static const struct usb_device_id id_table[] = {
- { USB_DEVICE(0x0a99, 0x0001) }, /* Talon Technology device */
-+ { USB_DEVICE(0x0df7, 0x0900) }, /* Mobile Action i-gotU */
- { },
- };
- MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/usb.current/usb-adutux-fix-misuse-of-return-value-of-copy_to_user.patch b/usb.current/usb-adutux-fix-misuse-of-return-value-of-copy_to_user.patch
deleted file mode 100644
index 2fdb280e396a53..00000000000000
--- a/usb.current/usb-adutux-fix-misuse-of-return-value-of-copy_to_user.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From segooon@gmail.com Thu Aug 19 10:41:24 2010
-From: Kulikov Vasiliy <segooon@gmail.com>
-To: kernel-janitors@vger.kernel.org
-Cc: Greg Kroah-Hartman <gregkh@suse.de>,
- Oliver Neukum <oliver@neukum.org>,
- Mauro Carvalho Chehab <mchehab@redhat.com>,
- Joe Perches <joe@perches.com>,
- =?UTF-8?q?N=C3=A9meth=20M=C3=A1rton?= <nm127@freemail.hu>,
- linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
-Subject: USB: adutux: fix misuse of return value of copy_to_user()
-Date: Sat, 31 Jul 2010 21:40:07 +0400
-Message-Id: <1280598008-8605-1-git-send-email-segooon@gmail.com>
-
-copy_to_user() returns number of not copied bytes, not error code.
-
-Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/misc/adutux.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/misc/adutux.c
-+++ b/drivers/usb/misc/adutux.c
-@@ -439,7 +439,7 @@ static ssize_t adu_read(struct file *fil
- /* drain secondary buffer */
- int amount = bytes_to_read < data_in_secondary ? bytes_to_read : data_in_secondary;
- i = copy_to_user(buffer, dev->read_buffer_secondary+dev->secondary_head, amount);
-- if (i < 0) {
-+ if (i) {
- retval = -EFAULT;
- goto exit;
- }
diff --git a/usb.current/usb-cp210x-fix-break-on-off.patch b/usb.current/usb-cp210x-fix-break-on-off.patch
deleted file mode 100644
index 2b0e5581ca28eb..00000000000000
--- a/usb.current/usb-cp210x-fix-break-on-off.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:20:48 2010
-To: greg@kroah.com
-Cc: linux-usb@vger.kernel.org
-Message-Id: <1282167311631939627@teratron>
-From: Craig Shelley <craig@microtron.org.uk>
-Date: Wed, 18 Aug 2010 22:13:39 +0100
-Subject: USB: CP210x Fix Break On/Off
-
-The definitions for BREAK_ON and BREAK_OFF are inverted, causing break
-requests to fail. This patch sets BREAK_ON and BREAK_OFF to the correct
-values.
-
-Signed-off-by: Craig Shelley <craig@microtron.org.uk>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/cp210x.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/serial/cp210x.c
-+++ b/drivers/usb/serial/cp210x.c
-@@ -222,8 +222,8 @@ static struct usb_serial_driver cp210x_d
- #define BITS_STOP_2 0x0002
-
- /* CP210X_SET_BREAK */
--#define BREAK_ON 0x0000
--#define BREAK_OFF 0x0001
-+#define BREAK_ON 0x0001
-+#define BREAK_OFF 0x0000
-
- /* CP210X_(SET_MHS|GET_MDMSTS) */
- #define CONTROL_DTR 0x0001
diff --git a/usb.current/usb-ftdi_sio-add-id-for-ionics-plugcomputer.patch b/usb.current/usb-ftdi_sio-add-id-for-ionics-plugcomputer.patch
deleted file mode 100644
index 1899e99ea082ad..00000000000000
--- a/usb.current/usb-ftdi_sio-add-id-for-ionics-plugcomputer.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From tbm@cyrius.com Thu Aug 19 10:37:49 2010
-Date: Tue, 10 Aug 2010 20:31:21 +0100
-From: Martin Michlmayr <tbm@cyrius.com>
-To: Greg Kroah-Hartman <greg@kroah.com>
-Cc: linux-usb@vger.kernel.org
-Subject: USB: ftdi_sio: Add ID for Ionics PlugComputer
-Message-ID: <20100810193120.GA2950@jirafa.cyrius.com>
-Content-Disposition: inline
-
-Add the ID for the Ionics PlugComputer (<http://ionicsplug.com/>).
-
-Signed-off-by: Martin Michlmayr <tbm@cyrius.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ftdi_sio.c | 2 ++
- drivers/usb/serial/ftdi_sio_ids.h | 6 ++++++
- 2 files changed, 8 insertions(+)
-
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -750,6 +750,8 @@ static struct usb_device_id id_table_com
- { USB_DEVICE(FTDI_VID, XVERVE_SIGNALYZER_SH4_PID),
- .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { USB_DEVICE(FTDI_VID, SEGWAY_RMP200_PID) },
-+ { USB_DEVICE(IONICS_VID, IONICS_PLUGCOMPUTER_PID),
-+ .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk },
- { }, /* Optional parameter entry */
- { } /* Terminating entry */
- };
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -989,6 +989,12 @@
- #define ALTI2_N3_PID 0x6001 /* Neptune 3 */
-
- /*
-+ * Ionics PlugComputer
-+ */
-+#define IONICS_VID 0x1c0c
-+#define IONICS_PLUGCOMPUTER_PID 0x0102
-+
-+/*
- * Dresden Elektronik Sensor Terminal Board
- */
- #define DE_VID 0x1cf1 /* Vendor ID */
diff --git a/usb.current/usb-ftdi_sio-add-product-id-for-lenz-li-usb.patch b/usb.current/usb-ftdi_sio-add-product-id-for-lenz-li-usb.patch
deleted file mode 100644
index f9cc5552b465b1..00000000000000
--- a/usb.current/usb-ftdi_sio-add-product-id-for-lenz-li-usb.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 11:58:57 2010
-To: linux-usb@vger.kernel.org
-From: galens@seitzassoc.com
-Subject: USB: ftdi_sio: add product ID for Lenz LI-USB
-Message-Id: <20100819181520.ABE99101B5@toto.seitzassoc.com>
-Date: Thu, 19 Aug 2010 11:15:20 -0700 (PDT)
-
-From: Galen Seitz <galens@seitzassoc.com>
-
-Add ftdi product ID for Lenz LI-USB, a model train interface. This
-was NOT tested against 2.6.35, but a similar patch was tested with the
-CentOS 2.6.18-194.11.1.el5 kernel. It wasn't clear to me what
-ordering is being used in ftdi_sio.c, so I inserted the ID after another
-model train entry(SPROG_II).
-
-Signed-off-by: Galen Seitz <galens@seitzassoc.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ftdi_sio.c | 1 +
- drivers/usb/serial/ftdi_sio_ids.h | 3 +++
- 2 files changed, 4 insertions(+)
-
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -180,6 +180,7 @@ static struct usb_device_id id_table_com
- { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_IOBOARD_PID) },
- { USB_DEVICE(INTERBIOMETRICS_VID, INTERBIOMETRICS_MINI_IOBOARD_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_SPROG_II) },
-+ { USB_DEVICE(FTDI_VID, FTDI_LENZ_LIUSB_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_XF_632_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_XF_634_PID) },
- { USB_DEVICE(FTDI_VID, FTDI_XF_547_PID) },
---- a/drivers/usb/serial/ftdi_sio_ids.h
-+++ b/drivers/usb/serial/ftdi_sio_ids.h
-@@ -110,6 +110,9 @@
- /* Propox devices */
- #define FTDI_PROPOX_JTAGCABLEII_PID 0xD738
-
-+/* Lenz LI-USB Computer Interface. */
-+#define FTDI_LENZ_LIUSB_PID 0xD780
-+
- /*
- * Xsens Technologies BV products (http://www.xsens.com).
- */
diff --git a/usb.current/usb-ftdi_sio-fix-endianess-of-max-packet-size.patch b/usb.current/usb-ftdi_sio-fix-endianess-of-max-packet-size.patch
deleted file mode 100644
index e79eeff6fe0533..00000000000000
--- a/usb.current/usb-ftdi_sio-fix-endianess-of-max-packet-size.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:22:04 2010
-Message-ID: <281434.37339.qm@web65616.mail.ac4.yahoo.com>
-Date: Wed, 18 Aug 2010 07:14:37 -0700 (PDT)
-From: Michael Wileczka <mikewileczka@yahoo.com>
-Subject: USB: ftdi_sio: fix endianess of max packet size
-To: linux-usb@vger.kernel.org
-Cc: linux-kernel@vger.kernel.org
-
-From: Michael Wileczka <mikewileczka@yahoo.com>
-
-The USB max packet size (always little-endian) was not being byte
-swapped on big-endian systems.
-
-Applicable since [USB: ftdi_sio: fix hi-speed device packet size calculation] approx 2.6.31
-
-Signed-off-by: Michael Wileczka <mikewileczka@yahoo.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ftdi_sio.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/serial/ftdi_sio.c
-+++ b/drivers/usb/serial/ftdi_sio.c
-@@ -1376,7 +1376,7 @@ static void ftdi_set_max_packet_size(str
- }
-
- /* set max packet size based on descriptor */
-- priv->max_packet_size = ep_desc->wMaxPacketSize;
-+ priv->max_packet_size = le16_to_cpu(ep_desc->wMaxPacketSize);
-
- dev_info(&udev->dev, "Setting MaxPacketSize %d\n", priv->max_packet_size);
- }
diff --git a/usb.current/usb-gadget-fix-composite-kernel-doc-warnings.patch b/usb.current/usb-gadget-fix-composite-kernel-doc-warnings.patch
deleted file mode 100644
index 4dfc3b2e7db7fc..00000000000000
--- a/usb.current/usb-gadget-fix-composite-kernel-doc-warnings.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:35:17 2010
-Date: Wed, 11 Aug 2010 12:07:13 -0700
-From: Randy Dunlap <randy.dunlap@oracle.com>
-To: lud <linux-usb@vger.kernel.org>
-Cc: gregkh@suse.de, David Brownell <dbrownell@users.sourceforge.net>
-Subject: USB: gadget: fix composite kernel-doc warnings
-Message-Id: <20100811120713.1e47b6a6.randy.dunlap@oracle.com>
-
-From: Randy Dunlap <randy.dunlap@oracle.com>
-
-Warning(include/linux/usb/composite.h:284): No description found for parameter 'disconnect'
-Warning(drivers/usb/gadget/composite.c:744): No description found for parameter 'c'
-Warning(drivers/usb/gadget/composite.c:744): Excess function parameter 'cdev' description in 'usb_string_ids_n'
-
-Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
-Cc: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/composite.c | 4 ++--
- include/linux/usb/composite.h | 1 +
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/gadget/composite.c
-+++ b/drivers/usb/gadget/composite.c
-@@ -723,12 +723,12 @@ int usb_string_ids_tab(struct usb_compos
-
- /**
- * usb_string_ids_n() - allocate unused string IDs in batch
-- * @cdev: the device whose string descriptor IDs are being allocated
-+ * @c: the device whose string descriptor IDs are being allocated
- * @n: number of string IDs to allocate
- * Context: single threaded during gadget setup
- *
- * Returns the first requested ID. This ID and next @n-1 IDs are now
-- * valid IDs. At least providind that @n is non zore because if it
-+ * valid IDs. At least provided that @n is non-zero because if it
- * is, returns last requested ID which is now very useful information.
- *
- * @usb_string_ids_n() is called from bind() callbacks to allocate
---- a/include/linux/usb/composite.h
-+++ b/include/linux/usb/composite.h
-@@ -247,6 +247,7 @@ int usb_add_config(struct usb_composite_
- * value; it should return zero on successful initialization.
- * @unbind: Reverses @bind(); called as a side effect of unregistering
- * this driver.
-+ * @disconnect: optional driver disconnect method
- * @suspend: Notifies when the host stops sending USB traffic,
- * after function notifications
- * @resume: Notifies configuration when the host restarts USB traffic,
diff --git a/usb.current/usb-gadget-return-enomem-on-memory-allocation.patch b/usb.current/usb-gadget-return-enomem-on-memory-allocation.patch
deleted file mode 100644
index 0218b8451daf3d..00000000000000
--- a/usb.current/usb-gadget-return-enomem-on-memory-allocation.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From julia@diku.dk Thu Aug 19 10:35:40 2010
-Date: Wed, 11 Aug 2010 12:10:48 +0200 (CEST)
-From: Julia Lawall <julia@diku.dk>
-To: David Brownell <dbrownell@users.sourceforge.net>,
- Greg Kroah-Hartman <gregkh@suse.de>, linux-usb@vger.kernel.org,
- linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
-Subject: USB: gadget: Return -ENOMEM on memory allocation
- failure
-Message-ID: <Pine.LNX.4.64.1008111210291.8669@ask.diku.dk>
-
-From: Julia Lawall <julia@diku.dk>
-
-In this code, 0 is returned on memory allocation failure, even though other
-failures return -ENOMEM or other similar values.
-
-A simplified version of the semantic match that finds this problem is as
-follows: (http://coccinelle.lip6.fr/)
-
-// <smpl>
-@@
-expression ret;
-expression x,e1,e2,e3;
-@@
-
-ret = 0
-... when != ret = e1
-*x = \(kmalloc\|kcalloc\|kzalloc\)(...)
-... when != ret = e2
-if (x == NULL) { ... when != ret = e3
- return ret;
-}
-// </smpl>
-
-Signed-off-by: Julia Lawall <julia@diku.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/gadget/m66592-udc.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/usb/gadget/m66592-udc.c
-+++ b/drivers/usb/gadget/m66592-udc.c
-@@ -1609,6 +1609,7 @@ static int __init m66592_probe(struct pl
- /* initialize ucd */
- m66592 = kzalloc(sizeof(struct m66592), GFP_KERNEL);
- if (m66592 == NULL) {
-+ ret = -ENOMEM;
- pr_err("kzalloc error\n");
- goto clean_up;
- }
diff --git a/usb.current/usb-io_ti-check-firmware-version-before-updating.patch b/usb.current/usb-io_ti-check-firmware-version-before-updating.patch
deleted file mode 100644
index 0191edc545628a..00000000000000
--- a/usb.current/usb-io_ti-check-firmware-version-before-updating.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:22:58 2010
-Date: Tue, 17 Aug 2010 15:15:37 -0700
-From: Greg Kroah-Hartman <gregkh@suse.de>
-To: Alan Stern <stern@rowland.harvard.edu>
-Cc: Chris Beauchamp <chris@chillibean.tv>
-Subject: USB: io_ti: check firmware version before updating
-Message-ID: <20100817221537.GA20178@kroah.com>
-
-If we can't read the firmware for a device from the disk, and yet the
-device already has a valid firmware image in it, we don't want to
-replace the firmware with something invalid. So check the version
-number to be less than the current one to verify this is the correct
-thing to do.
-
-
-Reported-by: Chris Beauchamp <chris@chillibean.tv>
-Tested-by: Chris Beauchamp <chris@chillibean.tv>
-Cc: Alan Stern <stern@rowland.harvard.edu>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/io_ti.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/serial/io_ti.c
-+++ b/drivers/usb/serial/io_ti.c
-@@ -1151,7 +1151,7 @@ static int download_fw(struct edgeport_s
-
- /* Check if we have an old version in the I2C and
- update if necessary */
-- if (download_cur_ver != download_new_ver) {
-+ if (download_cur_ver < download_new_ver) {
- dbg("%s - Update I2C dld from %d.%d to %d.%d",
- __func__,
- firmware_version->Ver_Major,
diff --git a/usb.current/usb-iowarrior-fix-misuse-of-return-value-of-copy_to_user.patch b/usb.current/usb-iowarrior-fix-misuse-of-return-value-of-copy_to_user.patch
deleted file mode 100644
index 6d39e4aee50dc1..00000000000000
--- a/usb.current/usb-iowarrior-fix-misuse-of-return-value-of-copy_to_user.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From segooon@gmail.com Thu Aug 19 10:41:10 2010
-From: Kulikov Vasiliy <segooon@gmail.com>
-To: kernel-janitors@vger.kernel.org
-Cc: Greg Kroah-Hartman <gregkh@suse.de>,
- Oliver Neukum <oliver@neukum.org>,
- Mauro Carvalho Chehab <mchehab@redhat.com>,
- Daniel Mack <daniel@caiaq.de>, Kay Sievers <kay.sievers@vrfy.org>,
- linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
-Subject: USB: iowarrior: fix misuse of return value of copy_to_user()
-Date: Sat, 31 Jul 2010 21:39:46 +0400
-Message-Id: <1280597987-8565-1-git-send-email-segooon@gmail.com>
-
-copy_to_user() returns number of not copied bytes, not error code.
-
-Signed-off-by: Kulikov Vasiliy <segooon@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/misc/iowarrior.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/misc/iowarrior.c
-+++ b/drivers/usb/misc/iowarrior.c
-@@ -542,7 +542,7 @@ static long iowarrior_ioctl(struct file
- retval = io_res;
- else {
- io_res = copy_to_user(user_buffer, buffer, dev->report_size);
-- if (io_res < 0)
-+ if (io_res)
- retval = -EFAULT;
- }
- break;
-@@ -574,7 +574,7 @@ static long iowarrior_ioctl(struct file
- }
- io_res = copy_to_user((struct iowarrior_info __user *)arg, &info,
- sizeof(struct iowarrior_info));
-- if (io_res < 0)
-+ if (io_res)
- retval = -EFAULT;
- break;
- }
diff --git a/usb.current/usb-isp1760-use-a-write-barrier-to-ensure-proper-ndelay-timing.patch b/usb.current/usb-isp1760-use-a-write-barrier-to-ensure-proper-ndelay-timing.patch
deleted file mode 100644
index 82c3a63c557a94..00000000000000
--- a/usb.current/usb-isp1760-use-a-write-barrier-to-ensure-proper-ndelay-timing.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From vapier@gentoo.org Thu Aug 12 13:45:44 2010
-From: Mike Frysinger <vapier@gentoo.org>
-To: linux-usb@vger.kernel.org, Greg Kroah-Hartman <gregkh@suse.de>
-Cc: uclinux-dist-devel@blackfin.uclinux.org,
- Michael Hennerich <michael.hennerich@analog.com>
-Subject: USB: isp1760: use a write barrier to ensure proper ndelay timing
-Date: Thu, 5 Aug 2010 17:53:57 -0400
-Message-Id: <1281045237-21967-1-git-send-email-vapier@gentoo.org>
-
-From: Michael Hennerich <michael.hennerich@analog.com>
-
-The ISP1760 has some timing requirements where it has to delay a short
-period after a write to a register has started. However, this delay is
-from the time the write hits the USB chip (the ISP1760), not from the
-time where the processor started processing the write. So on a quick
-enough processor, it is sometimes possible for the write to not hit the
-device before we start delaying, and we then violate the part's timing
-requirements, so things stop working.
-
-To avoid all this, insert a write barrier after the register write and
-before the timing delay/register read so we can guarantee we only start
-counting time after the write has hit the device.
-
-Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/isp1760-hcd.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/usb/host/isp1760-hcd.c
-+++ b/drivers/usb/host/isp1760-hcd.c
-@@ -829,6 +829,7 @@ static void enqueue_an_ATL_packet(struct
- * almost immediately. With ISP1761, this register requires a delay of
- * 195ns between a write and subsequent read (see section 15.1.1.3).
- */
-+ mmiowb();
- ndelay(195);
- skip_map = isp1760_readl(hcd->regs + HC_ATL_PTD_SKIPMAP_REG);
-
-@@ -870,6 +871,7 @@ static void enqueue_an_INT_packet(struct
- * almost immediately. With ISP1761, this register requires a delay of
- * 195ns between a write and subsequent read (see section 15.1.1.3).
- */
-+ mmiowb();
- ndelay(195);
- skip_map = isp1760_readl(hcd->regs + HC_INT_PTD_SKIPMAP_REG);
-
diff --git a/usb.current/usb-option-add-celot-ct-650.patch b/usb.current/usb-option-add-celot-ct-650.patch
deleted file mode 100644
index a8fab4b979e353..00000000000000
--- a/usb.current/usb-option-add-celot-ct-650.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From mjt@tls.msk.ru Thu Aug 12 13:43:49 2010
-Message-ID: <4C5C20F1.6060704@msgid.tls.msk.ru>
-Date: Fri, 06 Aug 2010 18:49:21 +0400
-From: Michael Tokarev <mjt@tls.msk.ru>
-To: Greg KH <greg@kroah.com>
-CC: Oliver Neukum <oneukum@suse.de>
-Subject: USB: option: add Celot CT-650
-
-
-Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/serial/option.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/serial/option.c
-+++ b/drivers/usb/serial/option.c
-@@ -365,6 +365,10 @@ static void option_instat_callback(struc
- #define OLIVETTI_VENDOR_ID 0x0b3c
- #define OLIVETTI_PRODUCT_OLICARD100 0xc000
-
-+/* Celot products */
-+#define CELOT_VENDOR_ID 0x211f
-+#define CELOT_PRODUCT_CT680M 0x6801
-+
- /* some devices interfaces need special handling due to a number of reasons */
- enum option_blacklist_reason {
- OPTION_BLACKLIST_NONE = 0,
-@@ -887,10 +891,9 @@ static const struct usb_device_id option
- { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_100F) },
- { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1011)},
- { USB_DEVICE(PIRELLI_VENDOR_ID, PIRELLI_PRODUCT_1012)},
--
- { USB_DEVICE(CINTERION_VENDOR_ID, 0x0047) },
--
- { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD100) },
-+ { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */
- { } /* Terminating entry */
- };
- MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/usb.current/usb-otg-twl4030-fix-wrong-assumption-of-starting-state.patch b/usb.current/usb-otg-twl4030-fix-wrong-assumption-of-starting-state.patch
deleted file mode 100644
index 34471a1b82dbd8..00000000000000
--- a/usb.current/usb-otg-twl4030-fix-wrong-assumption-of-starting-state.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:36:21 2010
-From: Felipe Balbi <felipe.balbi@nokia.com>
-To: Greg KH <greg@kroah.com>
-Cc: Tony Lindgren <tony@atomide.com>,
- David Brownell <david-b@pacbell.net>,
- Felipe Balbi <felipe.balbi@nokia.com>
-Subject: USB: otg: twl4030: fix wrong assumption of starting state
-Date: Wed, 11 Aug 2010 13:02:32 +0300
-Message-Id: <1281520952-27981-1-git-send-email-felipe.balbi@nokia.com>
-
-From: Felipe Balbi <felipe.balbi@nokia.com>
-
-The reset state of twl4030-usb is not sleeping, it starts
-up awaken and we need to disable it if we have booted
-with a disconnected cable to avoid over consumption on
-the default state.
-
-To avoid problems later, we read the current state of the
-transceiver from the PHY_PWR_CTRL register. The bootloader
-can, anyways, put the device to sleep before us.
-
-Tested on a custom OMAP board.
-
-Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/otg/twl4030-usb.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/otg/twl4030-usb.c
-+++ b/drivers/usb/otg/twl4030-usb.c
-@@ -550,6 +550,7 @@ static int __devinit twl4030_usb_probe(s
- struct twl4030_usb_data *pdata = pdev->dev.platform_data;
- struct twl4030_usb *twl;
- int status, err;
-+ u8 pwr;
-
- if (!pdata) {
- dev_dbg(&pdev->dev, "platform_data not available\n");
-@@ -568,7 +569,10 @@ static int __devinit twl4030_usb_probe(s
- twl->otg.set_peripheral = twl4030_set_peripheral;
- twl->otg.set_suspend = twl4030_set_suspend;
- twl->usb_mode = pdata->usb_mode;
-- twl->asleep = 1;
-+
-+ pwr = twl4030_usb_read(twl, PHY_PWR_CTRL);
-+
-+ twl->asleep = (pwr & PHY_PWR_PHYPWD);
-
- /* init spinlock for workqueue */
- spin_lock_init(&twl->lock);
diff --git a/usb.current/usb-pl2303-new-vendor-and-product-id.patch b/usb.current/usb-pl2303-new-vendor-and-product-id.patch
deleted file mode 100644
index 1441d24001f728..00000000000000
--- a/usb.current/usb-pl2303-new-vendor-and-product-id.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 12 13:53:19 2010
-From: Jef Driesen <jefdriesen@telenet.be>
-To: Greg Kroah-Hartman <gregkh@suse.de>,
- Johan Hovold <jhovold@gmail.com>,
- Frank Schaefer <schaefer.frank@gmx.net>,
- Alan Cox <alan@linux.intel.com>,
- Pawel Ludwikow <pludwiko@rab.ict.pwr.wroc.pl>,
- Manuel Jander <manuel.jander@gmail.com>
-Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
- Jef Driesen <jefdriesen@telenet.be>
-Subject: USB: pl2303: New vendor and product id
-Date: Mon, 9 Aug 2010 15:55:32 +0200
-Message-Id: <1281362132-9106-1-git-send-email-jefdriesen@telenet.be>
-
-Add support for the Zeagle N2iTiON3 dive computer interface. Since
-Zeagle devices are actually manufactured by Seiko, this patch will
-support other Seiko based models as well.
-
-Signed-off-by: Jef Driesen <jefdriesen@telenet.be>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/pl2303.c | 1 +
- drivers/usb/serial/pl2303.h | 4 ++++
- 2 files changed, 5 insertions(+)
-
---- a/drivers/usb/serial/pl2303.c
-+++ b/drivers/usb/serial/pl2303.c
-@@ -86,6 +86,7 @@ static const struct usb_device_id id_tab
- { USB_DEVICE(SUPERIAL_VENDOR_ID, SUPERIAL_PRODUCT_ID) },
- { USB_DEVICE(HP_VENDOR_ID, HP_LD220_PRODUCT_ID) },
- { USB_DEVICE(CRESSI_VENDOR_ID, CRESSI_EDY_PRODUCT_ID) },
-+ { USB_DEVICE(ZEAGLE_VENDOR_ID, ZEAGLE_N2ITION3_PRODUCT_ID) },
- { USB_DEVICE(SONY_VENDOR_ID, SONY_QN3USB_PRODUCT_ID) },
- { USB_DEVICE(SANWA_VENDOR_ID, SANWA_PRODUCT_ID) },
- { USB_DEVICE(ADLINK_VENDOR_ID, ADLINK_ND6530_PRODUCT_ID) },
---- a/drivers/usb/serial/pl2303.h
-+++ b/drivers/usb/serial/pl2303.h
-@@ -128,6 +128,10 @@
- #define CRESSI_VENDOR_ID 0x04b8
- #define CRESSI_EDY_PRODUCT_ID 0x0521
-
-+/* Zeagle dive computer interface */
-+#define ZEAGLE_VENDOR_ID 0x04b8
-+#define ZEAGLE_N2ITION3_PRODUCT_ID 0x0522
-+
- /* Sony, USB data cable for CMD-Jxx mobile phones */
- #define SONY_VENDOR_ID 0x054c
- #define SONY_QN3USB_PRODUCT_ID 0x0437
diff --git a/usb.current/usb-r8a66597-udc-return-enomem-if-kzalloc-fails.patch b/usb.current/usb-r8a66597-udc-return-enomem-if-kzalloc-fails.patch
deleted file mode 100644
index f1963042b8692b..00000000000000
--- a/usb.current/usb-r8a66597-udc-return-enomem-if-kzalloc-fails.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From axel.lin@gmail.com Thu Aug 19 10:26:44 2010
-Subject: USB: r8a66597-udc: return -ENOMEM if kzalloc() fails
-From: Axel Lin <axel.lin@gmail.com>
-Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>,
- Greg Kroah-Hartman <gregkh@suse.de>,
- Paul Mundt <lethal@linux-sh.org>, linux-usb@vger.kernel.org
-Date: Tue, 17 Aug 2010 09:41:29 +0800
-Message-Id: <1282009289.18724.0.camel@mola>
-
-Signed-off-by: Axel Lin <axel.lin@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/r8a66597-udc.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/usb/gadget/r8a66597-udc.c
-+++ b/drivers/usb/gadget/r8a66597-udc.c
-@@ -1557,6 +1557,7 @@ static int __init r8a66597_probe(struct
- /* initialize ucd */
- r8a66597 = kzalloc(sizeof(struct r8a66597), GFP_KERNEL);
- if (r8a66597 == NULL) {
-+ ret = -ENOMEM;
- printk(KERN_ERR "kzalloc error\n");
- goto clean_up;
- }
diff --git a/usb.current/usb-serial-export-symbol-usb_serial_generic_disconnect.patch b/usb.current/usb-serial-export-symbol-usb_serial_generic_disconnect.patch
deleted file mode 100644
index f5275a79669342..00000000000000
--- a/usb.current/usb-serial-export-symbol-usb_serial_generic_disconnect.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From wfp5p@viridian.itc.virginia.edu Thu Aug 19 10:31:10 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: serial: export symbol usb_serial_generic_disconnect
-Date: Thu, 5 Aug 2010 17:01:10 -0400
-Message-Id: <1281042071-11829-7-git-send-email-wfp5p@virginia.edu>
-
-This is needed by the ssu100 driver to use this function.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/generic.c | 1 +
- 1 file changed, 1 insertion(+)
-
---- a/drivers/usb/serial/generic.c
-+++ b/drivers/usb/serial/generic.c
-@@ -518,6 +518,7 @@ void usb_serial_generic_disconnect(struc
- for (i = 0; i < serial->num_ports; ++i)
- generic_cleanup(serial->port[i]);
- }
-+EXPORT_SYMBOL_GPL(usb_serial_generic_disconnect);
-
- void usb_serial_generic_release(struct usb_serial *serial)
- {
diff --git a/usb.current/usb-serial-fix-leak-of-usb-serial-module-refrence-count.patch b/usb.current/usb-serial-fix-leak-of-usb-serial-module-refrence-count.patch
deleted file mode 100644
index 3e5fed200af458..00000000000000
--- a/usb.current/usb-serial-fix-leak-of-usb-serial-module-refrence-count.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-From tom.leiming@gmail.com Thu Aug 12 13:50:12 2010
-From: tom.leiming@gmail.com
-To: greg@kroah.com,
- stern@rowland.harvard.edu
-Cc: linux-usb@vger.kernel.org, Ming Lei <tom.leiming@gmail.com>, Johan Hovold <jhovold@gmail.com>, Andi Kleen <ak@linux.intel.com>
-Subject: USB: serial: fix leak of usb serial module refrence count
-Date: Sat, 7 Aug 2010 16:20:35 +0800
-Message-Id: <1281169235-4883-1-git-send-email-tom.leiming@gmail.com>
-
-From: Ming Lei <tom.leiming@gmail.com>
-
-The patch with title below makes reference count of usb serial module
-always more than one after driver is bound.
-
- USB-BKL: Remove BKL use for usb serial driver probing
-
-In fact, the patch above only replaces lock_kernel() with try_module_get()
-, and does not use module_put() to do what unlock_kernel() did, so casue leak
-of reference count of usb serial module and the module can not be unloaded
-after serial driver is bound with device.
-
-This patch fixes the issue, also simplifies such things:
- -only call try_module_get() once in the entry of usb_serial_probe()
- -only call module_put() once in the exit of usb_serial_probe
-
-Signed-off-by: Ming Lei <tom.leiming@gmail.com>
-Cc: Johan Hovold <jhovold@gmail.com>
-Cc: Andi Kleen <ak@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/usb-serial.c | 23 +++++++----------------
- 1 file changed, 7 insertions(+), 16 deletions(-)
-
---- a/drivers/usb/serial/usb-serial.c
-+++ b/drivers/usb/serial/usb-serial.c
-@@ -736,6 +736,7 @@ int usb_serial_probe(struct usb_interfac
-
- serial = create_serial(dev, interface, type);
- if (!serial) {
-+ module_put(type->driver.owner);
- dev_err(&interface->dev, "%s - out of memory\n", __func__);
- return -ENOMEM;
- }
-@@ -746,11 +747,11 @@ int usb_serial_probe(struct usb_interfac
-
- id = get_iface_id(type, interface);
- retval = type->probe(serial, id);
-- module_put(type->driver.owner);
-
- if (retval) {
- dbg("sub driver rejected device");
- kfree(serial);
-+ module_put(type->driver.owner);
- return retval;
- }
- }
-@@ -822,6 +823,7 @@ int usb_serial_probe(struct usb_interfac
- if (num_bulk_in == 0 || num_bulk_out == 0) {
- dev_info(&interface->dev, "PL-2303 hack: descriptors matched but endpoints did not\n");
- kfree(serial);
-+ module_put(type->driver.owner);
- return -ENODEV;
- }
- }
-@@ -835,22 +837,15 @@ int usb_serial_probe(struct usb_interfac
- dev_err(&interface->dev,
- "Generic device with no bulk out, not allowed.\n");
- kfree(serial);
-+ module_put(type->driver.owner);
- return -EIO;
- }
- }
- #endif
- if (!num_ports) {
- /* if this device type has a calc_num_ports function, call it */
-- if (type->calc_num_ports) {
-- if (!try_module_get(type->driver.owner)) {
-- dev_err(&interface->dev,
-- "module get failed, exiting\n");
-- kfree(serial);
-- return -EIO;
-- }
-+ if (type->calc_num_ports)
- num_ports = type->calc_num_ports(serial);
-- module_put(type->driver.owner);
-- }
- if (!num_ports)
- num_ports = type->num_ports;
- }
-@@ -1039,13 +1034,7 @@ int usb_serial_probe(struct usb_interfac
-
- /* if this device type has an attach function, call it */
- if (type->attach) {
-- if (!try_module_get(type->driver.owner)) {
-- dev_err(&interface->dev,
-- "module get failed, exiting\n");
-- goto probe_error;
-- }
- retval = type->attach(serial);
-- module_put(type->driver.owner);
- if (retval < 0)
- goto probe_error;
- serial->attached = 1;
-@@ -1088,10 +1077,12 @@ int usb_serial_probe(struct usb_interfac
- exit:
- /* success */
- usb_set_intfdata(interface, serial);
-+ module_put(type->driver.owner);
- return 0;
-
- probe_error:
- usb_serial_put(serial);
-+ module_put(type->driver.owner);
- return -EIO;
- }
- EXPORT_SYMBOL_GPL(usb_serial_probe);
diff --git a/usb.current/usb-serial-io_ti.c-don-t-return-0-if-writing-the-download-record-failed.patch b/usb.current/usb-serial-io_ti.c-don-t-return-0-if-writing-the-download-record-failed.patch
deleted file mode 100644
index ea044370807b77..00000000000000
--- a/usb.current/usb-serial-io_ti.c-don-t-return-0-if-writing-the-download-record-failed.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:37:00 2010
-Message-Id: <201008102129.o7ALTJ3b017160@imap1.linux-foundation.org>
-Subject: USB: serial: io_ti.c: don't return 0 if writing the download record failed
-To: greg@kroah.com
-Cc: linux-usb@vger.kernel.org, akpm@linux-foundation.org,
- roel.kluin@gmail.com
-From: Roel Kluin <roel.kluin@gmail.com>
-Date: Tue, 10 Aug 2010 14:29:19 -0700
-
-From: Roel Kluin <roel.kluin@gmail.com>
-
-If the write download record failed we shouldn't return 0.
-
-Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/io_ti.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/serial/io_ti.c
-+++ b/drivers/usb/serial/io_ti.c
-@@ -1284,7 +1284,7 @@ static int download_fw(struct edgeport_s
- kfree(header);
- kfree(rom_desc);
- kfree(ti_manuf_desc);
-- return status;
-+ return -EINVAL;
- }
-
- /* Update I2C with type 0xf2 record with correct
diff --git a/usb.current/usb-ssu100-add-disconnect-function-for-ssu100.patch b/usb.current/usb-ssu100-add-disconnect-function-for-ssu100.patch
deleted file mode 100644
index ac18d4846e7b7e..00000000000000
--- a/usb.current/usb-ssu100-add-disconnect-function-for-ssu100.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From wfp5p@viridian.itc.virginia.edu Thu Aug 19 10:31:34 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: add disconnect function for ssu100
-Date: Thu, 5 Aug 2010 17:01:11 -0400
-Message-Id: <1281042071-11829-8-git-send-email-wfp5p@virginia.edu>
-
-Add a disconnect function to the functions of this device. The
-disconnect is a call to usb_serial_generic_disconnect() so it requires
-that symbol to be exported from generic.c.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -687,7 +687,6 @@ static void ssu100_process_read_urb(stru
- tty_kref_put(tty);
- }
-
--
- static struct usb_serial_driver ssu100_device = {
- .driver = {
- .owner = THIS_MODULE,
-@@ -709,6 +708,7 @@ static struct usb_serial_driver ssu100_d
- .tiocmset = ssu100_tiocmset,
- .ioctl = ssu100_ioctl,
- .set_termios = ssu100_set_termios,
-+ .disconnect = usb_serial_generic_disconnect,
- };
-
- static int __init ssu100_init(void)
diff --git a/usb.current/usb-ssu100-add-locking-for-port-private-data-in-ssu100.patch b/usb.current/usb-ssu100-add-locking-for-port-private-data-in-ssu100.patch
deleted file mode 100644
index 8411ec492cbc07..00000000000000
--- a/usb.current/usb-ssu100-add-locking-for-port-private-data-in-ssu100.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:30:04 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: add locking for port private data in ssu100
-Date: Thu, 5 Aug 2010 17:01:05 -0400
-Message-Id: <1281042071-11829-2-git-send-email-wfp5p@virginia.edu>
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -99,6 +99,7 @@ static struct usb_driver ssu100_driver =
- };
-
- struct ssu100_port_private {
-+ spinlock_t status_lock;
- u8 shadowLSR;
- u8 shadowMSR;
- wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
-@@ -333,6 +334,7 @@ static int ssu100_open(struct tty_struct
- struct ssu100_port_private *priv = usb_get_serial_port_data(port);
- u8 *data;
- int result;
-+ unsigned long flags;
-
- dbg("%s - port %d", __func__, port->number);
-
-@@ -350,11 +352,13 @@ static int ssu100_open(struct tty_struct
- return result;
- }
-
-+ spin_lock_irqsave(&priv->status_lock, flags);
- priv->shadowLSR = data[0] & (SERIAL_LSR_OE | SERIAL_LSR_PE |
- SERIAL_LSR_FE | SERIAL_LSR_BI);
-
- priv->shadowMSR = data[1] & (SERIAL_MSR_CTS | SERIAL_MSR_DSR |
- SERIAL_MSR_RI | SERIAL_MSR_CD);
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-
- kfree(data);
-
-@@ -455,6 +459,7 @@ static void ssu100_set_max_packet_size(s
-
- unsigned num_endpoints;
- int i;
-+ unsigned long flags;
-
- num_endpoints = interface->cur_altsetting->desc.bNumEndpoints;
- dev_info(&udev->dev, "Number of endpoints %d\n", num_endpoints);
-@@ -466,7 +471,9 @@ static void ssu100_set_max_packet_size(s
- }
-
- /* set max packet size based on descriptor */
-+ spin_lock_irqsave(&priv->status_lock, flags);
- priv->max_packet_size = ep_desc->wMaxPacketSize;
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-
- dev_info(&udev->dev, "Setting MaxPacketSize %d\n", priv->max_packet_size);
- }
-@@ -485,9 +492,9 @@ static int ssu100_attach(struct usb_seri
- return -ENOMEM;
- }
-
-+ spin_lock_init(&priv->status_lock);
- init_waitqueue_head(&priv->delta_msr_wait);
- usb_set_serial_port_data(port, priv);
--
- ssu100_set_max_packet_size(port);
-
- return ssu100_initdevice(serial->dev);
diff --git a/usb.current/usb-ssu100-add-register-parameter-to-ssu100_setregister.patch b/usb.current/usb-ssu100-add-register-parameter-to-ssu100_setregister.patch
deleted file mode 100644
index 60daa6a915a4df..00000000000000
--- a/usb.current/usb-ssu100-add-register-parameter-to-ssu100_setregister.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From wfp5p@viridian.itc.virginia.edu Thu Aug 19 10:30:46 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: add register parameter to ssu100_setregister
-Date: Thu, 5 Aug 2010 17:01:08 -0400
-Message-Id: <1281042071-11829-5-git-send-email-wfp5p@virginia.edu>
-
-The function ssu100_setregister was hard coded to only set the MCR
-register. Add a register parameter so that other registers can be
-set.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -127,9 +127,10 @@ static inline int ssu100_getregister(str
-
- static inline int ssu100_setregister(struct usb_device *dev,
- unsigned short uart,
-+ unsigned short reg,
- u16 data)
- {
-- u16 value = (data << 8) | UART_MCR;
-+ u16 value = (data << 8) | reg;
-
- return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
- QT_SET_GET_REGISTER, 0x40, value, uart,
-@@ -159,7 +160,7 @@ static inline int update_mctrl(struct us
- if (set & TIOCM_RTS)
- urb_value |= UART_MCR_RTS;
-
-- result = ssu100_setregister(dev, 0, urb_value);
-+ result = ssu100_setregister(dev, 0, UART_MCR, urb_value);
- if (result < 0)
- dbg("%s Error from MODEM_CTRL urb", __func__);
-
-@@ -529,7 +530,7 @@ static void ssu100_dtr_rts(struct usb_se
- if (!port->serial->disconnected) {
- /* Disable flow control */
- if (!on &&
-- ssu100_setregister(dev, 0, 0) < 0)
-+ ssu100_setregister(dev, 0, UART_MCR, 0) < 0)
- dev_err(&port->dev, "error from flowcontrol urb\n");
- /* drop RTS and DTR */
- if (on)
diff --git a/usb.current/usb-ssu100-refine-process_packet-in-ssu100.patch b/usb.current/usb-ssu100-refine-process_packet-in-ssu100.patch
deleted file mode 100644
index 2a1cf78364eb58..00000000000000
--- a/usb.current/usb-ssu100-refine-process_packet-in-ssu100.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:30:17 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: refine process_packet in ssu100
-Date: Thu, 5 Aug 2010 17:01:06 -0400
-Message-Id: <1281042071-11829-3-git-send-email-wfp5p@virginia.edu>
-
-The status information does not appear at the start of each incoming
-packet so the check for len < 4 at the start of ssu100_process_packet
-is wrong. Remove it.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 8 ++------
- 1 file changed, 2 insertions(+), 6 deletions(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -575,12 +575,8 @@ static int ssu100_process_packet(struct
-
- dbg("%s - port %d", __func__, port->number);
-
-- if (len < 4) {
-- dbg("%s - malformed packet", __func__);
-- return 0;
-- }
--
-- if ((packet[0] == 0x1b) && (packet[1] == 0x1b) &&
-+ if ((len >= 4) &&
-+ (packet[0] == 0x1b) && (packet[1] == 0x1b) &&
- ((packet[2] == 0x00) || (packet[2] == 0x01))) {
- if (packet[2] == 0x00)
- priv->shadowLSR = packet[3] & (SERIAL_LSR_OE |
diff --git a/usb.current/usb-ssu100-remove-duplicate-defines-in-ssu100.patch b/usb.current/usb-ssu100-remove-duplicate-defines-in-ssu100.patch
deleted file mode 100644
index 3980f2792d0c27..00000000000000
--- a/usb.current/usb-ssu100-remove-duplicate-defines-in-ssu100.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:30:28 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: remove duplicate #defines in ssu100
-Date: Thu, 5 Aug 2010 17:01:07 -0400
-Message-Id: <1281042071-11829-4-git-send-email-wfp5p@virginia.edu>
-
-The ssu100 uses a TI16C550C UART so the SERIAL_ defines in this code
-are duplicates of those found in serial_reg.h. Remove the defines in
-ssu100.c and use the ones in the header file.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 86 +++++++++++++++-----------------------------
- 1 file changed, 31 insertions(+), 55 deletions(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -15,6 +15,7 @@
- #include <linux/serial.h>
- #include <linux/usb.h>
- #include <linux/usb/serial.h>
-+#include <linux/serial_reg.h>
- #include <linux/uaccess.h>
-
- #define QT_OPEN_CLOSE_CHANNEL 0xca
-@@ -27,36 +28,11 @@
- #define QT_HW_FLOW_CONTROL_MASK 0xc5
- #define QT_SW_FLOW_CONTROL_MASK 0xc6
-
--#define MODEM_CTL_REGISTER 0x04
--#define MODEM_STATUS_REGISTER 0x06
--
--
--#define SERIAL_LSR_OE 0x02
--#define SERIAL_LSR_PE 0x04
--#define SERIAL_LSR_FE 0x08
--#define SERIAL_LSR_BI 0x10
--
--#define SERIAL_LSR_TEMT 0x40
--
--#define SERIAL_MCR_DTR 0x01
--#define SERIAL_MCR_RTS 0x02
--#define SERIAL_MCR_LOOP 0x10
--
--#define SERIAL_MSR_CTS 0x10
--#define SERIAL_MSR_CD 0x80
--#define SERIAL_MSR_RI 0x40
--#define SERIAL_MSR_DSR 0x20
- #define SERIAL_MSR_MASK 0xf0
-
--#define SERIAL_CRTSCTS ((SERIAL_MCR_RTS << 8) | SERIAL_MSR_CTS)
--
--#define SERIAL_8_DATA 0x03
--#define SERIAL_7_DATA 0x02
--#define SERIAL_6_DATA 0x01
--#define SERIAL_5_DATA 0x00
-+#define SERIAL_CRTSCTS ((UART_MCR_RTS << 8) | UART_MSR_CTS)
-
--#define SERIAL_ODD_PARITY 0X08
--#define SERIAL_EVEN_PARITY 0X18
-+#define SERIAL_EVEN_PARITY (UART_LCR_PARITY | UART_LCR_EPAR)
-
- #define MAX_BAUD_RATE 460800
-
-@@ -153,7 +129,7 @@ static inline int ssu100_setregister(str
- unsigned short uart,
- u16 data)
- {
-- u16 value = (data << 8) | MODEM_CTL_REGISTER;
-+ u16 value = (data << 8) | UART_MCR;
-
- return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
- QT_SET_GET_REGISTER, 0x40, value, uart,
-@@ -179,9 +155,9 @@ static inline int update_mctrl(struct us
- clear &= ~set; /* 'set' takes precedence over 'clear' */
- urb_value = 0;
- if (set & TIOCM_DTR)
-- urb_value |= SERIAL_MCR_DTR;
-+ urb_value |= UART_MCR_DTR;
- if (set & TIOCM_RTS)
-- urb_value |= SERIAL_MCR_RTS;
-+ urb_value |= UART_MCR_RTS;
-
- result = ssu100_setregister(dev, 0, urb_value);
- if (result < 0)
-@@ -265,24 +241,24 @@ static void ssu100_set_termios(struct tt
-
- if (cflag & PARENB) {
- if (cflag & PARODD)
-- urb_value |= SERIAL_ODD_PARITY;
-+ urb_value |= UART_LCR_PARITY;
- else
- urb_value |= SERIAL_EVEN_PARITY;
- }
-
- switch (cflag & CSIZE) {
- case CS5:
-- urb_value |= SERIAL_5_DATA;
-+ urb_value |= UART_LCR_WLEN5;
- break;
- case CS6:
-- urb_value |= SERIAL_6_DATA;
-+ urb_value |= UART_LCR_WLEN6;
- break;
- case CS7:
-- urb_value |= SERIAL_7_DATA;
-+ urb_value |= UART_LCR_WLEN7;
- break;
- default:
- case CS8:
-- urb_value |= SERIAL_8_DATA;
-+ urb_value |= UART_LCR_WLEN8;
- break;
- }
-
-@@ -353,11 +329,11 @@ static int ssu100_open(struct tty_struct
- }
-
- spin_lock_irqsave(&priv->status_lock, flags);
-- priv->shadowLSR = data[0] & (SERIAL_LSR_OE | SERIAL_LSR_PE |
-- SERIAL_LSR_FE | SERIAL_LSR_BI);
-+ priv->shadowLSR = data[0] & (UART_LSR_OE | UART_LSR_PE |
-+ UART_LSR_FE | UART_LSR_BI);
-
-- priv->shadowMSR = data[1] & (SERIAL_MSR_CTS | SERIAL_MSR_DSR |
-- SERIAL_MSR_RI | SERIAL_MSR_CD);
-+ priv->shadowMSR = data[1] & (UART_MSR_CTS | UART_MSR_DSR |
-+ UART_MSR_RI | UART_MSR_DCD);
- spin_unlock_irqrestore(&priv->status_lock, flags);
-
- kfree(data);
-@@ -430,10 +406,10 @@ static int ssu100_ioctl(struct tty_struc
- /* Return 0 if caller wanted to know about
- these bits */
-
-- if (((arg & TIOCM_RNG) && (diff & SERIAL_MSR_RI)) ||
-- ((arg & TIOCM_DSR) && (diff & SERIAL_MSR_DSR)) ||
-- ((arg & TIOCM_CD) && (diff & SERIAL_MSR_CD)) ||
-- ((arg & TIOCM_CTS) && (diff & SERIAL_MSR_CTS)))
-+ if (((arg & TIOCM_RNG) && (diff & UART_MSR_RI)) ||
-+ ((arg & TIOCM_DSR) && (diff & UART_MSR_DSR)) ||
-+ ((arg & TIOCM_CD) && (diff & UART_MSR_DCD)) ||
-+ ((arg & TIOCM_CTS) && (diff & UART_MSR_CTS)))
- return 0;
- }
- }
-@@ -513,20 +489,20 @@ static int ssu100_tiocmget(struct tty_st
- if (!d)
- return -ENOMEM;
-
-- r = ssu100_getregister(dev, 0, MODEM_CTL_REGISTER, d);
-+ r = ssu100_getregister(dev, 0, UART_MCR, d);
- if (r < 0)
- goto mget_out;
-
-- r = ssu100_getregister(dev, 0, MODEM_STATUS_REGISTER, d+1);
-+ r = ssu100_getregister(dev, 0, UART_MSR, d+1);
- if (r < 0)
- goto mget_out;
-
-- r = (d[0] & SERIAL_MCR_DTR ? TIOCM_DTR : 0) |
-- (d[0] & SERIAL_MCR_RTS ? TIOCM_RTS : 0) |
-- (d[1] & SERIAL_MSR_CTS ? TIOCM_CTS : 0) |
-- (d[1] & SERIAL_MSR_CD ? TIOCM_CAR : 0) |
-- (d[1] & SERIAL_MSR_RI ? TIOCM_RI : 0) |
-- (d[1] & SERIAL_MSR_DSR ? TIOCM_DSR : 0);
-+ r = (d[0] & UART_MCR_DTR ? TIOCM_DTR : 0) |
-+ (d[0] & UART_MCR_RTS ? TIOCM_RTS : 0) |
-+ (d[1] & UART_MSR_CTS ? TIOCM_CTS : 0) |
-+ (d[1] & UART_MSR_DCD ? TIOCM_CAR : 0) |
-+ (d[1] & UART_MSR_RI ? TIOCM_RI : 0) |
-+ (d[1] & UART_MSR_DSR ? TIOCM_DSR : 0);
-
- mget_out:
- kfree(d);
-@@ -579,10 +555,10 @@ static int ssu100_process_packet(struct
- (packet[0] == 0x1b) && (packet[1] == 0x1b) &&
- ((packet[2] == 0x00) || (packet[2] == 0x01))) {
- if (packet[2] == 0x00)
-- priv->shadowLSR = packet[3] & (SERIAL_LSR_OE |
-- SERIAL_LSR_PE |
-- SERIAL_LSR_FE |
-- SERIAL_LSR_BI);
-+ priv->shadowLSR = packet[3] & (UART_LSR_OE |
-+ UART_LSR_PE |
-+ UART_LSR_FE |
-+ UART_LSR_BI);
-
- if (packet[2] == 0x01) {
- priv->shadowMSR = packet[3];
diff --git a/usb.current/usb-ssu100-rework-logic-for-tiocmiwait.patch b/usb.current/usb-ssu100-rework-logic-for-tiocmiwait.patch
deleted file mode 100644
index f3db18fa8d941b..00000000000000
--- a/usb.current/usb-ssu100-rework-logic-for-tiocmiwait.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:30:59 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: rework logic for TIOCMIWAIT
-Date: Thu, 5 Aug 2010 17:01:09 -0400
-Message-Id: <1281042071-11829-6-git-send-email-wfp5p@virginia.edu>
-
-Rework the logic for TIOCMIWAIT to use wait_event_interruptible.
-
-This also adds support for TIOCGICOUNT.
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 146 +++++++++++++++++++++++++++++++++-----------
- 1 file changed, 111 insertions(+), 35 deletions(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -80,6 +80,7 @@ struct ssu100_port_private {
- u8 shadowMSR;
- wait_queue_head_t delta_msr_wait; /* Used for TIOCMIWAIT */
- unsigned short max_packet_size;
-+ struct async_icount icount;
- };
-
- static void ssu100_release(struct usb_serial *serial)
-@@ -330,11 +331,8 @@ static int ssu100_open(struct tty_struct
- }
-
- spin_lock_irqsave(&priv->status_lock, flags);
-- priv->shadowLSR = data[0] & (UART_LSR_OE | UART_LSR_PE |
-- UART_LSR_FE | UART_LSR_BI);
--
-- priv->shadowMSR = data[1] & (UART_MSR_CTS | UART_MSR_DSR |
-- UART_MSR_RI | UART_MSR_DCD);
-+ priv->shadowLSR = data[0];
-+ priv->shadowMSR = data[1];
- spin_unlock_irqrestore(&priv->status_lock, flags);
-
- kfree(data);
-@@ -379,11 +377,51 @@ static int get_serial_info(struct usb_se
- return 0;
- }
-
-+static int wait_modem_info(struct usb_serial_port *port, unsigned int arg)
-+{
-+ struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-+ struct async_icount prev, cur;
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&priv->status_lock, flags);
-+ prev = priv->icount;
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-+
-+ while (1) {
-+ wait_event_interruptible(priv->delta_msr_wait,
-+ ((priv->icount.rng != prev.rng) ||
-+ (priv->icount.dsr != prev.dsr) ||
-+ (priv->icount.dcd != prev.dcd) ||
-+ (priv->icount.cts != prev.cts)));
-+
-+ if (signal_pending(current))
-+ return -ERESTARTSYS;
-+
-+ spin_lock_irqsave(&priv->status_lock, flags);
-+ cur = priv->icount;
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-+
-+ if ((prev.rng == cur.rng) &&
-+ (prev.dsr == cur.dsr) &&
-+ (prev.dcd == cur.dcd) &&
-+ (prev.cts == cur.cts))
-+ return -EIO;
-+
-+ if ((arg & TIOCM_RNG && (prev.rng != cur.rng)) ||
-+ (arg & TIOCM_DSR && (prev.dsr != cur.dsr)) ||
-+ (arg & TIOCM_CD && (prev.dcd != cur.dcd)) ||
-+ (arg & TIOCM_CTS && (prev.cts != cur.cts)))
-+ return 0;
-+ }
-+ return 0;
-+}
-+
- static int ssu100_ioctl(struct tty_struct *tty, struct file *file,
- unsigned int cmd, unsigned long arg)
- {
- struct usb_serial_port *port = tty->driver_data;
- struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-+ void __user *user_arg = (void __user *)arg;
-
- dbg("%s cmd 0x%04x", __func__, cmd);
-
-@@ -393,28 +431,28 @@ static int ssu100_ioctl(struct tty_struc
- (struct serial_struct __user *) arg);
-
- case TIOCMIWAIT:
-- while (priv != NULL) {
-- u8 prevMSR = priv->shadowMSR & SERIAL_MSR_MASK;
-- interruptible_sleep_on(&priv->delta_msr_wait);
-- /* see if a signal did it */
-- if (signal_pending(current))
-- return -ERESTARTSYS;
-- else {
-- u8 diff = (priv->shadowMSR & SERIAL_MSR_MASK) ^ prevMSR;
-- if (!diff)
-- return -EIO; /* no change => error */
--
-- /* Return 0 if caller wanted to know about
-- these bits */
--
-- if (((arg & TIOCM_RNG) && (diff & UART_MSR_RI)) ||
-- ((arg & TIOCM_DSR) && (diff & UART_MSR_DSR)) ||
-- ((arg & TIOCM_CD) && (diff & UART_MSR_DCD)) ||
-- ((arg & TIOCM_CTS) && (diff & UART_MSR_CTS)))
-- return 0;
-- }
-- }
-+ return wait_modem_info(port, arg);
-+
-+ case TIOCGICOUNT:
-+ {
-+ struct serial_icounter_struct icount;
-+ struct async_icount cnow = priv->icount;
-+ memset(&icount, 0, sizeof(icount));
-+ icount.cts = cnow.cts;
-+ icount.dsr = cnow.dsr;
-+ icount.rng = cnow.rng;
-+ icount.dcd = cnow.dcd;
-+ icount.rx = cnow.rx;
-+ icount.tx = cnow.tx;
-+ icount.frame = cnow.frame;
-+ icount.overrun = cnow.overrun;
-+ icount.parity = cnow.parity;
-+ icount.brk = cnow.brk;
-+ icount.buf_overrun = cnow.buf_overrun;
-+ if (copy_to_user(user_arg, &icount, sizeof(icount)))
-+ return -EFAULT;
- return 0;
-+ }
-
- default:
- break;
-@@ -541,6 +579,50 @@ static void ssu100_dtr_rts(struct usb_se
- mutex_unlock(&port->serial->disc_mutex);
- }
-
-+static void ssu100_update_msr(struct usb_serial_port *port, u8 msr)
-+{
-+ struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&priv->status_lock, flags);
-+ priv->shadowMSR = msr;
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-+
-+ if (msr & UART_MSR_ANY_DELTA) {
-+ /* update input line counters */
-+ if (msr & UART_MSR_DCTS)
-+ priv->icount.cts++;
-+ if (msr & UART_MSR_DDSR)
-+ priv->icount.dsr++;
-+ if (msr & UART_MSR_DDCD)
-+ priv->icount.dcd++;
-+ if (msr & UART_MSR_TERI)
-+ priv->icount.rng++;
-+ wake_up_interruptible(&priv->delta_msr_wait);
-+ }
-+}
-+
-+static void ssu100_update_lsr(struct usb_serial_port *port, u8 lsr)
-+{
-+ struct ssu100_port_private *priv = usb_get_serial_port_data(port);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&priv->status_lock, flags);
-+ priv->shadowLSR = lsr;
-+ spin_unlock_irqrestore(&priv->status_lock, flags);
-+
-+ if (lsr & UART_LSR_BRK_ERROR_BITS) {
-+ if (lsr & UART_LSR_BI)
-+ priv->icount.brk++;
-+ if (lsr & UART_LSR_FE)
-+ priv->icount.frame++;
-+ if (lsr & UART_LSR_PE)
-+ priv->icount.parity++;
-+ if (lsr & UART_LSR_OE)
-+ priv->icount.overrun++;
-+ }
-+}
-+
- static int ssu100_process_packet(struct tty_struct *tty,
- struct usb_serial_port *port,
- struct ssu100_port_private *priv,
-@@ -556,15 +638,9 @@ static int ssu100_process_packet(struct
- (packet[0] == 0x1b) && (packet[1] == 0x1b) &&
- ((packet[2] == 0x00) || (packet[2] == 0x01))) {
- if (packet[2] == 0x00)
-- priv->shadowLSR = packet[3] & (UART_LSR_OE |
-- UART_LSR_PE |
-- UART_LSR_FE |
-- UART_LSR_BI);
--
-- if (packet[2] == 0x01) {
-- priv->shadowMSR = packet[3];
-- wake_up_interruptible(&priv->delta_msr_wait);
-- }
-+ ssu100_update_lsr(port, packet[3]);
-+ if (packet[2] == 0x01)
-+ ssu100_update_msr(port, packet[3]);
-
- len -= 4;
- ch = packet + 4;
diff --git a/usb.current/usb-ssu100-set-tty_flags-in-ssu100_process_packet.patch b/usb.current/usb-ssu100-set-tty_flags-in-ssu100_process_packet.patch
deleted file mode 100644
index 8a595fe8a43ed7..00000000000000
--- a/usb.current/usb-ssu100-set-tty_flags-in-ssu100_process_packet.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From wfp5p@viridian.itc.virginia.edu Thu Aug 19 10:28:29 2010
-From: Bill Pemberton <wfp5p@virginia.edu>
-To: linux-usb@vger.kernel.org
-Cc: greg@kroah.com
-Subject: USB: ssu100: set tty_flags in ssu100_process_packet
-Date: Fri, 13 Aug 2010 09:59:31 -0400
-Message-Id: <1281707971-22238-1-git-send-email-wfp5p@virginia.edu>
-
-flag was never set in ssu100_process_packet. Add logic to set it
-before calling tty_insert_flip_*
-
-Signed-off-by: Bill Pemberton <wfp5p@virginia.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/ssu100.c | 38 +++++++++++++++++++++++++++++---------
- 1 file changed, 29 insertions(+), 9 deletions(-)
-
---- a/drivers/usb/serial/ssu100.c
-+++ b/drivers/usb/serial/ssu100.c
-@@ -602,7 +602,8 @@ static void ssu100_update_msr(struct usb
- }
- }
-
--static void ssu100_update_lsr(struct usb_serial_port *port, u8 lsr)
-+static void ssu100_update_lsr(struct usb_serial_port *port, u8 lsr,
-+ char *tty_flag)
- {
- struct ssu100_port_private *priv = usb_get_serial_port_data(port);
- unsigned long flags;
-@@ -611,16 +612,32 @@ static void ssu100_update_lsr(struct usb
- priv->shadowLSR = lsr;
- spin_unlock_irqrestore(&priv->status_lock, flags);
-
-+ *tty_flag = TTY_NORMAL;
- if (lsr & UART_LSR_BRK_ERROR_BITS) {
-- if (lsr & UART_LSR_BI)
-+ /* we always want to update icount, but we only want to
-+ * update tty_flag for one case */
-+ if (lsr & UART_LSR_BI) {
- priv->icount.brk++;
-- if (lsr & UART_LSR_FE)
-- priv->icount.frame++;
-- if (lsr & UART_LSR_PE)
-+ *tty_flag = TTY_BREAK;
-+ usb_serial_handle_break(port);
-+ }
-+ if (lsr & UART_LSR_PE) {
- priv->icount.parity++;
-- if (lsr & UART_LSR_OE)
-+ if (*tty_flag == TTY_NORMAL)
-+ *tty_flag = TTY_PARITY;
-+ }
-+ if (lsr & UART_LSR_FE) {
-+ priv->icount.frame++;
-+ if (*tty_flag == TTY_NORMAL)
-+ *tty_flag = TTY_FRAME;
-+ }
-+ if (lsr & UART_LSR_OE){
- priv->icount.overrun++;
-+ if (*tty_flag == TTY_NORMAL)
-+ *tty_flag = TTY_OVERRUN;
-+ }
- }
-+
- }
-
- static int ssu100_process_packet(struct tty_struct *tty,
-@@ -629,7 +646,7 @@ static int ssu100_process_packet(struct
- char *packet, int len)
- {
- int i;
-- char flag;
-+ char flag = TTY_NORMAL;
- char *ch;
-
- dbg("%s - port %d", __func__, port->number);
-@@ -637,8 +654,11 @@ static int ssu100_process_packet(struct
- if ((len >= 4) &&
- (packet[0] == 0x1b) && (packet[1] == 0x1b) &&
- ((packet[2] == 0x00) || (packet[2] == 0x01))) {
-- if (packet[2] == 0x00)
-- ssu100_update_lsr(port, packet[3]);
-+ if (packet[2] == 0x00) {
-+ ssu100_update_lsr(port, packet[3], &flag);
-+ if (flag == TTY_OVERRUN)
-+ tty_insert_flip_char(tty, 0, TTY_OVERRUN);
-+ }
- if (packet[2] == 0x01)
- ssu100_update_msr(port, packet[3]);
-
diff --git a/usb.current/usb-uvc_v4l2-cleanup-test-for-end-of-loop.patch b/usb.current/usb-uvc_v4l2-cleanup-test-for-end-of-loop.patch
deleted file mode 100644
index 042018b1a81f88..00000000000000
--- a/usb.current/usb-uvc_v4l2-cleanup-test-for-end-of-loop.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 12 13:42:22 2010
-Date: Thu, 12 Aug 2010 09:59:58 +0200
-From: Dan Carpenter <error27@gmail.com>
-To: David Brownell <dbrownell@users.sourceforge.net>
-Cc: Greg Kroah-Hartman <gregkh@suse.de>,
- Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
- Mauro Carvalho Chehab <mchehab@redhat.com>,
- linux-usb@vger.kernel.org, kernel-janitors@vger.kernel.org
-Subject: USB: uvc_v4l2: cleanup test for end of loop
-Message-ID: <20100812075958.GP645@bicker>
-Content-Disposition: inline
-
-We're trying to test for the the end of the loop here. "format" is
-never NULL. We don't know what "format->fcc" is because we're past the
-end of the loop and I think "fmt->fmt.pix.pixelformat" comes from the
-user so we don't know what that is either. It works, but it's cleaner
-to just test to see if (i == ARRAY_SIZE(uvc_formats).
-
-Signed-off-by: Dan Carpenter <error27@gmail.com>
-Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/uvc_v4l2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/gadget/uvc_v4l2.c
-+++ b/drivers/usb/gadget/uvc_v4l2.c
-@@ -94,7 +94,7 @@ uvc_v4l2_set_format(struct uvc_video *vi
- break;
- }
-
-- if (format == NULL || format->fcc != fmt->fmt.pix.pixelformat) {
-+ if (i == ARRAY_SIZE(uvc_formats)) {
- printk(KERN_INFO "Unsupported format 0x%08x.\n",
- fmt->fmt.pix.pixelformat);
- return -EINVAL;
diff --git a/usb.current/usb-xhci-remove-buggy-assignment-in-next_trb.patch b/usb.current/usb-xhci-remove-buggy-assignment-in-next_trb.patch
deleted file mode 100644
index e461bf1396f904..00000000000000
--- a/usb.current/usb-xhci-remove-buggy-assignment-in-next_trb.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:39:00 2010
-Date: Mon, 9 Aug 2010 13:56:11 -0700
-From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-To: Greg KH <gregkh@suse.de>
-Cc: linux-usb@vger.kernel.org, John Youn <johnyoun@synopsys.com>,
- stable@kernel.org
-Subject: USB: xhci: Remove buggy assignment in next_trb()
-Message-ID: <20100809205555.GA2344@xanatos>
-Content-Disposition: inline
-
-From: John Youn <John.Youn@synopsys.com>
-
-The code to increment the TRB pointer has a slight ambiguity that could
-lead to a bug on different compilers. The ANSI C specification does not
-specify the precedence of the assignment operator over the postfix
-operator. gcc 4.4 produced the correct code (increment the pointer and
-assign the value), but a MIPS compiler that one of John's clients used
-assigned the old (unincremented) value.
-
-Remove the unnecessary assignment to make all compilers produce the
-correct assembly.
-
-Signed-off-by: John Youn <johnyoun@synopsys.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/xhci-ring.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -131,7 +131,7 @@ static void next_trb(struct xhci_hcd *xh
- *seg = (*seg)->next;
- *trb = ((*seg)->trbs);
- } else {
-- *trb = (*trb)++;
-+ (*trb)++;
- }
- }
-
diff --git a/usb.current/usb-xhci-update-ring-dequeue-pointer-when-process-missed-tds.patch b/usb.current/usb-xhci-update-ring-dequeue-pointer-when-process-missed-tds.patch
deleted file mode 100644
index 3eb90ecb6ea85b..00000000000000
--- a/usb.current/usb-xhci-update-ring-dequeue-pointer-when-process-missed-tds.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From linux-usb-owner@vger.kernel.org Thu Aug 19 10:39:27 2010
-Date: Mon, 9 Aug 2010 13:56:15 -0700
-From: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-To: Greg KH <gregkh@suse.de>
-Cc: linux-usb@vger.kernel.org,
- Sander Eikelenboom <linux@eikelenboom.it>,
- Andiry Xu <andiry.xu@amd.com>
-Subject: USB: xHCI: update ring dequeue pointer when process missed tds
-Message-ID: <20100809205615.GA2515@xanatos>
-Content-Disposition: inline
-
-From: Andiry Xu <andiry.xu@amd.com>
-
-This patch fixes a isoc transfer bug reported by Sander Eikelenboom.
-When ep->skip is set, endpoint ring dequeue pointer should be updated
-when processed every missed td. Although ring dequeue pointer will also
-be updated when ep->skip is clear, leave it intact during missed tds
-processing may cause two issues:
-
-1). If the very next valid transfer following missed tds is a short
-transfer, its actual_length will be miscalculated;
-2). If there are too many missed tds during transfer, new inserted tds
-may found the transfer ring full and urb enqueue fails.
-
-Reported-by: Sander Eikelenboom <linux@eikelenboom.it>
-Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
-Signed-off-by: Andiry Xu <andiry.xu@amd.com>
-Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/xhci-ring.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/drivers/usb/host/xhci-ring.c
-+++ b/drivers/usb/host/xhci-ring.c
-@@ -1551,6 +1551,10 @@ static int process_isoc_td(struct xhci_h
- /* calc actual length */
- if (ep->skip) {
- td->urb->iso_frame_desc[idx].actual_length = 0;
-+ /* Update ring dequeue pointer */
-+ while (ep_ring->dequeue != td->last_trb)
-+ inc_deq(xhci, ep_ring, false);
-+ inc_deq(xhci, ep_ring, false);
- return finish_td(xhci, td, event_trb, event, ep, status, true);
- }
-