- stretch 4.9.168-1
STRUCT USB_GADGET(9) | Kernel Mode Gadget API | STRUCT USB_GADGET(9) |
NAME¶
struct_usb_gadget - represents a usb slave deviceSYNOPSIS¶
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¶
workudc
ops
ep0
ep_list
speed
max_speed
state
name
dev
out_epnum
in_epnum
mA
otg_caps
sg_supported
is_otg
is_a_peripheral
b_hnp_enable
a_hnp_support
a_alt_hnp_support
hnp_polling_support
host_request_flag
quirk_ep_out_aligned_size
quirk_avoids_skb_reserve
is_selfpowered
deactivated
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¶
April 2019 | Kernel Hackers Manual 4.9. |