USB: ch341: forward USB errors to USB serial core
[pandora-kernel.git] / drivers / usb / serial / zio.c
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
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
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");