aboutsummaryrefslogtreecommitdiffstats
diff options
authorGreg Kroah-Hartman <gregkh@suse.de>2008-09-17 14:20:22 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2008-09-17 14:20:22 -0700
commit6a93367f7f10939a32da378d2e89aa5cf2b9528f (patch)
tree715cc370af42b5a331bc6cf1d5ee66e3f29c859c
parent8f052ea64c032f5fba8e55974074edf68f8fc08f (diff)
downloadpatches-6a93367f7f10939a32da378d2e89aa5cf2b9528f.tar.gz
more usb ids
-rw-r--r--ce.patch105
-rw-r--r--series6
-rw-r--r--usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch34
-rw-r--r--usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch30
-rw-r--r--usb/usb-remove-info-macro-from-usb.h.patch4
-rw-r--r--usb/usb-serial-sierra-debug-message-fix.patch247
6 files changed, 424 insertions, 2 deletions
diff --git a/ce.patch b/ce.patch
new file mode 100644
index 00000000000000..9b3538d51c219e
--- /dev/null
+++ b/ce.patch
@@ -0,0 +1,105 @@
+commit 63c301eabc7324e7587425305c256995dac8fa11
+Author: Thomas Gleixner <tglx@linutronix.de>
+Date: Tue Sep 16 11:32:50 2008 -0700
+
+ clockevents: make device shutdown robust
+
+ The device shut down does not cleanup the next_event variable of the
+ clock event device. So when the device is reactivated the possible
+ stale next_event value can prevent the device to be reprogrammed as it
+ claims to wait on a event already.
+
+ This is the root cause of the resurfacing suspend/resume problem,
+ where systems need key press to come back to life.
+
+ Fix this by setting next_event to KTIME_MAX when the device is shut
+ down. Use a separate function for shutdown which takes care of that
+ and only keep the direct set mode call in the broadcast code, where we
+ can not touch the next_event value.
+
+ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+
+---
+ kernel/time/clockevents.c | 12 +++++++++++-
+ kernel/time/tick-broadcast.c | 9 ++++-----
+ kernel/time/tick-internal.h | 2 ++
+ 3 files changed, 17 insertions(+), 6 deletions(-)
+
+--- a/kernel/time/clockevents.c
++++ b/kernel/time/clockevents.c
+@@ -72,6 +72,16 @@ void clockevents_set_mode(struct clock_e
+ }
+
+ /**
++ * clockevents_shutdown - shutdown the device and clear next_event
++ * @dev: device to shutdown
++ */
++void clockevents_shutdown(struct clock_event_device *dev)
++{
++ clockevents_set_mode(dev, CLOCK_EVT_MODE_SHUTDOWN);
++ dev->next_event.tv64 = KTIME_MAX;
++}
++
++/**
+ * clockevents_program_event - Reprogram the clock event device.
+ * @expires: absolute expiry time (monotonic clock)
+ *
+@@ -206,7 +216,7 @@ void clockevents_exchange_device(struct
+
+ if (new) {
+ BUG_ON(new->mode != CLOCK_EVT_MODE_UNUSED);
+- clockevents_set_mode(new, CLOCK_EVT_MODE_SHUTDOWN);
++ clockevents_shutdown(new);
+ }
+ local_irq_restore(flags);
+ }
+--- a/kernel/time/tick-broadcast.c
++++ b/kernel/time/tick-broadcast.c
+@@ -236,8 +236,7 @@ static void tick_do_broadcast_on_off(voi
+ if (!cpu_isset(cpu, tick_broadcast_mask)) {
+ cpu_set(cpu, tick_broadcast_mask);
+ if (td->mode == TICKDEV_MODE_PERIODIC)
+- clockevents_set_mode(dev,
+- CLOCK_EVT_MODE_SHUTDOWN);
++ clockevents_shutdown(dev);
+ }
+ if (*reason == CLOCK_EVT_NOTIFY_BROADCAST_FORCE)
+ tick_broadcast_force = 1;
+@@ -254,7 +253,7 @@ static void tick_do_broadcast_on_off(voi
+
+ if (cpus_empty(tick_broadcast_mask)) {
+ if (!bc_stopped)
+- clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
++ clockevents_shutdown(bc);
+ } else if (bc_stopped) {
+ if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC)
+ tick_broadcast_start_periodic(bc);
+@@ -306,7 +305,7 @@ void tick_shutdown_broadcast(unsigned in
+
+ if (tick_broadcast_device.mode == TICKDEV_MODE_PERIODIC) {
+ if (bc && cpus_empty(tick_broadcast_mask))
+- clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
++ clockevents_shutdown(bc);
+ }
+
+ spin_unlock_irqrestore(&tick_broadcast_lock, flags);
+@@ -321,7 +320,7 @@ void tick_suspend_broadcast(void)
+
+ bc = tick_broadcast_device.evtdev;
+ if (bc)
+- clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
++ clockevents_shutdown(bc);
+
+ spin_unlock_irqrestore(&tick_broadcast_lock, flags);
+ }
+--- a/kernel/time/tick-internal.h
++++ b/kernel/time/tick-internal.h
+@@ -10,6 +10,8 @@ extern int tick_do_timer_cpu __read_most
+ extern void tick_setup_periodic(struct clock_event_device *dev, int broadcast);
+ extern void tick_handle_periodic(struct clock_event_device *dev);
+
++extern void clockevents_shutdown(struct clock_event_device *dev);
++
+ /*
+ * NO_HZ / high resolution timer shared code
+ */
diff --git a/series b/series
index c1ca124de4e064..9a9062bda1257d 100644
--- a/series
+++ b/series
@@ -33,6 +33,8 @@ usb.current/usb-unusual_devs-addition-for-rockchip-mp3-player.patch
usb.current/usb-fsl_usb2_udc-fix-vdbg-format-string.patch
usb.current/usb-serial-ti_usb_3410_5052-obviously-broken-by-firmware-changes.patch
usb.current/usb-ftdi_sio-add-0x5050-0x0900-usb-ids.patch
+usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch
+usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch
usb.current/usb-added-driver-for-a-delcom-usb-7-segment-led-display.patch
usb.current/usb-add-usb-test-and-measurement-class-driver.patch
@@ -153,6 +155,7 @@ usb/usb-documentation-usb-anchors.txt-2.patch
usb/usb-core-fix-usb_otg_blacklist_hub-typo.patch
usb/usb-ftdi_sio-fix-product-parameter-description.patch
usb/usb-reset_resume-needs-to-block-autosuspend-when-remote-wakeup-is-needed.patch
+usb/usb-serial-sierra-debug-message-fix.patch
usb/fsl_usb2_udc-make-dr_ep_setup-function-static.patch
usb/fsl_usb2_udc-remove-check-for-udc-null-in-dr_controller_setup.patch
@@ -207,5 +210,8 @@ usb/usb-gotemp.patch
#f.patch
+ce.patch
+
+
diff --git a/usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch b/usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch
new file mode 100644
index 00000000000000..85d8ae923279ef
--- /dev/null
+++ b/usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch
@@ -0,0 +1,34 @@
+From otavio@ossystems.com.br Wed Sep 17 14:14:47 2008
+From: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed, 17 Sep 2008 14:40:46 -0300
+Subject: USB: serial: add ZTE CDMA Tech id to option driver
+To: gregkh@suse.de
+Cc: linux-usb@vger.kernel.org, Otavio Salvador <otavio@ossystems.com.br>
+Message-ID: <1221673246-3082-1-git-send-email-otavio@ossystems.com.br>
+
+
+Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/option.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/drivers/usb/serial/option.c
++++ b/drivers/usb/serial/option.c
+@@ -218,6 +218,7 @@ static int option_send_setup(struct tty
+ /* ZTE PRODUCTS */
+ #define ZTE_VENDOR_ID 0x19d2
+ #define ZTE_PRODUCT_MF628 0x0015
++#define ZTE_PRODUCT_CDMA_TECH 0xfffe
+
+ static struct usb_device_id option_ids[] = {
+ { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) },
+@@ -347,6 +348,7 @@ static struct usb_device_id option_ids[]
+ { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */
+ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) },
+ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_MF628) },
++ { USB_DEVICE(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH) },
+ { } /* Terminating entry */
+ };
+ MODULE_DEVICE_TABLE(usb, option_ids);
diff --git a/usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch b/usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch
new file mode 100644
index 00000000000000..c1deaf49f46046
--- /dev/null
+++ b/usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch
@@ -0,0 +1,30 @@
+From klloyd@sierrawireless.com Wed Sep 17 14:15:42 2008
+From: Kevin Lloyd <klloyd@sierrawireless.com>
+Date: Wed, 17 Sep 2008 09:03:38 -0700
+Subject: USB Serial: Sierra: Add MC8785 VID/PID
+To: gregkh@suse.de, linux-usb@vger.kernel.org
+Cc: klloyd@sierrawireless.com
+Message-ID: <1221667418.27612.2.camel@linux-z60t>
+
+
+From: Kevin Lloyd <klloyd@sierrawireless.com>
+
+Add another MC8785 VID/PID
+
+Signed-off-by: Kevin Lloyd <klloyd@sierrawireless.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/sierra.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/usb/serial/sierra.c
++++ b/drivers/usb/serial/sierra.c
+@@ -186,6 +186,7 @@ static struct usb_device_id id_table []
+ { USB_DEVICE(0x1199, 0x6821) }, /* Sierra Wireless AirCard 875U */
+ { USB_DEVICE(0x1199, 0x6832) }, /* Sierra Wireless MC8780 */
+ { USB_DEVICE(0x1199, 0x6833) }, /* Sierra Wireless MC8781 */
++ { USB_DEVICE(0x1199, 0x683A) }, /* Sierra Wireless MC8785 */
+ { USB_DEVICE(0x1199, 0x683B) }, /* Sierra Wireless MC8785 Composite */
+ { USB_DEVICE(0x1199, 0x683C) }, /* Sierra Wireless MC8790 */
+ { USB_DEVICE(0x1199, 0x683D) }, /* Sierra Wireless MC8790 */
diff --git a/usb/usb-remove-info-macro-from-usb.h.patch b/usb/usb-remove-info-macro-from-usb.h.patch
index d02e8e47f95110..3900cee9882c88 100644
--- a/usb/usb-remove-info-macro-from-usb.h.patch
+++ b/usb/usb-remove-info-macro-from-usb.h.patch
@@ -2711,7 +2711,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
usb_serial_deregister(&zyxel_omninet_device);
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
-@@ -425,7 +425,8 @@ static int __init option_init(void)
+@@ -427,7 +427,8 @@ static int __init option_init(void)
if (retval)
goto failed_driver_register;
@@ -2766,7 +2766,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
if (!id_table[i].idVendor && !id_table[i].idProduct) {
--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
-@@ -740,7 +740,8 @@ static int __init sierra_init(void)
+@@ -748,7 +748,8 @@ static int __init sierra_init(void)
if (retval)
goto failed_driver_register;
diff --git a/usb/usb-serial-sierra-debug-message-fix.patch b/usb/usb-serial-sierra-debug-message-fix.patch
new file mode 100644
index 00000000000000..b0e21131c560ba
--- /dev/null
+++ b/usb/usb-serial-sierra-debug-message-fix.patch
@@ -0,0 +1,247 @@
+From linux-usb-owner@vger.kernel.org Wed Sep 17 14:16:04 2008
+From: Kevin Lloyd <klloyd@sierrawireless.com>
+Date: Tue, 16 Sep 2008 21:05:24 -0700
+Subject: USB Serial: Sierra: debug message fix
+To: linux-usb@vger.kernel.org
+Cc: klloyd@sierrawireless.com
+Message-ID: <1221624324.23836.8.camel@linux-z60t>
+
+
+From: Kevin Lloyd <klloyd@sierrawireless.com>
+
+This patch moves dbg calls to dev_dbg where possible. It also fixes some
+issues with a previous submission aiming to do the same thing.
+
+Signed-off-by: Kevin Lloyd <klloyd@sierrawireless.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/usb/serial/sierra.c | 69 ++++++++++++++++++++++++--------------------
+ 1 file changed, 38 insertions(+), 31 deletions(-)
+
+--- a/drivers/usb/serial/sierra.c
++++ b/drivers/usb/serial/sierra.c
+@@ -247,7 +247,7 @@ static int sierra_send_setup(struct tty_
+ struct sierra_port_private *portdata;
+ __u16 interface = 0;
+
+- dbg("%s", __func__);
++ dev_dbg(&port->dev, "%s", __func__);
+
+ portdata = usb_get_serial_port_data(port);
+
+@@ -284,7 +284,7 @@ static int sierra_send_setup(struct tty_
+ static void sierra_set_termios(struct tty_struct *tty,
+ struct usb_serial_port *port, struct ktermios *old_termios)
+ {
+- dbg("%s", __func__);
++ dev_dbg(&port->dev, "%s", __func__);
+ tty_termios_copy_hw(tty->termios, old_termios);
+ sierra_send_setup(tty, port);
+ }
+@@ -295,6 +295,7 @@ static int sierra_tiocmget(struct tty_st
+ unsigned int value;
+ struct sierra_port_private *portdata;
+
++ dev_dbg(&port->dev, "%s", __func__);
+ portdata = usb_get_serial_port_data(port);
+
+ value = ((portdata->rts_state) ? TIOCM_RTS : 0) |
+@@ -334,14 +335,14 @@ static void sierra_outdat_callback(struc
+ int status = urb->status;
+ unsigned long flags;
+
+- dbg("%s - port %d", __func__, port->number);
++ dev_dbg(&port->dev, "%s - port %d", __func__, port->number);
+
+ /* free up the transfer buffer, as usb_free_urb() does not do this */
+ kfree(urb->transfer_buffer);
+
+ if (status)
+- dbg("%s - nonzero write bulk status received: %d",
+- __func__, status);
++ dev_dbg(&port->dev, "%s - nonzero write bulk status "
++ "received: %d", __func__, status);
+
+ spin_lock_irqsave(&portdata->lock, flags);
+ --portdata->outstanding_urbs;
+@@ -363,12 +364,12 @@ static int sierra_write(struct tty_struc
+
+ portdata = usb_get_serial_port_data(port);
+
+- dbg("%s: write (%d chars)", __func__, count);
++ dev_dbg(&port->dev, "%s: write (%d chars)", __func__, count);
+
+ spin_lock_irqsave(&portdata->lock, flags);
+ if (portdata->outstanding_urbs > N_OUT_URB) {
+ spin_unlock_irqrestore(&portdata->lock, flags);
+- dbg("%s - write limit hit\n", __func__);
++ dev_dbg(&port->dev, "%s - write limit hit\n", __func__);
+ return 0;
+ }
+ portdata->outstanding_urbs++;
+@@ -437,8 +438,8 @@ static void sierra_indat_callback(struct
+ port = urb->context;
+
+ if (status) {
+- dbg("%s: nonzero status: %d on endpoint %02x.",
+- __func__, status, endpoint);
++ dev_dbg(&port->dev, "%s: nonzero status: %d on"
++ " endpoint %02x.", __func__, status, endpoint);
+ } else {
+ tty = port->port.tty;
+ if (urb->actual_length) {
+@@ -446,7 +447,8 @@ static void sierra_indat_callback(struct
+ tty_insert_flip_string(tty, data, urb->actual_length);
+ tty_flip_buffer_push(tty);
+ } else {
+- dbg("%s: empty read urb received", __func__);
++ dev_dbg(&port->dev, "%s: empty read urb"
++ " received", __func__);
+ }
+
+ /* Resubmit urb so we continue receiving */
+@@ -468,15 +470,17 @@ static void sierra_instat_callback(struc
+ struct sierra_port_private *portdata = usb_get_serial_port_data(port);
+ struct usb_serial *serial = port->serial;
+
+- dbg("%s", __func__);
+- dbg("%s: urb %p port %p has data %p", __func__, urb, port, portdata);
++ dev_dbg(&port->dev, "%s", __func__);
++ dev_dbg(&port->dev, "%s: urb %p port %p has data %p", __func__,
++ urb, port, portdata);
+
+ if (status == 0) {
+ struct usb_ctrlrequest *req_pkt =
+ (struct usb_ctrlrequest *)urb->transfer_buffer;
+
+ if (!req_pkt) {
+- dbg("%s: NULL req_pkt\n", __func__);
++ dev_dbg(&port->dev, "%s: NULL req_pkt\n",
++ __func__);
+ return;
+ }
+ if ((req_pkt->bRequestType == 0xA1) &&
+@@ -486,7 +490,8 @@ static void sierra_instat_callback(struc
+ urb->transfer_buffer +
+ sizeof(struct usb_ctrlrequest));
+
+- dbg("%s: signal x%x", __func__, signals);
++ dev_dbg(&port->dev, "%s: signal x%x", __func__,
++ signals);
+
+ old_dcd_state = portdata->dcd_state;
+ portdata->cts_state = 1;
+@@ -498,19 +503,20 @@ static void sierra_instat_callback(struc
+ old_dcd_state && !portdata->dcd_state)
+ tty_hangup(port->port.tty);
+ } else {
+- dbg("%s: type %x req %x", __func__,
+- req_pkt->bRequestType, req_pkt->bRequest);
++ dev_dbg(&port->dev, "%s: type %x req %x",
++ __func__, req_pkt->bRequestType,
++ req_pkt->bRequest);
+ }
+ } else
+- dbg("%s: error %d", __func__, status);
++ dev_dbg(&port->dev, "%s: error %d", __func__, status);
+
+ /* Resubmit urb so we continue receiving IRQ data */
+ if (status != -ESHUTDOWN) {
+ urb->dev = serial->dev;
+ err = usb_submit_urb(urb, GFP_ATOMIC);
+ if (err)
+- dbg("%s: resubmit intr urb failed. (%d)",
+- __func__, err);
++ dev_dbg(&port->dev, "%s: resubmit intr urb "
++ "failed. (%d)", __func__, err);
+ }
+ }
+
+@@ -520,14 +526,14 @@ static int sierra_write_room(struct tty_
+ struct sierra_port_private *portdata = usb_get_serial_port_data(port);
+ unsigned long flags;
+
+- dbg("%s - port %d", __func__, port->number);
++ dev_dbg(&port->dev, "%s - port %d", __func__, port->number);
+
+ /* try to give a good number back based on if we have any free urbs at
+ * this point in time */
+ spin_lock_irqsave(&portdata->lock, flags);
+ if (portdata->outstanding_urbs > N_OUT_URB * 2 / 3) {
+ spin_unlock_irqrestore(&portdata->lock, flags);
+- dbg("%s - write limit hit\n", __func__);
++ dev_dbg(&port->dev, "%s - write limit hit\n", __func__);
+ return 0;
+ }
+ spin_unlock_irqrestore(&portdata->lock, flags);
+@@ -546,7 +552,7 @@ static int sierra_open(struct tty_struct
+
+ portdata = usb_get_serial_port_data(port);
+
+- dbg("%s", __func__);
++ dev_dbg(&port->dev, "%s", __func__);
+
+ /* Set some sane defaults */
+ portdata->rts_state = 1;
+@@ -558,8 +564,8 @@ static int sierra_open(struct tty_struct
+ if (!urb)
+ continue;
+ if (urb->dev != serial->dev) {
+- dbg("%s: dev %p != %p", __func__,
+- urb->dev, serial->dev);
++ dev_dbg(&port->dev, "%s: dev %p != %p",
++ __func__, urb->dev, serial->dev);
+ continue;
+ }
+
+@@ -598,7 +604,7 @@ static void sierra_close(struct tty_stru
+ struct usb_serial *serial = port->serial;
+ struct sierra_port_private *portdata;
+
+- dbg("%s", __func__);
++ dev_dbg(&port->dev, "%s", __func__);
+ portdata = usb_get_serial_port_data(port);
+
+ portdata->rts_state = 0;
+@@ -628,7 +634,7 @@ static int sierra_startup(struct usb_ser
+ int i;
+ int j;
+
+- dbg("%s", __func__);
++ dev_dbg(&serial->dev->dev, "%s", __func__);
+
+ /* Set Device mode to D0 */
+ sierra_set_power_state(serial->dev, 0x0000);
+@@ -642,8 +648,9 @@ static int sierra_startup(struct usb_ser
+ port = serial->port[i];
+ portdata = kzalloc(sizeof(*portdata), GFP_KERNEL);
+ if (!portdata) {
+- dbg("%s: kmalloc for sierra_port_private (%d) failed!.",
+- __func__, i);
++ dev_dbg(&port->dev, "%s: kmalloc for "
++ "sierra_port_private (%d) failed!.",
++ __func__, i);
+ return -ENOMEM;
+ }
+ spin_lock_init(&portdata->lock);
+@@ -663,8 +670,8 @@ static int sierra_startup(struct usb_ser
+ for (j = 0; j < N_IN_URB; ++j) {
+ urb = usb_alloc_urb(0, GFP_KERNEL);
+ if (urb == NULL) {
+- dbg("%s: alloc for in port failed.",
+- __func__);
++ dev_dbg(&port->dev, "%s: alloc for in "
++ "port failed.", __func__);
+ continue;
+ }
+ /* Fill URB using supplied data. */
+@@ -686,7 +693,7 @@ static void sierra_shutdown(struct usb_s
+ struct usb_serial_port *port;
+ struct sierra_port_private *portdata;
+
+- dbg("%s", __func__);
++ dev_dbg(&serial->dev->dev, "%s", __func__);
+
+ for (i = 0; i < serial->num_ports; ++i) {
+ port = serial->port[i];