diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2008-09-17 14:20:22 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-09-17 14:20:22 -0700 |
| commit | 6a93367f7f10939a32da378d2e89aa5cf2b9528f (patch) | |
| tree | 715cc370af42b5a331bc6cf1d5ee66e3f29c859c | |
| parent | 8f052ea64c032f5fba8e55974074edf68f8fc08f (diff) | |
| download | patches-6a93367f7f10939a32da378d2e89aa5cf2b9528f.tar.gz | |
more usb ids
| -rw-r--r-- | ce.patch | 105 | ||||
| -rw-r--r-- | series | 6 | ||||
| -rw-r--r-- | usb.current/usb-serial-add-zte-cdma-tech-id-to-option-driver.patch | 34 | ||||
| -rw-r--r-- | usb.current/usb-serial-sierra-add-mc8785-vid-pid.patch | 30 | ||||
| -rw-r--r-- | usb/usb-remove-info-macro-from-usb.h.patch | 4 | ||||
| -rw-r--r-- | usb/usb-serial-sierra-debug-message-fix.patch | 247 |
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 + */ @@ -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]; |
