ChangeSet 1.1713.7.9, 2004/04/08 14:37:07-07:00, [EMAIL PROTECTED]
USB: fix pl2303 handling of status bits.
Patch originally from Kevin Watkins <[EMAIL PROTECTED]>
drivers/usb/serial/pl2303.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletion(-)
diff -Nru a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
--- a/drivers/usb/serial/pl2303.c Wed Apr 14 14:33:34 2004
+++ b/drivers/usb/serial/pl2303.c Wed Apr 14 14:33:34 2004
@@ -116,6 +116,7 @@
#define VENDOR_READ_REQUEST 0x01
#define UART_STATE 0x08
+#define UART_STATE_TRANSIENT_MASK 0x74
#define UART_DCD 0x01
#define UART_DSR 0x02
#define UART_BREAK_ERROR 0x04
@@ -662,6 +663,7 @@
unsigned char *data = urb->transfer_buffer;
unsigned long flags;
int status;
+ u8 uart_state;
dbg("%s (%d)", __FUNCTION__, port->number);
@@ -690,8 +692,10 @@
goto exit;
/* Save off the uart status for others to look at */
+ uart_state = data[UART_STATE];
spin_lock_irqsave(&priv->lock, flags);
- priv->line_status = data[UART_STATE];
+ uart_state |= (priv->line_status & UART_STATE_TRANSIENT_MASK);
+ priv->line_status = uart_state;
spin_unlock_irqrestore(&priv->lock, flags);
exit:
@@ -752,6 +756,7 @@
spin_lock_irqsave(&priv->lock, flags);
status = priv->line_status;
+ priv->line_status &= ~UART_STATE_TRANSIENT_MASK;
spin_unlock_irqrestore(&priv->lock, flags);
wake_up_interruptible (&priv->delta_msr_wait);
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id70&alloc_id638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel