linux/drivers/usb/serial/siemens_mpi.c
<<
>>
Prefs
   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 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        .num_ports =            1,
  46};
  47
  48static 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;
  61failed_usb_register:
  62        usb_serial_deregister(&siemens_usb_mpi_device);
  63failed_usb_serial_register:
  64        return retval;
  65}
  66
  67static 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
  73module_init(siemens_usb_mpi_init);
  74module_exit(siemens_usb_mpi_exit);
  75MODULE_AUTHOR(DRIVER_AUTHOR);
  76MODULE_DESCRIPTION(DRIVER_DESC);
  77MODULE_LICENSE("GPL");
  78