Commit baf12d6d authored by Guido Kiener's avatar Guido Kiener Committed by Greg Kroah-Hartman
Browse files

usb: usbtmc: Remove rigol_quirk



All T&M instruments should also work with rigol_quirk = 1 code path.
So remove unnecessary code in rigol_quirk = 0 code path to simplify the driver.

Tested-by: default avatarDave Penkler <dpenkler@gmail.com>
Reviewed-by: default avatarSteve Bayless <steve_bayless@keysight.com>
Signed-off-by: default avatarGuido Kiener <guido.kiener@rohde-schwarz.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 58318cd4
Loading
Loading
Loading
Loading
+12 −69
Original line number Original line Diff line number Diff line
@@ -21,7 +21,6 @@
#include <linux/usb/tmc.h>
#include <linux/usb/tmc.h>




#define RIGOL			1
#define USBTMC_HEADER_SIZE	12
#define USBTMC_HEADER_SIZE	12
#define USBTMC_MINOR_BASE	176
#define USBTMC_MINOR_BASE	176


@@ -93,8 +92,6 @@ struct usbtmc_device_data {
	/* coalesced usb488_caps from usbtmc_dev_capabilities */
	/* coalesced usb488_caps from usbtmc_dev_capabilities */
	__u8 usb488_caps;
	__u8 usb488_caps;


	u8 rigol_quirk;

	/* attributes from the USB TMC spec for this device */
	/* attributes from the USB TMC spec for this device */
	u8 TermChar;
	u8 TermChar;
	bool TermCharEnabled;
	bool TermCharEnabled;
@@ -110,17 +107,6 @@ struct usbtmc_device_data {
};
};
#define to_usbtmc_data(d) container_of(d, struct usbtmc_device_data, kref)
#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 },
	{ 0x1ab1, 0x04b0 },
	{ 0, 0 }
};

/* Forward declarations */
/* Forward declarations */
static struct usb_driver usbtmc_driver;
static struct usb_driver usbtmc_driver;


@@ -603,7 +589,6 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
		goto exit;
		goto exit;
	}
	}


	if (data->rigol_quirk) {
	dev_dbg(dev, "usb_bulk_msg_in: count(%zu)\n", count);
	dev_dbg(dev, "usb_bulk_msg_in: count(%zu)\n", count);


	retval = send_request_dev_dep_msg_in(data, count);
	retval = send_request_dev_dep_msg_in(data, count);
@@ -613,7 +598,6 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
			usbtmc_ioctl_abort_bulk_out(data);
			usbtmc_ioctl_abort_bulk_out(data);
		goto exit;
		goto exit;
	}
	}
	}


	/* Loop until we have fetched everything we requested */
	/* Loop until we have fetched everything we requested */
	remaining = count;
	remaining = count;
@@ -621,23 +605,6 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
	done = 0;
	done = 0;


	while (remaining > 0) {
	while (remaining > 0) {
		if (!data->rigol_quirk) {
			dev_dbg(dev, "usb_bulk_msg_in: remaining(%zu), count(%zu)\n", remaining, count);

			if (remaining > USBTMC_SIZE_IOBUFFER - USBTMC_HEADER_SIZE - 3)
				this_part = USBTMC_SIZE_IOBUFFER - USBTMC_HEADER_SIZE - 3;
			else
				this_part = remaining;

			retval = send_request_dev_dep_msg_in(data, this_part);
			if (retval < 0) {
			dev_err(dev, "usb_bulk_msg returned %d\n", retval);
				if (data->auto_abort)
					usbtmc_ioctl_abort_bulk_out(data);
				goto exit;
			}
		}

		/* Send bulk URB */
		/* Send bulk URB */
		retval = usb_bulk_msg(data->usb_dev,
		retval = usb_bulk_msg(data->usb_dev,
				      usb_rcvbulkpipe(data->usb_dev,
				      usb_rcvbulkpipe(data->usb_dev,
@@ -658,7 +625,7 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
		}
		}


		/* Parse header in first packet */
		/* Parse header in first packet */
		if ((done == 0) || !data->rigol_quirk) {
		if (done == 0) {
			/* Sanity checks for the header */
			/* Sanity checks for the header */
			if (actual < USBTMC_HEADER_SIZE) {
			if (actual < USBTMC_HEADER_SIZE) {
				dev_err(dev, "Device sent too small first packet: %u < %u\n", actual, USBTMC_HEADER_SIZE);
				dev_err(dev, "Device sent too small first packet: %u < %u\n", actual, USBTMC_HEADER_SIZE);
@@ -698,20 +665,11 @@ static ssize_t usbtmc_read(struct file *filp, char __user *buf,
			actual -= USBTMC_HEADER_SIZE;
			actual -= USBTMC_HEADER_SIZE;


			/* Check if the message is smaller than requested */
			/* Check if the message is smaller than requested */
			if (data->rigol_quirk) {
			if (remaining > n_characters)
			if (remaining > n_characters)
				remaining = n_characters;
				remaining = n_characters;
			/* Remove padding if it exists */
			/* Remove padding if it exists */
			if (actual > remaining)
			if (actual > remaining)
				actual = remaining;
				actual = remaining;
			}
			else {
				if (this_part > n_characters)
					this_part = n_characters;
				/* Remove padding if it exists */
				if (actual > this_part)
					actual = this_part;
			}


			dev_dbg(dev, "Bulk-IN header: N_characters(%u), bTransAttr(%u)\n", n_characters, buffer[8]);
			dev_dbg(dev, "Bulk-IN header: N_characters(%u), bTransAttr(%u)\n", n_characters, buffer[8]);


@@ -1365,7 +1323,6 @@ static int usbtmc_probe(struct usb_interface *intf,
	struct usbtmc_device_data *data;
	struct usbtmc_device_data *data;
	struct usb_host_interface *iface_desc;
	struct usb_host_interface *iface_desc;
	struct usb_endpoint_descriptor *bulk_in, *bulk_out, *int_in;
	struct usb_endpoint_descriptor *bulk_in, *bulk_out, *int_in;
	int n;
	int retcode;
	int retcode;


	dev_dbg(&intf->dev, "%s called\n", __func__);
	dev_dbg(&intf->dev, "%s called\n", __func__);
@@ -1385,20 +1342,6 @@ static int usbtmc_probe(struct usb_interface *intf,
	atomic_set(&data->srq_asserted, 0);
	atomic_set(&data->srq_asserted, 0);
	data->zombie = 0;
	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",
		le16_to_cpu(data->usb_dev->descriptor.idVendor),
		le16_to_cpu(data->usb_dev->descriptor.idProduct));
	for(n = 0; usbtmc_id_quirk[n].idVendor > 0; n++) {
		if ((usbtmc_id_quirk[n].idVendor == le16_to_cpu(data->usb_dev->descriptor.idVendor)) &&
		    (usbtmc_id_quirk[n].idProduct == le16_to_cpu(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 */
	/* Initialize USBTMC bTag and other fields */
	data->bTag	= 1;
	data->bTag	= 1;
	data->TermCharEnabled = 0;
	data->TermCharEnabled = 0;