USB: add siemens_mpi usb-serial "stub" driver
authorGreg Kroah-Hartman <gregkh@suse.de>
Thu, 4 Dec 2008 06:30:04 +0000 (22:30 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 7 Jan 2009 18:00:13 +0000 (10:00 -0800)
This driver got rescued from a few years ago and was requested to be
added.  So I cleaned it up, ported it to the latest kernel version and
here it is.

Cc: Thomas Hergenhahn <thomas.hergenhahn@suse.de>
Cc: Emmanuele <iemmav@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/serial/Kconfig
drivers/usb/serial/Makefile
drivers/usb/serial/siemens_mpi.c [new file with mode: 0644]

index da30784..b361f05 100644 (file)
@@ -496,6 +496,14 @@ config USB_SERIAL_SAFE_PADDED
        bool "USB Secure Encapsulated Driver - Padded"
        depends on USB_SERIAL_SAFE
 
+config USB_SERIAL_SIEMENS_MPI
+       tristate "USB Siemens MPI driver"
+       help
+         Say M here if you want to use a Siemens USB/MPI adapter.
+
+         To compile this driver as a module, choose M here: the
+         module will be called siemens_mpi.
+
 config USB_SERIAL_SIERRAWIRELESS
        tristate "USB Sierra Wireless Driver"
        help
index 9a4f59e..b75be91 100644 (file)
@@ -46,6 +46,7 @@ obj-$(CONFIG_USB_SERIAL_OPTION)                       += option.o
 obj-$(CONFIG_USB_SERIAL_OTI6858)               += oti6858.o
 obj-$(CONFIG_USB_SERIAL_PL2303)                        += pl2303.o
 obj-$(CONFIG_USB_SERIAL_SAFE)                  += safe_serial.o
+obj-$(CONFIG_USB_SERIAL_SIEMENS_MPI)           += siemens_mpi.o
 obj-$(CONFIG_USB_SERIAL_SIERRAWIRELESS)                += sierra.o
 obj-$(CONFIG_USB_SERIAL_SPCP8X5)               += spcp8x5.o
 obj-$(CONFIG_USB_SERIAL_TI)                    += ti_usb_3410_5052.o
diff --git a/drivers/usb/serial/siemens_mpi.c b/drivers/usb/serial/siemens_mpi.c
new file mode 100644 (file)
index 0000000..951ea0c
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Siemens USB-MPI Serial USB driver
+ *
+ * Copyright (C) 2005 Thomas Hergenhahn <thomas.hergenhahn@suse.de>
+ * Copyright (C) 2005,2008 Greg Kroah-Hartman <gregkh@suse.de>
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License version
+ *     2 as published by the Free Software Foundation.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/tty.h>
+#include <linux/module.h>
+#include <linux/usb.h>
+#include <linux/usb/serial.h>
+
+/* Version Information */
+#define DRIVER_VERSION "Version 0.1 09/26/2005"
+#define DRIVER_AUTHOR "Thomas Hergenhahn@web.de http://libnodave.sf.net"
+#define DRIVER_DESC "Driver for Siemens USB/MPI adapter"
+
+
+static struct usb_device_id id_table[] = {
+       /* Vendor and product id for 6ES7-972-0CB20-0XA0 */
+       { USB_DEVICE(0x908, 0x0004) },
+       { },
+};
+MODULE_DEVICE_TABLE(usb, id_table);
+
+static struct usb_driver siemens_usb_mpi_driver = {
+       .name =         "siemens_mpi",
+       .probe =        usb_serial_probe,
+       .disconnect =   usb_serial_disconnect,
+       .id_table =     id_table,
+};
+
+static struct usb_serial_driver siemens_usb_mpi_device = {
+       .driver = {
+               .owner =        THIS_MODULE,
+               .name =         "siemens_mpi",
+       },
+       .id_table =             id_table,
+       .num_ports =            1,
+};
+
+static int __init siemens_usb_mpi_init(void)
+{
+       int retval;
+
+       retval = usb_serial_register(&siemens_usb_mpi_device);
+       if (retval)
+               goto failed_usb_serial_register;
+       retval = usb_register(&siemens_usb_mpi_driver);
+       if (retval)
+               goto failed_usb_register;
+       printk(KERN_INFO DRIVER_DESC "\n");
+       printk(KERN_INFO DRIVER_VERSION " " DRIVER_AUTHOR "\n");
+       return retval;
+failed_usb_register:
+       usb_serial_deregister(&siemens_usb_mpi_device);
+failed_usb_serial_register:
+       return retval;
+}
+
+static void __exit siemens_usb_mpi_exit(void)
+{
+       usb_deregister(&siemens_usb_mpi_driver);
+       usb_serial_deregister(&siemens_usb_mpi_device);
+}
+
+module_init(siemens_usb_mpi_init);
+module_exit(siemens_usb_mpi_exit);
+MODULE_AUTHOR(DRIVER_AUTHOR);
+MODULE_DESCRIPTION(DRIVER_DESC);
+MODULE_LICENSE("GPL");