1103
1104
mos7840_port->read_urb = port->read_urb;
1105
1106
/* set up our bulk in urb */
1107
usb_fill_bulk_urb(mos7840_port->read_urb,
1109
usb_rcvbulkpipe(serial->dev,
1110
port->bulk_in_endpointAddress),
1111
port->bulk_in_buffer,
1112
mos7840_port->read_urb->transfer_buffer_length,
1113
mos7840_bulk_in_callback, mos7840_port);
1107
if ((serial->num_ports == 2)
1108
&& ((((__u16)port->number -
1109
(__u16)(port->serial->minor)) % 2) != 0)) {
1110
usb_fill_bulk_urb(mos7840_port->read_urb,
1112
usb_rcvbulkpipe(serial->dev,
1113
(port->bulk_in_endpointAddress) + 2),
1114
port->bulk_in_buffer,
1115
mos7840_port->read_urb->transfer_buffer_length,
1116
mos7840_bulk_in_callback, mos7840_port);
1118
usb_fill_bulk_urb(mos7840_port->read_urb,
1120
usb_rcvbulkpipe(serial->dev,
1121
port->bulk_in_endpointAddress),
1122
port->bulk_in_buffer,
1123
mos7840_port->read_urb->transfer_buffer_length,
1124
mos7840_bulk_in_callback, mos7840_port);
1115
1127
dbg("mos7840_open: bulkin endpoint is %d",
1116
1128
port->bulk_in_endpointAddress);
1521
1533
memcpy(urb->transfer_buffer, current_position, transfer_size);
1523
1535
/* fill urb with data and submit */
1524
usb_fill_bulk_urb(urb,
1526
usb_sndbulkpipe(serial->dev,
1527
port->bulk_out_endpointAddress),
1528
urb->transfer_buffer,
1530
mos7840_bulk_out_data_callback, mos7840_port);
1536
if ((serial->num_ports == 2)
1537
&& ((((__u16)port->number -
1538
(__u16)(port->serial->minor)) % 2) != 0)) {
1539
usb_fill_bulk_urb(urb,
1541
usb_sndbulkpipe(serial->dev,
1542
(port->bulk_out_endpointAddress) + 2),
1543
urb->transfer_buffer,
1545
mos7840_bulk_out_data_callback, mos7840_port);
1547
usb_fill_bulk_urb(urb,
1549
usb_sndbulkpipe(serial->dev,
1550
port->bulk_out_endpointAddress),
1551
urb->transfer_buffer,
1553
mos7840_bulk_out_data_callback, mos7840_port);
1532
1556
data1 = urb->transfer_buffer;
1533
1557
dbg("bulkout endpoint is %d", port->bulk_out_endpointAddress);
1842
1866
#ifdef HW_flow_control
1843
/ *setting h/w flow control bit to 0 */
1867
/* setting h/w flow control bit to 0 */
1845
1869
mos7840_port->shadowMCR = Data;
1846
1870
status = mos7840_set_uart_reg(port, MODEM_CONTROL_REGISTER,
2310
2334
static int mos7840_calc_num_ports(struct usb_serial *serial)
2312
int mos7840_num_ports = 0;
2314
dbg("numberofendpoints: cur %d, alt %d",
2315
(int)serial->interface->cur_altsetting->desc.bNumEndpoints,
2316
(int)serial->interface->altsetting->desc.bNumEndpoints);
2317
if (serial->interface->cur_altsetting->desc.bNumEndpoints == 5) {
2318
mos7840_num_ports = serial->num_ports = 2;
2319
} else if (serial->interface->cur_altsetting->desc.bNumEndpoints == 9) {
2338
int mos7840_num_ports;
2340
ret = usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
2341
MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, &Data,
2342
VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT);
2344
if ((Data & 0x01) == 0) {
2345
mos7840_num_ports = 2;
2346
serial->num_bulk_in = 2;
2347
serial->num_bulk_out = 2;
2348
serial->num_ports = 2;
2350
mos7840_num_ports = 4;
2320
2351
serial->num_bulk_in = 4;
2321
2352
serial->num_bulk_out = 4;
2322
mos7840_num_ports = serial->num_ports = 4;
2353
serial->num_ports = 4;
2324
dbg ("mos7840_num_ports = %d", mos7840_num_ports);
2325
2356
return mos7840_num_ports;