|
@@ -57,6 +57,88 @@
|
|
|
|
|
|
#define OPEN_TIMEOUT (5*HZ) /* 5 seconds */
|
|
|
|
|
|
+static const struct usb_device_id edgeport_2port_id_table[] = {
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_421) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_21) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2_DIN) },
|
|
|
+ { }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct usb_device_id edgeport_4port_id_table[] = {
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_RAPIDPORT_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4T) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4_DIN) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
|
|
|
+ { }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct usb_device_id edgeport_8port_id_table[] = {
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
|
|
|
+ { }
|
|
|
+};
|
|
|
+
|
|
|
+static const struct usb_device_id Epic_port_id_table[] = {
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
|
|
|
+ { }
|
|
|
+};
|
|
|
+
|
|
|
+/* Devices that this driver supports */
|
|
|
+static const struct usb_device_id id_table_combined[] = {
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_RAPIDPORT_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4T) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_421) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_21) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2_DIN) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4_DIN) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8I) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
|
|
|
+ { USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
|
|
|
+ { } /* Terminating entry */
|
|
|
+};
|
|
|
+
|
|
|
+MODULE_DEVICE_TABLE(usb, id_table_combined);
|
|
|
+
|
|
|
+
|
|
|
/* receive port state */
|
|
|
enum RXSTATE {
|
|
|
EXPECT_HDR1 = 0, /* Expect header byte 1 */
|
|
@@ -217,8 +299,6 @@ static void edge_release(struct usb_serial *serial);
|
|
|
static int edge_port_probe(struct usb_serial_port *port);
|
|
|
static int edge_port_remove(struct usb_serial_port *port);
|
|
|
|
|
|
-#include "io_tables.h" /* all of the devices that this driver supports */
|
|
|
-
|
|
|
/* function prototypes for all of our local functions */
|
|
|
|
|
|
static void process_rcvd_data(struct edgeport_serial *edge_serial,
|
|
@@ -3032,6 +3112,139 @@ static int edge_port_remove(struct usb_serial_port *port)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+static struct usb_serial_driver edgeport_2port_device = {
|
|
|
+ .driver = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .name = "edgeport_2",
|
|
|
+ },
|
|
|
+ .description = "Edgeport 2 port adapter",
|
|
|
+ .id_table = edgeport_2port_id_table,
|
|
|
+ .num_ports = 2,
|
|
|
+ .open = edge_open,
|
|
|
+ .close = edge_close,
|
|
|
+ .throttle = edge_throttle,
|
|
|
+ .unthrottle = edge_unthrottle,
|
|
|
+ .attach = edge_startup,
|
|
|
+ .disconnect = edge_disconnect,
|
|
|
+ .release = edge_release,
|
|
|
+ .port_probe = edge_port_probe,
|
|
|
+ .port_remove = edge_port_remove,
|
|
|
+ .ioctl = edge_ioctl,
|
|
|
+ .set_termios = edge_set_termios,
|
|
|
+ .tiocmget = edge_tiocmget,
|
|
|
+ .tiocmset = edge_tiocmset,
|
|
|
+ .tiocmiwait = usb_serial_generic_tiocmiwait,
|
|
|
+ .get_icount = usb_serial_generic_get_icount,
|
|
|
+ .write = edge_write,
|
|
|
+ .write_room = edge_write_room,
|
|
|
+ .chars_in_buffer = edge_chars_in_buffer,
|
|
|
+ .break_ctl = edge_break,
|
|
|
+ .read_int_callback = edge_interrupt_callback,
|
|
|
+ .read_bulk_callback = edge_bulk_in_callback,
|
|
|
+ .write_bulk_callback = edge_bulk_out_data_callback,
|
|
|
+};
|
|
|
+
|
|
|
+static struct usb_serial_driver edgeport_4port_device = {
|
|
|
+ .driver = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .name = "edgeport_4",
|
|
|
+ },
|
|
|
+ .description = "Edgeport 4 port adapter",
|
|
|
+ .id_table = edgeport_4port_id_table,
|
|
|
+ .num_ports = 4,
|
|
|
+ .open = edge_open,
|
|
|
+ .close = edge_close,
|
|
|
+ .throttle = edge_throttle,
|
|
|
+ .unthrottle = edge_unthrottle,
|
|
|
+ .attach = edge_startup,
|
|
|
+ .disconnect = edge_disconnect,
|
|
|
+ .release = edge_release,
|
|
|
+ .port_probe = edge_port_probe,
|
|
|
+ .port_remove = edge_port_remove,
|
|
|
+ .ioctl = edge_ioctl,
|
|
|
+ .set_termios = edge_set_termios,
|
|
|
+ .tiocmget = edge_tiocmget,
|
|
|
+ .tiocmset = edge_tiocmset,
|
|
|
+ .tiocmiwait = usb_serial_generic_tiocmiwait,
|
|
|
+ .get_icount = usb_serial_generic_get_icount,
|
|
|
+ .write = edge_write,
|
|
|
+ .write_room = edge_write_room,
|
|
|
+ .chars_in_buffer = edge_chars_in_buffer,
|
|
|
+ .break_ctl = edge_break,
|
|
|
+ .read_int_callback = edge_interrupt_callback,
|
|
|
+ .read_bulk_callback = edge_bulk_in_callback,
|
|
|
+ .write_bulk_callback = edge_bulk_out_data_callback,
|
|
|
+};
|
|
|
+
|
|
|
+static struct usb_serial_driver edgeport_8port_device = {
|
|
|
+ .driver = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .name = "edgeport_8",
|
|
|
+ },
|
|
|
+ .description = "Edgeport 8 port adapter",
|
|
|
+ .id_table = edgeport_8port_id_table,
|
|
|
+ .num_ports = 8,
|
|
|
+ .open = edge_open,
|
|
|
+ .close = edge_close,
|
|
|
+ .throttle = edge_throttle,
|
|
|
+ .unthrottle = edge_unthrottle,
|
|
|
+ .attach = edge_startup,
|
|
|
+ .disconnect = edge_disconnect,
|
|
|
+ .release = edge_release,
|
|
|
+ .port_probe = edge_port_probe,
|
|
|
+ .port_remove = edge_port_remove,
|
|
|
+ .ioctl = edge_ioctl,
|
|
|
+ .set_termios = edge_set_termios,
|
|
|
+ .tiocmget = edge_tiocmget,
|
|
|
+ .tiocmset = edge_tiocmset,
|
|
|
+ .tiocmiwait = usb_serial_generic_tiocmiwait,
|
|
|
+ .get_icount = usb_serial_generic_get_icount,
|
|
|
+ .write = edge_write,
|
|
|
+ .write_room = edge_write_room,
|
|
|
+ .chars_in_buffer = edge_chars_in_buffer,
|
|
|
+ .break_ctl = edge_break,
|
|
|
+ .read_int_callback = edge_interrupt_callback,
|
|
|
+ .read_bulk_callback = edge_bulk_in_callback,
|
|
|
+ .write_bulk_callback = edge_bulk_out_data_callback,
|
|
|
+};
|
|
|
+
|
|
|
+static struct usb_serial_driver epic_device = {
|
|
|
+ .driver = {
|
|
|
+ .owner = THIS_MODULE,
|
|
|
+ .name = "epic",
|
|
|
+ },
|
|
|
+ .description = "EPiC device",
|
|
|
+ .id_table = Epic_port_id_table,
|
|
|
+ .num_ports = 1,
|
|
|
+ .open = edge_open,
|
|
|
+ .close = edge_close,
|
|
|
+ .throttle = edge_throttle,
|
|
|
+ .unthrottle = edge_unthrottle,
|
|
|
+ .attach = edge_startup,
|
|
|
+ .disconnect = edge_disconnect,
|
|
|
+ .release = edge_release,
|
|
|
+ .port_probe = edge_port_probe,
|
|
|
+ .port_remove = edge_port_remove,
|
|
|
+ .ioctl = edge_ioctl,
|
|
|
+ .set_termios = edge_set_termios,
|
|
|
+ .tiocmget = edge_tiocmget,
|
|
|
+ .tiocmset = edge_tiocmset,
|
|
|
+ .tiocmiwait = usb_serial_generic_tiocmiwait,
|
|
|
+ .get_icount = usb_serial_generic_get_icount,
|
|
|
+ .write = edge_write,
|
|
|
+ .write_room = edge_write_room,
|
|
|
+ .chars_in_buffer = edge_chars_in_buffer,
|
|
|
+ .break_ctl = edge_break,
|
|
|
+ .read_int_callback = edge_interrupt_callback,
|
|
|
+ .read_bulk_callback = edge_bulk_in_callback,
|
|
|
+ .write_bulk_callback = edge_bulk_out_data_callback,
|
|
|
+};
|
|
|
+
|
|
|
+static struct usb_serial_driver * const serial_drivers[] = {
|
|
|
+ &edgeport_2port_device, &edgeport_4port_device,
|
|
|
+ &edgeport_8port_device, &epic_device, NULL
|
|
|
+};
|
|
|
+
|
|
|
module_usb_serial_driver(serial_drivers, id_table_combined);
|
|
|
|
|
|
MODULE_AUTHOR(DRIVER_AUTHOR);
|