1 /*
2  * ZIO Motherboard USB driver
3  *
4  * Copyright (C) 2010 Zilogic Systems <code@zilogic.com>
5  *
6  *	This program is free software; you can redistribute it and/or
7  *	modify it under the terms of the GNU General Public License version
8  *	2 as published by the Free Software Foundation.
9  */
10 
11 #include <linux/kernel.h>
12 #include <linux/init.h>
13 #include <linux/tty.h>
14 #include <linux/module.h>
15 #include <linux/usb.h>
16 #include <linux/usb/serial.h>
17 #include <linux/uaccess.h>
18 
19 static const struct usb_device_id id_table[] = {
20 	{ USB_DEVICE(0x1CBE, 0x0103) },
21 	{ },
22 };
23 MODULE_DEVICE_TABLE(usb, id_table);
24 
25 static struct usb_driver zio_driver = {
26 	.name =		"zio",
27 	.probe =	usb_serial_probe,
28 	.disconnect =	usb_serial_disconnect,
29 	.id_table =	id_table,
30 	.no_dynamic_id =	1,
31 };
32 
33 static struct usb_serial_driver zio_device = {
34 	.driver = {
35 		.owner =	THIS_MODULE,
36 		.name =		"zio",
37 	},
38 	.id_table =		id_table,
39 	.usb_driver =		&zio_driver,
40 	.num_ports =		1,
41 };
42 
zio_init(void)43 static int __init zio_init(void)
44 {
45 	int retval;
46 
47 	retval = usb_serial_register(&zio_device);
48 	if (retval)
49 		return retval;
50 	retval = usb_register(&zio_driver);
51 	if (retval)
52 		usb_serial_deregister(&zio_device);
53 	return retval;
54 }
55 
zio_exit(void)56 static void __exit zio_exit(void)
57 {
58 	usb_deregister(&zio_driver);
59 	usb_serial_deregister(&zio_device);
60 }
61 
62 module_init(zio_init);
63 module_exit(zio_exit);
64 MODULE_LICENSE("GPL");
65