Lines Matching +full:composite +full:- +full:in
1 // SPDX-License-Identifier: GPL-2.0+
3 * composite.h -- framework for usb gadgets which are composite devices
5 * Copyright (C) 2006-2008 David Brownell
13 * making it easier to build (a) Composite devices, supporting multiple
14 * functions within any single configuration, and (b) Multi-configuration
19 * link and mass storage functions is a composite device. Those functions
20 * might alternatively be packaged in individual configurations, but in
21 * the composite model the host can use both functions at the same time.
50 * struct usb_os_desc_ext_prop - describes one "Extended Property"
57 * @item: Represents this Extended Property in configfs
70 * struct usb_os_desc - describes OS descriptors associated with one interface
76 * @group: Represents OS descriptors associated with an interface in configfs
90 * struct usb_os_desc_table - describes OS descriptors associated with one
105 * struct usb_function - describes one function of a configuration
108 * and by language IDs provided in control requests
127 * an IAD, only the first interface of IAD has its entry in the table.
128 * @os_desc_n: Number of entries in os_desc_table
131 * in interface or class descriptors; endpoints; I/O buffers; and so on.
144 * @setup: Used for interface-specific control requests.
153 * A single USB function uses one or more interfaces, and should in most
161 * for both high and full speed operation. Except in rare cases that don't
166 * can only be activated once. If the function needs to be exposed in more
171 * a driver-specific instance structure to allows multiple activations. An
247 * struct usb_configuration - represents one gadget configuration
250 * and by language IDs provided in control requests.
252 * Examples include OTG and vendor-specific descriptors.
260 * @MaxPower: Power consumption in mA. Used to compute bMaxPower in the
267 * configuration, and handle dual-speed hardware by always providing the same
269 * single-function configuration at a given speed; or have configurations
272 * Composite devices are, by definition, ones with configurations which
284 * Such interdependency may be managed in any way, so long as all of the
285 * descriptors complete by the time the composite driver returns from
303 /* fields in the config descriptor */
339 * struct usb_composite_driver - groups configurations into a gadget
344 * and language IDs provided in control requests. Note: The first entries
364 * on bus powered operation should report this in their @bind method.
366 * Before returning from @bind, various fields in the template descriptor
371 * they are defined in @dev and @strings.) The correct ep0 maxpacket size
396 * module_usb_composite_driver() - Helper macro for registering a USB gadget
397 * composite driver
400 * Helper macro for USB gadget composite drivers which do not do anything
401 * special in module init/exit. This eliminates a lot of boilerplate. Each
410 extern int composite_dev_prepare(struct usb_composite_driver *composite,
426 * struct usb_composite_dev - represents one composite usb gadget
427 * @gadget: read-only, abstracts the gadget's usb peripheral controller
428 * @req: used for control responses; buffer is pre-allocated
429 * @os_desc_req: used for OS descriptors responses; buffer is pre-allocated
451 * "is it wired", plus (presumably in a wrapper structure)
454 * wireless-specific parameters like maxburst and maxsequence;
460 * (g) composite device setup that can create one or more wireless
492 /* the composite driver won't complete the control transfer's
523 * published in the device descriptor, either numbers or strings or both.
524 * String parameters are in UTF-8 (superset of ASCII's 7 bit characters).
623 dev_dbg(&(d)->gadget->dev , fmt , ## args)
625 dev_vdbg(&(d)->gadget->dev , fmt , ## args)
627 dev_err(&(d)->gadget->dev , fmt , ## args)
629 dev_warn(&(d)->gadget->dev , fmt , ## args)
631 dev_info(&(d)->gadget->dev , fmt , ## args)