|
@@ -1338,8 +1338,16 @@ made_compressed_probe:
|
|
|
spin_lock_init(&acm->read_lock);
|
|
|
mutex_init(&acm->mutex);
|
|
|
acm->is_int_ep = usb_endpoint_xfer_int(epread);
|
|
|
- if (acm->is_int_ep)
|
|
|
+ if (acm->is_int_ep) {
|
|
|
acm->bInterval = epread->bInterval;
|
|
|
+ acm->in = usb_rcvintpipe(usb_dev, epread->bEndpointAddress);
|
|
|
+ } else {
|
|
|
+ acm->in = usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress);
|
|
|
+ }
|
|
|
+ if (usb_endpoint_xfer_int(epwrite))
|
|
|
+ acm->out = usb_sndintpipe(usb_dev, epwrite->bEndpointAddress);
|
|
|
+ else
|
|
|
+ acm->out = usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress);
|
|
|
tty_port_init(&acm->port);
|
|
|
acm->port.ops = &acm_port_ops;
|
|
|
init_usb_anchor(&acm->delayed);
|
|
@@ -1374,20 +1382,15 @@ made_compressed_probe:
|
|
|
|
|
|
urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
|
|
urb->transfer_dma = rb->dma;
|
|
|
- if (acm->is_int_ep) {
|
|
|
- usb_fill_int_urb(urb, acm->dev,
|
|
|
- usb_rcvintpipe(usb_dev, epread->bEndpointAddress),
|
|
|
- rb->base,
|
|
|
+ if (acm->is_int_ep)
|
|
|
+ usb_fill_int_urb(urb, acm->dev, acm->in, rb->base,
|
|
|
acm->readsize,
|
|
|
acm_read_bulk_callback, rb,
|
|
|
acm->bInterval);
|
|
|
- } else {
|
|
|
- usb_fill_bulk_urb(urb, acm->dev,
|
|
|
- usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress),
|
|
|
- rb->base,
|
|
|
+ else
|
|
|
+ usb_fill_bulk_urb(urb, acm->dev, acm->in, rb->base,
|
|
|
acm->readsize,
|
|
|
acm_read_bulk_callback, rb);
|
|
|
- }
|
|
|
|
|
|
acm->read_urbs[i] = urb;
|
|
|
__set_bit(i, &acm->read_urbs_free);
|
|
@@ -1400,12 +1403,10 @@ made_compressed_probe:
|
|
|
goto alloc_fail7;
|
|
|
|
|
|
if (usb_endpoint_xfer_int(epwrite))
|
|
|
- usb_fill_int_urb(snd->urb, usb_dev,
|
|
|
- usb_sndintpipe(usb_dev, epwrite->bEndpointAddress),
|
|
|
+ usb_fill_int_urb(snd->urb, usb_dev, acm->out,
|
|
|
NULL, acm->writesize, acm_write_bulk, snd, epwrite->bInterval);
|
|
|
else
|
|
|
- usb_fill_bulk_urb(snd->urb, usb_dev,
|
|
|
- usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress),
|
|
|
+ usb_fill_bulk_urb(snd->urb, usb_dev, acm->out,
|
|
|
NULL, acm->writesize, acm_write_bulk, snd);
|
|
|
snd->urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
|
|
|
if (quirks & SEND_ZERO_PACKET)
|
|
@@ -1477,8 +1478,8 @@ skip_countries:
|
|
|
}
|
|
|
|
|
|
if (quirks & CLEAR_HALT_CONDITIONS) {
|
|
|
- usb_clear_halt(usb_dev, usb_rcvbulkpipe(usb_dev, epread->bEndpointAddress));
|
|
|
- usb_clear_halt(usb_dev, usb_sndbulkpipe(usb_dev, epwrite->bEndpointAddress));
|
|
|
+ usb_clear_halt(usb_dev, acm->in);
|
|
|
+ usb_clear_halt(usb_dev, acm->out);
|
|
|
}
|
|
|
|
|
|
return 0;
|