···687687 num_port = 4; /* Nothing found, oldest version IC */688688 }689689690690+ /*691691+ * Setup bulk-out endpoint multiplexing. All ports share the same692692+ * bulk-out endpoint.693693+ */694694+ BUILD_BUG_ON(ARRAY_SIZE(epds->bulk_out) < F81534_NUM_PORT);695695+696696+ for (i = 1; i < num_port; ++i)697697+ epds->bulk_out[i] = epds->bulk_out[0];698698+699699+ epds->num_bulk_out = num_port;700700+690701 return num_port;691702}692703···10891078 }10901079}1091108010921092-static int f81534_setup_ports(struct usb_serial *serial)10931093-{10941094- struct usb_serial_port *port;10951095- u8 port0_out_address;10961096- int buffer_size;10971097- size_t i;10981098-10991099- /*11001100- * In our system architecture, we had 2 or 4 serial ports,11011101- * but only get 1 set of bulk in/out endpoints.11021102- *11031103- * The usb-serial subsystem will generate port 0 data,11041104- * but port 1/2/3 will not. It's will generate write URB and buffer11051105- * by following code and use the port0 read URB for read operation.11061106- */11071107- for (i = 1; i < serial->num_ports; ++i) {11081108- port0_out_address = serial->port[0]->bulk_out_endpointAddress;11091109- buffer_size = serial->port[0]->bulk_out_size;11101110- port = serial->port[i];11111111-11121112- if (kfifo_alloc(&port->write_fifo, PAGE_SIZE, GFP_KERNEL))11131113- return -ENOMEM;11141114-11151115- port->bulk_out_size = buffer_size;11161116- port->bulk_out_endpointAddress = port0_out_address;11171117-11181118- port->write_urbs[0] = usb_alloc_urb(0, GFP_KERNEL);11191119- if (!port->write_urbs[0])11201120- return -ENOMEM;11211121-11221122- port->bulk_out_buffers[0] = kzalloc(buffer_size, GFP_KERNEL);11231123- if (!port->bulk_out_buffers[0])11241124- return -ENOMEM;11251125-11261126- usb_fill_bulk_urb(port->write_urbs[0], serial->dev,11271127- usb_sndbulkpipe(serial->dev,11281128- port0_out_address),11291129- port->bulk_out_buffers[0], buffer_size,11301130- serial->type->write_bulk_callback, port);11311131-11321132- port->write_urb = port->write_urbs[0];11331133- port->bulk_out_buffer = port->bulk_out_buffers[0];11341134- }11351135-11361136- return 0;11371137-}11381138-11391081static int f81534_attach(struct usb_serial *serial)11401082{11411083 struct f81534_serial_private *serial_priv;···11041140 usb_set_serial_data(serial, serial_priv);1105114111061142 mutex_init(&serial_priv->urb_mutex);11071107-11081108- status = f81534_setup_ports(serial);11091109- if (status)11101110- return status;1111114311121144 /* Check had custom setting */11131145 status = f81534_find_config_idx(serial, &serial_priv->setting_idx);