STRUCT USB_GADGET(9) | Kernel Mode Gadget API | STRUCT USB_GADGET(9) |
NAME¶
struct_usb_gadget - represents a usb slave device
SYNOPSIS¶
struct usb_gadget {
struct work_struct work;
struct usb_udc * udc;
const struct usb_gadget_ops * ops;
struct usb_ep * ep0;
struct list_head ep_list;
enum usb_device_speed speed;
enum usb_device_speed max_speed;
enum usb_device_state state;
const char * name;
struct device dev;
unsigned out_epnum;
unsigned in_epnum;
unsigned mA;
struct usb_otg_caps * otg_caps;
unsigned sg_supported:1;
unsigned is_otg:1;
unsigned is_a_peripheral:1;
unsigned b_hnp_enable:1;
unsigned a_hnp_support:1;
unsigned a_alt_hnp_support:1;
unsigned hnp_polling_support:1;
unsigned host_request_flag:1;
unsigned quirk_ep_out_aligned_size:1;
unsigned quirk_avoids_skb_reserve:1;
unsigned is_selfpowered:1;
unsigned deactivated:1;
unsigned connected:1; };
MEMBERS¶
struct work_struct work
struct usb_udc * udc
const struct usb_gadget_ops * ops
struct usb_ep * ep0
struct list_head ep_list
enum usb_device_speed speed
enum usb_device_speed max_speed
enum usb_device_state state
const char * name
struct device dev
unsigned out_epnum
unsigned in_epnum
unsigned mA
struct usb_otg_caps * otg_caps
unsigned:1 sg_supported
unsigned:1 is_otg
unsigned:1 is_a_peripheral
unsigned:1 b_hnp_enable
unsigned:1 a_hnp_support
unsigned:1 a_alt_hnp_support
unsigned:1 hnp_polling_support
unsigned:1 host_request_flag
unsigned:1 quirk_ep_out_aligned_size
unsigned:1 quirk_avoids_skb_reserve
unsigned:1 is_selfpowered
unsigned:1 deactivated
unsigned:1 connected
DESCRIPTION¶
Gadgets have a mostly-portable “gadget driver” implementing device functions, handling all usb configurations and interfaces. Gadget drivers talk to hardware-specific code indirectly, through ops vectors. That insulates the gadget driver from hardware details, and packages the hardware endpoints through generic i/o queues. The “usb_gadget” and “usb_ep” interfaces provide that insulation from the hardware.
Except for the driver data, all fields in this structure are read-only to the gadget driver. That driver data is part of the “driver model” infrastructure in 2.6 (and later) kernels, and for earlier systems is grouped in a similar structure that's not known to the rest of the kernel.
Values of the three OTG device feature flags are updated before the setup call corresponding to USB_REQ_SET_CONFIGURATION, and before driver suspend calls. They are valid only when is_otg, and when the device is acting as a B-Peripheral (so is_a_peripheral is false).
AUTHOR¶
David Brownell <dbrownell@users.sourceforge.net>
COPYRIGHT¶
June 2017 | Kernel Hackers Manual 4.11 |