Commit cbc30118 authored by Stephen Ware's avatar Stephen Ware Committed by Greg Kroah-Hartman

usb: vstusb.c : new driver for spectrometers used by Vernier Software & Technology, Inc.

This patch adds the vstusb driver to the drivers/usb/misc directory.
This driver provides support for Vernier Software & Technology
spectrometers, all made by Ocean Optics. The driver provides both IOCTL
and read()/write() methods for sending raw data to spectrometers across
the bulk channel. Each method allows for a configured timeout.

From: Stephen Ware <stephen.ware@eqware.net>
Signed-off-by: default avatarDennis O'Brien <dennis.obrien@eqware.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 29bac7b7
...@@ -92,6 +92,7 @@ Code Seq# Include File Comments ...@@ -92,6 +92,7 @@ Code Seq# Include File Comments
'J' 00-1F drivers/scsi/gdth_ioctl.h 'J' 00-1F drivers/scsi/gdth_ioctl.h
'K' all linux/kd.h 'K' all linux/kd.h
'L' 00-1F linux/loop.h 'L' 00-1F linux/loop.h
'L' 20-2F driver/usb/misc/vstusb.h
'L' E0-FF linux/ppdd.h encrypted disk device driver 'L' E0-FF linux/ppdd.h encrypted disk device driver
<http://linux01.gwdg.de/~alatham/ppdd.html> <http://linux01.gwdg.de/~alatham/ppdd.html>
'M' all linux/soundcard.h 'M' all linux/soundcard.h
......
...@@ -280,3 +280,18 @@ config USB_ISIGHTFW ...@@ -280,3 +280,18 @@ config USB_ISIGHTFW
The firmware for this driver must be extracted from the MacOS The firmware for this driver must be extracted from the MacOS
driver beforehand. Tools for doing so are available at driver beforehand. Tools for doing so are available at
http://bersace03.free.fr http://bersace03.free.fr
config USB_VST
tristate "USB VST driver"
depends on USB
help
This driver is intended for Vernier Software Technologies
bulk usb devices such as their Ocean-Optics spectrometers or
Labquest.
It is a bulk channel driver with configurable read and write
timeouts.
To compile this driver as a module, choose M here: the
module will be called vstusb.
...@@ -27,6 +27,7 @@ obj-$(CONFIG_USB_TEST) += usbtest.o ...@@ -27,6 +27,7 @@ obj-$(CONFIG_USB_TEST) += usbtest.o
obj-$(CONFIG_USB_TRANCEVIBRATOR) += trancevibrator.o obj-$(CONFIG_USB_TRANCEVIBRATOR) += trancevibrator.o
obj-$(CONFIG_USB_USS720) += uss720.o obj-$(CONFIG_USB_USS720) += uss720.o
obj-$(CONFIG_USB_SEVSEG) += usbsevseg.o obj-$(CONFIG_USB_SEVSEG) += usbsevseg.o
obj-$(CONFIG_USB_VST) += vstusb.o
obj-$(CONFIG_USB_SISUSBVGA) += sisusbvga/ obj-$(CONFIG_USB_SISUSBVGA) += sisusbvga/
......
This diff is collapsed.
...@@ -5,3 +5,4 @@ header-y += gadgetfs.h ...@@ -5,3 +5,4 @@ header-y += gadgetfs.h
header-y += midi.h header-y += midi.h
header-y += g_printer.h header-y += g_printer.h
header-y += tmc.h header-y += tmc.h
header-y += vstusb.h
/*****************************************************************************
* File: drivers/usb/misc/vstusb.h
*
* Purpose: Support for the bulk USB Vernier Spectrophotometers
*
* Author: EQware Engineering, Inc.
* Oregon City, OR, USA 97045
*
* Copyright: 2007, 2008
* Vernier Software & Technology
* Beaverton, OR, USA 97005
*
* Web: www.vernier.com
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*****************************************************************************/
/*****************************************************************************
*
* The vstusb module is a standard usb 'client' driver running on top of the
* standard usb host controller stack.
*
* In general, vstusb supports standard bulk usb pipes. It supports multiple
* devices and multiple pipes per device.
*
* The vstusb driver supports two interfaces:
* 1 - ioctl SEND_PIPE/RECV_PIPE - a general bulk write/read msg
* interface to any pipe with timeout support;
* 2 - standard read/write with ioctl config - offers standard read/write
* interface with ioctl configured pipes and timeouts.
*
* Both interfaces can be signal from other process and will abort its i/o
* operation.
*
* A timeout of 0 means NO timeout. The user can still terminate the read via
* signal.
*
* If using multiple threads with this driver, the user should ensure that
* any reads, writes, or ioctls are complete before closing the device.
* Changing read/write timeouts or pipes takes effect on next read/write.
*
*****************************************************************************/
struct vstusb_args {
union {
/* this struct is used for IOCTL_VSTUSB_SEND_PIPE, *
* IOCTL_VSTUSB_RECV_PIPE, and read()/write() fops */
struct {
void __user *buffer;
size_t count;
unsigned int timeout_ms;
int pipe;
};
/* this one is used for IOCTL_VSTUSB_CONFIG_RW */
struct {
int rd_pipe;
int rd_timeout_ms;
int wr_pipe;
int wr_timeout_ms;
};
};
};
#define VST_IOC_MAGIC 'L'
#define VST_IOC_FIRST 0x20
#define IOCTL_VSTUSB_SEND_PIPE _IO(VST_IOC_MAGIC, VST_IOC_FIRST)
#define IOCTL_VSTUSB_RECV_PIPE _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 1)
#define IOCTL_VSTUSB_CONFIG_RW _IO(VST_IOC_MAGIC, VST_IOC_FIRST + 2)
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment