int usb_set_configuration (struct usb_device * dev, int configuration);
This is used to enable non-default device modes. Not all devices use this kind of configurability; many devices only have one configuration.
USB device configurations may affect Linux interoperability, 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 should be in some non-default device configuration. Other device modes may also be reflected as configuration options, such as whether two ISDN channels are available independently; and choosing between open standard device protocols (like CDC) or proprietary ones.
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. The calling context must be able to sleep, and must not hold the driver model lock for USB; usb device driver probe methods may not use this routine.
Returns zero on success, or else the status code returned by the underlying call that failed. On succesful completion, each interface in the original device configuration has been destroyed, and each one in the new configuration has been probed by all relevant usb device drivers currently known to the kernel.
This documentation was generated with kernel version 2.6.0.