diff options
| author | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-15 13:01:15 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-06-15 13:01:15 -0700 |
| commit | a40f36137a30dc17b00c73bad543b90915bf24b7 (patch) | |
| tree | e211752d32cc19269c6e73b3bb9e10a9dc60d3e0 /usb | |
| parent | 0f3f33d3056bea4fc8cc48a18ced89762af3917e (diff) | |
| download | patches-a40f36137a30dc17b00c73bad543b90915bf24b7.tar.gz | |
2.6.30-git8 resync
Remove patches already upstream (sierra) and lots of merges
Diffstat (limited to 'usb')
30 files changed, 315 insertions, 607 deletions
diff --git a/usb/usb-cdc-acm-quirk-for-alcatel-ot-i650.patch b/usb/usb-cdc-acm-quirk-for-alcatel-ot-i650.patch index 2d41a1f0d80c76..e3287d3b88115a 100644 --- a/usb/usb-cdc-acm-quirk-for-alcatel-ot-i650.patch +++ b/usb/usb-cdc-acm-quirk-for-alcatel-ot-i650.patch @@ -22,7 +22,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c -@@ -1432,6 +1432,9 @@ static struct usb_device_id acm_ids[] = +@@ -1495,6 +1495,9 @@ static struct usb_device_id acm_ids[] = Maybe we should define a new quirk for this. */ }, diff --git a/usb/usb-ftdi_sio-fix-hi-speed-device-packet-size-calculation.patch b/usb/usb-ftdi_sio-fix-hi-speed-device-packet-size-calculation.patch index 2a69649632ce15..3852147ae623de 100644 --- a/usb/usb-ftdi_sio-fix-hi-speed-device-packet-size-calculation.patch +++ b/usb/usb-ftdi_sio-fix-hi-speed-device-packet-size-calculation.patch @@ -29,7 +29,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c -@@ -94,6 +94,7 @@ struct ftdi_private { +@@ -95,6 +95,7 @@ struct ftdi_private { unsigned long tx_bytes; unsigned long tx_outstanding_bytes; unsigned long tx_outstanding_urbs; @@ -37,7 +37,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; /* struct ftdi_sio_quirk is used by devices requiring special attention. */ -@@ -702,7 +703,6 @@ static const char *ftdi_chip_name[] = { +@@ -703,7 +704,6 @@ static const char *ftdi_chip_name[] = { /* Constants for read urb and write urb */ #define BUFSZ 512 @@ -45,7 +45,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* rx_flags */ #define THROTTLED 0x01 -@@ -1246,6 +1246,45 @@ static void ftdi_determine_type(struct u +@@ -1296,6 +1296,45 @@ static void ftdi_determine_type(struct u } @@ -91,15 +91,15 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* * *************************************************************************** * Sysfs Attribute -@@ -1461,6 +1500,7 @@ static int ftdi_sio_port_probe(struct us +@@ -1485,6 +1524,7 @@ static int ftdi_sio_port_probe(struct us usb_set_serial_port_data(port, priv); ftdi_determine_type(port); + ftdi_set_max_packet_size(port); + read_latency_timer(port); create_sysfs_attrs(port); return 0; - } -@@ -1713,8 +1753,8 @@ static int ftdi_write(struct tty_struct +@@ -1740,8 +1780,8 @@ static int ftdi_write(struct tty_struct if (data_offset > 0) { /* Original sio needs control bytes too... */ transfer_size += (data_offset * @@ -110,7 +110,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } buffer = kmalloc(transfer_size, GFP_ATOMIC); -@@ -1736,7 +1776,7 @@ static int ftdi_write(struct tty_struct +@@ -1763,7 +1803,7 @@ static int ftdi_write(struct tty_struct if (data_offset > 0) { /* Original sio requires control byte at start of each packet. */ @@ -119,7 +119,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int todo = count; unsigned char *first_byte = buffer; const unsigned char *current_position = buf; -@@ -1832,7 +1872,7 @@ static void ftdi_write_bulk_callback(str +@@ -1859,7 +1899,7 @@ static void ftdi_write_bulk_callback(str data_offset = priv->write_offset; if (data_offset > 0) { /* Subtract the control bytes */ @@ -128,7 +128,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } spin_lock_irqsave(&priv->tx_lock, flags); --priv->tx_outstanding_urbs; -@@ -1934,7 +1974,7 @@ static void ftdi_read_bulk_callback(stru +@@ -1961,7 +2001,7 @@ static void ftdi_read_bulk_callback(stru /* count data bytes, but not status bytes */ countread = urb->actual_length; @@ -137,7 +137,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_lock_irqsave(&priv->rx_lock, flags); priv->rx_bytes += countread; spin_unlock_irqrestore(&priv->rx_lock, flags); -@@ -2007,7 +2047,7 @@ static void ftdi_process_read(struct wor +@@ -2034,7 +2074,7 @@ static void ftdi_process_read(struct wor need_flip = 0; for (packet_offset = priv->rx_processed; @@ -146,7 +146,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int length; /* Compare new line status to the old one, signal if different/ -@@ -2022,7 +2062,7 @@ static void ftdi_process_read(struct wor +@@ -2049,7 +2089,7 @@ static void ftdi_process_read(struct wor priv->prev_status = new_status; } diff --git a/usb/usb-garmin_gps-removes-usb_reset_device-from-garmin_close.patch b/usb/usb-garmin_gps-removes-usb_reset_device-from-garmin_close.patch index eb7c1bb923597d..0d0d625da469b3 100644 --- a/usb/usb-garmin_gps-removes-usb_reset_device-from-garmin_close.patch +++ b/usb/usb-garmin_gps-removes-usb_reset_device-from-garmin_close.patch @@ -309,7 +309,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_unlock_irqrestore(&garmin_data_p->lock, flags); /* shutdown any bulk reads that might be going on */ -@@ -1007,6 +974,7 @@ static void garmin_close(struct tty_stru +@@ -1006,6 +973,7 @@ static void garmin_close(struct usb_seri return; mutex_lock(&port->serial->disc_mutex); @@ -317,7 +317,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (!port->serial->disconnected) garmin_clear(garmin_data_p); -@@ -1014,25 +982,17 @@ static void garmin_close(struct tty_stru +@@ -1013,25 +981,17 @@ static void garmin_close(struct usb_seri usb_kill_urb(port->read_urb); usb_kill_urb(port->write_urb); @@ -347,7 +347,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (port) { struct garmin_data *garmin_data_p = -@@ -1040,20 +1000,13 @@ static void garmin_write_bulk_callback(s +@@ -1039,20 +999,13 @@ static void garmin_write_bulk_callback(s dbg("%s - port %d", __func__, port->number); @@ -373,7 +373,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> usb_serial_port_softint(port); } -@@ -1109,7 +1062,11 @@ static int garmin_write_bulk(struct usb_ +@@ -1108,7 +1061,11 @@ static int garmin_write_bulk(struct usb_ urb->transfer_flags |= URB_ZERO_PACKET; if (GARMIN_LAYERID_APPL == getLayerId(buffer)) { @@ -386,7 +386,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (garmin_data_p->mode == MODE_GARMIN_SERIAL) { pkt_clear(garmin_data_p); garmin_data_p->state = STATE_GSP_WAIT_DATA; -@@ -1141,6 +1098,9 @@ static int garmin_write(struct tty_struc +@@ -1140,6 +1097,9 @@ static int garmin_write(struct tty_struc usb_serial_debug_data(debug, &port->dev, __func__, count, buf); @@ -396,7 +396,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* check for our private packets */ if (count >= GARMIN_PKTHDR_LENGTH) { len = PRIVPKTSIZ; -@@ -1185,7 +1145,7 @@ static int garmin_write(struct tty_struc +@@ -1184,7 +1144,7 @@ static int garmin_write(struct tty_struc break; case PRIV_PKTID_RESET_REQ: @@ -405,7 +405,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> break; case PRIV_PKTID_SET_DEF_MODE: -@@ -1201,8 +1161,6 @@ static int garmin_write(struct tty_struc +@@ -1200,8 +1160,6 @@ static int garmin_write(struct tty_struc } } @@ -414,7 +414,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (garmin_data_p->mode == MODE_GARMIN_SERIAL) { return gsp_receive(garmin_data_p, buf, count); } else { /* MODE_NATIVE */ -@@ -1225,31 +1183,33 @@ static int garmin_write_room(struct tty_ +@@ -1224,31 +1182,33 @@ static int garmin_write_room(struct tty_ static void garmin_read_process(struct garmin_data *garmin_data_p, unsigned char *data, unsigned data_length) { @@ -460,7 +460,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } -@@ -1364,8 +1324,6 @@ static void garmin_read_int_callback(str +@@ -1363,8 +1323,6 @@ static void garmin_read_int_callback(str } else { spin_lock_irqsave(&garmin_data_p->lock, flags); garmin_data_p->flags |= FLAGS_BULK_IN_ACTIVE; @@ -469,7 +469,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_unlock_irqrestore(&garmin_data_p->lock, flags); } -@@ -1392,17 +1350,7 @@ static void garmin_read_int_callback(str +@@ -1391,17 +1349,7 @@ static void garmin_read_int_callback(str __func__, garmin_data_p->serial_num); } diff --git a/usb/usb-identify-novatel-mc760-in-option-driver.patch b/usb/usb-identify-novatel-mc760-in-option-driver.patch index c80f131ce9796b..029b812bf31510 100644 --- a/usb/usb-identify-novatel-mc760-in-option-driver.patch +++ b/usb/usb-identify-novatel-mc760-in-option-driver.patch @@ -19,7 +19,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -203,9 +203,9 @@ static int option_resume(struct usb_ser +@@ -204,9 +204,9 @@ static int option_resume(struct usb_ser #define NOVATELWIRELESS_PRODUCT_MC727 0x4100 #define NOVATELWIRELESS_PRODUCT_MC950D 0x4400 #define NOVATELWIRELESS_PRODUCT_U727 0x5010 @@ -30,7 +30,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define NOVATELWIRELESS_PRODUCT_EVDO_HIGHSPEED 0X6001 #define NOVATELWIRELESS_PRODUCT_HSPA_FULLSPEED 0X7000 #define NOVATELWIRELESS_PRODUCT_HSPA_HIGHSPEED 0X7001 -@@ -427,7 +427,7 @@ static struct usb_device_id option_ids[] +@@ -428,7 +428,7 @@ static struct usb_device_id option_ids[] { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC950D) }, /* Novatel MC930D/MC950D */ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC727) }, /* Novatel MC727/U727/USB727 */ { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_U727) }, /* Novatel MC727/U727/USB727 */ diff --git a/usb/usb-ignore-storage-device-in-modem-mode-on-dwn-652.patch b/usb/usb-ignore-storage-device-in-modem-mode-on-dwn-652.patch index 9e25e166a4794c..7d8797db7f334b 100644 --- a/usb/usb-ignore-storage-device-in-modem-mode-on-dwn-652.patch +++ b/usb/usb-ignore-storage-device-in-modem-mode-on-dwn-652.patch @@ -34,16 +34,16 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + const struct usb_device_id *id); static int option_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void option_close(struct tty_struct *tty, struct usb_serial_port *port, -@@ -554,6 +556,7 @@ static struct usb_serial_driver option_1 + static void option_close(struct usb_serial_port *port); +@@ -555,6 +557,7 @@ static struct usb_serial_driver option_1 .usb_driver = &option_driver, .id_table = option_ids, .num_ports = 1, + .probe = option_probe, .open = option_open, .close = option_close, - .write = option_write, -@@ -629,6 +632,18 @@ static void __exit option_exit(void) + .dtr_rts = option_dtr_rts, +@@ -631,6 +634,18 @@ static void __exit option_exit(void) module_init(option_init); module_exit(option_exit); diff --git a/usb/usb-mos7840-fix-debug-log-messages.patch b/usb/usb-mos7840-fix-debug-log-messages.patch index 3f8e71d1707ab4..da267c5a08465e 100644 --- a/usb/usb-mos7840-fix-debug-log-messages.patch +++ b/usb/usb-mos7840-fix-debug-log-messages.patch @@ -386,7 +386,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return 0; } -@@ -1190,16 +1194,16 @@ static void mos7840_close(struct tty_str +@@ -1148,16 +1152,16 @@ static void mos7840_close(struct usb_ser int j; __u16 Data; @@ -406,7 +406,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -1231,27 +1235,27 @@ static void mos7840_close(struct tty_str +@@ -1185,27 +1189,27 @@ static void mos7840_close(struct usb_ser * and interrupt read if they exists */ if (serial->dev) { if (mos7840_port->write_urb) { @@ -439,7 +439,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> usb_kill_urb(serial->port[0]->interrupt_in_urb); } } -@@ -1271,7 +1275,7 @@ static void mos7840_close(struct tty_str +@@ -1225,7 +1229,7 @@ static void mos7840_close(struct usb_ser mos7840_port->open = 0; @@ -448,7 +448,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } /************************************************************************ -@@ -1326,17 +1330,17 @@ static void mos7840_break(struct tty_str +@@ -1280,17 +1284,17 @@ static void mos7840_break(struct tty_str struct usb_serial *serial; struct moschip_port *mos7840_port; @@ -470,7 +470,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -1356,7 +1360,7 @@ static void mos7840_break(struct tty_str +@@ -1310,7 +1314,7 @@ static void mos7840_break(struct tty_str /* FIXME: no locking on shadowLCR anywhere in driver */ mos7840_port->shadowLCR = data; @@ -479,7 +479,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port->shadowLCR); mos7840_set_uart_reg(port, LINE_CONTROL_REGISTER, mos7840_port->shadowLCR); -@@ -1380,17 +1384,17 @@ static int mos7840_write_room(struct tty +@@ -1334,17 +1338,17 @@ static int mos7840_write_room(struct tty unsigned long flags; struct moschip_port *mos7840_port; @@ -501,7 +501,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -@@ -1430,16 +1434,16 @@ static int mos7840_write(struct tty_stru +@@ -1384,16 +1388,16 @@ static int mos7840_write(struct tty_stru /* __u16 Data; */ const unsigned char *current_position = data; unsigned char *data1; @@ -522,7 +522,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port->shadowLCR); /* Data = 0x03; */ -@@ -1453,32 +1457,32 @@ static int mos7840_write(struct tty_stru +@@ -1407,32 +1411,32 @@ static int mos7840_write(struct tty_stru /* status = mos7840_set_uart_reg(port,DIVISOR_LATCH_LSB,Data); */ Data = 0x00; status = mos7840_get_uart_reg(port, DIVISOR_LATCH_LSB, &Data); @@ -561,7 +561,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -@@ -1490,7 +1494,7 @@ static int mos7840_write(struct tty_stru +@@ -1444,7 +1448,7 @@ static int mos7840_write(struct tty_stru if (!mos7840_port->busy[i]) { mos7840_port->busy[i] = 1; urb = mos7840_port->write_urb_pool[i]; @@ -570,7 +570,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> break; } } -@@ -1525,7 +1529,7 @@ static int mos7840_write(struct tty_stru +@@ -1479,7 +1483,7 @@ static int mos7840_write(struct tty_stru mos7840_bulk_out_data_callback, mos7840_port); data1 = urb->transfer_buffer; @@ -579,7 +579,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* send it down the pipe */ status = usb_submit_urb(urb, GFP_ATOMIC); -@@ -1540,7 +1544,7 @@ static int mos7840_write(struct tty_stru +@@ -1494,7 +1498,7 @@ static int mos7840_write(struct tty_stru bytes_sent = transfer_size; mos7840_port->icount.tx += transfer_size; smp_wmb(); @@ -588,7 +588,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> exit: return bytes_sent; -@@ -1559,11 +1563,11 @@ static void mos7840_throttle(struct tty_ +@@ -1513,11 +1517,11 @@ static void mos7840_throttle(struct tty_ int status; if (mos7840_port_paranoia_check(port, __func__)) { @@ -602,7 +602,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port = mos7840_get_port_private(port); -@@ -1571,11 +1575,11 @@ static void mos7840_throttle(struct tty_ +@@ -1525,11 +1529,11 @@ static void mos7840_throttle(struct tty_ return; if (!mos7840_port->open) { @@ -616,7 +616,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* if we are implementing XON/XOFF, send the stop character */ if (I_IXOFF(tty)) { -@@ -1609,7 +1613,7 @@ static void mos7840_unthrottle(struct tt +@@ -1563,7 +1567,7 @@ static void mos7840_unthrottle(struct tt struct moschip_port *mos7840_port = mos7840_get_port_private(port); if (mos7840_port_paranoia_check(port, __func__)) { @@ -625,7 +625,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -1621,7 +1625,7 @@ static void mos7840_unthrottle(struct tt +@@ -1575,7 +1579,7 @@ static void mos7840_unthrottle(struct tt return; } @@ -634,7 +634,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* if we are implementing XON/XOFF, send the start character */ if (I_IXOFF(tty)) { -@@ -1706,7 +1710,7 @@ static int mos7840_tiocmset(struct tty_s +@@ -1660,7 +1664,7 @@ static int mos7840_tiocmset(struct tty_s status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, mcr); if (status < 0) { @@ -643,7 +643,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return status; } -@@ -1775,11 +1779,11 @@ static int mos7840_calc_baud_rate_diviso +@@ -1729,11 +1733,11 @@ static int mos7840_calc_baud_rate_diviso custom++; *divisor = custom; @@ -657,7 +657,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; #endif } -@@ -1805,16 +1809,16 @@ static int mos7840_send_cmd_write_baud_r +@@ -1759,16 +1763,16 @@ static int mos7840_send_cmd_write_baud_r port = (struct usb_serial_port *)mos7840_port->port; if (mos7840_port_paranoia_check(port, __func__)) { @@ -677,7 +677,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> number = mos7840_port->port->number - mos7840_port->port->serial->minor; -@@ -1830,7 +1834,7 @@ static int mos7840_send_cmd_write_baud_r +@@ -1784,7 +1788,7 @@ static int mos7840_send_cmd_write_baud_r status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, Data); if (status < 0) { @@ -686,7 +686,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } #endif -@@ -1843,7 +1847,7 @@ static int mos7840_send_cmd_write_baud_r +@@ -1797,7 +1801,7 @@ static int mos7840_send_cmd_write_baud_r status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, Data); if (status < 0) { @@ -695,7 +695,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } #endif -@@ -1858,14 +1862,14 @@ static int mos7840_send_cmd_write_baud_r +@@ -1812,14 +1816,14 @@ static int mos7840_send_cmd_write_baud_r status = mos7840_get_reg_sync(port, mos7840_port->SpRegOffset, &Data); if (status < 0) { @@ -712,7 +712,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } /* Calculate the Divisor */ -@@ -1881,11 +1885,11 @@ static int mos7840_send_cmd_write_baud_r +@@ -1835,11 +1839,11 @@ static int mos7840_send_cmd_write_baud_r /* Write the divisor */ Data = (unsigned char)(divisor & 0xff); @@ -726,7 +726,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_set_uart_reg(port, DIVISOR_LATCH_MSB, Data); /* Disable access to divisor latch */ -@@ -1923,12 +1927,12 @@ static void mos7840_change_port_settings +@@ -1877,12 +1881,12 @@ static void mos7840_change_port_settings port = (struct usb_serial_port *)mos7840_port->port; if (mos7840_port_paranoia_check(port, __func__)) { @@ -741,7 +741,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -1941,7 +1945,7 @@ static void mos7840_change_port_settings +@@ -1895,7 +1899,7 @@ static void mos7840_change_port_settings return; } @@ -750,7 +750,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> lData = LCR_BITS_8; lStop = LCR_STOP_1; -@@ -2001,7 +2005,7 @@ static void mos7840_change_port_settings +@@ -1955,7 +1959,7 @@ static void mos7840_change_port_settings ~(LCR_BITS_MASK | LCR_STOP_MASK | LCR_PAR_MASK); mos7840_port->shadowLCR |= (lData | lParity | lStop); @@ -759,7 +759,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port->shadowLCR); /* Disable Interrupts */ Data = 0x00; -@@ -2043,7 +2047,7 @@ static void mos7840_change_port_settings +@@ -1997,7 +2001,7 @@ static void mos7840_change_port_settings if (!baud) { /* pick a default, any default... */ @@ -768,7 +768,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> baud = 9600; } -@@ -2066,7 +2070,7 @@ static void mos7840_change_port_settings +@@ -2020,7 +2024,7 @@ static void mos7840_change_port_settings } wake_up(&mos7840_port->delta_msr_wait); mos7840_port->delta_msr_cond = 1; @@ -777,7 +777,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port->shadowLCR); return; -@@ -2086,16 +2090,16 @@ static void mos7840_set_termios(struct t +@@ -2040,16 +2044,16 @@ static void mos7840_set_termios(struct t unsigned int cflag; struct usb_serial *serial; struct moschip_port *mos7840_port; @@ -797,7 +797,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -2109,7 +2113,7 @@ static void mos7840_set_termios(struct t +@@ -2063,7 +2067,7 @@ static void mos7840_set_termios(struct t return; } @@ -806,7 +806,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> cflag = tty->termios->c_cflag; -@@ -2124,7 +2128,7 @@ static void mos7840_set_termios(struct t +@@ -2078,7 +2082,7 @@ static void mos7840_set_termios(struct t mos7840_change_port_settings(tty, mos7840_port, old_termios); if (!mos7840_port->read_urb) { @@ -815,7 +815,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -2190,7 +2194,7 @@ static int mos7840_set_modem_info(struct +@@ -2144,7 +2148,7 @@ static int mos7840_set_modem_info(struct port = (struct usb_serial_port *)mos7840_port->port; if (mos7840_port_paranoia_check(port, __func__)) { @@ -824,7 +824,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -@@ -2235,7 +2239,7 @@ static int mos7840_set_modem_info(struct +@@ -2189,7 +2193,7 @@ static int mos7840_set_modem_info(struct status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER, Data); unlock_kernel(); if (status < 0) { @@ -833,7 +833,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -@@ -2320,7 +2324,7 @@ static int mos7840_ioctl(struct tty_stru +@@ -2274,7 +2278,7 @@ static int mos7840_ioctl(struct tty_stru int mosret = 0; if (mos7840_port_paranoia_check(port, __func__)) { @@ -842,7 +842,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -@@ -2420,9 +2424,8 @@ static int mos7840_calc_num_ports(struct +@@ -2374,9 +2378,8 @@ static int mos7840_calc_num_ports(struct { int mos7840_num_ports = 0; @@ -854,7 +854,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> (int)serial->interface->altsetting->desc.bNumEndpoints); if (serial->interface->cur_altsetting->desc.bNumEndpoints == 5) { mos7840_num_ports = serial->num_ports = 2; -@@ -2431,7 +2434,7 @@ static int mos7840_calc_num_ports(struct +@@ -2385,7 +2388,7 @@ static int mos7840_calc_num_ports(struct serial->num_bulk_out = 4; mos7840_num_ports = serial->num_ports = 4; } @@ -863,7 +863,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return mos7840_num_ports; } -@@ -2446,22 +2449,24 @@ static int mos7840_startup(struct usb_se +@@ -2400,22 +2403,24 @@ static int mos7840_startup(struct usb_se int i, status; __u16 Data; @@ -891,7 +891,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL); if (mos7840_port == NULL) { dev_err(&dev->dev, "%s - Out of memory\n", __func__); -@@ -2519,10 +2524,10 @@ static int mos7840_startup(struct usb_se +@@ -2473,10 +2478,10 @@ static int mos7840_startup(struct usb_se status = mos7840_get_reg_sync(serial->port[i], mos7840_port->ControlRegOffset, &Data); if (status < 0) { @@ -904,7 +904,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> Data, status); Data |= 0x08; /* setting driver done bit */ Data |= 0x04; /* sp1_bit to have cts change reflect in -@@ -2532,10 +2537,10 @@ static int mos7840_startup(struct usb_se +@@ -2486,10 +2491,10 @@ static int mos7840_startup(struct usb_se status = mos7840_set_reg_sync(serial->port[i], mos7840_port->ControlRegOffset, Data); if (status < 0) { @@ -917,7 +917,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> status); /* Write default values in DCR (i.e 0x01 in DCR0, 0x05 in DCR2 -@@ -2544,48 +2549,48 @@ static int mos7840_startup(struct usb_se +@@ -2498,48 +2503,48 @@ static int mos7840_startup(struct usb_se status = mos7840_set_reg_sync(serial->port[i], (__u16) (mos7840_port->DcrRegOffset + 0), Data); if (status < 0) { @@ -976,7 +976,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> status); /* write value 0x0 to scratchpad register */ -@@ -2593,11 +2598,11 @@ static int mos7840_startup(struct usb_se +@@ -2547,11 +2552,11 @@ static int mos7840_startup(struct usb_se status = mos7840_set_uart_reg(serial->port[i], SCRATCH_PAD_REGISTER, Data); if (status < 0) { @@ -990,7 +990,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> status); /* Zero Length flag register */ -@@ -2608,30 +2613,30 @@ static int mos7840_startup(struct usb_se +@@ -2562,30 +2567,30 @@ static int mos7840_startup(struct usb_se status = mos7840_set_reg_sync(serial->port[i], (__u16) (ZLP_REG1 + ((__u16)mos7840_port->port_num)), Data); @@ -1027,7 +1027,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> i + 1, status); } -@@ -2645,15 +2650,16 @@ static int mos7840_startup(struct usb_se +@@ -2599,15 +2604,16 @@ static int mos7840_startup(struct usb_se goto error; } } @@ -1046,7 +1046,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* setting configuration feature to one */ usb_control_msg(serial->dev, usb_sndctrlpipe(serial->dev, 0), -@@ -2682,10 +2688,10 @@ static void mos7840_shutdown(struct usb_ +@@ -2636,10 +2642,10 @@ static void mos7840_shutdown(struct usb_ int i; unsigned long flags; struct moschip_port *mos7840_port; @@ -1059,7 +1059,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return; } -@@ -2709,7 +2715,7 @@ static void mos7840_shutdown(struct usb_ +@@ -2663,7 +2669,7 @@ static void mos7840_shutdown(struct usb_ mos7840_set_port_private(serial->port[i], NULL); } @@ -1068,7 +1068,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } -@@ -2760,7 +2766,7 @@ static int __init moschip7840_init(void) +@@ -2714,7 +2720,7 @@ static int __init moschip7840_init(void) { int retval; @@ -1077,7 +1077,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* Register with the usb serial */ retval = usb_serial_register(&moschip7840_4port_device); -@@ -2768,14 +2774,14 @@ static int __init moschip7840_init(void) +@@ -2722,14 +2728,14 @@ static int __init moschip7840_init(void) if (retval) goto failed_port_device_register; @@ -1094,7 +1094,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return 0; } usb_serial_deregister(&moschip7840_4port_device); -@@ -2790,13 +2796,13 @@ failed_port_device_register: +@@ -2744,13 +2750,13 @@ failed_port_device_register: static void __exit moschip7840_exit(void) { diff --git a/usb/usb-pl2303-usb_serial-implement-sysrq-handling-on-break.patch b/usb/usb-pl2303-usb_serial-implement-sysrq-handling-on-break.patch index 2a8d4d084edd18..89be2b6e78fd0b 100644 --- a/usb/usb-pl2303-usb_serial-implement-sysrq-handling-on-break.patch +++ b/usb/usb-pl2303-usb_serial-implement-sysrq-handling-on-break.patch @@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c -@@ -946,6 +946,8 @@ static void pl2303_update_line_status(st +@@ -927,6 +927,8 @@ static void pl2303_update_line_status(st spin_lock_irqsave(&priv->lock, flags); priv->line_status = data[status_idx]; spin_unlock_irqrestore(&priv->lock, flags); @@ -27,7 +27,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> wake_up_interruptible(&priv->delta_msr_wait); } -@@ -1056,7 +1058,8 @@ static void pl2303_read_bulk_callback(st +@@ -1037,7 +1039,8 @@ static void pl2303_read_bulk_callback(st if (line_status & UART_OVERRUN_ERROR) tty_insert_flip_char(tty, 0, TTY_OVERRUN); for (i = 0; i < urb->actual_length; ++i) diff --git a/usb/usb-return-device-strings-in-utf-8.patch b/usb/usb-return-device-strings-in-utf-8.patch index d6828a15389254..97fd90aac32a78 100644 --- a/usb/usb-return-device-strings-in-utf-8.patch +++ b/usb/usb-return-device-strings-in-utf-8.patch @@ -122,7 +122,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (!smallbuf) --- a/drivers/usb/Kconfig +++ b/drivers/usb/Kconfig -@@ -63,6 +63,7 @@ config USB_ARCH_HAS_EHCI +@@ -64,6 +64,7 @@ config USB_ARCH_HAS_EHCI config USB tristate "Support for Host-side USB" depends on USB_ARCH_HAS_HCD diff --git a/usb/usb-serial-adding-sierra_release_urb-function.patch b/usb/usb-serial-adding-sierra_release_urb-function.patch deleted file mode 100644 index 09c0142afca298..00000000000000 --- a/usb/usb-serial-adding-sierra_release_urb-function.patch +++ /dev/null @@ -1,56 +0,0 @@ -From epasheva@sierrawireless.com Tue Jun 2 13:26:43 2009 -From: Elina Pasheva <epasheva@sierrawireless.com> -Date: Mon, 1 Jun 2009 11:00:19 -0700 -Subject: USB: serial: adding sierra_release_urb() function -To: <gregkh@suse.de> -Cc: <epasheva@sierrawireless.com>, <rfiler@sierrawireless.com> -Message-ID: <1243879219.6383.2.camel@Linuxdev3> - - -From: Elina Pasheva <epasheva@sierrawireless.com> - -- Added function sierra_release_urb() to free an urb and its transfer - buffer. This function is to be called by sierra_close() in subsequent - patch. -- Removed unecessary include file reference and comment - -Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/sierra.c | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - ---- a/drivers/usb/serial/sierra.c -+++ b/drivers/usb/serial/sierra.c -@@ -29,12 +29,10 @@ - #include <linux/module.h> - #include <linux/usb.h> - #include <linux/usb/serial.h> --#include <linux/usb/ch9.h> - - #define SWIMS_USB_REQUEST_SetPower 0x00 - #define SWIMS_USB_REQUEST_SetNmea 0x07 - --/* per port private data */ - #define N_IN_URB 8 - #define N_OUT_URB 64 - #define IN_BUFLEN 4096 -@@ -328,6 +326,17 @@ static int sierra_tiocmset(struct tty_st - return sierra_send_setup(tty, port); - } - -+static void sierra_release_urb(struct urb *urb) -+{ -+ struct usb_serial_port *port; -+ if (urb) { -+ port = urb->context; -+ dev_dbg(&port->dev, "%s: %p\n", __func__, urb); -+ kfree(urb->transfer_buffer); -+ usb_free_urb(urb); -+ } -+} -+ - static void sierra_outdat_callback(struct urb *urb) - { - struct usb_serial_port *port = urb->context; diff --git a/usb/usb-serial-adding-sierra_setup_urb-function.patch b/usb/usb-serial-adding-sierra_setup_urb-function.patch deleted file mode 100644 index 8b7a1094bcdf0b..00000000000000 --- a/usb/usb-serial-adding-sierra_setup_urb-function.patch +++ /dev/null @@ -1,70 +0,0 @@ -From epasheva@sierrawireless.com Tue Jun 2 13:28:39 2009 -From: Elina Pasheva <epasheva@sierrawireless.com> -Date: Mon, 1 Jun 2009 11:03:05 -0700 -Subject: USB: serial: adding sierra_setup_urb() function -To: <gregkh@suse.de> -Cc: <epasheva@sierrawireless.com>, <rfiler@sierrawireless.com> -Message-ID: <1243879385.6383.8.camel@Linuxdev3> - - -From: Elina Pasheva <epasheva@sierrawireless.com> - -- Added new function sierra_setup_urb() that contains the functionality - to allocate an urb, fill bulk urb using the supplied memory allocation - flag and release urb upon error. Added parameter so that the caller - pass the memory allocation flag for flexibility. - -Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/sierra.c | 38 ++++++++++++++++++++++++++++++++++++++ - 1 file changed, 38 insertions(+) - ---- a/drivers/usb/serial/sierra.c -+++ b/drivers/usb/serial/sierra.c -@@ -618,6 +618,44 @@ static int sierra_submit_rx_urbs(struct - return err; - } - -+static struct urb *sierra_setup_urb(struct usb_serial *serial, int endpoint, -+ int dir, void *ctx, int len, -+ gfp_t mem_flags, -+ usb_complete_t callback) -+{ -+ struct urb *urb; -+ u8 *buf; -+ -+ if (endpoint == -1) -+ return NULL; -+ -+ urb = usb_alloc_urb(0, mem_flags); -+ if (urb == NULL) { -+ dev_dbg(&serial->dev->dev, "%s: alloc for endpoint %d failed\n", -+ __func__, endpoint); -+ return NULL; -+ } -+ -+ buf = kmalloc(len, mem_flags); -+ if (buf) { -+ /* Fill URB using supplied data */ -+ usb_fill_bulk_urb(urb, serial->dev, -+ usb_sndbulkpipe(serial->dev, endpoint) | dir, -+ buf, len, callback, ctx); -+ -+ /* debug */ -+ dev_dbg(&serial->dev->dev, "%s %c u : %p d:%p\n", __func__, -+ dir == USB_DIR_IN ? 'i' : 'o', urb, buf); -+ } else { -+ dev_dbg(&serial->dev->dev, "%s %c u:%p d:%p\n", __func__, -+ dir == USB_DIR_IN ? 'i' : 'o', urb, buf); -+ -+ sierra_release_urb(urb); -+ urb = NULL; -+ } -+ -+ return urb; -+} - - static int sierra_open(struct tty_struct *tty, - struct usb_serial_port *port, struct file *filp) diff --git a/usb/usb-serial-adding-sierra_stop_rx_urbs-function.patch b/usb/usb-serial-adding-sierra_stop_rx_urbs-function.patch deleted file mode 100644 index dab5d8b30bd754..00000000000000 --- a/usb/usb-serial-adding-sierra_stop_rx_urbs-function.patch +++ /dev/null @@ -1,42 +0,0 @@ -From epasheva@sierrawireless.com Tue Jun 2 13:27:24 2009 -From: Elina Pasheva <epasheva@sierrawireless.com> -Date: Mon, 1 Jun 2009 11:01:14 -0700 -Subject: USB: serial: adding sierra_stop_rx_urbs() function -To: <gregkh@suse.de> -Cc: <epasheva@sierrawireless.com>, <rfiler@sierrawireless.com> -Message-ID: <1243879274.6383.4.camel@Linuxdev3> - - -From: Elina Pasheva <epasheva@sierrawireless.com> - -- Added function sierra_stop_rx_urbs() that takes care of the release of - receive and interrupt urbs. This function is to be called by - sierra_close() whenever an interface is de-activated. - -Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - drivers/usb/serial/sierra.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - ---- a/drivers/usb/serial/sierra.c -+++ b/drivers/usb/serial/sierra.c -@@ -571,6 +571,17 @@ static int sierra_write_room(struct tty_ - return 2048; - } - -+static void sierra_stop_rx_urbs(struct usb_serial_port *port) -+{ -+ int i; -+ struct sierra_port_private *portdata = usb_get_serial_port_data(port); -+ -+ for (i = 0; i < ARRAY_SIZE(portdata->in_urbs); i++) -+ usb_kill_urb(portdata->in_urbs[i]); -+ -+ usb_kill_urb(port->interrupt_in_urb); -+} -+ - static int sierra_open(struct tty_struct *tty, - struct usb_serial_port *port, struct file *filp) - { diff --git a/usb/usb-serial-adding-sierra_submit_rx_urbs-function.patch b/usb/usb-serial-adding-sierra_submit_rx_urbs-function.patch deleted file mode 100644 index a4c22ca11c8ae0..00000000000000 --- a/usb/usb-serial-adding-sierra_submit_rx_urbs-function.patch +++ /dev/null @@ -1,70 +0,0 @@ -From epasheva@sierrawireless.com Tue Jun 2 13:27:51 2009 -From: Elina Pasheva <epasheva@sierrawireless.com> -Date: Mon, 1 Jun 2009 11:02:15 -0700 -Subject: USB: serial: adding sierra_submit_rx_urbs() function -To: <gregkh@suse.de> -Cc: <epasheva@sierrawireless.com>, <rfiler@sierrawireless.com> -Message-ID: <1243879335.6383.6.camel@Linuxdev3> - -From: Elina Pasheva <epasheva@sierrawireless.com> - -- Added new function sierra_submit_rx_urbs() that handles the submission - of receive urbs and interrupt urbs (if any) during the interface - activation. This function is to be called by sierra_open(). Added a - second parameter to pass the memory allocation (as suggested by Oliver - Neukum) so that this function can be used in post_reset() and - resume(). - -Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> ---- - - drivers/usb/serial/sierra.c | 37 +++++++++++++++++++++++++++++++++++++ - 1 file changed, 37 insertions(+) - ---- a/drivers/usb/serial/sierra.c -+++ b/drivers/usb/serial/sierra.c -@@ -582,6 +582,43 @@ static void sierra_stop_rx_urbs(struct u - usb_kill_urb(port->interrupt_in_urb); - } - -+static int sierra_submit_rx_urbs(struct usb_serial_port *port, gfp_t mem_flags) -+{ -+ int ok_cnt; -+ int err = -EINVAL; -+ int i; -+ struct urb *urb; -+ struct sierra_port_private *portdata = usb_get_serial_port_data(port); -+ -+ ok_cnt = 0; -+ for (i = 0; i < ARRAY_SIZE(portdata->in_urbs); i++) { -+ urb = portdata->in_urbs[i]; -+ if (!urb) -+ continue; -+ err = usb_submit_urb(urb, mem_flags); -+ if (err) { -+ dev_err(&port->dev, "%s: submit urb failed: %d\n", -+ __func__, err); -+ } else { -+ ok_cnt++; -+ } -+ } -+ -+ if (ok_cnt && port->interrupt_in_urb) { -+ err = usb_submit_urb(port->interrupt_in_urb, mem_flags); -+ if (err) { -+ dev_err(&port->dev, "%s: submit intr urb failed: %d\n", -+ __func__, err); -+ } -+ } -+ -+ if (ok_cnt > 0) /* at least one rx urb submitted */ -+ return 0; -+ else -+ return err; -+} -+ -+ - static int sierra_open(struct tty_struct *tty, - struct usb_serial_port *port, struct file *filp) - { diff --git a/usb/usb-serial-ftd_sio-implement-sysrq-handling-on-break.patch b/usb/usb-serial-ftd_sio-implement-sysrq-handling-on-break.patch index 5dc82af2aa670a..33f9a0de21363b 100644 --- a/usb/usb-serial-ftd_sio-implement-sysrq-handling-on-break.patch +++ b/usb/usb-serial-ftd_sio-implement-sysrq-handling-on-break.patch @@ -20,7 +20,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c -@@ -2093,6 +2093,7 @@ static void ftdi_process_read(struct wor +@@ -2120,6 +2120,7 @@ static void ftdi_process_read(struct wor if (data[packet_offset+1] & FTDI_RS_BI) { error_flag = TTY_BREAK; dbg("BREAK received"); @@ -28,7 +28,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } if (data[packet_offset+1] & FTDI_RS_PE) { error_flag = TTY_PARITY; -@@ -2107,8 +2108,11 @@ static void ftdi_process_read(struct wor +@@ -2134,8 +2135,11 @@ static void ftdi_process_read(struct wor /* Note that the error flag is duplicated for every character received since we don't know which character it applied to */ diff --git a/usb/usb-serial-ftd_sio-usb-move-status-check.patch b/usb/usb-serial-ftd_sio-usb-move-status-check.patch index 358b02d4064300..796907116c9f4d 100644 --- a/usb/usb-serial-ftd_sio-usb-move-status-check.patch +++ b/usb/usb-serial-ftd_sio-usb-move-status-check.patch @@ -23,7 +23,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c -@@ -1857,11 +1857,6 @@ static void ftdi_write_bulk_callback(str +@@ -1884,11 +1884,6 @@ static void ftdi_write_bulk_callback(str dbg("%s - port %d", __func__, port->number); @@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> priv = usb_get_serial_port_data(port); if (!priv) { dbg("%s - bad port private data pointer - exiting", __func__); -@@ -1879,6 +1874,11 @@ static void ftdi_write_bulk_callback(str +@@ -1906,6 +1901,11 @@ static void ftdi_write_bulk_callback(str priv->tx_outstanding_bytes -= countback; spin_unlock_irqrestore(&priv->tx_lock, flags); diff --git a/usb/usb-serial-ftdi-add-high-speed-device-support.patch b/usb/usb-serial-ftdi-add-high-speed-device-support.patch index c7124626ae39dd..1c82d27992537d 100644 --- a/usb/usb-serial-ftdi-add-high-speed-device-support.patch +++ b/usb/usb-serial-ftdi-add-high-speed-device-support.patch @@ -46,7 +46,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> speed_t force_baud; /* if non-zero, force the baud rate to this value */ -@@ -163,6 +164,7 @@ static struct usb_device_id id_table_com +@@ -164,6 +165,7 @@ static struct usb_device_id id_table_com { USB_DEVICE(FTDI_VID, FTDI_8U232AM_ALT_PID) }, { USB_DEVICE(FTDI_VID, FTDI_232RL_PID) }, { USB_DEVICE(FTDI_VID, FTDI_8U2232C_PID) }, @@ -54,7 +54,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { USB_DEVICE(FTDI_VID, FTDI_MICRO_CHAMELEON_PID) }, { USB_DEVICE(FTDI_VID, FTDI_RELAIS_PID) }, { USB_DEVICE(FTDI_VID, FTDI_OPENDCC_PID) }, -@@ -693,6 +695,8 @@ static const char *ftdi_chip_name[] = { +@@ -694,6 +696,8 @@ static const char *ftdi_chip_name[] = { [FT232BM] = "FT232BM", [FT2232C] = "FT2232C", [FT232RL] = "FT232RL", @@ -63,7 +63,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -744,6 +748,8 @@ static unsigned short int ftdi_232am_bau +@@ -745,6 +749,8 @@ static unsigned short int ftdi_232am_bau static unsigned short int ftdi_232am_baud_to_divisor(int baud); static __u32 ftdi_232bm_baud_base_to_divisor(int baud, int base); static __u32 ftdi_232bm_baud_to_divisor(int baud); @@ -72,7 +72,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static struct usb_serial_driver ftdi_sio_device = { .driver = { -@@ -837,6 +843,36 @@ static __u32 ftdi_232bm_baud_to_divisor( +@@ -839,6 +845,36 @@ static __u32 ftdi_232bm_baud_to_divisor( return ftdi_232bm_baud_base_to_divisor(baud, 48000000); } @@ -109,7 +109,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define set_mctrl(port, set) update_mctrl((port), (set), 0) #define clear_mctrl(port, clear) update_mctrl((port), 0, (clear)) -@@ -995,6 +1031,19 @@ static __u32 get_ftdi_divisor(struct tty +@@ -997,6 +1033,19 @@ static __u32 get_ftdi_divisor(struct tty baud = 9600; } break; @@ -129,7 +129,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } /* priv->chip_type */ if (div_okay) { -@@ -1147,14 +1196,29 @@ static void ftdi_determine_type(struct u +@@ -1197,14 +1246,29 @@ static void ftdi_determine_type(struct u if (interfaces > 1) { int inter; @@ -165,7 +165,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* BM-type devices have a bug where bcdDevice gets set * to 0x200 when iSerialNumber is 0. */ if (version < 0x500) { -@@ -1291,7 +1355,9 @@ static int create_sysfs_attrs(struct usb +@@ -1315,7 +1379,9 @@ static int create_sysfs_attrs(struct usb if ((!retval) && (priv->chip_type == FT232BM || priv->chip_type == FT2232C || @@ -176,7 +176,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> retval = device_create_file(&port->dev, &dev_attr_latency_timer); } -@@ -1310,7 +1376,9 @@ static void remove_sysfs_attrs(struct us +@@ -1334,7 +1400,9 @@ static void remove_sysfs_attrs(struct us device_remove_file(&port->dev, &dev_attr_event_char); if (priv->chip_type == FT232BM || priv->chip_type == FT2232C || @@ -187,7 +187,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> device_remove_file(&port->dev, &dev_attr_latency_timer); } } -@@ -2306,6 +2374,8 @@ static int ftdi_tiocmget(struct tty_stru +@@ -2333,6 +2401,8 @@ static int ftdi_tiocmget(struct tty_stru case FT232BM: case FT2232C: case FT232RL: diff --git a/usb/usb-serial-sierra-driver-debug-info-visibility-improvement.patch b/usb/usb-serial-sierra-driver-debug-info-visibility-improvement.patch index bb988b0d0ac648..45aa34cc281ce3 100644 --- a/usb/usb-serial-sierra-driver-debug-info-visibility-improvement.patch +++ b/usb/usb-serial-sierra-driver-debug-info-visibility-improvement.patch @@ -19,8 +19,8 @@ Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- - drivers/usb/serial/sierra.c | 56 ++++++++++++++++++++++---------------------- - 1 file changed, 28 insertions(+), 28 deletions(-) + drivers/usb/serial/sierra.c | 50 ++++++++++++++++++++++---------------------- + 1 file changed, 25 insertions(+), 25 deletions(-) --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c @@ -33,7 +33,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>" #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" -@@ -42,7 +42,7 @@ static int nmea; +@@ -46,7 +46,7 @@ struct sierra_iface_info { static int sierra_set_power_state(struct usb_device *udev, __u16 swiState) { int result; @@ -42,7 +42,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), SWIMS_USB_REQUEST_SetPower, /* __u8 request */ USB_TYPE_VENDOR, /* __u8 request type */ -@@ -57,7 +57,7 @@ static int sierra_set_power_state(struct +@@ -61,7 +61,7 @@ static int sierra_set_power_state(struct static int sierra_vsc_set_nmea(struct usb_device *udev, __u16 enable) { int result; @@ -51,7 +51,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> result = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), SWIMS_USB_REQUEST_SetNmea, /* __u8 request */ USB_TYPE_VENDOR, /* __u8 request type */ -@@ -73,7 +73,7 @@ static int sierra_calc_num_ports(struct +@@ -77,7 +77,7 @@ static int sierra_calc_num_ports(struct { int result; int *num_ports = usb_get_serial_data(serial); @@ -60,7 +60,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> result = *num_ports; -@@ -90,7 +90,7 @@ static int sierra_calc_interface(struct +@@ -111,7 +111,7 @@ static int sierra_calc_interface(struct int interface; struct usb_interface *p_interface; struct usb_host_interface *p_host_interface; @@ -69,7 +69,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* Get the interface structure pointer from the serial struct */ p_interface = serial->interface; -@@ -115,7 +115,7 @@ static int sierra_probe(struct usb_seria +@@ -136,7 +136,7 @@ static int sierra_probe(struct usb_seria u8 ifnum; u8 numendpoints; @@ -78,25 +78,25 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> num_ports = kmalloc(sizeof(*num_ports), GFP_KERNEL); if (!num_ports) -@@ -247,7 +247,7 @@ static int sierra_send_setup(struct tty_ - struct sierra_port_private *portdata; +@@ -289,7 +289,7 @@ static int sierra_send_setup(struct usb_ __u16 interface = 0; + int val = 0; - dev_dbg(&port->dev, "%s", __func__); + dev_dbg(&port->dev, "%s\n", __func__); portdata = usb_get_serial_port_data(port); -@@ -297,7 +297,7 @@ static int sierra_send_setup(struct tty_ +@@ -332,7 +332,7 @@ static int sierra_send_setup(struct usb_ static void sierra_set_termios(struct tty_struct *tty, struct usb_serial_port *port, struct ktermios *old_termios) { - dev_dbg(&port->dev, "%s", __func__); + dev_dbg(&port->dev, "%s\n", __func__); tty_termios_copy_hw(tty->termios, old_termios); - sierra_send_setup(tty, port); + sierra_send_setup(port); } -@@ -308,7 +308,7 @@ static int sierra_tiocmget(struct tty_st +@@ -343,7 +343,7 @@ static int sierra_tiocmget(struct tty_st unsigned int value; struct sierra_port_private *portdata; @@ -105,7 +105,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> portdata = usb_get_serial_port_data(port); value = ((portdata->rts_state) ? TIOCM_RTS : 0) | -@@ -348,14 +348,14 @@ static void sierra_outdat_callback(struc +@@ -394,14 +394,14 @@ static void sierra_outdat_callback(struc int status = urb->status; unsigned long flags; @@ -122,7 +122,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_lock_irqsave(&portdata->lock, flags); --portdata->outstanding_urbs; -@@ -377,7 +377,7 @@ static int sierra_write(struct tty_struc +@@ -423,7 +423,7 @@ static int sierra_write(struct tty_struc portdata = usb_get_serial_port_data(port); @@ -131,7 +131,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_lock_irqsave(&portdata->lock, flags); if (portdata->outstanding_urbs > N_OUT_URB) { -@@ -452,7 +452,7 @@ static void sierra_indat_callback(struct +@@ -498,7 +498,7 @@ static void sierra_indat_callback(struct if (status) { dev_dbg(&port->dev, "%s: nonzero status: %d on" @@ -140,7 +140,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } else { if (urb->actual_length) { tty = tty_port_tty_get(&port->port); -@@ -462,7 +462,7 @@ static void sierra_indat_callback(struct +@@ -508,7 +508,7 @@ static void sierra_indat_callback(struct tty_kref_put(tty); } else dev_dbg(&port->dev, "%s: empty read urb" @@ -148,8 +148,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + " received\n", __func__); /* Resubmit urb so we continue receiving */ - if (port->port.count && status != -ESHUTDOWN) { -@@ -483,8 +483,8 @@ static void sierra_instat_callback(struc + if (port->port.count && status != -ESHUTDOWN && status != -EPERM) { +@@ -529,8 +529,8 @@ static void sierra_instat_callback(struc struct sierra_port_private *portdata = usb_get_serial_port_data(port); struct usb_serial *serial = port->serial; @@ -160,7 +160,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> urb, port, portdata); if (status == 0) { -@@ -504,7 +504,7 @@ static void sierra_instat_callback(struc +@@ -550,7 +550,7 @@ static void sierra_instat_callback(struc sizeof(struct usb_ctrlrequest)); struct tty_struct *tty; @@ -169,7 +169,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> signals); old_dcd_state = portdata->dcd_state; -@@ -519,12 +519,12 @@ static void sierra_instat_callback(struc +@@ -565,12 +565,12 @@ static void sierra_instat_callback(struc tty_hangup(tty); tty_kref_put(tty); } else { @@ -184,7 +184,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* Resubmit urb so we continue receiving IRQ data */ if (status != -ESHUTDOWN) { -@@ -532,7 +532,7 @@ static void sierra_instat_callback(struc +@@ -578,7 +578,7 @@ static void sierra_instat_callback(struc err = usb_submit_urb(urb, GFP_ATOMIC); if (err) dev_dbg(&port->dev, "%s: resubmit intr urb " @@ -193,7 +193,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } -@@ -542,7 +542,7 @@ static int sierra_write_room(struct tty_ +@@ -588,7 +588,7 @@ static int sierra_write_room(struct tty_ struct sierra_port_private *portdata = usb_get_serial_port_data(port); unsigned long flags; @@ -202,7 +202,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* try to give a good number back based on if we have any free urbs at * this point in time */ -@@ -568,7 +568,7 @@ static int sierra_open(struct tty_struct +@@ -729,7 +729,7 @@ static int sierra_open(struct tty_struct portdata = usb_get_serial_port_data(port); @@ -211,52 +211,25 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* Set some sane defaults */ portdata->rts_state = 1; -@@ -580,7 +580,7 @@ static int sierra_open(struct tty_struct - if (!urb) - continue; - if (urb->dev != serial->dev) { -- dev_dbg(&port->dev, "%s: dev %p != %p", -+ dev_dbg(&port->dev, "%s: dev %p != %p\n", - __func__, urb->dev, serial->dev); - continue; - } -@@ -617,7 +617,7 @@ static void sierra_close(struct tty_stru - struct usb_serial *serial = port->serial; +@@ -782,7 +782,7 @@ static int sierra_startup(struct usb_ser struct sierra_port_private *portdata; - -- dev_dbg(&port->dev, "%s", __func__); -+ dev_dbg(&port->dev, "%s\n", __func__); - portdata = usb_get_serial_port_data(port); - - portdata->rts_state = 0; -@@ -646,7 +646,7 @@ static int sierra_startup(struct usb_ser int i; - int j; - dev_dbg(&serial->dev->dev, "%s", __func__); + dev_dbg(&serial->dev->dev, "%s\n", __func__); /* Set Device mode to D0 */ sierra_set_power_state(serial->dev, 0x0000); -@@ -661,7 +661,7 @@ static int sierra_startup(struct usb_ser +@@ -797,7 +797,7 @@ static int sierra_startup(struct usb_ser portdata = kzalloc(sizeof(*portdata), GFP_KERNEL); if (!portdata) { dev_dbg(&port->dev, "%s: kmalloc for " - "sierra_port_private (%d) failed!.", -+ "sierra_port_private (%d) failed!\n", ++ "sierra_port_private (%d) failed!.\n", __func__, i); return -ENOMEM; } -@@ -683,7 +683,7 @@ static int sierra_startup(struct usb_ser - urb = usb_alloc_urb(0, GFP_KERNEL); - if (urb == NULL) { - dev_dbg(&port->dev, "%s: alloc for in " -- "port failed.", __func__); -+ "port failed.\n", __func__); - continue; - } - /* Fill URB using supplied data. */ -@@ -705,7 +705,7 @@ static void sierra_shutdown(struct usb_s +@@ -815,7 +815,7 @@ static void sierra_shutdown(struct usb_s struct usb_serial_port *port; struct sierra_port_private *portdata; diff --git a/usb/usb-serial-sierra-driver-interrupt-urb-resubmit-fix.patch b/usb/usb-serial-sierra-driver-interrupt-urb-resubmit-fix.patch index 2729814e5fd552..3a92583d639ab2 100644 --- a/usb/usb-serial-sierra-driver-interrupt-urb-resubmit-fix.patch +++ b/usb/usb-serial-sierra-driver-interrupt-urb-resubmit-fix.patch @@ -27,7 +27,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c -@@ -510,7 +510,6 @@ static void sierra_instat_callback(struc +@@ -556,7 +556,6 @@ static void sierra_instat_callback(struc struct sierra_port_private *portdata = usb_get_serial_port_data(port); struct usb_serial *serial = port->serial; @@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> dev_dbg(&port->dev, "%s: urb %p port %p has data %p\n", __func__, urb, port, portdata); -@@ -554,12 +553,12 @@ static void sierra_instat_callback(struc +@@ -600,12 +599,12 @@ static void sierra_instat_callback(struc dev_dbg(&port->dev, "%s: error %d\n", __func__, status); /* Resubmit urb so we continue receiving IRQ data */ diff --git a/usb/usb-serial-sierra-driver-performance-improvements.patch b/usb/usb-serial-sierra-driver-performance-improvements.patch index 66c878da5933f1..9a46f80ff98d07 100644 --- a/usb/usb-serial-sierra-driver-performance-improvements.patch +++ b/usb/usb-serial-sierra-driver-performance-improvements.patch @@ -33,10 +33,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define DRIVER_AUTHOR "Kevin Lloyd <klloyd@sierrawireless.com>" #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" -@@ -32,8 +32,8 @@ +@@ -30,8 +30,8 @@ + #define SWIMS_USB_REQUEST_SetPower 0x00 #define SWIMS_USB_REQUEST_SetNmea 0x07 - /* per port private data */ -#define N_IN_URB 4 -#define N_OUT_URB 4 +#define N_IN_URB 8 diff --git a/usb/usb-serial-sierra-driver-read-path-bug-fix.patch b/usb/usb-serial-sierra-driver-read-path-bug-fix.patch index f89b2a39df7008..9333669c952c42 100644 --- a/usb/usb-serial-sierra-driver-read-path-bug-fix.patch +++ b/usb/usb-serial-sierra-driver-read-path-bug-fix.patch @@ -18,26 +18,27 @@ interface. Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> --- - drivers/usb/serial/sierra.c | 26 ++++++++++++++++---------- - 1 file changed, 16 insertions(+), 10 deletions(-) + drivers/usb/serial/sierra.c | 28 +++++++++++++++++----------- + 1 file changed, 17 insertions(+), 11 deletions(-) --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c -@@ -463,33 +463,39 @@ static void sierra_indat_callback(struct +@@ -509,10 +509,10 @@ static void sierra_indat_callback(struct unsigned char *data = urb->transfer_buffer; int status = urb->status; - dbg("%s: %p", __func__, urb); - endpoint = usb_pipeendpoint(urb->pipe); - port = urb->context; - -+ dev_dbg(&port->dev, "%s: %p\n", __func__, urb); +- port = urb->context; ++ port = urb->context; + ++ dev_dbg(&port->dev, "%s: %p\n", __func__, urb); + if (status) { dev_dbg(&port->dev, "%s: nonzero status: %d on" - " endpoint %02x\n", __func__, status, endpoint); +@@ -520,22 +520,28 @@ static void sierra_indat_callback(struct } else { if (urb->actual_length) { tty = tty_port_tty_get(&port->port); @@ -55,7 +56,7 @@ Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> " received\n", __func__); - - /* Resubmit urb so we continue receiving */ -- if (port->port.count && status != -ESHUTDOWN) { +- if (port->port.count && status != -ESHUTDOWN && status != -EPERM) { - err = usb_submit_urb(urb, GFP_ATOMIC); - if (err) - dev_err(&port->dev, "resubmit read urb failed." @@ -64,7 +65,7 @@ Signed-off-by: Elina Pasheva <epasheva@sierrawireless.com> } + + /* Resubmit urb so we continue receiving */ -+ if (port->port.count && status != -ESHUTDOWN && status != -ENOENT) { ++ if (port->port.count && status != -ESHUTDOWN && status != -EPERM) { + err = usb_submit_urb(urb, GFP_ATOMIC); + if (err) + dev_err(&port->dev, "resubmit read urb failed." diff --git a/usb/usb-serial-sierra-driver-sierra_calc_num_ports-fix.patch b/usb/usb-serial-sierra-driver-sierra_calc_num_ports-fix.patch index dfb6dffbae88e3..26ab69a0a24c37 100644 --- a/usb/usb-serial-sierra-driver-sierra_calc_num_ports-fix.patch +++ b/usb/usb-serial-sierra-driver-sierra_calc_num_ports-fix.patch @@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c -@@ -79,18 +79,22 @@ static int sierra_vsc_set_nmea(struct us +@@ -83,18 +83,22 @@ static int sierra_vsc_set_nmea(struct us static int sierra_calc_num_ports(struct usb_serial *serial) { @@ -55,8 +55,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + return num_ports; } - static int sierra_calc_interface(struct usb_serial *serial) -@@ -119,23 +123,12 @@ static int sierra_probe(struct usb_seria + static int is_blacklisted(const u8 ifnum, +@@ -140,23 +144,12 @@ static int sierra_probe(struct usb_seria { int result = 0; struct usb_device *udev; @@ -81,7 +81,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* * If this interface supports more than 1 alternate * select the 2nd one -@@ -147,20 +140,6 @@ static int sierra_probe(struct usb_seria +@@ -168,20 +161,6 @@ static int sierra_probe(struct usb_seria usb_set_interface(udev, ifnum, 1); } @@ -99,6 +99,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - */ - usb_set_serial_data(serial, (void *)num_ports); - - return result; - } + /* ifnum could have changed - by calling usb_set_interface */ + ifnum = sierra_calc_interface(serial); diff --git a/usb/usb-serial-sierra-driver-write-path-improvements.patch b/usb/usb-serial-sierra-driver-write-path-improvements.patch index e8d0af25d618f4..12649ed7842723 100644 --- a/usb/usb-serial-sierra-driver-write-path-improvements.patch +++ b/usb/usb-serial-sierra-driver-write-path-improvements.patch @@ -46,7 +46,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" #include <linux/kernel.h> -@@ -36,6 +39,11 @@ +@@ -34,6 +37,11 @@ #define N_OUT_URB 64 #define IN_BUFLEN 4096 @@ -58,7 +58,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int debug; static int nmea; -@@ -373,50 +381,58 @@ static int sierra_write(struct tty_struc +@@ -419,50 +427,58 @@ static int sierra_write(struct tty_struc unsigned long flags; unsigned char *buffer; struct urb *urb; @@ -129,7 +129,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> goto error; } -@@ -424,7 +440,7 @@ static int sierra_write(struct tty_struc +@@ -470,7 +486,7 @@ static int sierra_write(struct tty_struc * really free it when it is finished with it */ usb_free_urb(urb); @@ -138,7 +138,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> error: usb_free_urb(urb); error_no_urb: -@@ -432,8 +448,10 @@ error_no_urb: +@@ -478,8 +494,10 @@ error_no_urb: error_no_buffer: spin_lock_irqsave(&portdata->lock, flags); --portdata->outstanding_urbs; diff --git a/usb/usb-serial-sierra-driver-zero-length-packet-fix.patch b/usb/usb-serial-sierra-driver-zero-length-packet-fix.patch index f8c64ca80d6c36..b5bacb9cc016d4 100644 --- a/usb/usb-serial-sierra-driver-zero-length-packet-fix.patch +++ b/usb/usb-serial-sierra-driver-zero-length-packet-fix.patch @@ -32,7 +32,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define DRIVER_AUTHOR "Kevin Lloyd, Elina Pasheva, Matthew Safar, Rory Filer" #define DRIVER_DESC "USB Driver for Sierra Wireless USB modems" -@@ -428,6 +428,9 @@ static int sierra_write(struct tty_struc +@@ -474,6 +474,9 @@ static int sierra_write(struct tty_struc port->bulk_out_endpointAddress), buffer, writesize, sierra_outdat_callback, port); diff --git a/usb/usb-serial-usb_debug-usb_generic_serial-implement-sysrq-and-serial-break.patch b/usb/usb-serial-usb_debug-usb_generic_serial-implement-sysrq-and-serial-break.patch index 2030ec149f391f..6149b30cd0e46c 100644 --- a/usb/usb-serial-usb_debug-usb_generic_serial-implement-sysrq-and-serial-break.patch +++ b/usb/usb-serial-usb_debug-usb_generic_serial-implement-sysrq-and-serial-break.patch @@ -39,7 +39,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c -@@ -340,6 +340,7 @@ int usb_serial_generic_write(struct tty_ +@@ -339,6 +339,7 @@ int usb_serial_generic_write(struct tty_ /* no bulk out, so return 0 bytes written */ return 0; } @@ -47,7 +47,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int usb_serial_generic_write_room(struct tty_struct *tty) { -@@ -352,7 +353,9 @@ int usb_serial_generic_write_room(struct +@@ -351,7 +352,9 @@ int usb_serial_generic_write_room(struct spin_lock_irqsave(&port->lock, flags); if (serial->type->max_in_flight_urbs) { if (port->urbs_in_flight < serial->type->max_in_flight_urbs) @@ -58,7 +58,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } else if (serial->num_bulk_out && !(port->write_urb_busy)) { room = port->bulk_out_size; } -@@ -386,7 +389,8 @@ int usb_serial_generic_chars_in_buffer(s +@@ -385,7 +388,8 @@ int usb_serial_generic_chars_in_buffer(s } @@ -68,7 +68,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct urb *urb = port->read_urb; struct usb_serial *serial = port->serial; -@@ -407,25 +411,28 @@ static void resubmit_read_urb(struct usb +@@ -406,25 +410,28 @@ static void resubmit_read_urb(struct usb "%s - failed resubmitting read urb, error %d\n", __func__, result); } @@ -106,7 +106,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } void usb_serial_generic_read_bulk_callback(struct urb *urb) -@@ -516,10 +523,35 @@ void usb_serial_generic_unthrottle(struc +@@ -515,10 +522,35 @@ void usb_serial_generic_unthrottle(struc if (was_throttled) { /* Resume reading from device */ @@ -223,7 +223,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct device dev; }; #define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev) -@@ -299,6 +301,12 @@ extern void usb_serial_generic_unthrottl +@@ -301,6 +303,12 @@ extern void usb_serial_generic_unthrottl extern void usb_serial_generic_shutdown(struct usb_serial *serial); extern int usb_serial_generic_register(int debug); extern void usb_serial_generic_deregister(void); diff --git a/usb/usb-sierra-fix-printk-warning.patch b/usb/usb-sierra-fix-printk-warning.patch index b90eb3e2a8907f..3b483300255f2d 100644 --- a/usb/usb-sierra-fix-printk-warning.patch +++ b/usb/usb-sierra-fix-printk-warning.patch @@ -24,7 +24,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c -@@ -369,7 +369,7 @@ static int sierra_write(struct tty_struc +@@ -415,7 +415,7 @@ static int sierra_write(struct tty_struc portdata = usb_get_serial_port_data(port); diff --git a/usb/usb-support-for-cdc-acm-of-single-interface-devices.patch b/usb/usb-support-for-cdc-acm-of-single-interface-devices.patch index 5986add158cc7c..d83641238826be 100644 --- a/usb/usb-support-for-cdc-acm-of-single-interface-devices.patch +++ b/usb/usb-support-for-cdc-acm-of-single-interface-devices.patch @@ -18,13 +18,13 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- - drivers/usb/class/cdc-acm.c | 63 +++++++++++++++++++++++++++++++++++++------- + drivers/usb/class/cdc-acm.c | 68 ++++++++++++++++++++++++++++++++++++-------- drivers/usb/class/cdc-acm.h | 2 + - 2 files changed, 56 insertions(+), 9 deletions(-) + 2 files changed, 58 insertions(+), 12 deletions(-) --- a/drivers/usb/class/cdc-acm.c +++ b/drivers/usb/class/cdc-acm.c -@@ -891,9 +891,9 @@ static int acm_probe (struct usb_interfa +@@ -937,9 +937,9 @@ static int acm_probe(struct usb_interfac int buflen = intf->altsetting->extralen; struct usb_interface *control_interface; struct usb_interface *data_interface; @@ -37,7 +37,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct usb_device *usb_dev = interface_to_usbdev(intf); struct acm *acm; int minor; -@@ -906,6 +906,7 @@ static int acm_probe (struct usb_interfa +@@ -952,6 +952,7 @@ static int acm_probe(struct usb_interfac unsigned long quirks; int num_rx_buf; int i; @@ -45,11 +45,12 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* normal quirks */ quirks = (unsigned long)id->driver_info; -@@ -989,8 +990,15 @@ next_desc: +@@ -1033,9 +1034,15 @@ next_desc: data_interface = usb_ifnum_to_if(usb_dev, (data_interface_num = call_interface_num)); control_interface = intf; } else { -- dev_dbg(&intf->dev,"No union descriptor, giving up\n"); +- dev_dbg(&intf->dev, +- "No union descriptor, giving up\n"); - return -ENODEV; + if (intf->cur_altsetting->desc.bNumEndpoints != 3) { + dev_dbg(&intf->dev,"No union descriptor, giving up\n"); @@ -63,9 +64,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } else { control_interface = usb_ifnum_to_if(usb_dev, union_header->bMasterInterface0); -@@ -1004,6 +1012,36 @@ next_desc: +@@ -1049,6 +1056,36 @@ next_desc: if (data_interface_num != call_interface_num) - dev_dbg(&intf->dev,"Separate call control interface. That is not fully supported.\n"); + dev_dbg(&intf->dev, "Separate call control interface. That is not fully supported.\n"); + if (control_interface == data_interface) { + /* some broken devices designed for windows work this way */ @@ -100,20 +101,21 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> skip_normal_probe: /*workaround for switched interfaces */ -@@ -1021,10 +1059,10 @@ skip_normal_probe: +@@ -1068,10 +1105,11 @@ skip_normal_probe: } /* Accept probe requests only for the control interface */ - if (intf != control_interface) + if (!combined_interfaces && intf != control_interface) return -ENODEV; - + - if (usb_interface_claimed(data_interface)) { /* valid in this context */ -+ if (!combined_interfaces && usb_interface_claimed(data_interface)) { /* valid in this context */ - dev_dbg(&intf->dev,"The data interface isn't available\n"); ++ if (!combined_interfaces && usb_interface_claimed(data_interface)) { ++ /* valid in this context */ + dev_dbg(&intf->dev, "The data interface isn't available\n"); return -EBUSY; } -@@ -1048,6 +1086,7 @@ skip_normal_probe: +@@ -1095,6 +1133,7 @@ skip_normal_probe: epread = epwrite; epwrite = t; } @@ -121,10 +123,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> dbg("interfaces are valid"); for (minor = 0; minor < ACM_TTY_MINORS && acm_table[minor]; minor++); -@@ -1063,12 +1102,15 @@ skip_normal_probe: - +@@ -1112,12 +1151,15 @@ skip_normal_probe: ctrlsize = le16_to_cpu(epctrl->wMaxPacketSize); - readsize = le16_to_cpu(epread->wMaxPacketSize)* ( quirks == SINGLE_RX_URB ? 1 : 2); + readsize = le16_to_cpu(epread->wMaxPacketSize) * + (quirks == SINGLE_RX_URB ? 1 : 2); + acm->combined_interfaces = combined_interfaces; acm->writesize = le16_to_cpu(epwrite->wMaxPacketSize) * 20; acm->control = control_interface; @@ -137,19 +139,22 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> acm->ctrlsize = ctrlsize; acm->readsize = readsize; acm->rx_buflimit = num_rx_buf; -@@ -1165,7 +1207,9 @@ skip_normal_probe: +@@ -1223,9 +1265,10 @@ skip_normal_probe: skip_countries: - usb_fill_int_urb(acm->ctrlurb, usb_dev, usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress), -- acm->ctrl_buffer, ctrlsize, acm_ctrl_irq, acm, epctrl->bInterval); + usb_fill_int_urb(acm->ctrlurb, usb_dev, +- usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress), +- acm->ctrl_buffer, ctrlsize, acm_ctrl_irq, acm, +- epctrl->bInterval); ++ usb_rcvintpipe(usb_dev, epctrl->bEndpointAddress), + acm->ctrl_buffer, ctrlsize, acm_ctrl_irq, acm, + /* works around buggy devices */ + epctrl->bInterval ? epctrl->bInterval : 0xff); acm->ctrlurb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; acm->ctrlurb->transfer_dma = acm->ctrl_dma; -@@ -1250,7 +1294,8 @@ static void acm_disconnect(struct usb_in - usb_buffer_free(usb_dev, acm->ctrlsize, acm->ctrl_buffer, acm->ctrl_dma); +@@ -1312,7 +1355,8 @@ static void acm_disconnect(struct usb_in + acm->ctrl_dma); acm_read_buffers_free(acm); - usb_driver_release_interface(&acm_driver, intf == acm->control ? @@ -157,10 +162,10 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + usb_driver_release_interface(&acm_driver, intf == acm->control ? acm->data : acm->control); - if (!acm->used) { + if (acm->port.count == 0) { --- a/drivers/usb/class/cdc-acm.h +++ b/drivers/usb/class/cdc-acm.h -@@ -126,6 +126,7 @@ struct acm { +@@ -125,6 +125,7 @@ struct acm { unsigned char clocal; /* termios CLOCAL */ unsigned int ctrl_caps; /* control capabilities from the class specific header */ unsigned int susp_count; /* number of suspended interfaces */ @@ -168,7 +173,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct acm_wb *delayed_wb; /* write queued for a device about to be woken */ }; -@@ -134,3 +135,4 @@ struct acm { +@@ -133,3 +134,4 @@ struct acm { /* constants describing various quirks and errors */ #define NO_UNION_NORMAL 1 #define SINGLE_RX_URB 2 diff --git a/usb/usb-usb-serial-call-port_probe-and-port_remove-at-the-right-times.patch b/usb/usb-usb-serial-call-port_probe-and-port_remove-at-the-right-times.patch index c212843e83d48b..4f03dc4c441a1a 100644 --- a/usb/usb-usb-serial-call-port_probe-and-port_remove-at-the-right-times.patch +++ b/usb/usb-usb-serial-call-port_probe-and-port_remove-at-the-right-times.patch @@ -80,7 +80,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> dev_info(dev, "%s converter now disconnected from ttyUSB%d\n", --- a/drivers/usb/serial/usb-serial.c +++ b/drivers/usb/serial/usb-serial.c -@@ -995,10 +995,15 @@ int usb_serial_probe(struct usb_interfac +@@ -1046,10 +1046,15 @@ int usb_serial_probe(struct usb_interfac dev_set_name(&port->dev, "ttyUSB%d", port->number); dbg ("%s - registering %s", __func__, dev_name(&port->dev)); @@ -97,7 +97,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } usb_serial_console_init(debug, minor); -@@ -1076,7 +1081,22 @@ void usb_serial_disconnect(struct usb_in +@@ -1130,7 +1135,22 @@ void usb_serial_disconnect(struct usb_in } kill_traffic(port); cancel_work_sync(&port->work); diff --git a/usb/usb-usb-serial-replace-shutdown-with-disconnect-release.patch b/usb/usb-usb-serial-replace-shutdown-with-disconnect-release.patch index 3e7edc4b3299ed..78ca9d36bbaff9 100644 --- a/usb/usb-usb-serial-replace-shutdown-with-disconnect-release.patch +++ b/usb/usb-usb-serial-replace-shutdown-with-disconnect-release.patch @@ -50,7 +50,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/usb/serial/option.c | 17 +++++++++---- drivers/usb/serial/oti6858.c | 7 ++--- drivers/usb/serial/pl2303.c | 5 +--- - drivers/usb/serial/sierra.c | 28 +++++++++++++++++++--- + drivers/usb/serial/sierra.c | 4 +-- drivers/usb/serial/spcp8x5.c | 5 +--- drivers/usb/serial/symbolserial.c | 14 ++++++++--- drivers/usb/serial/ti_usb_3410_5052.c | 10 +++----- @@ -58,7 +58,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/usb/serial/visor.c | 13 ++++------ drivers/usb/serial/whiteheat.c | 6 ++-- include/linux/usb/serial.h | 12 ++++++--- - 37 files changed, 319 insertions(+), 200 deletions(-) + 37 files changed, 297 insertions(+), 198 deletions(-) --- a/drivers/staging/uc2322/aten2011.c +++ b/drivers/staging/uc2322/aten2011.c @@ -118,8 +118,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void belkin_sa_release(struct usb_serial *serial); static int belkin_sa_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void belkin_sa_close(struct tty_struct *tty, -@@ -143,7 +143,7 @@ static struct usb_serial_driver belkin_d + static void belkin_sa_close(struct usb_serial_port *port); +@@ -142,7 +142,7 @@ static struct usb_serial_driver belkin_d .tiocmget = belkin_sa_tiocmget, .tiocmset = belkin_sa_tiocmset, .attach = belkin_sa_startup, @@ -128,7 +128,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -198,14 +198,13 @@ static int belkin_sa_startup(struct usb_ +@@ -197,14 +197,13 @@ static int belkin_sa_startup(struct usb_ } @@ -146,30 +146,30 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> priv = usb_get_serial_port_data(serial->port[i]); --- a/drivers/usb/serial/cp210x.c +++ b/drivers/usb/serial/cp210x.c -@@ -51,7 +51,7 @@ static int cp2101_tiocmset_port(struct u +@@ -50,7 +50,7 @@ static int cp210x_tiocmset_port(struct u unsigned int, unsigned int); - static void cp2101_break_ctl(struct tty_struct *, int); - static int cp2101_startup(struct usb_serial *); --static void cp2101_shutdown(struct usb_serial *); -+static void cp2101_disconnect(struct usb_serial *); + static void cp210x_break_ctl(struct tty_struct *, int); + static int cp210x_startup(struct usb_serial *); +-static void cp210x_shutdown(struct usb_serial *); ++static void cp210x_disconnect(struct usb_serial *); static int debug; -@@ -131,7 +131,7 @@ static struct usb_serial_driver cp2101_d - .tiocmget = cp2101_tiocmget, - .tiocmset = cp2101_tiocmset, - .attach = cp2101_startup, -- .shutdown = cp2101_shutdown, -+ .disconnect = cp2101_disconnect, +@@ -137,7 +137,7 @@ static struct usb_serial_driver cp210x_d + .tiocmget = cp210x_tiocmget, + .tiocmset = cp210x_tiocmset, + .attach = cp210x_startup, +- .shutdown = cp210x_shutdown, ++ .disconnect = cp210x_disconnect, }; /* Config request types */ -@@ -773,7 +773,7 @@ static int cp2101_startup(struct usb_ser +@@ -792,7 +792,7 @@ static int cp210x_startup(struct usb_ser return 0; } --static void cp2101_shutdown(struct usb_serial *serial) -+static void cp2101_disconnect(struct usb_serial *serial) +-static void cp210x_shutdown(struct usb_serial *serial) ++static void cp210x_disconnect(struct usb_serial *serial) { int i; @@ -184,8 +184,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void cyberjack_release(struct usb_serial *serial); static int cyberjack_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void cyberjack_close(struct tty_struct *tty, -@@ -95,7 +96,8 @@ static struct usb_serial_driver cyberjac + static void cyberjack_close(struct usb_serial_port *port); +@@ -94,7 +95,8 @@ static struct usb_serial_driver cyberjac .id_table = id_table, .num_ports = 1, .attach = cyberjack_startup, @@ -195,7 +195,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .open = cyberjack_open, .close = cyberjack_close, .write = cyberjack_write, -@@ -149,17 +151,25 @@ static int cyberjack_startup(struct usb_ +@@ -148,17 +150,25 @@ static int cyberjack_startup(struct usb_ return 0; } @@ -234,7 +234,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void cypress_release(struct usb_serial *serial); static int cypress_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void cypress_close(struct tty_struct *tty, + static void cypress_close(struct usb_serial_port *port); @@ -215,7 +215,7 @@ static struct usb_serial_driver cypress_ .id_table = id_table_earthmate, .num_ports = 1, @@ -243,8 +243,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + .release = cypress_release, .open = cypress_open, .close = cypress_close, - .write = cypress_write, -@@ -241,7 +241,7 @@ static struct usb_serial_driver cypress_ + .dtr_rts = cypress_dtr_rts, +@@ -242,7 +242,7 @@ static struct usb_serial_driver cypress_ .id_table = id_table_cyphidcomrs232, .num_ports = 1, .attach = cypress_hidcom_startup, @@ -252,8 +252,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + .release = cypress_release, .open = cypress_open, .close = cypress_close, - .write = cypress_write, -@@ -267,7 +267,7 @@ static struct usb_serial_driver cypress_ + .dtr_rts = cypress_dtr_rts, +@@ -269,7 +269,7 @@ static struct usb_serial_driver cypress_ .id_table = id_table_nokiaca42v2, .num_ports = 1, .attach = cypress_ca42v2_startup, @@ -261,8 +261,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + .release = cypress_release, .open = cypress_open, .close = cypress_close, - .write = cypress_write, -@@ -613,7 +613,7 @@ static int cypress_ca42v2_startup(struct + .dtr_rts = cypress_dtr_rts, +@@ -616,7 +616,7 @@ static int cypress_ca42v2_startup(struct } /* cypress_ca42v2_startup */ @@ -271,7 +271,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct cypress_private *priv; -@@ -626,7 +626,6 @@ static void cypress_shutdown(struct usb_ +@@ -629,7 +629,6 @@ static void cypress_shutdown(struct usb_ if (priv) { cypress_buf_free(priv->buf); kfree(priv); @@ -281,8 +281,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/digi_acceleport.c +++ b/drivers/usb/serial/digi_acceleport.c -@@ -460,7 +460,8 @@ static void digi_close(struct tty_struct - struct file *filp); +@@ -460,7 +460,8 @@ static int digi_carrier_raised(struct us + static void digi_dtr_rts(struct usb_serial_port *port, int on); static int digi_startup_device(struct usb_serial *serial); static int digi_startup(struct usb_serial *serial); -static void digi_shutdown(struct usb_serial *serial); @@ -291,7 +291,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static void digi_read_bulk_callback(struct urb *urb); static int digi_read_inb_callback(struct urb *urb); static int digi_read_oob_callback(struct urb *urb); -@@ -522,7 +523,8 @@ static struct usb_serial_driver digi_acc +@@ -524,7 +525,8 @@ static struct usb_serial_driver digi_acc .tiocmget = digi_tiocmget, .tiocmset = digi_tiocmset, .attach = digi_startup, @@ -301,7 +301,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; static struct usb_serial_driver digi_acceleport_4_device = { -@@ -548,7 +550,8 @@ static struct usb_serial_driver digi_acc +@@ -550,7 +552,8 @@ static struct usb_serial_driver digi_acc .tiocmget = digi_tiocmget, .tiocmset = digi_tiocmset, .attach = digi_startup, @@ -311,7 +311,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -1589,16 +1592,23 @@ static int digi_startup(struct usb_seria +@@ -1556,16 +1559,23 @@ static int digi_startup(struct usb_seria } @@ -339,7 +339,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* number of regular ports + 1 for the out-of-band port */ --- a/drivers/usb/serial/empeg.c +++ b/drivers/usb/serial/empeg.c -@@ -91,7 +91,6 @@ static int empeg_chars_in_buffer(struct +@@ -90,7 +90,6 @@ static int empeg_chars_in_buffer(struct static void empeg_throttle(struct tty_struct *tty); static void empeg_unthrottle(struct tty_struct *tty); static int empeg_startup(struct usb_serial *serial); @@ -347,7 +347,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static void empeg_set_termios(struct tty_struct *tty, struct usb_serial_port *port, struct ktermios *old_termios); static void empeg_write_bulk_callback(struct urb *urb); -@@ -125,7 +124,6 @@ static struct usb_serial_driver empeg_de +@@ -124,7 +123,6 @@ static struct usb_serial_driver empeg_de .throttle = empeg_throttle, .unthrottle = empeg_unthrottle, .attach = empeg_startup, @@ -355,7 +355,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .set_termios = empeg_set_termios, .write = empeg_write, .write_room = empeg_write_room, -@@ -429,12 +427,6 @@ static int empeg_startup(struct usb_ser +@@ -427,12 +425,6 @@ static int empeg_startup(struct usb_ser } @@ -370,7 +370,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c -@@ -719,7 +719,6 @@ static const char *ftdi_chip_name[] = { +@@ -720,7 +720,6 @@ static const char *ftdi_chip_name[] = { /* function prototypes for a FTDI serial converter */ static int ftdi_sio_probe(struct usb_serial *serial, const struct usb_device_id *id); @@ -378,7 +378,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int ftdi_sio_port_probe(struct usb_serial_port *port); static int ftdi_sio_port_remove(struct usb_serial_port *port); static int ftdi_open(struct tty_struct *tty, -@@ -777,7 +776,6 @@ static struct usb_serial_driver ftdi_sio +@@ -779,7 +778,6 @@ static struct usb_serial_driver ftdi_sio .ioctl = ftdi_ioctl, .set_termios = ftdi_set_termios, .break_ctl = ftdi_break_ctl, @@ -386,7 +386,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -1569,18 +1567,6 @@ static int ftdi_mtxorb_hack_setup(struct +@@ -1594,18 +1592,6 @@ static int ftdi_mtxorb_hack_setup(struct return 0; } @@ -407,7 +407,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct ftdi_private *priv = container_of(k, struct ftdi_private, kref); --- a/drivers/usb/serial/garmin_gps.c +++ b/drivers/usb/serial/garmin_gps.c -@@ -1476,7 +1476,7 @@ static int garmin_attach(struct usb_seri +@@ -1475,7 +1475,7 @@ static int garmin_attach(struct usb_seri } @@ -416,7 +416,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct usb_serial_port *port = serial->port[0]; struct garmin_data *garmin_data_p = usb_get_serial_port_data(port); -@@ -1485,8 +1485,17 @@ static void garmin_shutdown(struct usb_s +@@ -1484,8 +1484,17 @@ static void garmin_shutdown(struct usb_s usb_kill_urb(port->interrupt_in_urb); del_timer_sync(&garmin_data_p->timer); @@ -435,7 +435,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } -@@ -1505,7 +1514,8 @@ static struct usb_serial_driver garmin_d +@@ -1504,7 +1513,8 @@ static struct usb_serial_driver garmin_d .throttle = garmin_throttle, .unthrottle = garmin_unthrottle, .attach = garmin_attach, @@ -457,7 +457,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .throttle = usb_serial_generic_throttle, .unthrottle = usb_serial_generic_unthrottle, .resume = usb_serial_generic_resume, -@@ -552,7 +553,7 @@ int usb_serial_handle_break(struct usb_s +@@ -551,7 +552,7 @@ int usb_serial_handle_break(struct usb_s } EXPORT_SYMBOL_GPL(usb_serial_handle_break); @@ -466,7 +466,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i; -@@ -563,3 +564,7 @@ void usb_serial_generic_shutdown(struct +@@ -562,3 +563,7 @@ void usb_serial_generic_shutdown(struct generic_cleanup(serial->port[i]); } @@ -476,7 +476,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +} --- a/drivers/usb/serial/io_edgeport.c +++ b/drivers/usb/serial/io_edgeport.c -@@ -225,7 +225,8 @@ static int edge_tiocmget(struct tty_str +@@ -224,7 +224,8 @@ static int edge_tiocmget(struct tty_str static int edge_tiocmset(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear); static int edge_startup(struct usb_serial *serial); @@ -486,7 +486,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #include "io_tables.h" /* all of the devices that this driver supports */ -@@ -3195,21 +3196,16 @@ static int edge_startup(struct usb_seria +@@ -3193,21 +3194,16 @@ static int edge_startup(struct usb_seria /**************************************************************************** @@ -510,7 +510,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* free up our endpoint stuff */ if (edge_serial->is_epic) { usb_kill_urb(edge_serial->interrupt_read_urb); -@@ -3220,9 +3216,24 @@ static void edge_shutdown(struct usb_ser +@@ -3218,9 +3214,24 @@ static void edge_shutdown(struct usb_ser usb_free_urb(edge_serial->read_urb); kfree(edge_serial->bulk_in_buffer); } @@ -580,7 +580,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .tiocmget = edge_tiocmget, --- a/drivers/usb/serial/io_ti.c +++ b/drivers/usb/serial/io_ti.c -@@ -2664,7 +2664,7 @@ cleanup: +@@ -2663,7 +2663,7 @@ cleanup: return -ENOMEM; } @@ -589,7 +589,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i; struct edgeport_port *edge_port; -@@ -2674,12 +2674,22 @@ static void edge_shutdown(struct usb_ser +@@ -2673,12 +2673,22 @@ static void edge_shutdown(struct usb_ser for (i = 0; i < serial->num_ports; ++i) { edge_port = usb_get_serial_port_data(serial->port[i]); edge_remove_sysfs_attrs(edge_port->port); @@ -614,7 +614,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } -@@ -2916,7 +2926,8 @@ static struct usb_serial_driver edgeport +@@ -2915,7 +2925,8 @@ static struct usb_serial_driver edgeport .throttle = edge_throttle, .unthrottle = edge_unthrottle, .attach = edge_startup, @@ -624,7 +624,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .port_probe = edge_create_sysfs_attrs, .ioctl = edge_ioctl, .set_termios = edge_set_termios, -@@ -2945,7 +2956,8 @@ static struct usb_serial_driver edgeport +@@ -2944,7 +2955,8 @@ static struct usb_serial_driver edgeport .throttle = edge_throttle, .unthrottle = edge_unthrottle, .attach = edge_startup, @@ -636,15 +636,15 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .set_termios = edge_set_termios, --- a/drivers/usb/serial/ipaq.c +++ b/drivers/usb/serial/ipaq.c -@@ -80,7 +80,6 @@ static void ipaq_close(struct tty_struct - struct usb_serial_port *port, struct file *filp); +@@ -79,7 +79,6 @@ static int ipaq_open(struct tty_struct + static void ipaq_close(struct usb_serial_port *port); static int ipaq_calc_num_ports(struct usb_serial *serial); static int ipaq_startup(struct usb_serial *serial); -static void ipaq_shutdown(struct usb_serial *serial); static int ipaq_write(struct tty_struct *tty, struct usb_serial_port *port, const unsigned char *buf, int count); static int ipaq_write_bulk(struct usb_serial_port *port, -@@ -577,7 +576,6 @@ static struct usb_serial_driver ipaq_dev +@@ -576,7 +575,6 @@ static struct usb_serial_driver ipaq_dev .close = ipaq_close, .attach = ipaq_startup, .calc_num_ports = ipaq_calc_num_ports, @@ -652,7 +652,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .write = ipaq_write, .write_room = ipaq_write_room, .chars_in_buffer = ipaq_chars_in_buffer, -@@ -992,11 +990,6 @@ static int ipaq_startup(struct usb_seria +@@ -990,11 +988,6 @@ static int ipaq_startup(struct usb_seria return usb_reset_configuration(serial->dev); } @@ -666,7 +666,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int retval; --- a/drivers/usb/serial/iuu_phoenix.c +++ b/drivers/usb/serial/iuu_phoenix.c -@@ -122,8 +122,8 @@ static int iuu_startup(struct usb_serial +@@ -121,8 +121,8 @@ static int iuu_startup(struct usb_serial return 0; } @@ -677,9 +677,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct usb_serial_port *port = serial->port[0]; struct iuu_private *priv = usb_get_serial_port_data(port); -@@ -1176,7 +1176,7 @@ static struct usb_serial_driver iuu_devi - .tiocmget = iuu_tiocmget, +@@ -1202,7 +1202,7 @@ static struct usb_serial_driver iuu_devi .tiocmset = iuu_tiocmset, + .set_termios = iuu_set_termios, .attach = iuu_startup, - .shutdown = iuu_shutdown, + .release = iuu_release, @@ -688,7 +688,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int __init iuu_init(void) --- a/drivers/usb/serial/keyspan.c +++ b/drivers/usb/serial/keyspan.c -@@ -2682,7 +2682,7 @@ static int keyspan_startup(struct usb_se +@@ -2689,7 +2689,7 @@ static int keyspan_startup(struct usb_se return 0; } @@ -697,7 +697,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i, j; struct usb_serial_port *port; -@@ -2722,6 +2722,17 @@ static void keyspan_shutdown(struct usb_ +@@ -2729,6 +2729,17 @@ static void keyspan_shutdown(struct usb_ usb_free_urb(p_priv->out_urbs[j]); } } @@ -717,9 +717,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> kfree(s_priv); --- a/drivers/usb/serial/keyspan.h +++ b/drivers/usb/serial/keyspan.h -@@ -42,7 +42,8 @@ static void keyspan_close (struct tty_s - struct usb_serial_port *port, - struct file *filp); +@@ -41,7 +41,8 @@ static int keyspan_open (struct tty_st + static void keyspan_close (struct usb_serial_port *port); + static void keyspan_dtr_rts (struct usb_serial_port *port, int on); static int keyspan_startup (struct usb_serial *serial); -static void keyspan_shutdown (struct usb_serial *serial); +static void keyspan_disconnect (struct usb_serial *serial); @@ -737,7 +737,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; static struct usb_serial_driver keyspan_2port_device = { -@@ -589,7 +591,8 @@ static struct usb_serial_driver keyspan_ +@@ -590,7 +592,8 @@ static struct usb_serial_driver keyspan_ .tiocmget = keyspan_tiocmget, .tiocmset = keyspan_tiocmset, .attach = keyspan_startup, @@ -747,7 +747,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; static struct usb_serial_driver keyspan_4port_device = { -@@ -609,7 +612,8 @@ static struct usb_serial_driver keyspan_ +@@ -611,7 +614,8 @@ static struct usb_serial_driver keyspan_ .tiocmget = keyspan_tiocmget, .tiocmset = keyspan_tiocmset, .attach = keyspan_startup, @@ -759,7 +759,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #endif --- a/drivers/usb/serial/keyspan_pda.c +++ b/drivers/usb/serial/keyspan_pda.c -@@ -795,7 +795,7 @@ static int keyspan_pda_startup(struct us +@@ -809,7 +809,7 @@ static int keyspan_pda_startup(struct us return 0; } @@ -768,7 +768,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { dbg("%s", __func__); -@@ -853,7 +853,7 @@ static struct usb_serial_driver keyspan_ +@@ -869,7 +869,7 @@ static struct usb_serial_driver keyspan_ .tiocmget = keyspan_pda_tiocmget, .tiocmset = keyspan_pda_tiocmset, .attach = keyspan_pda_startup, @@ -788,8 +788,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void klsi_105_release(struct usb_serial *serial); static int klsi_105_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void klsi_105_close(struct tty_struct *tty, -@@ -132,7 +133,8 @@ static struct usb_serial_driver kl5kusb1 + static void klsi_105_close(struct usb_serial_port *port); +@@ -131,7 +132,8 @@ static struct usb_serial_driver kl5kusb1 .tiocmget = klsi_105_tiocmget, .tiocmset = klsi_105_tiocmset, .attach = klsi_105_startup, @@ -799,7 +799,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .throttle = klsi_105_throttle, .unthrottle = klsi_105_unthrottle, }; -@@ -316,7 +318,7 @@ err_cleanup: +@@ -315,7 +317,7 @@ err_cleanup: } /* klsi_105_startup */ @@ -808,7 +808,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i; -@@ -326,33 +328,36 @@ static void klsi_105_shutdown(struct usb +@@ -325,33 +327,36 @@ static void klsi_105_shutdown(struct usb for (i = 0; i < serial->num_ports; ++i) { struct klsi_105_private *priv = usb_get_serial_port_data(serial->port[i]); @@ -869,8 +869,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void kobil_release(struct usb_serial *serial); static int kobil_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void kobil_close(struct tty_struct *tty, struct usb_serial_port *port, -@@ -118,7 +118,7 @@ static struct usb_serial_driver kobil_de + static void kobil_close(struct usb_serial_port *port); +@@ -117,7 +117,7 @@ static struct usb_serial_driver kobil_de .id_table = id_table, .num_ports = 1, .attach = kobil_startup, @@ -879,7 +879,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .ioctl = kobil_ioctl, .set_termios = kobil_set_termios, .tiocmget = kobil_tiocmget, -@@ -202,17 +202,13 @@ static int kobil_startup(struct usb_seri +@@ -201,17 +201,13 @@ static int kobil_startup(struct usb_seri } @@ -891,7 +891,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - for (i = 0; i < serial->num_ports; ++i) { - while (serial->port[i]->port.count > 0) -- kobil_close(NULL, serial->port[i], NULL); +- kobil_close(serial->port[i]); + for (i = 0; i < serial->num_ports; ++i) kfree(usb_get_serial_port_data(serial->port[i])); - usb_set_serial_port_data(serial->port[i], NULL); @@ -909,8 +909,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void mct_u232_release(struct usb_serial *serial); static int mct_u232_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void mct_u232_close(struct tty_struct *tty, -@@ -148,7 +148,7 @@ static struct usb_serial_driver mct_u232 + static void mct_u232_close(struct usb_serial_port *port); +@@ -149,7 +149,7 @@ static struct usb_serial_driver mct_u232 .tiocmget = mct_u232_tiocmget, .tiocmset = mct_u232_tiocmset, .attach = mct_u232_startup, @@ -919,7 +919,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -406,7 +406,7 @@ static int mct_u232_startup(struct usb_s +@@ -407,7 +407,7 @@ static int mct_u232_startup(struct usb_s } /* mct_u232_startup */ @@ -928,7 +928,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct mct_u232_private *priv; int i; -@@ -416,12 +416,9 @@ static void mct_u232_shutdown(struct usb +@@ -417,12 +417,9 @@ static void mct_u232_shutdown(struct usb for (i = 0; i < serial->num_ports; ++i) { /* My special items, the standard routines free my urbs */ priv = usb_get_serial_port_data(serial->port[i]); @@ -945,7 +945,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> struct usb_serial_port *port, struct file *filp) --- a/drivers/usb/serial/mos7720.c +++ b/drivers/usb/serial/mos7720.c -@@ -1522,19 +1522,16 @@ static int mos7720_startup(struct usb_se +@@ -1521,19 +1521,16 @@ static int mos7720_startup(struct usb_se return 0; } @@ -967,7 +967,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } static struct usb_driver usb_driver = { -@@ -1559,7 +1556,7 @@ static struct usb_serial_driver moschip7 +@@ -1558,7 +1555,7 @@ static struct usb_serial_driver moschip7 .throttle = mos7720_throttle, .unthrottle = mos7720_unthrottle, .attach = mos7720_startup, @@ -978,7 +978,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .write = mos7720_write, --- a/drivers/usb/serial/mos7840.c +++ b/drivers/usb/serial/mos7840.c -@@ -2679,16 +2679,16 @@ error: +@@ -2633,16 +2633,16 @@ error: } /**************************************************************************** @@ -998,7 +998,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (!serial) { dbg("%s", "Invalid Handler"); -@@ -2708,11 +2708,42 @@ static void mos7840_shutdown(struct usb_ +@@ -2662,11 +2662,42 @@ static void mos7840_shutdown(struct usb_ mos7840_port->zombie = 1; spin_unlock_irqrestore(&mos7840_port->pool_lock, flags); usb_kill_urb(mos7840_port->control_urb); @@ -1042,7 +1042,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } dbg("%s", "Thank u :: "); -@@ -2753,7 +2784,8 @@ static struct usb_serial_driver moschip7 +@@ -2707,7 +2738,8 @@ static struct usb_serial_driver moschip7 .tiocmget = mos7840_tiocmget, .tiocmset = mos7840_tiocmset, .attach = mos7840_startup, @@ -1054,7 +1054,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; --- a/drivers/usb/serial/omninet.c +++ b/drivers/usb/serial/omninet.c -@@ -73,7 +73,8 @@ static void omninet_write_bulk_callback( +@@ -72,7 +72,8 @@ static void omninet_write_bulk_callback( static int omninet_write(struct tty_struct *tty, struct usb_serial_port *port, const unsigned char *buf, int count); static int omninet_write_room(struct tty_struct *tty); @@ -1064,7 +1064,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int omninet_attach(struct usb_serial *serial); static struct usb_device_id id_table[] = { -@@ -109,7 +110,8 @@ static struct usb_serial_driver zyxel_om +@@ -108,7 +109,8 @@ static struct usb_serial_driver zyxel_om .write_room = omninet_write_room, .read_bulk_callback = omninet_read_bulk_callback, .write_bulk_callback = omninet_write_bulk_callback, @@ -1074,7 +1074,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; -@@ -347,13 +349,22 @@ static void omninet_write_bulk_callback( +@@ -345,13 +347,22 @@ static void omninet_write_bulk_callback( } @@ -1101,7 +1101,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/opticon.c +++ b/drivers/usb/serial/opticon.c -@@ -464,7 +464,7 @@ error: +@@ -463,7 +463,7 @@ error: return retval; } @@ -1110,7 +1110,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct opticon_private *priv = usb_get_serial_data(serial); -@@ -472,9 +472,16 @@ static void opticon_shutdown(struct usb_ +@@ -471,9 +471,16 @@ static void opticon_shutdown(struct usb_ usb_kill_urb(priv->bulk_read_urb); usb_free_urb(priv->bulk_read_urb); @@ -1128,7 +1128,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } static int opticon_suspend(struct usb_interface *intf, pm_message_t message) -@@ -525,7 +532,8 @@ static struct usb_serial_driver opticon_ +@@ -524,7 +531,8 @@ static struct usb_serial_driver opticon_ .close = opticon_close, .write = opticon_write, .write_room = opticon_write_room, @@ -1140,9 +1140,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .ioctl = opticon_ioctl, --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -50,7 +50,8 @@ static int option_open(struct tty_struc - static void option_close(struct tty_struct *tty, struct usb_serial_port *port, - struct file *filp); +@@ -51,7 +51,8 @@ static void option_close(struct usb_seri + static void option_dtr_rts(struct usb_serial_port *port, int on); + static int option_startup(struct usb_serial *serial); -static void option_shutdown(struct usb_serial *serial); +static void option_disconnect(struct usb_serial *serial); @@ -1150,7 +1150,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int option_write_room(struct tty_struct *tty); static void option_instat_callback(struct urb *urb); -@@ -566,7 +567,8 @@ static struct usb_serial_driver option_1 +@@ -568,7 +569,8 @@ static struct usb_serial_driver option_1 .tiocmget = option_tiocmget, .tiocmset = option_tiocmset, .attach = option_startup, @@ -1187,7 +1187,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> port = serial->port[i]; --- a/drivers/usb/serial/oti6858.c +++ b/drivers/usb/serial/oti6858.c -@@ -160,7 +160,7 @@ static int oti6858_tiocmget(struct tty_s +@@ -159,7 +159,7 @@ static int oti6858_tiocmget(struct tty_s static int oti6858_tiocmset(struct tty_struct *tty, struct file *file, unsigned int set, unsigned int clear); static int oti6858_startup(struct usb_serial *serial); @@ -1196,7 +1196,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* functions operating on buffers */ static struct oti6858_buf *oti6858_buf_alloc(unsigned int size); -@@ -195,7 +195,7 @@ static struct usb_serial_driver oti6858_ +@@ -194,7 +194,7 @@ static struct usb_serial_driver oti6858_ .write_room = oti6858_write_room, .chars_in_buffer = oti6858_chars_in_buffer, .attach = oti6858_startup, @@ -1205,7 +1205,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> }; struct oti6858_private { -@@ -829,7 +829,7 @@ static int oti6858_ioctl(struct tty_stru +@@ -782,7 +782,7 @@ static int oti6858_ioctl(struct tty_stru } @@ -1214,7 +1214,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct oti6858_private *priv; int i; -@@ -841,7 +841,6 @@ static void oti6858_shutdown(struct usb_ +@@ -794,7 +794,6 @@ static void oti6858_shutdown(struct usb_ if (priv) { oti6858_buf_free(priv->buf); kfree(priv); @@ -1224,7 +1224,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c -@@ -897,7 +897,7 @@ static void pl2303_break_ctl(struct tty_ +@@ -878,7 +878,7 @@ static void pl2303_break_ctl(struct tty_ dbg("%s - error sending break = %d", __func__, result); } @@ -1233,7 +1233,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i; struct pl2303_private *priv; -@@ -909,7 +909,6 @@ static void pl2303_shutdown(struct usb_s +@@ -890,7 +890,6 @@ static void pl2303_shutdown(struct usb_s if (priv) { pl2303_buf_free(priv->buf); kfree(priv); @@ -1241,7 +1241,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } } -@@ -1140,7 +1139,7 @@ static struct usb_serial_driver pl2303_d +@@ -1123,7 +1122,7 @@ static struct usb_serial_driver pl2303_d .write_room = pl2303_write_room, .chars_in_buffer = pl2303_chars_in_buffer, .attach = pl2303_startup, @@ -1252,54 +1252,21 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int __init pl2303_init(void) --- a/drivers/usb/serial/sierra.c +++ b/drivers/usb/serial/sierra.c -@@ -799,7 +799,7 @@ static int sierra_startup(struct usb_ser +@@ -814,7 +814,7 @@ static int sierra_startup(struct usb_ser return 0; } -static void sierra_shutdown(struct usb_serial *serial) +static void sierra_disconnect(struct usb_serial *serial) { - int i, j; + int i; struct usb_serial_port *port; -@@ -818,10 +818,29 @@ static void sierra_shutdown(struct usb_s - for (j = 0; j < N_IN_URB; j++) { - usb_kill_urb(portdata->in_urbs[j]); - usb_free_urb(portdata->in_urbs[j]); -- kfree(portdata->in_buffer[j]); - } -+ } -+} -+ -+static void sierra_release(struct usb_serial *serial) -+{ -+ int i, j; -+ struct usb_serial_port *port; -+ struct sierra_port_private *portdata; -+ -+ dev_dbg(&serial->dev->dev, "%s\n", __func__); -+ -+ for (i = 0; i < serial->num_ports; ++i) { -+ port = serial->port[i]; -+ if (!port) -+ continue; -+ portdata = usb_get_serial_port_data(port); -+ if (!portdata) -+ continue; -+ -+ for (j = 0; j < N_IN_URB; j++) -+ kfree(portdata->in_buffer[j]); - kfree(portdata); -- usb_set_serial_port_data(port, NULL); - } - } - -@@ -843,7 +862,8 @@ static struct usb_serial_driver sierra_d +@@ -853,7 +853,7 @@ static struct usb_serial_driver sierra_d .tiocmget = sierra_tiocmget, .tiocmset = sierra_tiocmset, .attach = sierra_startup, - .shutdown = sierra_shutdown, + .disconnect = sierra_disconnect, -+ .release = sierra_release, .read_int_callback = sierra_instat_callback, }; @@ -1322,7 +1289,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } } -@@ -1043,7 +1042,7 @@ static struct usb_serial_driver spcp8x5_ +@@ -1020,7 +1019,7 @@ static struct usb_serial_driver spcp8x5_ .write_bulk_callback = spcp8x5_write_bulk_callback, .chars_in_buffer = spcp8x5_chars_in_buffer, .attach = spcp8x5_startup, @@ -1333,7 +1300,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static int __init spcp8x5_init(void) --- a/drivers/usb/serial/symbolserial.c +++ b/drivers/usb/serial/symbolserial.c -@@ -268,7 +268,7 @@ error: +@@ -267,7 +267,7 @@ error: return retval; } @@ -1342,7 +1309,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct symbol_private *priv = usb_get_serial_data(serial); -@@ -276,9 +276,16 @@ static void symbol_shutdown(struct usb_s +@@ -275,9 +275,16 @@ static void symbol_shutdown(struct usb_s usb_kill_urb(priv->int_urb); usb_free_urb(priv->int_urb); @@ -1360,7 +1327,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } static struct usb_driver symbol_driver = { -@@ -300,7 +307,8 @@ static struct usb_serial_driver symbol_d +@@ -299,7 +306,8 @@ static struct usb_serial_driver symbol_d .attach = symbol_startup, .open = symbol_open, .close = symbol_close, @@ -1380,8 +1347,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void ti_release(struct usb_serial *serial); static int ti_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *file); - static void ti_close(struct tty_struct *tty, struct usb_serial_port *port, -@@ -231,7 +231,7 @@ static struct usb_serial_driver ti_1port + static void ti_close(struct usb_serial_port *port); +@@ -230,7 +230,7 @@ static struct usb_serial_driver ti_1port .id_table = ti_id_table_3410, .num_ports = 1, .attach = ti_startup, @@ -1390,7 +1357,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .open = ti_open, .close = ti_close, .write = ti_write, -@@ -259,7 +259,7 @@ static struct usb_serial_driver ti_2port +@@ -258,7 +258,7 @@ static struct usb_serial_driver ti_2port .id_table = ti_id_table_5052, .num_ports = 2, .attach = ti_startup, @@ -1399,7 +1366,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .open = ti_open, .close = ti_close, .write = ti_write, -@@ -474,7 +474,7 @@ free_tdev: +@@ -473,7 +473,7 @@ free_tdev: } @@ -1408,7 +1375,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { int i; struct ti_device *tdev = usb_get_serial_data(serial); -@@ -487,12 +487,10 @@ static void ti_shutdown(struct usb_seria +@@ -486,12 +486,10 @@ static void ti_shutdown(struct usb_seria if (tport) { ti_buf_free(tport->tp_write_buf); kfree(tport); @@ -1450,7 +1417,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> } } -@@ -1067,10 +1074,6 @@ void usb_serial_disconnect(struct usb_in +@@ -1118,10 +1125,6 @@ void usb_serial_disconnect(struct usb_in serial->disconnected = 1; mutex_unlock(&serial->disc_mutex); @@ -1461,7 +1428,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> for (i = 0; i < serial->num_ports; ++i) { port = serial->port[i]; if (port) { -@@ -1099,14 +1102,7 @@ void usb_serial_disconnect(struct usb_in +@@ -1153,14 +1156,7 @@ void usb_serial_disconnect(struct usb_in } } } @@ -1477,7 +1444,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* let the last holder of this object * cause it to be cleaned up */ -@@ -1282,7 +1278,8 @@ static void fixup_generic(struct usb_ser +@@ -1338,7 +1334,8 @@ static void fixup_generic(struct usb_ser set_to_generic_if_null(device, chars_in_buffer); set_to_generic_if_null(device, read_bulk_callback); set_to_generic_if_null(device, write_bulk_callback); @@ -1489,7 +1456,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int usb_serial_register(struct usb_serial_driver *driver) --- a/drivers/usb/serial/visor.c +++ b/drivers/usb/serial/visor.c -@@ -48,7 +48,7 @@ static void visor_unthrottle(struct tty_ +@@ -47,7 +47,7 @@ static void visor_unthrottle(struct tty_ static int visor_probe(struct usb_serial *serial, const struct usb_device_id *id); static int visor_calc_num_ports(struct usb_serial *serial); @@ -1498,7 +1465,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> static void visor_write_bulk_callback(struct urb *urb); static void visor_read_bulk_callback(struct urb *urb); static void visor_read_int_callback(struct urb *urb); -@@ -203,7 +203,7 @@ static struct usb_serial_driver handspri +@@ -202,7 +202,7 @@ static struct usb_serial_driver handspri .attach = treo_attach, .probe = visor_probe, .calc_num_ports = visor_calc_num_ports, @@ -1507,7 +1474,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .write = visor_write, .write_room = visor_write_room, .write_bulk_callback = visor_write_bulk_callback, -@@ -228,7 +228,7 @@ static struct usb_serial_driver clie_5_d +@@ -227,7 +227,7 @@ static struct usb_serial_driver clie_5_d .attach = clie_5_attach, .probe = visor_probe, .calc_num_ports = visor_calc_num_ports, @@ -1516,7 +1483,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .write = visor_write, .write_room = visor_write_room, .write_bulk_callback = visor_write_bulk_callback, -@@ -920,7 +920,7 @@ static int clie_5_attach(struct usb_seri +@@ -918,7 +918,7 @@ static int clie_5_attach(struct usb_seri return generic_startup(serial); } @@ -1525,7 +1492,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> { struct visor_private *priv; int i; -@@ -929,10 +929,7 @@ static void visor_shutdown(struct usb_se +@@ -927,10 +927,7 @@ static void visor_shutdown(struct usb_se for (i = 0; i < serial->num_ports; i++) { priv = usb_get_serial_port_data(serial->port[i]); @@ -1547,8 +1514,8 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> +static void whiteheat_release(struct usb_serial *serial); static int whiteheat_open(struct tty_struct *tty, struct usb_serial_port *port, struct file *filp); - static void whiteheat_close(struct tty_struct *tty, -@@ -190,7 +190,7 @@ static struct usb_serial_driver whitehea + static void whiteheat_close(struct usb_serial_port *port); +@@ -189,7 +189,7 @@ static struct usb_serial_driver whitehea .id_table = id_table_std, .num_ports = 4, .attach = whiteheat_attach, @@ -1557,7 +1524,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> .open = whiteheat_open, .close = whiteheat_close, .write = whiteheat_write, -@@ -618,7 +618,7 @@ no_command_buffer: +@@ -617,7 +617,7 @@ no_command_buffer: } @@ -1591,7 +1558,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int (*port_probe)(struct usb_serial_port *port); int (*port_remove)(struct usb_serial_port *port); -@@ -306,7 +309,8 @@ extern void usb_serial_generic_read_bulk +@@ -308,7 +311,8 @@ extern void usb_serial_generic_read_bulk extern void usb_serial_generic_write_bulk_callback(struct urb *urb); extern void usb_serial_generic_throttle(struct tty_struct *tty); extern void usb_serial_generic_unthrottle(struct tty_struct *tty); diff --git a/usb/usb-usb_debug-usb_generic_serial-implement-multi-urb-write.patch b/usb/usb-usb_debug-usb_generic_serial-implement-multi-urb-write.patch index a0bf4c200fa722..94ac64b4176f03 100644 --- a/usb/usb-usb_debug-usb_generic_serial-implement-multi-urb-write.patch +++ b/usb/usb-usb_debug-usb_generic_serial-implement-multi-urb-write.patch @@ -38,7 +38,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c -@@ -191,6 +191,88 @@ void usb_serial_generic_close(struct tty +@@ -190,6 +190,88 @@ void usb_serial_generic_close(struct usb generic_cleanup(port); } @@ -127,7 +127,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> int usb_serial_generic_write(struct tty_struct *tty, struct usb_serial_port *port, const unsigned char *buf, int count) { -@@ -208,6 +290,11 @@ int usb_serial_generic_write(struct tty_ +@@ -207,6 +289,11 @@ int usb_serial_generic_write(struct tty_ /* only do something if we have a bulk out endpoint */ if (serial->num_bulk_out) { unsigned long flags; @@ -139,7 +139,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> spin_lock_irqsave(&port->lock, flags); if (port->write_urb_busy) { spin_unlock_irqrestore(&port->lock, flags); -@@ -258,15 +345,18 @@ int usb_serial_generic_write_room(struct +@@ -257,15 +344,18 @@ int usb_serial_generic_write_room(struct { struct usb_serial_port *port = tty->driver_data; struct usb_serial *serial = port->serial; @@ -162,7 +162,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> dbg("%s - returns %d", __func__, room); return room; -@@ -277,11 +367,16 @@ int usb_serial_generic_chars_in_buffer(s +@@ -276,11 +366,16 @@ int usb_serial_generic_chars_in_buffer(s struct usb_serial_port *port = tty->driver_data; struct usb_serial *serial = port->serial; int chars = 0; @@ -181,7 +181,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> if (port->write_urb_busy) chars = port->write_urb->transfer_buffer_length; } -@@ -364,12 +459,24 @@ EXPORT_SYMBOL_GPL(usb_serial_generic_rea +@@ -363,12 +458,24 @@ EXPORT_SYMBOL_GPL(usb_serial_generic_rea void usb_serial_generic_write_bulk_callback(struct urb *urb) { diff --git a/usb/usb-usb_serial-only-allow-sysrq-on-a-console-port.patch b/usb/usb-usb_serial-only-allow-sysrq-on-a-console-port.patch index a1f96628a73fff..3c3815428dbb90 100644 --- a/usb/usb-usb_serial-only-allow-sysrq-on-a-console-port.patch +++ b/usb/usb-usb_serial-only-allow-sysrq-on-a-console-port.patch @@ -35,7 +35,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c -@@ -529,7 +529,7 @@ void usb_serial_generic_unthrottle(struc +@@ -528,7 +528,7 @@ void usb_serial_generic_unthrottle(struc int usb_serial_handle_sysrq_char(struct usb_serial_port *port, unsigned int ch) { diff --git a/usb/usb-xhci-add-makefile-maintainers-and-kconfig-entries.patch b/usb/usb-xhci-add-makefile-maintainers-and-kconfig-entries.patch index bddd99b74e31e1..2313fae8a6b897 100644 --- a/usb/usb-xhci-add-makefile-maintainers-and-kconfig-entries.patch +++ b/usb/usb-xhci-add-makefile-maintainers-and-kconfig-entries.patch @@ -78,7 +78,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> obj-$(CONFIG_USB_R8A66597_HCD) += host/ --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -6038,6 +6038,12 @@ L: linux-wireless@vger.kernel.org +@@ -6138,6 +6138,12 @@ L: linux-wireless@vger.kernel.org S: Maintained F: drivers/net/wireless/rndis_wlan.c |
