aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2010-03-15 15:42:02 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-15 15:42:02 -0700
commit6eeb80e6fc8b2556be10ed0dd7d9104774aa7613 (patch)
treebd0e2e8b7b160dd638381dcfe3fbc4b0c72108fa
parent8cd954e9929a6cd5e42f25d91ce1e3e0a6365084 (diff)
downloadpatches-6eeb80e6fc8b2556be10ed0dd7d9104774aa7613.tar.gz
more bugfixes
-rw-r--r--driver-core.current/driver-core-early-platform-kernel-doc-update.patch107
-rw-r--r--driver-core.current/driver-core-fix-missing-kernel-doc-in-firmware_class.patch31
-rw-r--r--driver-core.current/kobject-documentation-fix-erroneous-example-in-kobject-doc.patch97
-rw-r--r--series22
-rw-r--r--tty.current/hvc_console-fix-race-between-hvc_close-and-hvc_remove.patch169
-rw-r--r--tty.current/tty-cpm_uart-use-resource_size.patch44
-rw-r--r--tty.current/tty_buffer-fix-distinct-type-warning.patch45
-rw-r--r--usb.current/usb-fix-documentation-for-avoid_reset_quirk.patch31
-rw-r--r--usb.current/usb-gadget-fix-compile-error-on-r8a66597-udc.c.patch27
-rw-r--r--usb.current/usb-musb-abstract-out-ulpi_buscontrol-register-reads-writes.patch99
-rw-r--r--usb.current/usb-musb-core-declare-mbase-only-where-it-s-used.patch64
-rw-r--r--usb.current/usb-musb-fix-build-error-introduced-by-isoc-change.patch37
-rw-r--r--usb.current/usb-musb-fix-compile-error-for-omaps-for-musb_hdrc.patch51
-rw-r--r--usb.current/usb-musb-fix-warnings-in-blackfin-regs.patch75
-rw-r--r--usb.current/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch34
-rw-r--r--usb.current/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch36
-rw-r--r--usb.current/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch35
-rw-r--r--usb.current/usb-qcserial-add-new-device-ids.patch56
-rw-r--r--usb.current/usb-serial-ftdi-add-contec-vendor-and-product-id.patch53
-rw-r--r--usb.current/usb-xhci-re-initialize-cmd_completion.patch34
20 files changed, 1146 insertions, 1 deletions
diff --git a/driver-core.current/driver-core-early-platform-kernel-doc-update.patch b/driver-core.current/driver-core-early-platform-kernel-doc-update.patch
new file mode 100644
index 00000000000000..6762ddf693d2d6
--- /dev/null
+++ b/driver-core.current/driver-core-early-platform-kernel-doc-update.patch
@@ -0,0 +1,107 @@
+From magnus.damm@gmail.com Mon Mar 15 15:05:41 2010
+From: Magnus Damm <magnus.damm@gmail.com>
+Date: Wed, 10 Mar 2010 20:50:38 +0900
+Subject: Driver core: Early platform kernel-doc update
+Cc: Magnus Damm <magnus.damm@gmail.com>, gregkh@suse.de, rdunlap@xenotime.net
+Message-ID: <20100310115038.21785.46115.sendpatchset@t400s>
+
+
+From: Magnus Damm <damm@opensource.se>
+
+This patch updates the kernel-doc notation for early
+platform functions.
+
+Signed-off-by: Magnus Damm <damm@opensource.se>
+Acked-by: Randy Dunlap <rdunlap@xenotime.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/platform.c | 27 ++++++++++++++++++++-------
+ 1 file changed, 20 insertions(+), 7 deletions(-)
+
+--- a/drivers/base/platform.c
++++ b/drivers/base/platform.c
+@@ -1052,9 +1052,11 @@ static __initdata LIST_HEAD(early_platfo
+ static __initdata LIST_HEAD(early_platform_device_list);
+
+ /**
+- * early_platform_driver_register
++ * early_platform_driver_register - register early platform driver
+ * @epdrv: early_platform driver structure
+ * @buf: string passed from early_param()
++ *
++ * Helper function for early_platform_init() / early_platform_init_buffer()
+ */
+ int __init early_platform_driver_register(struct early_platform_driver *epdrv,
+ char *buf)
+@@ -1106,9 +1108,12 @@ int __init early_platform_driver_registe
+ }
+
+ /**
+- * early_platform_add_devices - add a numbers of early platform devices
++ * early_platform_add_devices - adds a number of early platform devices
+ * @devs: array of early platform devices to add
+ * @num: number of early platform devices in array
++ *
++ * Used by early architecture code to register early platform devices and
++ * their platform data.
+ */
+ void __init early_platform_add_devices(struct platform_device **devs, int num)
+ {
+@@ -1128,8 +1133,12 @@ void __init early_platform_add_devices(s
+ }
+
+ /**
+- * early_platform_driver_register_all
++ * early_platform_driver_register_all - register early platform drivers
+ * @class_str: string to identify early platform driver class
++ *
++ * Used by architecture code to register all early platform drivers
++ * for a certain class. If omitted then only early platform drivers
++ * with matching kernel command line class parameters will be registered.
+ */
+ void __init early_platform_driver_register_all(char *class_str)
+ {
+@@ -1151,7 +1160,7 @@ void __init early_platform_driver_regist
+ }
+
+ /**
+- * early_platform_match
++ * early_platform_match - find early platform device matching driver
+ * @epdrv: early platform driver structure
+ * @id: id to match against
+ */
+@@ -1169,7 +1178,7 @@ early_platform_match(struct early_platfo
+ }
+
+ /**
+- * early_platform_left
++ * early_platform_left - check if early platform driver has matching devices
+ * @epdrv: early platform driver structure
+ * @id: return true if id or above exists
+ */
+@@ -1187,7 +1196,7 @@ static __init int early_platform_left(s
+ }
+
+ /**
+- * early_platform_driver_probe_id
++ * early_platform_driver_probe_id - probe drivers matching class_str and id
+ * @class_str: string to identify early platform driver class
+ * @id: id to match against
+ * @nr_probe: number of platform devices to successfully probe before exiting
+@@ -1257,10 +1266,14 @@ static int __init early_platform_driver_
+ }
+
+ /**
+- * early_platform_driver_probe
++ * early_platform_driver_probe - probe a class of registered drivers
+ * @class_str: string to identify early platform driver class
+ * @nr_probe: number of platform devices to successfully probe before exiting
+ * @user_only: only probe user specified early platform devices
++ *
++ * Used by architecture code to probe registered early platform drivers
++ * within a certain class. For probe to happen a registered early platform
++ * device matching a registered early platform driver is needed.
+ */
+ int __init early_platform_driver_probe(char *class_str,
+ int nr_probe,
diff --git a/driver-core.current/driver-core-fix-missing-kernel-doc-in-firmware_class.patch b/driver-core.current/driver-core-fix-missing-kernel-doc-in-firmware_class.patch
new file mode 100644
index 00000000000000..61d85d727ebe3a
--- /dev/null
+++ b/driver-core.current/driver-core-fix-missing-kernel-doc-in-firmware_class.patch
@@ -0,0 +1,31 @@
+From randy.dunlap@oracle.com Mon Mar 15 15:06:08 2010
+From: Randy Dunlap <randy.dunlap@oracle.com>
+Date: Wed, 10 Mar 2010 11:47:58 -0800
+Subject: driver-core: fix missing kernel-doc in firmware_class
+Cc: gregkh@suse.de
+Message-ID: <20100310114758.622bfff2.randy.dunlap@oracle.com>
+
+
+From: Randy Dunlap <randy.dunlap@oracle.com>
+
+Fix kernel-doc warning in firmware_class.c:
+
+Warning(drivers/base/firmware_class.c:94): No description found for parameter 'attr'
+
+Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/base/firmware_class.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/base/firmware_class.c
++++ b/drivers/base/firmware_class.c
+@@ -78,6 +78,7 @@ firmware_timeout_show(struct class *clas
+ /**
+ * firmware_timeout_store - set number of seconds to wait for firmware
+ * @class: device class pointer
++ * @attr: device attribute pointer
+ * @buf: buffer to scan for timeout value
+ * @count: number of bytes in @buf
+ *
diff --git a/driver-core.current/kobject-documentation-fix-erroneous-example-in-kobject-doc.patch b/driver-core.current/kobject-documentation-fix-erroneous-example-in-kobject-doc.patch
new file mode 100644
index 00000000000000..e98a80e9befbdc
--- /dev/null
+++ b/driver-core.current/kobject-documentation-fix-erroneous-example-in-kobject-doc.patch
@@ -0,0 +1,97 @@
+From rpjday@crashcourse.ca Mon Mar 15 15:23:26 2010
+From: "Robert P. J. Day" <rpjday@crashcourse.ca>
+Date: Thu, 11 Mar 2010 07:59:09 -0500 (EST)
+Subject: kobject: documentation: Fix erroneous example in kobject doc.
+Cc: Greg KH <greg@kroah.com>
+Message-ID: <alpine.LFD.2.00.1003110755510.5479@localhost>
+
+
+
+Replace uio_mem example for kobjects with uio_map, since the uio_mem
+struct no longer contains a kobject.
+
+Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/kobject.txt | 57 ++++++++++++++++++++++++++++++----------------
+ 1 file changed, 38 insertions(+), 19 deletions(-)
+
+--- a/Documentation/kobject.txt
++++ b/Documentation/kobject.txt
+@@ -59,37 +59,56 @@ nice to have in other objects. The C la
+ direct expression of inheritance, so other techniques - such as structure
+ embedding - must be used.
+
+-So, for example, the UIO code has a structure that defines the memory
+-region associated with a uio device:
++(As an aside, for those familiar with the kernel linked list implementation,
++this is analogous as to how "list_head" structs are rarely useful on
++their own, but are invariably found embedded in the larger objects of
++interest.)
+
+-struct uio_mem {
++So, for example, the UIO code in drivers/uio/uio.c has a structure that
++defines the memory region associated with a uio device:
++
++ struct uio_map {
+ struct kobject kobj;
+- unsigned long addr;
+- unsigned long size;
+- int memtype;
+- void __iomem *internal_addr;
+-};
++ struct uio_mem *mem;
++ };
+
+-If you have a struct uio_mem structure, finding its embedded kobject is
++If you have a struct uio_map structure, finding its embedded kobject is
+ just a matter of using the kobj member. Code that works with kobjects will
+ often have the opposite problem, however: given a struct kobject pointer,
+ what is the pointer to the containing structure? You must avoid tricks
+ (such as assuming that the kobject is at the beginning of the structure)
+ and, instead, use the container_of() macro, found in <linux/kernel.h>:
+
+- container_of(pointer, type, member)
++ container_of(pointer, type, member)
++
++where:
++
++ * "pointer" is the pointer to the embedded kobject,
++ * "type" is the type of the containing structure, and
++ * "member" is the name of the structure field to which "pointer" points.
++
++The return value from container_of() is a pointer to the corresponding
++container type. So, for example, a pointer "kp" to a struct kobject
++embedded *within* a struct uio_map could be converted to a pointer to the
++*containing* uio_map structure with:
++
++ struct uio_map *u_map = container_of(kp, struct uio_map, kobj);
++
++For convenience, programmers often define a simple macro for "back-casting"
++kobject pointers to the containing type. Exactly this happens in the
++earlier drivers/uio/uio.c, as you can see here:
++
++ struct uio_map {
++ struct kobject kobj;
++ struct uio_mem *mem;
++ };
+
+-where pointer is the pointer to the embedded kobject, type is the type of
+-the containing structure, and member is the name of the structure field to
+-which pointer points. The return value from container_of() is a pointer to
+-the given type. So, for example, a pointer "kp" to a struct kobject
+-embedded within a struct uio_mem could be converted to a pointer to the
+-containing uio_mem structure with:
++ #define to_map(map) container_of(map, struct uio_map, kobj)
+
+- struct uio_mem *u_mem = container_of(kp, struct uio_mem, kobj);
++where the macro argument "map" is a pointer to the struct kobject in
++question. That macro is subsequently invoked with:
+
+-Programmers often define a simple macro for "back-casting" kobject pointers
+-to the containing type.
++ struct uio_map *map = to_map(kobj);
+
+
+ Initialization of kobjects
diff --git a/series b/series
index 19844f77de0df5..fabfa0a0870f71 100644
--- a/series
+++ b/series
@@ -13,12 +13,18 @@ driver-core.current/sysfs-initialised-pci-bus-legacy_mem-field-before-use.patch
driver-core.current/sysfs-fix-sysfs-lockdep-warning-in-ipmi-code.patch
driver-core.current/sysfs-fix-sysfs-lockdep-warning-in-infiniband-code.patch
driver-core.current/sysfs-fix-sysfs-lockdep-warning-in-mlx4-code.patch
+driver-core.current/driver-core-early-platform-kernel-doc-update.patch
+driver-core.current/driver-core-fix-missing-kernel-doc-in-firmware_class.patch
+driver-core.current/kobject-documentation-fix-erroneous-example-in-kobject-doc.patch
#################################
# TTY patches for 2.6.34
#################################
tty.current/tty-take-a-256-byte-padding-into-account-when-buffering-below-sub-page-units.patch
tty.current/uartlite-fix-build-on-sparc.patch
+tty.current/hvc_console-fix-race-between-hvc_close-and-hvc_remove.patch
+tty.current/tty_buffer-fix-distinct-type-warning.patch
+tty.current/tty-cpm_uart-use-resource_size.patch
#################################
# USB patches for 2.6.34
@@ -32,7 +38,19 @@ usb.current/usb-option-add-support-for-a-variant-of-dlink-dwm-652-u5.patch
usb.current/usb-ehci-fix-itd-list-order.patch
usb.current/usb-ehci-adjust-ehci_iso_stream-for-changes-in-ehci_qh.patch
usb.current/usb-cdc-acm-fix-stupid-null-pointer-in-resume.patch
-
+usb.current/usb-qcserial-add-new-device-ids.patch
+usb.current/usb-musb-fix-build-error-introduced-by-isoc-change.patch
+usb.current/usb-xhci-re-initialize-cmd_completion.patch
+usb.current/usb-serial-ftdi-add-contec-vendor-and-product-id.patch
+usb.current/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch
+usb.current/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch
+usb.current/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch
+usb.current/usb-fix-documentation-for-avoid_reset_quirk.patch
+usb.current/usb-gadget-fix-compile-error-on-r8a66597-udc.c.patch
+usb.current/usb-musb-fix-compile-error-for-omaps-for-musb_hdrc.patch
+usb.current/usb-musb-abstract-out-ulpi_buscontrol-register-reads-writes.patch
+usb.current/usb-musb-fix-warnings-in-blackfin-regs.patch
+usb.current/usb-musb-core-declare-mbase-only-where-it-s-used.patch
#################################
@@ -66,3 +84,5 @@ driver-core/drivers-base-convert-sema.patch
#######################################
+
+
diff --git a/tty.current/hvc_console-fix-race-between-hvc_close-and-hvc_remove.patch b/tty.current/hvc_console-fix-race-between-hvc_close-and-hvc_remove.patch
new file mode 100644
index 00000000000000..b8bff19cf74ea1
--- /dev/null
+++ b/tty.current/hvc_console-fix-race-between-hvc_close-and-hvc_remove.patch
@@ -0,0 +1,169 @@
+From amit.shah@redhat.com Mon Mar 15 15:09:49 2010
+From: Amit Shah <amit.shah@redhat.com>
+Date: Fri, 12 Mar 2010 11:53:15 +0530
+Subject: hvc_console: Fix race between hvc_close and hvc_remove
+Cc: benh@kernel.crashing.org, greg@kroah.com, torvalds@linux-foundation.org, Amit Shah <amit.shah@redhat.com>, Alan Cox <alan@lxorguk.ukuu.org.uk>, linuxppc-dev@ozlabs.org, Rusty Russell <rusty@rustcorp.com.au>
+Message-ID: <1268374995-20722-1-git-send-email-amit.shah@redhat.com>
+
+
+Alan pointed out a race in the code where hvc_remove is invoked. The
+recent virtio_console work is the first user of hvc_remove().
+
+Alan describes it thus:
+
+The hvc_console assumes that a close and remove call can't occur at the
+same time.
+
+In addition tty_hangup(tty) is problematic as tty_hangup is asynchronous
+itself....
+
+So this can happen
+
+ hvc_close hvc_remove
+ hung up ? - no
+ lock
+ tty = hp->tty
+ unlock
+ lock
+ hp->tty = NULL
+ unlock
+ notify del
+ kref_put the hvc struct
+ close completes
+ tty is destroyed
+ tty_hangup dead tty
+ tty->ops will be NULL
+ NULL->...
+
+This patch adds some tty krefs and also converts to using tty_vhangup().
+
+Reported-by: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Signed-off-by: Amit Shah <amit.shah@redhat.com>
+CC: Alan Cox <alan@lxorguk.ukuu.org.uk>
+CC: linuxppc-dev@ozlabs.org
+CC: Rusty Russell <rusty@rustcorp.com.au>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/hvc_console.c | 31 +++++++++++++++++++++----------
+ 1 file changed, 21 insertions(+), 10 deletions(-)
+
+--- a/drivers/char/hvc_console.c
++++ b/drivers/char/hvc_console.c
+@@ -312,6 +312,7 @@ static int hvc_open(struct tty_struct *t
+ spin_lock_irqsave(&hp->lock, flags);
+ /* Check and then increment for fast path open. */
+ if (hp->count++ > 0) {
++ tty_kref_get(tty);
+ spin_unlock_irqrestore(&hp->lock, flags);
+ hvc_kick();
+ return 0;
+@@ -319,7 +320,7 @@ static int hvc_open(struct tty_struct *t
+
+ tty->driver_data = hp;
+
+- hp->tty = tty;
++ hp->tty = tty_kref_get(tty);
+
+ spin_unlock_irqrestore(&hp->lock, flags);
+
+@@ -336,6 +337,7 @@ static int hvc_open(struct tty_struct *t
+ spin_lock_irqsave(&hp->lock, flags);
+ hp->tty = NULL;
+ spin_unlock_irqrestore(&hp->lock, flags);
++ tty_kref_put(tty);
+ tty->driver_data = NULL;
+ kref_put(&hp->kref, destroy_hvc_struct);
+ printk(KERN_ERR "hvc_open: request_irq failed with rc %d.\n", rc);
+@@ -363,13 +365,18 @@ static void hvc_close(struct tty_struct
+ return;
+
+ hp = tty->driver_data;
++
+ spin_lock_irqsave(&hp->lock, flags);
++ tty_kref_get(tty);
+
+ if (--hp->count == 0) {
+ /* We are done with the tty pointer now. */
+ hp->tty = NULL;
+ spin_unlock_irqrestore(&hp->lock, flags);
+
++ /* Put the ref obtained in hvc_open() */
++ tty_kref_put(tty);
++
+ if (hp->ops->notifier_del)
+ hp->ops->notifier_del(hp, hp->data);
+
+@@ -389,6 +396,7 @@ static void hvc_close(struct tty_struct
+ spin_unlock_irqrestore(&hp->lock, flags);
+ }
+
++ tty_kref_put(tty);
+ kref_put(&hp->kref, destroy_hvc_struct);
+ }
+
+@@ -424,10 +432,11 @@ static void hvc_hangup(struct tty_struct
+ spin_unlock_irqrestore(&hp->lock, flags);
+
+ if (hp->ops->notifier_hangup)
+- hp->ops->notifier_hangup(hp, hp->data);
++ hp->ops->notifier_hangup(hp, hp->data);
+
+ while(temp_open_count) {
+ --temp_open_count;
++ tty_kref_put(tty);
+ kref_put(&hp->kref, destroy_hvc_struct);
+ }
+ }
+@@ -592,7 +601,7 @@ int hvc_poll(struct hvc_struct *hp)
+ }
+
+ /* No tty attached, just skip */
+- tty = hp->tty;
++ tty = tty_kref_get(hp->tty);
+ if (tty == NULL)
+ goto bail;
+
+@@ -672,6 +681,8 @@ int hvc_poll(struct hvc_struct *hp)
+
+ tty_flip_buffer_push(tty);
+ }
++ if (tty)
++ tty_kref_put(tty);
+
+ return poll_mask;
+ }
+@@ -807,7 +818,7 @@ int hvc_remove(struct hvc_struct *hp)
+ struct tty_struct *tty;
+
+ spin_lock_irqsave(&hp->lock, flags);
+- tty = hp->tty;
++ tty = tty_kref_get(hp->tty);
+
+ if (hp->index < MAX_NR_HVC_CONSOLES)
+ vtermnos[hp->index] = -1;
+@@ -819,18 +830,18 @@ int hvc_remove(struct hvc_struct *hp)
+ /*
+ * We 'put' the instance that was grabbed when the kref instance
+ * was initialized using kref_init(). Let the last holder of this
+- * kref cause it to be removed, which will probably be the tty_hangup
++ * kref cause it to be removed, which will probably be the tty_vhangup
+ * below.
+ */
+ kref_put(&hp->kref, destroy_hvc_struct);
+
+ /*
+- * This function call will auto chain call hvc_hangup. The tty should
+- * always be valid at this time unless a simultaneous tty close already
+- * cleaned up the hvc_struct.
++ * This function call will auto chain call hvc_hangup.
+ */
+- if (tty)
+- tty_hangup(tty);
++ if (tty) {
++ tty_vhangup(tty);
++ tty_kref_put(tty);
++ }
+ return 0;
+ }
+ EXPORT_SYMBOL_GPL(hvc_remove);
diff --git a/tty.current/tty-cpm_uart-use-resource_size.patch b/tty.current/tty-cpm_uart-use-resource_size.patch
new file mode 100644
index 00000000000000..abf0d63b3ca398
--- /dev/null
+++ b/tty.current/tty-cpm_uart-use-resource_size.patch
@@ -0,0 +1,44 @@
+From akpm@linux-foundation.org Mon Mar 15 15:22:12 2010
+From: Tobias Klauser <tklauser@distanz.ch>
+Date: Thu, 11 Mar 2010 14:08:18 -0800
+Subject: tty: cpm_uart: use resource_size()
+To: greg@kroah.com
+Cc: akpm@linux-foundation.org, tklauser@distanz.ch, alan@lxorguk.ukuu.org.uk, galak@gate.crashing.org
+Message-ID: <201003112208.o2BM8In9013530@imap1.linux-foundation.org>
+
+
+From: Tobias Klauser <tklauser@distanz.ch>
+
+Use the resource_size function instead of manually calculating the
+resource size. This reduces the chance of introducing off-by-one errors.
+
+Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
+Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
+Cc: Kumar Gala <galak@gate.crashing.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/serial/cpm_uart/cpm_uart_cpm2.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/serial/cpm_uart/cpm_uart_cpm2.c
++++ b/drivers/serial/cpm_uart/cpm_uart_cpm2.c
+@@ -61,7 +61,7 @@ void __iomem *cpm_uart_map_pram(struct u
+ void __iomem *pram;
+ unsigned long offset;
+ struct resource res;
+- unsigned long len;
++ resource_size_t len;
+
+ /* Don't remap parameter RAM if it has already been initialized
+ * during console setup.
+@@ -74,7 +74,7 @@ void __iomem *cpm_uart_map_pram(struct u
+ if (of_address_to_resource(np, 1, &res))
+ return NULL;
+
+- len = 1 + res.end - res.start;
++ len = resource_size(&res);
+ pram = ioremap(res.start, len);
+ if (!pram)
+ return NULL;
diff --git a/tty.current/tty_buffer-fix-distinct-type-warning.patch b/tty.current/tty_buffer-fix-distinct-type-warning.patch
new file mode 100644
index 00000000000000..b889db60b027f5
--- /dev/null
+++ b/tty.current/tty_buffer-fix-distinct-type-warning.patch
@@ -0,0 +1,45 @@
+From anton.fang@gmail.com Mon Mar 15 15:10:40 2010
+From: Fang Wenqi <anton.fang@gmail.com>
+Date: Tue, 9 Mar 2010 18:54:28 +0800
+Subject: tty_buffer: Fix distinct type warning
+To: gregkh@suse.de, linux-kernel@vger.kernel.org
+Cc: anton.fang@gmail.com, antonf@turbolinux.com.cn
+Message-ID: <1268132068-5459-1-git-send-email-antonf@turbolinux.com.cn>
+
+
+CC drivers/char/tty_buffer.o
+drivers/char/tty_buffer.c: In function ‘tty_insert_flip_string_fixed_flag’:
+drivers/char/tty_buffer.c:251: warning: comparison of distinct pointer types lacks a cast
+drivers/char/tty_buffer.c: In function ‘tty_insert_flip_string_flags’:
+drivers/char/tty_buffer.c:288: warning: comparison of distinct pointer types lacks a cast
+
+Fix it by replacing min() with min_t() in tty_insert_flip_string_flags and
+ tty_insert_flip_string_fixed_flag().
+
+Signed-off-by: Fang Wenqi <antonf@turbolinux.com.cn>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/char/tty_buffer.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/char/tty_buffer.c
++++ b/drivers/char/tty_buffer.c
+@@ -248,7 +248,7 @@ int tty_insert_flip_string_fixed_flag(st
+ {
+ int copied = 0;
+ do {
+- int goal = min(size - copied, TTY_BUFFER_PAGE);
++ int goal = min_t(size_t, size - copied, TTY_BUFFER_PAGE);
+ int space = tty_buffer_request_room(tty, goal);
+ struct tty_buffer *tb = tty->buf.tail;
+ /* If there is no space then tb may be NULL */
+@@ -285,7 +285,7 @@ int tty_insert_flip_string_flags(struct
+ {
+ int copied = 0;
+ do {
+- int goal = min(size - copied, TTY_BUFFER_PAGE);
++ int goal = min_t(size_t, size - copied, TTY_BUFFER_PAGE);
+ int space = tty_buffer_request_room(tty, goal);
+ struct tty_buffer *tb = tty->buf.tail;
+ /* If there is no space then tb may be NULL */
diff --git a/usb.current/usb-fix-documentation-for-avoid_reset_quirk.patch b/usb.current/usb-fix-documentation-for-avoid_reset_quirk.patch
new file mode 100644
index 00000000000000..c952bcdef5b1b9
--- /dev/null
+++ b/usb.current/usb-fix-documentation-for-avoid_reset_quirk.patch
@@ -0,0 +1,31 @@
+From oliver@neukum.org Mon Mar 15 15:21:04 2010
+From: Oliver Neukum <oliver@neukum.org>
+Date: Fri, 12 Mar 2010 11:27:21 +0100
+Subject: USB: Fix documentation for avoid_reset_quirk
+To: Greg KH <greg@kroah.com>
+Cc: Josua Dietze <digidietze@draisberghof.de>
+Message-ID: <201003121127.21352.oliver@neukum.org>
+
+
+From: Oliver Neukum <oliver@neukum.org>
+
+The name used in the documentation doesn't match reality.
+
+Signed-off-by: Oliver Neukum <neukum@b1-systems.de>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ Documentation/ABI/testing/sysfs-bus-usb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/Documentation/ABI/testing/sysfs-bus-usb
++++ b/Documentation/ABI/testing/sysfs-bus-usb
+@@ -160,7 +160,7 @@ Description:
+ match the driver to the device. For example:
+ # echo "046d c315" > /sys/bus/usb/drivers/foo/remove_id
+
+-What: /sys/bus/usb/device/.../avoid_reset
++What: /sys/bus/usb/device/.../avoid_reset_quirk
+ Date: December 2009
+ Contact: Oliver Neukum <oliver@neukum.org>
+ Description:
diff --git a/usb.current/usb-gadget-fix-compile-error-on-r8a66597-udc.c.patch b/usb.current/usb-gadget-fix-compile-error-on-r8a66597-udc.c.patch
new file mode 100644
index 00000000000000..49ba6793b30ada
--- /dev/null
+++ b/usb.current/usb-gadget-fix-compile-error-on-r8a66597-udc.c.patch
@@ -0,0 +1,27 @@
+From grant.likely@secretlab.ca Mon Mar 15 15:22:35 2010
+From: Grant Likely <grant.likely@secretlab.ca>
+Date: Thu, 11 Mar 2010 15:06:54 -0700
+Subject: usb/gadget: fix compile error on r8a66597-udc.c
+To: gregkh@suse.de, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
+Message-ID: <20100311220631.19163.98586.stgit@angua>
+
+
+C file uses IS_ERR and PTR_ERR, but doesn't include <linux/err.h>
+
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+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
+@@ -23,6 +23,7 @@
+ #include <linux/module.h>
+ #include <linux/interrupt.h>
+ #include <linux/delay.h>
++#include <linux/err.h>
+ #include <linux/io.h>
+ #include <linux/platform_device.h>
+ #include <linux/clk.h>
diff --git a/usb.current/usb-musb-abstract-out-ulpi_buscontrol-register-reads-writes.patch b/usb.current/usb-musb-abstract-out-ulpi_buscontrol-register-reads-writes.patch
new file mode 100644
index 00000000000000..2dc688949356fa
--- /dev/null
+++ b/usb.current/usb-musb-abstract-out-ulpi_buscontrol-register-reads-writes.patch
@@ -0,0 +1,99 @@
+From felipe.balbi@nokia.com Mon Mar 15 15:28:10 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Fri, 12 Mar 2010 10:27:21 +0200
+Subject: usb: musb: abstract out ULPI_BUSCONTROL register reads/writes
+To: Greg KH <greg@kroah.com>
+Cc: Mike Frysinger <vapier@gentoo.org>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1268382444-7340-3-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Mike Frysinger <vapier@gentoo.org>
+
+The USB PHY on current Blackfin processors is a UTMI+ level 2 PHY.
+However, it has no ULPI support - so there are no registers at all.
+That means accesses to ULPI_BUSCONTROL have to be abstracted away
+like other MUSB registers.
+
+This fixes building for Blackfin parts again.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 5 ++---
+ drivers/usb/musb/musb_regs.h | 19 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 3 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -2007,7 +2007,6 @@ bad_config:
+ /* host side needs more setup */
+ if (is_host_enabled(musb)) {
+ struct usb_hcd *hcd = musb_to_hcd(musb);
+- u8 busctl;
+
+ otg_set_host(musb->xceiv, &hcd->self);
+
+@@ -2018,9 +2017,9 @@ bad_config:
+
+ /* program PHY to use external vBus if required */
+ if (plat->extvbus) {
+- busctl = musb_readb(musb->mregs, MUSB_ULPI_BUSCONTROL);
++ u8 busctl = musb_read_ulpi_buscontrol(musb->mregs);
+ busctl |= MUSB_ULPI_USE_EXTVBUS;
+- musb_writeb(musb->mregs, MUSB_ULPI_BUSCONTROL, busctl);
++ musb_write_ulpi_buscontrol(musb->mregs, busctl);
+ }
+ }
+
+--- a/drivers/usb/musb/musb_regs.h
++++ b/drivers/usb/musb/musb_regs.h
+@@ -326,6 +326,11 @@ static inline void musb_write_rxfifoadd
+ musb_writew(mbase, MUSB_RXFIFOADD, c_off);
+ }
+
++static inline void musb_write_ulpi_buscontrol(void __iomem *mbase, u8 val)
++{
++ musb_writeb(mbase, MUSB_ULPI_BUSCONTROL, val);
++}
++
+ static inline u8 musb_read_txfifosz(void __iomem *mbase)
+ {
+ return musb_readb(mbase, MUSB_TXFIFOSZ);
+@@ -346,6 +351,11 @@ static inline u16 musb_read_rxfifoadd(v
+ return musb_readw(mbase, MUSB_RXFIFOADD);
+ }
+
++static inline u8 musb_read_ulpi_buscontrol(void __iomem *mbase)
++{
++ return musb_readb(mbase, MUSB_ULPI_BUSCONTROL);
++}
++
+ static inline u8 musb_read_configdata(void __iomem *mbase)
+ {
+ musb_writeb(mbase, MUSB_INDEX, 0);
+@@ -510,6 +520,10 @@ static inline void musb_write_rxfifoadd
+ {
+ }
+
++static inline void musb_write_ulpi_buscontrol(void __iomem *mbase, u8 val)
++{
++}
++
+ static inline u8 musb_read_txfifosz(void __iomem *mbase)
+ {
+ }
+@@ -526,6 +540,11 @@ static inline u16 musb_read_rxfifoadd(v
+ {
+ }
+
++static inline u8 musb_read_ulpi_buscontrol(void __iomem *mbase)
++{
++ return 0;
++}
++
+ static inline u8 musb_read_configdata(void __iomem *mbase)
+ {
+ return 0;
diff --git a/usb.current/usb-musb-core-declare-mbase-only-where-it-s-used.patch b/usb.current/usb-musb-core-declare-mbase-only-where-it-s-used.patch
new file mode 100644
index 00000000000000..5c88ff6cb5f3c6
--- /dev/null
+++ b/usb.current/usb-musb-core-declare-mbase-only-where-it-s-used.patch
@@ -0,0 +1,64 @@
+From felipe.balbi@nokia.com Mon Mar 15 15:29:06 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Fri, 12 Mar 2010 10:27:24 +0200
+Subject: usb: musb: core: declare mbase only where it's used
+To: Greg KH <greg@kroah.com>
+Cc: Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1268382444-7340-6-git-send-email-felipe.balbi@nokia.com>
+
+
+... and avoid a compilation if we disable host side
+of musb.
+
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -379,7 +379,6 @@ static irqreturn_t musb_stage0_irq(struc
+ u8 devctl, u8 power)
+ {
+ irqreturn_t handled = IRQ_NONE;
+- void __iomem *mbase = musb->mregs;
+
+ DBG(3, "<== Power=%02x, DevCtl=%02x, int_usb=0x%x\n", power, devctl,
+ int_usb);
+@@ -394,6 +393,8 @@ static irqreturn_t musb_stage0_irq(struc
+
+ if (devctl & MUSB_DEVCTL_HM) {
+ #ifdef CONFIG_USB_MUSB_HDRC_HCD
++ void __iomem *mbase = musb->mregs;
++
+ switch (musb->xceiv->state) {
+ case OTG_STATE_A_SUSPEND:
+ /* remote wakeup? later, GetPortStatus
+@@ -471,6 +472,8 @@ static irqreturn_t musb_stage0_irq(struc
+ #ifdef CONFIG_USB_MUSB_HDRC_HCD
+ /* see manual for the order of the tests */
+ if (int_usb & MUSB_INTR_SESSREQ) {
++ void __iomem *mbase = musb->mregs;
++
+ DBG(1, "SESSION_REQUEST (%s)\n", otg_state_string(musb));
+
+ /* IRQ arrives from ID pin sense or (later, if VBUS power
+@@ -519,6 +522,8 @@ static irqreturn_t musb_stage0_irq(struc
+ case OTG_STATE_A_WAIT_BCON:
+ case OTG_STATE_A_WAIT_VRISE:
+ if (musb->vbuserr_retry) {
++ void __iomem *mbase = musb->mregs;
++
+ musb->vbuserr_retry--;
+ ignore = 1;
+ devctl |= MUSB_DEVCTL_SESSION;
+@@ -622,6 +627,7 @@ static irqreturn_t musb_stage0_irq(struc
+
+ if (int_usb & MUSB_INTR_CONNECT) {
+ struct usb_hcd *hcd = musb_to_hcd(musb);
++ void __iomem *mbase = musb->mregs;
+
+ handled = IRQ_HANDLED;
+ musb->is_active = 1;
diff --git a/usb.current/usb-musb-fix-build-error-introduced-by-isoc-change.patch b/usb.current/usb-musb-fix-build-error-introduced-by-isoc-change.patch
new file mode 100644
index 00000000000000..5f9ffec10c2083
--- /dev/null
+++ b/usb.current/usb-musb-fix-build-error-introduced-by-isoc-change.patch
@@ -0,0 +1,37 @@
+From vapier@gentoo.org Mon Mar 15 15:09:13 2010
+From: Sonic Zhang <sonic.zhang@analog.com>
+Date: Mon, 8 Mar 2010 11:26:01 -0500
+Subject: USB: musb: fix build error introduced by isoc change
+To: linux-usb@vger.kernel.org, Felipe Balbi <felipe.balbi@nokia.com>
+Cc: stable@kernel.org, stable-review@kernel.org, linux-kernel@vger.kernel.org, Sonic Zhang <sonic.zhang@analog.com>
+Message-ID: <1268065561-24350-1-git-send-email-vapier@gentoo.org>
+
+
+From: Sonic Zhang <sonic.zhang@analog.com>
+
+The recent commit "usb: musb: Fix for isochronous IN transfer" (f82a689fa)
+seems to have been against an older kernel version. It uses the old style
+naming of variables. Unfortunately, this breaks building for most MUSB
+users out there since "bDesiredMode" has been renamed to "desired_mode".
+
+Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Acked-by: Felipe Balbi <felipe.balbi@nokia.com>
+Acked-by: Anand Gadiyar <gadiyar@ti.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_host.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -1689,7 +1689,7 @@ void musb_host_rx(struct musb *musb, u8
+ dma->desired_mode = 1;
+ if (rx_count < hw_ep->max_packet_sz_rx) {
+ length = rx_count;
+- dma->bDesiredMode = 0;
++ dma->desired_mode = 0;
+ } else {
+ length = urb->transfer_buffer_length;
+ }
diff --git a/usb.current/usb-musb-fix-compile-error-for-omaps-for-musb_hdrc.patch b/usb.current/usb-musb-fix-compile-error-for-omaps-for-musb_hdrc.patch
new file mode 100644
index 00000000000000..d473bcfea0bb3c
--- /dev/null
+++ b/usb.current/usb-musb-fix-compile-error-for-omaps-for-musb_hdrc.patch
@@ -0,0 +1,51 @@
+From felipe.balbi@nokia.com Mon Mar 15 15:26:51 2010
+From: Felipe Balbi <felipe.balbi@nokia.com>
+Date: Fri, 12 Mar 2010 10:35:20 +0200
+Subject: usb: musb: Fix compile error for omaps for musb_hdrc
+To: Greg KH <greg@kroah.com>
+Cc: Tony Lindgren <tony@atomide.com>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1268382920-10786-1-git-send-email-felipe.balbi@nokia.com>
+
+
+From: Tony Lindgren <tony@atomide.com>
+
+CONFIG_ARCH_OMAP34XX is now CONFIG_ARCH_OMAP3.
+
+But since drivers/usb/musb/omap2430.c use CONFIG_PM for these
+registers and functions, do the same for the header.
+
+Otherwise we get the following for most omap3 defconfigs:
+
+drivers/usb/musb/omap2430.c:261: error: expected identifier or '(' before 'do'
+drivers/usb/musb/omap2430.c:261: error: expected identifier or '(' before 'while'
+drivers/usb/musb/omap2430.c:268: error: expected identifier or '(' before 'do'
+drivers/usb/musb/omap2430.c:268: error: expected identifier or '(' before 'while'
+
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_core.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/musb/musb_core.h
++++ b/drivers/usb/musb/musb_core.h
+@@ -469,7 +469,7 @@ struct musb_csr_regs {
+
+ struct musb_context_registers {
+
+-#if defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP2430)
++#ifdef CONFIG_PM
+ u32 otg_sysconfig, otg_forcestandby;
+ #endif
+ u8 power;
+@@ -483,7 +483,7 @@ struct musb_context_registers {
+ struct musb_csr_regs index_regs[MUSB_C_NUM_EPS];
+ };
+
+-#if defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP2430)
++#ifdef CONFIG_PM
+ extern void musb_platform_save_context(struct musb *musb,
+ struct musb_context_registers *musb_context);
+ extern void musb_platform_restore_context(struct musb *musb,
diff --git a/usb.current/usb-musb-fix-warnings-in-blackfin-regs.patch b/usb.current/usb-musb-fix-warnings-in-blackfin-regs.patch
new file mode 100644
index 00000000000000..2f82a94c04a298
--- /dev/null
+++ b/usb.current/usb-musb-fix-warnings-in-blackfin-regs.patch
@@ -0,0 +1,75 @@
+From felipe.balbi@nokia.com Mon Mar 15 15:28:47 2010
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 12 Mar 2010 10:27:23 +0200
+Subject: USB: musb: fix warnings in Blackfin regs
+To: Greg KH <greg@kroah.com>
+Cc: Mike Frysinger <vapier@gentoo.org>, Felipe Balbi <felipe.balbi@nokia.com>
+Message-ID: <1268382444-7340-5-git-send-email-felipe.balbi@nokia.com>
+
+From: Mike Frysinger <vapier@gentoo.org>
+
+The recent commit "usb: musb: Add context save and restore support" added
+some stubs for the Blackfin code so things would compile, but it also
+added a bunch of warnings due to missing return statements.
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+Signed-off-by: Felipe Balbi <felipe.balbi@nokia.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/musb/musb_regs.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/usb/musb/musb_regs.h
++++ b/drivers/usb/musb/musb_regs.h
+@@ -526,18 +526,22 @@ static inline void musb_write_ulpi_busco
+
+ static inline u8 musb_read_txfifosz(void __iomem *mbase)
+ {
++ return 0;
+ }
+
+ static inline u16 musb_read_txfifoadd(void __iomem *mbase)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_rxfifosz(void __iomem *mbase)
+ {
++ return 0;
+ }
+
+ static inline u16 musb_read_rxfifoadd(void __iomem *mbase)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_ulpi_buscontrol(void __iomem *mbase)
+@@ -596,22 +600,27 @@ static inline void musb_write_txhubport
+
+ static inline u8 musb_read_rxfunaddr(void __iomem *mbase, u8 epnum)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_rxhubaddr(void __iomem *mbase, u8 epnum)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_rxhubport(void __iomem *mbase, u8 epnum)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_txfunaddr(void __iomem *mbase, u8 epnum)
+ {
++ return 0;
+ }
+
+ static inline u8 musb_read_txhubaddr(void __iomem *mbase, u8 epnum)
+ {
++ return 0;
+ }
+
+ static inline void musb_read_txhubport(void __iomem *mbase, u8 epnum)
diff --git a/usb.current/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch b/usb.current/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch
new file mode 100644
index 00000000000000..858ad9f2d23fe5
--- /dev/null
+++ b/usb.current/usb-option-add-support-for-a-new-cmotech-device-to-usb-serial-option.patch
@@ -0,0 +1,34 @@
+From nathaniel@natemccallum.com Mon Mar 15 15:20:26 2010
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:09:26 -0500
+Subject: USB: option: add support for a new CMOTECH device to usb/serial/option
+Cc: gregkh@suse.de, smurf@smurf.noris.de, gernot@hillier.de, r0bertz@gentoo.org, stern@rowland.harvard.edu, Nathaniel McCallum <nathaniel@natemccallum.com>
+Message-ID: <1268330966-6862-3-git-send-email-nathaniel@natemccallum.com>
+
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -289,6 +289,7 @@ static int option_resume(struct usb_ser
+ #define QUALCOMM_VENDOR_ID 0x05C6
+
+ #define CMOTECH_VENDOR_ID 0x16d8
++#define CMOTECH_PRODUCT_6008 0x6008
+ #define CMOTECH_PRODUCT_6280 0x6280
+
+ #define TELIT_VENDOR_ID 0x1bc7
+@@ -550,6 +551,7 @@ static const struct usb_device_id option
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */
++ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/usb.current/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch b/usb.current/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch
new file mode 100644
index 00000000000000..24587519ea647f
--- /dev/null
+++ b/usb.current/usb-option-fix-incorrect-manufacturer-name-in-usb-serial-option-maxon-cmotech.patch
@@ -0,0 +1,36 @@
+From nathaniel@natemccallum.com Mon Mar 15 15:19:36 2010
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:09:24 -0500
+Subject: USB: option: fix incorrect manufacturer name in usb/serial/option: MAXON->CMOTECH
+Cc: linux-kernel@vger.kernel.org, gregkh@suse.de, smurf@smurf.noris.de, gernot@hillier.de, r0bertz@gentoo.org, stern@rowland.harvard.edu, Nathaniel McCallum <nathaniel@natemccallum.com>
+Message-ID: <1268330966-6862-1-git-send-email-nathaniel@natemccallum.com>
+
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -288,7 +288,7 @@ static int option_resume(struct usb_ser
+
+ #define QUALCOMM_VENDOR_ID 0x05C6
+
+-#define MAXON_VENDOR_ID 0x16d8
++#define CMOTECH_VENDOR_ID 0x16d8
+
+ #define TELIT_VENDOR_ID 0x1bc7
+ #define TELIT_PRODUCT_UC864E 0x1003
+@@ -548,7 +548,7 @@ static const struct usb_device_id option
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+- { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
++ { USB_DEVICE(CMOTECH_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/usb.current/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch b/usb.current/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch
new file mode 100644
index 00000000000000..883f3eac4acda3
--- /dev/null
+++ b/usb.current/usb-option-move-hardcoded-pid-to-a-macro-in-usb-serial-option.patch
@@ -0,0 +1,35 @@
+From nathaniel@natemccallum.com Mon Mar 15 15:20:03 2010
+From: Nathaniel McCallum <nathaniel@natemccallum.com>
+Date: Thu, 11 Mar 2010 13:01:17 -0500
+Subject: USB: option: move hardcoded PID to a macro in usb/serial/option
+Cc: gregkh@suse.de, smurf@smurf.noris.de, gernot@hillier.de, r0bertz@gentoo.org, stern@rowland.harvard.edu, Nathaniel McCallum <nathaniel@natemccallum.com>
+Message-ID: <1268330478-6689-2-git-send-email-nathaniel@natemccallum.com>
+
+
+Signed-off-by: Nathaniel McCallum <nathaniel@natemccallum.com>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -289,6 +289,7 @@ static int option_resume(struct usb_ser
+ #define QUALCOMM_VENDOR_ID 0x05C6
+
+ #define CMOTECH_VENDOR_ID 0x16d8
++#define CMOTECH_PRODUCT_6280 0x6280
+
+ #define TELIT_VENDOR_ID 0x1bc7
+ #define TELIT_PRODUCT_UC864E 0x1003
+@@ -548,7 +549,7 @@ static const struct usb_device_id option
+ { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) },
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6000)}, /* ZTE AC8700 */
+ { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */
+- { USB_DEVICE(CMOTECH_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
++ { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) },
+ { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_MF622, 0xff, 0xff, 0xff) }, /* ZTE WCDMA products */
diff --git a/usb.current/usb-qcserial-add-new-device-ids.patch b/usb.current/usb-qcserial-add-new-device-ids.patch
new file mode 100644
index 00000000000000..39e3a39a0f23f5
--- /dev/null
+++ b/usb.current/usb-qcserial-add-new-device-ids.patch
@@ -0,0 +1,56 @@
+From br@blankpage.ch Mon Mar 15 15:07:59 2010
+From: Bernhard Rosenkraenzer <br@blankpage.ch>
+Date: Wed, 10 Mar 2010 12:36:43 +0100
+Subject: USB: qcserial: add new device ids
+To: Greg KH <gregkh@suse.de>
+Message-ID: <1ad0620b49866cf33763372aca56efdb@blankpage.ch>
+
+This patch adds various USB device IDs for Gobi 2000 devices, as found in the
+drivers available at https://www.codeaurora.org/wiki/GOBI_Releases
+
+Signed-off-by: Bernhard Rosenkraenzer <bero@arklinux.org>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/qcserial.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+--- a/drivers/usb/serial/qcserial.c
++++ b/drivers/usb/serial/qcserial.c
+@@ -47,6 +47,35 @@ static const struct usb_device_id id_tab
+ {USB_DEVICE(0x05c6, 0x9221)}, /* Generic Gobi QDL device */
+ {USB_DEVICE(0x05c6, 0x9231)}, /* Generic Gobi QDL device */
+ {USB_DEVICE(0x1f45, 0x0001)}, /* Unknown Gobi QDL device */
++ {USB_DEVICE(0x413c, 0x8185)}, /* Dell Gobi 2000 QDL device (N0218, VU936) */
++ {USB_DEVICE(0x413c, 0x8186)}, /* Dell Gobi 2000 Modem device (N0218, VU936) */
++ {USB_DEVICE(0x05c6, 0x9224)}, /* Sony Gobi 2000 QDL device (N0279, VU730) */
++ {USB_DEVICE(0x05c6, 0x9225)}, /* Sony Gobi 2000 Modem device (N0279, VU730) */
++ {USB_DEVICE(0x05c6, 0x9244)}, /* Samsung Gobi 2000 QDL device (VL176) */
++ {USB_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
++ {USB_DEVICE(0x03f0, 0x241d)}, /* HP Gobi 2000 QDL device (VP412) */
++ {USB_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
++ {USB_DEVICE(0x05c6, 0x9214)}, /* Acer Gobi 2000 QDL device (VP413) */
++ {USB_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
++ {USB_DEVICE(0x05c6, 0x9264)}, /* Asus Gobi 2000 QDL device (VR305) */
++ {USB_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
++ {USB_DEVICE(0x05c6, 0x9234)}, /* Top Global Gobi 2000 QDL device (VR306) */
++ {USB_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
++ {USB_DEVICE(0x05c6, 0x9274)}, /* iRex Technologies Gobi 2000 QDL device (VR307) */
++ {USB_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */
++ {USB_DEVICE(0x1199, 0x9000)}, /* Sierra Wireless Gobi 2000 QDL device (VT773) */
++ {USB_DEVICE(0x1199, 0x9001)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9002)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9003)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9004)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9005)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9006)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9007)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9008)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x9009)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x1199, 0x900a)}, /* Sierra Wireless Gobi 2000 Modem device (VT773) */
++ {USB_DEVICE(0x16d8, 0x8001)}, /* CMDTech Gobi 2000 QDL device (VU922) */
++ {USB_DEVICE(0x16d8, 0x8002)}, /* CMDTech Gobi 2000 Modem device (VU922) */
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, id_table);
diff --git a/usb.current/usb-serial-ftdi-add-contec-vendor-and-product-id.patch b/usb.current/usb-serial-ftdi-add-contec-vendor-and-product-id.patch
new file mode 100644
index 00000000000000..71102966dcff5c
--- /dev/null
+++ b/usb.current/usb-serial-ftdi-add-contec-vendor-and-product-id.patch
@@ -0,0 +1,53 @@
+From akpm@linux-foundation.org Mon Mar 15 15:14:50 2010
+From: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+Date: Thu, 11 Mar 2010 14:10:58 -0800
+Subject: USB: serial: ftdi: add CONTEC vendor and product id
+To: greg@kroah.com
+Cc: linux-usb@vger.kernel.org, akpm@linux-foundation.org, daniel.sangorrin@gmail.com, andi@lisas.de, gregkh@suse.de, liboska@uochb.cas.cz
+Message-ID: <201003112210.o2BMAw1a013719@imap1.linux-foundation.org>
+
+
+From: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+
+This is a patch to ftdi_sio_ids.h and ftdi_sio.c that adds identifiers for
+CONTEC USB serial converter. I tested it with the device COM-1(USB)H
+
+[akpm@linux-foundation.org: keep the VIDs sorted a bit]
+Signed-off-by: Daniel Sangorrin <daniel.sangorrin@gmail.com>
+Cc: Andreas Mohr <andi@lisas.de>
+Cc: Radek Liboska <liboska@uochb.cas.cz>
+Cc: stable <stable@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/ftdi_sio.c | 1 +
+ drivers/usb/serial/ftdi_sio_ids.h | 7 +++++++
+ 2 files changed, 8 insertions(+)
+
+--- a/drivers/usb/serial/ftdi_sio.c
++++ b/drivers/usb/serial/ftdi_sio.c
+@@ -658,6 +658,7 @@ static struct usb_device_id id_table_com
+ { USB_DEVICE(EVOLUTION_VID, EVOLUTION_ER1_PID) },
+ { USB_DEVICE(EVOLUTION_VID, EVO_HYBRID_PID) },
+ { USB_DEVICE(EVOLUTION_VID, EVO_RCM4_PID) },
++ { USB_DEVICE(CONTEC_VID, CONTEC_COM1USBH_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_ARTEMIS_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16_PID) },
+ { USB_DEVICE(FTDI_VID, FTDI_ATIK_ATK16C_PID) },
+--- a/drivers/usb/serial/ftdi_sio_ids.h
++++ b/drivers/usb/serial/ftdi_sio_ids.h
+@@ -501,6 +501,13 @@
+ #define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */
+
+ /*
++ * Contec products (http://www.contec.com)
++ * Submitted by Daniel Sangorrin
++ */
++#define CONTEC_VID 0x06CE /* Vendor ID */
++#define CONTEC_COM1USBH_PID 0x8311 /* COM-1(USB)H */
++
++/*
+ * Definitions for B&B Electronics products.
+ */
+ #define BANDB_VID 0x0856 /* B&B Electronics Vendor ID */
diff --git a/usb.current/usb-xhci-re-initialize-cmd_completion.patch b/usb.current/usb-xhci-re-initialize-cmd_completion.patch
new file mode 100644
index 00000000000000..37e7417053b797
--- /dev/null
+++ b/usb.current/usb-xhci-re-initialize-cmd_completion.patch
@@ -0,0 +1,34 @@
+From andiry.xu@amd.com Mon Mar 15 15:13:38 2010
+From: Andiry Xu <andiry.xu@amd.com>
+Date: Fri, 12 Mar 2010 17:10:04 +0800
+Subject: USB: xHCI: re-initialize cmd_completion
+To: Sarah Sharp <sarah.a.sharp@linux.intel.com>
+Cc: Greg KH <gregkh@suse.de>, linux-usb@vger.kernel.org, "Yang, Libin" <Libin.Yang@amd.com>
+Message-ID: <1268385004.2633.4.camel@brienza-desktop>
+
+From: Andiry Xu <andiry.xu@amd.com>
+
+When a signal interrupts a Configure Endpoint command, the cmd_completion used
+in xhci_configure_endpoint() is not re-initialized and the
+wait_for_completion_interruptible_timeout() will return failure. Initialize
+cmd_completion in xhci_configure_endpoint().
+
+Signed-off-by: Andiry Xu <andiry.xu@amd.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-hcd.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/host/xhci-hcd.c
++++ b/drivers/usb/host/xhci-hcd.c
+@@ -1173,6 +1173,7 @@ static int xhci_configure_endpoint(struc
+ cmd_completion = &virt_dev->cmd_completion;
+ cmd_status = &virt_dev->cmd_status;
+ }
++ init_completion(cmd_completion);
+
+ if (!ctx_change)
+ ret = xhci_queue_configure_endpoint(xhci, in_ctx->dma,