table of contents
STRUCT USB_INTERFACE(9) | Host-Side Data Types and Macro | STRUCT USB_INTERFACE(9) |
NAME¶
struct_usb_interface - what usb device drivers talk to
SYNOPSIS¶
struct usb_interface {
struct usb_host_interface * altsetting;
struct usb_host_interface * cur_altsetting;
unsigned num_altsetting;
struct usb_interface_assoc_descriptor * intf_assoc;
int minor;
enum usb_interface_condition condition;
unsigned is_active:1;
unsigned sysfs_files_created:1;
unsigned ep_devs_created:1;
unsigned unregistering:1;
unsigned needs_remote_wakeup:1;
unsigned needs_altsetting0:1;
unsigned needs_binding:1;
unsigned reset_running:1;
struct device dev;
struct device * usb_dev;
atomic_t pm_usage_cnt;
struct work_struct reset_ws; };
MEMBERS¶
altsetting
cur_altsetting
num_altsetting
intf_assoc
minor
condition
is_active
sysfs_files_created
ep_devs_created
unregistering
needs_remote_wakeup
needs_altsetting0
needs_binding
reset_running
dev
usb_dev
pm_usage_cnt
reset_ws
DESCRIPTION¶
USB device drivers attach to interfaces on a physical device. Each interface encapsulates a single high level function, such as feeding an audio stream to a speaker or reporting a change in a volume control. Many USB devices only have one interface. The protocol used to talk to an interface´s endpoints can be defined in a usb “class” specification, or by a product´s vendor. The (default) control endpoint is part of every interface, but is never listed among the interface´s descriptors.
The driver that is bound to the interface can use standard driver model calls such as dev_get_drvdata on the dev member of this structure.
Each interface may have alternate settings. The initial configuration of a device sets altsetting 0, but the device driver can change that setting using usb_set_interface. Alternate settings are often used to control the use of periodic endpoints, such as by having different endpoints use different amounts of reserved USB bandwidth. All standards-conformant USB devices that use isochronous endpoints will use them in non-default settings.
The USB specification says that alternate setting numbers must run from 0 to one less than the total number of alternate settings. But some devices manage to mess this up, and the structures aren´t necessarily stored in numerical order anyhow. Use usb_altnum_to_altsetting to look up an alternate setting in the altsetting array based on its number.
COPYRIGHT¶
May 2024 | Kernel Hackers Manual 2.6. |