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 25static const struct usb_device_id id_table[] = { 26 /* Vendor and product id for 6ES7-972-0CB20-0XA0 */ 27 { USB_DEVICE(0x908, 0x0004) }, 28 { }, 29}; 30MODULE_DEVICE_TABLE(usb, id_table); 31 32static 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 39static 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 49static 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; 62failed_usb_register: 63 usb_serial_deregister(&siemens_usb_mpi_device); 64failed_usb_serial_register: 65 return retval; 66} 67 68static 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 74module_init(siemens_usb_mpi_init); 75module_exit(siemens_usb_mpi_exit); 76MODULE_AUTHOR(DRIVER_AUTHOR); 77MODULE_DESCRIPTION(DRIVER_DESC); 78MODULE_LICENSE("GPL"); 79