USB: digi_acceleport: remove bogus disconnect test in close

Remove bogus (and unnecessary) test for serial->dev being NULL in close.

The device is never cleared, and close is never called after a completed
disconnect anyway.

Signed-off-by: Johan Hovold <jhovold@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Johan Hovold
2013-03-21 12:36:30 +01:00
committed by Greg Kroah-Hartman
parent 1bc77f4df6
commit 28e679ae6f

View File

@@ -1149,53 +1149,51 @@ static void digi_close(struct usb_serial_port *port)
if (port->serial->disconnected) if (port->serial->disconnected)
goto exit; goto exit;
if (port->serial->dev) { /* FIXME: Transmit idle belongs in the wait_unti_sent path */
/* FIXME: Transmit idle belongs in the wait_unti_sent path */ digi_transmit_idle(port, DIGI_CLOSE_TIMEOUT);
digi_transmit_idle(port, DIGI_CLOSE_TIMEOUT);
/* disable input flow control */ /* disable input flow control */
buf[0] = DIGI_CMD_SET_INPUT_FLOW_CONTROL; buf[0] = DIGI_CMD_SET_INPUT_FLOW_CONTROL;
buf[1] = priv->dp_port_num; buf[1] = priv->dp_port_num;
buf[2] = DIGI_DISABLE; buf[2] = DIGI_DISABLE;
buf[3] = 0; buf[3] = 0;
/* disable output flow control */ /* disable output flow control */
buf[4] = DIGI_CMD_SET_OUTPUT_FLOW_CONTROL; buf[4] = DIGI_CMD_SET_OUTPUT_FLOW_CONTROL;
buf[5] = priv->dp_port_num; buf[5] = priv->dp_port_num;
buf[6] = DIGI_DISABLE; buf[6] = DIGI_DISABLE;
buf[7] = 0; buf[7] = 0;
/* disable reading modem signals automatically */ /* disable reading modem signals automatically */
buf[8] = DIGI_CMD_READ_INPUT_SIGNALS; buf[8] = DIGI_CMD_READ_INPUT_SIGNALS;
buf[9] = priv->dp_port_num; buf[9] = priv->dp_port_num;
buf[10] = DIGI_DISABLE; buf[10] = DIGI_DISABLE;
buf[11] = 0; buf[11] = 0;
/* disable receive */ /* disable receive */
buf[12] = DIGI_CMD_RECEIVE_ENABLE; buf[12] = DIGI_CMD_RECEIVE_ENABLE;
buf[13] = priv->dp_port_num; buf[13] = priv->dp_port_num;
buf[14] = DIGI_DISABLE; buf[14] = DIGI_DISABLE;
buf[15] = 0; buf[15] = 0;
/* flush fifos */ /* flush fifos */
buf[16] = DIGI_CMD_IFLUSH_FIFO; buf[16] = DIGI_CMD_IFLUSH_FIFO;
buf[17] = priv->dp_port_num; buf[17] = priv->dp_port_num;
buf[18] = DIGI_FLUSH_TX | DIGI_FLUSH_RX; buf[18] = DIGI_FLUSH_TX | DIGI_FLUSH_RX;
buf[19] = 0; buf[19] = 0;
ret = digi_write_oob_command(port, buf, 20, 0); ret = digi_write_oob_command(port, buf, 20, 0);
if (ret != 0) if (ret != 0)
dev_dbg(&port->dev, "digi_close: write oob failed, ret=%d\n", ret); dev_dbg(&port->dev, "digi_close: write oob failed, ret=%d\n",
ret);
/* wait for final commands on oob port to complete */
prepare_to_wait(&priv->dp_flush_wait, &wait,
TASK_INTERRUPTIBLE);
schedule_timeout(DIGI_CLOSE_TIMEOUT);
finish_wait(&priv->dp_flush_wait, &wait);
/* wait for final commands on oob port to complete */ /* shutdown any outstanding bulk writes */
prepare_to_wait(&priv->dp_flush_wait, &wait, usb_kill_urb(port->write_urb);
TASK_INTERRUPTIBLE);
schedule_timeout(DIGI_CLOSE_TIMEOUT);
finish_wait(&priv->dp_flush_wait, &wait);
/* shutdown any outstanding bulk writes */
usb_kill_urb(port->write_urb);
}
exit: exit:
spin_lock_irq(&priv->dp_port_lock); spin_lock_irq(&priv->dp_port_lock);
priv->dp_write_urb_in_use = 0; priv->dp_write_urb_in_use = 0;