Provided by:
linux-doc-2.6.15_2.6.15-23.39_all 
NAME
struct usb_host_config - representation of a device’s configuration
SYNOPSIS
struct usb_host_config {
struct usb_config_descriptor desc;
char * string;
struct usb_interface * interface[USB_MAXINTERFACES];
struct usb_interface_cache * intf_cache[USB_MAXINTERFACES];
unsigned char * extra;
int extralen;
};
MEMBERS
desc the device’s configuration descriptor.
string pointer to the cached version of the iConfiguration string, if
present for this configuration.
interface[USB_MAXINTERFACES]
array of pointers to usb_interface structures, one for each
interface in the configuration. The number of interfaces is
stored in desc.bNumInterfaces. These pointers are valid only
while the the configuration is active.
intf_cache[USB_MAXINTERFACES]
array of pointers to usb_interface_cache structures, one for
each interface in the configuration. These structures exist for
the entire life of the device.
extra pointer to buffer containing all extra descriptors associated
with this configuration (those preceding the first interface
descriptor).
extralen
length of the extra descriptors buffer.
DESCRIPTION
USB devices may have multiple configurations, but only one can be
active at any time. Each encapsulates a different operational
environment; for example, a dual-speed device would have separate
configurations for full-speed and high-speed operation. The number of
configurations available is stored in the device descriptor as
bNumConfigurations.
A configuration can contain multiple interfaces. Each corresponds to a
different function of the USB device, and all are available whenever
the configuration is active. The USB standard says that interfaces are
supposed to be numbered from 0 to desc.bNumInterfaces-1, but a lot of
devices get this wrong. In addition, the interface array is not
guaranteed to be sorted in numerical order. Use usb_ifnum_to_if to look
up an interface entry based on its number.
Device drivers should not attempt to activate configurations. The
choice of which configuration to install is a policy decision based on
such considerations as available power, functionality provided, and the
user’s desires (expressed through hotplug scripts). However, drivers
can call usb_reset_configuration to reinitialize the current
configuration and all its interfaces.