diff --git a/drivers/usb/xhcid/drivers.toml b/drivers/usb/xhcid/drivers.toml index 83c90e2385..20264d183c 100644 --- a/drivers/usb/xhcid/drivers.toml +++ b/drivers/usb/xhcid/drivers.toml @@ -1,18 +1,52 @@ -#TODO: causes XHCI errors -#[[drivers]] -#name = "SCSI over USB" -#class = 8 # Mass Storage class -#subclass = 6 # SCSI transparent command set -#command = ["usbscsid", "$SCHEME", "$PORT", "$IF_PROTO"] +# xhcid built-in USB class driver configuration. +# Cross-referenced with Linux 7.1 drivers/usb/core/driver.c:usb_device_match(). +# +# Drivers are spawned by xhcid's attach_device() after device enumeration +# completes (dev_desc available, port_state populated). For each interface +# on the device, xhcid matches class+subclass against this table and spawns +# the corresponding driver with $SCHEME / $PORT / $IF_NUM / $IF_PROTO +# template variables. +# +# subclass = -1 means "match any subclass" (wildcard). [[drivers]] -name = "USB HUB" -class = 9 # HUB class +name = "USB Mass Storage" +class = 8 +subclass = 6 # SCSI transparent command set +command = ["usbscsid", "$SCHEME", "$PORT", "$IF_PROTO"] + +[[drivers]] +name = "USB Hub" +class = 9 subclass = -1 command = ["usbhubd", "$SCHEME", "$PORT", "$IF_NUM"] [[drivers]] name = "USB HID" -class = 3 # HID class +class = 3 subclass = -1 command = ["usbhidd", "$SCHEME", "$PORT", "$IF_NUM"] + +[[drivers]] +name = "USB CDC ACM" +class = 2 +subclass = 2 # Abstract Control Model +command = ["redbear-acmd", "$SCHEME", "$PORT", "$IF_NUM"] + +[[drivers]] +name = "USB CDC ECM" +class = 2 +subclass = 6 # Ethernet Control Model +command = ["redbear-ecmd", "$SCHEME", "$PORT", "$IF_NUM"] + +[[drivers]] +name = "USB Audio Class" +class = 1 +subclass = -1 +command = ["redbear-usbaudiod", "$SCHEME", "$PORT", "$IF_NUM"] + +[[drivers]] +name = "FTDI USB Serial" +class = 255 # Vendor-specific +subclass = -1 +command = ["redbear-ftdi", "$SCHEME", "$PORT", "$IF_NUM"]