| Forest Bond | 5272098 | 2010-02-05 11:30:28 -0500 | [diff] [blame] | 1 | /* | 
|  | 2 | * Copyright (C) 2001-2005 Greg Kroah-Hartman (greg@kroah.com) | 
|  | 3 | * Copyright (C) 2009 Outpost Embedded, LLC | 
|  | 4 | */ | 
|  | 5 |  | 
|  | 6 | #include <linux/kernel.h> | 
|  | 7 | #include <linux/init.h> | 
|  | 8 | #include <linux/tty.h> | 
|  | 9 | #include <linux/module.h> | 
|  | 10 | #include <linux/usb.h> | 
|  | 11 | #include <linux/usb/serial.h> | 
|  | 12 |  | 
|  | 13 |  | 
|  | 14 | #define DRIVER_VERSION "v1.0" | 
|  | 15 | #define DRIVER_DESC "ViVOpay USB Serial Driver" | 
|  | 16 |  | 
|  | 17 | #define VIVOPAY_VENDOR_ID 0x1d5f | 
|  | 18 |  | 
|  | 19 |  | 
|  | 20 | static struct usb_device_id id_table [] = { | 
|  | 21 | /* ViVOpay 8800 */ | 
|  | 22 | { USB_DEVICE(VIVOPAY_VENDOR_ID, 0x1004) }, | 
|  | 23 | { }, | 
|  | 24 | }; | 
|  | 25 |  | 
|  | 26 | MODULE_DEVICE_TABLE(usb, id_table); | 
|  | 27 |  | 
|  | 28 | static struct usb_driver vivopay_serial_driver = { | 
|  | 29 | .name =			"vivopay-serial", | 
|  | 30 | .probe =		usb_serial_probe, | 
|  | 31 | .disconnect =		usb_serial_disconnect, | 
|  | 32 | .id_table =		id_table, | 
|  | 33 | .no_dynamic_id =	1, | 
|  | 34 | }; | 
|  | 35 |  | 
|  | 36 | static struct usb_serial_driver vivopay_serial_device = { | 
|  | 37 | .driver = { | 
|  | 38 | .owner =	THIS_MODULE, | 
|  | 39 | .name =		"vivopay-serial", | 
|  | 40 | }, | 
|  | 41 | .id_table =		id_table, | 
|  | 42 | .usb_driver =		&vivopay_serial_driver, | 
|  | 43 | .num_ports =		1, | 
|  | 44 | }; | 
|  | 45 |  | 
|  | 46 | static int __init vivopay_serial_init(void) | 
|  | 47 | { | 
|  | 48 | int retval; | 
|  | 49 | retval = usb_serial_register(&vivopay_serial_device); | 
|  | 50 | if (retval) | 
|  | 51 | goto failed_usb_serial_register; | 
|  | 52 | retval = usb_register(&vivopay_serial_driver); | 
|  | 53 | if (retval) | 
|  | 54 | goto failed_usb_register; | 
|  | 55 | printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" | 
|  | 56 | DRIVER_DESC "\n"); | 
|  | 57 | return 0; | 
|  | 58 | failed_usb_register: | 
|  | 59 | usb_serial_deregister(&vivopay_serial_device); | 
|  | 60 | failed_usb_serial_register: | 
|  | 61 | return retval; | 
|  | 62 | } | 
|  | 63 |  | 
|  | 64 | static void __exit vivopay_serial_exit(void) | 
|  | 65 | { | 
|  | 66 | usb_deregister(&vivopay_serial_driver); | 
|  | 67 | usb_serial_deregister(&vivopay_serial_device); | 
|  | 68 | } | 
|  | 69 |  | 
|  | 70 | module_init(vivopay_serial_init); | 
|  | 71 | module_exit(vivopay_serial_exit); | 
|  | 72 |  | 
|  | 73 | MODULE_AUTHOR("Forest Bond <forest.bond@outpostembedded.com>"); | 
|  | 74 | MODULE_DESCRIPTION(DRIVER_DESC); | 
|  | 75 | MODULE_VERSION(DRIVER_VERSION); | 
|  | 76 | MODULE_LICENSE("GPL"); |