USB: usbtmc: Set rigol_quirk if device is listed
authorAlexandre Peixoto Ferreira <alexandref75@gmail.com>
Tue, 30 Apr 2013 05:51:52 +0000 (00:51 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 17 May 2013 00:50:51 +0000 (17:50 -0700)
These patches implement a modification of the USBTMC
protocol to allow operation with Rigol equipment. It an idVendor and
idProduct is found on the usbtmc_id_quirk array, the rigol_quirk is set for
this device.

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

index 9c37042..fd2f90d 100644 (file)
@@ -1040,6 +1040,20 @@ static int usbtmc_probe(struct usb_interface *intf,
        mutex_init(&data->io_mutex);
        data->zombie = 0;
 
+       /* Determine if it is a Rigol or not */
+       data->rigol_quirk = 0;
+       dev_dbg(&intf->dev, "Trying to find if device Vendor 0x%04X Product 0x%04X has the RIGOL quirk\n",
+               data->usb_dev->descriptor.idVendor,
+               data->usb_dev->descriptor.idProduct);
+       for(n = 0; usbtmc_id_quirk[n].idVendor > 0; n++) {
+               if ((usbtmc_id_quirk[n].idVendor == data->usb_dev->descriptor.idVendor) &&
+                   (usbtmc_id_quirk[n].idProduct == data->usb_dev->descriptor.idProduct)) {
+                       dev_dbg(&intf->dev, "Setting this device as having the RIGOL quirk\n");
+                       data->rigol_quirk = 1;
+                       break;
+               }
+       }
+
        /* Initialize USBTMC bTag and other fields */
        data->bTag      = 1;
        data->TermCharEnabled = 0;