Merge branch 'ext3-latency-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6] / drivers / usb / serial / siemens_mpi.c
1 /*
2  * Siemens USB-MPI Serial USB driver
3  *
4  * Copyright (C) 2005 Thomas Hergenhahn <thomas.hergenhahn@suse.de>
5  * Copyright (C) 2005,2008 Greg Kroah-Hartman <gregkh@suse.de>
6  *
7  *      This program is free software; you can redistribute it and/or
8  *      modify it under the terms of the GNU General Public License version
9  *      2 as published by the Free Software Foundation.
10  */
11
12 #include <linux/kernel.h>
13 #include <linux/init.h>
14 #include <linux/tty.h>
15 #include <linux/module.h>
16 #include <linux/usb.h>
17 #include <linux/usb/serial.h>
18
19 /* Version Information */
20 #define DRIVER_VERSION "Version 0.1 09/26/2005"
21 #define DRIVER_AUTHOR "Thomas Hergenhahn@web.de http://libnodave.sf.net"
22 #define DRIVER_DESC "Driver for Siemens USB/MPI adapter"
23
24
25 static struct usb_device_id id_table[] = {
26         /* Vendor and product id for 6ES7-972-0CB20-0XA0 */
27         { USB_DEVICE(0x908, 0x0004) },
28         { },
29 };
30 MODULE_DEVICE_TABLE(usb, id_table);
31
32 static struct usb_driver siemens_usb_mpi_driver = {
33         .name =         "siemens_mpi",
34         .probe =        usb_serial_probe,
35         .disconnect =   usb_serial_disconnect,
36         .id_table =     id_table,
37 };
38
39 static struct usb_serial_driver siemens_usb_mpi_device = {
40         .driver = {
41                 .owner =        THIS_MODULE,
42                 .name =         "siemens_mpi",
43         },
44         .id_table =             id_table,
45         .num_ports =            1,
46 };
47
48 static int __init siemens_usb_mpi_init(void)
49 {
50         int retval;
51
52         retval = usb_serial_register(&siemens_usb_mpi_device);
53         if (retval)
54                 goto failed_usb_serial_register;
55         retval = usb_register(&siemens_usb_mpi_driver);
56         if (retval)
57                 goto failed_usb_register;
58         printk(KERN_INFO DRIVER_DESC "\n");
59         printk(KERN_INFO DRIVER_VERSION " " DRIVER_AUTHOR "\n");
60         return retval;
61 failed_usb_register:
62         usb_serial_deregister(&siemens_usb_mpi_device);
63 failed_usb_serial_register:
64         return retval;
65 }
66
67 static void __exit siemens_usb_mpi_exit(void)
68 {
69         usb_deregister(&siemens_usb_mpi_driver);
70         usb_serial_deregister(&siemens_usb_mpi_device);
71 }
72
73 module_init(siemens_usb_mpi_init);
74 module_exit(siemens_usb_mpi_exit);
75 MODULE_AUTHOR(DRIVER_AUTHOR);
76 MODULE_DESCRIPTION(DRIVER_DESC);
77 MODULE_LICENSE("GPL");