.\" This documentation was generated from the book titled "The Linux-USB Host Side API", which is part of the Linux kernel source. .\" .\" This documentation comes with the following legal notice: .\" .\" This documentation is free software; you can redistribute .\" it and/or modify it under the terms of the GNU General Public .\" License as published by the Free Software Foundation; either .\" version 2 of the License, or (at your option) any later .\" version. .\" .\" This program is distributed in the hope that it will be .\" useful, but WITHOUT ANY WARRANTY; without even the implied .\" warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .\" See the GNU General Public License for more details. .\" .\" You should have received a copy of the GNU General Public .\" License along with this program; if not, write to the Free .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, .\" MA 02111-1307 USA .\" .\" For more details see the file COPYING in the source .\" distribution of Linux. .\" .\" For comments on the formatting of this manpage, please contact Michael Still .\" This manpage has been automatically generated by docbook2man .\" from a DocBook document. This tool can be found at: .\" .\" Please send any bug reports, improvements, comments, patches, .\" etc. to Steve Cheng . .TH "USB_SET_INTERFACE" "9" "09 April 2004" "" "" .SH NAME usb_set_interface \- Makes a particular alternate setting be current .SH SYNOPSIS .sp \fB .sp int usb_set_interface (struct usb_device * \fIdev\fB, int \fIinterface\fB, int \fIalternate\fB); \fR .SH "ARGUMENTS" .TP \fB\fIdev\fB\fR the device whose interface is being updated .TP \fB\fIinterface\fB\fR the interface being updated .TP \fB\fIalternate\fB\fR the setting being chosen. .SH "CONTEXT" .PP !in_interrupt () .SH "DESCRIPTION" .PP This is used to enable data transfers on interfaces that may not be enabled by default. Not all devices support such configurability. Only the driver bound to an interface may change its setting. .PP Within any given configuration, each interface may have several alternative settings. These are often used to control levels of bandwidth consumption. For example, the default setting for a high speed interrupt endpoint may not send more than 64 bytes per microframe, while interrupt transfers of up to 3KBytes per microframe are legal. Also, isochronous endpoints may never be part of an interface's default setting. To access such bandwidth, alternate interface settings must be made current. .PP Note that in the Linux USB subsystem, bandwidth associated with an endpoint in a given alternate setting is not reserved until an URB is submitted that needs that bandwidth. Some other operating systems allocate bandwidth early, when a configuration is chosen. .PP This call is synchronous, and may not be used in an interrupt context. Also, drivers must not change altsettings while urbs are scheduled for endpoints in that interface; all such urbs must first be completed (perhaps forced by unlinking). .PP Returns zero on success, or else the status code returned by the underlying \fBusb_control_msg\fR call. .SH "ABOUT THIS DOCUMENT" .PP This documentation was generated with kernel version 2.6.0.