|
|
@@ -699,6 +699,19 @@ MODULE_FIRMWARE("keyspan_pda/keyspan_pda.fw");
|
|
|
MODULE_FIRMWARE("keyspan_pda/xircom_pgs.fw");
|
|
|
#endif
|
|
|
|
|
|
+static int keyspan_pda_attach(struct usb_serial *serial)
|
|
|
+{
|
|
|
+ unsigned char num_ports = serial->num_ports;
|
|
|
+
|
|
|
+ if (serial->num_bulk_out < num_ports ||
|
|
|
+ serial->num_interrupt_in < num_ports) {
|
|
|
+ dev_err(&serial->interface->dev, "missing endpoints\n");
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static int keyspan_pda_port_probe(struct usb_serial_port *port)
|
|
|
{
|
|
|
|
|
|
@@ -776,6 +789,7 @@ static struct usb_serial_driver keyspan_pda_device = {
|
|
|
.break_ctl = keyspan_pda_break_ctl,
|
|
|
.tiocmget = keyspan_pda_tiocmget,
|
|
|
.tiocmset = keyspan_pda_tiocmset,
|
|
|
+ .attach = keyspan_pda_attach,
|
|
|
.port_probe = keyspan_pda_port_probe,
|
|
|
.port_remove = keyspan_pda_port_remove,
|
|
|
};
|