Hi all,
Here's a patch against 2.5.6 that fixes a longstanding bug in the
io_edgeport driver where it would not work properly with more than one
io_edgeport device attached at the same time. This patch also applies
to 2.4.19-pre2 with a bit of fuzz and has been added to both of my
trees.
If anyone has a problem with this driver after this patch, please let me
know.
thanks,
greg k-h
diff -Nru a/drivers/usb/serial/io_edgeport.c b/drivers/usb/serial/io_edgeport.c
--- a/drivers/usb/serial/io_edgeport.c Fri Mar 8 10:02:42 2002
+++ b/drivers/usb/serial/io_edgeport.c Fri Mar 8 10:02:42 2002
@@ -2,7 +2,7 @@
* Edgeport USB Serial Converter driver
*
* Copyright(c) 2000 Inside Out Networks, All rights reserved.
- * Copyright(c) 2001 Greg Kroah-Hartman <[EMAIL PROTECTED]>
+ * Copyright(c) 2001-2002 Greg Kroah-Hartman <[EMAIL PROTECTED]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -25,6 +25,9 @@
*
* Version history:
*
+ * 2.3 2002_03_08 greg kroah-hartman
+ * - fixed bug when multiple devices were attached at the same time.
+ *
* 2.2 2001_11_14 greg kroah-hartman
* - fixed bug in edge_close that kept the port from being used more
* than once.
@@ -1438,8 +1441,8 @@
edge_port->write_in_progress = FALSE;
return;
}
- buffer[0] = IOSP_BUILD_DATA_HDR1 (edge_port->port->number, count);
- buffer[1] = IOSP_BUILD_DATA_HDR2 (edge_port->port->number, count);
+ buffer[0] = IOSP_BUILD_DATA_HDR1 (edge_port->port->number -
+edge_port->port->serial->minor, count);
+ buffer[1] = IOSP_BUILD_DATA_HDR2 (edge_port->port->number -
+edge_port->port->serial->minor, count);
/* now copy our data */
bytesleft = fifo->size - fifo->tail;
@@ -2436,7 +2439,9 @@
currentCommand = buffer;
- MAKE_CMD_EXT_CMD( ¤tCommand, &length, edge_port->port->number, command,
param);
+ MAKE_CMD_EXT_CMD (¤tCommand, &length,
+ edge_port->port->number - edge_port->port->serial->minor,
+ command, param);
status = write_cmd_usb (edge_port, buffer, length);
if (status) {
@@ -2516,9 +2521,9 @@
int cmdLen = 0;
int divisor;
int status;
- unsigned char number = edge_port->port->number;
+ unsigned char number = edge_port->port->number -
+edge_port->port->serial->minor;
- dbg(__FUNCTION__" - port = %d, baud = %d", number, baudRate);
+ dbg(__FUNCTION__" - port = %d, baud = %d", edge_port->port->number, baudRate);
status = calc_baud_rate_divisor (baudRate, &divisor);
if (status) {
@@ -2621,7 +2626,9 @@
currCmd = cmdBuffer;
// Build a cmd in the buffer to write the given register
- MAKE_CMD_WRITE_REG(&currCmd, &cmdLen, edge_port->port->number, regNum,
regValue);
+ MAKE_CMD_WRITE_REG (&currCmd, &cmdLen,
+ edge_port->port->number - edge_port->port->serial->minor,
+ regNum, regValue);
status = write_cmd_usb(edge_port, cmdBuffer, cmdLen);
if (status) {
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel