11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IO Edgeport Driver tables
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	Copyright (C) 2001
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	    Greg Kroah-Hartman (greg@kroah.com)
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	This program is free software; you can redistribute it and/or modify
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	it under the terms of the GNU General Public License as published by
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	the Free Software Foundation; either version 2 of the License, or
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *	(at your option) any later version.
1103f0dbf74c7a117c270e63d62d5e4927af6f295bAlan Cox *
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef IO_TABLES_H
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IO_TABLES_H
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
177d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id edgeport_2port_id_table[] = {
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2) },
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2I) },
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_421) },
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_21) },
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2_DIN) },
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
267d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id edgeport_4port_id_table[] = {
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4) },
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_RAPIDPORT_4) },
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4T) },
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4I) },
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4_DIN) },
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
407d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id edgeport_8port_id_table[] = {
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8) },
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8I) },
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ }
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
507d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id Epic_port_id_table[] = {
516e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
526e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
536e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
546e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
556e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
566e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
576e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
586e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
596e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ }
606e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman};
616e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Devices that this driver supports */
637d40d7e85a25e01948bcb4dc3eda1355af318337Németh Mártonstatic const struct usb_device_id id_table_combined[] = {
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4) },
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_RAPIDPORT_4) },
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4T) },
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2) },
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4I) },
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2I) },
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_421) },
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_21) },
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8) },
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2_DIN) },
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4_DIN) },
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8I) },
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
856e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
866e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
876e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
886e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
896e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
906e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
916e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
926e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
9303f0dbf74c7a117c270e63d62d5e4927af6f295bAlan Cox	{ } /* Terminating entry */
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
9603f0dbf74c7a117c270e63d62d5e4927af6f295bAlan CoxMODULE_DEVICE_TABLE(usb, id_table_combined);
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
98d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzlstatic struct usb_driver io_driver = {
99d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl	.name =		"io_edgeport",
100d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl	.probe =	usb_serial_probe,
101d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl	.disconnect =	usb_serial_disconnect,
102d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl	.id_table =	id_table_combined,
103d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl};
104d9b1b787736852f462dbf277b3ca708cbbf693aeJohannes Hölzl
105ea65370d025f5005649e5cb37c4d025e92c6fc38Greg Kroah-Hartmanstatic struct usb_serial_driver edgeport_2port_device = {
10618fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	.driver = {
10718fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman		.owner		= THIS_MODULE,
108269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman		.name		= "edgeport_2",
10918fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	},
110269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman	.description		= "Edgeport 2 port adapter",
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.id_table		= edgeport_2port_id_table,
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.num_ports		= 2,
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.open			= edge_open,
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.close			= edge_close,
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.throttle		= edge_throttle,
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.unthrottle		= edge_unthrottle,
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.attach			= edge_startup,
118f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.disconnect		= edge_disconnect,
119f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.release		= edge_release,
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.ioctl			= edge_ioctl,
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.set_termios		= edge_set_termios,
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmget		= edge_tiocmget,
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmset		= edge_tiocmset,
1240bca1b913affbd7e2fdaffee62a499659a466eb5Alan Cox	.get_icount		= edge_get_icount,
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write			= edge_write,
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_room		= edge_write_room,
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.chars_in_buffer	= edge_chars_in_buffer,
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.break_ctl		= edge_break,
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_int_callback	= edge_interrupt_callback,
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_bulk_callback	= edge_bulk_in_callback,
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_bulk_callback	= edge_bulk_out_data_callback,
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
134ea65370d025f5005649e5cb37c4d025e92c6fc38Greg Kroah-Hartmanstatic struct usb_serial_driver edgeport_4port_device = {
13518fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	.driver = {
13618fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman		.owner		= THIS_MODULE,
137269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman		.name		= "edgeport_4",
13818fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	},
139269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman	.description		= "Edgeport 4 port adapter",
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.id_table		= edgeport_4port_id_table,
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.num_ports		= 4,
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.open			= edge_open,
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.close			= edge_close,
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.throttle		= edge_throttle,
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.unthrottle		= edge_unthrottle,
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.attach			= edge_startup,
147f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.disconnect		= edge_disconnect,
148f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.release		= edge_release,
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.ioctl			= edge_ioctl,
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.set_termios		= edge_set_termios,
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmget		= edge_tiocmget,
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmset		= edge_tiocmset,
1530bca1b913affbd7e2fdaffee62a499659a466eb5Alan Cox	.get_icount		= edge_get_icount,
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write			= edge_write,
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_room		= edge_write_room,
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.chars_in_buffer	= edge_chars_in_buffer,
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.break_ctl		= edge_break,
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_int_callback	= edge_interrupt_callback,
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_bulk_callback	= edge_bulk_in_callback,
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_bulk_callback	= edge_bulk_out_data_callback,
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
163ea65370d025f5005649e5cb37c4d025e92c6fc38Greg Kroah-Hartmanstatic struct usb_serial_driver edgeport_8port_device = {
16418fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	.driver = {
16518fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman		.owner		= THIS_MODULE,
166269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman		.name		= "edgeport_8",
16718fcac353fdc7cd072b0d24c8667042e675a4c11Greg Kroah-Hartman	},
168269bda1c123c7caf88e1deb2264f9086f0344192Greg Kroah-Hartman	.description		= "Edgeport 8 port adapter",
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.id_table		= edgeport_8port_id_table,
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.num_ports		= 8,
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.open			= edge_open,
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.close			= edge_close,
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.throttle		= edge_throttle,
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.unthrottle		= edge_unthrottle,
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.attach			= edge_startup,
176f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.disconnect		= edge_disconnect,
177f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.release		= edge_release,
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.ioctl			= edge_ioctl,
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.set_termios		= edge_set_termios,
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmget		= edge_tiocmget,
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.tiocmset		= edge_tiocmset,
1820bca1b913affbd7e2fdaffee62a499659a466eb5Alan Cox	.get_icount		= edge_get_icount,
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write			= edge_write,
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_room		= edge_write_room,
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.chars_in_buffer	= edge_chars_in_buffer,
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.break_ctl		= edge_break,
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_int_callback	= edge_interrupt_callback,
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.read_bulk_callback	= edge_bulk_in_callback,
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.write_bulk_callback	= edge_bulk_out_data_callback,
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1926e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartmanstatic struct usb_serial_driver epic_device = {
1936e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.driver = {
1946e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman		.owner		= THIS_MODULE,
1956e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman		.name		= "epic",
1966e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	},
1976e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.description		= "EPiC device",
1986e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.id_table		= Epic_port_id_table,
1996e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.num_ports		= 1,
2006e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.open			= edge_open,
2016e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.close			= edge_close,
2026e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.throttle		= edge_throttle,
2036e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.unthrottle		= edge_unthrottle,
2046e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.attach			= edge_startup,
205f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.disconnect		= edge_disconnect,
206f9c99bb8b3a1ec81af68d484a551307326c2e933Alan Stern	.release		= edge_release,
2076e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.ioctl			= edge_ioctl,
2086e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.set_termios		= edge_set_termios,
2096e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.tiocmget		= edge_tiocmget,
2106e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.tiocmset		= edge_tiocmset,
2110bca1b913affbd7e2fdaffee62a499659a466eb5Alan Cox	.get_icount		= edge_get_icount,
2126e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.write			= edge_write,
2136e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.write_room		= edge_write_room,
2146e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.chars_in_buffer	= edge_chars_in_buffer,
2156e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.break_ctl		= edge_break,
2166e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.read_int_callback	= edge_interrupt_callback,
2176e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.read_bulk_callback	= edge_bulk_in_callback,
2186e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman	.write_bulk_callback	= edge_bulk_out_data_callback,
2196e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman};
2206e8cf7751f9fb913095d6142d068f41fbf0424bbGreg Kroah-Hartman
2217dbe2460989b10644651e779b17b683627feea48Alan Sternstatic struct usb_serial_driver * const serial_drivers[] = {
2227dbe2460989b10644651e779b17b683627feea48Alan Stern	&edgeport_2port_device, &edgeport_4port_device,
2237dbe2460989b10644651e779b17b683627feea48Alan Stern	&edgeport_8port_device, &epic_device, NULL
2247dbe2460989b10644651e779b17b683627feea48Alan Stern};
2257dbe2460989b10644651e779b17b683627feea48Alan Stern
2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
228