Provide a way for drivers to change device configurations
int usb_driver_set_configuration(struct usb_device * udev, int config);
udev
the device whose configuration is being updated
config
the configuration being chosen.
In process context, must be able to sleep
Device interface drivers are not allowed to change device configurations. This is because changing configurations will destroy the interface the driver is bound to and create new ones; it would be like a floppy-disk driver telling the computer to replace the floppy-disk drive with a tape drive!
Still, in certain specialized circumstances the need may arise. This routine gets around the normal restrictions by using a work thread to submit the change-config request.
0 if the request was successfully queued, error code otherwise. The caller has no way to know whether the queued request will eventually succeed.