Index: sys/dev/usb/uhid.c =================================================================== RCS file: /cvs/src/sys/dev/usb/uhid.c,v retrieving revision 1.30 diff -u -p -r1.30 uhid.c --- sys/dev/usb/uhid.c 1 Nov 2006 03:37:24 -0000 1.30 +++ sys/dev/usb/uhid.c 24 Mar 2007 19:12:55 -0000 @@ -518,6 +518,22 @@ uhid_do_ioctl(struct uhid_softc *sc, u_l *(int *)addr = sc->sc_hdev.sc_report_id; break; + case USB_GET_DEVICEINFO: + usbd_fill_deviceinfo(sc->sc_hdev.sc_parent->sc_udev, + (struct usb_device_info *)addr, 0); + break; + + case USB_GET_STRING_DESC: + { + struct usb_string_desc *si = (struct usb_string_desc *)addr; + err = usbd_get_string_desc(sc->sc_hdev.sc_parent->sc_udev, + si->usd_string_index, + si->usd_language_id, &si->usd_desc, &size); + if (err) + return (EINVAL); + break; + } + default: return (EINVAL); } Index: share/man/man4/uhid.4 =================================================================== RCS file: /cvs/src/share/man/man4/uhid.4,v retrieving revision 1.13 diff -u -p -r1.13 uhid.4 --- share/man/man4/uhid.4 30 Sep 2004 19:59:25 -0000 1.13 +++ share/man/man4/uhid.4 24 Mar 2007 19:12:55 -0000 @@ -104,6 +104,19 @@ It should be or .Dv UHID_FEATURE_REPORT . This call may fail if the device does not support this feature. +.It Dv USB_GET_DEVICEINFO (struct usb_device_info) +Get an information summary for the device. +This call will not issue any USB transactions. +.It Dv USB_GET_STRING_DESC (struct usb_string_desc) +Get a string descriptor for the given language id and +string index. +.Bd -literal +struct usb_string_desc { + int usd_string_index; + int usd_language_id; + usb_string_descriptor_t usd_desc; +}; +.Ed .El .Pp Use