1. NAME▲
struct_usb_device - kernelAqs representation of a USB device
2. SYNOPSIS ▲
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_enabled: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
usb3_lpm_parameters u1_params;
struct
usb3_lpm_parameters u2_params;
unsigned
lpm_disable_count;
}
;
3. MEMBERS ▲
devnum
device number; address on a USB bus
devpath[16]
device ID string for use in messages (e.g., /port/...)
route
tree topology hex string for use with xHCI
state
device state: configured, not attached, etc.
speed
device speed: high/full/low (or error)
tt
Transaction Translator info; used with low/full speed dev, highspeed hub
ttport
device port on that tt hub
toggle[2]
one bit for each endpoint, with ([0] = IN, [1] = OUT) endpoints
parent
our hub, unless weAqre the root
bus
bus weAqre part of
ep0
endpoint 0 data (default control pipe)
dev
generic device interface
descriptor
USB device descriptor
bos
USB device BOS descriptor set
config
all of the deviceAqs configs
actconfig
the active configuration
ep_in[16]
array of IN endpoints
ep_out[16]
array of OUT endpoints
rawdescriptors
raw descriptors for each config
bus_mA
Current available from the bus
portnum
parent port number (origin 1)
level
number of USB hub ancestors
can_submit
URBs may be submitted
persist_enabled
USB_PERSIST enabled for this device
have_langid
whether string_langid is valid
authorized
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
authenticated
Crypto authentication passed
wusb
device is Wireless USB
lpm_capable
device supports LPM
usb2_hw_lpm_capable
device can perform USB2 hardware LPM
usb2_hw_lpm_enabled
USB2 hardware LPM enabled
usb3_lpm_enabled
USB3 hardware LPM enabled
string_langid
language ID for strings
product
iProduct string, if present (static)
manufacturer
iManufacturer string, if present (static)
serial
iSerialNumber string, if present (static)
filelist
usbfs files that are open to this device
maxchild
number of ports if hub
quirks
quirks of the whole device
urbnum
number of URBs submitted for the whole device
active_duration
total time device is not suspended
connect_time
time device was first connected
do_remote_wakeup
remote wakeup should be enabled
reset_resume
needs reset instead of resume
port_is_suspended
the upstream port is suspended (L2 or U3)
wusb_dev
if this is a Wireless USB device, link to the WUSB specific data for the device.
slot_id
Slot ID assigned by xHCI
removable
Device can be physically removed from this port
u1_params
exit latencies for USB3 U1 LPM state, and hub-initiated timeout.
u2_params
exit latencies for USB3 U2 LPM state, and hub-initiated timeout.
lpm_disable_count
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.
4. NOTES ▲
Usbcore drivers should not set usbdev->state directly. Instead use usb_set_device_state.
5. COPYRIGHT ▲