Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

USB: serial: ports: add minor and port number

The usb_serial_port structure had the number field, which was the minor
number for the port, which almost no one really cared about. They
really wanted the number of the port within the device, which you had to
subtract from the minor of the parent usb_serial_device structure. To
clean this up, provide the real minor number of the port, and the number
of the port within the serial device separately, as these numbers might
not be related in the future.

Bonus is that this cleans up a lot of logic in the drivers, and saves
lines overall.

Tested-by: Tobias Winter <tobias@linuxdingsda.de>
Reviewed-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

--
drivers/staging/serqt_usb2/serqt_usb2.c | 21 +++--------
drivers/usb/serial/ark3116.c | 2 -
drivers/usb/serial/bus.c | 6 +--
drivers/usb/serial/console.c | 2 -
drivers/usb/serial/cp210x.c | 2 -
drivers/usb/serial/cypress_m8.c | 4 +-
drivers/usb/serial/digi_acceleport.c | 6 ---
drivers/usb/serial/f81232.c | 5 +-
drivers/usb/serial/garmin_gps.c | 6 +--
drivers/usb/serial/io_edgeport.c | 58 ++++++++++++--------------------
drivers/usb/serial/io_ti.c | 21 ++++-------
drivers/usb/serial/keyspan.c | 29 +++++++---------
drivers/usb/serial/metro-usb.c | 4 +-
drivers/usb/serial/mos7720.c | 37 +++++++++-----------
drivers/usb/serial/mos7840.c | 52 +++++++++-------------------
drivers/usb/serial/opticon.c | 2 -
drivers/usb/serial/pl2303.c | 2 -
drivers/usb/serial/quatech2.c | 7 +--
drivers/usb/serial/sierra.c | 2 -
drivers/usb/serial/ti_usb_3410_5052.c | 10 ++---
drivers/usb/serial/usb-serial.c | 7 ++-
drivers/usb/serial/usb_wwan.c | 2 -
drivers/usb/serial/whiteheat.c | 20 +++++------
include/linux/usb/serial.h | 6 ++-
24 files changed, 133 insertions(+), 180 deletions(-)

