Skip to content

Commit

Permalink
USB: serial: Add support for ViVOtech ViVOpay devices.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Forest Bond authored and Greg Kroah-Hartman committed Mar 2, 2010
1 parent 640e95a commit 5272098
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 0 deletions.
8 changes: 8 additions & 0 deletions drivers/usb/serial/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,14 @@ config USB_SERIAL_OPTICON
To compile this driver as a module, choose M here: the
module will be called opticon.

config USB_SERIAL_VIVOPAY_SERIAL
tristate "USB ViVOpay serial interface driver"
help
Say Y here if you want to use a ViVOtech ViVOpay USB device.

To compile this driver as a module, choose M here: the
module will be called vivopay-serial.

config USB_SERIAL_DEBUG
tristate "USB Debugging Device"
help
Expand Down
1 change: 1 addition & 0 deletions drivers/usb/serial/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,5 @@ obj-$(CONFIG_USB_SERIAL_TI) += ti_usb_3410_5052.o
obj-$(CONFIG_USB_SERIAL_VISOR) += visor.o
obj-$(CONFIG_USB_SERIAL_WHITEHEAT) += whiteheat.o
obj-$(CONFIG_USB_SERIAL_XIRCOM) += keyspan_pda.o
obj-$(CONFIG_USB_SERIAL_VIVOPAY_SERIAL) += vivopay-serial.o

76 changes: 76 additions & 0 deletions drivers/usb/serial/vivopay-serial.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
/*
* Copyright (C) 2001-2005 Greg Kroah-Hartman (greg@kroah.com)
* Copyright (C) 2009 Outpost Embedded, LLC
*/

#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>


#define DRIVER_VERSION "v1.0"
#define DRIVER_DESC "ViVOpay USB Serial Driver"

#define VIVOPAY_VENDOR_ID 0x1d5f


static struct usb_device_id id_table [] = {
/* ViVOpay 8800 */
{ USB_DEVICE(VIVOPAY_VENDOR_ID, 0x1004) },
{ },
};

MODULE_DEVICE_TABLE(usb, id_table);

static struct usb_driver vivopay_serial_driver = {
.name = "vivopay-serial",
.probe = usb_serial_probe,
.disconnect = usb_serial_disconnect,
.id_table = id_table,
.no_dynamic_id = 1,
};

static struct usb_serial_driver vivopay_serial_device = {
.driver = {
.owner = THIS_MODULE,
.name = "vivopay-serial",
},
.id_table = id_table,
.usb_driver = &vivopay_serial_driver,
.num_ports = 1,
};

static int __init vivopay_serial_init(void)
{
int retval;
retval = usb_serial_register(&vivopay_serial_device);
if (retval)
goto failed_usb_serial_register;
retval = usb_register(&vivopay_serial_driver);
if (retval)
goto failed_usb_register;
printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
DRIVER_DESC "\n");
return 0;
failed_usb_register:
usb_serial_deregister(&vivopay_serial_device);
failed_usb_serial_register:
return retval;
}

static void __exit vivopay_serial_exit(void)
{
usb_deregister(&vivopay_serial_driver);
usb_serial_deregister(&vivopay_serial_device);
}

module_init(vivopay_serial_init);
module_exit(vivopay_serial_exit);

MODULE_AUTHOR("Forest Bond <forest.bond@outpostembedded.com>");
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_VERSION(DRIVER_VERSION);
MODULE_LICENSE("GPL");

0 comments on commit 5272098

Please sign in to comment.