int usb_set_configuration (struct usb_device * dev, int configuration);
This is used to enable non-default device modes. Not all devices support this kind of configurability. By default, configuration zero is selected after enumeration; many devices only have a single configuration.
USB devices may support one or more configurations, which affect power consumption and the functionality available. For example, the default configuration is limited to using 100mA of bus power, so that when certain device functionality requires more power, and the device is bus powered, that functionality will be in some non-default device configuration. Other device modes may also be reflected as configuration options, such as whether two ISDN channels are presented as independent 64Kb/s interfaces or as one bonded 128Kb/s interface.
Note that USB has an additional level of device configurability, associated with interfaces. That configurability is accessed using usb_set_interface.
This call is synchronous, and may not be used in an interrupt context.
Returns zero on success, or else the status code returned by the underlying usb_control_msg call.