aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb')
-rw-r--r--drivers/usb/serial/ark3116.c2
-rw-r--r--drivers/usb/serial/bus.c6
-rw-r--r--drivers/usb/serial/console.c2
-rw-r--r--drivers/usb/serial/cp210x.c2
-rw-r--r--drivers/usb/serial/cypress_m8.c4
-rw-r--r--drivers/usb/serial/digi_acceleport.c6
-rw-r--r--drivers/usb/serial/f81232.c5
-rw-r--r--drivers/usb/serial/garmin_gps.c6
-rw-r--r--drivers/usb/serial/io_edgeport.c58
-rw-r--r--drivers/usb/serial/io_ti.c21
-rw-r--r--drivers/usb/serial/keyspan.c29
-rw-r--r--drivers/usb/serial/metro-usb.c4
-rw-r--r--drivers/usb/serial/mos7720.c37
-rw-r--r--drivers/usb/serial/mos7840.c52
-rw-r--r--drivers/usb/serial/opticon.c2
-rw-r--r--drivers/usb/serial/pl2303.c2
-rw-r--r--drivers/usb/serial/quatech2.c7
-rw-r--r--drivers/usb/serial/sierra.c2
-rw-r--r--drivers/usb/serial/ti_usb_3410_5052.c10
-rw-r--r--drivers/usb/serial/usb-serial.c7
-rw-r--r--drivers/usb/serial/usb_wwan.c2
-rw-r--r--drivers/usb/serial/whiteheat.c20
22 files changed, 122 insertions, 164 deletions
diff --git a/drivers/usb/serial/ark3116.c b/drivers/usb/serial/ark3116.c
index 40e7fd94646f..293a7706ba3f 100644
--- a/drivers/usb/serial/ark3116.c
+++ b/drivers/usb/serial/ark3116.c
@@ -414,7 +414,7 @@ static int ark3116_ioctl(struct tty_struct *tty,
414 memset(&serstruct, 0, sizeof(serstruct)); 414 memset(&serstruct, 0, sizeof(serstruct));
415 serstruct.type = PORT_16654; 415 serstruct.type = PORT_16654;
416 serstruct.line = port->serial->minor; 416 serstruct.line = port->serial->minor;
417 serstruct.port = port->number; 417 serstruct.port = port->port_number;
418 serstruct.custom_divisor = 0; 418 serstruct.custom_divisor = 0;
419 serstruct.baud_base = 460800; 419 serstruct.baud_base = 460800;
420 420
diff --git a/drivers/usb/serial/bus.c b/drivers/usb/serial/bus.c
index 3c4db6d196c6..f053b302a00d 100644
--- a/drivers/usb/serial/bus.c
+++ b/drivers/usb/serial/bus.c
@@ -43,7 +43,7 @@ static ssize_t show_port_number(struct device *dev,
43{ 43{
44 struct usb_serial_port *port = to_usb_serial_port(dev); 44 struct usb_serial_port *port = to_usb_serial_port(dev);
45 45
46 return sprintf(buf, "%d\n", port->number - port->serial->minor); 46 return sprintf(buf, "%d\n", port->port_number);
47} 47}
48 48
49static DEVICE_ATTR(port_number, S_IRUGO, show_port_number, NULL); 49static DEVICE_ATTR(port_number, S_IRUGO, show_port_number, NULL);
@@ -80,7 +80,7 @@ static int usb_serial_device_probe(struct device *dev)
80 goto exit_with_autopm; 80 goto exit_with_autopm;
81 } 81 }
82 82
83 minor = port->number; 83 minor = port->minor;
84 tty_register_device(usb_serial_tty_driver, minor, dev); 84 tty_register_device(usb_serial_tty_driver, minor, dev);
85 dev_info(&port->serial->dev->dev, 85 dev_info(&port->serial->dev->dev,
86 "%s converter now attached to ttyUSB%d\n", 86 "%s converter now attached to ttyUSB%d\n",
@@ -106,7 +106,7 @@ static int usb_serial_device_remove(struct device *dev)
106 /* make sure suspend/resume doesn't race against port_remove */ 106 /* make sure suspend/resume doesn't race against port_remove */
107 usb_autopm_get_interface(port->serial->interface); 107 usb_autopm_get_interface(port->serial->interface);
108 108
109 minor = port->number; 109 minor = port->minor;
110 tty_unregister_device(usb_serial_tty_driver, minor); 110 tty_unregister_device(usb_serial_tty_driver, minor);
111 111
112 device_remove_file(&port->dev, &dev_attr_port_number); 112 device_remove_file(&port->dev, &dev_attr_port_number);
diff --git a/drivers/usb/serial/console.c b/drivers/usb/serial/console.c
index 5f3bcd31e204..1b811022f1a1 100644
--- a/drivers/usb/serial/console.c
+++ b/drivers/usb/serial/console.c
@@ -210,7 +210,7 @@ static void usb_console_write(struct console *co,
210 if (count == 0) 210 if (count == 0)
211 return; 211 return;
212 212
213 pr_debug("%s - port %d, %d byte(s)\n", __func__, port->number, count); 213 pr_debug("%s - minor %d, %d byte(s)\n", __func__, port->minor, count);
214 214
215 if (!port->port.console) { 215 if (!port->port.console) {
216 pr_debug("%s - port not opened\n", __func__); 216 pr_debug("%s - port not opened\n", __func__);
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index 2c659553c07c..d6ef2f8da37d 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -666,8 +666,6 @@ static void cp210x_set_termios(struct tty_struct *tty,
666 unsigned int bits; 666 unsigned int bits;
667 unsigned int modem_ctl[4]; 667 unsigned int modem_ctl[4];
668 668
669 dev_dbg(dev, "%s - port %d\n", __func__, port->number);
670
671 if (!tty) 669 if (!tty)
672 return; 670 return;
673 671
diff --git a/drivers/usb/serial/cypress_m8.c b/drivers/usb/serial/cypress_m8.c
index 082120198f87..e948dc02795d 100644
--- a/drivers/usb/serial/cypress_m8.c
+++ b/drivers/usb/serial/cypress_m8.c
@@ -435,7 +435,7 @@ static void cypress_set_dead(struct usb_serial_port *port)
435 spin_unlock_irqrestore(&priv->lock, flags); 435 spin_unlock_irqrestore(&priv->lock, flags);
436 436
437 dev_err(&port->dev, "cypress_m8 suspending failing port %d - " 437 dev_err(&port->dev, "cypress_m8 suspending failing port %d - "
438 "interval might be too short\n", port->number); 438 "interval might be too short\n", port->port_number);
439} 439}
440 440
441 441
@@ -667,7 +667,7 @@ static int cypress_write(struct tty_struct *tty, struct usb_serial_port *port,
667{ 667{
668 struct cypress_private *priv = usb_get_serial_port_data(port); 668 struct cypress_private *priv = usb_get_serial_port_data(port);
669 669
670 dev_dbg(&port->dev, "%s - port %d, %d bytes\n", __func__, port->number, count); 670 dev_dbg(&port->dev, "%s - %d bytes\n", __func__, count);
671 671
672 /* line control commands, which need to be executed immediately, 672 /* line control commands, which need to be executed immediately,
673 are not put into the buffer for obvious reasons. 673 are not put into the buffer for obvious reasons.
diff --git a/drivers/usb/serial/digi_acceleport.c b/drivers/usb/serial/digi_acceleport.c
index 7b807d389527..19b467fe0388 100644
--- a/drivers/usb/serial/digi_acceleport.c
+++ b/drivers/usb/serial/digi_acceleport.c
@@ -1304,11 +1304,7 @@ static void digi_release(struct usb_serial *serial)
1304 1304
1305static int digi_port_probe(struct usb_serial_port *port) 1305static int digi_port_probe(struct usb_serial_port *port)
1306{ 1306{
1307 unsigned port_num; 1307 return digi_port_init(port, port->port_number);
1308
1309 port_num = port->number - port->serial->minor;
1310
1311 return digi_port_init(port, port_num);
1312} 1308}
1313 1309
1314static int digi_port_remove(struct usb_serial_port *port) 1310static int digi_port_remove(struct usb_serial_port *port)
diff --git a/drivers/usb/serial/f81232.c b/drivers/usb/serial/f81232.c
index 090b411d893f..350dfcb5fa62 100644
--- a/drivers/usb/serial/f81232.c
+++ b/drivers/usb/serial/f81232.c
@@ -288,15 +288,14 @@ static int f81232_ioctl(struct tty_struct *tty,
288 struct serial_struct ser; 288 struct serial_struct ser;
289 struct usb_serial_port *port = tty->driver_data; 289 struct usb_serial_port *port = tty->driver_data;
290 290
291 dev_dbg(&port->dev, "%s (%d) cmd = 0x%04x\n", __func__, 291 dev_dbg(&port->dev, "%s cmd = 0x%04x\n", __func__, cmd);
292 port->number, cmd);
293 292
294 switch (cmd) { 293 switch (cmd) {
295 case TIOCGSERIAL: 294 case TIOCGSERIAL:
296 memset(&ser, 0, sizeof ser); 295 memset(&ser, 0, sizeof ser);
297 ser.type = PORT_16654; 296 ser.type = PORT_16654;
298 ser.line = port->serial->minor; 297 ser.line = port->serial->minor;
299 ser.port = port->number; 298 ser.port = port->port_number;
300 ser.baud_base = 460800; 299 ser.baud_base = 460800;
301 300
302 if (copy_to_user((void __user *)arg, &ser, sizeof ser)) 301 if (copy_to_user((void __user *)arg, &ser, sizeof ser))
diff --git a/drivers/usb/serial/garmin_gps.c b/drivers/usb/serial/garmin_gps.c
index b110c573ea85..04b5ed90ffb2 100644
--- a/drivers/usb/serial/garmin_gps.c
+++ b/drivers/usb/serial/garmin_gps.c
@@ -948,9 +948,9 @@ static void garmin_close(struct usb_serial_port *port)
948{ 948{
949 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port); 949 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
950 950
951 dev_dbg(&port->dev, "%s - port %d - mode=%d state=%d flags=0x%X\n", 951 dev_dbg(&port->dev, "%s - mode=%d state=%d flags=0x%X\n",
952 __func__, port->number, garmin_data_p->mode, 952 __func__, garmin_data_p->mode, garmin_data_p->state,
953 garmin_data_p->state, garmin_data_p->flags); 953 garmin_data_p->flags);
954 954
955 garmin_clear(garmin_data_p); 955 garmin_clear(garmin_data_p);
956 956
diff --git a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
index 1477e8593476..0c27ff3d2e8f 100644
--- a/drivers/usb/serial/io_edgeport.c
+++ b/drivers/usb/serial/io_edgeport.c
@@ -915,8 +915,8 @@ static int edge_open(struct tty_struct *tty, struct usb_serial_port *port)
915 return -ENOMEM; 915 return -ENOMEM;
916 } 916 }
917 917
918 dev_dbg(dev, "%s(%d) - Initialize TX fifo to %d bytes\n", 918 dev_dbg(dev, "%s - Initialize TX fifo to %d bytes\n",
919 __func__, port->number, edge_port->maxTxCredits); 919 __func__, edge_port->maxTxCredits);
920 920
921 return 0; 921 return 0;
922} 922}
@@ -1122,9 +1122,8 @@ static int edge_write(struct tty_struct *tty, struct usb_serial_port *port,
1122 copySize = min((unsigned int)count, 1122 copySize = min((unsigned int)count,
1123 (edge_port->txCredits - fifo->count)); 1123 (edge_port->txCredits - fifo->count));
1124 1124
1125 dev_dbg(&port->dev, "%s(%d) of %d byte(s) Fifo room %d -- will copy %d bytes\n", 1125 dev_dbg(&port->dev, "%s of %d byte(s) Fifo room %d -- will copy %d bytes\n",
1126 __func__, port->number, count, 1126 __func__, count, edge_port->txCredits - fifo->count, copySize);
1127 edge_port->txCredits - fifo->count, copySize);
1128 1127
1129 /* catch writes of 0 bytes which the tty driver likes to give us, 1128 /* catch writes of 0 bytes which the tty driver likes to give us,
1130 and when txCredits is empty */ 1129 and when txCredits is empty */
@@ -1216,9 +1215,8 @@ static void send_more_port_data(struct edgeport_serial *edge_serial,
1216 if (edge_port->write_in_progress || 1215 if (edge_port->write_in_progress ||
1217 !edge_port->open || 1216 !edge_port->open ||
1218 (fifo->count == 0)) { 1217 (fifo->count == 0)) {
1219 dev_dbg(dev, "%s(%d) EXIT - fifo %d, PendingWrite = %d\n", 1218 dev_dbg(dev, "%s EXIT - fifo %d, PendingWrite = %d\n",
1220 __func__, edge_port->port->number, 1219 __func__, fifo->count, edge_port->write_in_progress);
1221 fifo->count, edge_port->write_in_progress);
1222 goto exit_send; 1220 goto exit_send;
1223 } 1221 }
1224 1222
@@ -1230,9 +1228,8 @@ static void send_more_port_data(struct edgeport_serial *edge_serial,
1230 * it's better to wait for more credits so we can do a larger write. 1228 * it's better to wait for more credits so we can do a larger write.
1231 */ 1229 */
1232 if (edge_port->txCredits < EDGE_FW_GET_TX_CREDITS_SEND_THRESHOLD(edge_port->maxTxCredits, EDGE_FW_BULK_MAX_PACKET_SIZE)) { 1230 if (edge_port->txCredits < EDGE_FW_GET_TX_CREDITS_SEND_THRESHOLD(edge_port->maxTxCredits, EDGE_FW_BULK_MAX_PACKET_SIZE)) {
1233 dev_dbg(dev, "%s(%d) Not enough credit - fifo %d TxCredit %d\n", 1231 dev_dbg(dev, "%s Not enough credit - fifo %d TxCredit %d\n",
1234 __func__, edge_port->port->number, fifo->count, 1232 __func__, fifo->count, edge_port->txCredits);
1235 edge_port->txCredits);
1236 goto exit_send; 1233 goto exit_send;
1237 } 1234 }
1238 1235
@@ -1256,10 +1253,8 @@ static void send_more_port_data(struct edgeport_serial *edge_serial,
1256 edge_port->write_in_progress = false; 1253 edge_port->write_in_progress = false;
1257 goto exit_send; 1254 goto exit_send;
1258 } 1255 }
1259 buffer[0] = IOSP_BUILD_DATA_HDR1(edge_port->port->number 1256 buffer[0] = IOSP_BUILD_DATA_HDR1(edge_port->port->port_number, count);
1260 - edge_port->port->serial->minor, count); 1257 buffer[1] = IOSP_BUILD_DATA_HDR2(edge_port->port->port_number, count);
1261 buffer[1] = IOSP_BUILD_DATA_HDR2(edge_port->port->number
1262 - edge_port->port->serial->minor, count);
1263 1258
1264 /* now copy our data */ 1259 /* now copy our data */
1265 bytesleft = fifo->size - fifo->tail; 1260 bytesleft = fifo->size - fifo->tail;
@@ -1377,8 +1372,7 @@ static int edge_chars_in_buffer(struct tty_struct *tty)
1377 edge_port->txfifo.count; 1372 edge_port->txfifo.count;
1378 spin_unlock_irqrestore(&edge_port->ep_lock, flags); 1373 spin_unlock_irqrestore(&edge_port->ep_lock, flags);
1379 if (num_chars) { 1374 if (num_chars) {
1380 dev_dbg(&port->dev, "%s(port %d) - returns %d\n", __func__, 1375 dev_dbg(&port->dev, "%s - returns %d\n", __func__, num_chars);
1381 port->number, num_chars);
1382 } 1376 }
1383 1377
1384 return num_chars; 1378 return num_chars;
@@ -1576,7 +1570,7 @@ static int get_serial_info(struct edgeport_port *edge_port,
1576 1570
1577 tmp.type = PORT_16550A; 1571 tmp.type = PORT_16550A;
1578 tmp.line = edge_port->port->serial->minor; 1572 tmp.line = edge_port->port->serial->minor;
1579 tmp.port = edge_port->port->number; 1573 tmp.port = edge_port->port->port_number;
1580 tmp.irq = 0; 1574 tmp.irq = 0;
1581 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 1575 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ;
1582 tmp.xmit_fifo_size = edge_port->maxTxCredits; 1576 tmp.xmit_fifo_size = edge_port->maxTxCredits;
@@ -1601,15 +1595,15 @@ static int edge_ioctl(struct tty_struct *tty,
1601 DEFINE_WAIT(wait); 1595 DEFINE_WAIT(wait);
1602 struct edgeport_port *edge_port = usb_get_serial_port_data(port); 1596 struct edgeport_port *edge_port = usb_get_serial_port_data(port);
1603 1597
1604 dev_dbg(&port->dev, "%s - port %d, cmd = 0x%x\n", __func__, port->number, cmd); 1598 dev_dbg(&port->dev, "%s - cmd = 0x%x\n", __func__, cmd);
1605 1599
1606 switch (cmd) { 1600 switch (cmd) {
1607 case TIOCSERGETLSR: 1601 case TIOCSERGETLSR:
1608 dev_dbg(&port->dev, "%s (%d) TIOCSERGETLSR\n", __func__, port->number); 1602 dev_dbg(&port->dev, "%s TIOCSERGETLSR\n", __func__);
1609 return get_lsr_info(edge_port, (unsigned int __user *) arg); 1603 return get_lsr_info(edge_port, (unsigned int __user *) arg);
1610 1604
1611 case TIOCGSERIAL: 1605 case TIOCGSERIAL:
1612 dev_dbg(&port->dev, "%s (%d) TIOCGSERIAL\n", __func__, port->number); 1606 dev_dbg(&port->dev, "%s TIOCGSERIAL\n", __func__);
1613 return get_serial_info(edge_port, (struct serial_struct __user *) arg); 1607 return get_serial_info(edge_port, (struct serial_struct __user *) arg);
1614 } 1608 }
1615 return -ENOIOCTLCMD; 1609 return -ENOIOCTLCMD;
@@ -2181,9 +2175,8 @@ static int send_iosp_ext_cmd(struct edgeport_port *edge_port,
2181 2175
2182 currentCommand = buffer; 2176 currentCommand = buffer;
2183 2177
2184 MAKE_CMD_EXT_CMD(&currentCommand, &length, 2178 MAKE_CMD_EXT_CMD(&currentCommand, &length, edge_port->port->port_number,
2185 edge_port->port->number - edge_port->port->serial->minor, 2179 command, param);
2186 command, param);
2187 2180
2188 status = write_cmd_usb(edge_port, buffer, length); 2181 status = write_cmd_usb(edge_port, buffer, length);
2189 if (status) { 2182 if (status) {
@@ -2266,18 +2259,16 @@ static int send_cmd_write_baud_rate(struct edgeport_port *edge_port,
2266 int cmdLen = 0; 2259 int cmdLen = 0;
2267 int divisor; 2260 int divisor;
2268 int status; 2261 int status;
2269 unsigned char number = 2262 u32 number = edge_port->port->port_number;
2270 edge_port->port->number - edge_port->port->serial->minor;
2271 2263
2272 if (edge_serial->is_epic && 2264 if (edge_serial->is_epic &&
2273 !edge_serial->epic_descriptor.Supports.IOSPSetBaudRate) { 2265 !edge_serial->epic_descriptor.Supports.IOSPSetBaudRate) {
2274 dev_dbg(dev, "SendCmdWriteBaudRate - NOT Setting baud rate for port = %d, baud = %d\n", 2266 dev_dbg(dev, "SendCmdWriteBaudRate - NOT Setting baud rate for port, baud = %d\n",
2275 edge_port->port->number, baudRate); 2267 baudRate);
2276 return 0; 2268 return 0;
2277 } 2269 }
2278 2270
2279 dev_dbg(dev, "%s - port = %d, baud = %d\n", __func__, 2271 dev_dbg(dev, "%s - baud = %d\n", __func__, baudRate);
2280 edge_port->port->number, baudRate);
2281 2272
2282 status = calc_baud_rate_divisor(dev, baudRate, &divisor); 2273 status = calc_baud_rate_divisor(dev, baudRate, &divisor);
2283 if (status) { 2274 if (status) {
@@ -2388,9 +2379,8 @@ static int send_cmd_write_uart_register(struct edgeport_port *edge_port,
2388 currCmd = cmdBuffer; 2379 currCmd = cmdBuffer;
2389 2380
2390 /* Build a cmd in the buffer to write the given register */ 2381 /* Build a cmd in the buffer to write the given register */
2391 MAKE_CMD_WRITE_REG(&currCmd, &cmdLen, 2382 MAKE_CMD_WRITE_REG(&currCmd, &cmdLen, edge_port->port->port_number,
2392 edge_port->port->number - edge_port->port->serial->minor, 2383 regNum, regValue);
2393 regNum, regValue);
2394 2384
2395 status = write_cmd_usb(edge_port, cmdBuffer, cmdLen); 2385 status = write_cmd_usb(edge_port, cmdBuffer, cmdLen);
2396 if (status) { 2386 if (status) {
@@ -2424,8 +2414,6 @@ static void change_port_settings(struct tty_struct *tty,
2424 __u8 txFlow; 2414 __u8 txFlow;
2425 int status; 2415 int status;
2426 2416
2427 dev_dbg(dev, "%s - port %d\n", __func__, edge_port->port->number);
2428
2429 if (!edge_port->open && 2417 if (!edge_port->open &&
2430 !edge_port->openPending) { 2418 !edge_port->openPending) {
2431 dev_dbg(dev, "%s - port not opened\n", __func__); 2419 dev_dbg(dev, "%s - port not opened\n", __func__);
diff --git a/drivers/usb/serial/io_ti.c b/drivers/usb/serial/io_ti.c
index 1be6ba7bee27..d32bf2b7f988 100644
--- a/drivers/usb/serial/io_ti.c
+++ b/drivers/usb/serial/io_ti.c
@@ -259,7 +259,7 @@ static int send_cmd(struct usb_device *dev, __u8 command,
259/* clear tx/rx buffers and fifo in TI UMP */ 259/* clear tx/rx buffers and fifo in TI UMP */
260static int purge_port(struct usb_serial_port *port, __u16 mask) 260static int purge_port(struct usb_serial_port *port, __u16 mask)
261{ 261{
262 int port_number = port->number - port->serial->minor; 262 int port_number = port->port_number;
263 263
264 dev_dbg(&port->dev, "%s - port %d, mask %x\n", __func__, port_number, mask); 264 dev_dbg(&port->dev, "%s - port %d, mask %x\n", __func__, port_number, mask);
265 265
@@ -1392,7 +1392,8 @@ stayinbootmode:
1392 1392
1393static int ti_do_config(struct edgeport_port *port, int feature, int on) 1393static int ti_do_config(struct edgeport_port *port, int feature, int on)
1394{ 1394{
1395 int port_number = port->port->number - port->port->serial->minor; 1395 int port_number = port->port->port_number;
1396
1396 on = !!on; /* 1 or 0 not bitmask */ 1397 on = !!on; /* 1 or 0 not bitmask */
1397 return send_cmd(port->port->serial->dev, 1398 return send_cmd(port->port->serial->dev,
1398 feature, (__u8)(UMPM_UART1_PORT + port_number), 1399 feature, (__u8)(UMPM_UART1_PORT + port_number),
@@ -1637,7 +1638,7 @@ static void edge_bulk_in_callback(struct urb *urb)
1637 return; 1638 return;
1638 } 1639 }
1639 1640
1640 port_number = edge_port->port->number - edge_port->port->serial->minor; 1641 port_number = edge_port->port->port_number;
1641 1642
1642 if (edge_port->lsr_event) { 1643 if (edge_port->lsr_event) {
1643 edge_port->lsr_event = 0; 1644 edge_port->lsr_event = 0;
@@ -1730,7 +1731,7 @@ static int edge_open(struct tty_struct *tty, struct usb_serial_port *port)
1730 if (edge_port == NULL) 1731 if (edge_port == NULL)
1731 return -ENODEV; 1732 return -ENODEV;
1732 1733
1733 port_number = port->number - port->serial->minor; 1734 port_number = port->port_number;
1734 switch (port_number) { 1735 switch (port_number) {
1735 case 0: 1736 case 0:
1736 edge_port->uart_base = UMPMEM_BASE_UART1; 1737 edge_port->uart_base = UMPMEM_BASE_UART1;
@@ -1908,7 +1909,7 @@ static void edge_close(struct usb_serial_port *port)
1908 spin_unlock_irqrestore(&edge_port->ep_lock, flags); 1909 spin_unlock_irqrestore(&edge_port->ep_lock, flags);
1909 1910
1910 dev_dbg(&port->dev, "%s - send umpc_close_port\n", __func__); 1911 dev_dbg(&port->dev, "%s - send umpc_close_port\n", __func__);
1911 port_number = port->number - port->serial->minor; 1912 port_number = port->port_number;
1912 send_cmd(serial->dev, UMPC_CLOSE_PORT, 1913 send_cmd(serial->dev, UMPC_CLOSE_PORT,
1913 (__u8)(UMPM_UART1_PORT + port_number), 0, NULL, 0); 1914 (__u8)(UMPM_UART1_PORT + port_number), 0, NULL, 0);
1914 1915
@@ -2137,10 +2138,7 @@ static void change_port_settings(struct tty_struct *tty,
2137 int baud; 2138 int baud;
2138 unsigned cflag; 2139 unsigned cflag;
2139 int status; 2140 int status;
2140 int port_number = edge_port->port->number - 2141 int port_number = edge_port->port->port_number;
2141 edge_port->port->serial->minor;
2142
2143 dev_dbg(dev, "%s - port %d\n", __func__, edge_port->port->number);
2144 2142
2145 config = kmalloc (sizeof (*config), GFP_KERNEL); 2143 config = kmalloc (sizeof (*config), GFP_KERNEL);
2146 if (!config) { 2144 if (!config) {
@@ -2284,7 +2282,6 @@ static void edge_set_termios(struct tty_struct *tty,
2284 tty->termios.c_cflag, tty->termios.c_iflag); 2282 tty->termios.c_cflag, tty->termios.c_iflag);
2285 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__, 2283 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__,
2286 old_termios->c_cflag, old_termios->c_iflag); 2284 old_termios->c_cflag, old_termios->c_iflag);
2287 dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number);
2288 2285
2289 if (edge_port == NULL) 2286 if (edge_port == NULL)
2290 return; 2287 return;
@@ -2367,7 +2364,7 @@ static int get_serial_info(struct edgeport_port *edge_port,
2367 2364
2368 tmp.type = PORT_16550A; 2365 tmp.type = PORT_16550A;
2369 tmp.line = edge_port->port->serial->minor; 2366 tmp.line = edge_port->port->serial->minor;
2370 tmp.port = edge_port->port->number; 2367 tmp.port = edge_port->port->port_number;
2371 tmp.irq = 0; 2368 tmp.irq = 0;
2372 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 2369 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ;
2373 tmp.xmit_fifo_size = edge_port->port->bulk_out_size; 2370 tmp.xmit_fifo_size = edge_port->port->bulk_out_size;
@@ -2386,7 +2383,7 @@ static int edge_ioctl(struct tty_struct *tty,
2386 struct usb_serial_port *port = tty->driver_data; 2383 struct usb_serial_port *port = tty->driver_data;
2387 struct edgeport_port *edge_port = usb_get_serial_port_data(port); 2384 struct edgeport_port *edge_port = usb_get_serial_port_data(port);
2388 2385
2389 dev_dbg(&port->dev, "%s - port %d, cmd = 0x%x\n", __func__, port->number, cmd); 2386 dev_dbg(&port->dev, "%s - cmd = 0x%x\n", __func__, cmd);
2390 2387
2391 switch (cmd) { 2388 switch (cmd) {
2392 case TIOCGSERIAL: 2389 case TIOCGSERIAL:
diff --git a/drivers/usb/serial/keyspan.c b/drivers/usb/serial/keyspan.c
index 28365e647168..5a979729f8ec 100644
--- a/drivers/usb/serial/keyspan.c
+++ b/drivers/usb/serial/keyspan.c
@@ -152,7 +152,7 @@ static void keyspan_set_termios(struct tty_struct *tty,
152 p_priv = usb_get_serial_port_data(port); 152 p_priv = usb_get_serial_port_data(port);
153 d_details = p_priv->device_details; 153 d_details = p_priv->device_details;
154 cflag = tty->termios.c_cflag; 154 cflag = tty->termios.c_cflag;
155 device_port = port->number - port->serial->minor; 155 device_port = port->port_number;
156 156
157 /* Baud rate calculation takes baud rate as an integer 157 /* Baud rate calculation takes baud rate as an integer
158 so other rates can be generated if desired. */ 158 so other rates can be generated if desired. */
@@ -234,8 +234,8 @@ static int keyspan_write(struct tty_struct *tty,
234 dataOffset = 1; 234 dataOffset = 1;
235 } 235 }
236 236
237 dev_dbg(&port->dev, "%s - for port %d (%d chars), flip=%d\n", 237 dev_dbg(&port->dev, "%s - %d chars, flip=%d\n", __func__, count,
238 __func__, port->number, count, p_priv->out_flip); 238 p_priv->out_flip);
239 239
240 for (left = count; left > 0; left -= todo) { 240 for (left = count; left > 0; left -= todo) {
241 todo = left; 241 todo = left;
@@ -1041,7 +1041,7 @@ static int keyspan_open(struct tty_struct *tty, struct usb_serial_port *port)
1041 /* get the terminal config for the setup message now so we don't 1041 /* get the terminal config for the setup message now so we don't
1042 * need to send 2 of them */ 1042 * need to send 2 of them */
1043 1043
1044 device_port = port->number - port->serial->minor; 1044 device_port = port->port_number;
1045 if (tty) { 1045 if (tty) {
1046 cflag = tty->termios.c_cflag; 1046 cflag = tty->termios.c_cflag;
1047 /* Baud rate calculation takes baud rate as an integer 1047 /* Baud rate calculation takes baud rate as an integer
@@ -1547,7 +1547,7 @@ static int keyspan_usa26_send_setup(struct usb_serial *serial,
1547 s_priv = usb_get_serial_data(serial); 1547 s_priv = usb_get_serial_data(serial);
1548 p_priv = usb_get_serial_port_data(port); 1548 p_priv = usb_get_serial_port_data(port);
1549 d_details = s_priv->device_details; 1549 d_details = s_priv->device_details;
1550 device_port = port->number - port->serial->minor; 1550 device_port = port->port_number;
1551 1551
1552 this_urb = p_priv->outcont_urb; 1552 this_urb = p_priv->outcont_urb;
1553 1553
@@ -1691,7 +1691,7 @@ static int keyspan_usa28_send_setup(struct usb_serial *serial,
1691 s_priv = usb_get_serial_data(serial); 1691 s_priv = usb_get_serial_data(serial);
1692 p_priv = usb_get_serial_port_data(port); 1692 p_priv = usb_get_serial_port_data(port);
1693 d_details = s_priv->device_details; 1693 d_details = s_priv->device_details;
1694 device_port = port->number - port->serial->minor; 1694 device_port = port->port_number;
1695 1695
1696 /* only do something if we have a bulk out endpoint */ 1696 /* only do something if we have a bulk out endpoint */
1697 this_urb = p_priv->outcont_urb; 1697 this_urb = p_priv->outcont_urb;
@@ -1821,17 +1821,16 @@ static int keyspan_usa49_send_setup(struct usb_serial *serial,
1821 this_urb = s_priv->glocont_urb; 1821 this_urb = s_priv->glocont_urb;
1822 1822
1823 /* Work out which port within the device is being setup */ 1823 /* Work out which port within the device is being setup */
1824 device_port = port->number - port->serial->minor; 1824 device_port = port->port_number;
1825 1825
1826 /* Make sure we have an urb then send the message */ 1826 /* Make sure we have an urb then send the message */
1827 if (this_urb == NULL) { 1827 if (this_urb == NULL) {
1828 dev_dbg(&port->dev, "%s - oops no urb for port %d.\n", __func__, port->number); 1828 dev_dbg(&port->dev, "%s - oops no urb for port.\n", __func__);
1829 return -1; 1829 return -1;
1830 } 1830 }
1831 1831
1832 dev_dbg(&port->dev, "%s - endpoint %d port %d (%d)\n", 1832 dev_dbg(&port->dev, "%s - endpoint %d (%d)\n",
1833 __func__, usb_pipeendpoint(this_urb->pipe), 1833 __func__, usb_pipeendpoint(this_urb->pipe), device_port);
1834 port->number, device_port);
1835 1834
1836 /* Save reset port val for resend. 1835 /* Save reset port val for resend.
1837 Don't overwrite resend for open/close condition. */ 1836 Don't overwrite resend for open/close condition. */
@@ -1846,7 +1845,6 @@ static int keyspan_usa49_send_setup(struct usb_serial *serial,
1846 1845
1847 memset(&msg, 0, sizeof(struct keyspan_usa49_portControlMessage)); 1846 memset(&msg, 0, sizeof(struct keyspan_usa49_portControlMessage));
1848 1847
1849 /*msg.portNumber = port->number;*/
1850 msg.portNumber = device_port; 1848 msg.portNumber = device_port;
1851 1849
1852 /* Only set baud rate if it's changed */ 1850 /* Only set baud rate if it's changed */
@@ -2136,12 +2134,11 @@ static int keyspan_usa67_send_setup(struct usb_serial *serial,
2136 this_urb = s_priv->glocont_urb; 2134 this_urb = s_priv->glocont_urb;
2137 2135
2138 /* Work out which port within the device is being setup */ 2136 /* Work out which port within the device is being setup */
2139 device_port = port->number - port->serial->minor; 2137 device_port = port->port_number;
2140 2138
2141 /* Make sure we have an urb then send the message */ 2139 /* Make sure we have an urb then send the message */
2142 if (this_urb == NULL) { 2140 if (this_urb == NULL) {
2143 dev_dbg(&port->dev, "%s - oops no urb for port %d.\n", __func__, 2141 dev_dbg(&port->dev, "%s - oops no urb for port.\n", __func__);
2144 port->number);
2145 return -1; 2142 return -1;
2146 } 2143 }
2147 2144
@@ -2382,7 +2379,7 @@ static int keyspan_port_probe(struct usb_serial_port *port)
2382 /* Setup values for the various callback routines */ 2379 /* Setup values for the various callback routines */
2383 cback = &keyspan_callbacks[d_details->msg_format]; 2380 cback = &keyspan_callbacks[d_details->msg_format];
2384 2381
2385 port_num = port->number - port->serial->minor; 2382 port_num = port->port_number;
2386 2383
2387 /* Do indat endpoints first, once for each flip */ 2384 /* Do indat endpoints first, once for each flip */
2388 endp = d_details->indat_endpoints[port_num]; 2385 endp = d_details->indat_endpoints[port_num];
diff --git a/drivers/usb/serial/metro-usb.c b/drivers/usb/serial/metro-usb.c
index 47e247759eb0..40ccf6e5e318 100644
--- a/drivers/usb/serial/metro-usb.c
+++ b/drivers/usb/serial/metro-usb.c
@@ -224,8 +224,8 @@ static int metrousb_open(struct tty_struct *tty, struct usb_serial_port *port)
224 result = metrousb_send_unidirectional_cmd(UNI_CMD_OPEN, port); 224 result = metrousb_send_unidirectional_cmd(UNI_CMD_OPEN, port);
225 if (result) { 225 if (result) {
226 dev_err(&port->dev, 226 dev_err(&port->dev,
227 "%s - failed to configure device for port number=%d, error code=%d\n", 227 "%s - failed to configure device, error code=%d\n",
228 __func__, port->number, result); 228 __func__, result);
229 goto exit; 229 goto exit;
230 } 230 }
231 231
diff --git a/drivers/usb/serial/mos7720.c b/drivers/usb/serial/mos7720.c
index f27c621a9297..f79ae7fe37ff 100644
--- a/drivers/usb/serial/mos7720.c
+++ b/drivers/usb/serial/mos7720.c
@@ -1047,7 +1047,7 @@ static int mos7720_open(struct tty_struct *tty, struct usb_serial_port *port)
1047 * 1047 *
1048 * 0x08 : SP1/2 Control Reg 1048 * 0x08 : SP1/2 Control Reg
1049 */ 1049 */
1050 port_number = port->number - port->serial->minor; 1050 port_number = port->port_number;
1051 read_mos_reg(serial, port_number, LSR, &data); 1051 read_mos_reg(serial, port_number, LSR, &data);
1052 1052
1053 dev_dbg(&port->dev, "SS::%p LSR:%x\n", mos7720_port, data); 1053 dev_dbg(&port->dev, "SS::%p LSR:%x\n", mos7720_port, data);
@@ -1066,7 +1066,7 @@ static int mos7720_open(struct tty_struct *tty, struct usb_serial_port *port)
1066 1066
1067 write_mos_reg(serial, port_number, SP_CONTROL_REG, 0x00); 1067 write_mos_reg(serial, port_number, SP_CONTROL_REG, 0x00);
1068 read_mos_reg(serial, dummy, SP_CONTROL_REG, &data); 1068 read_mos_reg(serial, dummy, SP_CONTROL_REG, &data);
1069 data = data | (port->number - port->serial->minor + 1); 1069 data = data | (port->port_number + 1);
1070 write_mos_reg(serial, dummy, SP_CONTROL_REG, data); 1070 write_mos_reg(serial, dummy, SP_CONTROL_REG, data);
1071 mos7720_port->shadowLCR = 0x83; 1071 mos7720_port->shadowLCR = 0x83;
1072 write_mos_reg(serial, port_number, LCR, mos7720_port->shadowLCR); 1072 write_mos_reg(serial, port_number, LCR, mos7720_port->shadowLCR);
@@ -1147,8 +1147,8 @@ static void mos7720_close(struct usb_serial_port *port)
1147 usb_kill_urb(port->write_urb); 1147 usb_kill_urb(port->write_urb);
1148 usb_kill_urb(port->read_urb); 1148 usb_kill_urb(port->read_urb);
1149 1149
1150 write_mos_reg(serial, port->number - port->serial->minor, MCR, 0x00); 1150 write_mos_reg(serial, port->port_number, MCR, 0x00);
1151 write_mos_reg(serial, port->number - port->serial->minor, IER, 0x00); 1151 write_mos_reg(serial, port->port_number, IER, 0x00);
1152 1152
1153 mos7720_port->open = 0; 1153 mos7720_port->open = 0;
1154} 1154}
@@ -1172,8 +1172,7 @@ static void mos7720_break(struct tty_struct *tty, int break_state)
1172 data = mos7720_port->shadowLCR & ~UART_LCR_SBC; 1172 data = mos7720_port->shadowLCR & ~UART_LCR_SBC;
1173 1173
1174 mos7720_port->shadowLCR = data; 1174 mos7720_port->shadowLCR = data;
1175 write_mos_reg(serial, port->number - port->serial->minor, 1175 write_mos_reg(serial, port->port_number, LCR, mos7720_port->shadowLCR);
1176 LCR, mos7720_port->shadowLCR);
1177} 1176}
1178 1177
1179/* 1178/*
@@ -1304,8 +1303,8 @@ static void mos7720_throttle(struct tty_struct *tty)
1304 /* if we are implementing RTS/CTS, toggle that line */ 1303 /* if we are implementing RTS/CTS, toggle that line */
1305 if (tty->termios.c_cflag & CRTSCTS) { 1304 if (tty->termios.c_cflag & CRTSCTS) {
1306 mos7720_port->shadowMCR &= ~UART_MCR_RTS; 1305 mos7720_port->shadowMCR &= ~UART_MCR_RTS;
1307 write_mos_reg(port->serial, port->number - port->serial->minor, 1306 write_mos_reg(port->serial, port->port_number, MCR,
1308 MCR, mos7720_port->shadowMCR); 1307 mos7720_port->shadowMCR);
1309 if (status != 0) 1308 if (status != 0)
1310 return; 1309 return;
1311 } 1310 }
@@ -1336,8 +1335,8 @@ static void mos7720_unthrottle(struct tty_struct *tty)
1336 /* if we are implementing RTS/CTS, toggle that line */ 1335 /* if we are implementing RTS/CTS, toggle that line */
1337 if (tty->termios.c_cflag & CRTSCTS) { 1336 if (tty->termios.c_cflag & CRTSCTS) {
1338 mos7720_port->shadowMCR |= UART_MCR_RTS; 1337 mos7720_port->shadowMCR |= UART_MCR_RTS;
1339 write_mos_reg(port->serial, port->number - port->serial->minor, 1338 write_mos_reg(port->serial, port->port_number, MCR,
1340 MCR, mos7720_port->shadowMCR); 1339 mos7720_port->shadowMCR);
1341 if (status != 0) 1340 if (status != 0)
1342 return; 1341 return;
1343 } 1342 }
@@ -1361,7 +1360,7 @@ static int set_higher_rates(struct moschip_port *mos7720_port,
1361 * Init Sequence for higher rates 1360 * Init Sequence for higher rates
1362 ***********************************************/ 1361 ***********************************************/
1363 dev_dbg(&port->dev, "Sending Setting Commands ..........\n"); 1362 dev_dbg(&port->dev, "Sending Setting Commands ..........\n");
1364 port_number = port->number - port->serial->minor; 1363 port_number = port->port_number;
1365 1364
1366 write_mos_reg(serial, port_number, IER, 0x00); 1365 write_mos_reg(serial, port_number, IER, 0x00);
1367 write_mos_reg(serial, port_number, FCR, 0x00); 1366 write_mos_reg(serial, port_number, FCR, 0x00);
@@ -1487,7 +1486,7 @@ static int send_cmd_write_baud_rate(struct moschip_port *mos7720_port,
1487 port = mos7720_port->port; 1486 port = mos7720_port->port;
1488 serial = port->serial; 1487 serial = port->serial;
1489 1488
1490 number = port->number - port->serial->minor; 1489 number = port->port_number;
1491 dev_dbg(&port->dev, "%s - baud = %d\n", __func__, baudrate); 1490 dev_dbg(&port->dev, "%s - baud = %d\n", __func__, baudrate);
1492 1491
1493 /* Calculate the Divisor */ 1492 /* Calculate the Divisor */
@@ -1538,7 +1537,7 @@ static void change_port_settings(struct tty_struct *tty,
1538 1537
1539 port = mos7720_port->port; 1538 port = mos7720_port->port;
1540 serial = port->serial; 1539 serial = port->serial;
1541 port_number = port->number - port->serial->minor; 1540 port_number = port->port_number;
1542 1541
1543 if (!mos7720_port->open) { 1542 if (!mos7720_port->open) {
1544 dev_dbg(&port->dev, "%s - port not opened\n", __func__); 1543 dev_dbg(&port->dev, "%s - port not opened\n", __func__);
@@ -1731,7 +1730,7 @@ static int get_lsr_info(struct tty_struct *tty,
1731 struct usb_serial_port *port = tty->driver_data; 1730 struct usb_serial_port *port = tty->driver_data;
1732 unsigned int result = 0; 1731 unsigned int result = 0;
1733 unsigned char data = 0; 1732 unsigned char data = 0;
1734 int port_number = port->number - port->serial->minor; 1733 int port_number = port->port_number;
1735 int count; 1734 int count;
1736 1735
1737 count = mos7720_chars_in_buffer(tty); 1736 count = mos7720_chars_in_buffer(tty);
@@ -1793,8 +1792,8 @@ static int mos7720_tiocmset(struct tty_struct *tty,
1793 mcr &= ~UART_MCR_LOOP; 1792 mcr &= ~UART_MCR_LOOP;
1794 1793
1795 mos7720_port->shadowMCR = mcr; 1794 mos7720_port->shadowMCR = mcr;
1796 write_mos_reg(port->serial, port->number - port->serial->minor, 1795 write_mos_reg(port->serial, port->port_number, MCR,
1797 MCR, mos7720_port->shadowMCR); 1796 mos7720_port->shadowMCR);
1798 1797
1799 return 0; 1798 return 0;
1800} 1799}
@@ -1838,8 +1837,8 @@ static int set_modem_info(struct moschip_port *mos7720_port, unsigned int cmd,
1838 } 1837 }
1839 1838
1840 mos7720_port->shadowMCR = mcr; 1839 mos7720_port->shadowMCR = mcr;
1841 write_mos_reg(port->serial, port->number - port->serial->minor, 1840 write_mos_reg(port->serial, port->port_number, MCR,
1842 MCR, mos7720_port->shadowMCR); 1841 mos7720_port->shadowMCR);
1843 1842
1844 return 0; 1843 return 0;
1845} 1844}
@@ -1856,7 +1855,7 @@ static int get_serial_info(struct moschip_port *mos7720_port,
1856 1855
1857 tmp.type = PORT_16550A; 1856 tmp.type = PORT_16550A;
1858 tmp.line = mos7720_port->port->serial->minor; 1857 tmp.line = mos7720_port->port->serial->minor;
1859 tmp.port = mos7720_port->port->number; 1858 tmp.port = mos7720_port->port->port_number;
1860 tmp.irq = 0; 1859 tmp.irq = 0;
1861 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 1860 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ;
1862 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE; 1861 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE;
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c
index 7e998081e1cd..f981b08ff32f 100644
--- a/drivers/usb/serial/mos7840.c
+++ b/drivers/usb/serial/mos7840.c
@@ -303,15 +303,12 @@ static int mos7840_set_uart_reg(struct usb_serial_port *port, __u16 reg,
303 /* For the UART control registers, the application number need 303 /* For the UART control registers, the application number need
304 to be Or'ed */ 304 to be Or'ed */
305 if (port->serial->num_ports == 4) { 305 if (port->serial->num_ports == 4) {
306 val |= (((__u16) port->number - 306 val |= ((__u16)port->port_number + 1) << 8;
307 (__u16) (port->serial->minor)) + 1) << 8;
308 } else { 307 } else {
309 if (((__u16) port->number - (__u16) (port->serial->minor)) == 0) { 308 if (port->port_number == 0) {
310 val |= (((__u16) port->number - 309 val |= ((__u16)port->port_number + 1) << 8;
311 (__u16) (port->serial->minor)) + 1) << 8;
312 } else { 310 } else {
313 val |= (((__u16) port->number - 311 val |= ((__u16)port->port_number + 2) << 8;
314 (__u16) (port->serial->minor)) + 2) << 8;
315 } 312 }
316 } 313 }
317 dev_dbg(&port->dev, "%s application number is %x\n", __func__, val); 314 dev_dbg(&port->dev, "%s application number is %x\n", __func__, val);
@@ -340,16 +337,12 @@ static int mos7840_get_uart_reg(struct usb_serial_port *port, __u16 reg,
340 337
341 /* Wval is same as application number */ 338 /* Wval is same as application number */
342 if (port->serial->num_ports == 4) { 339 if (port->serial->num_ports == 4) {
343 Wval = 340 Wval = ((__u16)port->port_number + 1) << 8;
344 (((__u16) port->number - (__u16) (port->serial->minor)) +
345 1) << 8;
346 } else { 341 } else {
347 if (((__u16) port->number - (__u16) (port->serial->minor)) == 0) { 342 if (port->port_number == 0) {
348 Wval = (((__u16) port->number - 343 Wval = ((__u16)port->port_number + 1) << 8;
349 (__u16) (port->serial->minor)) + 1) << 8;
350 } else { 344 } else {
351 Wval = (((__u16) port->number - 345 Wval = ((__u16)port->port_number + 2) << 8;
352 (__u16) (port->serial->minor)) + 2) << 8;
353 } 346 }
354 } 347 }
355 dev_dbg(&port->dev, "%s application number is %x\n", __func__, Wval); 348 dev_dbg(&port->dev, "%s application number is %x\n", __func__, Wval);
@@ -631,9 +624,7 @@ static void mos7840_interrupt_callback(struct urb *urb)
631 624
632 for (i = 0; i < serial->num_ports; i++) { 625 for (i = 0; i < serial->num_ports; i++) {
633 mos7840_port = mos7840_get_port_private(serial->port[i]); 626 mos7840_port = mos7840_get_port_private(serial->port[i]);
634 wval = 627 wval = ((__u16)serial->port[i]->port_number + 1) << 8;
635 (((__u16) serial->port[i]->number -
636 (__u16) (serial->minor)) + 1) << 8;
637 if (mos7840_port->open) { 628 if (mos7840_port->open) {
638 if (sp[i] & 0x01) { 629 if (sp[i] & 0x01) {
639 dev_dbg(&urb->dev->dev, "SP%d No Interrupt !!!\n", i); 630 dev_dbg(&urb->dev->dev, "SP%d No Interrupt !!!\n", i);
@@ -1065,8 +1056,8 @@ static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
1065 * (can't set it up in mos7840_startup as the * 1056 * (can't set it up in mos7840_startup as the *
1066 * structures were not set up at that time.) */ 1057 * structures were not set up at that time.) */
1067 1058
1068 dev_dbg(&port->dev, "port number is %d\n", port->number); 1059 dev_dbg(&port->dev, "port number is %d\n", port->port_number);
1069 dev_dbg(&port->dev, "serial number is %d\n", port->serial->minor); 1060 dev_dbg(&port->dev, "minor number is %d\n", port->serial->minor);
1070 dev_dbg(&port->dev, "Bulkin endpoint is %d\n", port->bulk_in_endpointAddress); 1061 dev_dbg(&port->dev, "Bulkin endpoint is %d\n", port->bulk_in_endpointAddress);
1071 dev_dbg(&port->dev, "BulkOut endpoint is %d\n", port->bulk_out_endpointAddress); 1062 dev_dbg(&port->dev, "BulkOut endpoint is %d\n", port->bulk_out_endpointAddress);
1072 dev_dbg(&port->dev, "Interrupt endpoint is %d\n", port->interrupt_in_endpointAddress); 1063 dev_dbg(&port->dev, "Interrupt endpoint is %d\n", port->interrupt_in_endpointAddress);
@@ -1074,9 +1065,7 @@ static int mos7840_open(struct tty_struct *tty, struct usb_serial_port *port)
1074 mos7840_port->read_urb = port->read_urb; 1065 mos7840_port->read_urb = port->read_urb;
1075 1066
1076 /* set up our bulk in urb */ 1067 /* set up our bulk in urb */
1077 if ((serial->num_ports == 2) 1068 if ((serial->num_ports == 2) && (((__u16)port->port_number % 2) != 0)) {
1078 && ((((__u16)port->number -
1079 (__u16)(port->serial->minor)) % 2) != 0)) {
1080 usb_fill_bulk_urb(mos7840_port->read_urb, 1069 usb_fill_bulk_urb(mos7840_port->read_urb,
1081 serial->dev, 1070 serial->dev,
1082 usb_rcvbulkpipe(serial->dev, 1071 usb_rcvbulkpipe(serial->dev,
@@ -1199,7 +1188,7 @@ static void mos7840_close(struct usb_serial_port *port)
1199 mos7840_port->read_urb_busy = false; 1188 mos7840_port->read_urb_busy = false;
1200 1189
1201 port0->open_ports--; 1190 port0->open_ports--;
1202 dev_dbg(&port->dev, "%s in close%d:in port%d\n", __func__, port0->open_ports, port->number); 1191 dev_dbg(&port->dev, "%s in close%d\n", __func__, port0->open_ports);
1203 if (port0->open_ports == 0) { 1192 if (port0->open_ports == 0) {
1204 if (serial->port[0]->interrupt_in_urb) { 1193 if (serial->port[0]->interrupt_in_urb) {
1205 dev_dbg(&port->dev, "Shutdown interrupt_in_urb\n"); 1194 dev_dbg(&port->dev, "Shutdown interrupt_in_urb\n");
@@ -1435,9 +1424,7 @@ static int mos7840_write(struct tty_struct *tty, struct usb_serial_port *port,
1435 memcpy(urb->transfer_buffer, current_position, transfer_size); 1424 memcpy(urb->transfer_buffer, current_position, transfer_size);
1436 1425
1437 /* fill urb with data and submit */ 1426 /* fill urb with data and submit */
1438 if ((serial->num_ports == 2) 1427 if ((serial->num_ports == 2) && (((__u16)port->port_number % 2) != 0)) {
1439 && ((((__u16)port->number -
1440 (__u16)(port->serial->minor)) % 2) != 0)) {
1441 usb_fill_bulk_urb(urb, 1428 usb_fill_bulk_urb(urb,
1442 serial->dev, 1429 serial->dev,
1443 usb_sndbulkpipe(serial->dev, 1430 usb_sndbulkpipe(serial->dev,
@@ -1732,10 +1719,9 @@ static int mos7840_send_cmd_write_baud_rate(struct moschip_port *mos7840_port,
1732 if (mos7840_serial_paranoia_check(port->serial, __func__)) 1719 if (mos7840_serial_paranoia_check(port->serial, __func__))
1733 return -1; 1720 return -1;
1734 1721
1735 number = mos7840_port->port->number - mos7840_port->port->serial->minor; 1722 number = mos7840_port->port->port_number;
1736 1723
1737 dev_dbg(&port->dev, "%s - port = %d, baud = %d\n", __func__, 1724 dev_dbg(&port->dev, "%s - baud = %d\n", __func__, baudRate);
1738 mos7840_port->port->number, baudRate);
1739 /* reset clk_uart_sel in spregOffset */ 1725 /* reset clk_uart_sel in spregOffset */
1740 if (baudRate > 115200) { 1726 if (baudRate > 115200) {
1741#ifdef HW_flow_control 1727#ifdef HW_flow_control
@@ -2016,7 +2002,6 @@ static void mos7840_set_termios(struct tty_struct *tty,
2016 tty->termios.c_cflag, RELEVANT_IFLAG(tty->termios.c_iflag)); 2002 tty->termios.c_cflag, RELEVANT_IFLAG(tty->termios.c_iflag));
2017 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__, 2003 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__,
2018 old_termios->c_cflag, RELEVANT_IFLAG(old_termios->c_iflag)); 2004 old_termios->c_cflag, RELEVANT_IFLAG(old_termios->c_iflag));
2019 dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number);
2020 2005
2021 /* change the port settings to the new ones specified */ 2006 /* change the port settings to the new ones specified */
2022 2007
@@ -2084,7 +2069,7 @@ static int mos7840_get_serial_info(struct moschip_port *mos7840_port,
2084 2069
2085 tmp.type = PORT_16550A; 2070 tmp.type = PORT_16550A;
2086 tmp.line = mos7840_port->port->serial->minor; 2071 tmp.line = mos7840_port->port->serial->minor;
2087 tmp.port = mos7840_port->port->number; 2072 tmp.port = mos7840_port->port->port_number;
2088 tmp.irq = 0; 2073 tmp.irq = 0;
2089 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 2074 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ;
2090 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE; 2075 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE;
@@ -2240,7 +2225,7 @@ static int mos7840_port_probe(struct usb_serial_port *port)
2240 /* we set up the pointers to the endpoints in the mos7840_open * 2225 /* we set up the pointers to the endpoints in the mos7840_open *
2241 * function, as the structures aren't created yet. */ 2226 * function, as the structures aren't created yet. */
2242 2227
2243 pnum = port->number - serial->minor; 2228 pnum = port->port_number;
2244 2229
2245 dev_dbg(&port->dev, "mos7840_startup: configuring port %d\n", pnum); 2230 dev_dbg(&port->dev, "mos7840_startup: configuring port %d\n", pnum);
2246 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL); 2231 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL);
@@ -2261,7 +2246,6 @@ static int mos7840_port_probe(struct usb_serial_port *port)
2261 * usb-serial.c:get_free_serial() and cannot therefore be used 2246 * usb-serial.c:get_free_serial() and cannot therefore be used
2262 * to index device instances */ 2247 * to index device instances */
2263 mos7840_port->port_num = pnum + 1; 2248 mos7840_port->port_num = pnum + 1;
2264 dev_dbg(&port->dev, "port->number = %d\n", port->number);
2265 dev_dbg(&port->dev, "port->serial->minor = %d\n", port->serial->minor); 2249 dev_dbg(&port->dev, "port->serial->minor = %d\n", port->serial->minor);
2266 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num); 2250 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num);
2267 dev_dbg(&port->dev, "serial->minor = %d\n", serial->minor); 2251 dev_dbg(&port->dev, "serial->minor = %d\n", serial->minor);
diff --git a/drivers/usb/serial/opticon.c b/drivers/usb/serial/opticon.c
index 5f4b0cd0f6e9..6e1ee85e44f2 100644
--- a/drivers/usb/serial/opticon.c
+++ b/drivers/usb/serial/opticon.c
@@ -367,7 +367,7 @@ static int opticon_ioctl(struct tty_struct *tty,
367{ 367{
368 struct usb_serial_port *port = tty->driver_data; 368 struct usb_serial_port *port = tty->driver_data;
369 369
370 dev_dbg(&port->dev, "%s - port %d, cmd = 0x%x\n", __func__, port->number, cmd); 370 dev_dbg(&port->dev, "%s - cmd = 0x%x\n", __func__, cmd);
371 371
372 switch (cmd) { 372 switch (cmd) {
373 case TIOCGSERIAL: 373 case TIOCGSERIAL:
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index 97c1e6a9dd4f..966c20c9ced4 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -640,7 +640,7 @@ static int pl2303_ioctl(struct tty_struct *tty,
640 memset(&ser, 0, sizeof ser); 640 memset(&ser, 0, sizeof ser);
641 ser.type = PORT_16654; 641 ser.type = PORT_16654;
642 ser.line = port->serial->minor; 642 ser.line = port->serial->minor;
643 ser.port = port->number; 643 ser.port = port->port_number;
644 ser.baud_base = 460800; 644 ser.baud_base = 460800;
645 645
646 if (copy_to_user((void __user *)arg, &ser, sizeof ser)) 646 if (copy_to_user((void __user *)arg, &ser, sizeof ser))
diff --git a/drivers/usb/serial/quatech2.c b/drivers/usb/serial/quatech2.c
index b0a9478a8c9e..f2ca7d80c8a0 100644
--- a/drivers/usb/serial/quatech2.c
+++ b/drivers/usb/serial/quatech2.c
@@ -343,7 +343,7 @@ static int qt2_open(struct tty_struct *tty, struct usb_serial_port *port)
343 int status; 343 int status;
344 unsigned long flags; 344 unsigned long flags;
345 345
346 device_port = (u16) (port->number - port->serial->minor); 346 device_port = port->port_number;
347 347
348 serial = port->serial; 348 serial = port->serial;
349 349
@@ -388,9 +388,8 @@ static int qt2_open(struct tty_struct *tty, struct usb_serial_port *port)
388 status = qt2_set_port_config(serial->dev, device_port, 388 status = qt2_set_port_config(serial->dev, device_port,
389 DEFAULT_BAUD_RATE, UART_LCR_WLEN8); 389 DEFAULT_BAUD_RATE, UART_LCR_WLEN8);
390 if (status < 0) { 390 if (status < 0) {
391 dev_err(&port->dev, 391 dev_err(&port->dev, "%s - initial setup failed (%i)\n",
392 "%s - initial setup failed for port %i (%i)\n", 392 __func__, device_port);
393 __func__, port->number, device_port);
394 return status; 393 return status;
395 } 394 }
396 395
diff --git a/drivers/usb/serial/sierra.c b/drivers/usb/serial/sierra.c
index 8894665cd610..de958c5b52e3 100644
--- a/drivers/usb/serial/sierra.c
+++ b/drivers/usb/serial/sierra.c
@@ -914,7 +914,7 @@ static int sierra_port_probe(struct usb_serial_port *port)
914 /* This is really the usb-serial port number of the interface 914 /* This is really the usb-serial port number of the interface
915 * rather than the interface number. 915 * rather than the interface number.
916 */ 916 */
917 ifnum = port->number - serial->minor; 917 ifnum = port->port_number;
918 himemoryp = &typeA_interface_list; 918 himemoryp = &typeA_interface_list;
919 } 919 }
920 920
diff --git a/drivers/usb/serial/ti_usb_3410_5052.c b/drivers/usb/serial/ti_usb_3410_5052.c
index c92c5ed4e580..07e5c9bec48a 100644
--- a/drivers/usb/serial/ti_usb_3410_5052.c
+++ b/drivers/usb/serial/ti_usb_3410_5052.c
@@ -476,7 +476,7 @@ static int ti_open(struct tty_struct *tty, struct usb_serial_port *port)
476 if (mutex_lock_interruptible(&tdev->td_open_close_lock)) 476 if (mutex_lock_interruptible(&tdev->td_open_close_lock))
477 return -ERESTARTSYS; 477 return -ERESTARTSYS;
478 478
479 port_number = port->number - port->serial->minor; 479 port_number = port->port_number;
480 480
481 tport->tp_msr = 0; 481 tport->tp_msr = 0;
482 tport->tp_shadow_mcr |= (TI_MCR_RTS | TI_MCR_DTR); 482 tport->tp_shadow_mcr |= (TI_MCR_RTS | TI_MCR_DTR);
@@ -618,7 +618,7 @@ static void ti_close(struct usb_serial_port *port)
618 kfifo_reset_out(&tport->write_fifo); 618 kfifo_reset_out(&tport->write_fifo);
619 spin_unlock_irqrestore(&tport->tp_lock, flags); 619 spin_unlock_irqrestore(&tport->tp_lock, flags);
620 620
621 port_number = port->number - port->serial->minor; 621 port_number = port->port_number;
622 622
623 dev_dbg(&port->dev, "%s - sending TI_CLOSE_PORT\n", __func__); 623 dev_dbg(&port->dev, "%s - sending TI_CLOSE_PORT\n", __func__);
624 status = ti_command_out_sync(tdev, TI_CLOSE_PORT, 624 status = ti_command_out_sync(tdev, TI_CLOSE_PORT,
@@ -776,7 +776,7 @@ static void ti_set_termios(struct tty_struct *tty,
776 tcflag_t cflag, iflag; 776 tcflag_t cflag, iflag;
777 int baud; 777 int baud;
778 int status; 778 int status;
779 int port_number = port->number - port->serial->minor; 779 int port_number = port->port_number;
780 unsigned int mcr; 780 unsigned int mcr;
781 781
782 cflag = tty->termios.c_cflag; 782 cflag = tty->termios.c_cflag;
@@ -1262,7 +1262,7 @@ static int ti_get_lsr(struct ti_port *tport, u8 *lsr)
1262 int size, status; 1262 int size, status;
1263 struct ti_device *tdev = tport->tp_tdev; 1263 struct ti_device *tdev = tport->tp_tdev;
1264 struct usb_serial_port *port = tport->tp_port; 1264 struct usb_serial_port *port = tport->tp_port;
1265 int port_number = port->number - port->serial->minor; 1265 int port_number = port->port_number;
1266 struct ti_port_status *data; 1266 struct ti_port_status *data;
1267 1267
1268 size = sizeof(struct ti_port_status); 1268 size = sizeof(struct ti_port_status);
@@ -1309,7 +1309,7 @@ static int ti_get_serial_info(struct ti_port *tport,
1309 1309
1310 ret_serial.type = PORT_16550A; 1310 ret_serial.type = PORT_16550A;
1311 ret_serial.line = port->serial->minor; 1311 ret_serial.line = port->serial->minor;
1312 ret_serial.port = port->number - port->serial->minor; 1312 ret_serial.port = port->port_number;
1313 ret_serial.flags = tport->tp_flags; 1313 ret_serial.flags = tport->tp_flags;
1314 ret_serial.xmit_fifo_size = TI_WRITE_BUF_SIZE; 1314 ret_serial.xmit_fifo_size = TI_WRITE_BUF_SIZE;
1315 ret_serial.baud_base = tport->tp_tdev->td_is_3410 ? 921600 : 460800; 1315 ret_serial.baud_base = tport->tp_tdev->td_is_3410 ? 921600 : 460800;
diff --git a/drivers/usb/serial/usb-serial.c b/drivers/usb/serial/usb-serial.c
index 5f6b1ff9d29e..a47fa715aaba 100644
--- a/drivers/usb/serial/usb-serial.c
+++ b/drivers/usb/serial/usb-serial.c
@@ -105,9 +105,10 @@ static struct usb_serial *get_free_serial(struct usb_serial *serial,
105 *minor = i; 105 *minor = i;
106 j = 0; 106 j = 0;
107 dev_dbg(&serial->interface->dev, "%s - minor base = %d\n", __func__, *minor); 107 dev_dbg(&serial->interface->dev, "%s - minor base = %d\n", __func__, *minor);
108 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i) { 108 for (i = *minor; (i < (*minor + num_ports)) && (i < SERIAL_TTY_MINORS); ++i, ++j) {
109 serial_table[i] = serial; 109 serial_table[i] = serial;
110 serial->port[j++]->number = i; 110 serial->port[j]->minor = i;
111 serial->port[j]->port_number = i - *minor;
111 } 112 }
112 mutex_unlock(&table_lock); 113 mutex_unlock(&table_lock);
113 return serial; 114 return serial;
@@ -1048,7 +1049,7 @@ static int usb_serial_probe(struct usb_interface *interface,
1048 /* register all of the individual ports with the driver core */ 1049 /* register all of the individual ports with the driver core */
1049 for (i = 0; i < num_ports; ++i) { 1050 for (i = 0; i < num_ports; ++i) {
1050 port = serial->port[i]; 1051 port = serial->port[i];
1051 dev_set_name(&port->dev, "ttyUSB%d", port->number); 1052 dev_set_name(&port->dev, "ttyUSB%d", port->minor);
1052 dev_dbg(ddev, "registering %s", dev_name(&port->dev)); 1053 dev_dbg(ddev, "registering %s", dev_name(&port->dev));
1053 device_enable_async_suspend(&port->dev); 1054 device_enable_async_suspend(&port->dev);
1054 1055
diff --git a/drivers/usb/serial/usb_wwan.c b/drivers/usb/serial/usb_wwan.c
index ece326ef63a0..eacc27dc4657 100644
--- a/drivers/usb/serial/usb_wwan.c
+++ b/drivers/usb/serial/usb_wwan.c
@@ -125,7 +125,7 @@ static int get_serial_info(struct usb_serial_port *port,
125 125
126 memset(&tmp, 0, sizeof(tmp)); 126 memset(&tmp, 0, sizeof(tmp));
127 tmp.line = port->serial->minor; 127 tmp.line = port->serial->minor;
128 tmp.port = port->number; 128 tmp.port = port->port_number;
129 tmp.baud_base = tty_get_baud_rate(port->port.tty); 129 tmp.baud_base = tty_get_baud_rate(port->port.tty);
130 tmp.close_delay = port->port.close_delay / 10; 130 tmp.close_delay = port->port.close_delay / 10;
131 tmp.closing_wait = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ? 131 tmp.closing_wait = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
diff --git a/drivers/usb/serial/whiteheat.c b/drivers/usb/serial/whiteheat.c
index 347caad47a12..7eb34cd6b579 100644
--- a/drivers/usb/serial/whiteheat.c
+++ b/drivers/usb/serial/whiteheat.c
@@ -462,7 +462,7 @@ static int whiteheat_ioctl(struct tty_struct *tty,
462 memset(&serstruct, 0, sizeof(serstruct)); 462 memset(&serstruct, 0, sizeof(serstruct));
463 serstruct.type = PORT_16654; 463 serstruct.type = PORT_16654;
464 serstruct.line = port->serial->minor; 464 serstruct.line = port->serial->minor;
465 serstruct.port = port->number; 465 serstruct.port = port->port_number;
466 serstruct.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 466 serstruct.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ;
467 serstruct.xmit_fifo_size = kfifo_size(&port->write_fifo); 467 serstruct.xmit_fifo_size = kfifo_size(&port->write_fifo);
468 serstruct.custom_divisor = 0; 468 serstruct.custom_divisor = 0;
@@ -626,7 +626,7 @@ static int firm_open(struct usb_serial_port *port)
626{ 626{
627 struct whiteheat_simple open_command; 627 struct whiteheat_simple open_command;
628 628
629 open_command.port = port->number - port->serial->minor + 1; 629 open_command.port = port->port_number + 1;
630 return firm_send_command(port, WHITEHEAT_OPEN, 630 return firm_send_command(port, WHITEHEAT_OPEN,
631 (__u8 *)&open_command, sizeof(open_command)); 631 (__u8 *)&open_command, sizeof(open_command));
632} 632}
@@ -636,7 +636,7 @@ static int firm_close(struct usb_serial_port *port)
636{ 636{
637 struct whiteheat_simple close_command; 637 struct whiteheat_simple close_command;
638 638
639 close_command.port = port->number - port->serial->minor + 1; 639 close_command.port = port->port_number + 1;
640 return firm_send_command(port, WHITEHEAT_CLOSE, 640 return firm_send_command(port, WHITEHEAT_CLOSE,
641 (__u8 *)&close_command, sizeof(close_command)); 641 (__u8 *)&close_command, sizeof(close_command));
642} 642}
@@ -649,7 +649,7 @@ static void firm_setup_port(struct tty_struct *tty)
649 struct whiteheat_port_settings port_settings; 649 struct whiteheat_port_settings port_settings;
650 unsigned int cflag = tty->termios.c_cflag; 650 unsigned int cflag = tty->termios.c_cflag;
651 651
652 port_settings.port = port->number - port->serial->minor + 1; 652 port_settings.port = port->port_number + 1;
653 653
654 /* get the byte size */ 654 /* get the byte size */
655 switch (cflag & CSIZE) { 655 switch (cflag & CSIZE) {
@@ -726,7 +726,7 @@ static int firm_set_rts(struct usb_serial_port *port, __u8 onoff)
726{ 726{
727 struct whiteheat_set_rdb rts_command; 727 struct whiteheat_set_rdb rts_command;
728 728
729 rts_command.port = port->number - port->serial->minor + 1; 729 rts_command.port = port->port_number + 1;
730 rts_command.state = onoff; 730 rts_command.state = onoff;
731 return firm_send_command(port, WHITEHEAT_SET_RTS, 731 return firm_send_command(port, WHITEHEAT_SET_RTS,
732 (__u8 *)&rts_command, sizeof(rts_command)); 732 (__u8 *)&rts_command, sizeof(rts_command));
@@ -737,7 +737,7 @@ static int firm_set_dtr(struct usb_serial_port *port, __u8 onoff)
737{ 737{
738 struct whiteheat_set_rdb dtr_command; 738 struct whiteheat_set_rdb dtr_command;
739 739
740 dtr_command.port = port->number - port->serial->minor + 1; 740 dtr_command.port = port->port_number + 1;
741 dtr_command.state = onoff; 741 dtr_command.state = onoff;
742 return firm_send_command(port, WHITEHEAT_SET_DTR, 742 return firm_send_command(port, WHITEHEAT_SET_DTR,
743 (__u8 *)&dtr_command, sizeof(dtr_command)); 743 (__u8 *)&dtr_command, sizeof(dtr_command));
@@ -748,7 +748,7 @@ static int firm_set_break(struct usb_serial_port *port, __u8 onoff)
748{ 748{
749 struct whiteheat_set_rdb break_command; 749 struct whiteheat_set_rdb break_command;
750 750
751 break_command.port = port->number - port->serial->minor + 1; 751 break_command.port = port->port_number + 1;
752 break_command.state = onoff; 752 break_command.state = onoff;
753 return firm_send_command(port, WHITEHEAT_SET_BREAK, 753 return firm_send_command(port, WHITEHEAT_SET_BREAK,
754 (__u8 *)&break_command, sizeof(break_command)); 754 (__u8 *)&break_command, sizeof(break_command));
@@ -759,7 +759,7 @@ static int firm_purge(struct usb_serial_port *port, __u8 rxtx)
759{ 759{
760 struct whiteheat_purge purge_command; 760 struct whiteheat_purge purge_command;
761 761
762 purge_command.port = port->number - port->serial->minor + 1; 762 purge_command.port = port->port_number + 1;
763 purge_command.what = rxtx; 763 purge_command.what = rxtx;
764 return firm_send_command(port, WHITEHEAT_PURGE, 764 return firm_send_command(port, WHITEHEAT_PURGE,
765 (__u8 *)&purge_command, sizeof(purge_command)); 765 (__u8 *)&purge_command, sizeof(purge_command));
@@ -770,7 +770,7 @@ static int firm_get_dtr_rts(struct usb_serial_port *port)
770{ 770{
771 struct whiteheat_simple get_dr_command; 771 struct whiteheat_simple get_dr_command;
772 772
773 get_dr_command.port = port->number - port->serial->minor + 1; 773 get_dr_command.port = port->port_number + 1;
774 return firm_send_command(port, WHITEHEAT_GET_DTR_RTS, 774 return firm_send_command(port, WHITEHEAT_GET_DTR_RTS,
775 (__u8 *)&get_dr_command, sizeof(get_dr_command)); 775 (__u8 *)&get_dr_command, sizeof(get_dr_command));
776} 776}
@@ -780,7 +780,7 @@ static int firm_report_tx_done(struct usb_serial_port *port)
780{ 780{
781 struct whiteheat_simple close_command; 781 struct whiteheat_simple close_command;
782 782
783 close_command.port = port->number - port->serial->minor + 1; 783 close_command.port = port->port_number + 1;
784 return firm_send_command(port, WHITEHEAT_REPORT_TX_DONE, 784 return firm_send_command(port, WHITEHEAT_REPORT_TX_DONE,
785 (__u8 *)&close_command, sizeof(close_command)); 785 (__u8 *)&close_command, sizeof(close_command));
786} 786}