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 const 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 	.usb_driver =		&siemens_usb_mpi_driver,
46 	.num_ports =		1,
47 };
48 
siemens_usb_mpi_init(void)49 static int __init siemens_usb_mpi_init(void)
50 {
51 	int retval;
52 
53 	retval = usb_serial_register(&siemens_usb_mpi_device);
54 	if (retval)
55 		goto failed_usb_serial_register;
56 	retval = usb_register(&siemens_usb_mpi_driver);
57 	if (retval)
58 		goto failed_usb_register;
59 	printk(KERN_INFO DRIVER_DESC "\n");
60 	printk(KERN_INFO DRIVER_VERSION " " DRIVER_AUTHOR "\n");
61 	return retval;
62 failed_usb_register:
63 	usb_serial_deregister(&siemens_usb_mpi_device);
64 failed_usb_serial_register:
65 	return retval;
66 }
67 
siemens_usb_mpi_exit(void)68 static void __exit siemens_usb_mpi_exit(void)
69 {
70 	usb_deregister(&siemens_usb_mpi_driver);
71 	usb_serial_deregister(&siemens_usb_mpi_device);
72 }
73 
74 module_init(siemens_usb_mpi_init);
75 module_exit(siemens_usb_mpi_exit);
76 MODULE_AUTHOR(DRIVER_AUTHOR);
77 MODULE_DESCRIPTION(DRIVER_DESC);
78 MODULE_LICENSE("GPL");
79