USB: usbtmc: Add flag rigol_quirk to usbtmc_device_data
authorAlexandre Peixoto Ferreira <alexandref75@gmail.com>
Tue, 30 Apr 2013 05:51:50 +0000 (00:51 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2013 00:50:50 +0000 (17:50 -0700)
These patches implement a modification of the USBTMC
protocol to allow operation with Rigol equipment. Rigol requires that a
single TMC request to receive any buffer size and bulk requests to get the
data. The original algorithm sends a TMC request for each subset of the data
(a single USB transaction). The modification is only active for Rigol
equipment, vendor and product set is contained in the array usbtmc_id_quirk.

This patch creates the rigol_quirk variable and the arrays for the
idvendor and idproduct.

Signed-off-by: Alexandre Peixoto Ferreira <alexandref75@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/class/usbtmc.c

index 4c5506ae5e450db8a0977a618eb5e697bd6be1d0..c450b047e3652d7e392dfaea6328ccff289c5140 100644 (file)
@@ -31,6 +31,8 @@
 #include <linux/usb/tmc.h>
 
 
+#define RIGOL                  1
+#define USBTMC_HEADER_SIZE     12
 #define USBTMC_MINOR_BASE      176
 
 /*
@@ -84,6 +86,8 @@ struct usbtmc_device_data {
        u8 bTag_last_write;     /* needed for abort */
        u8 bTag_last_read;      /* needed for abort */
 
+       u8 rigol_quirk;
+
        /* attributes from the USB TMC spec for this device */
        u8 TermChar;
        bool TermCharEnabled;
@@ -97,6 +101,16 @@ struct usbtmc_device_data {
 };
 #define to_usbtmc_data(d) container_of(d, struct usbtmc_device_data, kref)
 
+struct usbtmc_ID_rigol_quirk {
+       __u16 idVendor;
+       __u16 idProduct;
+};
+
+static const struct usbtmc_ID_rigol_quirk usbtmc_id_quirk[] = {
+       { 0x1ab1, 0x0588 },
+       { 0, 0 }
+};
+
 /* Forward declarations */
 static struct usb_driver usbtmc_driver;