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

Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

---
commit 360b52b08972ada8fd4421e9a7bcbe1ea186c20e
tree 06067522d817b8a792176b1076ce5a9d0c216f2b
parent 25b6f08e3fa0d84e26a373a205cfdad208b54af7
author Greg KH <[EMAIL PROTECTED]> Tue, 10 May 2005 06:45:10 -0700
committer Greg KH <[EMAIL PROTECTED]> Mon, 16 May 2005 21:44:26 -0700

 drivers/usb/core/sysfs.c |   34 ++++++++++++++++++++++++++++++++++
 1 files changed, 34 insertions(+)

Index: drivers/usb/core/sysfs.c
===================================================================
--- 6e444121a2eb7900a9cd3ab0606eb04046bdac2f/drivers/usb/core/sysfs.c  
(mode:100644)
+++ 06067522d817b8a792176b1076ce5a9d0c216f2b/drivers/usb/core/sysfs.c  
(mode:100644)
@@ -286,6 +286,39 @@
 }
 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[] = {
        &dev_attr_bInterfaceNumber.attr,
        &dev_attr_bAlternateSetting.attr,
@@ -293,6 +326,7 @@
        &dev_attr_bInterfaceClass.attr,
        &dev_attr_bInterfaceSubClass.attr,
        &dev_attr_bInterfaceProtocol.attr,
+       &dev_attr_modalias.attr,
        NULL,
 };
 static struct attribute_group intf_attr_grp = {



-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_idt12&alloc_id344&op=click
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to