1/*
2 * IO Edgeport Driver tables
3 *
4 *	Copyright (C) 2001
5 *	    Greg Kroah-Hartman (greg@kroah.com)
6 *
7 *	This program is free software; you can redistribute it and/or modify
8 *	it under the terms of the GNU General Public License as published by
9 *	the Free Software Foundation; either version 2 of the License, or
10 *	(at your option) any later version.
11 *
12 */
13
14#ifndef IO_TABLES_H
15#define IO_TABLES_H
16
17static struct usb_device_id edgeport_2port_id_table [] = {
18	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2) },
19	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2I) },
20	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_421) },
21	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_21) },
22	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_2_DIN) },
23	{ }
24};
25
26static struct usb_device_id edgeport_4port_id_table [] = {
27	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4) },
28	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_RAPIDPORT_4) },
29	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4T) },
30	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
31	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4I) },
32	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
33	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_4_DIN) },
34	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
35	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
36	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
37	{ }
38};
39
40static struct usb_device_id edgeport_8port_id_table [] = {
41	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8) },
42	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
43	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8I) },
44	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
45	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
46	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
47	{ }
48};
49
50static struct usb_device_id Epic_port_id_table [] = {
51	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
52	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
53	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
54	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
55	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
56	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
57	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
58	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
59	{ }
60};
61
62/* Devices that this driver supports */
63static struct usb_device_id id_table_combined [] = {
64	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4) },
65	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_RAPIDPORT_4) },
66	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4T) },
67	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_MT4X56USB) },
68	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2) },
69	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4I) },
70	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2I) },
71	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_421) },
72	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_21) },
73	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8_DUAL_CPU) },
74	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8) },
75	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_2_DIN) },
76	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_4_DIN) },
77	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_16_DUAL_CPU) },
78	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_22I) },
79	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_4) },
80	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_COMPATIBLE) },
81	{ USB_DEVICE(USB_VENDOR_ID_ION,	ION_DEVICE_ID_EDGEPORT_8I) },
82	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8R) },
83	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_8RR) },
84	{ USB_DEVICE(USB_VENDOR_ID_ION, ION_DEVICE_ID_EDGEPORT_412_8) },
85	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0202) },
86	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0203) },
87	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0310) },
88	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0311) },
89	{ USB_DEVICE(USB_VENDOR_ID_NCR, NCR_DEVICE_ID_EPIC_0312) },
90	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A758) },
91	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A794) },
92	{ USB_DEVICE(USB_VENDOR_ID_AXIOHM, AXIOHM_DEVICE_ID_EPIC_A225) },
93	{ }							/* Terminating entry */
94};
95
96MODULE_DEVICE_TABLE (usb, id_table_combined);
97
98static struct usb_driver io_driver = {
99	.name =		"io_edgeport",
100	.probe =	usb_serial_probe,
101	.disconnect =	usb_serial_disconnect,
102	.id_table =	id_table_combined,
103	.no_dynamic_id = 	1,
104};
105
106static struct usb_serial_driver edgeport_2port_device = {
107	.driver = {
108		.owner		= THIS_MODULE,
109		.name		= "edgeport_2",
110	},
111	.description		= "Edgeport 2 port adapter",
112	.usb_driver		= &io_driver,
113	.id_table		= edgeport_2port_id_table,
114	.num_interrupt_in	= 1,
115	.num_bulk_in		= 1,
116	.num_bulk_out		= 1,
117	.num_ports		= 2,
118	.open			= edge_open,
119	.close			= edge_close,
120	.throttle		= edge_throttle,
121	.unthrottle		= edge_unthrottle,
122	.attach			= edge_startup,
123	.shutdown		= edge_shutdown,
124	.ioctl			= edge_ioctl,
125	.set_termios		= edge_set_termios,
126	.tiocmget		= edge_tiocmget,
127	.tiocmset		= edge_tiocmset,
128	.write			= edge_write,
129	.write_room		= edge_write_room,
130	.chars_in_buffer	= edge_chars_in_buffer,
131	.break_ctl		= edge_break,
132	.read_int_callback	= edge_interrupt_callback,
133	.read_bulk_callback	= edge_bulk_in_callback,
134	.write_bulk_callback	= edge_bulk_out_data_callback,
135};
136
137static struct usb_serial_driver edgeport_4port_device = {
138	.driver = {
139		.owner		= THIS_MODULE,
140		.name		= "edgeport_4",
141	},
142	.description		= "Edgeport 4 port adapter",
143	.usb_driver		= &io_driver,
144	.id_table		= edgeport_4port_id_table,
145	.num_interrupt_in	= 1,
146	.num_bulk_in		= 1,
147	.num_bulk_out		= 1,
148	.num_ports		= 4,
149	.open			= edge_open,
150	.close			= edge_close,
151	.throttle		= edge_throttle,
152	.unthrottle		= edge_unthrottle,
153	.attach			= edge_startup,
154	.shutdown		= edge_shutdown,
155	.ioctl			= edge_ioctl,
156	.set_termios		= edge_set_termios,
157	.tiocmget		= edge_tiocmget,
158	.tiocmset		= edge_tiocmset,
159	.write			= edge_write,
160	.write_room		= edge_write_room,
161	.chars_in_buffer	= edge_chars_in_buffer,
162	.break_ctl		= edge_break,
163	.read_int_callback	= edge_interrupt_callback,
164	.read_bulk_callback	= edge_bulk_in_callback,
165	.write_bulk_callback	= edge_bulk_out_data_callback,
166};
167
168static struct usb_serial_driver edgeport_8port_device = {
169	.driver = {
170		.owner		= THIS_MODULE,
171		.name		= "edgeport_8",
172	},
173	.description		= "Edgeport 8 port adapter",
174	.usb_driver		= &io_driver,
175	.id_table		= edgeport_8port_id_table,
176	.num_interrupt_in	= 1,
177	.num_bulk_in		= 1,
178	.num_bulk_out		= 1,
179	.num_ports		= 8,
180	.open			= edge_open,
181	.close			= edge_close,
182	.throttle		= edge_throttle,
183	.unthrottle		= edge_unthrottle,
184	.attach			= edge_startup,
185	.shutdown		= edge_shutdown,
186	.ioctl			= edge_ioctl,
187	.set_termios		= edge_set_termios,
188	.tiocmget		= edge_tiocmget,
189	.tiocmset		= edge_tiocmset,
190	.write			= edge_write,
191	.write_room		= edge_write_room,
192	.chars_in_buffer	= edge_chars_in_buffer,
193	.break_ctl		= edge_break,
194	.read_int_callback	= edge_interrupt_callback,
195	.read_bulk_callback	= edge_bulk_in_callback,
196	.write_bulk_callback	= edge_bulk_out_data_callback,
197};
198
199static struct usb_serial_driver epic_device = {
200	.driver = {
201		.owner		= THIS_MODULE,
202		.name		= "epic",
203	},
204	.description		= "EPiC device",
205	.id_table		= Epic_port_id_table,
206	.num_interrupt_in	= 1,
207	.num_bulk_in		= 1,
208	.num_bulk_out		= 1,
209	.num_ports		= 1,
210	.open			= edge_open,
211	.close			= edge_close,
212	.throttle		= edge_throttle,
213	.unthrottle		= edge_unthrottle,
214	.attach			= edge_startup,
215	.shutdown		= edge_shutdown,
216	.ioctl			= edge_ioctl,
217	.set_termios		= edge_set_termios,
218	.tiocmget		= edge_tiocmget,
219	.tiocmset		= edge_tiocmset,
220	.write			= edge_write,
221	.write_room		= edge_write_room,
222	.chars_in_buffer	= edge_chars_in_buffer,
223	.break_ctl		= edge_break,
224	.read_int_callback	= edge_interrupt_callback,
225	.read_bulk_callback	= edge_bulk_in_callback,
226	.write_bulk_callback	= edge_bulk_out_data_callback,
227};
228
229#endif
230