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 const 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 const 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 const 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 const 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 const 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_serial_driver edgeport_2port_device = {
99	.driver = {
100		.owner		= THIS_MODULE,
101		.name		= "edgeport_2",
102	},
103	.description		= "Edgeport 2 port adapter",
104	.id_table		= edgeport_2port_id_table,
105	.num_ports		= 2,
106	.open			= edge_open,
107	.close			= edge_close,
108	.throttle		= edge_throttle,
109	.unthrottle		= edge_unthrottle,
110	.attach			= edge_startup,
111	.disconnect		= edge_disconnect,
112	.release		= edge_release,
113	.port_probe		= edge_port_probe,
114	.port_remove		= edge_port_remove,
115	.ioctl			= edge_ioctl,
116	.set_termios		= edge_set_termios,
117	.tiocmget		= edge_tiocmget,
118	.tiocmset		= edge_tiocmset,
119	.tiocmiwait		= usb_serial_generic_tiocmiwait,
120	.get_icount		= usb_serial_generic_get_icount,
121	.write			= edge_write,
122	.write_room		= edge_write_room,
123	.chars_in_buffer	= edge_chars_in_buffer,
124	.break_ctl		= edge_break,
125	.read_int_callback	= edge_interrupt_callback,
126	.read_bulk_callback	= edge_bulk_in_callback,
127	.write_bulk_callback	= edge_bulk_out_data_callback,
128};
129
130static struct usb_serial_driver edgeport_4port_device = {
131	.driver = {
132		.owner		= THIS_MODULE,
133		.name		= "edgeport_4",
134	},
135	.description		= "Edgeport 4 port adapter",
136	.id_table		= edgeport_4port_id_table,
137	.num_ports		= 4,
138	.open			= edge_open,
139	.close			= edge_close,
140	.throttle		= edge_throttle,
141	.unthrottle		= edge_unthrottle,
142	.attach			= edge_startup,
143	.disconnect		= edge_disconnect,
144	.release		= edge_release,
145	.port_probe		= edge_port_probe,
146	.port_remove		= edge_port_remove,
147	.ioctl			= edge_ioctl,
148	.set_termios		= edge_set_termios,
149	.tiocmget		= edge_tiocmget,
150	.tiocmset		= edge_tiocmset,
151	.tiocmiwait		= usb_serial_generic_tiocmiwait,
152	.get_icount		= usb_serial_generic_get_icount,
153	.write			= edge_write,
154	.write_room		= edge_write_room,
155	.chars_in_buffer	= edge_chars_in_buffer,
156	.break_ctl		= edge_break,
157	.read_int_callback	= edge_interrupt_callback,
158	.read_bulk_callback	= edge_bulk_in_callback,
159	.write_bulk_callback	= edge_bulk_out_data_callback,
160};
161
162static struct usb_serial_driver edgeport_8port_device = {
163	.driver = {
164		.owner		= THIS_MODULE,
165		.name		= "edgeport_8",
166	},
167	.description		= "Edgeport 8 port adapter",
168	.id_table		= edgeport_8port_id_table,
169	.num_ports		= 8,
170	.open			= edge_open,
171	.close			= edge_close,
172	.throttle		= edge_throttle,
173	.unthrottle		= edge_unthrottle,
174	.attach			= edge_startup,
175	.disconnect		= edge_disconnect,
176	.release		= edge_release,
177	.port_probe		= edge_port_probe,
178	.port_remove		= edge_port_remove,
179	.ioctl			= edge_ioctl,
180	.set_termios		= edge_set_termios,
181	.tiocmget		= edge_tiocmget,
182	.tiocmset		= edge_tiocmset,
183	.tiocmiwait		= usb_serial_generic_tiocmiwait,
184	.get_icount		= usb_serial_generic_get_icount,
185	.write			= edge_write,
186	.write_room		= edge_write_room,
187	.chars_in_buffer	= edge_chars_in_buffer,
188	.break_ctl		= edge_break,
189	.read_int_callback	= edge_interrupt_callback,
190	.read_bulk_callback	= edge_bulk_in_callback,
191	.write_bulk_callback	= edge_bulk_out_data_callback,
192};
193
194static struct usb_serial_driver epic_device = {
195	.driver = {
196		.owner		= THIS_MODULE,
197		.name		= "epic",
198	},
199	.description		= "EPiC device",
200	.id_table		= Epic_port_id_table,
201	.num_ports		= 1,
202	.open			= edge_open,
203	.close			= edge_close,
204	.throttle		= edge_throttle,
205	.unthrottle		= edge_unthrottle,
206	.attach			= edge_startup,
207	.disconnect		= edge_disconnect,
208	.release		= edge_release,
209	.port_probe		= edge_port_probe,
210	.port_remove		= edge_port_remove,
211	.ioctl			= edge_ioctl,
212	.set_termios		= edge_set_termios,
213	.tiocmget		= edge_tiocmget,
214	.tiocmset		= edge_tiocmset,
215	.tiocmiwait		= usb_serial_generic_tiocmiwait,
216	.get_icount		= usb_serial_generic_get_icount,
217	.write			= edge_write,
218	.write_room		= edge_write_room,
219	.chars_in_buffer	= edge_chars_in_buffer,
220	.break_ctl		= edge_break,
221	.read_int_callback	= edge_interrupt_callback,
222	.read_bulk_callback	= edge_bulk_in_callback,
223	.write_bulk_callback	= edge_bulk_out_data_callback,
224};
225
226static struct usb_serial_driver * const serial_drivers[] = {
227	&edgeport_2port_device, &edgeport_4port_device,
228	&edgeport_8port_device, &epic_device, NULL
229};
230
231#endif
232
233