aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2007-11-26 23:13:49 -0800
committerGreg Kroah-Hartman <gregkh@suse.de>2007-11-26 23:13:49 -0800
commit00615526fb5b3fc1b75c7a276410a05ba13f048e (patch)
treec3cd760903a58e4e979045894827e1b27babc714 /usb
parent001c0bce4c78159d85263c3189cea1331d1a58a7 (diff)
downloadpatches-00615526fb5b3fc1b75c7a276410a05ba13f048e.tar.gz
2 driver core and a bunch more usb patches added
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-cyberjack-remove-a-unnecessary-variable.patch29
-rw-r--r--usb/usb-don-t-change-hc-power-state-for-a-freeze.patch36
-rw-r--r--usb/usb-drop-unnecessary-continue-in-a-few-drivers.patch53
-rw-r--r--usb/usb-dummy_hcd-don-t-register-drivers-on-the-platform-bus.patch85
-rw-r--r--usb/usb-force-handover-port-to-companion-when-hub_port_connect_change-fails.patch210
-rw-r--r--usb/usb-gadget-code-switches-to-pr_err-and-friends.patch1222
-rw-r--r--usb/usb-make-ksuspend_usbd-thread-non-freezable.patch33
-rw-r--r--usb/usb-prepare-serial-core-for-autosuspend.patch100
-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-usb-peripheral-controller-driver-oops-avoidance.patch92
-rw-r--r--usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch41
13 files changed, 2007 insertions, 0 deletions
diff --git a/usb/usb-cyberjack-remove-a-unnecessary-variable.patch b/usb/usb-cyberjack-remove-a-unnecessary-variable.patch
new file mode 100644
index 00000000000000..cac06d7b8e0c28
--- /dev/null
+++ b/usb/usb-cyberjack-remove-a-unnecessary-variable.patch
@@ -0,0 +1,29 @@
+From andre@bitwigglers.org Mon Nov 26 22:59:56 2007
+From: Andre Haupt <andre@bitwigglers.org>
+Date: Tue, 20 Nov 2007 11:41:37 +0100
+Subject: USB: cyberjack: remove a unnecessary variable.
+To: linux-usb-devel@lists.sourceforge.net
+Cc: greg@kroah.com, support@reiner-sct.com, Andre Haupt <andre@bitwigglers.org>
+Message-ID: <11955552973227-git-send-email-andre@bitwigglers.org>
+
+From: Andre Haupt <andre@bitwigglers.org>
+
+This also fixes a sparse warning that symbol 'result' shadows an earlier one.
+
+Signed-off-by: Andre Haupt <andre@bitwigglers.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/cyberjack.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+--- a/drivers/usb/serial/cyberjack.c
++++ b/drivers/usb/serial/cyberjack.c
+@@ -319,7 +319,6 @@ static void cyberjack_read_int_callback(
+ /* React only to interrupts signaling a bulk_in transfer */
+ if( (urb->actual_length==4) && (data[0]==0x01) ) {
+ short old_rdtodo;
+- int result;
+
+ /* This is a announcement of coming bulk_ins. */
+ unsigned short size = ((unsigned short)data[3]<<8)+data[2]+3;
diff --git a/usb/usb-don-t-change-hc-power-state-for-a-freeze.patch b/usb/usb-don-t-change-hc-power-state-for-a-freeze.patch
new file mode 100644
index 00000000000000..f6d41aa87162c5
--- /dev/null
+++ b/usb/usb-don-t-change-hc-power-state-for-a-freeze.patch
@@ -0,0 +1,36 @@
+From stern@rowland.harvard.edu Mon Nov 26 22:51:16 2007
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 19 Nov 2007 15:57:45 -0500 (EST)
+Subject: USB: don't change HC power state for a FREEZE
+To: Greg KH <greg@kroah.com>
+Cc: David Brownell <david-b@pacbell.net>, USB development list <linux-usb-devel@lists.sourceforge.net>
+Message-ID: <Pine.LNX.4.44L0.0711191556110.3443-100000@iolanthe.rowland.org>
+
+
+This patch (as1016) prevents PCI-based host controllers from
+undergoing a power-state change during a FREEZE or a PRETHAW. Such
+changes are needed only during a SUSPEND.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd-pci.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+--- a/drivers/usb/core/hcd-pci.c
++++ b/drivers/usb/core/hcd-pci.c
+@@ -250,6 +250,12 @@ int usb_hcd_pci_suspend (struct pci_dev
+ pci_disable_device (dev);
+ }
+
++ if (message.event == PM_EVENT_FREEZE ||
++ message.event == PM_EVENT_PRETHAW) {
++ dev_dbg(hcd->self.controller, "--> no state change\n");
++ goto done;
++ }
++
+ if (!has_pci_pm) {
+ dev_dbg (hcd->self.controller, "--> PCI D0/legacy\n");
+ goto done;
diff --git a/usb/usb-drop-unnecessary-continue-in-a-few-drivers.patch b/usb/usb-drop-unnecessary-continue-in-a-few-drivers.patch
new file mode 100644
index 00000000000000..0d0f6999cac00a
--- /dev/null
+++ b/usb/usb-drop-unnecessary-continue-in-a-few-drivers.patch
@@ -0,0 +1,53 @@
+From julia@diku.dk Mon Nov 26 22:46:51 2007
+From: Julia Lawall <julia@diku.dk>
+Date: Wed, 14 Nov 2007 09:15:16 +0100 (CET)
+Subject: USB: Drop unnecessary continue in a few drivers
+To: gregkh@suse.de, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
+Message-ID: <Pine.LNX.4.64.0711140914360.26019@ask.diku.dk>
+
+From: Julia Lawall <julia@diku.dk>
+
+Continue is not needed at the bottom of a loop.
+
+The semantic patch implementing this change is as follows:
+
+@@
+@@
+
+for (...;...;...) {
+ ...
+ if (...) {
+ ...
+- continue;
+ }
+}
+
+Signed-off-by: Julia Lawall <julia@diku.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/host/isp116x-hcd.c | 1 -
+ drivers/usb/image/mdc800.c | 2 --
+ 2 files changed, 3 deletions(-)
+
+--- a/drivers/usb/host/isp116x-hcd.c
++++ b/drivers/usb/host/isp116x-hcd.c
+@@ -918,7 +918,6 @@ static int isp116x_hub_status_data(struc
+ | RH_PS_OCIC | RH_PS_PRSC)) {
+ changed = 1;
+ buf[0] |= 1 << (i + 1);
+- continue;
+ }
+ }
+ spin_unlock_irqrestore(&isp116x->lock, flags);
+--- a/drivers/usb/image/mdc800.c
++++ b/drivers/usb/image/mdc800.c
+@@ -478,8 +478,6 @@ static int mdc800_usb_probe (struct usb_
+ {
+ irq_interval=intf_desc->endpoint [j].desc.bInterval;
+ }
+-
+- continue;
+ }
+ }
+ if (mdc800->endpoint[i] == -1)
diff --git a/usb/usb-dummy_hcd-don-t-register-drivers-on-the-platform-bus.patch b/usb/usb-dummy_hcd-don-t-register-drivers-on-the-platform-bus.patch
new file mode 100644
index 00000000000000..59fd025963046d
--- /dev/null
+++ b/usb/usb-dummy_hcd-don-t-register-drivers-on-the-platform-bus.patch
@@ -0,0 +1,85 @@
+From stern@rowland.harvard.edu Mon Nov 26 23:03:12 2007
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Tue, 20 Nov 2007 16:28:55 -0500 (EST)
+Subject: USB: dummy_hcd: don't register drivers on the platform bus
+To: Greg KH <greg@kroah.com>, David Brownell <david-b@pacbell.net>
+Cc: USB development list <linux-usb-devel@lists.sourceforge.net>
+Message-ID: <Pine.LNX.4.44L0.0711201627080.2789-100000@iolanthe.rowland.org>
+
+
+This patch (as1017) makes dummy_hcd behave more like the other USB
+peripheral controller drivers by no longer registering its
+gadget driver on the platform bus. Doing that has always been a
+mistake, since a usb_gadget_driver isn't a platform_driver. Instead
+the gadget driver is left unregistered in sysfs.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+CC: David Brownell <david-b@pacbell.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/dummy_hcd.c | 33 ++++++++-------------------------
+ 1 file changed, 8 insertions(+), 25 deletions(-)
+
+--- a/drivers/usb/gadget/dummy_hcd.c
++++ b/drivers/usb/gadget/dummy_hcd.c
+@@ -772,18 +772,17 @@ usb_gadget_register_driver (struct usb_g
+ list_del_init (&dum->ep [0].ep.ep_list);
+ INIT_LIST_HEAD(&dum->fifo_req.queue);
+
++ driver->driver.bus = NULL;
+ dum->driver = driver;
+ dum->gadget.dev.driver = &driver->driver;
+ dev_dbg (udc_dev(dum), "binding gadget driver '%s'\n",
+ driver->driver.name);
+- if ((retval = driver->bind (&dum->gadget)) != 0)
+- goto err_bind_gadget;
+-
+- driver->driver.bus = dum->gadget.dev.parent->bus;
+- if ((retval = driver_register (&driver->driver)) != 0)
+- goto err_register;
+- if ((retval = device_bind_driver (&dum->gadget.dev)) != 0)
+- goto err_bind_driver;
++ retval = driver->bind(&dum->gadget);
++ if (retval) {
++ dum->driver = NULL;
++ dum->gadget.dev.driver = NULL;
++ return retval;
++ }
+
+ /* khubd will enumerate this in a while */
+ spin_lock_irq (&dum->lock);
+@@ -793,20 +792,6 @@ usb_gadget_register_driver (struct usb_g
+
+ usb_hcd_poll_rh_status (dummy_to_hcd (dum));
+ return 0;
+-
+-err_bind_driver:
+- driver_unregister (&driver->driver);
+-err_register:
+- if (driver->unbind)
+- driver->unbind (&dum->gadget);
+- spin_lock_irq (&dum->lock);
+- dum->pullup = 0;
+- set_link_state (dum);
+- spin_unlock_irq (&dum->lock);
+-err_bind_gadget:
+- dum->driver = NULL;
+- dum->gadget.dev.driver = NULL;
+- return retval;
+ }
+ EXPORT_SYMBOL (usb_gadget_register_driver);
+
+@@ -830,11 +815,9 @@ usb_gadget_unregister_driver (struct usb
+ spin_unlock_irqrestore (&dum->lock, flags);
+
+ driver->unbind (&dum->gadget);
++ dum->gadget.dev.driver = NULL;
+ dum->driver = NULL;
+
+- device_release_driver (&dum->gadget.dev);
+- driver_unregister (&driver->driver);
+-
+ spin_lock_irqsave (&dum->lock, flags);
+ dum->pullup = 0;
+ set_link_state (dum);
diff --git a/usb/usb-force-handover-port-to-companion-when-hub_port_connect_change-fails.patch b/usb/usb-force-handover-port-to-companion-when-hub_port_connect_change-fails.patch
new file mode 100644
index 00000000000000..329dba6a9aa175
--- /dev/null
+++ b/usb/usb-force-handover-port-to-companion-when-hub_port_connect_change-fails.patch
@@ -0,0 +1,210 @@
+From balajirrao@gmail.com Mon Nov 26 23:02:14 2007
+From: Balaji Rao <balajirrao@gmail.com>
+From: balajirrao <balajirrao@gmail.com>
+Date: Thu, 22 Nov 2007 01:58:14 +0530
+Subject: USB: force handover port to companion when hub_port_connect_change fails
+To: Linux USB <linux-usb@vger.kernel.org>
+Cc: Greg KH <greg@kroah.com>, David Brownell <david-b@pacbell.net>, Alan Stern <stern@rowland.harvard.edu>
+Message-ID: <20071121202814.GA4413@yogi>
+Content-Disposition: inline
+
+From: Balaji Rao <balajirrao@gmail.com>
+
+This patch hands over the port to the companion when the
+hub_port_connect_change fails.
+
+Signed-off-by: Balaji Rao <balajirrao@gmail.com>
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/hcd.h | 3 +
+ drivers/usb/core/hub.c | 3 +
+ drivers/usb/host/ehci-au1xxx.c | 1
+ drivers/usb/host/ehci-fsl.c | 1
+ drivers/usb/host/ehci-hub.c | 68 +++++++++++++++++++++++++---------------
+ drivers/usb/host/ehci-pci.c | 1
+ drivers/usb/host/ehci-ppc-soc.c | 1
+ drivers/usb/host/ehci-ps3.c | 1
+ 8 files changed, 55 insertions(+), 24 deletions(-)
+
+--- a/drivers/usb/core/hcd.h
++++ b/drivers/usb/core/hcd.h
+@@ -210,6 +210,9 @@ struct hc_driver {
+ int (*start_port_reset)(struct usb_hcd *, unsigned port_num);
+ void (*hub_irq_enable)(struct usb_hcd *);
+ /* Needed only if port-change IRQs are level-triggered */
++
++ /* force handover of high-speed port to full-speed companion */
++ void (*relinquish_port)(struct usb_hcd *, int);
+ };
+
+ extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb);
+--- a/drivers/usb/core/hub.c
++++ b/drivers/usb/core/hub.c
+@@ -2482,6 +2482,7 @@ static void hub_port_connect_change(stru
+ {
+ struct usb_device *hdev = hub->hdev;
+ struct device *hub_dev = hub->intfdev;
++ struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
+ u16 wHubCharacteristics = le16_to_cpu(hub->descriptor->wHubCharacteristics);
+ int status, i;
+
+@@ -2645,6 +2646,8 @@ loop:
+
+ done:
+ hub_port_disable(hub, port1, 1);
++ if (hcd->driver->relinquish_port && !hub->hdev->parent)
++ hcd->driver->relinquish_port(hcd, port1);
+ }
+
+ static void hub_events(void)
+--- a/drivers/usb/host/ehci-au1xxx.c
++++ b/drivers/usb/host/ehci-au1xxx.c
+@@ -222,6 +222,7 @@ static const struct hc_driver ehci_au1xx
+ .hub_control = ehci_hub_control,
+ .bus_suspend = ehci_bus_suspend,
+ .bus_resume = ehci_bus_resume,
++ .relinquish_port = ehci_relinquish_port,
+ };
+
+ /*-------------------------------------------------------------------------*/
+--- a/drivers/usb/host/ehci-fsl.c
++++ b/drivers/usb/host/ehci-fsl.c
+@@ -323,6 +323,7 @@ static const struct hc_driver ehci_fsl_h
+ .hub_control = ehci_hub_control,
+ .bus_suspend = ehci_bus_suspend,
+ .bus_resume = ehci_bus_resume,
++ .relinquish_port = ehci_relinquish_port,
+ };
+
+ static int ehci_fsl_drv_probe(struct platform_device *pdev)
+--- a/drivers/usb/host/ehci-hub.c
++++ b/drivers/usb/host/ehci-hub.c
+@@ -314,41 +314,21 @@ static ssize_t show_companion(struct dev
+ }
+
+ /*
+- * Dedicate or undedicate a port to the companion controller.
+- * Syntax is "[-]portnum", where a leading '-' sign means
+- * return control of the port to the EHCI controller.
++ * Sets the owner of a port
+ */
+-static ssize_t store_companion(struct device *dev,
+- struct device_attribute *attr,
+- const char *buf, size_t count)
++static void set_owner(struct ehci_hcd *ehci, int portnum, int new_owner)
+ {
+- struct ehci_hcd *ehci;
+- int portnum, new_owner, try;
+ u32 __iomem *status_reg;
+ u32 port_status;
++ int try;
+
+- ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
+- new_owner = PORT_OWNER; /* Owned by companion */
+- if (sscanf(buf, "%d", &portnum) != 1)
+- return -EINVAL;
+- if (portnum < 0) {
+- portnum = - portnum;
+- new_owner = 0; /* Owned by EHCI */
+- }
+- if (portnum <= 0 || portnum > HCS_N_PORTS(ehci->hcs_params))
+- return -ENOENT;
+- status_reg = &ehci->regs->port_status[--portnum];
+- if (new_owner)
+- set_bit(portnum, &ehci->companion_ports);
+- else
+- clear_bit(portnum, &ehci->companion_ports);
++ status_reg = &ehci->regs->port_status[portnum];
+
+ /*
+ * The controller won't set the OWNER bit if the port is
+ * enabled, so this loop will sometimes require at least two
+ * iterations: one to disable the port and one to set OWNER.
+ */
+-
+ for (try = 4; try > 0; --try) {
+ spin_lock_irq(&ehci->lock);
+ port_status = ehci_readl(ehci, status_reg);
+@@ -365,6 +345,36 @@ static ssize_t store_companion(struct de
+ if (try > 1)
+ msleep(5);
+ }
++}
++
++/*
++ * Dedicate or undedicate a port to the companion controller.
++ * Syntax is "[-]portnum", where a leading '-' sign means
++ * return control of the port to the EHCI controller.
++ */
++static ssize_t store_companion(struct device *dev,
++ struct device_attribute *attr,
++ const char *buf, size_t count)
++{
++ struct ehci_hcd *ehci;
++ int portnum, new_owner;
++
++ ehci = hcd_to_ehci(bus_to_hcd(dev_get_drvdata(dev)));
++ new_owner = PORT_OWNER; /* Owned by companion */
++ if (sscanf(buf, "%d", &portnum) != 1)
++ return -EINVAL;
++ if (portnum < 0) {
++ portnum = - portnum;
++ new_owner = 0; /* Owned by EHCI */
++ }
++ if (portnum <= 0 || portnum > HCS_N_PORTS(ehci->hcs_params))
++ return -ENOENT;
++ portnum--;
++ if (new_owner)
++ set_bit(portnum, &ehci->companion_ports);
++ else
++ clear_bit(portnum, &ehci->companion_ports);
++ set_owner(ehci, portnum, new_owner);
+ return count;
+ }
+ static DEVICE_ATTR(companion, 0644, show_companion, store_companion);
+@@ -867,3 +877,13 @@ error:
+ spin_unlock_irqrestore (&ehci->lock, flags);
+ return retval;
+ }
++
++static void ehci_relinquish_port(struct usb_hcd *hcd, int portnum)
++{
++ struct ehci_hcd *ehci = hcd_to_ehci(hcd);
++
++ if (ehci_is_TDI(ehci))
++ return;
++ set_owner(ehci, --portnum, PORT_OWNER);
++}
++
+--- a/drivers/usb/host/ehci-pci.c
++++ b/drivers/usb/host/ehci-pci.c
+@@ -364,6 +364,7 @@ static const struct hc_driver ehci_pci_h
+ .hub_control = ehci_hub_control,
+ .bus_suspend = ehci_bus_suspend,
+ .bus_resume = ehci_bus_resume,
++ .relinquish_port = ehci_relinquish_port,
+ };
+
+ /*-------------------------------------------------------------------------*/
+--- a/drivers/usb/host/ehci-ppc-soc.c
++++ b/drivers/usb/host/ehci-ppc-soc.c
+@@ -162,6 +162,7 @@ static const struct hc_driver ehci_ppc_s
+ .hub_control = ehci_hub_control,
+ .bus_suspend = ehci_bus_suspend,
+ .bus_resume = ehci_bus_resume,
++ .relinquish_port = ehci_relinquish_port,
+ };
+
+ static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev)
+--- a/drivers/usb/host/ehci-ps3.c
++++ b/drivers/usb/host/ehci-ps3.c
+@@ -72,6 +72,7 @@ static const struct hc_driver ps3_ehci_h
+ .bus_suspend = ehci_bus_suspend,
+ .bus_resume = ehci_bus_resume,
+ #endif
++ .relinquish_port = ehci_relinquish_port,
+ };
+
+ static int ps3_ehci_probe(struct ps3_system_bus_device *dev)
diff --git a/usb/usb-gadget-code-switches-to-pr_err-and-friends.patch b/usb/usb-gadget-code-switches-to-pr_err-and-friends.patch
new file mode 100644
index 00000000000000..d2330266918988
--- /dev/null
+++ b/usb/usb-gadget-code-switches-to-pr_err-and-friends.patch
@@ -0,0 +1,1222 @@
+From david-b@pacbell.net Mon Nov 26 22:51:44 2007
+From: David Brownell <david-b@pacbell.net>
+Date: Mon, 19 Nov 2007 12:58:36 -0800
+Subject: USB: gadget code switches to pr_err() and friends
+To: Greg KH <greg@kroah.com>
+Cc: linux-usb-devel@lists.sourceforge.net
+Message-ID: <200711191258.37237.david-b@pacbell.net>
+Content-Disposition: inline
+
+
+We now have pr_err(), pr_warning(), and friends ... start using
+them in the gadget stack instead of printk(KERN_ERR) and friends.
+This gives us shorter lines and somewhat increased readability.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/at91_udc.h | 13 ---
+ drivers/usb/gadget/atmel_usba_udc.c | 11 --
+ drivers/usb/gadget/atmel_usba_udc.h | 7 -
+ drivers/usb/gadget/file_storage.c | 14 +--
+ drivers/usb/gadget/fsl_usb2_udc.h | 6 -
+ drivers/usb/gadget/gmidi.c | 6 -
+ drivers/usb/gadget/inode.c | 2
+ drivers/usb/gadget/m66592-udc.c | 48 +++++------
+ drivers/usb/gadget/omap_udc.h | 13 ---
+ drivers/usb/gadget/pxa2xx_udc.c | 14 +--
+ drivers/usb/gadget/pxa2xx_udc.h | 11 +-
+ drivers/usb/gadget/rndis.c | 20 +---
+ drivers/usb/gadget/serial.c | 153 ++++++++++++++++++------------------
+ drivers/usb/gadget/zero.c | 4
+ 14 files changed, 151 insertions(+), 171 deletions(-)
+
+--- a/drivers/usb/gadget/at91_udc.h
++++ b/drivers/usb/gadget/at91_udc.h
+@@ -158,12 +158,6 @@ struct at91_request {
+
+ /*-------------------------------------------------------------------------*/
+
+-#ifdef DEBUG
+-#define DBG(stuff...) printk(KERN_DEBUG "udc: " stuff)
+-#else
+-#define DBG(stuff...) do{}while(0)
+-#endif
+-
+ #ifdef VERBOSE
+ # define VDBG DBG
+ #else
+@@ -176,9 +170,10 @@ struct at91_request {
+ # define PACKET(stuff...) do{}while(0)
+ #endif
+
+-#define ERR(stuff...) printk(KERN_ERR "udc: " stuff)
+-#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
+-#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++#define ERR(stuff...) pr_err("udc: " stuff)
++#define WARN(stuff...) pr_warning("udc: " stuff)
++#define INFO(stuff...) pr_info("udc: " stuff)
++#define DBG(stuff...) pr_debug("udc: " stuff)
+
+ #endif
+
+--- a/drivers/usb/gadget/atmel_usba_udc.c
++++ b/drivers/usb/gadget/atmel_usba_udc.c
+@@ -1384,8 +1384,7 @@ delegate:
+ return retval;
+
+ stall:
+- printk(KERN_ERR
+- "udc: %s: Invalid setup request: %02x.%02x v%04x i%04x l%d, "
++ pr_err("udc: %s: Invalid setup request: %02x.%02x v%04x i%04x l%d, "
+ "halting endpoint...\n",
+ ep->ep.name, crq->bRequestType, crq->bRequest,
+ le16_to_cpu(crq->wValue), le16_to_cpu(crq->wIndex),
+@@ -1456,8 +1455,7 @@ restart:
+ set_protocol_stall(udc, ep);
+ break;
+ default:
+- printk(KERN_ERR
+- "udc: %s: TXCOMP: Invalid endpoint state %d, "
++ pr_err("udc: %s: TXCOMP: Invalid endpoint state %d, "
+ "halting endpoint...\n",
+ ep->ep.name, ep->state);
+ set_protocol_stall(udc, ep);
+@@ -1486,8 +1484,7 @@ restart:
+ default:
+ usba_ep_writel(ep, CLR_STA, USBA_RX_BK_RDY);
+ usba_ep_writel(ep, CTL_DIS, USBA_RX_BK_RDY);
+- printk(KERN_ERR
+- "udc: %s: RXRDY: Invalid endpoint state %d, "
++ pr_err("udc: %s: RXRDY: Invalid endpoint state %d, "
+ "halting endpoint...\n",
+ ep->ep.name, ep->state);
+ set_protocol_stall(udc, ep);
+@@ -1532,7 +1529,7 @@ restart:
+ pkt_len = USBA_BFEXT(BYTE_COUNT, usba_ep_readl(ep, STA));
+ DBG(DBG_HW, "Packet length: %u\n", pkt_len);
+ if (pkt_len != sizeof(crq)) {
+- printk(KERN_WARNING "udc: Invalid packet length %u "
++ pr_warning("udc: Invalid packet length %u "
+ "(expected %lu)\n", pkt_len, sizeof(crq));
+ set_protocol_stall(udc, ep);
+ return;
+--- a/drivers/usb/gadget/atmel_usba_udc.h
++++ b/drivers/usb/gadget/atmel_usba_udc.h
+@@ -216,7 +216,6 @@
+ #define FIFO_IOMEM_ID 0
+ #define CTRL_IOMEM_ID 1
+
+-#ifdef DEBUG
+ #define DBG_ERR 0x0001 /* report all error returns */
+ #define DBG_HW 0x0002 /* debug hardware initialization */
+ #define DBG_GADGET 0x0004 /* calls to/from gadget driver */
+@@ -230,14 +229,12 @@
+ #define DBG_NONE 0x0000
+
+ #define DEBUG_LEVEL (DBG_ERR)
++
+ #define DBG(level, fmt, ...) \
+ do { \
+ if ((level) & DEBUG_LEVEL) \
+- printk(KERN_DEBUG "udc: " fmt, ## __VA_ARGS__); \
++ pr_debug("udc: " fmt, ## __VA_ARGS__); \
+ } while (0)
+-#else
+-#define DBG(level, fmt...)
+-#endif
+
+ enum usba_ctrl_state {
+ WAIT_FOR_SETUP,
+--- a/drivers/usb/gadget/file_storage.c
++++ b/drivers/usb/gadget/file_storage.c
+@@ -275,19 +275,15 @@ MODULE_LICENSE("Dual BSD/GPL");
+
+ /*-------------------------------------------------------------------------*/
+
+-#ifdef DEBUG
+ #define LDBG(lun,fmt,args...) \
+ dev_dbg(&(lun)->dev , fmt , ## args)
+ #define MDBG(fmt,args...) \
+- printk(KERN_DEBUG DRIVER_NAME ": " fmt , ## args)
+-#else
+-#define LDBG(lun,fmt,args...) \
+- do { } while (0)
+-#define MDBG(fmt,args...) \
+- do { } while (0)
++ pr_debug(DRIVER_NAME ": " fmt , ## args)
++
++#ifndef DEBUG
+ #undef VERBOSE_DEBUG
+ #undef DUMP_MSGS
+-#endif /* DEBUG */
++#endif /* !DEBUG */
+
+ #ifdef VERBOSE_DEBUG
+ #define VLDBG LDBG
+@@ -304,7 +300,7 @@ MODULE_LICENSE("Dual BSD/GPL");
+ dev_info(&(lun)->dev , fmt , ## args)
+
+ #define MINFO(fmt,args...) \
+- printk(KERN_INFO DRIVER_NAME ": " fmt , ## args)
++ pr_info(DRIVER_NAME ": " fmt , ## args)
+
+ #define DBG(d, fmt, args...) \
+ dev_dbg(&(d)->gadget->dev , fmt , ## args)
+--- a/drivers/usb/gadget/fsl_usb2_udc.h
++++ b/drivers/usb/gadget/fsl_usb2_udc.h
+@@ -551,9 +551,9 @@ static void dump_msg(const char *label,
+ #define VDBG(stuff...) do{}while(0)
+ #endif
+
+-#define ERR(stuff...) printk(KERN_ERR "udc: " stuff)
+-#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
+-#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++#define ERR(stuff...) pr_err("udc: " stuff)
++#define WARN(stuff...) pr_warning("udc: " stuff)
++#define INFO(stuff...) pr_info("udc: " stuff)
+
+ /*-------------------------------------------------------------------------*/
+
+--- a/drivers/usb/gadget/gmidi.c
++++ b/drivers/usb/gadget/gmidi.c
+@@ -1159,7 +1159,7 @@ static int __devinit gmidi_bind(struct u
+ /* support optional vendor/distro customization */
+ if (idVendor) {
+ if (!idProduct) {
+- printk(KERN_ERR "idVendor needs idProduct!\n");
++ pr_err("idVendor needs idProduct!\n");
+ return -ENODEV;
+ }
+ device_desc.idVendor = cpu_to_le16(idVendor);
+@@ -1191,7 +1191,7 @@ static int __devinit gmidi_bind(struct u
+ in_ep = usb_ep_autoconfig(gadget, &bulk_in_desc);
+ if (!in_ep) {
+ autoconf_fail:
+- printk(KERN_ERR "%s: can't autoconfigure on %s\n",
++ pr_err("%s: can't autoconfigure on %s\n",
+ shortname, gadget->name);
+ return -ENODEV;
+ }
+@@ -1213,7 +1213,7 @@ autoconf_fail:
+ * it SHOULD NOT have problems with bulk-capable hardware.
+ * so warn about unrecognized controllers, don't panic.
+ */
+- printk(KERN_WARNING "%s: controller '%s' not recognized\n",
++ pr_warning("%s: controller '%s' not recognized\n",
+ shortname, gadget->name);
+ device_desc.bcdDevice = __constant_cpu_to_le16(0x9999);
+ }
+--- a/drivers/usb/gadget/inode.c
++++ b/drivers/usb/gadget/inode.c
+@@ -1699,7 +1699,7 @@ gadgetfs_bind (struct usb_gadget *gadget
+ if (!dev)
+ return -ESRCH;
+ if (0 != strcmp (CHIP, gadget->name)) {
+- printk (KERN_ERR "%s expected %s controller not %s\n",
++ pr_err("%s expected %s controller not %s\n",
+ shortname, CHIP, gadget->name);
+ return -ENODEV;
+ }
+--- a/drivers/usb/gadget/m66592-udc.c
++++ b/drivers/usb/gadget/m66592-udc.c
+@@ -147,7 +147,7 @@ static inline u16 control_reg_get_pid(st
+ offset = get_pipectr_addr(pipenum);
+ pid = m66592_read(m66592, offset) & M66592_PID;
+ } else
+- printk(KERN_ERR "unexpect pipe num (%d)\n", pipenum);
++ pr_err("unexpect pipe num (%d)\n", pipenum);
+
+ return pid;
+ }
+@@ -163,7 +163,7 @@ static inline void control_reg_set_pid(s
+ offset = get_pipectr_addr(pipenum);
+ m66592_mdfy(m66592, pid, M66592_PID, offset);
+ } else
+- printk(KERN_ERR "unexpect pipe num (%d)\n", pipenum);
++ pr_err("unexpect pipe num (%d)\n", pipenum);
+ }
+
+ static inline void pipe_start(struct m66592 *m66592, u16 pipenum)
+@@ -192,7 +192,7 @@ static inline u16 control_reg_get(struct
+ offset = get_pipectr_addr(pipenum);
+ ret = m66592_read(m66592, offset);
+ } else
+- printk(KERN_ERR "unexpect pipe num (%d)\n", pipenum);
++ pr_err("unexpect pipe num (%d)\n", pipenum);
+
+ return ret;
+ }
+@@ -209,7 +209,7 @@ static inline void control_reg_sqclr(str
+ offset = get_pipectr_addr(pipenum);
+ m66592_bset(m66592, M66592_SQCLR, offset);
+ } else
+- printk(KERN_ERR "unexpect pipe num(%d)\n", pipenum);
++ pr_err("unexpect pipe num(%d)\n", pipenum);
+ }
+
+ static inline int get_buffer_size(struct m66592 *m66592, u16 pipenum)
+@@ -291,7 +291,7 @@ static int pipe_buffer_setting(struct m6
+ break;
+ }
+ if (m66592->bi_bufnum > M66592_MAX_BUFNUM) {
+- printk(KERN_ERR "m66592 pipe memory is insufficient(%d)\n",
++ pr_err("m66592 pipe memory is insufficient(%d)\n",
+ m66592->bi_bufnum);
+ return -ENOMEM;
+ }
+@@ -332,7 +332,7 @@ static void pipe_buffer_release(struct m
+ if (info->type == M66592_BULK)
+ m66592->bulk--;
+ } else
+- printk(KERN_ERR "ep_release: unexpect pipenum (%d)\n",
++ pr_err("ep_release: unexpect pipenum (%d)\n",
+ info->pipe);
+ }
+
+@@ -430,7 +430,7 @@ static int alloc_pipe_config(struct m665
+ case USB_ENDPOINT_XFER_BULK:
+ if (m66592->bulk >= M66592_MAX_NUM_BULK) {
+ if (m66592->isochronous >= M66592_MAX_NUM_ISOC) {
+- printk(KERN_ERR "bulk pipe is insufficient\n");
++ pr_err("bulk pipe is insufficient\n");
+ return -ENODEV;
+ } else {
+ info.pipe = M66592_BASE_PIPENUM_ISOC
+@@ -446,7 +446,7 @@ static int alloc_pipe_config(struct m665
+ break;
+ case USB_ENDPOINT_XFER_INT:
+ if (m66592->interrupt >= M66592_MAX_NUM_INT) {
+- printk(KERN_ERR "interrupt pipe is insufficient\n");
++ pr_err("interrupt pipe is insufficient\n");
+ return -ENODEV;
+ }
+ info.pipe = M66592_BASE_PIPENUM_INT + m66592->interrupt;
+@@ -455,7 +455,7 @@ static int alloc_pipe_config(struct m665
+ break;
+ case USB_ENDPOINT_XFER_ISOC:
+ if (m66592->isochronous >= M66592_MAX_NUM_ISOC) {
+- printk(KERN_ERR "isochronous pipe is insufficient\n");
++ pr_err("isochronous pipe is insufficient\n");
+ return -ENODEV;
+ }
+ info.pipe = M66592_BASE_PIPENUM_ISOC + m66592->isochronous;
+@@ -463,7 +463,7 @@ static int alloc_pipe_config(struct m665
+ counter = &m66592->isochronous;
+ break;
+ default:
+- printk(KERN_ERR "unexpect xfer type\n");
++ pr_err("unexpect xfer type\n");
+ return -EINVAL;
+ }
+ ep->type = info.type;
+@@ -478,7 +478,7 @@ static int alloc_pipe_config(struct m665
+
+ ret = pipe_buffer_setting(m66592, &info);
+ if (ret < 0) {
+- printk(KERN_ERR "pipe_buffer_setting fail\n");
++ pr_err("pipe_buffer_setting fail\n");
+ return ret;
+ }
+
+@@ -614,7 +614,7 @@ static void start_ep0(struct m66592_ep *
+ control_end(ep->m66592, 0);
+ break;
+ default:
+- printk(KERN_ERR "start_ep0: unexpect ctsq(%x)\n", ctsq);
++ pr_err("start_ep0: unexpect ctsq(%x)\n", ctsq);
+ break;
+ }
+ }
+@@ -748,7 +748,7 @@ static void irq_ep0_write(struct m66592_
+ do {
+ tmp = m66592_read(m66592, ep->fifoctr);
+ if (i++ > 100000) {
+- printk(KERN_ERR "pipe0 is busy. maybe cpu i/o bus "
++ pr_err("pipe0 is busy. maybe cpu i/o bus "
+ "conflict. please power off this controller.");
+ return;
+ }
+@@ -798,7 +798,7 @@ static void irq_packet_write(struct m665
+ if (unlikely((tmp & M66592_FRDY) == 0)) {
+ pipe_stop(m66592, pipenum);
+ pipe_irq_disable(m66592, pipenum);
+- printk(KERN_ERR "write fifo not ready. pipnum=%d\n", pipenum);
++ pr_err("write fifo not ready. pipnum=%d\n", pipenum);
+ return;
+ }
+
+@@ -847,7 +847,7 @@ static void irq_packet_read(struct m6659
+ req->req.status = -EPIPE;
+ pipe_stop(m66592, pipenum);
+ pipe_irq_disable(m66592, pipenum);
+- printk(KERN_ERR "read fifo not ready");
++ pr_err("read fifo not ready");
+ return;
+ }
+
+@@ -1102,7 +1102,7 @@ static void m66592_update_usb_speed(stru
+ break;
+ default:
+ m66592->gadget.speed = USB_SPEED_UNKNOWN;
+- printk(KERN_ERR "USB speed unknown\n");
++ pr_err("USB speed unknown\n");
+ }
+ }
+
+@@ -1161,7 +1161,7 @@ __acquires(m66592->lock)
+ control_end(m66592, 0);
+ break;
+ default:
+- printk(KERN_ERR "ctrl_stage: unexpect ctsq(%x)\n", ctsq);
++ pr_err("ctrl_stage: unexpect ctsq(%x)\n", ctsq);
+ break;
+ }
+ }
+@@ -1461,13 +1461,13 @@ int usb_gadget_register_driver(struct us
+
+ retval = device_add(&m66592->gadget.dev);
+ if (retval) {
+- printk(KERN_ERR "device_add error (%d)\n", retval);
++ pr_err("device_add error (%d)\n", retval);
+ goto error;
+ }
+
+ retval = driver->bind (&m66592->gadget);
+ if (retval) {
+- printk(KERN_ERR "bind to driver error (%d)\n", retval);
++ pr_err("bind to driver error (%d)\n", retval);
+ device_del(&m66592->gadget.dev);
+ goto error;
+ }
+@@ -1561,28 +1561,28 @@ static int __init m66592_probe(struct pl
+ (char *)udc_name);
+ if (!res) {
+ ret = -ENODEV;
+- printk(KERN_ERR "platform_get_resource_byname error.\n");
++ pr_err("platform_get_resource_byname error.\n");
+ goto clean_up;
+ }
+
+ irq = platform_get_irq(pdev, 0);
+ if (irq < 0) {
+ ret = -ENODEV;
+- printk(KERN_ERR "platform_get_irq error.\n");
++ pr_err("platform_get_irq error.\n");
+ goto clean_up;
+ }
+
+ reg = ioremap(res->start, resource_len(res));
+ if (reg == NULL) {
+ ret = -ENOMEM;
+- printk(KERN_ERR "ioremap error.\n");
++ pr_err("ioremap error.\n");
+ goto clean_up;
+ }
+
+ /* initialize ucd */
+ m66592 = kzalloc(sizeof(struct m66592), GFP_KERNEL);
+ if (m66592 == NULL) {
+- printk(KERN_ERR "kzalloc error\n");
++ pr_err("kzalloc error\n");
+ goto clean_up;
+ }
+
+@@ -1608,7 +1608,7 @@ static int __init m66592_probe(struct pl
+ ret = request_irq(irq, m66592_irq, IRQF_DISABLED | IRQF_SHARED,
+ udc_name, m66592);
+ if (ret < 0) {
+- printk(KERN_ERR "request_irq error (%d)\n", ret);
++ pr_err("request_irq error (%d)\n", ret);
+ goto clean_up;
+ }
+
+--- a/drivers/usb/gadget/omap_udc.h
++++ b/drivers/usb/gadget/omap_udc.h
+@@ -182,21 +182,16 @@ struct omap_udc {
+
+ /*-------------------------------------------------------------------------*/
+
+-#ifdef DEBUG
+-#define DBG(stuff...) printk(KERN_DEBUG "udc: " stuff)
+-#else
+-#define DBG(stuff...) do{}while(0)
+-#endif
+-
+ #ifdef VERBOSE
+ # define VDBG DBG
+ #else
+ # define VDBG(stuff...) do{}while(0)
+ #endif
+
+-#define ERR(stuff...) printk(KERN_ERR "udc: " stuff)
+-#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
+-#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++#define ERR(stuff...) pr_err("udc: " stuff)
++#define WARN(stuff...) pr_warning("udc: " stuff)
++#define INFO(stuff...) pr_info("udc: " stuff)
++#define DBG(stuff...) pr_debug("udc: " stuff)
+
+ /*-------------------------------------------------------------------------*/
+
+--- a/drivers/usb/gadget/pxa2xx_udc.c
++++ b/drivers/usb/gadget/pxa2xx_udc.c
+@@ -2099,7 +2099,7 @@ static int __init pxa2xx_udc_probe(struc
+ /* insist on Intel/ARM/XScale */
+ asm("mrc%? p15, 0, %0, c0, c0" : "=r" (chiprev));
+ if ((chiprev & CP15R0_VENDOR_MASK) != CP15R0_XSCALE_VALUE) {
+- printk(KERN_ERR "%s: not XScale!\n", driver_name);
++ pr_err("%s: not XScale!\n", driver_name);
+ return -ENODEV;
+ }
+
+@@ -2128,7 +2128,7 @@ static int __init pxa2xx_udc_probe(struc
+ break;
+ #endif
+ default:
+- printk(KERN_ERR "%s: unrecognized processor: %08x\n",
++ pr_err("%s: unrecognized processor: %08x\n",
+ driver_name, chiprev);
+ /* iop3xx, ixp4xx, ... */
+ return -ENODEV;
+@@ -2199,7 +2199,7 @@ static int __init pxa2xx_udc_probe(struc
+ retval = request_irq(irq, pxa2xx_udc_irq,
+ IRQF_DISABLED, driver_name, dev);
+ if (retval != 0) {
+- printk(KERN_ERR "%s: can't get irq %d, err %d\n",
++ pr_err("%s: can't get irq %d, err %d\n",
+ driver_name, irq, retval);
+ goto err_irq1;
+ }
+@@ -2212,7 +2212,7 @@ static int __init pxa2xx_udc_probe(struc
+ IRQF_DISABLED | IRQF_SAMPLE_RANDOM,
+ driver_name, dev);
+ if (retval != 0) {
+- printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ pr_err("%s: can't get irq %i, err %d\n",
+ driver_name, LUBBOCK_USB_DISC_IRQ, retval);
+ lubbock_fail0:
+ goto err_irq_lub;
+@@ -2222,7 +2222,7 @@ lubbock_fail0:
+ IRQF_DISABLED | IRQF_SAMPLE_RANDOM,
+ driver_name, dev);
+ if (retval != 0) {
+- printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ pr_err("%s: can't get irq %i, err %d\n",
+ driver_name, LUBBOCK_USB_IRQ, retval);
+ free_irq(LUBBOCK_USB_DISC_IRQ, dev);
+ goto lubbock_fail0;
+@@ -2235,7 +2235,7 @@ lubbock_fail0:
+ IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ driver_name, dev);
+ if (retval != 0) {
+- printk(KERN_ERR "%s: can't get irq %i, err %d\n",
++ pr_err("%s: can't get irq %i, err %d\n",
+ driver_name, vbus_irq, retval);
+ goto err_vbus_irq;
+ }
+@@ -2361,7 +2361,7 @@ static struct platform_driver udc_driver
+
+ static int __init udc_init(void)
+ {
+- printk(KERN_INFO "%s: version %s\n", driver_name, DRIVER_VERSION);
++ pr_info("%s: version %s\n", driver_name, DRIVER_VERSION);
+ return platform_driver_probe(&udc_driver, pxa2xx_udc_probe);
+ }
+ module_init(udc_init);
+--- a/drivers/usb/gadget/pxa2xx_udc.h
++++ b/drivers/usb/gadget/pxa2xx_udc.h
+@@ -151,6 +151,8 @@ static struct pxa2xx_udc *the_controller
+ #define DBG_NOISY 3 /* ... even more: request level */
+ #define DBG_VERY_NOISY 4 /* ... even more: packet level */
+
++#define DMSG(stuff...) pr_debug("udc: " stuff)
++
+ #ifdef DEBUG
+
+ static const char *state_name[] = {
+@@ -159,8 +161,6 @@ static const char *state_name[] = {
+ "EP0_END_XFER", "EP0_STALL"
+ };
+
+-#define DMSG(stuff...) printk(KERN_DEBUG "udc: " stuff)
+-
+ #ifdef VERBOSE
+ # define UDC_DEBUG DBG_VERBOSE
+ #else
+@@ -241,8 +241,6 @@ dump_state(struct pxa2xx_udc *dev)
+
+ #else
+
+-#define DMSG(stuff...) do{}while(0)
+-
+ #define dump_udccr(x) do{}while(0)
+ #define dump_udccs0(x) do{}while(0)
+ #define dump_state(x) do{}while(0)
+@@ -253,8 +251,9 @@ dump_state(struct pxa2xx_udc *dev)
+
+ #define DBG(lvl, stuff...) do{if ((lvl) <= UDC_DEBUG) DMSG(stuff);}while(0)
+
+-#define WARN(stuff...) printk(KERN_WARNING "udc: " stuff)
+-#define INFO(stuff...) printk(KERN_INFO "udc: " stuff)
++#define ERR(stuff...) pr_err("udc: " stuff)
++#define WARN(stuff...) pr_warning("udc: " stuff)
++#define INFO(stuff...) pr_info("udc: " stuff)
+
+
+ #endif /* __LINUX_USB_GADGET_PXA2XX_H */
+--- a/drivers/usb/gadget/rndis.c
++++ b/drivers/usb/gadget/rndis.c
+@@ -53,21 +53,18 @@
+ */
+
+ #if 0
+-#define DBG(str,args...) do { \
+- if (rndis_debug) \
+- printk(KERN_DEBUG str , ## args ); \
+- } while (0)
+ static int rndis_debug = 0;
+-
+ module_param (rndis_debug, int, 0);
+ MODULE_PARM_DESC (rndis_debug, "enable debugging");
+-
+ #else
+-
+ #define rndis_debug 0
+-#define DBG(str,args...) do{}while(0)
+ #endif
+
++#define DBG(str,args...) do { \
++ if (rndis_debug) \
++ pr_debug(str , ## args); \
++ } while (0)
++
+ #define RNDIS_MAX_CONFIGS 1
+
+
+@@ -679,7 +676,7 @@ gen_ndis_query_resp (int configNr, u32 O
+ #endif
+
+ default:
+- printk (KERN_WARNING "%s: query unknown OID 0x%08X\n",
++ pr_warning("%s: query unknown OID 0x%08X\n",
+ __FUNCTION__, OID);
+ }
+ if (retval < 0)
+@@ -804,7 +801,7 @@ update_linkstate:
+ #endif /* RNDIS_PM */
+
+ default:
+- printk (KERN_WARNING "%s: set unknown OID 0x%08X, size %d\n",
++ pr_warning("%s: set unknown OID 0x%08X, size %d\n",
+ __FUNCTION__, OID, buf_len);
+ }
+
+@@ -1126,8 +1123,7 @@ int rndis_msg_parser (u8 configNr, u8 *b
+ * In one case those messages seemed to relate to the host
+ * suspending itself.
+ */
+- printk (KERN_WARNING
+- "%s: unknown RNDIS message 0x%08X len %d\n",
++ pr_warning("%s: unknown RNDIS message 0x%08X len %d\n",
+ __FUNCTION__ , MsgType, MsgLength);
+ {
+ unsigned i;
+--- a/drivers/usb/gadget/serial.c
++++ b/drivers/usb/gadget/serial.c
+@@ -89,9 +89,9 @@ static int debug = 1;
+ #endif
+
+ #define gs_debug(format, arg...) \
+- do { if (debug) printk(KERN_DEBUG format, ## arg); } while(0)
++ do { if (debug) pr_debug(format, ## arg); } while (0)
+ #define gs_debug_level(level, format, arg...) \
+- do { if (debug>=level) printk(KERN_DEBUG format, ## arg); } while(0)
++ do { if (debug >= level) pr_debug(format, ## arg); } while (0)
+
+
+ /* Thanks to NetChip Technologies for donating this product ID.
+@@ -553,7 +553,8 @@ static int __init gs_module_init(void)
+
+ retval = usb_gadget_register_driver(&gs_gadget_driver);
+ if (retval) {
+- printk(KERN_ERR "gs_module_init: cannot register gadget driver, ret=%d\n", retval);
++ pr_err("gs_module_init: cannot register gadget driver, "
++ "ret=%d\n", retval);
+ return retval;
+ }
+
+@@ -579,11 +580,13 @@ static int __init gs_module_init(void)
+ if (retval) {
+ usb_gadget_unregister_driver(&gs_gadget_driver);
+ put_tty_driver(gs_tty_driver);
+- printk(KERN_ERR "gs_module_init: cannot register tty driver, ret=%d\n", retval);
++ pr_err("gs_module_init: cannot register tty driver, "
++ "ret=%d\n", retval);
+ return retval;
+ }
+
+- printk(KERN_INFO "gs_module_init: %s %s loaded\n", GS_LONG_NAME, GS_VERSION_STR);
++ pr_info("gs_module_init: %s %s loaded\n",
++ GS_LONG_NAME, GS_VERSION_STR);
+ return 0;
+ }
+
+@@ -598,7 +601,8 @@ static void __exit gs_module_exit(void)
+ put_tty_driver(gs_tty_driver);
+ usb_gadget_unregister_driver(&gs_gadget_driver);
+
+- printk(KERN_INFO "gs_module_exit: %s %s unloaded\n", GS_LONG_NAME, GS_VERSION_STR);
++ pr_info("gs_module_exit: %s %s unloaded\n",
++ GS_LONG_NAME, GS_VERSION_STR);
+ }
+
+ /* TTY Driver */
+@@ -621,7 +625,7 @@ static int gs_open(struct tty_struct *tt
+ gs_debug("gs_open: (%d,%p,%p)\n", port_num, tty, file);
+
+ if (port_num < 0 || port_num >= GS_NUM_PORTS) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) invalid port number\n",
++ pr_err("gs_open: (%d,%p,%p) invalid port number\n",
+ port_num, tty, file);
+ return -ENODEV;
+ }
+@@ -629,15 +633,14 @@ static int gs_open(struct tty_struct *tt
+ dev = gs_device;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) NULL device pointer\n",
++ pr_err("gs_open: (%d,%p,%p) NULL device pointer\n",
+ port_num, tty, file);
+ return -ENODEV;
+ }
+
+ mtx = &gs_open_close_lock[port_num];
+ if (mutex_lock_interruptible(mtx)) {
+- printk(KERN_ERR
+- "gs_open: (%d,%p,%p) interrupted waiting for mutex\n",
++ pr_err("gs_open: (%d,%p,%p) interrupted waiting for mutex\n",
+ port_num, tty, file);
+ return -ERESTARTSYS;
+ }
+@@ -645,8 +648,7 @@ static int gs_open(struct tty_struct *tt
+ spin_lock_irqsave(&dev->dev_lock, flags);
+
+ if (dev->dev_config == GS_NO_CONFIG_ID) {
+- printk(KERN_ERR
+- "gs_open: (%d,%p,%p) device is not connected\n",
++ pr_err("gs_open: (%d,%p,%p) device is not connected\n",
+ port_num, tty, file);
+ ret = -ENODEV;
+ goto exit_unlock_dev;
+@@ -655,7 +657,7 @@ static int gs_open(struct tty_struct *tt
+ port = dev->dev_port[port_num];
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) NULL port pointer\n",
++ pr_err("gs_open: (%d,%p,%p) NULL port pointer\n",
+ port_num, tty, file);
+ ret = -ENODEV;
+ goto exit_unlock_dev;
+@@ -665,7 +667,7 @@ static int gs_open(struct tty_struct *tt
+ spin_unlock(&dev->dev_lock);
+
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) port disconnected (1)\n",
++ pr_err("gs_open: (%d,%p,%p) port disconnected (1)\n",
+ port_num, tty, file);
+ ret = -EIO;
+ goto exit_unlock_port;
+@@ -692,8 +694,7 @@ static int gs_open(struct tty_struct *tt
+
+ /* might have been disconnected while asleep, check */
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR
+- "gs_open: (%d,%p,%p) port disconnected (2)\n",
++ pr_err("gs_open: (%d,%p,%p) port disconnected (2)\n",
+ port_num, tty, file);
+ port->port_in_use = 0;
+ ret = -EIO;
+@@ -701,7 +702,8 @@ static int gs_open(struct tty_struct *tt
+ }
+
+ if ((port->port_write_buf=buf) == NULL) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) cannot allocate port write buffer\n",
++ pr_err("gs_open: (%d,%p,%p) cannot allocate "
++ "port write buffer\n",
+ port_num, tty, file);
+ port->port_in_use = 0;
+ ret = -ENOMEM;
+@@ -714,7 +716,7 @@ static int gs_open(struct tty_struct *tt
+
+ /* might have been disconnected while asleep, check */
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR "gs_open: (%d,%p,%p) port disconnected (3)\n",
++ pr_err("gs_open: (%d,%p,%p) port disconnected (3)\n",
+ port_num, tty, file);
+ port->port_in_use = 0;
+ ret = -EIO;
+@@ -762,7 +764,7 @@ static void gs_close(struct tty_struct *
+ struct mutex *mtx;
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_close: NULL port pointer\n");
++ pr_err("gs_close: NULL port pointer\n");
+ return;
+ }
+
+@@ -774,8 +776,7 @@ static void gs_close(struct tty_struct *
+ spin_lock_irq(&port->port_lock);
+
+ if (port->port_open_count == 0) {
+- printk(KERN_ERR
+- "gs_close: (%d,%p,%p) port is already closed\n",
++ pr_err("gs_close: (%d,%p,%p) port is already closed\n",
+ port->port_num, tty, file);
+ goto exit;
+ }
+@@ -837,7 +838,7 @@ static int gs_write(struct tty_struct *t
+ int ret;
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_write: NULL port pointer\n");
++ pr_err("gs_write: NULL port pointer\n");
+ return -EIO;
+ }
+
+@@ -850,14 +851,14 @@ static int gs_write(struct tty_struct *t
+ spin_lock_irqsave(&port->port_lock, flags);
+
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR "gs_write: (%d,%p) port is not connected\n",
++ pr_err("gs_write: (%d,%p) port is not connected\n",
+ port->port_num, tty);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if (port->port_open_count == 0) {
+- printk(KERN_ERR "gs_write: (%d,%p) port is closed\n",
++ pr_err("gs_write: (%d,%p) port is closed\n",
+ port->port_num, tty);
+ ret = -EBADF;
+ goto exit;
+@@ -888,7 +889,7 @@ static void gs_put_char(struct tty_struc
+ struct gs_port *port = tty->driver_data;
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_put_char: NULL port pointer\n");
++ pr_err("gs_put_char: NULL port pointer\n");
+ return;
+ }
+
+@@ -898,13 +899,13 @@ static void gs_put_char(struct tty_struc
+ spin_lock_irqsave(&port->port_lock, flags);
+
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR "gs_put_char: (%d,%p) port is not connected\n",
++ pr_err("gs_put_char: (%d,%p) port is not connected\n",
+ port->port_num, tty);
+ goto exit;
+ }
+
+ if (port->port_open_count == 0) {
+- printk(KERN_ERR "gs_put_char: (%d,%p) port is closed\n",
++ pr_err("gs_put_char: (%d,%p) port is closed\n",
+ port->port_num, tty);
+ goto exit;
+ }
+@@ -924,7 +925,7 @@ static void gs_flush_chars(struct tty_st
+ struct gs_port *port = tty->driver_data;
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_flush_chars: NULL port pointer\n");
++ pr_err("gs_flush_chars: NULL port pointer\n");
+ return;
+ }
+
+@@ -933,14 +934,13 @@ static void gs_flush_chars(struct tty_st
+ spin_lock_irqsave(&port->port_lock, flags);
+
+ if (port->port_dev == NULL) {
+- printk(KERN_ERR
+- "gs_flush_chars: (%d,%p) port is not connected\n",
++ pr_err("gs_flush_chars: (%d,%p) port is not connected\n",
+ port->port_num, tty);
+ goto exit;
+ }
+
+ if (port->port_open_count == 0) {
+- printk(KERN_ERR "gs_flush_chars: (%d,%p) port is closed\n",
++ pr_err("gs_flush_chars: (%d,%p) port is closed\n",
+ port->port_num, tty);
+ goto exit;
+ }
+@@ -1038,7 +1038,7 @@ static int gs_ioctl(struct tty_struct *t
+ struct gs_port *port = tty->driver_data;
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_ioctl: NULL port pointer\n");
++ pr_err("gs_ioctl: NULL port pointer\n");
+ return -EIO;
+ }
+
+@@ -1076,7 +1076,7 @@ static int gs_send(struct gs_dev *dev)
+ struct gs_req_entry *req_entry;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_send: NULL device pointer\n");
++ pr_err("gs_send: NULL device pointer\n");
+ return -ENODEV;
+ }
+
+@@ -1103,7 +1103,7 @@ static int gs_send(struct gs_dev *dev)
+ req->length = len;
+ spin_unlock_irqrestore(&dev->dev_lock, flags);
+ if ((ret=usb_ep_queue(ep, req, GFP_ATOMIC))) {
+- printk(KERN_ERR
++ pr_err(
+ "gs_send: cannot queue read request, ret=%d\n",
+ ret);
+ spin_lock_irqsave(&dev->dev_lock, flags);
+@@ -1144,9 +1144,7 @@ static int gs_send_packet(struct gs_dev
+ port = dev->dev_port[0];
+
+ if (port == NULL) {
+- printk(KERN_ERR
+- "gs_send_packet: port=%d, NULL port pointer\n",
+- 0);
++ pr_err("gs_send_packet: port=%d, NULL port pointer\n", 0);
+ return -EIO;
+ }
+
+@@ -1193,7 +1191,7 @@ static int gs_recv_packet(struct gs_dev
+ port = dev->dev_port[0];
+
+ if (port == NULL) {
+- printk(KERN_ERR "gs_recv_packet: port=%d, NULL port pointer\n",
++ pr_err("gs_recv_packet: port=%d, NULL port pointer\n",
+ port->port_num);
+ return -EIO;
+ }
+@@ -1201,7 +1199,7 @@ static int gs_recv_packet(struct gs_dev
+ spin_lock(&port->port_lock);
+
+ if (port->port_open_count == 0) {
+- printk(KERN_ERR "gs_recv_packet: port=%d, port is closed\n",
++ pr_err("gs_recv_packet: port=%d, port is closed\n",
+ port->port_num);
+ ret = -EIO;
+ goto exit;
+@@ -1211,14 +1209,14 @@ static int gs_recv_packet(struct gs_dev
+ tty = port->port_tty;
+
+ if (tty == NULL) {
+- printk(KERN_ERR "gs_recv_packet: port=%d, NULL tty pointer\n",
++ pr_err("gs_recv_packet: port=%d, NULL tty pointer\n",
+ port->port_num);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if (port->port_tty->magic != TTY_MAGIC) {
+- printk(KERN_ERR "gs_recv_packet: port=%d, bad tty magic\n",
++ pr_err("gs_recv_packet: port=%d, bad tty magic\n",
+ port->port_num);
+ ret = -EIO;
+ goto exit;
+@@ -1245,7 +1243,7 @@ static void gs_read_complete(struct usb_
+ struct gs_dev *dev = ep->driver_data;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_read_complete: NULL device pointer\n");
++ pr_err("gs_read_complete: NULL device pointer\n");
+ return;
+ }
+
+@@ -1256,7 +1254,7 @@ static void gs_read_complete(struct usb_
+ requeue:
+ req->length = ep->maxpacket;
+ if ((ret=usb_ep_queue(ep, req, GFP_ATOMIC))) {
+- printk(KERN_ERR
++ pr_err(
+ "gs_read_complete: cannot queue read request, ret=%d\n",
+ ret);
+ }
+@@ -1270,7 +1268,7 @@ requeue:
+
+ default:
+ /* unexpected */
+- printk(KERN_ERR
++ pr_err(
+ "gs_read_complete: unexpected status error, status=%d\n",
+ req->status);
+ goto requeue;
+@@ -1287,7 +1285,7 @@ static void gs_write_complete(struct usb
+ struct gs_req_entry *gs_req = req->context;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_write_complete: NULL device pointer\n");
++ pr_err("gs_write_complete: NULL device pointer\n");
+ return;
+ }
+
+@@ -1296,8 +1294,7 @@ static void gs_write_complete(struct usb
+ /* normal completion */
+ requeue:
+ if (gs_req == NULL) {
+- printk(KERN_ERR
+- "gs_write_complete: NULL request pointer\n");
++ pr_err("gs_write_complete: NULL request pointer\n");
+ return;
+ }
+
+@@ -1316,7 +1313,7 @@ requeue:
+ break;
+
+ default:
+- printk(KERN_ERR
++ pr_err(
+ "gs_write_complete: unexpected status error, status=%d\n",
+ req->status);
+ goto requeue;
+@@ -1351,7 +1348,7 @@ static int __init gs_bind(struct usb_gad
+ gs_device_desc.bcdDevice =
+ cpu_to_le16(GS_VERSION_NUM | gcnum);
+ else {
+- printk(KERN_WARNING "gs_bind: controller '%s' not recognized\n",
++ pr_warning("gs_bind: controller '%s' not recognized\n",
+ gadget->name);
+ /* unrecognized, but safe unless bulk is REALLY quirky */
+ gs_device_desc.bcdDevice =
+@@ -1375,7 +1372,7 @@ static int __init gs_bind(struct usb_gad
+ if (use_acm) {
+ ep = usb_ep_autoconfig(gadget, &gs_fullspeed_notify_desc);
+ if (!ep) {
+- printk(KERN_ERR "gs_bind: cannot run ACM on %s\n", gadget->name);
++ pr_err("gs_bind: cannot run ACM on %s\n", gadget->name);
+ goto autoconf_fail;
+ }
+ gs_device_desc.idProduct = __constant_cpu_to_le16(
+@@ -1425,7 +1422,7 @@ static int __init gs_bind(struct usb_gad
+ set_gadget_data(gadget, dev);
+
+ if ((ret=gs_alloc_ports(dev, GFP_KERNEL)) != 0) {
+- printk(KERN_ERR "gs_bind: cannot allocate ports\n");
++ pr_err("gs_bind: cannot allocate ports\n");
+ gs_unbind(gadget);
+ return ret;
+ }
+@@ -1441,13 +1438,13 @@ static int __init gs_bind(struct usb_gad
+
+ gadget->ep0->driver_data = dev;
+
+- printk(KERN_INFO "gs_bind: %s %s bound\n",
++ pr_info("gs_bind: %s %s bound\n",
+ GS_LONG_NAME, GS_VERSION_STR);
+
+ return 0;
+
+ autoconf_fail:
+- printk(KERN_ERR "gs_bind: cannot autoconfigure on %s\n", gadget->name);
++ pr_err("gs_bind: cannot autoconfigure on %s\n", gadget->name);
+ return -ENODEV;
+ }
+
+@@ -1480,7 +1477,7 @@ static void /* __init_or_exit */ gs_unbi
+ set_gadget_data(gadget, NULL);
+ }
+
+- printk(KERN_INFO "gs_unbind: %s %s unbound\n", GS_LONG_NAME,
++ pr_info("gs_unbind: %s %s unbound\n", GS_LONG_NAME,
+ GS_VERSION_STR);
+ }
+
+@@ -1513,7 +1510,8 @@ static int gs_setup(struct usb_gadget *g
+ break;
+
+ default:
+- printk(KERN_ERR "gs_setup: unknown request, type=%02x, request=%02x, value=%04x, index=%04x, length=%d\n",
++ pr_err("gs_setup: unknown request, type=%02x, request=%02x, "
++ "value=%04x, index=%04x, length=%d\n",
+ ctrl->bRequestType, ctrl->bRequest,
+ wValue, wIndex, wLength);
+ break;
+@@ -1526,7 +1524,7 @@ static int gs_setup(struct usb_gadget *g
+ && (ret % gadget->ep0->maxpacket) == 0;
+ ret = usb_ep_queue(gadget->ep0, req, GFP_ATOMIC);
+ if (ret < 0) {
+- printk(KERN_ERR "gs_setup: cannot queue response, ret=%d\n",
++ pr_err("gs_setup: cannot queue response, ret=%d\n",
+ ret);
+ req->status = 0;
+ gs_setup_complete(gadget->ep0, req);
+@@ -1656,7 +1654,8 @@ set_interface_done:
+ break;
+
+ default:
+- printk(KERN_ERR "gs_setup: unknown standard request, type=%02x, request=%02x, value=%04x, index=%04x, length=%d\n",
++ pr_err("gs_setup: unknown standard request, type=%02x, "
++ "request=%02x, value=%04x, index=%04x, length=%d\n",
+ ctrl->bRequestType, ctrl->bRequest,
+ wValue, wIndex, wLength);
+ break;
+@@ -1682,7 +1681,7 @@ static int gs_setup_class(struct usb_gad
+ * handler copy that data to port->port_line_coding (iff
+ * it's valid) and maybe pass it on. Until then, fail.
+ */
+- printk(KERN_WARNING "gs_setup: set_line_coding "
++ pr_warning("gs_setup: set_line_coding "
+ "unuspported\n");
+ break;
+
+@@ -1702,12 +1701,12 @@ static int gs_setup_class(struct usb_gad
+ * handler use that to set the state (iff it's valid) and
+ * maybe pass it on. Until then, fail.
+ */
+- printk(KERN_WARNING "gs_setup: set_control_line_state "
++ pr_warning("gs_setup: set_control_line_state "
+ "unuspported\n");
+ break;
+
+ default:
+- printk(KERN_ERR "gs_setup: unknown class request, "
++ pr_err("gs_setup: unknown class request, "
+ "type=%02x, request=%02x, value=%04x, "
+ "index=%04x, length=%d\n",
+ ctrl->bRequestType, ctrl->bRequest,
+@@ -1724,7 +1723,8 @@ static int gs_setup_class(struct usb_gad
+ static void gs_setup_complete(struct usb_ep *ep, struct usb_request *req)
+ {
+ if (req->status || req->actual != req->length) {
+- printk(KERN_ERR "gs_setup_complete: status error, status=%d, actual=%d, length=%d\n",
++ pr_err("gs_setup_complete: status error, status=%d, "
++ "actual=%d, length=%d\n",
+ req->status, req->actual, req->length);
+ }
+ }
+@@ -1751,11 +1751,11 @@ static void gs_disconnect(struct usb_gad
+
+ /* re-allocate ports for the next connection */
+ if (gs_alloc_ports(dev, GFP_ATOMIC) != 0)
+- printk(KERN_ERR "gs_disconnect: cannot re-allocate ports\n");
++ pr_err("gs_disconnect: cannot re-allocate ports\n");
+
+ spin_unlock_irqrestore(&dev->dev_lock, flags);
+
+- printk(KERN_INFO "gs_disconnect: %s disconnected\n", GS_LONG_NAME);
++ pr_info("gs_disconnect: %s disconnected\n", GS_LONG_NAME);
+ }
+
+ /*
+@@ -1778,7 +1778,7 @@ static int gs_set_config(struct gs_dev *
+ struct gs_req_entry *req_entry;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_set_config: NULL device pointer\n");
++ pr_err("gs_set_config: NULL device pointer\n");
+ return 0;
+ }
+
+@@ -1823,7 +1823,8 @@ static int gs_set_config(struct gs_dev *
+ dev->dev_notify_ep = ep;
+ dev->dev_notify_ep_desc = ep_desc;
+ } else {
+- printk(KERN_ERR "gs_set_config: cannot enable notify endpoint %s, ret=%d\n",
++ pr_err("gs_set_config: cannot enable NOTIFY "
++ "endpoint %s, ret=%d\n",
+ ep->name, ret);
+ goto exit_reset_config;
+ }
+@@ -1839,7 +1840,8 @@ static int gs_set_config(struct gs_dev *
+ dev->dev_in_ep = ep;
+ dev->dev_in_ep_desc = ep_desc;
+ } else {
+- printk(KERN_ERR "gs_set_config: cannot enable in endpoint %s, ret=%d\n",
++ pr_err("gs_set_config: cannot enable IN "
++ "endpoint %s, ret=%d\n",
+ ep->name, ret);
+ goto exit_reset_config;
+ }
+@@ -1855,7 +1857,8 @@ static int gs_set_config(struct gs_dev *
+ dev->dev_out_ep = ep;
+ dev->dev_out_ep_desc = ep_desc;
+ } else {
+- printk(KERN_ERR "gs_set_config: cannot enable out endpoint %s, ret=%d\n",
++ pr_err("gs_set_config: cannot enable OUT "
++ "endpoint %s, ret=%d\n",
+ ep->name, ret);
+ goto exit_reset_config;
+ }
+@@ -1865,7 +1868,7 @@ static int gs_set_config(struct gs_dev *
+
+ if (dev->dev_in_ep == NULL || dev->dev_out_ep == NULL
+ || (config != GS_BULK_CONFIG_ID && dev->dev_notify_ep == NULL)) {
+- printk(KERN_ERR "gs_set_config: cannot find endpoints\n");
++ pr_err("gs_set_config: cannot find endpoints\n");
+ ret = -ENODEV;
+ goto exit_reset_config;
+ }
+@@ -1876,11 +1879,12 @@ static int gs_set_config(struct gs_dev *
+ if ((req=gs_alloc_req(ep, ep->maxpacket, GFP_ATOMIC))) {
+ req->complete = gs_read_complete;
+ if ((ret=usb_ep_queue(ep, req, GFP_ATOMIC))) {
+- printk(KERN_ERR "gs_set_config: cannot queue read request, ret=%d\n",
+- ret);
++ pr_err("gs_set_config: cannot queue read "
++ "request, ret=%d\n", ret);
+ }
+ } else {
+- printk(KERN_ERR "gs_set_config: cannot allocate read requests\n");
++ pr_err("gs_set_config: cannot allocate "
++ "read requests\n");
+ ret = -ENOMEM;
+ goto exit_reset_config;
+ }
+@@ -1893,13 +1897,14 @@ static int gs_set_config(struct gs_dev *
+ req_entry->re_req->complete = gs_write_complete;
+ list_add(&req_entry->re_entry, &dev->dev_req_list);
+ } else {
+- printk(KERN_ERR "gs_set_config: cannot allocate write requests\n");
++ pr_err("gs_set_config: cannot allocate "
++ "write requests\n");
+ ret = -ENOMEM;
+ goto exit_reset_config;
+ }
+ }
+
+- printk(KERN_INFO "gs_set_config: %s configured, %s speed %s config\n",
++ pr_info("gs_set_config: %s configured, %s speed %s config\n",
+ GS_LONG_NAME,
+ gadget->speed == USB_SPEED_HIGH ? "high" : "full",
+ config == GS_BULK_CONFIG_ID ? "BULK" : "CDC-ACM");
+@@ -1926,7 +1931,7 @@ static void gs_reset_config(struct gs_de
+ struct gs_req_entry *req_entry;
+
+ if (dev == NULL) {
+- printk(KERN_ERR "gs_reset_config: NULL device pointer\n");
++ pr_err("gs_reset_config: NULL device pointer\n");
+ return;
+ }
+
+--- a/drivers/usb/gadget/zero.c
++++ b/drivers/usb/gadget/zero.c
+@@ -1115,7 +1115,7 @@ zero_bind (struct usb_gadget *gadget)
+ ep = usb_ep_autoconfig (gadget, &fs_source_desc);
+ if (!ep) {
+ autoconf_fail:
+- printk (KERN_ERR "%s: can't autoconfigure on %s\n",
++ pr_err("%s: can't autoconfigure on %s\n",
+ shortname, gadget->name);
+ return -ENODEV;
+ }
+@@ -1139,7 +1139,7 @@ autoconf_fail:
+ * things like configuration and altsetting numbering
+ * can need hardware-specific attention though.
+ */
+- printk (KERN_WARNING "%s: controller '%s' not recognized\n",
++ pr_warning("%s: controller '%s' not recognized\n",
+ shortname, gadget->name);
+ device_desc.bcdDevice = __constant_cpu_to_le16 (0x9999);
+ }
diff --git a/usb/usb-make-ksuspend_usbd-thread-non-freezable.patch b/usb/usb-make-ksuspend_usbd-thread-non-freezable.patch
new file mode 100644
index 00000000000000..2731b7493a3077
--- /dev/null
+++ b/usb/usb-make-ksuspend_usbd-thread-non-freezable.patch
@@ -0,0 +1,33 @@
+From stern@rowland.harvard.edu Mon Nov 26 22:50:47 2007
+From: Alan Stern <stern@rowland.harvard.edu>
+Date: Mon, 19 Nov 2007 10:15:02 -0500 (EST)
+Subject: USB: make ksuspend_usbd thread non-freezable
+To: Greg KH <greg@kroah.com>
+Cc: USB development list <linux-usb-devel@lists.sourceforge.net>
+Message-ID: <Pine.LNX.4.44L0.0711191010050.4806-100000@iolanthe.rowland.org>
+
+
+This patch (as1012b) makes the ksuspend_usbd kernel thread
+non-freezable. Since the PM core has been changed to lock all devices
+during a system sleep, the thread no longer needs to be frozen. It
+won't interfere with a system sleep because before trying to resume a
+root hub device, it acquires the device's lock.
+
+Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/core/usb.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/usb/core/usb.c
++++ b/drivers/usb/core/usb.c
+@@ -230,7 +230,7 @@ static int ksuspend_usb_init(void)
+ * singlethreaded. Its job doesn't justify running on more
+ * than one CPU.
+ */
+- ksuspend_usb_wq = create_freezeable_workqueue("ksuspend_usbd");
++ ksuspend_usb_wq = create_singlethread_workqueue("ksuspend_usbd");
+ if (!ksuspend_usb_wq)
+ return -ENOMEM;
+ return 0;
diff --git a/usb/usb-prepare-serial-core-for-autosuspend.patch b/usb/usb-prepare-serial-core-for-autosuspend.patch
new file mode 100644
index 00000000000000..e58721af73af08
--- /dev/null
+++ b/usb/usb-prepare-serial-core-for-autosuspend.patch
@@ -0,0 +1,100 @@
+From sarah.a.sharp@intel.com Mon Nov 26 22:53:36 2007
+From: Sarah Sharp <sarah.a.sharp@intel.com>
+Date: Tue, 13 Nov 2007 17:10:09 -0800
+Subject: USB: Prepare serial core for autosuspend.
+To: Greg KH <greg@kroah.com>
+Cc: linux-usb-devel@lists.sourceforge.net
+Message-ID: <20071114011009.GA30481@localdomain>
+Content-Disposition: inline
+
+
+Claim the interface for a USB to serial converter when the tty is open,
+and release the interface when the tty is closed.
+
+If a driver doesn't provide a resume function, use the generic resume
+instead.
+
+Make sure the generic resume function does not submit the URBs if we're
+coming back from autosuspend. On autoresume, we know that the open
+function will be called next, which will attempt to submit the URBs. If
+we submit them in the resume function, the open will fail.
+
+This works for:
+ - autosuspend
+ - suspending with the tty open or closed
+ - hibernate with the tty closed
+
+A hibernate (or a suspend that causes the USB subsystem to lose power)
+has issues. If you have the tty open when you hibernate, a new tty will
+be created when the device re-enumerates during resume.
+
+Signed-off-by: Sarah Sharp <sarah.a.sharp@intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/generic.c | 8 ++++++++
+ drivers/usb/serial/usb-serial.c | 12 ++++++++++--
+ 2 files changed, 18 insertions(+), 2 deletions(-)
+
+--- a/drivers/usb/serial/generic.c
++++ b/drivers/usb/serial/generic.c
+@@ -175,6 +175,14 @@ int usb_serial_generic_resume(struct usb
+ struct usb_serial_port *port;
+ int i, c = 0, r;
+
++#ifdef CONFIG_PM
++ /*
++ * If this is an autoresume, don't submit URBs.
++ * They will be submitted in the open function instead.
++ */
++ if (serial->dev->auto_pm)
++ return 0;
++#endif
+ for (i = 0; i < serial->num_ports; i++) {
+ port = serial->port[i];
+ if (port->open_count && port->read_urb) {
+--- a/drivers/usb/serial/usb-serial.c
++++ b/drivers/usb/serial/usb-serial.c
+@@ -225,16 +225,21 @@ static int serial_open (struct tty_struc
+ goto bailout_mutex_unlock;
+ }
+
++ retval = usb_autopm_get_interface(serial->interface);
++ if (retval)
++ goto bailout_module_put;
+ /* only call the device specific open if this
+ * is the first time the port is opened */
+ retval = serial->type->open(port, filp);
+ if (retval)
+- goto bailout_module_put;
++ goto bailout_interface_put;
+ }
+
+ mutex_unlock(&port->mutex);
+ return 0;
+
++bailout_interface_put:
++ usb_autopm_put_interface(serial->interface);
+ bailout_module_put:
+ module_put(serial->type->driver.owner);
+ bailout_mutex_unlock:
+@@ -277,8 +282,10 @@ static void serial_close(struct tty_stru
+ }
+ }
+
+- if (port->open_count == 0)
++ if (port->open_count == 0) {
++ usb_autopm_put_interface(port->serial->interface);
+ module_put(port->serial->type->driver.owner);
++ }
+
+ mutex_unlock(&port->mutex);
+ usb_serial_put(port->serial);
+@@ -1255,6 +1262,7 @@ static void fixup_generic(struct usb_ser
+ set_to_generic_if_null(device, read_bulk_callback);
+ set_to_generic_if_null(device, write_bulk_callback);
+ set_to_generic_if_null(device, shutdown);
++ set_to_generic_if_null(device, resume);
+ }
+
+ int usb_serial_register(struct usb_serial_driver *driver) /* must be called with BKL held */
diff --git a/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch b/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch
new file mode 100644
index 00000000000000..c0ec15f88829fe
--- /dev/null
+++ b/usb/usb-s3c2410-gadget-allow-sharing-of-vbus-irq.patch
@@ -0,0 +1,37 @@
+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
new file mode 100644
index 00000000000000..756d225ce36c1e
--- /dev/null
+++ b/usb/usb-s3c2410-gadget-ensure-vbus-pin-in-input-mode-during-read.patch
@@ -0,0 +1,34 @@
+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
new file mode 100644
index 00000000000000..34730c3b25795c
--- /dev/null
+++ b/usb/usb-s3c2410-gadget-header-move-fixups.patch
@@ -0,0 +1,35 @@
+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-usb-peripheral-controller-driver-oops-avoidance.patch b/usb/usb-usb-peripheral-controller-driver-oops-avoidance.patch
new file mode 100644
index 00000000000000..0e47741440db28
--- /dev/null
+++ b/usb/usb-usb-peripheral-controller-driver-oops-avoidance.patch
@@ -0,0 +1,92 @@
+From david-b@pacbell.net Mon Nov 26 23:00:35 2007
+From: Patrik Sevallius <patrik.sevallius@enea.com>
+Date: Tue, 20 Nov 2007 09:32:00 -0800
+Subject: USB: usb peripheral controller driver oops avoidance
+To: Greg KH <greg@kroah.com>
+Cc: linux-usb-devel@lists.sourceforge.net, Patrik Sevallius <patrik.sevallius@enea.com>
+Message-ID: <200711200932.01186.david-b@pacbell.net>
+Content-Disposition: inline
+
+
+From: Patrik Sevallius <patrik.sevallius@enea.com>
+
+I'm having problem with oopses when rebooting, if I modprobe g_serial
+and rmmod g_serial and do a reboot I get an oops in device_shutdown().
+The reason seems to be that usb_gadget_unregister_driver() doesn't do
+enough cleanup. With this at91_udc patch I don't get the oops.
+
+Signed-off-by: Patrik Sevallius <patrik.sevallius@enea.com>
+[ Same bug was in other peripheral controller drivers; fixed ]
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/gadget/amd5536udc.c | 1 +
+ drivers/usb/gadget/at91_udc.c | 2 ++
+ drivers/usb/gadget/goku_udc.c | 1 +
+ drivers/usb/gadget/lh7a40x_udc.c | 1 +
+ drivers/usb/gadget/m66592-udc.c | 1 +
+ drivers/usb/gadget/pxa2xx_udc.c | 1 +
+ 6 files changed, 7 insertions(+)
+
+--- a/drivers/usb/gadget/amd5536udc.c
++++ b/drivers/usb/gadget/amd5536udc.c
+@@ -2038,6 +2038,7 @@ int usb_gadget_unregister_driver(struct
+ spin_unlock_irqrestore(&dev->lock, flags);
+
+ driver->unbind(&dev->gadget);
++ dev->gadget.dev.driver = NULL;
+ dev->driver = NULL;
+
+ /* set SD */
+--- a/drivers/usb/gadget/at91_udc.c
++++ b/drivers/usb/gadget/at91_udc.c
+@@ -1614,6 +1614,8 @@ int usb_gadget_unregister_driver (struct
+ local_irq_enable();
+
+ driver->unbind(&udc->gadget);
++ udc->gadget.dev.driver = NULL;
++ udc->gadget.dev.driver_data = NULL;
+ udc->driver = NULL;
+
+ DBG("unbound from %s\n", driver->driver.name);
+--- a/drivers/usb/gadget/goku_udc.c
++++ b/drivers/usb/gadget/goku_udc.c
+@@ -1422,6 +1422,7 @@ int usb_gadget_unregister_driver(struct
+ spin_unlock_irqrestore(&dev->lock, flags);
+
+ driver->unbind(&dev->gadget);
++ dev->gadget.dev.driver = NULL;
+
+ DBG(dev, "unregistered driver '%s'\n", driver->driver.name);
+ return 0;
+--- a/drivers/usb/gadget/lh7a40x_udc.c
++++ b/drivers/usb/gadget/lh7a40x_udc.c
+@@ -474,6 +474,7 @@ int usb_gadget_unregister_driver(struct
+ spin_unlock_irqrestore(&dev->lock, flags);
+
+ driver->unbind(&dev->gadget);
++ dev->gadget.dev.driver = NULL;
+ device_del(&dev->gadget.dev);
+
+ udc_disable(dev);
+--- a/drivers/usb/gadget/m66592-udc.c
++++ b/drivers/usb/gadget/m66592-udc.c
+@@ -1508,6 +1508,7 @@ int usb_gadget_unregister_driver(struct
+ m66592_bclr(m66592, M66592_VBSE | M66592_URST, M66592_INTENB0);
+
+ driver->unbind(&m66592->gadget);
++ m66592->gadget.dev.driver = NULL;
+
+ init_controller(m66592);
+ disable_controller(m66592);
+--- a/drivers/usb/gadget/pxa2xx_udc.c
++++ b/drivers/usb/gadget/pxa2xx_udc.c
+@@ -1345,6 +1345,7 @@ int usb_gadget_unregister_driver(struct
+ local_irq_enable();
+
+ driver->unbind(&dev->gadget);
++ dev->gadget.dev.driver = NULL;
+ dev->driver = NULL;
+
+ device_del (&dev->gadget.dev);
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
new file mode 100644
index 00000000000000..2508f49bdba1ca
--- /dev/null
+++ b/usb/usb-usb-storage-unusual_devs-entry-for-jetflash-ts1gjf2a.patch
@@ -0,0 +1,41 @@
+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",