diff options
author | Forest Bond <forest.bond@outpostembedded.com> | 2010-02-05 11:30:28 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-02 17:54:57 -0500 |
commit | 5272098365514ab232fa6a695d58c3961fec6b7a (patch) | |
tree | 26845df81c8727eb40f03a57e9d166ab5c49c016 | |
parent | 640e95abdfae9fef5949084c92e80c8f2f8b5ec5 (diff) |
USB: serial: Add support for ViVOtech ViVOpay devices.
Add support for USB serial interface provided by ViVOtech ViVOpay devices via
new driver vivopay-serial. Currently only the ViVOpay 8800 device is supported,
but support for similar devices can be added by adding the appropriate device
IDs to the driver.
Signed-off-by: Forest Bond <forest.bond@outpostembedded.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/serial/Kconfig | 8 | ||||
-rw-r--r-- | drivers/usb/serial/Makefile | 1 | ||||
-rw-r--r-- | drivers/usb/serial/vivopay-serial.c | 76 |
3 files changed, 85 insertions, 0 deletions
diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig index c480ea4c19f2..d9f289ca2bda 100644 --- a/drivers/usb/serial/Kconfig +++ b/drivers/usb/serial/Kconfig | |||
@@ -600,6 +600,14 @@ config USB_SERIAL_OPTICON | |||
600 | To compile this driver as a module, choose M here: the | 600 | To compile this driver as a module, choose M here: the |
601 | module will be called opticon. | 601 | module will be called opticon. |
602 | 602 | ||
603 | config USB_SERIAL_VIVOPAY_SERIAL | ||
604 | tristate "USB ViVOpay serial interface driver" | ||
605 | help | ||
606 | Say Y here if you want to use a ViVOtech ViVOpay USB device. | ||
607 | |||
608 | To compile this driver as a module, choose M here: the | ||
609 | module will be called vivopay-serial. | ||
610 | |||
603 | config USB_SERIAL_DEBUG | 611 | config USB_SERIAL_DEBUG |
604 | tristate "USB Debugging Device" | 612 | tristate "USB Debugging Device" |
605 | help | 613 | help |
diff --git a/drivers/usb/serial/Makefile b/drivers/usb/serial/Makefile index 66619beb6cc0..108c7d8f0c71 100644 --- a/drivers/usb/serial/Makefile +++ b/drivers/usb/serial/Makefile | |||
@@ -55,4 +55,5 @@ obj-$(CONFIG_USB_SERIAL_TI) += ti_usb_3410_5052.o | |||
55 | obj-$(CONFIG_USB_SERIAL_VISOR) += visor.o | 55 | obj-$(CONFIG_USB_SERIAL_VISOR) += visor.o |
56 | obj-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat.o | 56 | obj-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat.o |
57 | obj-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda.o | 57 | obj-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda.o |
58 | obj-$(CONFIG_USB_SERIAL_VIVOPAY_SERIAL) += vivopay-serial.o | ||
58 | 59 | ||
diff --git a/drivers/usb/serial/vivopay-serial.c b/drivers/usb/serial/vivopay-serial.c new file mode 100644 index 000000000000..f719d00972fc --- /dev/null +++ b/drivers/usb/serial/vivopay-serial.c | |||
@@ -0,0 +1,76 @@ | |||
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"); | ||