+133 -180
+7 -14
drivers/staging/serqt_usb2/serqt_usb2.c
··· 873 873 result = qt_get_device(serial, &port0->DeviceData); 874 874 875 875 /* Port specific setups */ 876 - result = qt_open_channel(serial, port->number, &ChannelData); 876 + result = qt_open_channel(serial, port->port_number, &ChannelData); 877 877 if (result < 0) { 878 878 dev_dbg(&port->dev, "qt_open_channel failed\n"); 879 879 return result; ··· 888 888 (SERIAL_MSR_CTS | SERIAL_MSR_DSR | SERIAL_MSR_RI | SERIAL_MSR_CD); 889 889 890 890 /* Set Baud rate to default and turn off (default)flow control here */ 891 - result = qt_setuart(serial, port->number, DEFAULT_DIVISOR, DEFAULT_LCR); 891 + result = qt_setuart(serial, port->port_number, DEFAULT_DIVISOR, DEFAULT_LCR); 892 892 if (result < 0) { 893 893 dev_dbg(&port->dev, "qt_setuart failed\n"); 894 894 return result; ··· 906 906 qt_submit_urb_from_open(serial, port); 907 907 } 908 908 909 - dev_dbg(&port->dev, "port number is %d\n", port->number); 910 909 dev_dbg(&port->dev, "serial number is %d\n", port->serial->minor); 911 910 dev_dbg(&port->dev, 912 911 "Bulkin endpoint is %d\n", port->bulk_in_endpointAddress); ··· 1021 1022 /* Close uart channel */ 1022 1023 status = qt_close_channel(serial, index); 1023 1024 if (status < 0) 1024 - dev_dbg(&port->dev, 1025 - "%s - port %d qt_close_channel failed.\n", 1026 - __func__, port->number); 1025 + dev_dbg(&port->dev, "%s - qt_close_channel failed.\n", __func__); 1027 1026 1028 1027 port0->open_ports--; 1029 1028 1030 - dev_dbg(&port->dev, "qt_num_open_ports in close%d:in port%d\n", 1031 - port0->open_ports, port->number); 1029 + dev_dbg(&port->dev, "qt_num_open_ports in close%d\n", port0->open_ports); 1032 1030 1033 1031 if (port0->open_ports == 0) { 1034 1032 if (serial->port[0]->interrupt_in_urb) { ··· 1165 1169 return 0; 1166 1170 } 1167 1171 1168 - dev_dbg(&port->dev, "%s -No ioctl for that one. port = %d\n", 1169 - __func__, port->number); 1172 + dev_dbg(&port->dev, "%s -No ioctl for that one.\n", __func__); 1170 1173 return -ENOIOCTLCMD; 1171 1174 } 1172 1175 ··· 1240 1245 1241 1246 /* Now determine flow control */ 1242 1247 if (cflag & CRTSCTS) { 1243 - dev_dbg(&port->dev, "%s - Enabling HW flow control port %d\n", 1244 - __func__, port->number); 1248 + dev_dbg(&port->dev, "%s - Enabling HW flow control\n", __func__); 1245 1249 1246 1250 /* Enable RTS/CTS flow control */ 1247 1251 status = BoxSetHW_FlowCtrl(port->serial, index, 1); ··· 1252 1258 } else { 1253 1259 /* Disable RTS/CTS flow control */ 1254 1260 dev_dbg(&port->dev, 1255 - "%s - disabling HW flow control port %d\n", 1256 - __func__, port->number); 1261 + "%s - disabling HW flow control\n", __func__); 1257 1262 1258 1263 status = BoxSetHW_FlowCtrl(port->serial, index, 0); 1259 1264 if (status < 0) {
+1 -1
drivers/usb/serial/ark3116.c
··· 414 414 memset(&serstruct, 0, sizeof(serstruct)); 415 415 serstruct.type = PORT_16654; 416 416 serstruct.line = port->serial->minor; 417 - serstruct.port = port->number; 417 + serstruct.port = port->port_number; 418 418 serstruct.custom_divisor = 0; 419 419 serstruct.baud_base = 460800; 420 420
+3 -3
drivers/usb/serial/bus.c
··· 43 43 { 44 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 49 49 static DEVICE_ATTR(port_number, S_IRUGO, show_port_number, NULL); ··· 80 80 goto exit_with_autopm; 81 81 } 82 82 83 - minor = port->number; 83 + minor = port->minor; 84 84 tty_register_device(usb_serial_tty_driver, minor, dev); 85 85 dev_info(&port->serial->dev->dev, 86 86 "%s converter now attached to ttyUSB%d\n", ··· 106 106 /* make sure suspend/resume doesn't race against port_remove */ 107 107 usb_autopm_get_interface(port->serial->interface); 108 108 109 - minor = port->number; 109 + minor = port->minor; 110 110 tty_unregister_device(usb_serial_tty_driver, minor); 111 111 112 112 device_remove_file(&port->dev, &dev_attr_port_number);
+1 -1
drivers/usb/serial/console.c
··· 210 210 if (count == 0) 211 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 215 if (!port->port.console) { 216 216 pr_debug("%s - port not opened\n", __func__);
-2
drivers/usb/serial/cp210x.c
··· 666 666 unsigned int bits; 667 667 unsigned int modem_ctl[4]; 668 668 669 - dev_dbg(dev, "%s - port %d\n", __func__, port->number); 670 - 671 669 if (!tty) 672 670 return; 673 671
+2 -2
drivers/usb/serial/cypress_m8.c
··· 435 435 spin_unlock_irqrestore(&priv->lock, flags); 436 436 437 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 667 { 668 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 672 /* line control commands, which need to be executed immediately, 673 673 are not put into the buffer for obvious reasons.
+1 -5
drivers/usb/serial/digi_acceleport.c
··· 1304 1304 1305 1305 static int digi_port_probe(struct usb_serial_port *port) 1306 1306 { 1307 - unsigned port_num; 1308 - 1309 - port_num = port->number - port->serial->minor; 1310 - 1311 - return digi_port_init(port, port_num); 1307 + return digi_port_init(port, port->port_number); 1312 1308 } 1313 1309 1314 1310 static int digi_port_remove(struct usb_serial_port *port)
+2 -3
drivers/usb/serial/f81232.c
··· 288 288 struct serial_struct ser; 289 289 struct usb_serial_port *port = tty->driver_data; 290 290 291 - dev_dbg(&port->dev, "%s (%d) cmd = 0x%04x\n", __func__, 292 - port->number, cmd); 291 + dev_dbg(&port->dev, "%s cmd = 0x%04x\n", __func__, cmd); 293 292 294 293 switch (cmd) { 295 294 case TIOCGSERIAL: 296 295 memset(&ser, 0, sizeof ser); 297 296 ser.type = PORT_16654; 298 297 ser.line = port->serial->minor; 299 - ser.port = port->number; 298 + ser.port = port->port_number; 300 299 ser.baud_base = 460800; 301 300 302 301 if (copy_to_user((void __user *)arg, &ser, sizeof ser))
+3 -3
drivers/usb/serial/garmin_gps.c
··· 948 948 { 949 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", 952 - __func__, port->number, garmin_data_p->mode, 953 - garmin_data_p->state, garmin_data_p->flags); 951 + dev_dbg(&port->dev, "%s - mode=%d state=%d flags=0x%X\n", 952 + __func__, garmin_data_p->mode, garmin_data_p->state, 953 + garmin_data_p->flags); 954 954 955 955 garmin_clear(garmin_data_p); 956 956
+23 -35
drivers/usb/serial/io_edgeport.c
··· 915 915 return -ENOMEM; 916 916 } 917 917 918 - dev_dbg(dev, "%s(%d) - Initialize TX fifo to %d bytes\n", 919 - __func__, port->number, edge_port->maxTxCredits); 918 + dev_dbg(dev, "%s - Initialize TX fifo to %d bytes\n", 919 + __func__, edge_port->maxTxCredits); 920 920 921 921 return 0; 922 922 } ··· 1122 1122 copySize = min((unsigned int)count, 1123 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", 1126 - __func__, port->number, count, 1127 - edge_port->txCredits - fifo->count, copySize); 1125 + dev_dbg(&port->dev, "%s of %d byte(s) Fifo room %d -- will copy %d bytes\n", 1126 + __func__, count, edge_port->txCredits - fifo->count, copySize); 1128 1127 1129 1128 /* catch writes of 0 bytes which the tty driver likes to give us, 1130 1129 and when txCredits is empty */ ··· 1215 1216 if (edge_port->write_in_progress || 1216 1217 !edge_port->open || 1217 1218 (fifo->count == 0)) { 1218 - dev_dbg(dev, "%s(%d) EXIT - fifo %d, PendingWrite = %d\n", 1219 - __func__, edge_port->port->number, 1220 - fifo->count, edge_port->write_in_progress); 1219 + dev_dbg(dev, "%s EXIT - fifo %d, PendingWrite = %d\n", 1220 + __func__, fifo->count, edge_port->write_in_progress); 1221 1221 goto exit_send; 1222 1222 } 1223 1223 ··· 1228 1230 * it's better to wait for more credits so we can do a larger write. 1229 1231 */ 1230 1232 if (edge_port->txCredits < EDGE_FW_GET_TX_CREDITS_SEND_THRESHOLD(edge_port->maxTxCredits, EDGE_FW_BULK_MAX_PACKET_SIZE)) { 1231 - dev_dbg(dev, "%s(%d) Not enough credit - fifo %d TxCredit %d\n", 1232 - __func__, edge_port->port->number, fifo->count, 1233 - edge_port->txCredits); 1233 + dev_dbg(dev, "%s Not enough credit - fifo %d TxCredit %d\n", 1234 + __func__, fifo->count, edge_port->txCredits); 1234 1235 goto exit_send; 1235 1236 } 1236 1237 ··· 1253 1256 edge_port->write_in_progress = false; 1254 1257 goto exit_send; 1255 1258 } 1256 - buffer[0] = IOSP_BUILD_DATA_HDR1(edge_port->port->number 1257 - - edge_port->port->serial->minor, count); 1258 - buffer[1] = IOSP_BUILD_DATA_HDR2(edge_port->port->number 1259 - - edge_port->port->serial->minor, count); 1259 + buffer[0] = IOSP_BUILD_DATA_HDR1(edge_port->port->port_number, count); 1260 + buffer[1] = IOSP_BUILD_DATA_HDR2(edge_port->port->port_number, count); 1260 1261 1261 1262 /* now copy our data */ 1262 1263 bytesleft = fifo->size - fifo->tail; ··· 1372 1377 edge_port->txfifo.count; 1373 1378 spin_unlock_irqrestore(&edge_port->ep_lock, flags); 1374 1379 if (num_chars) { 1375 - dev_dbg(&port->dev, "%s(port %d) - returns %d\n", __func__, 1376 - port->number, num_chars); 1380 + dev_dbg(&port->dev, "%s - returns %d\n", __func__, num_chars); 1377 1381 } 1378 1382 1379 1383 return num_chars; ··· 1570 1576 1571 1577 tmp.type = PORT_16550A; 1572 1578 tmp.line = edge_port->port->serial->minor; 1573 - tmp.port = edge_port->port->number; 1579 + tmp.port = edge_port->port->port_number; 1574 1580 tmp.irq = 0; 1575 1581 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 1576 1582 tmp.xmit_fifo_size = edge_port->maxTxCredits; ··· 1595 1601 DEFINE_WAIT(wait); 1596 1602 struct edgeport_port *edge_port = usb_get_serial_port_data(port); 1597 1603 1598 - dev_dbg(&port->dev, "%s - port %d, cmd = 0x%x\n", __func__, port->number, cmd); 1604 + dev_dbg(&port->dev, "%s - cmd = 0x%x\n", __func__, cmd); 1599 1605 1600 1606 switch (cmd) { 1601 1607 case TIOCSERGETLSR: 1602 - dev_dbg(&port->dev, "%s (%d) TIOCSERGETLSR\n", __func__, port->number); 1608 + dev_dbg(&port->dev, "%s TIOCSERGETLSR\n", __func__); 1603 1609 return get_lsr_info(edge_port, (unsigned int __user *) arg); 1604 1610 1605 1611 case TIOCGSERIAL: 1606 - dev_dbg(&port->dev, "%s (%d) TIOCGSERIAL\n", __func__, port->number); 1612 + dev_dbg(&port->dev, "%s TIOCGSERIAL\n", __func__); 1607 1613 return get_serial_info(edge_port, (struct serial_struct __user *) arg); 1608 1614 } 1609 1615 return -ENOIOCTLCMD; ··· 2175 2181 2176 2182 currentCommand = buffer; 2177 2183 2178 - MAKE_CMD_EXT_CMD(&currentCommand, &length, 2179 - edge_port->port->number - edge_port->port->serial->minor, 2180 - command, param); 2184 + MAKE_CMD_EXT_CMD(&currentCommand, &length, edge_port->port->port_number, 2185 + command, param); 2181 2186 2182 2187 status = write_cmd_usb(edge_port, buffer, length); 2183 2188 if (status) { ··· 2259 2266 int cmdLen = 0; 2260 2267 int divisor; 2261 2268 int status; 2262 - unsigned char number = 2263 - edge_port->port->number - edge_port->port->serial->minor; 2269 + u32 number = edge_port->port->port_number; 2264 2270 2265 2271 if (edge_serial->is_epic && 2266 2272 !edge_serial->epic_descriptor.Supports.IOSPSetBaudRate) { 2267 - dev_dbg(dev, "SendCmdWriteBaudRate - NOT Setting baud rate for port = %d, baud = %d\n", 2268 - edge_port->port->number, baudRate); 2273 + dev_dbg(dev, "SendCmdWriteBaudRate - NOT Setting baud rate for port, baud = %d\n", 2274 + baudRate); 2269 2275 return 0; 2270 2276 } 2271 2277 2272 - dev_dbg(dev, "%s - port = %d, baud = %d\n", __func__, 2273 - edge_port->port->number, baudRate); 2278 + dev_dbg(dev, "%s - baud = %d\n", __func__, baudRate); 2274 2279 2275 2280 status = calc_baud_rate_divisor(dev, baudRate, &divisor); 2276 2281 if (status) { ··· 2379 2388 currCmd = cmdBuffer; 2380 2389 2381 2390 /* Build a cmd in the buffer to write the given register */ 2382 - MAKE_CMD_WRITE_REG(&currCmd, &cmdLen, 2383 - edge_port->port->number - edge_port->port->serial->minor, 2384 - regNum, regValue); 2391 + MAKE_CMD_WRITE_REG(&currCmd, &cmdLen, edge_port->port->port_number, 2392 + regNum, regValue); 2385 2393 2386 2394 status = write_cmd_usb(edge_port, cmdBuffer, cmdLen); 2387 2395 if (status) { ··· 2413 2423 __u8 rxFlow; 2414 2424 __u8 txFlow; 2415 2425 int status; 2416 - 2417 - dev_dbg(dev, "%s - port %d\n", __func__, edge_port->port->number); 2418 2426 2419 2427 if (!edge_port->open && 2420 2428 !edge_port->openPending) {
+9 -12
drivers/usb/serial/io_ti.c
··· 259 259 /* clear tx/rx buffers and fifo in TI UMP */ 260 260 static 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 264 dev_dbg(&port->dev, "%s - port %d, mask %x\n", __func__, port_number, mask); 265 265 ··· 1392 1392 1393 1393 static 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 1397 on = !!on; /* 1 or 0 not bitmask */ 1397 1398 return send_cmd(port->port->serial->dev, 1398 1399 feature, (__u8)(UMPM_UART1_PORT + port_number), ··· 1638 1637 return; 1639 1638 } 1640 1639 1641 - port_number = edge_port->port->number - edge_port->port->serial->minor; 1640 + port_number = edge_port->port->port_number; 1642 1641 1643 1642 if (edge_port->lsr_event) { 1644 1643 edge_port->lsr_event = 0; ··· 1731 1730 if (edge_port == NULL) 1732 1731 return -ENODEV; 1733 1732 1734 - port_number = port->number - port->serial->minor; 1733 + port_number = port->port_number; 1735 1734 switch (port_number) { 1736 1735 case 0: 1737 1736 edge_port->uart_base = UMPMEM_BASE_UART1; ··· 1909 1908 spin_unlock_irqrestore(&edge_port->ep_lock, flags); 1910 1909 1911 1910 dev_dbg(&port->dev, "%s - send umpc_close_port\n", __func__); 1912 - port_number = port->number - port->serial->minor; 1911 + port_number = port->port_number; 1913 1912 send_cmd(serial->dev, UMPC_CLOSE_PORT, 1914 1913 (__u8)(UMPM_UART1_PORT + port_number), 0, NULL, 0); 1915 1914 ··· 2138 2137 int baud; 2139 2138 unsigned cflag; 2140 2139 int status; 2141 - int port_number = edge_port->port->number - 2142 - edge_port->port->serial->minor; 2143 - 2144 - dev_dbg(dev, "%s - port %d\n", __func__, edge_port->port->number); 2140 + int port_number = edge_port->port->port_number; 2145 2141 2146 2142 config = kmalloc (sizeof (*config), GFP_KERNEL); 2147 2143 if (!config) { ··· 2282 2284 tty->termios.c_cflag, tty->termios.c_iflag); 2283 2285 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__, 2284 2286 old_termios->c_cflag, old_termios->c_iflag); 2285 - dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); 2286 2287 2287 2288 if (edge_port == NULL) 2288 2289 return; ··· 2364 2367 2365 2368 tmp.type = PORT_16550A; 2366 2369 tmp.line = edge_port->port->serial->minor; 2367 - tmp.port = edge_port->port->number; 2370 + tmp.port = edge_port->port->port_number; 2368 2371 tmp.irq = 0; 2369 2372 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 2370 2373 tmp.xmit_fifo_size = edge_port->port->bulk_out_size; ··· 2383 2386 struct usb_serial_port *port = tty->driver_data; 2384 2387 struct edgeport_port *edge_port = usb_get_serial_port_data(port); 2385 2388 2386 - dev_dbg(&port->dev, "%s - port %d, cmd = 0x%x\n", __func__, port->number, cmd); 2389 + dev_dbg(&port->dev, "%s - cmd = 0x%x\n", __func__, cmd); 2387 2390 2388 2391 switch (cmd) { 2389 2392 case TIOCGSERIAL:
+13 -16
drivers/usb/serial/keyspan.c
··· 152 152 p_priv = usb_get_serial_port_data(port); 153 153 d_details = p_priv->device_details; 154 154 cflag = tty->termios.c_cflag; 155 - device_port = port->number - port->serial->minor; 155 + device_port = port->port_number; 156 156 157 157 /* Baud rate calculation takes baud rate as an integer 158 158 so other rates can be generated if desired. */ ··· 234 234 dataOffset = 1; 235 235 } 236 236 237 - dev_dbg(&port->dev, "%s - for port %d (%d chars), flip=%d\n", 238 - __func__, port->number, count, p_priv->out_flip); 237 + dev_dbg(&port->dev, "%s - %d chars, flip=%d\n", __func__, count, 238 + p_priv->out_flip); 239 239 240 240 for (left = count; left > 0; left -= todo) { 241 241 todo = left; ··· 1041 1041 /* get the terminal config for the setup message now so we don't 1042 1042 * need to send 2 of them */ 1043 1043 1044 - device_port = port->number - port->serial->minor; 1044 + device_port = port->port_number; 1045 1045 if (tty) { 1046 1046 cflag = tty->termios.c_cflag; 1047 1047 /* Baud rate calculation takes baud rate as an integer ··· 1547 1547 s_priv = usb_get_serial_data(serial); 1548 1548 p_priv = usb_get_serial_port_data(port); 1549 1549 d_details = s_priv->device_details; 1550 - device_port = port->number - port->serial->minor; 1550 + device_port = port->port_number; 1551 1551 1552 1552 this_urb = p_priv->outcont_urb; 1553 1553 ··· 1691 1691 s_priv = usb_get_serial_data(serial); 1692 1692 p_priv = usb_get_serial_port_data(port); 1693 1693 d_details = s_priv->device_details; 1694 - device_port = port->number - port->serial->minor; 1694 + device_port = port->port_number; 1695 1695 1696 1696 /* only do something if we have a bulk out endpoint */ 1697 1697 this_urb = p_priv->outcont_urb; ··· 1821 1821 this_urb = s_priv->glocont_urb; 1822 1822 1823 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 1826 /* Make sure we have an urb then send the message */ 1827 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 1829 return -1; 1830 1830 } 1831 1831 1832 - dev_dbg(&port->dev, "%s - endpoint %d port %d (%d)\n", 1833 - __func__, usb_pipeendpoint(this_urb->pipe), 1834 - port->number, device_port); 1832 + dev_dbg(&port->dev, "%s - endpoint %d (%d)\n", 1833 + __func__, usb_pipeendpoint(this_urb->pipe), device_port); 1835 1834 1836 1835 /* Save reset port val for resend. 1837 1836 Don't overwrite resend for open/close condition. */ ··· 1845 1846 1846 1847 memset(&msg, 0, sizeof(struct keyspan_usa49_portControlMessage)); 1847 1848 1848 - /*msg.portNumber = port->number;*/ 1849 1849 msg.portNumber = device_port; 1850 1850 1851 1851 /* Only set baud rate if it's changed */ ··· 2134 2136 this_urb = s_priv->glocont_urb; 2135 2137 2136 2138 /* Work out which port within the device is being setup */ 2137 - device_port = port->number - port->serial->minor; 2139 + device_port = port->port_number; 2138 2140 2139 2141 /* Make sure we have an urb then send the message */ 2140 2142 if (this_urb == NULL) { 2141 - dev_dbg(&port->dev, "%s - oops no urb for port %d.\n", __func__, 2142 - port->number); 2143 + dev_dbg(&port->dev, "%s - oops no urb for port.\n", __func__); 2143 2144 return -1; 2144 2145 } 2145 2146 ··· 2379 2382 /* Setup values for the various callback routines */ 2380 2383 cback = &keyspan_callbacks[d_details->msg_format]; 2381 2384 2382 - port_num = port->number - port->serial->minor; 2385 + port_num = port->port_number; 2383 2386 2384 2387 /* Do indat endpoints first, once for each flip */ 2385 2388 endp = d_details->indat_endpoints[port_num];
+2 -2
drivers/usb/serial/metro-usb.c
··· 224 224 result = metrousb_send_unidirectional_cmd(UNI_CMD_OPEN, port); 225 225 if (result) { 226 226 dev_err(&port->dev, 227 - "%s - failed to configure device for port number=%d, error code=%d\n", 228 - __func__, port->number, result); 227 + "%s - failed to configure device, error code=%d\n", 228 + __func__, result); 229 229 goto exit; 230 230 } 231 231
+18 -19
drivers/usb/serial/mos7720.c
··· 1047 1047 * 1048 1048 * 0x08 : SP1/2 Control Reg 1049 1049 */ 1050 - port_number = port->number - port->serial->minor; 1050 + port_number = port->port_number; 1051 1051 read_mos_reg(serial, port_number, LSR, &data); 1052 1052 1053 1053 dev_dbg(&port->dev, "SS::%p LSR:%x\n", mos7720_port, data); ··· 1066 1066 1067 1067 write_mos_reg(serial, port_number, SP_CONTROL_REG, 0x00); 1068 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 1070 write_mos_reg(serial, dummy, SP_CONTROL_REG, data); 1071 1071 mos7720_port->shadowLCR = 0x83; 1072 1072 write_mos_reg(serial, port_number, LCR, mos7720_port->shadowLCR); ··· 1147 1147 usb_kill_urb(port->write_urb); 1148 1148 usb_kill_urb(port->read_urb); 1149 1149 1150 - write_mos_reg(serial, port->number - port->serial->minor, MCR, 0x00); 1151 - write_mos_reg(serial, port->number - port->serial->minor, IER, 0x00); 1150 + write_mos_reg(serial, port->port_number, MCR, 0x00); 1151 + write_mos_reg(serial, port->port_number, IER, 0x00); 1152 1152 1153 1153 mos7720_port->open = 0; 1154 1154 } ··· 1172 1172 data = mos7720_port->shadowLCR & ~UART_LCR_SBC; 1173 1173 1174 1174 mos7720_port->shadowLCR = data; 1175 - write_mos_reg(serial, port->number - port->serial->minor, 1176 - LCR, mos7720_port->shadowLCR); 1175 + write_mos_reg(serial, port->port_number, LCR, mos7720_port->shadowLCR); 1177 1176 } 1178 1177 1179 1178 /* ··· 1303 1304 /* if we are implementing RTS/CTS, toggle that line */ 1304 1305 if (tty->termios.c_cflag & CRTSCTS) { 1305 1306 mos7720_port->shadowMCR &= ~UART_MCR_RTS; 1306 - write_mos_reg(port->serial, port->number - port->serial->minor, 1307 - MCR, mos7720_port->shadowMCR); 1307 + write_mos_reg(port->serial, port->port_number, MCR, 1308 + mos7720_port->shadowMCR); 1308 1309 if (status != 0) 1309 1310 return; 1310 1311 } ··· 1335 1336 /* if we are implementing RTS/CTS, toggle that line */ 1336 1337 if (tty->termios.c_cflag & CRTSCTS) { 1337 1338 mos7720_port->shadowMCR |= UART_MCR_RTS; 1338 - write_mos_reg(port->serial, port->number - port->serial->minor, 1339 - MCR, mos7720_port->shadowMCR); 1339 + write_mos_reg(port->serial, port->port_number, MCR, 1340 + mos7720_port->shadowMCR); 1340 1341 if (status != 0) 1341 1342 return; 1342 1343 } ··· 1360 1361 * Init Sequence for higher rates 1361 1362 ***********************************************/ 1362 1363 dev_dbg(&port->dev, "Sending Setting Commands ..........\n"); 1363 - port_number = port->number - port->serial->minor; 1364 + port_number = port->port_number; 1364 1365 1365 1366 write_mos_reg(serial, port_number, IER, 0x00); 1366 1367 write_mos_reg(serial, port_number, FCR, 0x00); ··· 1486 1487 port = mos7720_port->port; 1487 1488 serial = port->serial; 1488 1489 1489 - number = port->number - port->serial->minor; 1490 + number = port->port_number; 1490 1491 dev_dbg(&port->dev, "%s - baud = %d\n", __func__, baudrate); 1491 1492 1492 1493 /* Calculate the Divisor */ ··· 1537 1538 1538 1539 port = mos7720_port->port; 1539 1540 serial = port->serial; 1540 - port_number = port->number - port->serial->minor; 1541 + port_number = port->port_number; 1541 1542 1542 1543 if (!mos7720_port->open) { 1543 1544 dev_dbg(&port->dev, "%s - port not opened\n", __func__); ··· 1730 1731 struct usb_serial_port *port = tty->driver_data; 1731 1732 unsigned int result = 0; 1732 1733 unsigned char data = 0; 1733 - int port_number = port->number - port->serial->minor; 1734 + int port_number = port->port_number; 1734 1735 int count; 1735 1736 1736 1737 count = mos7720_chars_in_buffer(tty); ··· 1792 1793 mcr &= ~UART_MCR_LOOP; 1793 1794 1794 1795 mos7720_port->shadowMCR = mcr; 1795 - write_mos_reg(port->serial, port->number - port->serial->minor, 1796 - MCR, mos7720_port->shadowMCR); 1796 + write_mos_reg(port->serial, port->port_number, MCR, 1797 + mos7720_port->shadowMCR); 1797 1798 1798 1799 return 0; 1799 1800 } ··· 1837 1838 } 1838 1839 1839 1840 mos7720_port->shadowMCR = mcr; 1840 - write_mos_reg(port->serial, port->number - port->serial->minor, 1841 - MCR, mos7720_port->shadowMCR); 1841 + write_mos_reg(port->serial, port->port_number, MCR, 1842 + mos7720_port->shadowMCR); 1842 1843 1843 1844 return 0; 1844 1845 } ··· 1855 1856 1856 1857 tmp.type = PORT_16550A; 1857 1858 tmp.line = mos7720_port->port->serial->minor; 1858 - tmp.port = mos7720_port->port->number; 1859 + tmp.port = mos7720_port->port->port_number; 1859 1860 tmp.irq = 0; 1860 1861 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 1861 1862 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE;
+18 -34
drivers/usb/serial/mos7840.c
··· 303 303 /* For the UART control registers, the application number need 304 304 to be Or'ed */ 305 305 if (port->serial->num_ports == 4) { 306 - val |= (((__u16) port->number - 307 - (__u16) (port->serial->minor)) + 1) << 8; 306 + val |= ((__u16)port->port_number + 1) << 8; 308 307 } else { 309 - if (((__u16) port->number - (__u16) (port->serial->minor)) == 0) { 310 - val |= (((__u16) port->number - 311 - (__u16) (port->serial->minor)) + 1) << 8; 308 + if (port->port_number == 0) { 309 + val |= ((__u16)port->port_number + 1) << 8; 312 310 } else { 313 - val |= (((__u16) port->number - 314 - (__u16) (port->serial->minor)) + 2) << 8; 311 + val |= ((__u16)port->port_number + 2) << 8; 315 312 } 316 313 } 317 314 dev_dbg(&port->dev, "%s application number is %x\n", __func__, val); ··· 337 340 338 341 /* Wval is same as application number */ 339 342 if (port->serial->num_ports == 4) { 340 - Wval = 341 - (((__u16) port->number - (__u16) (port->serial->minor)) + 342 - 1) << 8; 343 + Wval = ((__u16)port->port_number + 1) << 8; 343 344 } else { 344 - if (((__u16) port->number - (__u16) (port->serial->minor)) == 0) { 345 - Wval = (((__u16) port->number - 346 - (__u16) (port->serial->minor)) + 1) << 8; 345 + if (port->port_number == 0) { 346 + Wval = ((__u16)port->port_number + 1) << 8; 347 347 } else { 348 - Wval = (((__u16) port->number - 349 - (__u16) (port->serial->minor)) + 2) << 8; 348 + Wval = ((__u16)port->port_number + 2) << 8; 350 349 } 351 350 } 352 351 dev_dbg(&port->dev, "%s application number is %x\n", __func__, Wval); ··· 624 631 625 632 for (i = 0; i < serial->num_ports; i++) { 626 633 mos7840_port = mos7840_get_port_private(serial->port[i]); 627 - wval = 628 - (((__u16) serial->port[i]->number - 629 - (__u16) (serial->minor)) + 1) << 8; 634 + wval = ((__u16)serial->port[i]->port_number + 1) << 8; 630 635 if (mos7840_port->open) { 631 636 if (sp[i] & 0x01) { 632 637 dev_dbg(&urb->dev->dev, "SP%d No Interrupt !!!\n", i); ··· 1056 1065 * (can't set it up in mos7840_startup as the * 1057 1066 * structures were not set up at that time.) */ 1058 1067 1059 - dev_dbg(&port->dev, "port number is %d\n", port->number); 1060 - dev_dbg(&port->dev, "serial number is %d\n", port->serial->minor); 1068 + dev_dbg(&port->dev, "port number is %d\n", port->port_number); 1069 + dev_dbg(&port->dev, "minor number is %d\n", port->serial->minor); 1061 1070 dev_dbg(&port->dev, "Bulkin endpoint is %d\n", port->bulk_in_endpointAddress); 1062 1071 dev_dbg(&port->dev, "BulkOut endpoint is %d\n", port->bulk_out_endpointAddress); 1063 1072 dev_dbg(&port->dev, "Interrupt endpoint is %d\n", port->interrupt_in_endpointAddress); ··· 1065 1074 mos7840_port->read_urb = port->read_urb; 1066 1075 1067 1076 /* set up our bulk in urb */ 1068 - if ((serial->num_ports == 2) 1069 - && ((((__u16)port->number - 1070 - (__u16)(port->serial->minor)) % 2) != 0)) { 1077 + if ((serial->num_ports == 2) && (((__u16)port->port_number % 2) != 0)) { 1071 1078 usb_fill_bulk_urb(mos7840_port->read_urb, 1072 1079 serial->dev, 1073 1080 usb_rcvbulkpipe(serial->dev, ··· 1188 1199 mos7840_port->read_urb_busy = false; 1189 1200 1190 1201 port0->open_ports--; 1191 - dev_dbg(&port->dev, "%s in close%d:in port%d\n", __func__, port0->open_ports, port->number); 1202 + dev_dbg(&port->dev, "%s in close%d\n", __func__, port0->open_ports); 1192 1203 if (port0->open_ports == 0) { 1193 1204 if (serial->port[0]->interrupt_in_urb) { 1194 1205 dev_dbg(&port->dev, "Shutdown interrupt_in_urb\n"); ··· 1424 1435 memcpy(urb->transfer_buffer, current_position, transfer_size); 1425 1436 1426 1437 /* fill urb with data and submit */ 1427 - if ((serial->num_ports == 2) 1428 - && ((((__u16)port->number - 1429 - (__u16)(port->serial->minor)) % 2) != 0)) { 1438 + if ((serial->num_ports == 2) && (((__u16)port->port_number % 2) != 0)) { 1430 1439 usb_fill_bulk_urb(urb, 1431 1440 serial->dev, 1432 1441 usb_sndbulkpipe(serial->dev, ··· 1719 1732 if (mos7840_serial_paranoia_check(port->serial, __func__)) 1720 1733 return -1; 1721 1734 1722 - number = mos7840_port->port->number - mos7840_port->port->serial->minor; 1735 + number = mos7840_port->port->port_number; 1723 1736 1724 - dev_dbg(&port->dev, "%s - port = %d, baud = %d\n", __func__, 1725 - mos7840_port->port->number, baudRate); 1737 + dev_dbg(&port->dev, "%s - baud = %d\n", __func__, baudRate); 1726 1738 /* reset clk_uart_sel in spregOffset */ 1727 1739 if (baudRate > 115200) { 1728 1740 #ifdef HW_flow_control ··· 2002 2016 tty->termios.c_cflag, RELEVANT_IFLAG(tty->termios.c_iflag)); 2003 2017 dev_dbg(&port->dev, "%s - old clfag %08x old iflag %08x\n", __func__, 2004 2018 old_termios->c_cflag, RELEVANT_IFLAG(old_termios->c_iflag)); 2005 - dev_dbg(&port->dev, "%s - port %d\n", __func__, port->number); 2006 2019 2007 2020 /* change the port settings to the new ones specified */ 2008 2021 ··· 2069 2084 2070 2085 tmp.type = PORT_16550A; 2071 2086 tmp.line = mos7840_port->port->serial->minor; 2072 - tmp.port = mos7840_port->port->number; 2087 + tmp.port = mos7840_port->port->port_number; 2073 2088 tmp.irq = 0; 2074 2089 tmp.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 2075 2090 tmp.xmit_fifo_size = NUM_URBS * URB_TRANSFER_BUFFER_SIZE; ··· 2225 2240 /* we set up the pointers to the endpoints in the mos7840_open * 2226 2241 * function, as the structures aren't created yet. */ 2227 2242 2228 - pnum = port->number - serial->minor; 2243 + pnum = port->port_number; 2229 2244 2230 2245 dev_dbg(&port->dev, "mos7840_startup: configuring port %d\n", pnum); 2231 2246 mos7840_port = kzalloc(sizeof(struct moschip_port), GFP_KERNEL); ··· 2246 2261 * usb-serial.c:get_free_serial() and cannot therefore be used 2247 2262 * to index device instances */ 2248 2263 mos7840_port->port_num = pnum + 1; 2249 - dev_dbg(&port->dev, "port->number = %d\n", port->number); 2250 2264 dev_dbg(&port->dev, "port->serial->minor = %d\n", port->serial->minor); 2251 2265 dev_dbg(&port->dev, "mos7840_port->port_num = %d\n", mos7840_port->port_num); 2252 2266 dev_dbg(&port->dev, "serial->minor = %d\n", serial->minor);
+1 -1
drivers/usb/serial/opticon.c
··· 367 367 { 368 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 372 switch (cmd) { 373 373 case TIOCGSERIAL:
+1 -1
drivers/usb/serial/pl2303.c
··· 640 640 memset(&ser, 0, sizeof ser); 641 641 ser.type = PORT_16654; 642 642 ser.line = port->serial->minor; 643 - ser.port = port->number; 643 + ser.port = port->port_number; 644 644 ser.baud_base = 460800; 645 645 646 646 if (copy_to_user((void __user *)arg, &ser, sizeof ser))
+3 -4
drivers/usb/serial/quatech2.c
··· 343 343 int status; 344 344 unsigned long flags; 345 345 346 - device_port = (u16) (port->number - port->serial->minor); 346 + device_port = port->port_number; 347 347 348 348 serial = port->serial; 349 349 ··· 388 388 status = qt2_set_port_config(serial->dev, device_port, 389 389 DEFAULT_BAUD_RATE, UART_LCR_WLEN8); 390 390 if (status < 0) { 391 - dev_err(&port->dev, 392 - "%s - initial setup failed for port %i (%i)\n", 393 - __func__, port->number, device_port); 391 + dev_err(&port->dev, "%s - initial setup failed (%i)\n", 392 + __func__, device_port); 394 393 return status; 395 394 } 396 395
+1 -1
drivers/usb/serial/sierra.c
··· 914 914 /* This is really the usb-serial port number of the interface 915 915 * rather than the interface number. 916 916 */ 917 - ifnum = port->number - serial->minor; 917 + ifnum = port->port_number; 918 918 himemoryp = &typeA_interface_list; 919 919 } 920 920
+5 -5
drivers/usb/serial/ti_usb_3410_5052.c
··· 476 476 if (mutex_lock_interruptible(&tdev->td_open_close_lock)) 477 477 return -ERESTARTSYS; 478 478 479 - port_number = port->number - port->serial->minor; 479 + port_number = port->port_number; 480 480 481 481 tport->tp_msr = 0; 482 482 tport->tp_shadow_mcr |= (TI_MCR_RTS | TI_MCR_DTR); ··· 618 618 kfifo_reset_out(&tport->write_fifo); 619 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 623 dev_dbg(&port->dev, "%s - sending TI_CLOSE_PORT\n", __func__); 624 624 status = ti_command_out_sync(tdev, TI_CLOSE_PORT, ··· 776 776 tcflag_t cflag, iflag; 777 777 int baud; 778 778 int status; 779 - int port_number = port->number - port->serial->minor; 779 + int port_number = port->port_number; 780 780 unsigned int mcr; 781 781 782 782 cflag = tty->termios.c_cflag; ··· 1262 1262 int size, status; 1263 1263 struct ti_device *tdev = tport->tp_tdev; 1264 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 1266 struct ti_port_status *data; 1267 1267 1268 1268 size = sizeof(struct ti_port_status); ··· 1309 1309 1310 1310 ret_serial.type = PORT_16550A; 1311 1311 ret_serial.line = port->serial->minor; 1312 - ret_serial.port = port->number - port->serial->minor; 1312 + ret_serial.port = port->port_number; 1313 1313 ret_serial.flags = tport->tp_flags; 1314 1314 ret_serial.xmit_fifo_size = TI_WRITE_BUF_SIZE; 1315 1315 ret_serial.baud_base = tport->tp_tdev->td_is_3410 ? 921600 : 460800;
+4 -3
drivers/usb/serial/usb-serial.c
··· 105 105 *minor = i; 106 106 j = 0; 107 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 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 113 mutex_unlock(&table_lock); 113 114 return serial; ··· 1049 1048 /* register all of the individual ports with the driver core */ 1050 1049 for (i = 0; i < num_ports; ++i) { 1051 1050 port = serial->port[i]; 1052 - dev_set_name(&port->dev, "ttyUSB%d", port->number); 1051 + dev_set_name(&port->dev, "ttyUSB%d", port->minor); 1053 1052 dev_dbg(ddev, "registering %s", dev_name(&port->dev)); 1054 1053 device_enable_async_suspend(&port->dev); 1055 1054
+1 -1
drivers/usb/serial/usb_wwan.c
··· 125 125 126 126 memset(&tmp, 0, sizeof(tmp)); 127 127 tmp.line = port->serial->minor; 128 - tmp.port = port->number; 128 + tmp.port = port->port_number; 129 129 tmp.baud_base = tty_get_baud_rate(port->port.tty); 130 130 tmp.close_delay = port->port.close_delay / 10; 131 131 tmp.closing_wait = port->port.closing_wait == ASYNC_CLOSING_WAIT_NONE ?
+10 -10
drivers/usb/serial/whiteheat.c
··· 462 462 memset(&serstruct, 0, sizeof(serstruct)); 463 463 serstruct.type = PORT_16654; 464 464 serstruct.line = port->serial->minor; 465 - serstruct.port = port->number; 465 + serstruct.port = port->port_number; 466 466 serstruct.flags = ASYNC_SKIP_TEST | ASYNC_AUTO_IRQ; 467 467 serstruct.xmit_fifo_size = kfifo_size(&port->write_fifo); 468 468 serstruct.custom_divisor = 0; ··· 626 626 { 627 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 630 return firm_send_command(port, WHITEHEAT_OPEN, 631 631 (__u8 *)&open_command, sizeof(open_command)); 632 632 } ··· 636 636 { 637 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 640 return firm_send_command(port, WHITEHEAT_CLOSE, 641 641 (__u8 *)&close_command, sizeof(close_command)); 642 642 } ··· 649 649 struct whiteheat_port_settings port_settings; 650 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 654 /* get the byte size */ 655 655 switch (cflag & CSIZE) { ··· 726 726 { 727 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 730 rts_command.state = onoff; 731 731 return firm_send_command(port, WHITEHEAT_SET_RTS, 732 732 (__u8 *)&rts_command, sizeof(rts_command)); ··· 737 737 { 738 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 741 dtr_command.state = onoff; 742 742 return firm_send_command(port, WHITEHEAT_SET_DTR, 743 743 (__u8 *)&dtr_command, sizeof(dtr_command)); ··· 748 748 { 749 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 752 break_command.state = onoff; 753 753 return firm_send_command(port, WHITEHEAT_SET_BREAK, 754 754 (__u8 *)&break_command, sizeof(break_command)); ··· 759 759 { 760 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 763 purge_command.what = rxtx; 764 764 return firm_send_command(port, WHITEHEAT_PURGE, 765 765 (__u8 *)&purge_command, sizeof(purge_command)); ··· 770 770 { 771 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 774 return firm_send_command(port, WHITEHEAT_GET_DTR_RTS, 775 775 (__u8 *)&get_dr_command, sizeof(get_dr_command)); 776 776 } ··· 780 780 { 781 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 784 return firm_send_command(port, WHITEHEAT_REPORT_TX_DONE, 785 785 (__u8 *)&close_command, sizeof(close_command)); 786 786 }
+4 -2
include/linux/usb/serial.h
··· 37 37 * @serial: pointer back to the struct usb_serial owner of this port. 38 38 * @port: pointer to the corresponding tty_port for this port. 39 39 * @lock: spinlock to grab when updating portions of this structure. 40 - * @number: the number of the port (the minor number). 40 + * @minor: the minor number of the port 41 + * @port_number: the struct usb_serial port number of this port (starts at 0) 41 42 * @interrupt_in_buffer: pointer to the interrupt in buffer for this port. 42 43 * @interrupt_in_urb: pointer to the interrupt in struct urb for this port. 43 44 * @interrupt_in_endpointAddress: endpoint address for the interrupt in pipe ··· 81 80 struct usb_serial *serial; 82 81 struct tty_port port; 83 82 spinlock_t lock; 84 - unsigned char number; 83 + u32 minor; 84 + u8 port_number; 85 85 86 86 unsigned char *interrupt_in_buffer; 87 87 struct urb *interrupt_in_urb;