struct usb_device — kernel's representation of a USB device
struct usb_device { int devnum; char devpath[16]; u32 route; enum usb_device_state state; enum usb_device_speed speed; struct usb_tt * tt; int ttport; unsigned int toggle[2]; struct usb_device * parent; struct usb_bus * bus; struct usb_host_endpoint ep0; struct device dev; struct usb_device_descriptor descriptor; struct usb_host_bos * bos; struct usb_host_config * config; struct usb_host_config * actconfig; struct usb_host_endpoint * ep_in[16]; struct usb_host_endpoint * ep_out[16]; char ** rawdescriptors; unsigned short bus_mA; u8 portnum; u8 level; unsigned can_submit:1; unsigned persist_enabled:1; unsigned have_langid:1; unsigned authorized:1; unsigned authenticated:1; unsigned wusb:1; unsigned lpm_capable:1; unsigned usb2_hw_lpm_capable:1; unsigned usb2_hw_lpm_besl_capable:1; unsigned usb2_hw_lpm_enabled:1; unsigned usb2_hw_lpm_allowed:1; unsigned usb3_lpm_enabled:1; int string_langid; char * product; char * manufacturer; char * serial; struct list_head filelist; int maxchild; u32 quirks; atomic_t urbnum; unsigned long active_duration; #ifdef CONFIG_PM unsigned long connect_time; unsigned do_remote_wakeup:1; unsigned reset_resume:1; unsigned port_is_suspended:1; #endif struct wusb_dev * wusb_dev; int slot_id; enum usb_device_removable removable; struct usb2_lpm_parameters l1_params; struct usb3_lpm_parameters u1_params; struct usb3_lpm_parameters u2_params; unsigned lpm_disable_count; };
device number; address on a USB bus
device ID string for use in messages (e.g., /port/...)
tree topology hex string for use with xHCI
device state: configured, not attached, etc.
device speed: high/full/low (or error)
Transaction Translator info; used with low/full speed dev, highspeed hub
device port on that tt hub
one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints
our hub, unless we're the root
bus we're part of
endpoint 0 data (default control pipe)
generic device interface
USB device descriptor
USB device BOS descriptor set
all of the device's configs
the active configuration
array of IN endpoints
array of OUT endpoints
raw descriptors for each config
Current available from the bus
parent port number (origin 1)
number of USB hub ancestors
URBs may be submitted
USB_PERSIST enabled for this device
whether string_langid is valid
policy has said we can use it; (user space) policy determines if we authorize this device to be used or not. By default, wired USB devices are authorized. WUSB devices are not, until we authorize them from user space. FIXME -- complete doc
Crypto authentication passed
device is Wireless USB
device supports LPM
device can perform USB2 hardware LPM
device can perform USB2 hardware BESL LPM
USB2 hardware LPM is enabled
Userspace allows USB 2.0 LPM to be enabled
USB3 hardware LPM enabled
language ID for strings
iProduct string, if present (static)
iManufacturer string, if present (static)
iSerialNumber string, if present (static)
usbfs files that are open to this device
number of ports if hub
quirks of the whole device
number of URBs submitted for the whole device
total time device is not suspended
time device was first connected
remote wakeup should be enabled
needs reset instead of resume
the upstream port is suspended (L2 or U3)
if this is a Wireless USB device, link to the WUSB specific data for the device.
Slot ID assigned by xHCI
Device can be physically removed from this port
best effor service latency for USB2 L1 LPM state, and L1 timeout.
exit latencies for USB3 U1 LPM state, and hub-initiated timeout.
exit latencies for USB3 U2 LPM state, and hub-initiated timeout.
Ref count used by usb_disable_lpm
and usb_enable_lpm
to keep track of the number of functions that require USB 3.0 Link Power
Management to be disabled for this usb_device. This count should only
be manipulated by those functions, with the bandwidth_mutex is held.