mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
usb: usbtmc: Remove sysfs group TermChar and auto_abort
As all the properties of the usbtmc driver can now be controlled on a per file descriptor basis by ioctl functions the sysfs interface is of limited use. We are not aware about applications that are using the sysfs parameter TermChar, TermCharEnabled or auto_abort. Signed-off-by: Guido Kiener <guido.kiener@rohde-schwarz.com> Reviewed-by: Steve Bayless <steve_bayless@keysight.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
5848828387
commit
b32abf8f5d
@@ -25,38 +25,3 @@ Description:
|
|||||||
4.2.2.
|
4.2.2.
|
||||||
|
|
||||||
The files are read only.
|
The files are read only.
|
||||||
|
|
||||||
|
|
||||||
What: /sys/bus/usb/drivers/usbtmc/*/TermChar
|
|
||||||
Date: August 2008
|
|
||||||
Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
||||||
Description:
|
|
||||||
This file is the TermChar value to be sent to the USB TMC
|
|
||||||
device as described by the document, "Universal Serial Bus Test
|
|
||||||
and Measurement Class Specification
|
|
||||||
(USBTMC) Revision 1.0" as published by the USB-IF.
|
|
||||||
|
|
||||||
Note that the TermCharEnabled file determines if this value is
|
|
||||||
sent to the device or not.
|
|
||||||
|
|
||||||
|
|
||||||
What: /sys/bus/usb/drivers/usbtmc/*/TermCharEnabled
|
|
||||||
Date: August 2008
|
|
||||||
Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
||||||
Description:
|
|
||||||
This file determines if the TermChar is to be sent to the
|
|
||||||
device on every transaction or not. For more details about
|
|
||||||
this, please see the document, "Universal Serial Bus Test and
|
|
||||||
Measurement Class Specification (USBTMC) Revision 1.0" as
|
|
||||||
published by the USB-IF.
|
|
||||||
|
|
||||||
|
|
||||||
What: /sys/bus/usb/drivers/usbtmc/*/auto_abort
|
|
||||||
Date: August 2008
|
|
||||||
Contact: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
||||||
Description:
|
|
||||||
This file determines if the transaction of the USB TMC
|
|
||||||
device is to be automatically aborted if there is any error.
|
|
||||||
For more details about this, please see the document,
|
|
||||||
"Universal Serial Bus Test and Measurement Class Specification
|
|
||||||
(USBTMC) Revision 1.0" as published by the USB-IF.
|
|
||||||
|
@@ -102,11 +102,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;
|
||||||
|
|
||||||
/* attributes from the USB TMC spec for this device */
|
|
||||||
u8 TermChar;
|
|
||||||
bool TermCharEnabled;
|
|
||||||
bool auto_abort;
|
|
||||||
|
|
||||||
bool zombie; /* fd of disconnected device */
|
bool zombie; /* fd of disconnected device */
|
||||||
|
|
||||||
struct usbtmc_dev_capabilities capabilities;
|
struct usbtmc_dev_capabilities capabilities;
|
||||||
@@ -196,11 +191,10 @@ static int usbtmc_open(struct inode *inode, struct file *filp)
|
|||||||
|
|
||||||
atomic_set(&file_data->closing, 0);
|
atomic_set(&file_data->closing, 0);
|
||||||
|
|
||||||
/* copy default values from device settings */
|
|
||||||
file_data->timeout = USBTMC_TIMEOUT;
|
file_data->timeout = USBTMC_TIMEOUT;
|
||||||
file_data->term_char = data->TermChar;
|
file_data->term_char = '\n';
|
||||||
file_data->term_char_enabled = data->TermCharEnabled;
|
file_data->term_char_enabled = 0;
|
||||||
file_data->auto_abort = data->auto_abort;
|
file_data->auto_abort = 0;
|
||||||
file_data->eom_val = 1;
|
file_data->eom_val = 1;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&file_data->file_elem);
|
INIT_LIST_HEAD(&file_data->file_elem);
|
||||||
@@ -1851,72 +1845,6 @@ static const struct attribute_group capability_attr_grp = {
|
|||||||
.attrs = capability_attrs,
|
.attrs = capability_attrs,
|
||||||
};
|
};
|
||||||
|
|
||||||
static ssize_t TermChar_show(struct device *dev,
|
|
||||||
struct device_attribute *attr, char *buf)
|
|
||||||
{
|
|
||||||
struct usb_interface *intf = to_usb_interface(dev);
|
|
||||||
struct usbtmc_device_data *data = usb_get_intfdata(intf);
|
|
||||||
|
|
||||||
return sprintf(buf, "%c\n", data->TermChar);
|
|
||||||
}
|
|
||||||
|
|
||||||
static ssize_t TermChar_store(struct device *dev,
|
|
||||||
struct device_attribute *attr,
|
|
||||||
const char *buf, size_t count)
|
|
||||||
{
|
|
||||||
struct usb_interface *intf = to_usb_interface(dev);
|
|
||||||
struct usbtmc_device_data *data = usb_get_intfdata(intf);
|
|
||||||
|
|
||||||
if (count < 1)
|
|
||||||
return -EINVAL;
|
|
||||||
data->TermChar = buf[0];
|
|
||||||
return count;
|
|
||||||
}
|
|
||||||
static DEVICE_ATTR_RW(TermChar);
|
|
||||||
|
|
||||||
#define data_attribute(name) \
|
|
||||||
static ssize_t name##_show(struct device *dev, \
|
|
||||||
struct device_attribute *attr, char *buf) \
|
|
||||||
{ \
|
|
||||||
struct usb_interface *intf = to_usb_interface(dev); \
|
|
||||||
struct usbtmc_device_data *data = usb_get_intfdata(intf); \
|
|
||||||
\
|
|
||||||
return sprintf(buf, "%d\n", data->name); \
|
|
||||||
} \
|
|
||||||
static ssize_t name##_store(struct device *dev, \
|
|
||||||
struct device_attribute *attr, \
|
|
||||||
const char *buf, size_t count) \
|
|
||||||
{ \
|
|
||||||
struct usb_interface *intf = to_usb_interface(dev); \
|
|
||||||
struct usbtmc_device_data *data = usb_get_intfdata(intf); \
|
|
||||||
ssize_t result; \
|
|
||||||
unsigned val; \
|
|
||||||
\
|
|
||||||
result = sscanf(buf, "%u\n", &val); \
|
|
||||||
if (result != 1) \
|
|
||||||
result = -EINVAL; \
|
|
||||||
data->name = val; \
|
|
||||||
if (result < 0) \
|
|
||||||
return result; \
|
|
||||||
else \
|
|
||||||
return count; \
|
|
||||||
} \
|
|
||||||
static DEVICE_ATTR_RW(name)
|
|
||||||
|
|
||||||
data_attribute(TermCharEnabled);
|
|
||||||
data_attribute(auto_abort);
|
|
||||||
|
|
||||||
static struct attribute *data_attrs[] = {
|
|
||||||
&dev_attr_TermChar.attr,
|
|
||||||
&dev_attr_TermCharEnabled.attr,
|
|
||||||
&dev_attr_auto_abort.attr,
|
|
||||||
NULL,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct attribute_group data_attr_grp = {
|
|
||||||
.attrs = data_attrs,
|
|
||||||
};
|
|
||||||
|
|
||||||
static int usbtmc_ioctl_indicator_pulse(struct usbtmc_device_data *data)
|
static int usbtmc_ioctl_indicator_pulse(struct usbtmc_device_data *data)
|
||||||
{
|
{
|
||||||
struct device *dev;
|
struct device *dev;
|
||||||
@@ -2420,8 +2348,6 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|||||||
|
|
||||||
/* Initialize USBTMC bTag and other fields */
|
/* Initialize USBTMC bTag and other fields */
|
||||||
data->bTag = 1;
|
data->bTag = 1;
|
||||||
data->TermCharEnabled = 0;
|
|
||||||
data->TermChar = '\n';
|
|
||||||
/* 2 <= bTag <= 127 USBTMC-USB488 subclass specification 4.3.1 */
|
/* 2 <= bTag <= 127 USBTMC-USB488 subclass specification 4.3.1 */
|
||||||
data->iin_bTag = 2;
|
data->iin_bTag = 2;
|
||||||
|
|
||||||
@@ -2495,8 +2421,6 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
retcode = sysfs_create_group(&intf->dev.kobj, &data_attr_grp);
|
|
||||||
|
|
||||||
retcode = usb_register_dev(intf, &usbtmc_class);
|
retcode = usb_register_dev(intf, &usbtmc_class);
|
||||||
if (retcode) {
|
if (retcode) {
|
||||||
dev_err(&intf->dev, "Not able to get a minor (base %u, slice default): %d\n",
|
dev_err(&intf->dev, "Not able to get a minor (base %u, slice default): %d\n",
|
||||||
@@ -2510,7 +2434,6 @@ static int usbtmc_probe(struct usb_interface *intf,
|
|||||||
|
|
||||||
error_register:
|
error_register:
|
||||||
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
||||||
sysfs_remove_group(&intf->dev.kobj, &data_attr_grp);
|
|
||||||
usbtmc_free_int(data);
|
usbtmc_free_int(data);
|
||||||
err_put:
|
err_put:
|
||||||
kref_put(&data->kref, usbtmc_delete);
|
kref_put(&data->kref, usbtmc_delete);
|
||||||
@@ -2524,7 +2447,6 @@ static void usbtmc_disconnect(struct usb_interface *intf)
|
|||||||
|
|
||||||
usb_deregister_dev(intf, &usbtmc_class);
|
usb_deregister_dev(intf, &usbtmc_class);
|
||||||
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
||||||
sysfs_remove_group(&intf->dev.kobj, &data_attr_grp);
|
|
||||||
mutex_lock(&data->io_mutex);
|
mutex_lock(&data->io_mutex);
|
||||||
data->zombie = 1;
|
data->zombie = 1;
|
||||||
wake_up_interruptible_all(&data->waitq);
|
wake_up_interruptible_all(&data->waitq);
|
||||||
|
Reference in New Issue
Block a user