USB_VENDOR_...TERFACE_INFO(9)
π USB_VENDOR_...TERFACE_INFO(9) π
okay bestie, welcome to the Kernel API Manual β yes we're reading kernel docs together, this is our bonding era β¨ the page title got truncated all cutely as USB_VENDOR_...TERFACE_INFO(9) so that's the vibe we're going with, no cap π
πΈ NAME πΈ
USB_VENDOR_AND_INTERFACE_INFO β the macro that describes a specific usb vendor paired with a class of usb interfaces π«Ά like, one (1) vendor, whole class energy.
β¨ SYNOPSIS β¨
USB_VENDOR_AND_INTERFACE_INFO (vend , cl , sc , pr );
literally just four little arguments, she's low maintenance fr fr π
π ARGUMENTS π
vendβ the 16 bit USB Vendor ID π (sixteen bits, not fifteen, not seventeen, we're precise here)clβ thebInterfaceClassvalue πscβ thebInterfaceSubClassvalue π¦prβ thebInterfaceProtocolvalue πΈ
π DESCRIPTION π
so this macro's whole job? it creates a struct usb_device_id that matches a specific vendor with a specific class of interfaces. that's it, that's the gig, and she does it flawlessly π
and the part where it really eats? this is especially useful when explicitly matching devices that have vendor specific bDeviceClass values, but standards-compliant interfaces. like, the device is doing its own chaotic vendor thing at the top level π but the interfaces underneath are perfectly standards-compliant citizens β iconic behavior, and this macro is how you match it. periodt π₯
π SEE ALSO π
bestie the cross-reference section is long, buckle up, we're going on a journey π
The kernel file: ./include/linux/usb.h
Structs & friends:
struct usb_host_endpoint(9)struct usb_interface(9)usb_set_intfdata(9)struct usb_interface_cache(9)struct usb_host_config(9)struct usb_device(9)usb_hub_for_each_child(9)usb_interface_claimed(9)usb_make_path(9)
The other matching macros (the whole squad π«Ά):
USB_DEVICE(9)USB_DEVICE_VER(9)USB_DEVICE_INTERFACE_CLASS(9)USB_DEVICE_INTERFACE_PROTOCOL(9)USB_DEVICE_INTERFACE_NUMBER(9)USB_DEVICE_INFO(9)USB_INTERFACE_INFO(9)USB_DEVICE_AND_INTERFACE_INFO(9)
Driver structs & registration:
struct usb_driver(9)struct usb_device_driver(9)struct usb_class_driver(9)module_usb_driver(9)
URB stuff (the plumbing π§):
struct urb(9)usb_fill_control_urb(9)usb_fill_bulk_urb(9)usb_fill_int_urb(9)usb_urb_dir_in(9)usb_urb_dir_out(9)struct usb_sg_request(9)
ngl if you read all of those you're a real one π take a water break, you've earned it π
and that's the page!! mwah π sourcing from ./include/linux, dated October 2026 β the USB_VENDOR_...TERFACE_INFO(9) girlies stay winning, slay, go match some vendor-class interfaces responsibly βπ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms