Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 360b52b0 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

[PATCH] USB: add modalias sysfs file for usb devices

parent 25b6f08e
Loading
Loading
Loading
Loading
+34 −0
Original line number Original line Diff line number Diff line
@@ -286,6 +286,39 @@ static ssize_t show_interface_string(struct device *dev, char *buf)
}
}
static DEVICE_ATTR(interface, S_IRUGO, show_interface_string, NULL);
static DEVICE_ATTR(interface, S_IRUGO, show_interface_string, NULL);


static ssize_t show_modalias(struct device *dev, char *buf)
{
	struct usb_interface *intf;
	struct usb_device *udev;

	intf = to_usb_interface(dev);
	udev = interface_to_usbdev(intf);
	if (udev->descriptor.bDeviceClass == 0) {
		struct usb_host_interface *alt = intf->cur_altsetting;

		return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X\n",
			       le16_to_cpu(udev->descriptor.idVendor),
			       le16_to_cpu(udev->descriptor.idProduct),
			       le16_to_cpu(udev->descriptor.bcdDevice),
			       udev->descriptor.bDeviceClass,
			       udev->descriptor.bDeviceSubClass,
			       udev->descriptor.bDeviceProtocol,
			       alt->desc.bInterfaceClass,
			       alt->desc.bInterfaceSubClass,
			       alt->desc.bInterfaceProtocol);
 	} else {
		return sprintf(buf, "usb:v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic*isc*ip*\n",
			       le16_to_cpu(udev->descriptor.idVendor),
			       le16_to_cpu(udev->descriptor.idProduct),
			       le16_to_cpu(udev->descriptor.bcdDevice),
			       udev->descriptor.bDeviceClass,
			       udev->descriptor.bDeviceSubClass,
			       udev->descriptor.bDeviceProtocol);
	}

}
static DEVICE_ATTR(modalias, S_IRUGO, show_modalias, NULL);

static struct attribute *intf_attrs[] = {
static struct attribute *intf_attrs[] = {
	&dev_attr_bInterfaceNumber.attr,
	&dev_attr_bInterfaceNumber.attr,
	&dev_attr_bAlternateSetting.attr,
	&dev_attr_bAlternateSetting.attr,
@@ -293,6 +326,7 @@ static struct attribute *intf_attrs[] = {
	&dev_attr_bInterfaceClass.attr,
	&dev_attr_bInterfaceClass.attr,
	&dev_attr_bInterfaceSubClass.attr,
	&dev_attr_bInterfaceSubClass.attr,
	&dev_attr_bInterfaceProtocol.attr,
	&dev_attr_bInterfaceProtocol.attr,
	&dev_attr_modalias.attr,
	NULL,
	NULL,
};
};
static struct attribute_group intf_attr_grp = {
static struct attribute_group intf_attr_grp = {