Download raw body.
sys/uvideo: attach the first video streaming interface
tech@,
right now some webcam migth not be supported because our driver expects
that the first video interface is video streaming interface, which might
not be true.
Here a patch which is filtering non streaming interfaces.
Ok?
Index: sys/dev/usb/uvideo.c
===================================================================
RCS file: /home/cvs/src/sys/dev/usb/uvideo.c,v
diff -u -p -r1.238 uvideo.c
--- sys/dev/usb/uvideo.c 15 Feb 2025 09:05:15 -0000 1.238
+++ sys/dev/usb/uvideo.c 18 Feb 2025 18:37:43 -0000
@@ -513,14 +513,15 @@ uvideo_attach(struct device *parent, str
sc->sc_udev = uaa->device;
- /* Find the first unclaimed video interface. */
+ /* Find the first unclaimed video streaming interface. */
for (i = 0; i < uaa->nifaces; i++) {
if (usbd_iface_claimed(sc->sc_udev, i))
continue;
id = usbd_get_interface_descriptor(&sc->sc_udev->ifaces[i]);
if (id == NULL)
continue;
- if (id->bInterfaceClass == UICLASS_VIDEO)
+ if (id->bInterfaceClass == UICLASS_VIDEO &&
+ id->bInterfaceSubClass == UISUBCLASS_VIDEOSTREAM)
break;
}
if (i == uaa->nifaces) {
@@ -537,6 +538,11 @@ uvideo_attach(struct device *parent, str
continue;
}
iad = (usb_interface_assoc_descriptor_t *)desc;
+ if (iad->bFunctionClass != UICLASS_VIDEO &&
+ iad->bFunctionSubClass != UISUBCLASS_VIDEOSTREAM) {
+ desc = usbd_desc_iter_next(&iter);
+ continue;
+ }
if (i >= iad->bFirstInterface &&
i < iad->bFirstInterface + iad->bInterfaceCount)
break;
sys/uvideo: attach the first video streaming interface