wake_up( &priv->dp_flush_wait ); 
wake_up_interruptible( &priv->dp_flush_wait ); 
static int digi_read_oob_callback( struct urb *urb ){	struct usb_serial_port *port = (struct usb_serial_port *)urb->context;	struct usb_serial *serial = port->serial;	struct digi_port *priv = usb_get_serial_port_data(port);	int opcode, line, status, val;	int i;dbg( "digi_read_oob_callback: port=%d, len=%d", priv->dp_port_num,urb->actual_length );	/* handle each oob command */	for( i=0; i<urb->actual_length-3; ) {		opcode = ((unsigned char *)urb->transfer_buffer)[i++];		line = ((unsigned char *)urb->transfer_buffer)[i++];		status = ((unsigned char *)urb->transfer_buffer)[i++];		val = ((unsigned char *)urb->transfer_buffer)[i++];dbg( "digi_read_oob_callback: opcode=%d, line=%d, status=%d, val=%d",opcode, line, status, val );		if( status != 0 || line >= serial->type->num_ports )			continue;		port = serial->port[line];		if ((priv=usb_get_serial_port_data(port)) == NULL )			return -1;		if( opcode == DIGI_CMD_READ_INPUT_SIGNALS ) {			spin_lock( &priv->dp_port_lock );			/* convert from digi flags to termiox flags */			if( val & DIGI_READ_INPUT_SIGNALS_CTS ) {				priv->dp_modem_signals |= TIOCM_CTS;				/* port must be open to use tty struct */				if( port->open_count				&& port->tty->termios->c_cflag & CRTSCTS ) {					port->tty->hw_stopped = 0;					digi_wakeup_write( port );				}			} else {				priv->dp_modem_signals &= ~TIOCM_CTS;				/* port must be open to use tty struct */				if( port->open_count				&& port->tty->termios->c_cflag & CRTSCTS ) {					port->tty->hw_stopped = 1;				}			}			if( val & DIGI_READ_INPUT_SIGNALS_DSR )				priv->dp_modem_signals |= TIOCM_DSR;			else				priv->dp_modem_signals &= ~TIOCM_DSR;			if( val & DIGI_READ_INPUT_SIGNALS_RI )				priv->dp_modem_signals |= TIOCM_RI;			else				priv->dp_modem_signals &= ~TIOCM_RI;			if( val & DIGI_READ_INPUT_SIGNALS_DCD )				priv->dp_modem_signals |= TIOCM_CD;			else				priv->dp_modem_signals &= ~TIOCM_CD;			wake_up_interruptible( &priv->dp_modem_change_wait );			spin_unlock( &priv->dp_port_lock );		} else if( opcode == DIGI_CMD_TRANSMIT_IDLE ) {			spin_lock( &priv->dp_port_lock );			priv->dp_transmit_idle = 1;			wake_up_interruptible( &priv->dp_transmit_idle_wait );			spin_unlock( &priv->dp_port_lock );		} else if( opcode == DIGI_CMD_IFLUSH_FIFO ) {			wake_up( &priv->dp_flush_wait );		}	}	return( 0 );}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/45f23f189ca66d98b1f8b7f3d30a194d3188039d/digi_acceleport.c/clean/drivers/usb/serial/digi_acceleport.c