====================== FunctionFS Descriptors ====================== Some of the descriptors that can be written to the FFS gadget are described below. Device and configuration descriptors are handled by the composite gadget and are not written by the user to the FFS gadget. Descriptors are written to the "ep0" file in the FFS gadget following the descriptor header. .. kernel-doc:: include/uapi/linux/usb/functionfs.h :doc: descriptors Interface Descriptors --------------------- Standard USB interface descriptors may be written. The class/subclass of the most recent interface descriptor determines what type of class-specific descriptors are accepted. Class-Specific Descriptors -------------------------- Class-specific descriptors are accepted only for the class/subclass of the most recent interface descriptor. The following are some of the class-specific descriptors that are supported. DFU Functional Descriptor ~~~~~~~~~~~~~~~~~~~~~~~~~ When the interface class is USB_CLASS_APP_SPEC and the interface subclass is USB_SUBCLASS_DFU, a DFU functional descriptor can be provided. The DFU functional descriptor is a described in the USB specification for Device Firmware Upgrade (DFU), version 1.1 as of this writing. .. kernel-doc:: include/uapi/linux/usb/functionfs.h :doc: usb_dfu_functional_descriptor