aboutsummaryrefslogtreecommitdiffstats
diff options
-rw-r--r--driver/allow-legacy_ptys-to-be-set-to-0.patch30
-rw-r--r--driver/create-sys-...-power-when-config_pm-is-set.patch147
-rw-r--r--driver/kobject-two-typo-fixes.patch32
-rw-r--r--driver/kset-convert-pci-hotplug-to-use-kset_create_and_register.patch4
-rw-r--r--driver/sysfs-fix-off-by-one-error-in-fill_read_buffer.patch57
-rw-r--r--driver/uio-add-uio-documentation-target-to-docbook-makefile.patch32
-rw-r--r--driver/uio-fix-up-the-uio-documentation.patch151
-rw-r--r--pci/pci-aer-fix-kernel-doc-mistakes.patch138
-rw-r--r--pci/pci-drivers-pci-pci-sysfs.c-add-missing-pci_dev_put.patch57
-rw-r--r--pci/pci-hotplug-kernel-doc-fixes.patch1105
-rw-r--r--pci/pci-pcie-portdriver-initialize-returned-value.patch33
-rw-r--r--series35
-rw-r--r--usb/usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch51
-rw-r--r--usb/usb-fix-directory-references-in-usb-readme.patch38
-rw-r--r--usb/usb-fix-locks-and-urb-status-in-adutux.patch553
-rw-r--r--usb/usb-fix-priority-mistakes-in-drivers-usb-core-hub.c.patch29
-rw-r--r--usb/usb-fix-signr-comment-in-usbdevice_fs.h.patch33
-rw-r--r--usb/usb-fix-up-ehci-startup-synchronization.patch48
-rw-r--r--usb/usb-fix-usb_ohci_hcd_ssb-dependencies.patch33
-rw-r--r--usb/usb-fix-usbled-disconnect-read-race-2.patch39
-rw-r--r--usb/usb-free-memory-when-writing-fails-in-usb-serial-mos7840.c.patch28
-rw-r--r--usb/usb-hcd-avoid-duplicate-local_irq_disable.patch51
-rw-r--r--usb/usb-keep-track-of-whether-interface-sysfs-files-exist.patch104
-rw-r--r--usb/usb-mailing-lists-have-changed.patch325
-rw-r--r--usb/usb-make-the-microtek-driver-and-hal-cooperate.patch31
-rw-r--r--usb/usb-omap_udc-build-fix.patch46
-rw-r--r--usb/usb-pl2303-add-support-for-corega-cg-usbrs232r.patch40
-rw-r--r--usb/usb-power-management-documenation-update.patch39
-rw-r--r--usb/usb-remove-usb-hub-entry-from-maintainers.patch38
-rw-r--r--usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch37
-rw-r--r--usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch34
-rw-r--r--usb/usb-s3c2410-gadget-header-move-fixups.patch35
-rw-r--r--usb/usb-sierra-new-product-id.patch37
-rw-r--r--usb/usb-storage-always-set-the-allow_restart-flag.patch37
-rw-r--r--usb/usb-uevent-environment-key-fix.patch132
-rw-r--r--usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch41
-rw-r--r--usb/usbserial-fix-inconsistent-lock-state.patch48
-rw-r--r--version2
38 files changed, 3 insertions, 3747 deletions
diff --git a/driver/allow-legacy_ptys-to-be-set-to-0.patch b/driver/allow-legacy_ptys-to-be-set-to-0.patch
deleted file mode 100644
index cb6944c1ab9cd4..00000000000000
--- a/driver/allow-legacy_ptys-to-be-set-to-0.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From kay.sievers@vrfy.org Wed Nov 21 21:55:26 2007
-From: Kay Sievers <kay.sievers@vrfy.org>
-Date: Wed, 14 Nov 2007 23:39:42 +0100
-Subject: allow LEGACY_PTYS to be set to 0
-Message-ID: <1195079982.2731.2.camel@lov.site>
-
-The count of legacy pty devices can be set by a kernel commandline
-parameter. For the distro kernel, we would like to disable all pty's
-by default, but keep the opportunity to request devices on the kernel
-commandline.
-
-Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
-Acked-by: Jean Delvare <jdelvare@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/char/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/char/Kconfig
-+++ b/drivers/char/Kconfig
-@@ -457,7 +457,7 @@ config LEGACY_PTYS
- config LEGACY_PTY_COUNT
- int "Maximum number of legacy PTY in use"
- depends on LEGACY_PTYS
-- range 1 256
-+ range 0 256
- default "256"
- ---help---
- The maximum number of legacy PTYs that can be used at any one time.
diff --git a/driver/create-sys-...-power-when-config_pm-is-set.patch b/driver/create-sys-...-power-when-config_pm-is-set.patch
deleted file mode 100644
index ef0695bbd7183f..00000000000000
--- a/driver/create-sys-...-power-when-config_pm-is-set.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From akpm@linux-foundation.org Wed Nov 21 14:56:13 2007
-From: Daniel Drake <dsd@gentoo.org>
-Date: Wed, 21 Nov 2007 14:55:18 -0800
-Subject: create /sys/.../power when CONFIG_PM is set
-To: greg@kroah.com
-Cc: kay.sievers@vrfy.org, akpm@linux-foundation.org, dsd@gentoo.org, rjw@sisk.pl, stable@kernel.org, stern@rowland.harvard.edu
-Message-ID: <200711212255.lALMtIeA013304@imap1.linux-foundation.org>
-
-
-From: Daniel Drake <dsd@gentoo.org>
-
-The CONFIG_SUSPEND changes in 2.6.23 caused a regression under certain
-configuration conditions (SUSPEND=n, USB_AUTOSUSPEND=y) where all USB
-device attributes in sysfs (idVendor, idProduct, ...) silently disappeared,
-causing udev breakage and more.
-
-The cause of this is that the /sys/.../power subdirectory is now only
-created when CONFIG_PM_SLEEP is set, however, it should be created whenever
-CONFIG_PM is set to handle the above situation. The following patch fixes
-the regression.
-
-Signed-off-by: Daniel Drake <dsd@gentoo.org>
-Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
-Cc: Alan Stern <stern@rowland.harvard.edu>
-Cc: Kay Sievers <kay.sievers@vrfy.org>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/base/core.c | 4 +++-
- drivers/base/power/Makefile | 3 ++-
- drivers/base/power/main.c | 8 +-------
- drivers/base/power/power.h | 28 +++++++++++++++++++++-------
- 4 files changed, 27 insertions(+), 16 deletions(-)
-
---- a/drivers/base/core.c
-+++ b/drivers/base/core.c
-@@ -770,9 +770,10 @@ int device_add(struct device *dev)
- error = device_add_attrs(dev);
- if (error)
- goto AttrsError;
-- error = device_pm_add(dev);
-+ error = dpm_sysfs_add(dev);
- if (error)
- goto PMError;
-+ device_pm_add(dev);
- error = bus_add_device(dev);
- if (error)
- goto BusError;
-@@ -797,6 +798,7 @@ int device_add(struct device *dev)
- return error;
- BusError:
- device_pm_remove(dev);
-+ dpm_sysfs_remove(dev);
- PMError:
- if (dev->bus)
- blocking_notifier_call_chain(&dev->bus->bus_notifier,
---- a/drivers/base/power/Makefile
-+++ b/drivers/base/power/Makefile
-@@ -1,5 +1,6 @@
- obj-y := shutdown.o
--obj-$(CONFIG_PM_SLEEP) += main.o sysfs.o
-+obj-$(CONFIG_PM) += sysfs.o
-+obj-$(CONFIG_PM_SLEEP) += main.o
- obj-$(CONFIG_PM_TRACE) += trace.o
-
- ifeq ($(CONFIG_DEBUG_DRIVER),y)
---- a/drivers/base/power/main.c
-+++ b/drivers/base/power/main.c
-@@ -38,20 +38,14 @@ static DEFINE_MUTEX(dpm_list_mtx);
- int (*platform_enable_wakeup)(struct device *dev, int is_on);
-
-
--int device_pm_add(struct device *dev)
-+void device_pm_add(struct device *dev)
- {
-- int error;
--
- pr_debug("PM: Adding info for %s:%s\n",
- dev->bus ? dev->bus->name : "No Bus",
- kobject_name(&dev->kobj));
- mutex_lock(&dpm_list_mtx);
- list_add_tail(&dev->power.entry, &dpm_active);
-- error = dpm_sysfs_add(dev);
-- if (error)
-- list_del(&dev->power.entry);
- mutex_unlock(&dpm_list_mtx);
-- return error;
- }
-
- void device_pm_remove(struct device *dev)
---- a/drivers/base/power/power.h
-+++ b/drivers/base/power/power.h
-@@ -13,14 +13,29 @@ extern void device_shutdown(void);
-
- extern struct list_head dpm_active; /* The active device list */
-
--static inline struct device * to_device(struct list_head * entry)
-+static inline struct device *to_device(struct list_head *entry)
- {
- return container_of(entry, struct device, power.entry);
- }
-
--extern int device_pm_add(struct device *);
-+extern void device_pm_add(struct device *);
- extern void device_pm_remove(struct device *);
-
-+#else /* CONFIG_PM_SLEEP */
-+
-+
-+static inline void device_pm_add(struct device *dev)
-+{
-+}
-+
-+static inline void device_pm_remove(struct device *dev)
-+{
-+}
-+
-+#endif
-+
-+#ifdef CONFIG_PM
-+
- /*
- * sysfs.c
- */
-@@ -28,16 +43,15 @@ extern void device_pm_remove(struct devi
- extern int dpm_sysfs_add(struct device *);
- extern void dpm_sysfs_remove(struct device *);
-
--#else /* CONFIG_PM_SLEEP */
--
-+#else /* CONFIG_PM */
-
--static inline int device_pm_add(struct device * dev)
-+static inline int dpm_sysfs_add(struct device *dev)
- {
- return 0;
- }
--static inline void device_pm_remove(struct device * dev)
--{
-
-+static inline void dpm_sysfs_remove(struct device *dev)
-+{
- }
-
- #endif
diff --git a/driver/kobject-two-typo-fixes.patch b/driver/kobject-two-typo-fixes.patch
deleted file mode 100644
index dea392855994e4..00000000000000
--- a/driver/kobject-two-typo-fixes.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From johannes@sipsolutions.net Mon Nov 26 15:12:16 2007
-From: Johannes Berg <johannes@sipsolutions.net>
-Date: Mon, 05 Nov 2007 13:59:11 +0100
-Subject: kobject: two typo fixes
-To: trivial@kernel.org
-Cc: Greg KH <gregkh@suse.de>, Linux Kernel list <linux-kernel@vger.kernel.org>
-Message-ID: <1194267551.13501.2.camel@johannes.berg>
-
-
-This fixes two typos from commit
-34358c26a2c96b2a068dc44e0ac602106a466bce.
-
-Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- lib/kobject.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/lib/kobject.c
-+++ b/lib/kobject.c
-@@ -313,8 +313,8 @@ int kobject_rename(struct kobject * kobj
- struct kobject *temp_kobj;
- temp_kobj = kset_find_obj(kobj->kset, new_name);
- if (temp_kobj) {
-- printk(KERN_WARNING "kobject '%s' can not be renamed "
-- "to '%s' as '%s' is already in existance.\n",
-+ printk(KERN_WARNING "kobject '%s' cannot be renamed "
-+ "to '%s' as '%s' is already in existence.\n",
- kobject_name(kobj), new_name, new_name);
- kobject_put(temp_kobj);
- return -EINVAL;
diff --git a/driver/kset-convert-pci-hotplug-to-use-kset_create_and_register.patch b/driver/kset-convert-pci-hotplug-to-use-kset_create_and_register.patch
index b1d42412a647c2..fad0eed818e430 100644
--- a/driver/kset-convert-pci-hotplug-to-use-kset_create_and_register.patch
+++ b/driver/kset-convert-pci-hotplug-to-use-kset_create_and_register.patch
@@ -22,7 +22,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- a/drivers/pci/hotplug/acpiphp_ibm.c
+++ b/drivers/pci/hotplug/acpiphp_ibm.c
-@@ -428,7 +428,7 @@ static int __init ibm_acpiphp_init(void)
+@@ -429,7 +429,7 @@ static int __init ibm_acpiphp_init(void)
int retval = 0;
acpi_status status;
struct acpi_device *device;
@@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
dbg("%s\n", __FUNCTION__);
-@@ -475,7 +475,7 @@ init_return:
+@@ -476,7 +476,7 @@ init_return:
static void __exit ibm_acpiphp_exit(void)
{
acpi_status status;
diff --git a/driver/sysfs-fix-off-by-one-error-in-fill_read_buffer.patch b/driver/sysfs-fix-off-by-one-error-in-fill_read_buffer.patch
deleted file mode 100644
index a910bb8c491762..00000000000000
--- a/driver/sysfs-fix-off-by-one-error-in-fill_read_buffer.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From akpm@linux-foundation.org Wed Nov 21 14:56:04 2007
-From: Miao Xie <miaox@cn.fujitsu.com>
-Date: Wed, 21 Nov 2007 14:55:19 -0800
-Subject: sysfs: fix off-by-one error in fill_read_buffer()
-To: greg@kroah.com
-Cc: <kay.sievers@vrfy.org>, akpm@linux-foundation.org, miaox@cn.fujitsu.com
-Message-ID: <200711212255.lALMtJqh013307@imap1.linux-foundation.org>
-
-
-From: Miao Xie <miaox@cn.fujitsu.com>
-
-I found that there is a off-by-one problem in the following code.
-
-Version: 2.6.24-rc2
-File: fs/sysfs/file.c:118-122
-Function: fill_read_buffer
---------------------------------------------------------------------
- count = ops->show(kobj, attr_sd->s_attr.attr, buffer->page);
-
- sysfs_put_active_two(attr_sd);
-
- BUG_ON(count > (ssize_t)PAGE_SIZE);
---------------------------------------------------------------------
-
-Because according to the specification of the sysfs and the implement of
-the show methods, the show methods return the number of bytes which would
-be generated for the given input, excluding the trailing null.So if the
-return value of the show methods equals PAGE_SIZE - 1, the buffer is full
-in fact. And if the return value equals PAGE_SIZE, the resulting string
-was already truncated,or buffer overflow occurred.
-
-This patch fixes an off-by-one error in fill_read_buffer.
-
-Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Acked-by: Tejun Heo <teheo@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/sysfs/file.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
---- a/fs/sysfs/file.c
-+++ b/fs/sysfs/file.c
-@@ -119,7 +119,11 @@ static int fill_read_buffer(struct dentr
-
- sysfs_put_active_two(attr_sd);
-
-- BUG_ON(count > (ssize_t)PAGE_SIZE);
-+ /*
-+ * The code works fine with PAGE_SIZE return but it's likely to
-+ * indicate truncated result or overflow in normal use cases.
-+ */
-+ BUG_ON(count >= (ssize_t)PAGE_SIZE);
- if (count >= 0) {
- buffer->needs_read_fill = 0;
- buffer->count = count;
diff --git a/driver/uio-add-uio-documentation-target-to-docbook-makefile.patch b/driver/uio-add-uio-documentation-target-to-docbook-makefile.patch
deleted file mode 100644
index d7eec6161963ac..00000000000000
--- a/driver/uio-add-uio-documentation-target-to-docbook-makefile.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From hjk@linutronix.de Mon Nov 26 14:57:18 2007
-From: Hans J Koch <hjk@linutronix.de>
-Date: Mon, 26 Nov 2007 22:10:35 +0100
-Subject: UIO: add UIO documentation target to DocBook Makefile
-To: Greg KH <greg@kroah.com>
-Message-ID: <20071126221035.7ed600fe@dilbert.local>
-
-From: Hans J Koch <hjk@linutronix.de>
-
-Add the DocBook documentation for the Userspace I/O framework
-to the Makefile.
-
-Signed-off-by: Satoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
-Signed-off-by: Hans J Koch <hjk@linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- Documentation/DocBook/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/Documentation/DocBook/Makefile
-+++ b/Documentation/DocBook/Makefile
-@@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mc
- procfs-guide.xml writing_usb_driver.xml \
- kernel-api.xml filesystems.xml lsm.xml usb.xml \
- gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
-- genericirq.xml s390-drivers.xml
-+ genericirq.xml s390-drivers.xml uio-howto.xml
-
- ###
- # The build process is as follows (targets):
diff --git a/driver/uio-fix-up-the-uio-documentation.patch b/driver/uio-fix-up-the-uio-documentation.patch
deleted file mode 100644
index aa7014ad178ba9..00000000000000
--- a/driver/uio-fix-up-the-uio-documentation.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From hjk@linutronix.de Mon Nov 26 14:55:06 2007
-From: Hans J Koch <hjk@linutronix.de>
-Date: Mon, 26 Nov 2007 22:03:29 +0100
-Subject: UIO: fix up the UIO documentation
-To: Greg KH <greg@kroah.com>
-Message-ID: <20071126220329.69a14a88@dilbert.local>
-
-From: Hans J Koch <hjk@linutronix.de>
-
-Remove references to the old uio_dummy demo module from UIO documentation.
-Add a small paragraph to make it clearer that UIO is not a universal driver
-interface.
-
-Signed-off-by: Hans J Koch <hjk@linutronix.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- Documentation/DocBook/uio-howto.tmpl | 90 ++++++++++++-----------------------
- 1 file changed, 32 insertions(+), 58 deletions(-)
-
---- a/Documentation/DocBook/uio-howto.tmpl
-+++ b/Documentation/DocBook/uio-howto.tmpl
-@@ -30,6 +30,12 @@
-
- <revhistory>
- <revision>
-+ <revnumber>0.4</revnumber>
-+ <date>2007-11-26</date>
-+ <authorinitials>hjk</authorinitials>
-+ <revremark>Removed section about uio_dummy.</revremark>
-+ </revision>
-+ <revision>
- <revnumber>0.3</revnumber>
- <date>2007-04-29</date>
- <authorinitials>hjk</authorinitials>
-@@ -94,6 +100,26 @@ interested in translating it, please ema
- user space. This simplifies development and reduces the risk of
- serious bugs within a kernel module.
- </para>
-+ <para>
-+ Please note that UIO is not an universal driver interface. Devices
-+ that are already handled well by other kernel subsystems (like
-+ networking or serial or USB) are no candidates for an UIO driver.
-+ Hardware that is ideally suited for an UIO driver fulfills all of
-+ the following:
-+ </para>
-+<itemizedlist>
-+<listitem>
-+ <para>The device has memory that can be mapped. The device can be
-+ controlled completely by writing to this memory.</para>
-+</listitem>
-+<listitem>
-+ <para>The device usually generates interrupts.</para>
-+</listitem>
-+<listitem>
-+ <para>The device does not fit into one of the standard kernel
-+ subsystems.</para>
-+</listitem>
-+</itemizedlist>
- </sect1>
-
- <sect1 id="thanks">
-@@ -174,8 +200,9 @@ interested in translating it, please ema
- For cards that don't generate interrupts but need to be
- polled, there is the possibility to set up a timer that
- triggers the interrupt handler at configurable time intervals.
-- See <filename>drivers/uio/uio_dummy.c</filename> for an
-- example of this technique.
-+ This interrupt simulation is done by calling
-+ <function>uio_event_notify()</function>
-+ from the timer's event handler.
- </para>
-
- <para>
-@@ -263,63 +290,11 @@ offset = N * getpagesize();
- </sect1>
- </chapter>
-
--<chapter id="using-uio_dummy" xreflabel="Using uio_dummy">
--<?dbhtml filename="using-uio_dummy.html"?>
--<title>Using uio_dummy</title>
-- <para>
-- Well, there is no real use for uio_dummy. Its only purpose is
-- to test most parts of the UIO system (everything except
-- hardware interrupts), and to serve as an example for the
-- kernel module that you will have to write yourself.
-- </para>
--
--<sect1 id="what_uio_dummy_does">
--<title>What uio_dummy does</title>
-- <para>
-- The kernel module <filename>uio_dummy.ko</filename> creates a
-- device that uses a timer to generate periodic interrupts. The
-- interrupt handler does nothing but increment a counter. The
-- driver adds two custom attributes, <varname>count</varname>
-- and <varname>freq</varname>, that appear under
-- <filename>/sys/devices/platform/uio_dummy/</filename>.
-- </para>
--
-- <para>
-- The attribute <varname>count</varname> can be read and
-- written. The associated file
-- <filename>/sys/devices/platform/uio_dummy/count</filename>
-- appears as a normal text file and contains the total number of
-- timer interrupts. If you look at it (e.g. using
-- <function>cat</function>), you'll notice it is slowly counting
-- up.
-- </para>
--
-- <para>
-- The attribute <varname>freq</varname> can be read and written.
-- The content of
-- <filename>/sys/devices/platform/uio_dummy/freq</filename>
-- represents the number of system timer ticks between two timer
-- interrupts. The default value of <varname>freq</varname> is
-- the value of the kernel variable <varname>HZ</varname>, which
-- gives you an interval of one second. Lower values will
-- increase the frequency. Try the following:
-- </para>
--<programlisting format="linespecific">
--cd /sys/devices/platform/uio_dummy/
--echo 100 > freq
--</programlisting>
-- <para>
-- Use <function>cat count</function> to see how the interrupt
-- frequency changes.
-- </para>
--</sect1>
--</chapter>
--
- <chapter id="custom_kernel_module" xreflabel="Writing your own kernel module">
- <?dbhtml filename="custom_kernel_module.html"?>
- <title>Writing your own kernel module</title>
- <para>
-- Please have a look at <filename>uio_dummy.c</filename> as an
-+ Please have a look at <filename>uio_cif.c</filename> as an
- example. The following paragraphs explain the different
- sections of this file.
- </para>
-@@ -354,9 +329,8 @@ See the description below for details.
- interrupt, it's your modules task to determine the irq number during
- initialization. If you don't have a hardware generated interrupt but
- want to trigger the interrupt handler in some other way, set
--<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>. The
--uio_dummy module does this as it triggers the event mechanism in a timer
--routine. If you had no interrupt at all, you could set
-+<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>.
-+If you had no interrupt at all, you could set
- <varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this
- rarely makes sense.
- </para></listitem>
diff --git a/pci/pci-aer-fix-kernel-doc-mistakes.patch b/pci/pci-aer-fix-kernel-doc-mistakes.patch
deleted file mode 100644
index 3849f1bf509690..00000000000000
--- a/pci/pci-aer-fix-kernel-doc-mistakes.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-From rdunlap@xenotime.net Wed Nov 28 11:54:28 2007
-From: Randy Dunlap <rdunlap@xenotime.net>
-Date: Wed, 28 Nov 2007 09:04:23 -0800
-Subject: pci-aer: fix kernel-doc mistakes
-To: linux-pci@atrey.karlin.mff.cuni.cz
-Cc: linas@austin.ibm.com, gregkh@suse.de
-Message-ID: <20071128090423.e774d959.rdunlap@xenotime.net>
-
-
-From: Randy Dunlap <randy.dunlap@oracle.com>
-
-Fix kernel-doc parameter names and ending block comments (change **/
-to */).
-
-Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
-Acked-by: Linas Vepstas <linas@linas.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/pci/pcie/aer/aerdrv_core.c | 29 +++++++++++++++--------------
- 1 file changed, 15 insertions(+), 14 deletions(-)
-
---- a/drivers/pci/pcie/aer/aerdrv_core.c
-+++ b/drivers/pci/pcie/aer/aerdrv_core.c
-@@ -168,11 +168,11 @@ static int find_device_iter(struct devic
-
- /**
- * find_source_device - search through device hierarchy for source device
-- * @p_dev: pointer to Root Port pci_dev data structure
-+ * @parent: pointer to Root Port pci_dev data structure
- * @id: device ID of agent who sends an error message to this Root Port
- *
- * Invoked when error is detected at the Root Port.
-- **/
-+ */
- static struct device* find_source_device(struct pci_dev *parent, u16 id)
- {
- struct pci_dev *dev = parent;
-@@ -286,14 +286,15 @@ static void report_resume(struct pci_dev
-
- /**
- * broadcast_error_message - handle message broadcast to downstream drivers
-- * @device: pointer to from where in a hierarchy message is broadcasted down
-- * @api: callback to be broadcasted
-+ * @dev: pointer to from where in a hierarchy message is broadcasted down
- * @state: error state
-+ * @error_mesg: message to print
-+ * @cb: callback to be broadcasted
- *
- * Invoked during error recovery process. Once being invoked, the content
- * of error severity will be broadcasted to all downstream drivers in a
- * hierarchy in question.
-- **/
-+ */
- static pci_ers_result_t broadcast_error_message(struct pci_dev *dev,
- enum pci_channel_state state,
- char *error_mesg,
-@@ -428,7 +429,7 @@ static pci_ers_result_t reset_link(struc
- * Invoked when an error is nonfatal/fatal. Once being invoked, broadcast
- * error detected message to all downstream drivers within a hierarchy in
- * question and return the returned code.
-- **/
-+ */
- static pci_ers_result_t do_recovery(struct pcie_device *aerdev,
- struct pci_dev *dev,
- int severity)
-@@ -488,7 +489,7 @@ static pci_ers_result_t do_recovery(stru
- * @info: comprehensive error information
- *
- * Invoked when an error being detected by Root Port.
-- **/
-+ */
- static void handle_error_source(struct pcie_device * aerdev,
- struct pci_dev *dev,
- struct aer_err_info info)
-@@ -521,7 +522,7 @@ static void handle_error_source(struct p
- * @rpc: pointer to a Root Port data structure
- *
- * Invoked when PCIE bus loads AER service driver.
-- **/
-+ */
- void aer_enable_rootport(struct aer_rpc *rpc)
- {
- struct pci_dev *pdev = rpc->rpd->port;
-@@ -569,7 +570,7 @@ void aer_enable_rootport(struct aer_rpc
- * @rpc: pointer to a Root Port data structure
- *
- * Invoked when PCIE bus unloads AER service driver.
-- **/
-+ */
- static void disable_root_aer(struct aer_rpc *rpc)
- {
- struct pci_dev *pdev = rpc->rpd->port;
-@@ -590,7 +591,7 @@ static void disable_root_aer(struct aer_
- * @rpc: pointer to the root port which holds an error
- *
- * Invoked by DPC handler to consume an error.
-- **/
-+ */
- static struct aer_err_source* get_e_source(struct aer_rpc *rpc)
- {
- struct aer_err_source *e_source;
-@@ -655,7 +656,7 @@ static int get_device_error_info(struct
- * aer_isr_one_error - consume an error detected by root port
- * @p_device: pointer to error root port service device
- * @e_src: pointer to an error source
-- **/
-+ */
- static void aer_isr_one_error(struct pcie_device *p_device,
- struct aer_err_source *e_src)
- {
-@@ -706,7 +707,7 @@ static void aer_isr_one_error(struct pci
- * @work: definition of this work item
- *
- * Invoked, as DPC, when root port records new detected error
-- **/
-+ */
- void aer_isr(struct work_struct *work)
- {
- struct aer_rpc *rpc = container_of(work, struct aer_rpc, dpc_handler);
-@@ -729,7 +730,7 @@ void aer_isr(struct work_struct *work)
- * @rpc: pointer to a root port device being deleted
- *
- * Invoked when AER service unloaded on a specific Root Port
-- **/
-+ */
- void aer_delete_rootport(struct aer_rpc *rpc)
- {
- /* Disable root port AER itself */
-@@ -743,7 +744,7 @@ void aer_delete_rootport(struct aer_rpc
- * @dev: pointer to AER pcie device
- *
- * Invoked when AER service driver is loaded.
-- **/
-+ */
- int aer_init(struct pcie_device *dev)
- {
- if (aer_osc_setup(dev) && !forceload)
diff --git a/pci/pci-drivers-pci-pci-sysfs.c-add-missing-pci_dev_put.patch b/pci/pci-drivers-pci-pci-sysfs.c-add-missing-pci_dev_put.patch
deleted file mode 100644
index 50edb6404706a5..00000000000000
--- a/pci/pci-drivers-pci-pci-sysfs.c-add-missing-pci_dev_put.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From julia@diku.dk Mon Nov 26 21:52:39 2007
-From: Julia Lawall <julia@diku.dk>
-Date: Tue, 20 Nov 2007 08:41:16 +0100 (CET)
-Subject: PCI: drivers/pci/pci-sysfs.c: Add missing pci_dev_put
-To: gregkh@suse.de
-Message-ID: <Pine.LNX.4.64.0711200840180.8156@ask.diku.dk>
-
-From: Julia Lawall <julia@diku.dk>
-
-There should be a pci_dev_put when breaking out of a loop that iterates
-over calls to pci_get_device and similar functions.
-
-This was fixed using the following semantic patch.
-
-// <smpl>
-@@
-identifier d;
-type T;
-expression e;
-iterator for_each_pci_dev;
-@@
-
-T *d;
-...
-for_each_pci_dev(d)
- {... when != pci_dev_put(d)
- when != e = d
-(
- return d;
-|
-+ pci_dev_put(d);
-? return ...;
-)
-...}
-// </smpl>
-
-Signed-off-by: Julia Lawall <julia@diku.dk>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/pci/pci-sysfs.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
---- a/drivers/pci/pci-sysfs.c
-+++ b/drivers/pci/pci-sysfs.c
-@@ -702,8 +702,10 @@ static int __init pci_sysfs_init(void)
- sysfs_initialized = 1;
- for_each_pci_dev(pdev) {
- retval = pci_create_sysfs_dev_files(pdev);
-- if (retval)
-+ if (retval) {
-+ pci_dev_put(pdev);
- return retval;
-+ }
- }
-
- return 0;
diff --git a/pci/pci-hotplug-kernel-doc-fixes.patch b/pci/pci-hotplug-kernel-doc-fixes.patch
deleted file mode 100644
index b032dfbf576b0e..00000000000000
--- a/pci/pci-hotplug-kernel-doc-fixes.patch
+++ /dev/null
@@ -1,1105 +0,0 @@
-From rdunlap@xenotime.net Wed Nov 28 11:54:57 2007
-From: Randy Dunlap <rdunlap@xenotime.net>
-Date: Wed, 28 Nov 2007 09:04:30 -0800
-Subject: pci hotplug: kernel-doc fixes
-To: pcihpd-discuss@lists.sourceforge.net
-Cc: scottm@somanetworks.com, kristen.c.accardi@intel.com
-Message-ID: <20071128090430.b7ac8f2a.rdunlap@xenotime.net>
-
-
-From: Randy Dunlap <randy.dunlap@oracle.com>
-
-acpiphp.h: not using kernel-doc, so change /** to /*
-acpiphp_core.c: lots of kernel-doc cleanups
-acpiphp_glue.c: lots of kernel-doc cleanups
-acpiphp_ibm.c: lots of kernel-doc cleanups
-cpqphp_core.c: lots of kernel-doc cleanups
-cpqphp_ctrl.c: lots of kernel-doc cleanups
-fakephp.c: correct kernel-doc notation
-pciehp_ctrl.c: correct kernel-doc notation
-rpadlpar_core.c: correct function names & kernel-doc notation
-rpaphp_core.c: correct kernel-doc notation
-shpchp_ctrl.c: correct kernel-doc notation
-
-Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
-Cc: Kristen Accardi <kristen.c.accardi@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/pci/hotplug/acpiphp.h | 8 +--
- drivers/pci/hotplug/acpiphp_core.c | 29 ++++------
- drivers/pci/hotplug/acpiphp_glue.c | 36 +++++--------
- drivers/pci/hotplug/acpiphp_ibm.c | 47 +++++++++--------
- drivers/pci/hotplug/cpqphp_core.c | 41 ++++++++-------
- drivers/pci/hotplug/cpqphp_ctrl.c | 96 +++++++++++++++++-------------------
- drivers/pci/hotplug/fakephp.c | 14 ++---
- drivers/pci/hotplug/pciehp_ctrl.c | 16 +++---
- drivers/pci/hotplug/rpadlpar_core.c | 19 +++----
- drivers/pci/hotplug/rpaphp_core.c | 15 ++++-
- drivers/pci/hotplug/rpaphp_pci.c | 1
- drivers/pci/hotplug/shpchp_ctrl.c | 16 +++---
- 12 files changed, 169 insertions(+), 169 deletions(-)
-
---- a/drivers/pci/hotplug/acpiphp.h
-+++ b/drivers/pci/hotplug/acpiphp.h
-@@ -66,7 +66,7 @@ struct slot {
- char name[SLOT_NAME_SIZE];
- };
-
--/**
-+/*
- * struct acpiphp_bridge - PCI bridge information
- *
- * for each bridge device in ACPI namespace
-@@ -97,7 +97,7 @@ struct acpiphp_bridge {
- };
-
-
--/**
-+/*
- * struct acpiphp_slot - PCI slot information
- *
- * PCI slot information for each *physical* PCI slot
-@@ -118,7 +118,7 @@ struct acpiphp_slot {
- };
-
-
--/**
-+/*
- * struct acpiphp_func - PCI function information
- *
- * PCI function information for each object in ACPI namespace
-@@ -137,7 +137,7 @@ struct acpiphp_func {
- u32 flags; /* see below */
- };
-
--/**
-+/*
- * struct acpiphp_attention_info - device specific attention registration
- *
- * ACPI has no generic method of setting/getting attention status
---- a/drivers/pci/hotplug/acpiphp_core.c
-+++ b/drivers/pci/hotplug/acpiphp_core.c
-@@ -91,10 +91,10 @@ static struct hotplug_slot_ops acpi_hotp
- * acpiphp_register_attention - set attention LED callback
- * @info: must be completely filled with LED callbacks
- *
-- * Description: this is used to register a hardware specific ACPI
-+ * Description: This is used to register a hardware specific ACPI
- * driver that manipulates the attention LED. All the fields in
- * info must be set.
-- **/
-+ */
- int acpiphp_register_attention(struct acpiphp_attention_info *info)
- {
- int retval = -EINVAL;
-@@ -112,10 +112,10 @@ int acpiphp_register_attention(struct ac
- * acpiphp_unregister_attention - unset attention LED callback
- * @info: must match the pointer used to register
- *
-- * Description: this is used to un-register a hardware specific acpi
-+ * Description: This is used to un-register a hardware specific acpi
- * driver that manipulates the attention LED. The pointer to the
- * info struct must be the same as the one used to set it.
-- **/
-+ */
- int acpiphp_unregister_attention(struct acpiphp_attention_info *info)
- {
- int retval = -EINVAL;
-@@ -133,7 +133,6 @@ int acpiphp_unregister_attention(struct
- * @hotplug_slot: slot to enable
- *
- * Actual tasks are done in acpiphp_enable_slot()
-- *
- */
- static int enable_slot(struct hotplug_slot *hotplug_slot)
- {
-@@ -151,7 +150,6 @@ static int enable_slot(struct hotplug_sl
- * @hotplug_slot: slot to disable
- *
- * Actual tasks are done in acpiphp_disable_slot()
-- *
- */
- static int disable_slot(struct hotplug_slot *hotplug_slot)
- {
-@@ -168,15 +166,15 @@ static int disable_slot(struct hotplug_s
- }
-
-
-- /**
-- * set_attention_status - set attention LED
-+/**
-+ * set_attention_status - set attention LED
- * @hotplug_slot: slot to set attention LED on
- * @status: value to set attention LED to (0 or 1)
- *
- * attention status LED, so we use a callback that
- * was registered with us. This allows hardware specific
- * ACPI implementations to blink the light for us.
-- **/
-+ */
- static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 status)
- {
- int retval = -ENODEV;
-@@ -199,7 +197,6 @@ static int disable_slot(struct hotplug_s
- *
- * Some platforms may not implement _STA method properly.
- * In that case, the value returned may not be reliable.
-- *
- */
- static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value)
- {
-@@ -213,7 +210,7 @@ static int get_power_status(struct hotpl
- }
-
-
-- /**
-+/**
- * get_attention_status - get attention LED status
- * @hotplug_slot: slot to get status from
- * @value: returns with value of attention LED
-@@ -221,8 +218,8 @@ static int get_power_status(struct hotpl
- * ACPI doesn't have known method to determine the state
- * of the attention status LED, so we use a callback that
- * was registered with us. This allows hardware specific
-- * ACPI implementations to determine its state
-- **/
-+ * ACPI implementations to determine its state.
-+ */
- static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 *value)
- {
- int retval = -EINVAL;
-@@ -244,8 +241,7 @@ static int get_attention_status(struct h
- * @value: pointer to store status
- *
- * ACPI doesn't provide any formal means to access latch status.
-- * Instead, we fake latch status from _STA
-- *
-+ * Instead, we fake latch status from _STA.
- */
- static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value)
- {
-@@ -265,8 +261,7 @@ static int get_latch_status(struct hotpl
- * @value: pointer to store status
- *
- * ACPI doesn't provide any formal means to access adapter status.
-- * Instead, we fake adapter status from _STA
-- *
-+ * Instead, we fake adapter status from _STA.
- */
- static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value)
- {
---- a/drivers/pci/hotplug/acpiphp_glue.c
-+++ b/drivers/pci/hotplug/acpiphp_glue.c
-@@ -82,7 +82,6 @@ static void handle_hotplug_event_func(ac
- * 2. has _PS0 method
- * 3. has _PS3 method
- * 4. ..
-- *
- */
- static int is_ejectable(acpi_handle handle)
- {
-@@ -986,10 +985,8 @@ static int power_off_slot(struct acpiphp
-
-
- /**
-- * acpiphp_max_busnr - return the highest reserved bus number under
-- * the given bus.
-+ * acpiphp_max_busnr - return the highest reserved bus number under the given bus.
- * @bus: bus to start search with
-- *
- */
- static unsigned char acpiphp_max_busnr(struct pci_bus *bus)
- {
-@@ -1018,7 +1015,6 @@ static unsigned char acpiphp_max_busnr(s
- /**
- * acpiphp_bus_add - add a new bus to acpi subsystem
- * @func: acpiphp_func of the bridge
-- *
- */
- static int acpiphp_bus_add(struct acpiphp_func *func)
- {
-@@ -1063,7 +1059,6 @@ acpiphp_bus_add_out:
- /**
- * acpiphp_bus_trim - trim a bus from acpi subsystem
- * @handle: handle to acpi namespace
-- *
- */
- static int acpiphp_bus_trim(acpi_handle handle)
- {
-@@ -1089,7 +1084,6 @@ static int acpiphp_bus_trim(acpi_handle
- *
- * This function should be called per *physical slot*,
- * not per each slot object in ACPI namespace.
-- *
- */
- static int enable_device(struct acpiphp_slot *slot)
- {
-@@ -1185,6 +1179,7 @@ static void disable_bridges(struct pci_b
-
- /**
- * disable_device - disable a slot
-+ * @slot: ACPI PHP slot
- */
- static int disable_device(struct acpiphp_slot *slot)
- {
-@@ -1240,14 +1235,15 @@ static int disable_device(struct acpiphp
-
- /**
- * get_slot_status - get ACPI slot status
-+ * @slot: ACPI PHP slot
- *
-- * if a slot has _STA for each function and if any one of them
-- * returned non-zero status, return it
-+ * If a slot has _STA for each function and if any one of them
-+ * returned non-zero status, return it.
- *
-- * if a slot doesn't have _STA and if any one of its functions'
-- * configuration space is configured, return 0x0f as a _STA
-+ * If a slot doesn't have _STA and if any one of its functions'
-+ * configuration space is configured, return 0x0f as a _STA.
- *
-- * otherwise return 0
-+ * Otherwise return 0.
- */
- static unsigned int get_slot_status(struct acpiphp_slot *slot)
- {
-@@ -1281,6 +1277,7 @@ static unsigned int get_slot_status(stru
-
- /**
- * acpiphp_eject_slot - physically eject the slot
-+ * @slot: ACPI PHP slot
- */
- int acpiphp_eject_slot(struct acpiphp_slot *slot)
- {
-@@ -1314,6 +1311,7 @@ int acpiphp_eject_slot(struct acpiphp_sl
-
- /**
- * acpiphp_check_bridge - re-enumerate devices
-+ * @bridge: where to begin re-enumeration
- *
- * Iterate over all slots under this bridge and make sure that if a
- * card is present they are enabled, and if not they are disabled.
-@@ -1538,13 +1536,11 @@ check_sub_bridges(acpi_handle handle, u3
-
- /**
- * handle_hotplug_event_bridge - handle ACPI event on bridges
-- *
- * @handle: Notify()'ed acpi_handle
- * @type: Notify code
- * @context: pointer to acpiphp_bridge structure
- *
-- * handles ACPI event notification on {host,p2p} bridges
-- *
-+ * Handles ACPI event notification on {host,p2p} bridges.
- */
- static void handle_hotplug_event_bridge(acpi_handle handle, u32 type, void *context)
- {
-@@ -1634,13 +1630,11 @@ static void handle_hotplug_event_bridge(
-
- /**
- * handle_hotplug_event_func - handle ACPI event on functions (i.e. slots)
-- *
- * @handle: Notify()'ed acpi_handle
- * @type: Notify code
- * @context: pointer to acpiphp_func structure
- *
-- * handles ACPI event notification on slots
-- *
-+ * Handles ACPI event notification on slots.
- */
- static void handle_hotplug_event_func(acpi_handle handle, u32 type, void *context)
- {
-@@ -1705,7 +1699,6 @@ static struct acpi_pci_driver acpi_pci_h
-
- /**
- * acpiphp_glue_init - initializes all PCI hotplug - ACPI glue data structures
-- *
- */
- int __init acpiphp_glue_init(void)
- {
-@@ -1726,7 +1719,7 @@ int __init acpiphp_glue_init(void)
- /**
- * acpiphp_glue_exit - terminates all PCI hotplug - ACPI glue data structures
- *
-- * This function frees all data allocated in acpiphp_glue_init()
-+ * This function frees all data allocated in acpiphp_glue_init().
- */
- void acpiphp_glue_exit(void)
- {
-@@ -1760,7 +1753,6 @@ int __init acpiphp_get_num_slots(void)
- * acpiphp_for_each_slot - call function for each slot
- * @fn: callback function
- * @data: context to be passed to callback function
-- *
- */
- static int acpiphp_for_each_slot(acpiphp_callback fn, void *data)
- {
-@@ -1786,6 +1778,7 @@ static int acpiphp_for_each_slot(acpiphp
-
- /**
- * acpiphp_enable_slot - power on slot
-+ * @slot: ACPI PHP slot
- */
- int acpiphp_enable_slot(struct acpiphp_slot *slot)
- {
-@@ -1815,6 +1808,7 @@ int acpiphp_enable_slot(struct acpiphp_s
-
- /**
- * acpiphp_disable_slot - power off slot
-+ * @slot: ACPI PHP slot
- */
- int acpiphp_disable_slot(struct acpiphp_slot *slot)
- {
---- a/drivers/pci/hotplug/acpiphp_ibm.c
-+++ b/drivers/pci/hotplug/acpiphp_ibm.c
-@@ -134,11 +134,11 @@ static struct acpiphp_attention_info ibm
- * ibm_slot_from_id - workaround for bad ibm hardware
- * @id: the slot number that linux refers to the slot by
- *
-- * Description: this method returns the aCPI slot descriptor
-+ * Description: This method returns the aCPI slot descriptor
- * corresponding to the Linux slot number. This descriptor
- * has info about the aPCI slot id and attention status.
- * This descriptor must be freed using kfree when done.
-- **/
-+ */
- static union apci_descriptor *ibm_slot_from_id(int id)
- {
- int ind = 0, size;
-@@ -173,9 +173,9 @@ ibm_slot_done:
- * @slot: the hotplug_slot to work with
- * @status: what to set the LED to (0 or 1)
- *
-- * Description: this method is registered with the acpiphp module as a
-- * callback to do the device specific task of setting the LED status
-- **/
-+ * Description: This method is registered with the acpiphp module as a
-+ * callback to do the device specific task of setting the LED status.
-+ */
- static int ibm_set_attention_status(struct hotplug_slot *slot, u8 status)
- {
- union acpi_object args[2];
-@@ -213,13 +213,13 @@ static int ibm_set_attention_status(stru
- * @slot: the hotplug_slot to work with
- * @status: returns what the LED is set to (0 or 1)
- *
-- * Description: this method is registered with the acpiphp module as a
-- * callback to do the device specific task of getting the LED status
-+ * Description: This method is registered with the acpiphp module as a
-+ * callback to do the device specific task of getting the LED status.
- *
- * Because there is no direct method of getting the LED status directly
- * from an ACPI call, we read the aPCI table and parse out our
- * slot descriptor to read the status from that.
-- **/
-+ */
- static int ibm_get_attention_status(struct hotplug_slot *slot, u8 *status)
- {
- union apci_descriptor *ibm_slot;
-@@ -245,8 +245,8 @@ static int ibm_get_attention_status(stru
- * @event: the event info (device specific)
- * @context: passed context (our notification struct)
- *
-- * Description: this method is registered as a callback with the ACPI
-- * subsystem it is called when this device has an event to notify the OS of
-+ * Description: This method is registered as a callback with the ACPI
-+ * subsystem it is called when this device has an event to notify the OS of.
- *
- * The events actually come from the device as two events that get
- * synthesized into one event with data by this function. The event
-@@ -256,7 +256,7 @@ static int ibm_get_attention_status(stru
- * From section 5.6.2.2 of the ACPI 2.0 spec, I understand that the OSPM will
- * only re-enable the interrupt that causes this event AFTER this method
- * has returned, thereby enforcing serial access for the notification struct.
-- **/
-+ */
- static void ibm_handle_events(acpi_handle handle, u32 event, void *context)
- {
- u8 detail = event & 0x0f;
-@@ -279,16 +279,16 @@ static void ibm_handle_events(acpi_handl
- * ibm_get_table_from_acpi - reads the APLS buffer from ACPI
- * @bufp: address to pointer to allocate for the table
- *
-- * Description: this method reads the APLS buffer in from ACPI and
-+ * Description: This method reads the APLS buffer in from ACPI and
- * stores the "stripped" table into a single buffer
-- * it allocates and passes the address back in bufp
-+ * it allocates and passes the address back in bufp.
- *
- * If NULL is passed in as buffer, this method only calculates
- * the size of the table and returns that without filling
-- * in the buffer
-+ * in the buffer.
- *
-- * returns < 0 on error or the size of the table on success
-- **/
-+ * Returns < 0 on error or the size of the table on success.
-+ */
- static int ibm_get_table_from_acpi(char **bufp)
- {
- union acpi_object *package;
-@@ -349,17 +349,18 @@ read_table_done:
- /**
- * ibm_read_apci_table - callback for the sysfs apci_table file
- * @kobj: the kobject this binary attribute is a part of
-+ * @bin_attr: struct bin_attribute for this file
- * @buffer: the kernel space buffer to fill
- * @pos: the offset into the file
- * @size: the number of bytes requested
- *
-- * Description: gets registered with sysfs as the reader callback
-- * to be executed when /sys/bus/pci/slots/apci_table gets read
-+ * Description: Gets registered with sysfs as the reader callback
-+ * to be executed when /sys/bus/pci/slots/apci_table gets read.
- *
- * Since we don't get notified on open and close for this file,
- * things get really tricky here...
-- * our solution is to only allow reading the table in all at once
-- **/
-+ * our solution is to only allow reading the table in all at once.
-+ */
- static ssize_t ibm_read_apci_table(struct kobject *kobj,
- struct bin_attribute *bin_attr,
- char *buffer, loff_t pos, size_t size)
-@@ -385,10 +386,10 @@ static ssize_t ibm_read_apci_table(struc
- * @context: a pointer to our handle to fill when we find the device
- * @rv: a return value to fill if desired
- *
-- * Description: used as a callback when calling acpi_walk_namespace
-+ * Description: Used as a callback when calling acpi_walk_namespace
- * to find our device. When this method returns non-zero
-- * acpi_walk_namespace quits its search and returns our value
-- **/
-+ * acpi_walk_namespace quits its search and returns our value.
-+ */
- static acpi_status __init ibm_find_acpi_device(acpi_handle handle,
- u32 lvl, void *context, void **rv)
- {
---- a/drivers/pci/hotplug/cpqphp_core.c
-+++ b/drivers/pci/hotplug/cpqphp_core.c
-@@ -117,12 +117,10 @@ static inline int is_slot66mhz(struct sl
-
- /**
- * detect_SMBIOS_pointer - find the System Management BIOS Table in mem region.
-- *
- * @begin: begin pointer for region to be scanned.
- * @end: end pointer for region to be scanned.
- *
-- * Returns pointer to the head of the SMBIOS tables (or NULL)
-- *
-+ * Returns pointer to the head of the SMBIOS tables (or %NULL).
- */
- static void __iomem * detect_SMBIOS_pointer(void __iomem *begin, void __iomem *end)
- {
-@@ -157,9 +155,9 @@ static void __iomem * detect_SMBIOS_poin
-
- /**
- * init_SERR - Initializes the per slot SERR generation.
-+ * @ctrl: controller to use
- *
- * For unexpected switch opens
-- *
- */
- static int init_SERR(struct controller * ctrl)
- {
-@@ -224,14 +222,15 @@ static int pci_print_IRQ_route (void)
-
- /**
- * get_subsequent_smbios_entry: get the next entry from bios table.
-- *
-- * Gets the first entry if previous == NULL
-- * Otherwise, returns the next entry
-- * Uses global SMBIOS Table pointer
-- *
-+ * @smbios_start: where to start in the SMBIOS table
-+ * @smbios_table: location of the SMBIOS table
- * @curr: %NULL or pointer to previously returned structure
- *
-- * returns a pointer to an SMBIOS structure or NULL if none found
-+ * Gets the first entry if previous == NULL;
-+ * otherwise, returns the next entry.
-+ * Uses global SMBIOS Table pointer.
-+ *
-+ * Returns a pointer to an SMBIOS structure or NULL if none found.
- */
- static void __iomem *get_subsequent_smbios_entry(void __iomem *smbios_start,
- void __iomem *smbios_table,
-@@ -272,17 +271,18 @@ static void __iomem *get_subsequent_smbi
-
-
- /**
-- * get_SMBIOS_entry
-- *
-- * @type:SMBIOS structure type to be returned
-+ * get_SMBIOS_entry - return the requested SMBIOS entry or %NULL
-+ * @smbios_start: where to start in the SMBIOS table
-+ * @smbios_table: location of the SMBIOS table
-+ * @type: SMBIOS structure type to be returned
- * @previous: %NULL or pointer to previously returned structure
- *
-- * Gets the first entry of the specified type if previous == NULL
-+ * Gets the first entry of the specified type if previous == %NULL;
- * Otherwise, returns the next entry of the given type.
-- * Uses global SMBIOS Table pointer
-- * Uses get_subsequent_smbios_entry
-+ * Uses global SMBIOS Table pointer.
-+ * Uses get_subsequent_smbios_entry.
- *
-- * returns a pointer to an SMBIOS structure or %NULL if none found
-+ * Returns a pointer to an SMBIOS structure or %NULL if none found.
- */
- static void __iomem *get_SMBIOS_entry(void __iomem *smbios_start,
- void __iomem *smbios_table,
-@@ -581,7 +581,9 @@ get_slot_mapping(struct pci_bus *bus, u8
-
- /**
- * cpqhp_set_attention_status - Turns the Amber LED for a slot on or off
-- *
-+ * @ctrl: struct controller to use
-+ * @func: PCI device/function info
-+ * @status: LED control flag: 1 = LED on, 0 = LED off
- */
- static int
- cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
-@@ -621,7 +623,8 @@ cpqhp_set_attention_status(struct contro
-
- /**
- * set_attention_status - Turns the Amber LED for a slot on or off
-- *
-+ * @hotplug_slot: slot to change LED on
-+ * @status: LED control flag
- */
- static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status)
- {
---- a/drivers/pci/hotplug/cpqphp_ctrl.c
-+++ b/drivers/pci/hotplug/cpqphp_ctrl.c
-@@ -123,7 +123,7 @@ static u8 handle_switch_change(u8 change
- }
-
- /**
-- * cpqhp_find_slot: find the struct slot of given device
-+ * cpqhp_find_slot - find the struct slot of given device
- * @ctrl: scan lots of this controller
- * @device: the device id to find
- */
-@@ -305,9 +305,8 @@ static u8 handle_power_fault(u8 change,
-
-
- /**
-- * sort_by_size: sort nodes on the list by their length, smallest first.
-+ * sort_by_size - sort nodes on the list by their length, smallest first.
- * @head: list to sort
-- *
- */
- static int sort_by_size(struct pci_resource **head)
- {
-@@ -354,9 +353,8 @@ static int sort_by_size(struct pci_resou
-
-
- /**
-- * sort_by_max_size: sort nodes on the list by their length, largest first.
-+ * sort_by_max_size - sort nodes on the list by their length, largest first.
- * @head: list to sort
-- *
- */
- static int sort_by_max_size(struct pci_resource **head)
- {
-@@ -403,8 +401,10 @@ static int sort_by_max_size(struct pci_r
-
-
- /**
-- * do_pre_bridge_resource_split: find node of resources that are unused
-- *
-+ * do_pre_bridge_resource_split - find node of resources that are unused
-+ * @head: new list head
-+ * @orig_head: original list head
-+ * @alignment: max node size (?)
- */
- static struct pci_resource *do_pre_bridge_resource_split(struct pci_resource **head,
- struct pci_resource **orig_head, u32 alignment)
-@@ -477,8 +477,9 @@ static struct pci_resource *do_pre_bridg
-
-
- /**
-- * do_bridge_resource_split: find one node of resources that aren't in use
-- *
-+ * do_bridge_resource_split - find one node of resources that aren't in use
-+ * @head: list head
-+ * @alignment: max node size (?)
- */
- static struct pci_resource *do_bridge_resource_split(struct pci_resource **head, u32 alignment)
- {
-@@ -525,14 +526,13 @@ error:
-
-
- /**
-- * get_io_resource: find first node of given size not in ISA aliasing window.
-+ * get_io_resource - find first node of given size not in ISA aliasing window.
- * @head: list to search
- * @size: size of node to find, must be a power of two.
- *
-- * Description: this function sorts the resource list by size and then returns
-+ * Description: This function sorts the resource list by size and then returns
- * returns the first node of "size" length that is not in the ISA aliasing
- * window. If it finds a node larger than "size" it will split it up.
-- *
- */
- static struct pci_resource *get_io_resource(struct pci_resource **head, u32 size)
- {
-@@ -620,7 +620,7 @@ static struct pci_resource *get_io_resou
-
-
- /**
-- * get_max_resource: get largest node which has at least the given size.
-+ * get_max_resource - get largest node which has at least the given size.
- * @head: the list to search the node in
- * @size: the minimum size of the node to find
- *
-@@ -712,7 +712,7 @@ static struct pci_resource *get_max_reso
-
-
- /**
-- * get_resource: find resource of given size and split up larger ones.
-+ * get_resource - find resource of given size and split up larger ones.
- * @head: the list to search for resources
- * @size: the size limit to use
- *
-@@ -804,14 +804,14 @@ static struct pci_resource *get_resource
-
-
- /**
-- * cpqhp_resource_sort_and_combine: sort nodes by base addresses and clean up.
-+ * cpqhp_resource_sort_and_combine - sort nodes by base addresses and clean up
- * @head: the list to sort and clean up
- *
- * Description: Sorts all of the nodes in the list in ascending order by
- * their base addresses. Also does garbage collection by
- * combining adjacent nodes.
- *
-- * returns 0 if success
-+ * Returns %0 if success.
- */
- int cpqhp_resource_sort_and_combine(struct pci_resource **head)
- {
-@@ -951,9 +951,9 @@ irqreturn_t cpqhp_ctrl_intr(int IRQ, voi
-
- /**
- * cpqhp_slot_create - Creates a node and adds it to the proper bus.
-- * @busnumber - bus where new node is to be located
-+ * @busnumber: bus where new node is to be located
- *
-- * Returns pointer to the new node or NULL if unsuccessful
-+ * Returns pointer to the new node or %NULL if unsuccessful.
- */
- struct pci_func *cpqhp_slot_create(u8 busnumber)
- {
-@@ -986,7 +986,7 @@ struct pci_func *cpqhp_slot_create(u8 bu
- * slot_remove - Removes a node from the linked list of slots.
- * @old_slot: slot to remove
- *
-- * Returns 0 if successful, !0 otherwise.
-+ * Returns %0 if successful, !0 otherwise.
- */
- static int slot_remove(struct pci_func * old_slot)
- {
-@@ -1026,7 +1026,7 @@ static int slot_remove(struct pci_func *
- * bridge_slot_remove - Removes a node from the linked list of slots.
- * @bridge: bridge to remove
- *
-- * Returns 0 if successful, !0 otherwise.
-+ * Returns %0 if successful, !0 otherwise.
- */
- static int bridge_slot_remove(struct pci_func *bridge)
- {
-@@ -1071,7 +1071,7 @@ out:
- * cpqhp_slot_find - Looks for a node by bus, and device, multiple functions accessed
- * @bus: bus to find
- * @device: device to find
-- * @index: is 0 for first function found, 1 for the second...
-+ * @index: is %0 for first function found, %1 for the second...
- *
- * Returns pointer to the node if successful, %NULL otherwise.
- */
-@@ -1115,16 +1115,13 @@ static int is_bridge(struct pci_func * f
-
-
- /**
-- * set_controller_speed - set the frequency and/or mode of a specific
-- * controller segment.
-- *
-+ * set_controller_speed - set the frequency and/or mode of a specific controller segment.
- * @ctrl: controller to change frequency/mode for.
- * @adapter_speed: the speed of the adapter we want to match.
- * @hp_slot: the slot number where the adapter is installed.
- *
-- * Returns 0 if we successfully change frequency and/or mode to match the
-+ * Returns %0 if we successfully change frequency and/or mode to match the
- * adapter speed.
-- *
- */
- static u8 set_controller_speed(struct controller *ctrl, u8 adapter_speed, u8 hp_slot)
- {
-@@ -1253,13 +1250,14 @@ static u8 set_controller_speed(struct co
-
- /**
- * board_replaced - Called after a board has been replaced in the system.
-+ * @func: PCI device/function information
-+ * @ctrl: hotplug controller
- *
-- * This is only used if we don't have resources for hot add
-- * Turns power on for the board
-- * Checks to see if board is the same
-- * If board is same, reconfigures it
-+ * This is only used if we don't have resources for hot add.
-+ * Turns power on for the board.
-+ * Checks to see if board is the same.
-+ * If board is same, reconfigures it.
- * If board isn't same, turns it back off.
-- *
- */
- static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
- {
-@@ -1403,10 +1401,11 @@ static u32 board_replaced(struct pci_fun
-
- /**
- * board_added - Called after a board has been added to the system.
-+ * @func: PCI device/function info
-+ * @ctrl: hotplug controller
- *
-- * Turns power on for the board
-- * Configures board
-- *
-+ * Turns power on for the board.
-+ * Configures board.
- */
- static u32 board_added(struct pci_func *func, struct controller *ctrl)
- {
-@@ -1607,8 +1606,10 @@ static u32 board_added(struct pci_func *
-
-
- /**
-- * remove_board - Turns off slot and LED's
-- *
-+ * remove_board - Turns off slot and LEDs
-+ * @func: PCI device/function info
-+ * @replace_flag: whether replacing or adding a new device
-+ * @ctrl: target controller
- */
- static u32 remove_board(struct pci_func * func, u32 replace_flag, struct controller * ctrl)
- {
-@@ -1902,11 +1903,11 @@ static void interrupt_event_handler(stru
-
-
- /**
-- * cpqhp_pushbutton_thread
-+ * cpqhp_pushbutton_thread - handle pushbutton events
-+ * @slot: target slot (struct)
- *
-- * Scheduled procedure to handle blocking stuff for the pushbuttons
-+ * Scheduled procedure to handle blocking stuff for the pushbuttons.
- * Handles all pending events and exits.
-- *
- */
- void cpqhp_pushbutton_thread(unsigned long slot)
- {
-@@ -2137,9 +2138,10 @@ int cpqhp_process_SS(struct controller *
- }
-
- /**
-- * switch_leds: switch the leds, go from one site to the other.
-+ * switch_leds - switch the leds, go from one site to the other.
- * @ctrl: controller to use
- * @num_of_slots: number of slots to use
-+ * @work_LED: LED control value
- * @direction: 1 to start from the left side, 0 to start right.
- */
- static void switch_leds(struct controller *ctrl, const int num_of_slots,
-@@ -2165,11 +2167,11 @@ static void switch_leds(struct controlle
- }
-
- /**
-- * hardware_test - runs hardware tests
-+ * cpqhp_hardware_test - runs hardware tests
-+ * @ctrl: target controller
-+ * @test_num: the number written to the "test" file in sysfs.
- *
- * For hot plug ctrl folks to play with.
-- * test_num is the number written to the "test" file in sysfs
-- *
- */
- int cpqhp_hardware_test(struct controller *ctrl, int test_num)
- {
-@@ -2249,14 +2251,12 @@ int cpqhp_hardware_test(struct controlle
-
- /**
- * configure_new_device - Configures the PCI header information of one board.
-- *
- * @ctrl: pointer to controller structure
- * @func: pointer to function structure
- * @behind_bridge: 1 if this is a recursive call, 0 if not
- * @resources: pointer to set of resource lists
- *
-- * Returns 0 if success
-- *
-+ * Returns 0 if success.
- */
- static u32 configure_new_device(struct controller * ctrl, struct pci_func * func,
- u8 behind_bridge, struct resource_lists * resources)
-@@ -2346,15 +2346,13 @@ static u32 configure_new_device(struct c
-
- /**
- * configure_new_function - Configures the PCI header information of one device
-- *
- * @ctrl: pointer to controller structure
- * @func: pointer to function structure
- * @behind_bridge: 1 if this is a recursive call, 0 if not
- * @resources: pointer to set of resource lists
- *
- * Calls itself recursively for bridged devices.
-- * Returns 0 if success
-- *
-+ * Returns 0 if success.
- */
- static int configure_new_function(struct controller *ctrl, struct pci_func *func,
- u8 behind_bridge,
---- a/drivers/pci/hotplug/fakephp.c
-+++ b/drivers/pci/hotplug/fakephp.c
-@@ -165,11 +165,11 @@ static void remove_slot(struct dummy_slo
- }
-
- /**
-- * Rescan slot.
-- * Tries hard not to re-enable already existing devices
-- * also handles scanning of subfunctions
-+ * pci_rescan_slot - Rescan slot
-+ * @temp: Device template. Should be set: bus and devfn.
- *
-- * @param temp Device template. Should be set: bus and devfn.
-+ * Tries hard not to re-enable already existing devices;
-+ * also handles scanning of subfunctions.
- */
- static void pci_rescan_slot(struct pci_dev *temp)
- {
-@@ -229,10 +229,10 @@ static void pci_rescan_slot(struct pci_d
-
-
- /**
-- * Rescan PCI bus.
-- * call pci_rescan_slot for each possible function of the bus
-+ * pci_rescan_bus - Rescan PCI bus
-+ * @bus: the PCI bus to rescan
- *
-- * @param bus
-+ * Call pci_rescan_slot for each possible function of the bus.
- */
- static void pci_rescan_bus(const struct pci_bus *bus)
- {
---- a/drivers/pci/hotplug/pciehp_ctrl.c
-+++ b/drivers/pci/hotplug/pciehp_ctrl.c
-@@ -208,10 +208,10 @@ static void set_slot_off(struct controll
-
- /**
- * board_added - Called after a board has been added to the system.
-+ * @p_slot: &slot where board is added
- *
-- * Turns power on for the board
-- * Configures board
-- *
-+ * Turns power on for the board.
-+ * Configures board.
- */
- static int board_added(struct slot *p_slot)
- {
-@@ -276,8 +276,8 @@ err_exit:
- }
-
- /**
-- * remove_board - Turns off slot and LED's
-- *
-+ * remove_board - Turns off slot and LEDs
-+ * @p_slot: slot where board is being removed
- */
- static int remove_board(struct slot *p_slot)
- {
-@@ -319,11 +319,11 @@ struct power_work_info {
- };
-
- /**
-- * pciehp_pushbutton_thread
-+ * pciehp_power_thread - handle pushbutton events
-+ * @work: &struct work_struct describing work to be done
- *
-- * Scheduled procedure to handle blocking stuff for the pushbuttons
-+ * Scheduled procedure to handle blocking stuff for the pushbuttons.
- * Handles all pending events and exits.
-- *
- */
- static void pciehp_power_thread(struct work_struct *work)
- {
---- a/drivers/pci/hotplug/rpadlpar_core.c
-+++ b/drivers/pci/hotplug/rpadlpar_core.c
-@@ -100,6 +100,7 @@ static struct device_node *find_dlpar_no
-
- /**
- * find_php_slot - return hotplug slot structure for device node
-+ * @dn: target &device_node
- *
- * This routine will return the hotplug slot structure
- * for a given device node. Note that built-in PCI slots
-@@ -293,9 +294,8 @@ static int dlpar_add_vio_slot(char *drc_
- * dlpar_add_slot - DLPAR add an I/O Slot
- * @drc_name: drc-name of newly added slot
- *
-- * Make the hotplug module and the kernel aware
-- * of a newly added I/O Slot.
-- * Return Codes -
-+ * Make the hotplug module and the kernel aware of a newly added I/O Slot.
-+ * Return Codes:
- * 0 Success
- * -ENODEV Not a valid drc_name
- * -EINVAL Slot already added
-@@ -339,9 +339,9 @@ exit:
- /**
- * dlpar_remove_vio_slot - DLPAR remove a virtual I/O Slot
- * @drc_name: drc-name of newly added slot
-+ * @dn: &device_node
- *
-- * Remove the kernel and hotplug representations
-- * of an I/O Slot.
-+ * Remove the kernel and hotplug representations of an I/O Slot.
- * Return Codes:
- * 0 Success
- * -EINVAL Vio dev doesn't exist
-@@ -359,11 +359,11 @@ static int dlpar_remove_vio_slot(char *d
- }
-
- /**
-- * dlpar_remove_slot - DLPAR remove a PCI I/O Slot
-+ * dlpar_remove_pci_slot - DLPAR remove a PCI I/O Slot
- * @drc_name: drc-name of newly added slot
-+ * @dn: &device_node
- *
-- * Remove the kernel and hotplug representations
-- * of a PCI I/O Slot.
-+ * Remove the kernel and hotplug representations of a PCI I/O Slot.
- * Return Codes:
- * 0 Success
- * -ENODEV Not a valid drc_name
-@@ -405,8 +405,7 @@ int dlpar_remove_pci_slot(char *drc_name
- * dlpar_remove_slot - DLPAR remove an I/O Slot
- * @drc_name: drc-name of newly added slot
- *
-- * Remove the kernel and hotplug representations
-- * of an I/O Slot.
-+ * Remove the kernel and hotplug representations of an I/O Slot.
- * Return Codes:
- * 0 Success
- * -ENODEV Not a valid drc_name
---- a/drivers/pci/hotplug/rpaphp_core.c
-+++ b/drivers/pci/hotplug/rpaphp_core.c
-@@ -54,10 +54,12 @@ module_param(debug, bool, 0644);
-
- /**
- * set_attention_status - set attention LED
-+ * @hotplug_slot: target &hotplug_slot
-+ * @value: LED control value
-+ *
- * echo 0 > attention -- set LED OFF
- * echo 1 > attention -- set LED ON
- * echo 2 > attention -- set LED ID(identify, light is blinking)
-- *
- */
- static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 value)
- {
-@@ -99,6 +101,8 @@ static int get_power_status(struct hotpl
-
- /**
- * get_attention_status - get attention LED status
-+ * @hotplug_slot: slot to get status
-+ * @value: pointer to store status
- */
- static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 * value)
- {
-@@ -254,6 +258,11 @@ static int is_php_type(char *drc_type)
-
- /**
- * is_php_dn() - return 1 if this is a hotpluggable pci slot, else 0
-+ * @dn: target &device_node
-+ * @indexes: passed to get_children_props()
-+ * @names: passed to get_children_props()
-+ * @types: returned from get_children_props()
-+ * @power_domains:
- *
- * This routine will return true only if the device node is
- * a hotpluggable slot. This routine will return false
-@@ -279,7 +288,7 @@ static int is_php_dn(struct device_node
-
- /**
- * rpaphp_add_slot -- declare a hotplug slot to the hotplug subsystem.
-- * @dn device node of slot
-+ * @dn: device node of slot
- *
- * This subroutine will register a hotplugable slot with the
- * PCI hotplug infrastructure. This routine is typicaly called
-@@ -291,7 +300,7 @@ static int is_php_dn(struct device_node
- * routine will just return without doing anything, since embedded
- * slots cannot be hotplugged.
- *
-- * To remove a slot, it suffices to call rpaphp_deregister_slot()
-+ * To remove a slot, it suffices to call rpaphp_deregister_slot().
- */
- int rpaphp_add_slot(struct device_node *dn)
- {
---- a/drivers/pci/hotplug/rpaphp_pci.c
-+++ b/drivers/pci/hotplug/rpaphp_pci.c
-@@ -79,6 +79,7 @@ static void set_slot_name(struct slot *s
-
- /**
- * rpaphp_enable_slot - record slot state, config pci device
-+ * @slot: target &slot
- *
- * Initialize values in the slot, and the hotplug_slot info
- * structures to indicate if there is a pci card plugged into
---- a/drivers/pci/hotplug/shpchp_ctrl.c
-+++ b/drivers/pci/hotplug/shpchp_ctrl.c
-@@ -231,10 +231,10 @@ static int fix_bus_speed(struct controll
-
- /**
- * board_added - Called after a board has been added to the system.
-+ * @p_slot: target &slot
- *
-- * Turns power on for the board
-- * Configures board
-- *
-+ * Turns power on for the board.
-+ * Configures board.
- */
- static int board_added(struct slot *p_slot)
- {
-@@ -350,8 +350,8 @@ err_exit:
-
-
- /**
-- * remove_board - Turns off slot and LED's
-- *
-+ * remove_board - Turns off slot and LEDs
-+ * @p_slot: target &slot
- */
- static int remove_board(struct slot *p_slot)
- {
-@@ -397,11 +397,11 @@ struct pushbutton_work_info {
- };
-
- /**
-- * shpchp_pushbutton_thread
-+ * shpchp_pushbutton_thread - handle pushbutton events
-+ * @work: &struct work_struct to be handled
- *
-- * Scheduled procedure to handle blocking stuff for the pushbuttons
-+ * Scheduled procedure to handle blocking stuff for the pushbuttons.
- * Handles all pending events and exits.
-- *
- */
- static void shpchp_pushbutton_thread(struct work_struct *work)
- {
diff --git a/pci/pci-pcie-portdriver-initialize-returned-value.patch b/pci/pci-pcie-portdriver-initialize-returned-value.patch
deleted file mode 100644
index 75beaf0eea04ff..00000000000000
--- a/pci/pci-pcie-portdriver-initialize-returned-value.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From linas@austin.ibm.com Mon Nov 26 15:10:36 2007
-From: Linas Vepstas <linas@austin.ibm.com>
-Date: Fri, 2 Nov 2007 15:14:28 -0500
-Subject: PCI: pcie portdriver: initialize returned value
-To: tom.l.nguyen@intel.com, gregkh@suse.de
-Cc: linux-pci@atrey.karlin.mff.cuni.cz
-Message-ID: <20071102201428.GT2183@austin.ibm.com>
-Content-Disposition: inline
-
-From: Linas Vepstas <linas@austin.ibm.com>
-
-The pcie protdrv status can be returned uninitialized,
-if there are no children under a device. This leads to
-bad responses downstream. Fix this.
-
-Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/pci/pcie/portdrv_pci.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/pci/pcie/portdrv_pci.c
-+++ b/drivers/pci/pcie/portdrv_pci.c
-@@ -217,7 +217,7 @@ static int slot_reset_iter(struct device
-
- static pci_ers_result_t pcie_portdrv_slot_reset(struct pci_dev *dev)
- {
-- pci_ers_result_t status;
-+ pci_ers_result_t status = PCI_ERS_RESULT_NONE;
- int retval;
-
- /* If fatal, restore cfg space for possible link reset at upstream */
diff --git a/series b/series
index 8f15912cde6d7f..bf533dcec8be9c 100644
--- a/series
+++ b/series
@@ -6,12 +6,6 @@ gregkh/sysfs-test.patch
gregkh/detect-atomic-counter-underflows.patch
# driver patches queued for 2.6.24
-driver/allow-legacy_ptys-to-be-set-to-0.patch
-driver/create-sys-...-power-when-config_pm-is-set.patch
-driver/uio-fix-up-the-uio-documentation.patch
-driver/uio-add-uio-documentation-target-to-docbook-makefile.patch
-driver/kobject-two-typo-fixes.patch
-driver/sysfs-fix-off-by-one-error-in-fill_read_buffer.patch
# driver patches for after 2.6.24 is out
driver/nozomi.patch
@@ -144,10 +138,6 @@ driver/sysfs-crash-debugging.patch
# pci patches queued for 2.6.24 (bugfixes, new ids, etc.)
-pci/pci-pcie-portdriver-initialize-returned-value.patch
-pci/pci-drivers-pci-pci-sysfs.c-add-missing-pci_dev_put.patch
-pci/pci-aer-fix-kernel-doc-mistakes.patch
-pci/pci-hotplug-kernel-doc-fixes.patch
# pci patches for after 2.6.24 is out
pci/pci-make-pci_restore_bars-static.patch
@@ -180,31 +170,6 @@ pci/pci_bridge-device.patch
# usb patches queued for 2.6.24 (bugfixes, new ids, etc.)
-usb/usb-fix-usb_ohci_hcd_ssb-dependencies.patch
-usb/usb-omap_udc-build-fix.patch
-usb/usb-pl2303-add-support-for-corega-cg-usbrs232r.patch
-usb/usb-storage-always-set-the-allow_restart-flag.patch
-usb/usb-fix-priority-mistakes-in-drivers-usb-core-hub.c.patch
-usb/usb-free-memory-when-writing-fails-in-usb-serial-mos7840.c.patch
-usb/usb-fix-usbled-disconnect-read-race-2.patch
-usb/usbserial-fix-inconsistent-lock-state.patch
-usb/usb-fix-signr-comment-in-usbdevice_fs.h.patch
-usb/usb-power-management-documenation-update.patch
-usb/usb-fix-locks-and-urb-status-in-adutux.patch
-usb/usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch
-usb/usb-fix-directory-references-in-usb-readme.patch
-usb/usb-remove-usb-hub-entry-from-maintainers.patch
-usb/usb-mailing-lists-have-changed.patch
-usb/usb-hcd-avoid-duplicate-local_irq_disable.patch
-usb/usb-sierra-new-product-id.patch
-usb/usb-keep-track-of-whether-interface-sysfs-files-exist.patch
-usb/usb-uevent-environment-key-fix.patch
-usb/usb-make-the-microtek-driver-and-hal-cooperate.patch
-usb/usb-fix-up-ehci-startup-synchronization.patch
-usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch
-usb/usb-s3c2410-gadget-header-move-fixups.patch
-usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch
-usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch
# usb stuff for after 2.6.24 is out
usb/usb-convert-from-class_device-to-device-for-usb-core.patch
diff --git a/usb/usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch b/usb/usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch
deleted file mode 100644
index 9e9709aabadccd..00000000000000
--- a/usb/usb-add-support-for-an-older-firmware-revision-for-the-nikon-d200.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From phil@ipom.com Thu Nov 1 10:54:01 2007
-From: Mike Pagano <mpagano@gentoo.org>
-Date: Thu, 01 Nov 2007 10:53:43 -0700
-Subject: USB: add support for an older firmware revision for the Nikon D200
-To: Mike Pagano <mpagano@gentoo.org>
-Cc: stern@rowland.harvard.edu, linux-usb-devel@lists.sourceforge.net, Greg KH <greg@kroah.com>
-Message-ID: <472A12A7.4050606@ipom.com>
-
-
-This is a resubmission of the patch to upgrade the unusual_devs.h file to
-support an older firmware revision of the Nikon D200. This patch includes the
-requested /proc/bus/usb/devices information.
-
-T: Bus=01 Lev=01 Prnt=01 Port=09 Cnt=02 Dev#= 6 Spd=480 MxCh= 0
-D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
-P: Vendor=04b0 ProdID=040f Rev= 1.00
-S: Manufacturer=NIKON
-S: Product=NIKON DSC D200
-S: SerialNumber=0000000
-C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA
-I:* If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
-E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
-
-Signed-off-by: Mike Pagano <mpagano@gentoo.org>
-Signed-off-by: Phil Dibowitz <phil@ipom.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/storage/unusual_devs.h | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/drivers/usb/storage/unusual_devs.h
-+++ b/drivers/usb/storage/unusual_devs.h
-@@ -342,11 +342,11 @@ UNUSUAL_DEV( 0x04b0, 0x040d, 0x0100, 0x
- US_FL_FIX_CAPACITY),
-
- /* Reported by Graber and Mike Pagano <mpagano-kernel@mpagano.com> */
--UNUSUAL_DEV( 0x04b0, 0x040f, 0x0200, 0x0200,
-- "NIKON",
-- "NIKON DSC D200",
-- US_SC_DEVICE, US_PR_DEVICE, NULL,
-- US_FL_FIX_CAPACITY),
-+UNUSUAL_DEV( 0x04b0, 0x040f, 0x0100, 0x0200,
-+ "NIKON",
-+ "NIKON DSC D200",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_FIX_CAPACITY),
-
- /* Reported by Emil Larsson <emil@swip.net> */
- UNUSUAL_DEV( 0x04b0, 0x0411, 0x0100, 0x0101,
diff --git a/usb/usb-fix-directory-references-in-usb-readme.patch b/usb/usb-fix-directory-references-in-usb-readme.patch
deleted file mode 100644
index 5b5240b23ce2f0..00000000000000
--- a/usb/usb-fix-directory-references-in-usb-readme.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From dhohndel@linux.intel.com Wed Nov 7 16:28:08 2007
-From: Dirk Hohndel <hohndel@linux.intel.com>
-Date: Wed, 7 Nov 2007 16:27:23 -0800
-Subject: USB: fix directory references in usb/README
-To: Greg Kroah-Hartman <gregkh@suse.de>
-Message-ID: <20071108002723.GA5513@linux.intel.com>
-Content-Disposition: inline
-
-
-Another one in the "ok, this is trivial to fix" list... :-)
-
-[PATCH] fix directory references in usb/README
-
-Signed-off-by: Dirk Hohndel <hohndel@linux.intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/README | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/README
-+++ b/drivers/usb/README
-@@ -39,12 +39,12 @@ first subdirectory in the list below tha
-
- image/ - This is for still image drivers, like scanners or
- digital cameras.
--input/ - This is for any driver that uses the input subsystem,
-+../input/ - This is for any driver that uses the input subsystem,
- like keyboard, mice, touchscreens, tablets, etc.
--media/ - This is for multimedia drivers, like video cameras,
-+../media/ - This is for multimedia drivers, like video cameras,
- radios, and any other drivers that talk to the v4l
- subsystem.
--net/ - This is for network drivers.
-+../net/ - This is for network drivers.
- serial/ - This is for USB to serial drivers.
- storage/ - This is for USB mass-storage drivers.
- class/ - This is for all USB device drivers that do not fit
diff --git a/usb/usb-fix-locks-and-urb-status-in-adutux.patch b/usb/usb-fix-locks-and-urb-status-in-adutux.patch
deleted file mode 100644
index 8b36dc3d260e0c..00000000000000
--- a/usb/usb-fix-locks-and-urb-status-in-adutux.patch
+++ /dev/null
@@ -1,553 +0,0 @@
-From zaitcev@redhat.com Wed Oct 31 15:59:26 2007
-From: Pete Zaitcev <zaitcev@redhat.com>
-Date: Wed, 31 Oct 2007 15:59:30 -0700
-Subject: USB: FIx locks and urb->status in adutux (updated)
-To: greg@kroah.com
-Cc: zaitcev@redhat.com, <vitalivanov@gmail.com>, linux-usb-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, <netwiz@crc.id.au>
-Message-ID: <20071031155930.978242bc.zaitcev@redhat.com>
-
-
-Two main issues fixed here are:
- - An improper use of in-struct lock to protect an open count
- - Use of urb status for -EINPROGRESS
-
-Also, along the way:
- - Change usb_unlink_urb to usb_kill_urb. Apparently there's no need
- to use usb_unlink_urb whatsoever in this driver, and the old use of
- usb_kill_urb was outright racy (it unlinked and immediately freed).
- - Fix indentation in adu_write. Looks like it was damaged by a script.
- - Vitaly wants -EBUSY on multiply opens.
- - bInterval was taken from a wrong endpoint.
-
-Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
-Signed-off-by: Vitaliy Ivanov <vitalivanov@gmail.com>
-Tested-by: Vitaliy Ivanov <vitalivanov@gmail.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/misc/adutux.c | 262 ++++++++++++++++++++++++----------------------
- 1 file changed, 139 insertions(+), 123 deletions(-)
-
---- a/drivers/usb/misc/adutux.c
-+++ b/drivers/usb/misc/adutux.c
-@@ -79,12 +79,22 @@ MODULE_DEVICE_TABLE(usb, device_table);
-
- #define COMMAND_TIMEOUT (2*HZ) /* 60 second timeout for a command */
-
-+/*
-+ * The locking scheme is a vanilla 3-lock:
-+ * adu_device.buflock: A spinlock, covers what IRQs touch.
-+ * adutux_mutex: A Static lock to cover open_count. It would also cover
-+ * any globals, but we don't have them in 2.6.
-+ * adu_device.mtx: A mutex to hold across sleepers like copy_from_user.
-+ * It covers all of adu_device, except the open_count
-+ * and what .buflock covers.
-+ */
-+
- /* Structure to hold all of our device specific stuff */
- struct adu_device {
-- struct mutex mtx; /* locks this structure */
-+ struct mutex mtx;
- struct usb_device* udev; /* save off the usb device pointer */
- struct usb_interface* interface;
-- unsigned char minor; /* the starting minor number for this device */
-+ unsigned int minor; /* the starting minor number for this device */
- char serial_number[8];
-
- int open_count; /* number of times this port has been opened */
-@@ -107,8 +117,11 @@ struct adu_device {
- char* interrupt_out_buffer;
- struct usb_endpoint_descriptor* interrupt_out_endpoint;
- struct urb* interrupt_out_urb;
-+ int out_urb_finished;
- };
-
-+static DEFINE_MUTEX(adutux_mutex);
-+
- static struct usb_driver adu_driver;
-
- static void adu_debug_data(int level, const char *function, int size,
-@@ -132,27 +145,31 @@ static void adu_debug_data(int level, co
- */
- static void adu_abort_transfers(struct adu_device *dev)
- {
-- dbg(2," %s : enter", __FUNCTION__);
-+ unsigned long flags;
-
-- if (dev == NULL) {
-- dbg(1," %s : dev is null", __FUNCTION__);
-- goto exit;
-- }
-+ dbg(2," %s : enter", __FUNCTION__);
-
- if (dev->udev == NULL) {
- dbg(1," %s : udev is null", __FUNCTION__);
- goto exit;
- }
-
-- dbg(2," %s : udev state %d", __FUNCTION__, dev->udev->state);
-- if (dev->udev->state == USB_STATE_NOTATTACHED) {
-- dbg(1," %s : udev is not attached", __FUNCTION__);
-- goto exit;
-- }
--
- /* shutdown transfer */
-- usb_unlink_urb(dev->interrupt_in_urb);
-- usb_unlink_urb(dev->interrupt_out_urb);
-+
-+ /* XXX Anchor these instead */
-+ spin_lock_irqsave(&dev->buflock, flags);
-+ if (!dev->read_urb_finished) {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-+ usb_kill_urb(dev->interrupt_in_urb);
-+ } else
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-+
-+ spin_lock_irqsave(&dev->buflock, flags);
-+ if (!dev->out_urb_finished) {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-+ usb_kill_urb(dev->interrupt_out_urb);
-+ } else
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-
- exit:
- dbg(2," %s : leave", __FUNCTION__);
-@@ -162,8 +179,6 @@ static void adu_delete(struct adu_device
- {
- dbg(2, "%s enter", __FUNCTION__);
-
-- adu_abort_transfers(dev);
--
- /* free data structures */
- usb_free_urb(dev->interrupt_in_urb);
- usb_free_urb(dev->interrupt_out_urb);
-@@ -239,7 +254,10 @@ static void adu_interrupt_out_callback(s
- goto exit;
- }
-
-- wake_up_interruptible(&dev->write_wait);
-+ spin_lock(&dev->buflock);
-+ dev->out_urb_finished = 1;
-+ wake_up(&dev->write_wait);
-+ spin_unlock(&dev->buflock);
- exit:
-
- adu_debug_data(5, __FUNCTION__, urb->actual_length,
-@@ -252,12 +270,17 @@ static int adu_open(struct inode *inode,
- struct adu_device *dev = NULL;
- struct usb_interface *interface;
- int subminor;
-- int retval = 0;
-+ int retval;
-
- dbg(2,"%s : enter", __FUNCTION__);
-
- subminor = iminor(inode);
-
-+ if ((retval = mutex_lock_interruptible(&adutux_mutex))) {
-+ dbg(2, "%s : mutex lock failed", __FUNCTION__);
-+ goto exit_no_lock;
-+ }
-+
- interface = usb_find_interface(&adu_driver, subminor);
- if (!interface) {
- err("%s - error, can't find device for minor %d",
-@@ -267,54 +290,54 @@ static int adu_open(struct inode *inode,
- }
-
- dev = usb_get_intfdata(interface);
-- if (!dev) {
-+ if (!dev || !dev->udev) {
- retval = -ENODEV;
- goto exit_no_device;
- }
-
-- /* lock this device */
-- if ((retval = mutex_lock_interruptible(&dev->mtx))) {
-- dbg(2, "%s : mutex lock failed", __FUNCTION__);
-+ /* check that nobody else is using the device */
-+ if (dev->open_count) {
-+ retval = -EBUSY;
- goto exit_no_device;
- }
-
-- /* increment our usage count for the device */
- ++dev->open_count;
- dbg(2,"%s : open count %d", __FUNCTION__, dev->open_count);
-
- /* save device in the file's private structure */
- file->private_data = dev;
-
-- if (dev->open_count == 1) {
-- /* initialize in direction */
-- dev->read_buffer_length = 0;
-+ /* initialize in direction */
-+ dev->read_buffer_length = 0;
-
-- /* fixup first read by having urb waiting for it */
-- usb_fill_int_urb(dev->interrupt_in_urb,dev->udev,
-- usb_rcvintpipe(dev->udev,
-- dev->interrupt_in_endpoint->bEndpointAddress),
-- dev->interrupt_in_buffer,
-- le16_to_cpu(dev->interrupt_in_endpoint->wMaxPacketSize),
-- adu_interrupt_in_callback, dev,
-- dev->interrupt_in_endpoint->bInterval);
-- /* dev->interrupt_in_urb->transfer_flags |= URB_ASYNC_UNLINK; */
-- dev->read_urb_finished = 0;
-- retval = usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL);
-- if (retval)
-- --dev->open_count;
-- }
-- mutex_unlock(&dev->mtx);
-+ /* fixup first read by having urb waiting for it */
-+ usb_fill_int_urb(dev->interrupt_in_urb,dev->udev,
-+ usb_rcvintpipe(dev->udev,
-+ dev->interrupt_in_endpoint->bEndpointAddress),
-+ dev->interrupt_in_buffer,
-+ le16_to_cpu(dev->interrupt_in_endpoint->wMaxPacketSize),
-+ adu_interrupt_in_callback, dev,
-+ dev->interrupt_in_endpoint->bInterval);
-+ dev->read_urb_finished = 0;
-+ if (usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL))
-+ dev->read_urb_finished = 1;
-+ /* we ignore failure */
-+ /* end of fixup for first read */
-+
-+ /* initialize out direction */
-+ dev->out_urb_finished = 1;
-+
-+ retval = 0;
-
- exit_no_device:
-+ mutex_unlock(&adutux_mutex);
-+exit_no_lock:
- dbg(2,"%s : leave, return value %d ", __FUNCTION__, retval);
--
- return retval;
- }
-
--static int adu_release_internal(struct adu_device *dev)
-+static void adu_release_internal(struct adu_device *dev)
- {
-- int retval = 0;
--
- dbg(2," %s : enter", __FUNCTION__);
-
- /* decrement our usage count for the device */
-@@ -326,12 +349,11 @@ static int adu_release_internal(struct a
- }
-
- dbg(2," %s : leave", __FUNCTION__);
-- return retval;
- }
-
- static int adu_release(struct inode *inode, struct file *file)
- {
-- struct adu_device *dev = NULL;
-+ struct adu_device *dev;
- int retval = 0;
-
- dbg(2," %s : enter", __FUNCTION__);
-@@ -343,15 +365,13 @@ static int adu_release(struct inode *ino
- }
-
- dev = file->private_data;
--
- if (dev == NULL) {
- dbg(1," %s : object is NULL", __FUNCTION__);
- retval = -ENODEV;
- goto exit;
- }
-
-- /* lock our device */
-- mutex_lock(&dev->mtx); /* not interruptible */
-+ mutex_lock(&adutux_mutex); /* not interruptible */
-
- if (dev->open_count <= 0) {
- dbg(1," %s : device not opened", __FUNCTION__);
-@@ -359,19 +379,15 @@ static int adu_release(struct inode *ino
- goto exit;
- }
-
-+ adu_release_internal(dev);
- if (dev->udev == NULL) {
- /* the device was unplugged before the file was released */
-- mutex_unlock(&dev->mtx);
-- adu_delete(dev);
-- dev = NULL;
-- } else {
-- /* do the work */
-- retval = adu_release_internal(dev);
-+ if (!dev->open_count) /* ... and we're the last user */
-+ adu_delete(dev);
- }
-
- exit:
-- if (dev)
-- mutex_unlock(&dev->mtx);
-+ mutex_unlock(&adutux_mutex);
- dbg(2," %s : leave, return value %d", __FUNCTION__, retval);
- return retval;
- }
-@@ -393,12 +409,12 @@ static ssize_t adu_read(struct file *fil
-
- dev = file->private_data;
- dbg(2," %s : dev=%p", __FUNCTION__, dev);
-- /* lock this object */
-+
- if (mutex_lock_interruptible(&dev->mtx))
- return -ERESTARTSYS;
-
- /* verify that the device wasn't unplugged */
-- if (dev->udev == NULL || dev->minor == 0) {
-+ if (dev->udev == NULL) {
- retval = -ENODEV;
- err("No device or device unplugged %d", retval);
- goto exit;
-@@ -452,7 +468,7 @@ static ssize_t adu_read(struct file *fil
- should_submit = 1;
- } else {
- /* even the primary was empty - we may need to do IO */
-- if (dev->interrupt_in_urb->status == -EINPROGRESS) {
-+ if (!dev->read_urb_finished) {
- /* somebody is doing IO */
- spin_unlock_irqrestore(&dev->buflock, flags);
- dbg(2," %s : submitted already", __FUNCTION__);
-@@ -460,6 +476,7 @@ static ssize_t adu_read(struct file *fil
- /* we must initiate input */
- dbg(2," %s : initiate input", __FUNCTION__);
- dev->read_urb_finished = 0;
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-
- usb_fill_int_urb(dev->interrupt_in_urb,dev->udev,
- usb_rcvintpipe(dev->udev,
-@@ -469,15 +486,12 @@ static ssize_t adu_read(struct file *fil
- adu_interrupt_in_callback,
- dev,
- dev->interrupt_in_endpoint->bInterval);
-- retval = usb_submit_urb(dev->interrupt_in_urb, GFP_ATOMIC);
-- if (!retval) {
-- spin_unlock_irqrestore(&dev->buflock, flags);
-- dbg(2," %s : submitted OK", __FUNCTION__);
-- } else {
-+ retval = usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL);
-+ if (retval) {
-+ dev->read_urb_finished = 1;
- if (retval == -ENOMEM) {
- retval = bytes_read ? bytes_read : -ENOMEM;
- }
-- spin_unlock_irqrestore(&dev->buflock, flags);
- dbg(2," %s : submit failed", __FUNCTION__);
- goto exit;
- }
-@@ -486,10 +500,14 @@ static ssize_t adu_read(struct file *fil
- /* we wait for I/O to complete */
- set_current_state(TASK_INTERRUPTIBLE);
- add_wait_queue(&dev->read_wait, &wait);
-- if (!dev->read_urb_finished)
-+ spin_lock_irqsave(&dev->buflock, flags);
-+ if (!dev->read_urb_finished) {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
- timeout = schedule_timeout(COMMAND_TIMEOUT);
-- else
-+ } else {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
- set_current_state(TASK_RUNNING);
-+ }
- remove_wait_queue(&dev->read_wait, &wait);
-
- if (timeout <= 0) {
-@@ -509,19 +527,23 @@ static ssize_t adu_read(struct file *fil
-
- retval = bytes_read;
- /* if the primary buffer is empty then use it */
-- if (should_submit && !dev->interrupt_in_urb->status==-EINPROGRESS) {
-+ spin_lock_irqsave(&dev->buflock, flags);
-+ if (should_submit && dev->read_urb_finished) {
-+ dev->read_urb_finished = 0;
-+ spin_unlock_irqrestore(&dev->buflock, flags);
- usb_fill_int_urb(dev->interrupt_in_urb,dev->udev,
- usb_rcvintpipe(dev->udev,
- dev->interrupt_in_endpoint->bEndpointAddress),
-- dev->interrupt_in_buffer,
-- le16_to_cpu(dev->interrupt_in_endpoint->wMaxPacketSize),
-- adu_interrupt_in_callback,
-- dev,
-- dev->interrupt_in_endpoint->bInterval);
-- /* dev->interrupt_in_urb->transfer_flags |= URB_ASYNC_UNLINK; */
-- dev->read_urb_finished = 0;
-- usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL);
-+ dev->interrupt_in_buffer,
-+ le16_to_cpu(dev->interrupt_in_endpoint->wMaxPacketSize),
-+ adu_interrupt_in_callback,
-+ dev,
-+ dev->interrupt_in_endpoint->bInterval);
-+ if (usb_submit_urb(dev->interrupt_in_urb, GFP_KERNEL) != 0)
-+ dev->read_urb_finished = 1;
- /* we ignore failure */
-+ } else {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
- }
-
- exit:
-@@ -535,24 +557,24 @@ exit:
- static ssize_t adu_write(struct file *file, const __user char *buffer,
- size_t count, loff_t *ppos)
- {
-+ DECLARE_WAITQUEUE(waita, current);
- struct adu_device *dev;
- size_t bytes_written = 0;
- size_t bytes_to_write;
- size_t buffer_size;
-+ unsigned long flags;
- int retval;
-- int timeout = 0;
-
- dbg(2," %s : enter, count = %Zd", __FUNCTION__, count);
-
- dev = file->private_data;
-
-- /* lock this object */
- retval = mutex_lock_interruptible(&dev->mtx);
- if (retval)
- goto exit_nolock;
-
- /* verify that the device wasn't unplugged */
-- if (dev->udev == NULL || dev->minor == 0) {
-+ if (dev->udev == NULL) {
- retval = -ENODEV;
- err("No device or device unplugged %d", retval);
- goto exit;
-@@ -564,42 +586,37 @@ static ssize_t adu_write(struct file *fi
- goto exit;
- }
-
--
- while (count > 0) {
-- if (dev->interrupt_out_urb->status == -EINPROGRESS) {
-- timeout = COMMAND_TIMEOUT;
-+ add_wait_queue(&dev->write_wait, &waita);
-+ set_current_state(TASK_INTERRUPTIBLE);
-+ spin_lock_irqsave(&dev->buflock, flags);
-+ if (!dev->out_urb_finished) {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-
-- while (timeout > 0) {
-- if (signal_pending(current)) {
-+ mutex_unlock(&dev->mtx);
-+ if (signal_pending(current)) {
- dbg(1," %s : interrupted", __FUNCTION__);
-+ set_current_state(TASK_RUNNING);
- retval = -EINTR;
-- goto exit;
-+ goto exit_onqueue;
- }
-- mutex_unlock(&dev->mtx);
-- timeout = interruptible_sleep_on_timeout(&dev->write_wait, timeout);
-+ if (schedule_timeout(COMMAND_TIMEOUT) == 0) {
-+ dbg(1, "%s - command timed out.", __FUNCTION__);
-+ retval = -ETIMEDOUT;
-+ goto exit_onqueue;
-+ }
-+ remove_wait_queue(&dev->write_wait, &waita);
- retval = mutex_lock_interruptible(&dev->mtx);
- if (retval) {
- retval = bytes_written ? bytes_written : retval;
- goto exit_nolock;
- }
-- if (timeout > 0) {
-- break;
-- }
-- dbg(1," %s : interrupted timeout: %d", __FUNCTION__, timeout);
-- }
--
--
-- dbg(1," %s : final timeout: %d", __FUNCTION__, timeout);
--
-- if (timeout == 0) {
-- dbg(1, "%s - command timed out.", __FUNCTION__);
-- retval = -ETIMEDOUT;
-- goto exit;
-- }
--
-- dbg(4," %s : in progress, count = %Zd", __FUNCTION__, count);
-
-+ dbg(4," %s : in progress, count = %Zd", __FUNCTION__, count);
- } else {
-+ spin_unlock_irqrestore(&dev->buflock, flags);
-+ set_current_state(TASK_RUNNING);
-+ remove_wait_queue(&dev->write_wait, &waita);
- dbg(4," %s : sending, count = %Zd", __FUNCTION__, count);
-
- /* write the data into interrupt_out_buffer from userspace */
-@@ -622,11 +639,12 @@ static ssize_t adu_write(struct file *fi
- bytes_to_write,
- adu_interrupt_out_callback,
- dev,
-- dev->interrupt_in_endpoint->bInterval);
-- /* dev->interrupt_in_urb->transfer_flags |= URB_ASYNC_UNLINK; */
-+ dev->interrupt_out_endpoint->bInterval);
- dev->interrupt_out_urb->actual_length = bytes_to_write;
-+ dev->out_urb_finished = 0;
- retval = usb_submit_urb(dev->interrupt_out_urb, GFP_KERNEL);
- if (retval < 0) {
-+ dev->out_urb_finished = 1;
- err("Couldn't submit interrupt_out_urb %d", retval);
- goto exit;
- }
-@@ -637,16 +655,17 @@ static ssize_t adu_write(struct file *fi
- bytes_written += bytes_to_write;
- }
- }
--
-- retval = bytes_written;
-+ mutex_unlock(&dev->mtx);
-+ return bytes_written;
-
- exit:
-- /* unlock the device */
- mutex_unlock(&dev->mtx);
- exit_nolock:
--
- dbg(2," %s : leave, return value %d", __FUNCTION__, retval);
-+ return retval;
-
-+exit_onqueue:
-+ remove_wait_queue(&dev->write_wait, &waita);
- return retval;
- }
-
-@@ -831,25 +850,22 @@ static void adu_disconnect(struct usb_in
- dbg(2," %s : enter", __FUNCTION__);
-
- dev = usb_get_intfdata(interface);
-- usb_set_intfdata(interface, NULL);
-
-+ mutex_lock(&dev->mtx); /* not interruptible */
-+ dev->udev = NULL; /* poison */
- minor = dev->minor;
--
-- /* give back our minor */
- usb_deregister_dev(interface, &adu_class);
-- dev->minor = 0;
-+ mutex_unlock(&dev->mtx);
-
-- mutex_lock(&dev->mtx); /* not interruptible */
-+ mutex_lock(&adutux_mutex);
-+ usb_set_intfdata(interface, NULL);
-
- /* if the device is not opened, then we clean up right now */
- dbg(2," %s : open count %d", __FUNCTION__, dev->open_count);
-- if (!dev->open_count) {
-- mutex_unlock(&dev->mtx);
-+ if (!dev->open_count)
- adu_delete(dev);
-- } else {
-- dev->udev = NULL;
-- mutex_unlock(&dev->mtx);
-- }
-+
-+ mutex_unlock(&adutux_mutex);
-
- dev_info(&interface->dev, "ADU device adutux%d now disconnected\n",
- (minor - ADU_MINOR_BASE));
diff --git a/usb/usb-fix-priority-mistakes-in-drivers-usb-core-hub.c.patch b/usb/usb-fix-priority-mistakes-in-drivers-usb-core-hub.c.patch
deleted file mode 100644
index fa3518cdfbfae1..00000000000000
--- a/usb/usb-fix-priority-mistakes-in-drivers-usb-core-hub.c.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From linux-usb-devel-bounces@lists.sourceforge.net Fri Oct 26 14:54:56 2007
-From: Roel Kluin <12o3l@tiscali.nl>
-Date: Fri, 26 Oct 2007 23:54:35 +0200
-Subject: USB: Fix priority mistakes in drivers/usb/core/hub.c
-To: linux-usb-devel@lists.sourceforge.net
-Message-ID: <4722621B.9020107@tiscali.nl>
-
-
-Fixes priority mistakes similar to '!x & y'
-
-Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
-Acked-by: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/hub.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/core/hub.c
-+++ b/drivers/usb/core/hub.c
-@@ -335,7 +335,7 @@ static void kick_khubd(struct usb_hub *h
- to_usb_interface(hub->intfdev)->pm_usage_cnt = 1;
-
- spin_lock_irqsave(&hub_event_lock, flags);
-- if (!hub->disconnected & list_empty(&hub->event_list)) {
-+ if (!hub->disconnected && list_empty(&hub->event_list)) {
- list_add_tail(&hub->event_list, &hub_event_list);
- wake_up(&khubd_wait);
- }
diff --git a/usb/usb-fix-signr-comment-in-usbdevice_fs.h.patch b/usb/usb-fix-signr-comment-in-usbdevice_fs.h.patch
deleted file mode 100644
index c4acffa473385c..00000000000000
--- a/usb/usb-fix-signr-comment-in-usbdevice_fs.h.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From linux-usb-devel-bounces@lists.sourceforge.net Mon Oct 29 13:41:07 2007
-From: Phil Endecott <spam_from_usb_devel@chezphil.org>
-Date: Mon, 29 Oct 2007 20:40:30 +0000
-Subject: USB: Fix signr comment in usbdevice_fs.h
-To: "Alan Stern" <stern@rowland.harvard.edu>
-Cc: linux-usb-devel@lists.sourceforge.net
-Message-ID: <1193690430304@dmwebmail.japan.chezphil.org>
-
-
-This trivial documentation patch corrects a comment in usbdevice_fs.h; it
-previously suggested that the signal would only be sent on error, but I am
-told that it is sent on both successful and unsuccessful completion, and
-that zero indicates that no signal should be sent.
-
-Signed-off-by: Phil Endecott <spam_from_usb_devel@chezphil.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- include/linux/usbdevice_fs.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/include/linux/usbdevice_fs.h
-+++ b/include/linux/usbdevice_fs.h
-@@ -102,7 +102,8 @@ struct usbdevfs_urb {
- int start_frame;
- int number_of_packets;
- int error_count;
-- unsigned int signr; /* signal to be sent on error, -1 if none should be sent */
-+ unsigned int signr; /* signal to be sent on completion,
-+ or 0 if none should be sent. */
- void *usercontext;
- struct usbdevfs_iso_packet_desc iso_frame_desc[0];
- };
diff --git a/usb/usb-fix-up-ehci-startup-synchronization.patch b/usb/usb-fix-up-ehci-startup-synchronization.patch
deleted file mode 100644
index 62892feb3e23a0..00000000000000
--- a/usb/usb-fix-up-ehci-startup-synchronization.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From david-b@pacbell.net Mon Nov 26 21:59:26 2007
-From: David Brownell <david-b@pacbell.net>
-Date: Tue, 13 Nov 2007 16:22:30 -0800
-Subject: USB: fix up EHCI startup synchronization
-To: Greg KH <gregkh@suse.de>
-Cc: stern@rowland.harvard.edu, davem@davemloft.net, dely.l.sy@intel.com, stable@kernel.org, stable-commits@vger.kernel.org
-Message-ID: <200711131622.31183.david-b@pacbell.net>
-Content-Disposition: inline
-
-From: David Brownell <david-b@pacbell.net>
-
-A recent patch added software synchronization during EHCI startup,
-so ports aren't switched away from the companion controllers after
-resets have started. This patch adds a short delay letting hardware
-finish that port switching before any new resets begin ... so both
-ends of that hardware race window are closed.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Cc: Dave Miller <davem@davemloft.net>
-Cc: Dely Sy <dely.l.sy@intel.com>
-Cc: stable <stable@kernel.org>
-Cc: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/host/ehci-hcd.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/host/ehci-hcd.c
-+++ b/drivers/usb/host/ehci-hcd.c
-@@ -575,12 +575,15 @@ static int ehci_run (struct usb_hcd *hcd
- * from the companions to the EHCI controller. If any of the
- * companions are in the middle of a port reset at the time, it
- * could cause trouble. Write-locking ehci_cf_port_reset_rwsem
-- * guarantees that no resets are in progress.
-+ * guarantees that no resets are in progress. After we set CF,
-+ * a short delay lets the hardware catch up; new resets shouldn't
-+ * be started before the port switching actions could complete.
- */
- down_write(&ehci_cf_port_reset_rwsem);
- hcd->state = HC_STATE_RUNNING;
- ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
- ehci_readl(ehci, &ehci->regs->command); /* unblock posted writes */
-+ msleep(5);
- up_write(&ehci_cf_port_reset_rwsem);
-
- temp = HC_VERSION(ehci_readl(ehci, &ehci->caps->hc_capbase));
diff --git a/usb/usb-fix-usb_ohci_hcd_ssb-dependencies.patch b/usb/usb-fix-usb_ohci_hcd_ssb-dependencies.patch
deleted file mode 100644
index 9ff6bfa6a8dced..00000000000000
--- a/usb/usb-fix-usb_ohci_hcd_ssb-dependencies.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From bunk@kernel.org Fri Oct 26 22:19:45 2007
-From: Adrian Bunk <bunk@kernel.org>
-Date: Sat, 27 Oct 2007 03:06:47 +0200
-Subject: USB: fix USB_OHCI_HCD_SSB dependencies
-To: Ingo Molnar <mingo@elte.hu>, Michael Buesch <mb@bu3sch.de>, Greg Kroah-Hartman <gregkh@suse.de>
-Cc: linux-kernel@vger.kernel.org, linux-usb-devel@lists.sourceforge.net
-Message-ID: <20071027010647.GN30533@stusta.de>
-Content-Disposition: inline
-
-
-This patch fixes a bug introduced by
-commit b22817b3c81cdb18ffe3d2debfee968731a8b5f4.
-
-Signed-off-by: Adrian Bunk <bunk@kernel.org>
-Cc: Ingo Molnar <mingo@elte.hu>
-Cc: Michael Buesch <mb@bu3sch.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/host/Kconfig | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/host/Kconfig
-+++ b/drivers/usb/host/Kconfig
-@@ -156,7 +156,7 @@ config USB_OHCI_HCD_PCI
-
- config USB_OHCI_HCD_SSB
- bool "OHCI support for Broadcom SSB OHCI core"
-- depends on USB_OHCI_HCD && (SSB = y || SSB = CONFIG_USB_OHCI_HCD) && EXPERIMENTAL
-+ depends on USB_OHCI_HCD && (SSB = y || SSB = USB_OHCI_HCD) && EXPERIMENTAL
- default n
- ---help---
- Support for the Sonics Silicon Backplane (SSB) attached
diff --git a/usb/usb-fix-usbled-disconnect-read-race-2.patch b/usb/usb-fix-usbled-disconnect-read-race-2.patch
deleted file mode 100644
index 89ae420fd773d0..00000000000000
--- a/usb/usb-fix-usbled-disconnect-read-race-2.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From oliver@neukum.org Sun Oct 28 00:21:21 2007
-From: Oliver Neukum <oliver@neukum.org>
-Date: Sun, 28 Oct 2007 08:21:59 +0100
-Subject: USB: fix usbled disconnect read race #2
-To: greg@kroah.com, linux-usb-devel@lists.sourceforge.net
-Message-ID: <200710280821.59914.oliver@neukum.org>
-Content-Disposition: inline
-
-
-usbled has a race where show methods for attributes in sysfs can
-follow a NULL pointer during disconnect. The correct ordering fixes
-it.
-
-Signed-off-by: Oliver Neukum <oneukum@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-
----
- drivers/usb/misc/usbled.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/misc/usbled.c
-+++ b/drivers/usb/misc/usbled.c
-@@ -144,12 +144,14 @@ static void led_disconnect(struct usb_in
- struct usb_led *dev;
-
- dev = usb_get_intfdata (interface);
-- usb_set_intfdata (interface, NULL);
-
- device_remove_file(&interface->dev, &dev_attr_blue);
- device_remove_file(&interface->dev, &dev_attr_red);
- device_remove_file(&interface->dev, &dev_attr_green);
-
-+ /* first remove the files, then set the pointer to NULL */
-+ usb_set_intfdata (interface, NULL);
-+
- usb_put_dev(dev->udev);
-
- kfree(dev);
diff --git a/usb/usb-free-memory-when-writing-fails-in-usb-serial-mos7840.c.patch b/usb/usb-free-memory-when-writing-fails-in-usb-serial-mos7840.c.patch
deleted file mode 100644
index a85ba9ad0d2f72..00000000000000
--- a/usb/usb-free-memory-when-writing-fails-in-usb-serial-mos7840.c.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From linux-usb-devel-bounces@lists.sourceforge.net Fri Oct 26 18:36:57 2007
-From: Roel Kluin <12o3l@tiscali.nl>
-Date: Sat, 27 Oct 2007 03:36:37 +0200
-Subject: USB: free memory when writing fails in usb/serial/mos7840.c
-To: linux-usb-devel@lists.sourceforge.net
-Message-ID: <47229625.5090109@tiscali.nl>
-
-
-Free buffer when writing ZLP_REG5 failed
-
-Signed-off-by: Roel Kluin <12o3l@tiscali.nl>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/mos7840.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/serial/mos7840.c
-+++ b/drivers/usb/serial/mos7840.c
-@@ -2711,7 +2711,7 @@ static int mos7840_startup(struct usb_se
- status = mos7840_set_reg_sync(serial->port[0], ZLP_REG5, Data);
- if (status < 0) {
- dbg("Writing ZLP_REG5 failed status-0x%x\n", status);
-- return -1;
-+ goto error;
- } else
- dbg("ZLP_REG5 Writing success status%d\n", status);
-
diff --git a/usb/usb-hcd-avoid-duplicate-local_irq_disable.patch b/usb/usb-hcd-avoid-duplicate-local_irq_disable.patch
deleted file mode 100644
index 4a43f6ce84d03c..00000000000000
--- a/usb/usb-hcd-avoid-duplicate-local_irq_disable.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From akpm@linux-foundation.org Wed Nov 21 15:17:08 2007
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Wed, 21 Nov 2007 15:13:10 -0800
-Subject: USB HCD: avoid duplicate local_irq_disable()
-To: greg@kroah.com
-Cc: linux-usb-devel@lists.sourceforge.net, akpm@linux-foundation.org, stern@rowland.harvard.edu, arnd@arndb.de
-Message-ID: <200711212313.lALNDAXU014207@imap1.linux-foundation.org>
-
-
-From: Alan Stern <stern@rowland.harvard.edu>
-
-Arnd Bergmann wrote:
-
-usb_hcd_flush_endpoint() has a retry loop that starts with a spin_lock_irq(),
-but only gives up the spinlock, not the irq_disable before jumping to the
-rescan label.
-
-Alan Stern:
-
-I agree with your sentiment, but it would be better to solve this
-problem without using local_irq_disable().
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Cc: Arnd Bergmann <arnd@arndb.de>
-Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/hcd.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/core/hcd.c
-+++ b/drivers/usb/core/hcd.c
-@@ -1311,8 +1311,8 @@ void usb_hcd_flush_endpoint(struct usb_d
- hcd = bus_to_hcd(udev->bus);
-
- /* No more submits can occur */
--rescan:
- spin_lock_irq(&hcd_urb_list_lock);
-+rescan:
- list_for_each_entry (urb, &ep->urb_list, urb_list) {
- int is_in;
-
-@@ -1345,6 +1345,7 @@ rescan:
- usb_put_urb (urb);
-
- /* list contents may have changed */
-+ spin_lock(&hcd_urb_list_lock);
- goto rescan;
- }
- spin_unlock_irq(&hcd_urb_list_lock);
diff --git a/usb/usb-keep-track-of-whether-interface-sysfs-files-exist.patch b/usb/usb-keep-track-of-whether-interface-sysfs-files-exist.patch
deleted file mode 100644
index 454bcdf8c6f265..00000000000000
--- a/usb/usb-keep-track-of-whether-interface-sysfs-files-exist.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From stern@rowland.harvard.edu Mon Nov 26 21:35:59 2007
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Tue, 6 Nov 2007 11:43:42 -0500 (EST)
-Subject: USB: keep track of whether interface sysfs files exist
-To: Greg KH <greg@kroah.com>
-Message-ID: <Pine.LNX.4.44L0.0711061141370.3883-100000@iolanthe.rowland.org>
-
-
-This patch (as1009) solves the problem of multiple registrations for
-USB sysfs files in a more satisfying way than the existing code. It
-simply adds a flag to keep track of whether or not the files have been
-created; that way the files can be created or removed as needed.
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-
----
- drivers/usb/core/message.c | 12 ++----------
- drivers/usb/core/sysfs.c | 6 ++++++
- include/linux/usb.h | 1 +
- 3 files changed, 9 insertions(+), 10 deletions(-)
-
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -1172,7 +1172,6 @@ int usb_set_interface(struct usb_device
- struct usb_host_interface *alt;
- int ret;
- int manual = 0;
-- int changed;
-
- if (dev->state == USB_STATE_SUSPENDED)
- return -EHOSTUNREACH;
-@@ -1212,8 +1211,7 @@ int usb_set_interface(struct usb_device
- */
-
- /* prevent submissions using previous endpoint settings */
-- changed = (iface->cur_altsetting != alt);
-- if (changed && device_is_registered(&iface->dev))
-+ if (iface->cur_altsetting != alt && device_is_registered(&iface->dev))
- usb_remove_sysfs_intf_files(iface);
- usb_disable_interface(dev, iface);
-
-@@ -1250,7 +1248,7 @@ int usb_set_interface(struct usb_device
- * (Likewise, EP0 never "halts" on well designed devices.)
- */
- usb_enable_interface(dev, iface);
-- if (changed && device_is_registered(&iface->dev))
-+ if (device_is_registered(&iface->dev))
- usb_create_sysfs_intf_files(iface);
-
- return 0;
-@@ -1641,12 +1639,6 @@ free_interfaces:
- intf->dev.bus_id, ret);
- continue;
- }
--
-- /* The driver's probe method can call usb_set_interface(),
-- * which would mean the interface's sysfs files are already
-- * created. Just in case, we'll remove them first.
-- */
-- usb_remove_sysfs_intf_files(intf);
- usb_create_sysfs_intf_files(intf);
- }
-
---- a/drivers/usb/core/sysfs.c
-+++ b/drivers/usb/core/sysfs.c
-@@ -735,6 +735,8 @@ int usb_create_sysfs_intf_files(struct u
- struct usb_host_interface *alt = intf->cur_altsetting;
- int retval;
-
-+ if (intf->sysfs_files_created)
-+ return 0;
- retval = sysfs_create_group(&dev->kobj, &intf_attr_grp);
- if (retval)
- return retval;
-@@ -746,6 +748,7 @@ int usb_create_sysfs_intf_files(struct u
- if (intf->intf_assoc)
- retval = sysfs_create_group(&dev->kobj, &intf_assoc_attr_grp);
- usb_create_intf_ep_files(intf, udev);
-+ intf->sysfs_files_created = 1;
- return 0;
- }
-
-@@ -753,8 +756,11 @@ void usb_remove_sysfs_intf_files(struct
- {
- struct device *dev = &intf->dev;
-
-+ if (!intf->sysfs_files_created)
-+ return;
- usb_remove_intf_ep_files(intf);
- device_remove_file(dev, &dev_attr_interface);
- sysfs_remove_group(&dev->kobj, &intf_attr_grp);
- sysfs_remove_group(&intf->dev.kobj, &intf_assoc_attr_grp);
-+ intf->sysfs_files_created = 0;
- }
---- a/include/linux/usb.h
-+++ b/include/linux/usb.h
-@@ -157,6 +157,7 @@ struct usb_interface {
- * bound to */
- enum usb_interface_condition condition; /* state of binding */
- unsigned is_active:1; /* the interface is not suspended */
-+ unsigned sysfs_files_created:1; /* the sysfs attributes exist */
- unsigned needs_remote_wakeup:1; /* driver requires remote wakeup */
-
- struct device dev; /* interface specific device info */
diff --git a/usb/usb-mailing-lists-have-changed.patch b/usb/usb-mailing-lists-have-changed.patch
deleted file mode 100644
index 186cf0f9a7a121..00000000000000
--- a/usb/usb-mailing-lists-have-changed.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From foo@baz Tue Apr 9 12:12:43 2002
-Date: Wed, 21 Nov 2007 15:16:59 -0700
-To: Greg KH <greg@kroah.com>
-From: Greg Kroah-Hartman <gregkh@suse.de>
-Subject: USB: mailing lists have changed
-
-The linux-usb-devel and linux-usb-users are now hosted in the same list
-at vger.kernel.org
-
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- MAINTAINERS | 94 ++++++++++++++++++++++--------------------------------------
- 1 file changed, 35 insertions(+), 59 deletions(-)
-
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -323,8 +323,7 @@ S: Maintained
- ALCATEL SPEEDTOUCH USB DRIVER
- P: Duncan Sands
- M: duncan.sands@free.fr
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.linux-usb.org/SpeedTouch/
- S: Maintained
-
-@@ -1043,7 +1042,7 @@ S: Maintained
- CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
- P: Lennert Buytenhek
- M: kernel@wantstofly.org
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
-@@ -1552,7 +1551,7 @@ S: Maintained
- FREESCALE HIGHSPEED USB DEVICE DRIVER
- P: Li Yang
- M: leoli@freescale.com
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: linuxppc-dev@ozlabs.org
- S: Maintained
-
-@@ -3810,22 +3809,20 @@ S: Maintained
- USB ACM DRIVER
- P: Oliver Neukum
- M: oliver@neukum.name
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB BLOCK DRIVER (UB ub)
- P: Pete Zaitcev
- M: zaitcev@redhat.com
- L: linux-kernel@vger.kernel.org
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Supported
-
- USB CDC ETHERNET DRIVER
- P: Greg Kroah-Hartman
- M: greg@kroah.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
- W: http://www.kroah.com/linux-usb/
-
-@@ -3839,13 +3836,13 @@ S: Maintained
- USB EHCI DRIVER
- P: David Brownell
- M: dbrownell@users.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Odd Fixes
-
- USB ET61X[12]51 DRIVER
- P: Luca Risolia
- M: luca.risolia@studio.unibo.it
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: video4linux-list@redhat.com
- W: http://www.linux-projects.org
- S: Maintained
-@@ -3853,34 +3850,33 @@ S: Maintained
- USB GADGET/PERIPHERAL SUBSYSTEM
- P: David Brownell
- M: dbrownell@users.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.linux-usb.org/gadget
- S: Maintained
-
- USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
- P: Jiri Kosina
- M: jkosina@suse.cz
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
- S: Maintained
-
- USB ISP116X DRIVER
- P: Olav Kongas
- M: ok@artecdesign.ee
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB KAWASAKI LSI DRIVER
- P: Oliver Neukum
- M: oliver@neukum.name
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB MASS STORAGE DRIVER
- P: Matthew Dharm
- M: mdharm-usb@one-eyed-alien.net
--L: linux-usb-users@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: usb-storage@lists.one-eyed-alien.net
- S: Maintained
- W: http://www.one-eyed-alien.net/~mdharm/linux-usb/
-@@ -3888,28 +3884,26 @@ W: http://www.one-eyed-alien.net/~mdharm
- USB OHCI DRIVER
- P: David Brownell
- M: dbrownell@users.sourceforge.net
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Odd Fixes
-
- USB OPTION-CARD DRIVER
- P: Matthias Urlichs
- M: smurf@smurf.noris.de
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB OV511 DRIVER
- P: Mark McClelland
- M: mmcclell@bigfoot.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://alpha.dyndns.org/ov511/
- S: Maintained
-
- USB PEGASUS DRIVER
- P: Petko Manolov
- M: petkan@users.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: netdev@vger.kernel.org
- W: http://pegasus2.sourceforge.net/
- S: Maintained
-@@ -3917,14 +3911,13 @@ S: Maintained
- USB PRINTER DRIVER (usblp)
- P: Pete Zaitcev
- M: zaitcev@redhat.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Supported
-
- USB RTL8150 DRIVER
- P: Petko Manolov
- M: petkan@users.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: netdev@vger.kernel.org
- W: http://pegasus2.sourceforge.net/
- S: Maintained
-@@ -3932,8 +3925,7 @@ S: Maintained
- USB SE401 DRIVER
- P: Jeroen Vreeken
- M: pe1rxq@amsat.org
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.chello.nl/~j.vreeken/se401/
- S: Maintained
-
-@@ -3947,72 +3939,59 @@ USB SERIAL DIGI ACCELEPORT DRIVER
- P: Peter Berger and Al Borchers
- M: pberger@brimson.com
- M: alborchers@steinerpoint.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB SERIAL DRIVER
- P: Greg Kroah-Hartman
- M: gregkh@suse.de
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Supported
-
- USB SERIAL BELKIN F5U103 DRIVER
- P: William Greathouse
- M: wgreathouse@smva.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB SERIAL CYPRESS M8 DRIVER
- P: Lonnie Mendez
- M: dignome@gmail.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
- W: http://geocities.com/i0xox0i
- W: http://firstlight.net/cvs
-
--USB SERIAL CYBERJACK PINPAD/E-COM DRIVER
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
--S: Maintained
--
- USB AUERSWALD DRIVER
- P: Wolfgang Muees
- M: wolfgang@iksw-muees.de
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
- P: Gary Brubaker
- M: xavyer@ix.netcom.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB SERIAL KEYSPAN DRIVER
- P: Greg Kroah-Hartman
- M: greg@kroah.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.kroah.com/linux/
- S: Maintained
-
- USB SERIAL WHITEHEAT DRIVER
- P: Support Department
- M: support@connecttech.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.connecttech.com
- S: Supported
-
- USB SN9C1xx DRIVER
- P: Luca Risolia
- M: luca.risolia@studio.unibo.it
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: video4linux-list@redhat.com
- W: http://www.linux-projects.org
- S: Maintained
-@@ -4020,8 +3999,7 @@ S: Maintained
- USB SUBSYSTEM
- P: Greg Kroah-Hartman
- M: gregkh@suse.de
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://www.linux-usb.org
- T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
- S: Supported
-@@ -4029,8 +4007,7 @@ S: Supported
- USB UHCI DRIVER
- P: Alan Stern
- M: stern@rowland.harvard.edu
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- S: Maintained
-
- USB "USBNET" DRIVER FRAMEWORK
-@@ -4043,7 +4020,7 @@ S: Maintained
- USB W996[87]CF DRIVER
- P: Luca Risolia
- M: luca.risolia@studio.unibo.it
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: video4linux-list@redhat.com
- W: http://www.linux-projects.org
- S: Maintained
-@@ -4051,7 +4028,7 @@ S: Maintained
- USB ZC0301 DRIVER
- P: Luca Risolia
- M: luca.risolia@studio.unibo.it
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: video4linux-list@redhat.com
- W: http://www.linux-projects.org
- S: Maintained
-@@ -4059,15 +4036,14 @@ S: Maintained
- USB ZD1201 DRIVER
- P: Jeroen Vreeken
- M: pe1rxq@amsat.org
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- W: http://linux-lc100020.sourceforge.net
- S: Maintained
-
- USB ZR364XX DRIVER
- P: Antoine Jacquet
- M: royale@zerezo.com
--L: linux-usb-devel@lists.sourceforge.net
-+L: linux-usb@vger.kernel.org
- L: video4linux-list@redhat.com
- W: http://royale.zerezo.com/zr364xx/
- S: Maintained
diff --git a/usb/usb-make-the-microtek-driver-and-hal-cooperate.patch b/usb/usb-make-the-microtek-driver-and-hal-cooperate.patch
deleted file mode 100644
index 4dabff476e61e3..00000000000000
--- a/usb/usb-make-the-microtek-driver-and-hal-cooperate.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From oliver@neukum.org Mon Nov 26 21:56:42 2007
-From: Oliver Neukum <oliver@neukum.org>
-Date: Mon, 12 Nov 2007 14:08:43 +0100
-Subject: USB: make the microtek driver and HAL cooperate
-To: Greg KH <gregkh@suse.de>, linux-usb-devel@lists.sourceforge.net
-Message-ID: <200711121408.43411.oliver@neukum.org>
-Content-Disposition: inline
-
-
-to make HAL like the microtek driver's devices the parent must be
-correctly set.
-
-Signed-off-by: Oliver Neukum <oneukum@suse.de>
-Cc: stable <stable@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/image/microtek.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/usb/image/microtek.c
-+++ b/drivers/usb/image/microtek.c
-@@ -819,7 +819,7 @@ static int mts_usb_probe(struct usb_inte
- goto out_kfree2;
-
- new_desc->host->hostdata[0] = (unsigned long)new_desc;
-- if (scsi_add_host(new_desc->host, NULL)) {
-+ if (scsi_add_host(new_desc->host, &dev->dev)) {
- err_retval = -EIO;
- goto out_host_put;
- }
diff --git a/usb/usb-omap_udc-build-fix.patch b/usb/usb-omap_udc-build-fix.patch
deleted file mode 100644
index 20e72d01091296..00000000000000
--- a/usb/usb-omap_udc-build-fix.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From david-b@pacbell.net Fri Oct 26 22:20:24 2007
-From: David Brownell <david-b@pacbell.net>
-Date: Fri, 26 Oct 2007 13:42:18 -0700
-Subject: USB: omap_udc build fix
-To: Greg KH <greg@kroah.com>
-Cc: linux-usb-devel@lists.sourceforge.net
-Message-ID: <200710261342.18975.david-b@pacbell.net>
-Content-Disposition: inline
-
-This fixes some build errors ... unclear how this got past earlier tests.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/omap_udc.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/gadget/omap_udc.c
-+++ b/drivers/usb/gadget/omap_udc.c
-@@ -1241,14 +1241,14 @@ static void pullup_enable(struct omap_ud
- udc->gadget.dev.parent->power.power_state = PMSG_ON;
- udc->gadget.dev.power.power_state = PMSG_ON;
- UDC_SYSCON1_REG |= UDC_PULLUP_EN;
-- if (!gadget_is_otg(udc->gadget) && !cpu_is_omap15xx())
-+ if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx())
- OTG_CTRL_REG |= OTG_BSESSVLD;
- UDC_IRQ_EN_REG = UDC_DS_CHG_IE;
- }
-
- static void pullup_disable(struct omap_udc *udc)
- {
-- if (!gadget_is_otg(udc->gadget) && !cpu_is_omap15xx())
-+ if (!gadget_is_otg(&udc->gadget) && !cpu_is_omap15xx())
- OTG_CTRL_REG &= ~OTG_BSESSVLD;
- UDC_IRQ_EN_REG = UDC_DS_CHG_IE;
- UDC_SYSCON1_REG &= ~UDC_PULLUP_EN;
-@@ -1386,7 +1386,7 @@ static void update_otg(struct omap_udc *
- {
- u16 devstat;
-
-- if (!gadget_is_otg(udc->gadget))
-+ if (!gadget_is_otg(&udc->gadget))
- return;
-
- if (OTG_CTRL_REG & OTG_ID)
diff --git a/usb/usb-pl2303-add-support-for-corega-cg-usbrs232r.patch b/usb/usb-pl2303-add-support-for-corega-cg-usbrs232r.patch
deleted file mode 100644
index f6b3a2d860750b..00000000000000
--- a/usb/usb-pl2303-add-support-for-corega-cg-usbrs232r.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From magnus.damm@gmail.com Wed Nov 7 23:47:03 2007
-From: Magnus Damm <magnus.damm@gmail.com>
-Date: Thu, 08 Nov 2007 16:45:46 +0900
-Subject: USB: pl2303: add support for Corega CG-USBRS232R
-To: linux-usb-devel@lists.sourceforge.net
-Cc: greg@kroah.com,Magnus Damm <magnus.damm@gmail.com>
-Message-ID: <20071108074546.4026.26851.sendpatchset@clockwork.opensource.se>
-
-
-pl2303: add support for Corega CG-USBRS232R
-
-This patch adds support for Corega CG-USBRS232R Serial Adapters.
-
-Signed-off-by: Magnus Damm <damm@igel.co.jp>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/pl2303.c | 1 +
- drivers/usb/serial/pl2303.h | 3 +++
- 2 files changed, 4 insertions(+)
-
---- a/drivers/usb/serial/pl2303.c
-+++ b/drivers/usb/serial/pl2303.c
-@@ -86,6 +86,7 @@ static struct usb_device_id id_table []
- { USB_DEVICE(ALCOR_VENDOR_ID, ALCOR_PRODUCT_ID) },
- { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_ID) },
- { USB_DEVICE(WS002IN_VENDOR_ID, WS002IN_PRODUCT_ID) },
-+ { USB_DEVICE(COREGA_VENDOR_ID, COREGA_PRODUCT_ID) },
- { } /* Terminating entry */
- };
-
---- a/drivers/usb/serial/pl2303.h
-+++ b/drivers/usb/serial/pl2303.h
-@@ -104,3 +104,6 @@
- #define WS002IN_VENDOR_ID 0x11f6
- #define WS002IN_PRODUCT_ID 0x2001
-
-+/* Corega CG-USBRS232R Serial Adapter */
-+#define COREGA_VENDOR_ID 0x07aa
-+#define COREGA_PRODUCT_ID 0x002a
diff --git a/usb/usb-power-management-documenation-update.patch b/usb/usb-power-management-documenation-update.patch
deleted file mode 100644
index c340633c744fa5..00000000000000
--- a/usb/usb-power-management-documenation-update.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From stern@rowland.harvard.edu Fri Nov 16 08:58:23 2007
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Fri, 16 Nov 2007 11:58:15 -0500 (EST)
-Subject: USB: power-management documenation update
-To: Greg KH <greg@kroah.com>, Tilman Schmidt <tilman@imap.cc>
-Cc: USB development list <linux-usb-devel@lists.sourceforge.net>
-Message-ID: <Pine.LNX.4.44L0.0711161157390.3268-100000@iolanthe.rowland.org>
-
-
-This patch (as1014) was partly written by Tilman Schmidt. It
-clarifies the USB power-management documentation by explaining that
-when a disconnect occurs, a suspend method call might not be followed
-by either a resume or a reset_resume call.
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Tilman Schmidt <tilman@imap.cc>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- Documentation/usb/power-management.txt | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/Documentation/usb/power-management.txt
-+++ b/Documentation/usb/power-management.txt
-@@ -278,6 +278,14 @@ optional. The methods' jobs are quite s
- (although the interfaces will be in the same altsettings as
- before the suspend).
-
-+If the device is disconnected or powered down while it is suspended,
-+the disconnect method will be called instead of the resume or
-+reset_resume method. This is also quite likely to happen when
-+waking up from hibernation, as many systems do not maintain suspend
-+current to the USB host controllers during hibernation. (It's
-+possible to work around the hibernation-forces-disconnect problem by
-+using the USB Persist facility.)
-+
- The reset_resume method is used by the USB Persist facility (see
- Documentation/usb/persist.txt) and it can also be used under certain
- circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a
diff --git a/usb/usb-remove-usb-hub-entry-from-maintainers.patch b/usb/usb-remove-usb-hub-entry-from-maintainers.patch
deleted file mode 100644
index 7f46e31186bca0..00000000000000
--- a/usb/usb-remove-usb-hub-entry-from-maintainers.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From david-b@pacbell.net Wed Nov 7 13:31:47 2007
-From: David Brownell <david-b@pacbell.net>
-Date: Wed, 7 Nov 2007 12:59:54 -0800
-Subject: USB: remove USB HUB entry from MAINTAINERS
-To: Greg KH <greg@kroah.com>
-Cc: linux-usb-devel@lists.sourceforge.net
-Message-ID: <200711071259.55061.david-b@pacbell.net>
-Content-Disposition: inline
-
-
-Digging through old mail, I found a note about needing to remove the
-separate entry for the USB HUB driver. It's not been separable from
-usbcore (host side!) since quite early in the 2.4 kernel series.
-And Johanness certainly isn't involved with it any more.
-
-Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- MAINTAINERS | 7 -------
- 1 file changed, 7 deletions(-)
-
---- a/MAINTAINERS
-+++ b/MAINTAINERS
-@@ -3864,13 +3864,6 @@ L: linux-usb-devel@lists.sourceforge.net
- T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
- S: Maintained
-
--USB HUB DRIVER
--P: Johannes Erdfelt
--M: johannes@erdfelt.com
--L: linux-usb-users@lists.sourceforge.net
--L: linux-usb-devel@lists.sourceforge.net
--S: Maintained
--
- USB ISP116X DRIVER
- P: Olav Kongas
- M: ok@artecdesign.ee
diff --git a/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch b/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch
deleted file mode 100644
index c0ec15f88829fe..00000000000000
--- a/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ben-linux@fluff.org Mon Nov 26 23:06:43 2007
-From: Ben Dooks <ben-linux@fluff.org>
-Date: Mon, 19 Nov 2007 22:28:14 +0000
-Subject: USB: s3c2410 gadget: allow sharing of vbus irq
-To: Linux USB Devel <linux-usb-devel@lists.sourceforge.net>
-Cc: vince@simtec.co.uk, Greg KH <greg@kroah.com>, Ben Dooks <ben-linux@fluff.org>
-Message-ID: <20071119222847.060352719@fluff.org>
-
-
-If another driver wants to claim the vbus pin, say
-to notify the user of an connect/disconnect then allow
-the IRQ to be shared by specifiying IRQ_SHARED in the
-flags.
-
-Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/s3c2410_udc.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/gadget/s3c2410_udc.c
-+++ b/drivers/usb/gadget/s3c2410_udc.c
-@@ -1872,9 +1872,9 @@ static int s3c2410_udc_probe(struct plat
- if (udc_info && udc_info->vbus_pin > 0) {
- irq = s3c2410_gpio_getirq(udc_info->vbus_pin);
- retval = request_irq(irq, s3c2410_udc_vbus_irq,
-- IRQF_DISABLED | IRQF_TRIGGER_RISING
-- | IRQF_TRIGGER_FALLING,
-- gadget_name, udc);
-+ IRQF_DISABLED | IRQF_TRIGGER_RISING
-+ | IRQF_TRIGGER_FALLING | IRQF_SHARED,
-+ gadget_name, udc);
-
- if (retval != 0) {
- dev_err(dev, "can't get vbus irq %i, err %d\n",
diff --git a/usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch b/usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch
deleted file mode 100644
index 756d225ce36c1e..00000000000000
--- a/usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ben-linux@fluff.org Mon Nov 26 23:07:05 2007
-From: Ben Dooks <ben-linux@fluff.org>
-Date: Mon, 19 Nov 2007 22:28:15 +0000
-Subject: USB: s3c2410 gadget: ensure vbus pin in input mode during read
-To: Linux USB Devel <linux-usb-devel@lists.sourceforge.net>
-Cc: vince@simtec.co.uk, Greg KH <greg@kroah.com>, Ben Dooks <ben-linux@fluff.org>
-Message-ID: <20071119222847.239944382@fluff.org>
-
-
-Some CPUs in the S3C24XX series do not support readback of the
-value of a pin when the pin has been configured to an IRQ.
-
-Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/gadget/s3c2410_udc.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/drivers/usb/gadget/s3c2410_udc.c
-+++ b/drivers/usb/gadget/s3c2410_udc.c
-@@ -1511,7 +1511,11 @@ static irqreturn_t s3c2410_udc_vbus_irq(
- unsigned int value;
-
- dprintk(DEBUG_NORMAL, "%s()\n", __func__);
-+
-+ /* some cpus cannot read from an line configured to IRQ! */
-+ s3c2410_gpio_cfgpin(udc_info->vbus_pin, S3C2410_GPIO_INPUT);
- value = s3c2410_gpio_getpin(udc_info->vbus_pin);
-+ s3c2410_gpio_cfgpin(udc_info->vbus_pin, S3C2410_GPIO_SFN2);
-
- if (udc_info->vbus_pin_inverted)
- value = !value;
diff --git a/usb/usb-s3c2410-gadget-header-move-fixups.patch b/usb/usb-s3c2410-gadget-header-move-fixups.patch
deleted file mode 100644
index 34730c3b25795c..00000000000000
--- a/usb/usb-s3c2410-gadget-header-move-fixups.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ben-linux@fluff.org Mon Nov 26 23:05:09 2007
-From: Ben Dooks <ben-linux@fluff.org>
-Date: Mon, 19 Nov 2007 22:28:13 +0000
-Subject: USB: s3c2410 gadget: Header move fixups
-To: Linux USB Devel <linux-usb-devel@lists.sourceforge.net>
-Cc: vince@simtec.co.uk, Greg KH <greg@kroah.com>, Ben Dooks <ben-linux@fluff.org>
-Message-ID: <20071119222846.887780944@fluff.org>
-
-
-Fixup the fallout from the arch moves earlier in the kernel
-series.
-
-Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-Acked-by: David Brownell <dbrownell@users.sourceforge.net>
-
----
- drivers/usb/gadget/s3c2410_udc.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
---- a/drivers/usb/gadget/s3c2410_udc.c
-+++ b/drivers/usb/gadget/s3c2410_udc.c
-@@ -52,10 +52,10 @@
- #include <asm/arch/irqs.h>
-
- #include <asm/arch/hardware.h>
--#include <asm/arch/regs-clock.h>
- #include <asm/arch/regs-gpio.h>
--#include <asm/arch/regs-udc.h>
--#include <asm/arch/udc.h>
-+
-+#include <asm/plat-s3c24xx/regs-udc.h>
-+#include <asm/plat-s3c24xx/udc.h>
-
- #include <asm/mach-types.h>
-
diff --git a/usb/usb-sierra-new-product-id.patch b/usb/usb-sierra-new-product-id.patch
deleted file mode 100644
index 34fdf205b1661e..00000000000000
--- a/usb/usb-sierra-new-product-id.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From agilmore@wirelessbeehive.com Mon Nov 26 15:05:18 2007
-From: agilmore@wirelessbeehive.com
-Date: Tue, 20 Nov 2007 13:39:03 -0700 (MST)
-Subject: USB: sierra: new product id
-To: "Greg KH" <greg@kroah.com>
-Cc: "Kevin Lloyd" <klloyd@sierrawireless.com>
-Message-ID: <44636.140.217.14.154.1195591143.squirrel@mail.wirelessbeehive.com>
-
-
-Per the maintainer of the usbserial/sierra.c driver, the patch below adds
-a new id to the list of supported cards for the sierra driver. Tested and
-working for me on Fedora 8, kernel 2.6.23 and on the more recent sierra.c
-available in
-http://www.sierrawireless.com/resources/support/Software/Linux/v.1.2.6b(kernel2.6.21).zip
-
-Hardware is a MiniPCI card in a Lenovo T61p.
-
-
-Signed-off-by: Andrew Gilmore <agilmore@wirelessbeehive.com>
-Cc: Kevin Lloyd <linux@sierrawireless.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/sierra.c | 2 ++
- 1 file changed, 2 insertions(+)
-
---- a/drivers/usb/serial/sierra.c
-+++ b/drivers/usb/serial/sierra.c
-@@ -136,6 +136,8 @@ static struct usb_device_id id_table_3po
- { USB_DEVICE(0x0f30, 0x1b1d) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x1199, 0x0218) }, /* Sierra Wireless MC5720 */
- { USB_DEVICE(0x1199, 0x0020) }, /* Sierra Wireless MC5725 */
-+ { USB_DEVICE(0x1199, 0x0220) }, /* Sierra Wireless MC5725 */
-+ { USB_DEVICE(0x1199, 0x0220) }, /* Sierra Wireless MC5725 */
- { USB_DEVICE(0x1199, 0x0019) }, /* Sierra Wireless AirCard 595 */
- { USB_DEVICE(0x1199, 0x0021) }, /* Sierra Wireless AirCard 597E */
- { USB_DEVICE(0x1199, 0x0120) }, /* Sierra Wireless USB Dongle 595U*/
diff --git a/usb/usb-storage-always-set-the-allow_restart-flag.patch b/usb/usb-storage-always-set-the-allow_restart-flag.patch
deleted file mode 100644
index a66c9fdcbf259e..00000000000000
--- a/usb/usb-storage-always-set-the-allow_restart-flag.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From stern@rowland.harvard.edu Wed Oct 10 13:29:09 2007
-From: Mauro Carvalho Chehab <mchehab@infradead.org>
-Date: Wed, 10 Oct 2007 16:29:02 -0400 (EDT)
-Subject: usb-storage: always set the allow_restart flag
-To: Greg KH <greg@kroah.com>, Matthew Dharm <mdharm-usb@one-eyed-alien.net>
-Cc: Mauro Carvalho Chehab <mchehab@infradead.org>, USB Storage list <usb-storage@lists.one-eyed-alien.net>
-Message-ID: <Pine.LNX.4.44L0.0710101627250.2739-100000@iolanthe.rowland.org>
-
-
-From: Mauro Carvalho Chehab <mchehab@infradead.org>
-
-This patch (as1000) sets the SCSI allow_restart flag for USB disk
-devices. In theory this should never hurt, and there definitely are
-devices out there (such as the Seagate 250-GB external drive) which
-need the flag to be set.
-
-Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/storage/scsiglue.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/drivers/usb/storage/scsiglue.c
-+++ b/drivers/usb/storage/scsiglue.c
-@@ -177,6 +177,10 @@ static int slave_configure(struct scsi_d
- * is an occasional series of retries that will all fail. */
- sdev->retry_hwerror = 1;
-
-+ /* USB disks should allow restart. Some drives spin down
-+ * automatically, requiring a START-STOP UNIT command. */
-+ sdev->allow_restart = 1;
-+
- } else {
-
- /* Non-disk-type devices don't need to blacklist any pages
diff --git a/usb/usb-uevent-environment-key-fix.patch b/usb/usb-uevent-environment-key-fix.patch
deleted file mode 100644
index ba552967e5d09c..00000000000000
--- a/usb/usb-uevent-environment-key-fix.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From stern@rowland.harvard.edu Mon Nov 26 21:37:07 2007
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Tue, 6 Nov 2007 15:01:52 -0500 (EST)
-Subject: USB: uevent environment key fix
-To: Kay Sievers <kay.sievers@vrfy.org>, Greg KH <greg@kroah.com>
-Cc: USB development list <linux-usb@vger.kernel.org>
-Message-ID: <Pine.LNX.4.44L0.0711061500520.8694-100000@iolanthe.rowland.org>
-
-
-This patch (as1010) was written by both Kay Sievers and me. It solves
-the problem of duplicated keys in USB uevent structures by refactoring
-the uevent subroutines, taking advantage of the way the hotplug core
-calls uevent handlers for the device's bus and for the device's type.
-Keys needed for both USB-device and USB-interface events are added in
-usb_uevent(), which is the bus handler. Keys appropriate only for
-USB-device or USB-interface events are added in usb_dev_uevent() or
-usb_if_uevent() respectively, the type handlers.
-
-In addition, unnecessary tests for NULL pointers are removed as are
-duplicated debugging log statements.
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Cc: Kay Sievers <kay.sievers@vrfy.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/core/driver.c | 11 -----------
- drivers/usb/core/message.c | 24 ------------------------
- drivers/usb/core/usb.c | 25 +++++++++++++++++++++++++
- 3 files changed, 25 insertions(+), 35 deletions(-)
-
---- a/drivers/usb/core/driver.c
-+++ b/drivers/usb/core/driver.c
-@@ -585,9 +585,6 @@ static int usb_uevent(struct device *dev
- {
- struct usb_device *usb_dev;
-
-- if (!dev)
-- return -ENODEV;
--
- /* driver is often null here; dev_dbg() would oops */
- pr_debug ("usb %s: uevent\n", dev->bus_id);
-
-@@ -631,14 +628,6 @@ static int usb_uevent(struct device *dev
- usb_dev->descriptor.bDeviceProtocol))
- return -ENOMEM;
-
-- if (add_uevent_var(env, "BUSNUM=%03d",
-- usb_dev->bus->busnum))
-- return -ENOMEM;
--
-- if (add_uevent_var(env, "DEVNUM=%03d",
-- usb_dev->devnum))
-- return -ENOMEM;
--
- return 0;
- }
-
---- a/drivers/usb/core/message.c
-+++ b/drivers/usb/core/message.c
-@@ -1346,34 +1346,10 @@ static int usb_if_uevent(struct device *
- struct usb_interface *intf;
- struct usb_host_interface *alt;
-
-- if (!dev)
-- return -ENODEV;
--
-- /* driver is often null here; dev_dbg() would oops */
-- pr_debug ("usb %s: uevent\n", dev->bus_id);
--
- intf = to_usb_interface(dev);
- usb_dev = interface_to_usbdev(intf);
- alt = intf->cur_altsetting;
-
--#ifdef CONFIG_USB_DEVICEFS
-- if (add_uevent_var(env, "DEVICE=/proc/bus/usb/%03d/%03d",
-- usb_dev->bus->busnum, usb_dev->devnum))
-- return -ENOMEM;
--#endif
--
-- if (add_uevent_var(env, "PRODUCT=%x/%x/%x",
-- le16_to_cpu(usb_dev->descriptor.idVendor),
-- le16_to_cpu(usb_dev->descriptor.idProduct),
-- le16_to_cpu(usb_dev->descriptor.bcdDevice)))
-- return -ENOMEM;
--
-- if (add_uevent_var(env, "TYPE=%d/%d/%d",
-- usb_dev->descriptor.bDeviceClass,
-- usb_dev->descriptor.bDeviceSubClass,
-- usb_dev->descriptor.bDeviceProtocol))
-- return -ENOMEM;
--
- if (add_uevent_var(env, "INTERFACE=%d/%d/%d",
- alt->desc.bInterfaceClass,
- alt->desc.bInterfaceSubClass,
---- a/drivers/usb/core/usb.c
-+++ b/drivers/usb/core/usb.c
-@@ -192,9 +192,34 @@ static void usb_release_dev(struct devic
- kfree(udev);
- }
-
-+#ifdef CONFIG_HOTPLUG
-+static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
-+{
-+ struct usb_device *usb_dev;
-+
-+ usb_dev = to_usb_device(dev);
-+
-+ if (add_uevent_var(env, "BUSNUM=%03d", usb_dev->bus->busnum))
-+ return -ENOMEM;
-+
-+ if (add_uevent_var(env, "DEVNUM=%03d", usb_dev->devnum))
-+ return -ENOMEM;
-+
-+ return 0;
-+}
-+
-+#else
-+
-+static int usb_dev_uevent(struct device *dev, struct kobj_uevent_env *env)
-+{
-+ return -ENODEV;
-+}
-+#endif /* CONFIG_HOTPLUG */
-+
- struct device_type usb_device_type = {
- .name = "usb_device",
- .release = usb_release_dev,
-+ .uevent = usb_dev_uevent,
- };
-
- #ifdef CONFIG_PM
diff --git a/usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch b/usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch
deleted file mode 100644
index 2508f49bdba1ca..00000000000000
--- a/usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From stern@rowland.harvard.edu Mon Nov 26 23:04:01 2007
-From: Alan Stern <stern@rowland.harvard.edu>
-Date: Mon, 26 Nov 2007 10:23:05 -0500 (EST)
-Subject: USB: usb-storage: unusual_devs entry for JetFlash TS1GJF2A
-To: Greg KH <greg@kroah.com>, Phil Dibowitz <phil@ipom.com>
-Cc: RTE <raszilki@yandex.ru>, USB Storage list <usb-storage@lists.one-eyed-alien.net>
-Message-ID: <Pine.LNX.4.44L0.0711261020570.4250-100000@iolanthe.rowland.org>
-
-
-This patch (as1018) adds an unusual_devs entry for the JetFlash
-TS1GJF2A. This device doesn't like read requests for more than 188
-sectors. Setting max_sectors down to 64 is overkill, but at least
-it will work without errors.
-
-For the torturous debugging history, see this thread:
-
- http://marc.info/?t=118745764700005&r=1&w=2
-
-Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/storage/unusual_devs.h | 7 +++++++
- 1 file changed, 7 insertions(+)
-
---- a/drivers/usb/storage/unusual_devs.h
-+++ b/drivers/usb/storage/unusual_devs.h
-@@ -731,6 +731,13 @@ UNUSUAL_DEV( 0x0584, 0x0008, 0x0102, 0x
- US_SC_SCSI, US_PR_ALAUDA, init_alauda, 0 ),
- #endif
-
-+/* Reported by RTE <raszilki@yandex.ru> */
-+UNUSUAL_DEV( 0x058f, 0x6387, 0x0141, 0x0141,
-+ "JetFlash",
-+ "TS1GJF2A/120",
-+ US_SC_DEVICE, US_PR_DEVICE, NULL,
-+ US_FL_MAX_SECTORS_64 ),
-+
- /* Fabrizio Fellini <fello@libero.it> */
- UNUSUAL_DEV( 0x0595, 0x4343, 0x0000, 0x2210,
- "Fujifilm",
diff --git a/usb/usbserial-fix-inconsistent-lock-state.patch b/usb/usbserial-fix-inconsistent-lock-state.patch
deleted file mode 100644
index 9ec5ab3a545dd6..00000000000000
--- a/usb/usbserial-fix-inconsistent-lock-state.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From bbpetkov@yahoo.de Sun Oct 28 05:24:30 2007
-From: Borislav Petkov <bbpetkov@yahoo.de>
-Date: Sun, 28 Oct 2007 13:24:16 +0100
-Subject: usbserial: fix inconsistent lock state
-To: Jiri Kosina <jkosina@suse.cz>, Greg Kroah-Hartman <gregkh@suse.de>
-Cc: linux-kernel@vger.kernel.org
-Message-ID: <20071028122416.GA11679@gollum.tnic>
-Content-Disposition: inline
-
-
-In commit acd2a847e7fee7df11817f67dba75a2802793e5d usb_serial_generic_write()
-disables interrupts when taking &port->lock which is also taken in
-usb_serial_generic_read_bulk_callback() resulting in an inconsistent lock state
-due to the latter not disabling interrupts on the local cpu. Fix that by
-disabling interrupts in the latter call site also.
-
-Signed-off-by: Borislav Petkov <bbpetkov@yahoo.de>
-Acked-by: Jiri Kosina <jkosina@suse.cz>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/usb/serial/generic.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/usb/serial/generic.c
-+++ b/drivers/usb/serial/generic.c
-@@ -327,6 +327,7 @@ void usb_serial_generic_read_bulk_callba
- struct usb_serial_port *port = (struct usb_serial_port *)urb->context;
- unsigned char *data = urb->transfer_buffer;
- int status = urb->status;
-+ unsigned long flags;
-
- dbg("%s - port %d", __FUNCTION__, port->number);
-
-@@ -339,11 +340,11 @@ void usb_serial_generic_read_bulk_callba
- usb_serial_debug_data(debug, &port->dev, __FUNCTION__, urb->actual_length, data);
-
- /* Throttle the device if requested by tty */
-- spin_lock(&port->lock);
-+ spin_lock_irqsave(&port->lock, flags);
- if (!(port->throttled = port->throttle_req))
- /* Handle data and continue reading from device */
- flush_and_resubmit_read_urb(port);
-- spin_unlock(&port->lock);
-+ spin_unlock_irqrestore(&port->lock, flags);
- }
- EXPORT_SYMBOL_GPL(usb_serial_generic_read_bulk_callback);
-
diff --git a/version b/version
index 72c3fe2a352ae8..b4d4e5df6407f2 100644
--- a/version
+++ b/version
@@ -1 +1 @@
-2.6.24-rc3-git4
+2.6.24-rc3-git5