mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08: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:
parent
5848828387
commit
b32abf8f5d
@ -25,38 +25,3 @@ Description:
|
||||
4.2.2.
|
||||
|
||||
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 */
|
||||
__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 */
|
||||
|
||||
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);
|
||||
|
||||
/* copy default values from device settings */
|
||||
file_data->timeout = USBTMC_TIMEOUT;
|
||||
file_data->term_char = data->TermChar;
|
||||
file_data->term_char_enabled = data->TermCharEnabled;
|
||||
file_data->auto_abort = data->auto_abort;
|
||||
file_data->term_char = '\n';
|
||||
file_data->term_char_enabled = 0;
|
||||
file_data->auto_abort = 0;
|
||||
file_data->eom_val = 1;
|
||||
|
||||
INIT_LIST_HEAD(&file_data->file_elem);
|
||||
@ -1851,72 +1845,6 @@ static const struct attribute_group capability_attr_grp = {
|
||||
.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)
|
||||
{
|
||||
struct device *dev;
|
||||
@ -2420,8 +2348,6 @@ static int usbtmc_probe(struct usb_interface *intf,
|
||||
|
||||
/* Initialize USBTMC bTag and other fields */
|
||||
data->bTag = 1;
|
||||
data->TermCharEnabled = 0;
|
||||
data->TermChar = '\n';
|
||||
/* 2 <= bTag <= 127 USBTMC-USB488 subclass specification 4.3.1 */
|
||||
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);
|
||||
if (retcode) {
|
||||
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:
|
||||
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
||||
sysfs_remove_group(&intf->dev.kobj, &data_attr_grp);
|
||||
usbtmc_free_int(data);
|
||||
err_put:
|
||||
kref_put(&data->kref, usbtmc_delete);
|
||||
@ -2524,7 +2447,6 @@ static void usbtmc_disconnect(struct usb_interface *intf)
|
||||
|
||||
usb_deregister_dev(intf, &usbtmc_class);
|
||||
sysfs_remove_group(&intf->dev.kobj, &capability_attr_grp);
|
||||
sysfs_remove_group(&intf->dev.kobj, &data_attr_grp);
|
||||
mutex_lock(&data->io_mutex);
|
||||
data->zombie = 1;
|
||||
wake_up_interruptible_all(&data->waitq);
|
||||
|
Loading…
Reference in New Issue
Block a user