nuttx/drivers/usbdev
wangjianyu3 4775b36316 drivers/usbdev: add UVC gadget class driver
Add USB Video Class 1.1 gadget driver supporting Bulk transport
with uncompressed YUY2 video streaming. Resolution and frame
interval are negotiated dynamically via PROBE/COMMIT control.

- uvc.h: protocol constants, streaming control struct, public API
- uvc.c: class driver with PROBE/COMMIT, bulk EP, /dev/uvc0 chardev
- Kconfig/Make.defs: USBUVC config and build rules
- boardctl.c: BOARDIOC_USBDEV_UVC standalone init path

Hardened against host disconnect:
- Removed nxmutex_lock from USB interrupt context paths
- Added 30s semaphore timeout in uvc_write with EP_CANCEL fallback
- Drain stale wrsem counts in VS_COMMIT before new stream
- Guard uvc_streaming_stop() against double EP_CANCEL race
- Handle EP_SUBMIT returning -ESHUTDOWN gracefully

Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
2026-03-29 12:35:22 -03:00
..
adb.c
cdcacm.c
cdcacm.h
cdcacm_desc.c
cdcecm.c
cdcecm.h
cdcncm.c
CMakeLists.txt drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
composite.c
composite.h
composite_desc.c
dfu.c
Kconfig drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
Make.defs drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00
mtp.c
pl2303.c style: Fix "the the" typo across the codebase. 2026-03-23 11:07:49 +01:00
rndis.c rndis.c: move ifup in setconfig to the work queue 2026-02-27 15:39:38 +08:00
rndis_std.h
usbdev_desc.c
usbdev_fs.c
usbdev_fs.h
usbdev_req.c
usbdev_strings.c
usbdev_trace.c
usbdev_trprintf.c
usbmsc.c style: Fix "is is" typo across the codebase. 2026-03-24 09:39:26 +08:00
usbmsc.h
usbmsc_desc.c
usbmsc_scsi.c
uvc.c drivers/usbdev: add UVC gadget class driver 2026-03-29 12:35:22 -03:00