cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

message.c (73982B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * message.c - synchronous message handling
      4 *
      5 * Released under the GPLv2 only.
      6 */
      7
      8#include <linux/acpi.h>
      9#include <linux/pci.h>	/* for scatterlist macros */
     10#include <linux/usb.h>
     11#include <linux/module.h>
     12#include <linux/slab.h>
     13#include <linux/mm.h>
     14#include <linux/timer.h>
     15#include <linux/ctype.h>
     16#include <linux/nls.h>
     17#include <linux/device.h>
     18#include <linux/scatterlist.h>
     19#include <linux/usb/cdc.h>
     20#include <linux/usb/quirks.h>
     21#include <linux/usb/hcd.h>	/* for usbcore internals */
     22#include <linux/usb/of.h>
     23#include <asm/byteorder.h>
     24
     25#include "usb.h"
     26
     27static void cancel_async_set_config(struct usb_device *udev);
     28
     29struct api_context {
     30	struct completion	done;
     31	int			status;
     32};
     33
     34static void usb_api_blocking_completion(struct urb *urb)
     35{
     36	struct api_context *ctx = urb->context;
     37
     38	ctx->status = urb->status;
     39	complete(&ctx->done);
     40}
     41
     42
     43/*
     44 * Starts urb and waits for completion or timeout. Note that this call
     45 * is NOT interruptible. Many device driver i/o requests should be
     46 * interruptible and therefore these drivers should implement their
     47 * own interruptible routines.
     48 */
     49static int usb_start_wait_urb(struct urb *urb, int timeout, int *actual_length)
     50{
     51	struct api_context ctx;
     52	unsigned long expire;
     53	int retval;
     54
     55	init_completion(&ctx.done);
     56	urb->context = &ctx;
     57	urb->actual_length = 0;
     58	retval = usb_submit_urb(urb, GFP_NOIO);
     59	if (unlikely(retval))
     60		goto out;
     61
     62	expire = timeout ? msecs_to_jiffies(timeout) : MAX_SCHEDULE_TIMEOUT;
     63	if (!wait_for_completion_timeout(&ctx.done, expire)) {
     64		usb_kill_urb(urb);
     65		retval = (ctx.status == -ENOENT ? -ETIMEDOUT : ctx.status);
     66
     67		dev_dbg(&urb->dev->dev,
     68			"%s timed out on ep%d%s len=%u/%u\n",
     69			current->comm,
     70			usb_endpoint_num(&urb->ep->desc),
     71			usb_urb_dir_in(urb) ? "in" : "out",
     72			urb->actual_length,
     73			urb->transfer_buffer_length);
     74	} else
     75		retval = ctx.status;
     76out:
     77	if (actual_length)
     78		*actual_length = urb->actual_length;
     79
     80	usb_free_urb(urb);
     81	return retval;
     82}
     83
     84/*-------------------------------------------------------------------*/
     85/* returns status (negative) or length (positive) */
     86static int usb_internal_control_msg(struct usb_device *usb_dev,
     87				    unsigned int pipe,
     88				    struct usb_ctrlrequest *cmd,
     89				    void *data, int len, int timeout)
     90{
     91	struct urb *urb;
     92	int retv;
     93	int length;
     94
     95	urb = usb_alloc_urb(0, GFP_NOIO);
     96	if (!urb)
     97		return -ENOMEM;
     98
     99	usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char *)cmd, data,
    100			     len, usb_api_blocking_completion, NULL);
    101
    102	retv = usb_start_wait_urb(urb, timeout, &length);
    103	if (retv < 0)
    104		return retv;
    105	else
    106		return length;
    107}
    108
    109/**
    110 * usb_control_msg - Builds a control urb, sends it off and waits for completion
    111 * @dev: pointer to the usb device to send the message to
    112 * @pipe: endpoint "pipe" to send the message to
    113 * @request: USB message request value
    114 * @requesttype: USB message request type value
    115 * @value: USB message value
    116 * @index: USB message index value
    117 * @data: pointer to the data to send
    118 * @size: length in bytes of the data to send
    119 * @timeout: time in msecs to wait for the message to complete before timing
    120 *	out (if 0 the wait is forever)
    121 *
    122 * Context: task context, might sleep.
    123 *
    124 * This function sends a simple control message to a specified endpoint and
    125 * waits for the message to complete, or timeout.
    126 *
    127 * Don't use this function from within an interrupt context. If you need
    128 * an asynchronous message, or need to send a message from within interrupt
    129 * context, use usb_submit_urb(). If a thread in your driver uses this call,
    130 * make sure your disconnect() method can wait for it to complete. Since you
    131 * don't have a handle on the URB used, you can't cancel the request.
    132 *
    133 * Return: If successful, the number of bytes transferred. Otherwise, a negative
    134 * error number.
    135 */
    136int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
    137		    __u8 requesttype, __u16 value, __u16 index, void *data,
    138		    __u16 size, int timeout)
    139{
    140	struct usb_ctrlrequest *dr;
    141	int ret;
    142
    143	dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_NOIO);
    144	if (!dr)
    145		return -ENOMEM;
    146
    147	dr->bRequestType = requesttype;
    148	dr->bRequest = request;
    149	dr->wValue = cpu_to_le16(value);
    150	dr->wIndex = cpu_to_le16(index);
    151	dr->wLength = cpu_to_le16(size);
    152
    153	ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
    154
    155	/* Linger a bit, prior to the next control message. */
    156	if (dev->quirks & USB_QUIRK_DELAY_CTRL_MSG)
    157		msleep(200);
    158
    159	kfree(dr);
    160
    161	return ret;
    162}
    163EXPORT_SYMBOL_GPL(usb_control_msg);
    164
    165/**
    166 * usb_control_msg_send - Builds a control "send" message, sends it off and waits for completion
    167 * @dev: pointer to the usb device to send the message to
    168 * @endpoint: endpoint to send the message to
    169 * @request: USB message request value
    170 * @requesttype: USB message request type value
    171 * @value: USB message value
    172 * @index: USB message index value
    173 * @driver_data: pointer to the data to send
    174 * @size: length in bytes of the data to send
    175 * @timeout: time in msecs to wait for the message to complete before timing
    176 *	out (if 0 the wait is forever)
    177 * @memflags: the flags for memory allocation for buffers
    178 *
    179 * Context: !in_interrupt ()
    180 *
    181 * This function sends a control message to a specified endpoint that is not
    182 * expected to fill in a response (i.e. a "send message") and waits for the
    183 * message to complete, or timeout.
    184 *
    185 * Do not use this function from within an interrupt context. If you need
    186 * an asynchronous message, or need to send a message from within interrupt
    187 * context, use usb_submit_urb(). If a thread in your driver uses this call,
    188 * make sure your disconnect() method can wait for it to complete. Since you
    189 * don't have a handle on the URB used, you can't cancel the request.
    190 *
    191 * The data pointer can be made to a reference on the stack, or anywhere else,
    192 * as it will not be modified at all.  This does not have the restriction that
    193 * usb_control_msg() has where the data pointer must be to dynamically allocated
    194 * memory (i.e. memory that can be successfully DMAed to a device).
    195 *
    196 * Return: If successful, 0 is returned, Otherwise, a negative error number.
    197 */
    198int usb_control_msg_send(struct usb_device *dev, __u8 endpoint, __u8 request,
    199			 __u8 requesttype, __u16 value, __u16 index,
    200			 const void *driver_data, __u16 size, int timeout,
    201			 gfp_t memflags)
    202{
    203	unsigned int pipe = usb_sndctrlpipe(dev, endpoint);
    204	int ret;
    205	u8 *data = NULL;
    206
    207	if (size) {
    208		data = kmemdup(driver_data, size, memflags);
    209		if (!data)
    210			return -ENOMEM;
    211	}
    212
    213	ret = usb_control_msg(dev, pipe, request, requesttype, value, index,
    214			      data, size, timeout);
    215	kfree(data);
    216
    217	if (ret < 0)
    218		return ret;
    219
    220	return 0;
    221}
    222EXPORT_SYMBOL_GPL(usb_control_msg_send);
    223
    224/**
    225 * usb_control_msg_recv - Builds a control "receive" message, sends it off and waits for completion
    226 * @dev: pointer to the usb device to send the message to
    227 * @endpoint: endpoint to send the message to
    228 * @request: USB message request value
    229 * @requesttype: USB message request type value
    230 * @value: USB message value
    231 * @index: USB message index value
    232 * @driver_data: pointer to the data to be filled in by the message
    233 * @size: length in bytes of the data to be received
    234 * @timeout: time in msecs to wait for the message to complete before timing
    235 *	out (if 0 the wait is forever)
    236 * @memflags: the flags for memory allocation for buffers
    237 *
    238 * Context: !in_interrupt ()
    239 *
    240 * This function sends a control message to a specified endpoint that is
    241 * expected to fill in a response (i.e. a "receive message") and waits for the
    242 * message to complete, or timeout.
    243 *
    244 * Do not use this function from within an interrupt context. If you need
    245 * an asynchronous message, or need to send a message from within interrupt
    246 * context, use usb_submit_urb(). If a thread in your driver uses this call,
    247 * make sure your disconnect() method can wait for it to complete. Since you
    248 * don't have a handle on the URB used, you can't cancel the request.
    249 *
    250 * The data pointer can be made to a reference on the stack, or anywhere else
    251 * that can be successfully written to.  This function does not have the
    252 * restriction that usb_control_msg() has where the data pointer must be to
    253 * dynamically allocated memory (i.e. memory that can be successfully DMAed to a
    254 * device).
    255 *
    256 * The "whole" message must be properly received from the device in order for
    257 * this function to be successful.  If a device returns less than the expected
    258 * amount of data, then the function will fail.  Do not use this for messages
    259 * where a variable amount of data might be returned.
    260 *
    261 * Return: If successful, 0 is returned, Otherwise, a negative error number.
    262 */
    263int usb_control_msg_recv(struct usb_device *dev, __u8 endpoint, __u8 request,
    264			 __u8 requesttype, __u16 value, __u16 index,
    265			 void *driver_data, __u16 size, int timeout,
    266			 gfp_t memflags)
    267{
    268	unsigned int pipe = usb_rcvctrlpipe(dev, endpoint);
    269	int ret;
    270	u8 *data;
    271
    272	if (!size || !driver_data)
    273		return -EINVAL;
    274
    275	data = kmalloc(size, memflags);
    276	if (!data)
    277		return -ENOMEM;
    278
    279	ret = usb_control_msg(dev, pipe, request, requesttype, value, index,
    280			      data, size, timeout);
    281
    282	if (ret < 0)
    283		goto exit;
    284
    285	if (ret == size) {
    286		memcpy(driver_data, data, size);
    287		ret = 0;
    288	} else {
    289		ret = -EREMOTEIO;
    290	}
    291
    292exit:
    293	kfree(data);
    294	return ret;
    295}
    296EXPORT_SYMBOL_GPL(usb_control_msg_recv);
    297
    298/**
    299 * usb_interrupt_msg - Builds an interrupt urb, sends it off and waits for completion
    300 * @usb_dev: pointer to the usb device to send the message to
    301 * @pipe: endpoint "pipe" to send the message to
    302 * @data: pointer to the data to send
    303 * @len: length in bytes of the data to send
    304 * @actual_length: pointer to a location to put the actual length transferred
    305 *	in bytes
    306 * @timeout: time in msecs to wait for the message to complete before
    307 *	timing out (if 0 the wait is forever)
    308 *
    309 * Context: task context, might sleep.
    310 *
    311 * This function sends a simple interrupt message to a specified endpoint and
    312 * waits for the message to complete, or timeout.
    313 *
    314 * Don't use this function from within an interrupt context. If you need
    315 * an asynchronous message, or need to send a message from within interrupt
    316 * context, use usb_submit_urb() If a thread in your driver uses this call,
    317 * make sure your disconnect() method can wait for it to complete. Since you
    318 * don't have a handle on the URB used, you can't cancel the request.
    319 *
    320 * Return:
    321 * If successful, 0. Otherwise a negative error number. The number of actual
    322 * bytes transferred will be stored in the @actual_length parameter.
    323 */
    324int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
    325		      void *data, int len, int *actual_length, int timeout)
    326{
    327	return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
    328}
    329EXPORT_SYMBOL_GPL(usb_interrupt_msg);
    330
    331/**
    332 * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion
    333 * @usb_dev: pointer to the usb device to send the message to
    334 * @pipe: endpoint "pipe" to send the message to
    335 * @data: pointer to the data to send
    336 * @len: length in bytes of the data to send
    337 * @actual_length: pointer to a location to put the actual length transferred
    338 *	in bytes
    339 * @timeout: time in msecs to wait for the message to complete before
    340 *	timing out (if 0 the wait is forever)
    341 *
    342 * Context: task context, might sleep.
    343 *
    344 * This function sends a simple bulk message to a specified endpoint
    345 * and waits for the message to complete, or timeout.
    346 *
    347 * Don't use this function from within an interrupt context. If you need
    348 * an asynchronous message, or need to send a message from within interrupt
    349 * context, use usb_submit_urb() If a thread in your driver uses this call,
    350 * make sure your disconnect() method can wait for it to complete. Since you
    351 * don't have a handle on the URB used, you can't cancel the request.
    352 *
    353 * Because there is no usb_interrupt_msg() and no USBDEVFS_INTERRUPT ioctl,
    354 * users are forced to abuse this routine by using it to submit URBs for
    355 * interrupt endpoints.  We will take the liberty of creating an interrupt URB
    356 * (with the default interval) if the target is an interrupt endpoint.
    357 *
    358 * Return:
    359 * If successful, 0. Otherwise a negative error number. The number of actual
    360 * bytes transferred will be stored in the @actual_length parameter.
    361 *
    362 */
    363int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
    364		 void *data, int len, int *actual_length, int timeout)
    365{
    366	struct urb *urb;
    367	struct usb_host_endpoint *ep;
    368
    369	ep = usb_pipe_endpoint(usb_dev, pipe);
    370	if (!ep || len < 0)
    371		return -EINVAL;
    372
    373	urb = usb_alloc_urb(0, GFP_KERNEL);
    374	if (!urb)
    375		return -ENOMEM;
    376
    377	if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
    378			USB_ENDPOINT_XFER_INT) {
    379		pipe = (pipe & ~(3 << 30)) | (PIPE_INTERRUPT << 30);
    380		usb_fill_int_urb(urb, usb_dev, pipe, data, len,
    381				usb_api_blocking_completion, NULL,
    382				ep->desc.bInterval);
    383	} else
    384		usb_fill_bulk_urb(urb, usb_dev, pipe, data, len,
    385				usb_api_blocking_completion, NULL);
    386
    387	return usb_start_wait_urb(urb, timeout, actual_length);
    388}
    389EXPORT_SYMBOL_GPL(usb_bulk_msg);
    390
    391/*-------------------------------------------------------------------*/
    392
    393static void sg_clean(struct usb_sg_request *io)
    394{
    395	if (io->urbs) {
    396		while (io->entries--)
    397			usb_free_urb(io->urbs[io->entries]);
    398		kfree(io->urbs);
    399		io->urbs = NULL;
    400	}
    401	io->dev = NULL;
    402}
    403
    404static void sg_complete(struct urb *urb)
    405{
    406	unsigned long flags;
    407	struct usb_sg_request *io = urb->context;
    408	int status = urb->status;
    409
    410	spin_lock_irqsave(&io->lock, flags);
    411
    412	/* In 2.5 we require hcds' endpoint queues not to progress after fault
    413	 * reports, until the completion callback (this!) returns.  That lets
    414	 * device driver code (like this routine) unlink queued urbs first,
    415	 * if it needs to, since the HC won't work on them at all.  So it's
    416	 * not possible for page N+1 to overwrite page N, and so on.
    417	 *
    418	 * That's only for "hard" faults; "soft" faults (unlinks) sometimes
    419	 * complete before the HCD can get requests away from hardware,
    420	 * though never during cleanup after a hard fault.
    421	 */
    422	if (io->status
    423			&& (io->status != -ECONNRESET
    424				|| status != -ECONNRESET)
    425			&& urb->actual_length) {
    426		dev_err(io->dev->bus->controller,
    427			"dev %s ep%d%s scatterlist error %d/%d\n",
    428			io->dev->devpath,
    429			usb_endpoint_num(&urb->ep->desc),
    430			usb_urb_dir_in(urb) ? "in" : "out",
    431			status, io->status);
    432		/* BUG (); */
    433	}
    434
    435	if (io->status == 0 && status && status != -ECONNRESET) {
    436		int i, found, retval;
    437
    438		io->status = status;
    439
    440		/* the previous urbs, and this one, completed already.
    441		 * unlink pending urbs so they won't rx/tx bad data.
    442		 * careful: unlink can sometimes be synchronous...
    443		 */
    444		spin_unlock_irqrestore(&io->lock, flags);
    445		for (i = 0, found = 0; i < io->entries; i++) {
    446			if (!io->urbs[i])
    447				continue;
    448			if (found) {
    449				usb_block_urb(io->urbs[i]);
    450				retval = usb_unlink_urb(io->urbs[i]);
    451				if (retval != -EINPROGRESS &&
    452				    retval != -ENODEV &&
    453				    retval != -EBUSY &&
    454				    retval != -EIDRM)
    455					dev_err(&io->dev->dev,
    456						"%s, unlink --> %d\n",
    457						__func__, retval);
    458			} else if (urb == io->urbs[i])
    459				found = 1;
    460		}
    461		spin_lock_irqsave(&io->lock, flags);
    462	}
    463
    464	/* on the last completion, signal usb_sg_wait() */
    465	io->bytes += urb->actual_length;
    466	io->count--;
    467	if (!io->count)
    468		complete(&io->complete);
    469
    470	spin_unlock_irqrestore(&io->lock, flags);
    471}
    472
    473
    474/**
    475 * usb_sg_init - initializes scatterlist-based bulk/interrupt I/O request
    476 * @io: request block being initialized.  until usb_sg_wait() returns,
    477 *	treat this as a pointer to an opaque block of memory,
    478 * @dev: the usb device that will send or receive the data
    479 * @pipe: endpoint "pipe" used to transfer the data
    480 * @period: polling rate for interrupt endpoints, in frames or
    481 * 	(for high speed endpoints) microframes; ignored for bulk
    482 * @sg: scatterlist entries
    483 * @nents: how many entries in the scatterlist
    484 * @length: how many bytes to send from the scatterlist, or zero to
    485 * 	send every byte identified in the list.
    486 * @mem_flags: SLAB_* flags affecting memory allocations in this call
    487 *
    488 * This initializes a scatter/gather request, allocating resources such as
    489 * I/O mappings and urb memory (except maybe memory used by USB controller
    490 * drivers).
    491 *
    492 * The request must be issued using usb_sg_wait(), which waits for the I/O to
    493 * complete (or to be canceled) and then cleans up all resources allocated by
    494 * usb_sg_init().
    495 *
    496 * The request may be canceled with usb_sg_cancel(), either before or after
    497 * usb_sg_wait() is called.
    498 *
    499 * Return: Zero for success, else a negative errno value.
    500 */
    501int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
    502		unsigned pipe, unsigned	period, struct scatterlist *sg,
    503		int nents, size_t length, gfp_t mem_flags)
    504{
    505	int i;
    506	int urb_flags;
    507	int use_sg;
    508
    509	if (!io || !dev || !sg
    510			|| usb_pipecontrol(pipe)
    511			|| usb_pipeisoc(pipe)
    512			|| nents <= 0)
    513		return -EINVAL;
    514
    515	spin_lock_init(&io->lock);
    516	io->dev = dev;
    517	io->pipe = pipe;
    518
    519	if (dev->bus->sg_tablesize > 0) {
    520		use_sg = true;
    521		io->entries = 1;
    522	} else {
    523		use_sg = false;
    524		io->entries = nents;
    525	}
    526
    527	/* initialize all the urbs we'll use */
    528	io->urbs = kmalloc_array(io->entries, sizeof(*io->urbs), mem_flags);
    529	if (!io->urbs)
    530		goto nomem;
    531
    532	urb_flags = URB_NO_INTERRUPT;
    533	if (usb_pipein(pipe))
    534		urb_flags |= URB_SHORT_NOT_OK;
    535
    536	for_each_sg(sg, sg, io->entries, i) {
    537		struct urb *urb;
    538		unsigned len;
    539
    540		urb = usb_alloc_urb(0, mem_flags);
    541		if (!urb) {
    542			io->entries = i;
    543			goto nomem;
    544		}
    545		io->urbs[i] = urb;
    546
    547		urb->dev = NULL;
    548		urb->pipe = pipe;
    549		urb->interval = period;
    550		urb->transfer_flags = urb_flags;
    551		urb->complete = sg_complete;
    552		urb->context = io;
    553		urb->sg = sg;
    554
    555		if (use_sg) {
    556			/* There is no single transfer buffer */
    557			urb->transfer_buffer = NULL;
    558			urb->num_sgs = nents;
    559
    560			/* A length of zero means transfer the whole sg list */
    561			len = length;
    562			if (len == 0) {
    563				struct scatterlist	*sg2;
    564				int			j;
    565
    566				for_each_sg(sg, sg2, nents, j)
    567					len += sg2->length;
    568			}
    569		} else {
    570			/*
    571			 * Some systems can't use DMA; they use PIO instead.
    572			 * For their sakes, transfer_buffer is set whenever
    573			 * possible.
    574			 */
    575			if (!PageHighMem(sg_page(sg)))
    576				urb->transfer_buffer = sg_virt(sg);
    577			else
    578				urb->transfer_buffer = NULL;
    579
    580			len = sg->length;
    581			if (length) {
    582				len = min_t(size_t, len, length);
    583				length -= len;
    584				if (length == 0)
    585					io->entries = i + 1;
    586			}
    587		}
    588		urb->transfer_buffer_length = len;
    589	}
    590	io->urbs[--i]->transfer_flags &= ~URB_NO_INTERRUPT;
    591
    592	/* transaction state */
    593	io->count = io->entries;
    594	io->status = 0;
    595	io->bytes = 0;
    596	init_completion(&io->complete);
    597	return 0;
    598
    599nomem:
    600	sg_clean(io);
    601	return -ENOMEM;
    602}
    603EXPORT_SYMBOL_GPL(usb_sg_init);
    604
    605/**
    606 * usb_sg_wait - synchronously execute scatter/gather request
    607 * @io: request block handle, as initialized with usb_sg_init().
    608 * 	some fields become accessible when this call returns.
    609 *
    610 * Context: task context, might sleep.
    611 *
    612 * This function blocks until the specified I/O operation completes.  It
    613 * leverages the grouping of the related I/O requests to get good transfer
    614 * rates, by queueing the requests.  At higher speeds, such queuing can
    615 * significantly improve USB throughput.
    616 *
    617 * There are three kinds of completion for this function.
    618 *
    619 * (1) success, where io->status is zero.  The number of io->bytes
    620 *     transferred is as requested.
    621 * (2) error, where io->status is a negative errno value.  The number
    622 *     of io->bytes transferred before the error is usually less
    623 *     than requested, and can be nonzero.
    624 * (3) cancellation, a type of error with status -ECONNRESET that
    625 *     is initiated by usb_sg_cancel().
    626 *
    627 * When this function returns, all memory allocated through usb_sg_init() or
    628 * this call will have been freed.  The request block parameter may still be
    629 * passed to usb_sg_cancel(), or it may be freed.  It could also be
    630 * reinitialized and then reused.
    631 *
    632 * Data Transfer Rates:
    633 *
    634 * Bulk transfers are valid for full or high speed endpoints.
    635 * The best full speed data rate is 19 packets of 64 bytes each
    636 * per frame, or 1216 bytes per millisecond.
    637 * The best high speed data rate is 13 packets of 512 bytes each
    638 * per microframe, or 52 KBytes per millisecond.
    639 *
    640 * The reason to use interrupt transfers through this API would most likely
    641 * be to reserve high speed bandwidth, where up to 24 KBytes per millisecond
    642 * could be transferred.  That capability is less useful for low or full
    643 * speed interrupt endpoints, which allow at most one packet per millisecond,
    644 * of at most 8 or 64 bytes (respectively).
    645 *
    646 * It is not necessary to call this function to reserve bandwidth for devices
    647 * under an xHCI host controller, as the bandwidth is reserved when the
    648 * configuration or interface alt setting is selected.
    649 */
    650void usb_sg_wait(struct usb_sg_request *io)
    651{
    652	int i;
    653	int entries = io->entries;
    654
    655	/* queue the urbs.  */
    656	spin_lock_irq(&io->lock);
    657	i = 0;
    658	while (i < entries && !io->status) {
    659		int retval;
    660
    661		io->urbs[i]->dev = io->dev;
    662		spin_unlock_irq(&io->lock);
    663
    664		retval = usb_submit_urb(io->urbs[i], GFP_NOIO);
    665
    666		switch (retval) {
    667			/* maybe we retrying will recover */
    668		case -ENXIO:	/* hc didn't queue this one */
    669		case -EAGAIN:
    670		case -ENOMEM:
    671			retval = 0;
    672			yield();
    673			break;
    674
    675			/* no error? continue immediately.
    676			 *
    677			 * NOTE: to work better with UHCI (4K I/O buffer may
    678			 * need 3K of TDs) it may be good to limit how many
    679			 * URBs are queued at once; N milliseconds?
    680			 */
    681		case 0:
    682			++i;
    683			cpu_relax();
    684			break;
    685
    686			/* fail any uncompleted urbs */
    687		default:
    688			io->urbs[i]->status = retval;
    689			dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
    690				__func__, retval);
    691			usb_sg_cancel(io);
    692		}
    693		spin_lock_irq(&io->lock);
    694		if (retval && (io->status == 0 || io->status == -ECONNRESET))
    695			io->status = retval;
    696	}
    697	io->count -= entries - i;
    698	if (io->count == 0)
    699		complete(&io->complete);
    700	spin_unlock_irq(&io->lock);
    701
    702	/* OK, yes, this could be packaged as non-blocking.
    703	 * So could the submit loop above ... but it's easier to
    704	 * solve neither problem than to solve both!
    705	 */
    706	wait_for_completion(&io->complete);
    707
    708	sg_clean(io);
    709}
    710EXPORT_SYMBOL_GPL(usb_sg_wait);
    711
    712/**
    713 * usb_sg_cancel - stop scatter/gather i/o issued by usb_sg_wait()
    714 * @io: request block, initialized with usb_sg_init()
    715 *
    716 * This stops a request after it has been started by usb_sg_wait().
    717 * It can also prevents one initialized by usb_sg_init() from starting,
    718 * so that call just frees resources allocated to the request.
    719 */
    720void usb_sg_cancel(struct usb_sg_request *io)
    721{
    722	unsigned long flags;
    723	int i, retval;
    724
    725	spin_lock_irqsave(&io->lock, flags);
    726	if (io->status || io->count == 0) {
    727		spin_unlock_irqrestore(&io->lock, flags);
    728		return;
    729	}
    730	/* shut everything down */
    731	io->status = -ECONNRESET;
    732	io->count++;		/* Keep the request alive until we're done */
    733	spin_unlock_irqrestore(&io->lock, flags);
    734
    735	for (i = io->entries - 1; i >= 0; --i) {
    736		usb_block_urb(io->urbs[i]);
    737
    738		retval = usb_unlink_urb(io->urbs[i]);
    739		if (retval != -EINPROGRESS
    740		    && retval != -ENODEV
    741		    && retval != -EBUSY
    742		    && retval != -EIDRM)
    743			dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
    744				 __func__, retval);
    745	}
    746
    747	spin_lock_irqsave(&io->lock, flags);
    748	io->count--;
    749	if (!io->count)
    750		complete(&io->complete);
    751	spin_unlock_irqrestore(&io->lock, flags);
    752}
    753EXPORT_SYMBOL_GPL(usb_sg_cancel);
    754
    755/*-------------------------------------------------------------------*/
    756
    757/**
    758 * usb_get_descriptor - issues a generic GET_DESCRIPTOR request
    759 * @dev: the device whose descriptor is being retrieved
    760 * @type: the descriptor type (USB_DT_*)
    761 * @index: the number of the descriptor
    762 * @buf: where to put the descriptor
    763 * @size: how big is "buf"?
    764 *
    765 * Context: task context, might sleep.
    766 *
    767 * Gets a USB descriptor.  Convenience functions exist to simplify
    768 * getting some types of descriptors.  Use
    769 * usb_get_string() or usb_string() for USB_DT_STRING.
    770 * Device (USB_DT_DEVICE) and configuration descriptors (USB_DT_CONFIG)
    771 * are part of the device structure.
    772 * In addition to a number of USB-standard descriptors, some
    773 * devices also use class-specific or vendor-specific descriptors.
    774 *
    775 * This call is synchronous, and may not be used in an interrupt context.
    776 *
    777 * Return: The number of bytes received on success, or else the status code
    778 * returned by the underlying usb_control_msg() call.
    779 */
    780int usb_get_descriptor(struct usb_device *dev, unsigned char type,
    781		       unsigned char index, void *buf, int size)
    782{
    783	int i;
    784	int result;
    785
    786	if (size <= 0)		/* No point in asking for no data */
    787		return -EINVAL;
    788
    789	memset(buf, 0, size);	/* Make sure we parse really received data */
    790
    791	for (i = 0; i < 3; ++i) {
    792		/* retry on length 0 or error; some devices are flakey */
    793		result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
    794				USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
    795				(type << 8) + index, 0, buf, size,
    796				USB_CTRL_GET_TIMEOUT);
    797		if (result <= 0 && result != -ETIMEDOUT)
    798			continue;
    799		if (result > 1 && ((u8 *)buf)[1] != type) {
    800			result = -ENODATA;
    801			continue;
    802		}
    803		break;
    804	}
    805	return result;
    806}
    807EXPORT_SYMBOL_GPL(usb_get_descriptor);
    808
    809/**
    810 * usb_get_string - gets a string descriptor
    811 * @dev: the device whose string descriptor is being retrieved
    812 * @langid: code for language chosen (from string descriptor zero)
    813 * @index: the number of the descriptor
    814 * @buf: where to put the string
    815 * @size: how big is "buf"?
    816 *
    817 * Context: task context, might sleep.
    818 *
    819 * Retrieves a string, encoded using UTF-16LE (Unicode, 16 bits per character,
    820 * in little-endian byte order).
    821 * The usb_string() function will often be a convenient way to turn
    822 * these strings into kernel-printable form.
    823 *
    824 * Strings may be referenced in device, configuration, interface, or other
    825 * descriptors, and could also be used in vendor-specific ways.
    826 *
    827 * This call is synchronous, and may not be used in an interrupt context.
    828 *
    829 * Return: The number of bytes received on success, or else the status code
    830 * returned by the underlying usb_control_msg() call.
    831 */
    832static int usb_get_string(struct usb_device *dev, unsigned short langid,
    833			  unsigned char index, void *buf, int size)
    834{
    835	int i;
    836	int result;
    837
    838	if (size <= 0)		/* No point in asking for no data */
    839		return -EINVAL;
    840
    841	for (i = 0; i < 3; ++i) {
    842		/* retry on length 0 or stall; some devices are flakey */
    843		result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
    844			USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
    845			(USB_DT_STRING << 8) + index, langid, buf, size,
    846			USB_CTRL_GET_TIMEOUT);
    847		if (result == 0 || result == -EPIPE)
    848			continue;
    849		if (result > 1 && ((u8 *) buf)[1] != USB_DT_STRING) {
    850			result = -ENODATA;
    851			continue;
    852		}
    853		break;
    854	}
    855	return result;
    856}
    857
    858static void usb_try_string_workarounds(unsigned char *buf, int *length)
    859{
    860	int newlength, oldlength = *length;
    861
    862	for (newlength = 2; newlength + 1 < oldlength; newlength += 2)
    863		if (!isprint(buf[newlength]) || buf[newlength + 1])
    864			break;
    865
    866	if (newlength > 2) {
    867		buf[0] = newlength;
    868		*length = newlength;
    869	}
    870}
    871
    872static int usb_string_sub(struct usb_device *dev, unsigned int langid,
    873			  unsigned int index, unsigned char *buf)
    874{
    875	int rc;
    876
    877	/* Try to read the string descriptor by asking for the maximum
    878	 * possible number of bytes */
    879	if (dev->quirks & USB_QUIRK_STRING_FETCH_255)
    880		rc = -EIO;
    881	else
    882		rc = usb_get_string(dev, langid, index, buf, 255);
    883
    884	/* If that failed try to read the descriptor length, then
    885	 * ask for just that many bytes */
    886	if (rc < 2) {
    887		rc = usb_get_string(dev, langid, index, buf, 2);
    888		if (rc == 2)
    889			rc = usb_get_string(dev, langid, index, buf, buf[0]);
    890	}
    891
    892	if (rc >= 2) {
    893		if (!buf[0] && !buf[1])
    894			usb_try_string_workarounds(buf, &rc);
    895
    896		/* There might be extra junk at the end of the descriptor */
    897		if (buf[0] < rc)
    898			rc = buf[0];
    899
    900		rc = rc - (rc & 1); /* force a multiple of two */
    901	}
    902
    903	if (rc < 2)
    904		rc = (rc < 0 ? rc : -EINVAL);
    905
    906	return rc;
    907}
    908
    909static int usb_get_langid(struct usb_device *dev, unsigned char *tbuf)
    910{
    911	int err;
    912
    913	if (dev->have_langid)
    914		return 0;
    915
    916	if (dev->string_langid < 0)
    917		return -EPIPE;
    918
    919	err = usb_string_sub(dev, 0, 0, tbuf);
    920
    921	/* If the string was reported but is malformed, default to english
    922	 * (0x0409) */
    923	if (err == -ENODATA || (err > 0 && err < 4)) {
    924		dev->string_langid = 0x0409;
    925		dev->have_langid = 1;
    926		dev_err(&dev->dev,
    927			"language id specifier not provided by device, defaulting to English\n");
    928		return 0;
    929	}
    930
    931	/* In case of all other errors, we assume the device is not able to
    932	 * deal with strings at all. Set string_langid to -1 in order to
    933	 * prevent any string to be retrieved from the device */
    934	if (err < 0) {
    935		dev_info(&dev->dev, "string descriptor 0 read error: %d\n",
    936					err);
    937		dev->string_langid = -1;
    938		return -EPIPE;
    939	}
    940
    941	/* always use the first langid listed */
    942	dev->string_langid = tbuf[2] | (tbuf[3] << 8);
    943	dev->have_langid = 1;
    944	dev_dbg(&dev->dev, "default language 0x%04x\n",
    945				dev->string_langid);
    946	return 0;
    947}
    948
    949/**
    950 * usb_string - returns UTF-8 version of a string descriptor
    951 * @dev: the device whose string descriptor is being retrieved
    952 * @index: the number of the descriptor
    953 * @buf: where to put the string
    954 * @size: how big is "buf"?
    955 *
    956 * Context: task context, might sleep.
    957 *
    958 * This converts the UTF-16LE encoded strings returned by devices, from
    959 * usb_get_string_descriptor(), to null-terminated UTF-8 encoded ones
    960 * that are more usable in most kernel contexts.  Note that this function
    961 * chooses strings in the first language supported by the device.
    962 *
    963 * This call is synchronous, and may not be used in an interrupt context.
    964 *
    965 * Return: length of the string (>= 0) or usb_control_msg status (< 0).
    966 */
    967int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
    968{
    969	unsigned char *tbuf;
    970	int err;
    971
    972	if (dev->state == USB_STATE_SUSPENDED)
    973		return -EHOSTUNREACH;
    974	if (size <= 0 || !buf)
    975		return -EINVAL;
    976	buf[0] = 0;
    977	if (index <= 0 || index >= 256)
    978		return -EINVAL;
    979	tbuf = kmalloc(256, GFP_NOIO);
    980	if (!tbuf)
    981		return -ENOMEM;
    982
    983	err = usb_get_langid(dev, tbuf);
    984	if (err < 0)
    985		goto errout;
    986
    987	err = usb_string_sub(dev, dev->string_langid, index, tbuf);
    988	if (err < 0)
    989		goto errout;
    990
    991	size--;		/* leave room for trailing NULL char in output buffer */
    992	err = utf16s_to_utf8s((wchar_t *) &tbuf[2], (err - 2) / 2,
    993			UTF16_LITTLE_ENDIAN, buf, size);
    994	buf[err] = 0;
    995
    996	if (tbuf[1] != USB_DT_STRING)
    997		dev_dbg(&dev->dev,
    998			"wrong descriptor type %02x for string %d (\"%s\")\n",
    999			tbuf[1], index, buf);
   1000
   1001 errout:
   1002	kfree(tbuf);
   1003	return err;
   1004}
   1005EXPORT_SYMBOL_GPL(usb_string);
   1006
   1007/* one UTF-8-encoded 16-bit character has at most three bytes */
   1008#define MAX_USB_STRING_SIZE (127 * 3 + 1)
   1009
   1010/**
   1011 * usb_cache_string - read a string descriptor and cache it for later use
   1012 * @udev: the device whose string descriptor is being read
   1013 * @index: the descriptor index
   1014 *
   1015 * Return: A pointer to a kmalloc'ed buffer containing the descriptor string,
   1016 * or %NULL if the index is 0 or the string could not be read.
   1017 */
   1018char *usb_cache_string(struct usb_device *udev, int index)
   1019{
   1020	char *buf;
   1021	char *smallbuf = NULL;
   1022	int len;
   1023
   1024	if (index <= 0)
   1025		return NULL;
   1026
   1027	buf = kmalloc(MAX_USB_STRING_SIZE, GFP_NOIO);
   1028	if (buf) {
   1029		len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);
   1030		if (len > 0) {
   1031			smallbuf = kmalloc(++len, GFP_NOIO);
   1032			if (!smallbuf)
   1033				return buf;
   1034			memcpy(smallbuf, buf, len);
   1035		}
   1036		kfree(buf);
   1037	}
   1038	return smallbuf;
   1039}
   1040
   1041/*
   1042 * usb_get_device_descriptor - (re)reads the device descriptor (usbcore)
   1043 * @dev: the device whose device descriptor is being updated
   1044 * @size: how much of the descriptor to read
   1045 *
   1046 * Context: task context, might sleep.
   1047 *
   1048 * Updates the copy of the device descriptor stored in the device structure,
   1049 * which dedicates space for this purpose.
   1050 *
   1051 * Not exported, only for use by the core.  If drivers really want to read
   1052 * the device descriptor directly, they can call usb_get_descriptor() with
   1053 * type = USB_DT_DEVICE and index = 0.
   1054 *
   1055 * This call is synchronous, and may not be used in an interrupt context.
   1056 *
   1057 * Return: The number of bytes received on success, or else the status code
   1058 * returned by the underlying usb_control_msg() call.
   1059 */
   1060int usb_get_device_descriptor(struct usb_device *dev, unsigned int size)
   1061{
   1062	struct usb_device_descriptor *desc;
   1063	int ret;
   1064
   1065	if (size > sizeof(*desc))
   1066		return -EINVAL;
   1067	desc = kmalloc(sizeof(*desc), GFP_NOIO);
   1068	if (!desc)
   1069		return -ENOMEM;
   1070
   1071	ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, size);
   1072	if (ret >= 0)
   1073		memcpy(&dev->descriptor, desc, size);
   1074	kfree(desc);
   1075	return ret;
   1076}
   1077
   1078/*
   1079 * usb_set_isoch_delay - informs the device of the packet transmit delay
   1080 * @dev: the device whose delay is to be informed
   1081 * Context: task context, might sleep
   1082 *
   1083 * Since this is an optional request, we don't bother if it fails.
   1084 */
   1085int usb_set_isoch_delay(struct usb_device *dev)
   1086{
   1087	/* skip hub devices */
   1088	if (dev->descriptor.bDeviceClass == USB_CLASS_HUB)
   1089		return 0;
   1090
   1091	/* skip non-SS/non-SSP devices */
   1092	if (dev->speed < USB_SPEED_SUPER)
   1093		return 0;
   1094
   1095	return usb_control_msg_send(dev, 0,
   1096			USB_REQ_SET_ISOCH_DELAY,
   1097			USB_DIR_OUT | USB_TYPE_STANDARD | USB_RECIP_DEVICE,
   1098			dev->hub_delay, 0, NULL, 0,
   1099			USB_CTRL_SET_TIMEOUT,
   1100			GFP_NOIO);
   1101}
   1102
   1103/**
   1104 * usb_get_status - issues a GET_STATUS call
   1105 * @dev: the device whose status is being checked
   1106 * @recip: USB_RECIP_*; for device, interface, or endpoint
   1107 * @type: USB_STATUS_TYPE_*; for standard or PTM status types
   1108 * @target: zero (for device), else interface or endpoint number
   1109 * @data: pointer to two bytes of bitmap data
   1110 *
   1111 * Context: task context, might sleep.
   1112 *
   1113 * Returns device, interface, or endpoint status.  Normally only of
   1114 * interest to see if the device is self powered, or has enabled the
   1115 * remote wakeup facility; or whether a bulk or interrupt endpoint
   1116 * is halted ("stalled").
   1117 *
   1118 * Bits in these status bitmaps are set using the SET_FEATURE request,
   1119 * and cleared using the CLEAR_FEATURE request.  The usb_clear_halt()
   1120 * function should be used to clear halt ("stall") status.
   1121 *
   1122 * This call is synchronous, and may not be used in an interrupt context.
   1123 *
   1124 * Returns 0 and the status value in *@data (in host byte order) on success,
   1125 * or else the status code from the underlying usb_control_msg() call.
   1126 */
   1127int usb_get_status(struct usb_device *dev, int recip, int type, int target,
   1128		void *data)
   1129{
   1130	int ret;
   1131	void *status;
   1132	int length;
   1133
   1134	switch (type) {
   1135	case USB_STATUS_TYPE_STANDARD:
   1136		length = 2;
   1137		break;
   1138	case USB_STATUS_TYPE_PTM:
   1139		if (recip != USB_RECIP_DEVICE)
   1140			return -EINVAL;
   1141
   1142		length = 4;
   1143		break;
   1144	default:
   1145		return -EINVAL;
   1146	}
   1147
   1148	status =  kmalloc(length, GFP_KERNEL);
   1149	if (!status)
   1150		return -ENOMEM;
   1151
   1152	ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
   1153		USB_REQ_GET_STATUS, USB_DIR_IN | recip, USB_STATUS_TYPE_STANDARD,
   1154		target, status, length, USB_CTRL_GET_TIMEOUT);
   1155
   1156	switch (ret) {
   1157	case 4:
   1158		if (type != USB_STATUS_TYPE_PTM) {
   1159			ret = -EIO;
   1160			break;
   1161		}
   1162
   1163		*(u32 *) data = le32_to_cpu(*(__le32 *) status);
   1164		ret = 0;
   1165		break;
   1166	case 2:
   1167		if (type != USB_STATUS_TYPE_STANDARD) {
   1168			ret = -EIO;
   1169			break;
   1170		}
   1171
   1172		*(u16 *) data = le16_to_cpu(*(__le16 *) status);
   1173		ret = 0;
   1174		break;
   1175	default:
   1176		ret = -EIO;
   1177	}
   1178
   1179	kfree(status);
   1180	return ret;
   1181}
   1182EXPORT_SYMBOL_GPL(usb_get_status);
   1183
   1184/**
   1185 * usb_clear_halt - tells device to clear endpoint halt/stall condition
   1186 * @dev: device whose endpoint is halted
   1187 * @pipe: endpoint "pipe" being cleared
   1188 *
   1189 * Context: task context, might sleep.
   1190 *
   1191 * This is used to clear halt conditions for bulk and interrupt endpoints,
   1192 * as reported by URB completion status.  Endpoints that are halted are
   1193 * sometimes referred to as being "stalled".  Such endpoints are unable
   1194 * to transmit or receive data until the halt status is cleared.  Any URBs
   1195 * queued for such an endpoint should normally be unlinked by the driver
   1196 * before clearing the halt condition, as described in sections 5.7.5
   1197 * and 5.8.5 of the USB 2.0 spec.
   1198 *
   1199 * Note that control and isochronous endpoints don't halt, although control
   1200 * endpoints report "protocol stall" (for unsupported requests) using the
   1201 * same status code used to report a true stall.
   1202 *
   1203 * This call is synchronous, and may not be used in an interrupt context.
   1204 *
   1205 * Return: Zero on success, or else the status code returned by the
   1206 * underlying usb_control_msg() call.
   1207 */
   1208int usb_clear_halt(struct usb_device *dev, int pipe)
   1209{
   1210	int result;
   1211	int endp = usb_pipeendpoint(pipe);
   1212
   1213	if (usb_pipein(pipe))
   1214		endp |= USB_DIR_IN;
   1215
   1216	/* we don't care if it wasn't halted first. in fact some devices
   1217	 * (like some ibmcam model 1 units) seem to expect hosts to make
   1218	 * this request for iso endpoints, which can't halt!
   1219	 */
   1220	result = usb_control_msg_send(dev, 0,
   1221				      USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT,
   1222				      USB_ENDPOINT_HALT, endp, NULL, 0,
   1223				      USB_CTRL_SET_TIMEOUT, GFP_NOIO);
   1224
   1225	/* don't un-halt or force to DATA0 except on success */
   1226	if (result)
   1227		return result;
   1228
   1229	/* NOTE:  seems like Microsoft and Apple don't bother verifying
   1230	 * the clear "took", so some devices could lock up if you check...
   1231	 * such as the Hagiwara FlashGate DUAL.  So we won't bother.
   1232	 *
   1233	 * NOTE:  make sure the logic here doesn't diverge much from
   1234	 * the copy in usb-storage, for as long as we need two copies.
   1235	 */
   1236
   1237	usb_reset_endpoint(dev, endp);
   1238
   1239	return 0;
   1240}
   1241EXPORT_SYMBOL_GPL(usb_clear_halt);
   1242
   1243static int create_intf_ep_devs(struct usb_interface *intf)
   1244{
   1245	struct usb_device *udev = interface_to_usbdev(intf);
   1246	struct usb_host_interface *alt = intf->cur_altsetting;
   1247	int i;
   1248
   1249	if (intf->ep_devs_created || intf->unregistering)
   1250		return 0;
   1251
   1252	for (i = 0; i < alt->desc.bNumEndpoints; ++i)
   1253		(void) usb_create_ep_devs(&intf->dev, &alt->endpoint[i], udev);
   1254	intf->ep_devs_created = 1;
   1255	return 0;
   1256}
   1257
   1258static void remove_intf_ep_devs(struct usb_interface *intf)
   1259{
   1260	struct usb_host_interface *alt = intf->cur_altsetting;
   1261	int i;
   1262
   1263	if (!intf->ep_devs_created)
   1264		return;
   1265
   1266	for (i = 0; i < alt->desc.bNumEndpoints; ++i)
   1267		usb_remove_ep_devs(&alt->endpoint[i]);
   1268	intf->ep_devs_created = 0;
   1269}
   1270
   1271/**
   1272 * usb_disable_endpoint -- Disable an endpoint by address
   1273 * @dev: the device whose endpoint is being disabled
   1274 * @epaddr: the endpoint's address.  Endpoint number for output,
   1275 *	endpoint number + USB_DIR_IN for input
   1276 * @reset_hardware: flag to erase any endpoint state stored in the
   1277 *	controller hardware
   1278 *
   1279 * Disables the endpoint for URB submission and nukes all pending URBs.
   1280 * If @reset_hardware is set then also deallocates hcd/hardware state
   1281 * for the endpoint.
   1282 */
   1283void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,
   1284		bool reset_hardware)
   1285{
   1286	unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
   1287	struct usb_host_endpoint *ep;
   1288
   1289	if (!dev)
   1290		return;
   1291
   1292	if (usb_endpoint_out(epaddr)) {
   1293		ep = dev->ep_out[epnum];
   1294		if (reset_hardware && epnum != 0)
   1295			dev->ep_out[epnum] = NULL;
   1296	} else {
   1297		ep = dev->ep_in[epnum];
   1298		if (reset_hardware && epnum != 0)
   1299			dev->ep_in[epnum] = NULL;
   1300	}
   1301	if (ep) {
   1302		ep->enabled = 0;
   1303		usb_hcd_flush_endpoint(dev, ep);
   1304		if (reset_hardware)
   1305			usb_hcd_disable_endpoint(dev, ep);
   1306	}
   1307}
   1308
   1309/**
   1310 * usb_reset_endpoint - Reset an endpoint's state.
   1311 * @dev: the device whose endpoint is to be reset
   1312 * @epaddr: the endpoint's address.  Endpoint number for output,
   1313 *	endpoint number + USB_DIR_IN for input
   1314 *
   1315 * Resets any host-side endpoint state such as the toggle bit,
   1316 * sequence number or current window.
   1317 */
   1318void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr)
   1319{
   1320	unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
   1321	struct usb_host_endpoint *ep;
   1322
   1323	if (usb_endpoint_out(epaddr))
   1324		ep = dev->ep_out[epnum];
   1325	else
   1326		ep = dev->ep_in[epnum];
   1327	if (ep)
   1328		usb_hcd_reset_endpoint(dev, ep);
   1329}
   1330EXPORT_SYMBOL_GPL(usb_reset_endpoint);
   1331
   1332
   1333/**
   1334 * usb_disable_interface -- Disable all endpoints for an interface
   1335 * @dev: the device whose interface is being disabled
   1336 * @intf: pointer to the interface descriptor
   1337 * @reset_hardware: flag to erase any endpoint state stored in the
   1338 *	controller hardware
   1339 *
   1340 * Disables all the endpoints for the interface's current altsetting.
   1341 */
   1342void usb_disable_interface(struct usb_device *dev, struct usb_interface *intf,
   1343		bool reset_hardware)
   1344{
   1345	struct usb_host_interface *alt = intf->cur_altsetting;
   1346	int i;
   1347
   1348	for (i = 0; i < alt->desc.bNumEndpoints; ++i) {
   1349		usb_disable_endpoint(dev,
   1350				alt->endpoint[i].desc.bEndpointAddress,
   1351				reset_hardware);
   1352	}
   1353}
   1354
   1355/*
   1356 * usb_disable_device_endpoints -- Disable all endpoints for a device
   1357 * @dev: the device whose endpoints are being disabled
   1358 * @skip_ep0: 0 to disable endpoint 0, 1 to skip it.
   1359 */
   1360static void usb_disable_device_endpoints(struct usb_device *dev, int skip_ep0)
   1361{
   1362	struct usb_hcd *hcd = bus_to_hcd(dev->bus);
   1363	int i;
   1364
   1365	if (hcd->driver->check_bandwidth) {
   1366		/* First pass: Cancel URBs, leave endpoint pointers intact. */
   1367		for (i = skip_ep0; i < 16; ++i) {
   1368			usb_disable_endpoint(dev, i, false);
   1369			usb_disable_endpoint(dev, i + USB_DIR_IN, false);
   1370		}
   1371		/* Remove endpoints from the host controller internal state */
   1372		mutex_lock(hcd->bandwidth_mutex);
   1373		usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL);
   1374		mutex_unlock(hcd->bandwidth_mutex);
   1375	}
   1376	/* Second pass: remove endpoint pointers */
   1377	for (i = skip_ep0; i < 16; ++i) {
   1378		usb_disable_endpoint(dev, i, true);
   1379		usb_disable_endpoint(dev, i + USB_DIR_IN, true);
   1380	}
   1381}
   1382
   1383/**
   1384 * usb_disable_device - Disable all the endpoints for a USB device
   1385 * @dev: the device whose endpoints are being disabled
   1386 * @skip_ep0: 0 to disable endpoint 0, 1 to skip it.
   1387 *
   1388 * Disables all the device's endpoints, potentially including endpoint 0.
   1389 * Deallocates hcd/hardware state for the endpoints (nuking all or most
   1390 * pending urbs) and usbcore state for the interfaces, so that usbcore
   1391 * must usb_set_configuration() before any interfaces could be used.
   1392 */
   1393void usb_disable_device(struct usb_device *dev, int skip_ep0)
   1394{
   1395	int i;
   1396
   1397	/* getting rid of interfaces will disconnect
   1398	 * any drivers bound to them (a key side effect)
   1399	 */
   1400	if (dev->actconfig) {
   1401		/*
   1402		 * FIXME: In order to avoid self-deadlock involving the
   1403		 * bandwidth_mutex, we have to mark all the interfaces
   1404		 * before unregistering any of them.
   1405		 */
   1406		for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++)
   1407			dev->actconfig->interface[i]->unregistering = 1;
   1408
   1409		for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
   1410			struct usb_interface	*interface;
   1411
   1412			/* remove this interface if it has been registered */
   1413			interface = dev->actconfig->interface[i];
   1414			if (!device_is_registered(&interface->dev))
   1415				continue;
   1416			dev_dbg(&dev->dev, "unregistering interface %s\n",
   1417				dev_name(&interface->dev));
   1418			remove_intf_ep_devs(interface);
   1419			device_del(&interface->dev);
   1420		}
   1421
   1422		/* Now that the interfaces are unbound, nobody should
   1423		 * try to access them.
   1424		 */
   1425		for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
   1426			put_device(&dev->actconfig->interface[i]->dev);
   1427			dev->actconfig->interface[i] = NULL;
   1428		}
   1429
   1430		usb_disable_usb2_hardware_lpm(dev);
   1431		usb_unlocked_disable_lpm(dev);
   1432		usb_disable_ltm(dev);
   1433
   1434		dev->actconfig = NULL;
   1435		if (dev->state == USB_STATE_CONFIGURED)
   1436			usb_set_device_state(dev, USB_STATE_ADDRESS);
   1437	}
   1438
   1439	dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
   1440		skip_ep0 ? "non-ep0" : "all");
   1441
   1442	usb_disable_device_endpoints(dev, skip_ep0);
   1443}
   1444
   1445/**
   1446 * usb_enable_endpoint - Enable an endpoint for USB communications
   1447 * @dev: the device whose interface is being enabled
   1448 * @ep: the endpoint
   1449 * @reset_ep: flag to reset the endpoint state
   1450 *
   1451 * Resets the endpoint state if asked, and sets dev->ep_{in,out} pointers.
   1452 * For control endpoints, both the input and output sides are handled.
   1453 */
   1454void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep,
   1455		bool reset_ep)
   1456{
   1457	int epnum = usb_endpoint_num(&ep->desc);
   1458	int is_out = usb_endpoint_dir_out(&ep->desc);
   1459	int is_control = usb_endpoint_xfer_control(&ep->desc);
   1460
   1461	if (reset_ep)
   1462		usb_hcd_reset_endpoint(dev, ep);
   1463	if (is_out || is_control)
   1464		dev->ep_out[epnum] = ep;
   1465	if (!is_out || is_control)
   1466		dev->ep_in[epnum] = ep;
   1467	ep->enabled = 1;
   1468}
   1469
   1470/**
   1471 * usb_enable_interface - Enable all the endpoints for an interface
   1472 * @dev: the device whose interface is being enabled
   1473 * @intf: pointer to the interface descriptor
   1474 * @reset_eps: flag to reset the endpoints' state
   1475 *
   1476 * Enables all the endpoints for the interface's current altsetting.
   1477 */
   1478void usb_enable_interface(struct usb_device *dev,
   1479		struct usb_interface *intf, bool reset_eps)
   1480{
   1481	struct usb_host_interface *alt = intf->cur_altsetting;
   1482	int i;
   1483
   1484	for (i = 0; i < alt->desc.bNumEndpoints; ++i)
   1485		usb_enable_endpoint(dev, &alt->endpoint[i], reset_eps);
   1486}
   1487
   1488/**
   1489 * usb_set_interface - Makes a particular alternate setting be current
   1490 * @dev: the device whose interface is being updated
   1491 * @interface: the interface being updated
   1492 * @alternate: the setting being chosen.
   1493 *
   1494 * Context: task context, might sleep.
   1495 *
   1496 * This is used to enable data transfers on interfaces that may not
   1497 * be enabled by default.  Not all devices support such configurability.
   1498 * Only the driver bound to an interface may change its setting.
   1499 *
   1500 * Within any given configuration, each interface may have several
   1501 * alternative settings.  These are often used to control levels of
   1502 * bandwidth consumption.  For example, the default setting for a high
   1503 * speed interrupt endpoint may not send more than 64 bytes per microframe,
   1504 * while interrupt transfers of up to 3KBytes per microframe are legal.
   1505 * Also, isochronous endpoints may never be part of an
   1506 * interface's default setting.  To access such bandwidth, alternate
   1507 * interface settings must be made current.
   1508 *
   1509 * Note that in the Linux USB subsystem, bandwidth associated with
   1510 * an endpoint in a given alternate setting is not reserved until an URB
   1511 * is submitted that needs that bandwidth.  Some other operating systems
   1512 * allocate bandwidth early, when a configuration is chosen.
   1513 *
   1514 * xHCI reserves bandwidth and configures the alternate setting in
   1515 * usb_hcd_alloc_bandwidth(). If it fails the original interface altsetting
   1516 * may be disabled. Drivers cannot rely on any particular alternate
   1517 * setting being in effect after a failure.
   1518 *
   1519 * This call is synchronous, and may not be used in an interrupt context.
   1520 * Also, drivers must not change altsettings while urbs are scheduled for
   1521 * endpoints in that interface; all such urbs must first be completed
   1522 * (perhaps forced by unlinking).
   1523 *
   1524 * Return: Zero on success, or else the status code returned by the
   1525 * underlying usb_control_msg() call.
   1526 */
   1527int usb_set_interface(struct usb_device *dev, int interface, int alternate)
   1528{
   1529	struct usb_interface *iface;
   1530	struct usb_host_interface *alt;
   1531	struct usb_hcd *hcd = bus_to_hcd(dev->bus);
   1532	int i, ret, manual = 0;
   1533	unsigned int epaddr;
   1534	unsigned int pipe;
   1535
   1536	if (dev->state == USB_STATE_SUSPENDED)
   1537		return -EHOSTUNREACH;
   1538
   1539	iface = usb_ifnum_to_if(dev, interface);
   1540	if (!iface) {
   1541		dev_dbg(&dev->dev, "selecting invalid interface %d\n",
   1542			interface);
   1543		return -EINVAL;
   1544	}
   1545	if (iface->unregistering)
   1546		return -ENODEV;
   1547
   1548	alt = usb_altnum_to_altsetting(iface, alternate);
   1549	if (!alt) {
   1550		dev_warn(&dev->dev, "selecting invalid altsetting %d\n",
   1551			 alternate);
   1552		return -EINVAL;
   1553	}
   1554	/*
   1555	 * usb3 hosts configure the interface in usb_hcd_alloc_bandwidth,
   1556	 * including freeing dropped endpoint ring buffers.
   1557	 * Make sure the interface endpoints are flushed before that
   1558	 */
   1559	usb_disable_interface(dev, iface, false);
   1560
   1561	/* Make sure we have enough bandwidth for this alternate interface.
   1562	 * Remove the current alt setting and add the new alt setting.
   1563	 */
   1564	mutex_lock(hcd->bandwidth_mutex);
   1565	/* Disable LPM, and re-enable it once the new alt setting is installed,
   1566	 * so that the xHCI driver can recalculate the U1/U2 timeouts.
   1567	 */
   1568	if (usb_disable_lpm(dev)) {
   1569		dev_err(&iface->dev, "%s Failed to disable LPM\n", __func__);
   1570		mutex_unlock(hcd->bandwidth_mutex);
   1571		return -ENOMEM;
   1572	}
   1573	/* Changing alt-setting also frees any allocated streams */
   1574	for (i = 0; i < iface->cur_altsetting->desc.bNumEndpoints; i++)
   1575		iface->cur_altsetting->endpoint[i].streams = 0;
   1576
   1577	ret = usb_hcd_alloc_bandwidth(dev, NULL, iface->cur_altsetting, alt);
   1578	if (ret < 0) {
   1579		dev_info(&dev->dev, "Not enough bandwidth for altsetting %d\n",
   1580				alternate);
   1581		usb_enable_lpm(dev);
   1582		mutex_unlock(hcd->bandwidth_mutex);
   1583		return ret;
   1584	}
   1585
   1586	if (dev->quirks & USB_QUIRK_NO_SET_INTF)
   1587		ret = -EPIPE;
   1588	else
   1589		ret = usb_control_msg_send(dev, 0,
   1590					   USB_REQ_SET_INTERFACE,
   1591					   USB_RECIP_INTERFACE, alternate,
   1592					   interface, NULL, 0, 5000,
   1593					   GFP_NOIO);
   1594
   1595	/* 9.4.10 says devices don't need this and are free to STALL the
   1596	 * request if the interface only has one alternate setting.
   1597	 */
   1598	if (ret == -EPIPE && iface->num_altsetting == 1) {
   1599		dev_dbg(&dev->dev,
   1600			"manual set_interface for iface %d, alt %d\n",
   1601			interface, alternate);
   1602		manual = 1;
   1603	} else if (ret) {
   1604		/* Re-instate the old alt setting */
   1605		usb_hcd_alloc_bandwidth(dev, NULL, alt, iface->cur_altsetting);
   1606		usb_enable_lpm(dev);
   1607		mutex_unlock(hcd->bandwidth_mutex);
   1608		return ret;
   1609	}
   1610	mutex_unlock(hcd->bandwidth_mutex);
   1611
   1612	/* FIXME drivers shouldn't need to replicate/bugfix the logic here
   1613	 * when they implement async or easily-killable versions of this or
   1614	 * other "should-be-internal" functions (like clear_halt).
   1615	 * should hcd+usbcore postprocess control requests?
   1616	 */
   1617
   1618	/* prevent submissions using previous endpoint settings */
   1619	if (iface->cur_altsetting != alt) {
   1620		remove_intf_ep_devs(iface);
   1621		usb_remove_sysfs_intf_files(iface);
   1622	}
   1623	usb_disable_interface(dev, iface, true);
   1624
   1625	iface->cur_altsetting = alt;
   1626
   1627	/* Now that the interface is installed, re-enable LPM. */
   1628	usb_unlocked_enable_lpm(dev);
   1629
   1630	/* If the interface only has one altsetting and the device didn't
   1631	 * accept the request, we attempt to carry out the equivalent action
   1632	 * by manually clearing the HALT feature for each endpoint in the
   1633	 * new altsetting.
   1634	 */
   1635	if (manual) {
   1636		for (i = 0; i < alt->desc.bNumEndpoints; i++) {
   1637			epaddr = alt->endpoint[i].desc.bEndpointAddress;
   1638			pipe = __create_pipe(dev,
   1639					USB_ENDPOINT_NUMBER_MASK & epaddr) |
   1640					(usb_endpoint_out(epaddr) ?
   1641					USB_DIR_OUT : USB_DIR_IN);
   1642
   1643			usb_clear_halt(dev, pipe);
   1644		}
   1645	}
   1646
   1647	/* 9.1.1.5: reset toggles for all endpoints in the new altsetting
   1648	 *
   1649	 * Note:
   1650	 * Despite EP0 is always present in all interfaces/AS, the list of
   1651	 * endpoints from the descriptor does not contain EP0. Due to its
   1652	 * omnipresence one might expect EP0 being considered "affected" by
   1653	 * any SetInterface request and hence assume toggles need to be reset.
   1654	 * However, EP0 toggles are re-synced for every individual transfer
   1655	 * during the SETUP stage - hence EP0 toggles are "don't care" here.
   1656	 * (Likewise, EP0 never "halts" on well designed devices.)
   1657	 */
   1658	usb_enable_interface(dev, iface, true);
   1659	if (device_is_registered(&iface->dev)) {
   1660		usb_create_sysfs_intf_files(iface);
   1661		create_intf_ep_devs(iface);
   1662	}
   1663	return 0;
   1664}
   1665EXPORT_SYMBOL_GPL(usb_set_interface);
   1666
   1667/**
   1668 * usb_reset_configuration - lightweight device reset
   1669 * @dev: the device whose configuration is being reset
   1670 *
   1671 * This issues a standard SET_CONFIGURATION request to the device using
   1672 * the current configuration.  The effect is to reset most USB-related
   1673 * state in the device, including interface altsettings (reset to zero),
   1674 * endpoint halts (cleared), and endpoint state (only for bulk and interrupt
   1675 * endpoints).  Other usbcore state is unchanged, including bindings of
   1676 * usb device drivers to interfaces.
   1677 *
   1678 * Because this affects multiple interfaces, avoid using this with composite
   1679 * (multi-interface) devices.  Instead, the driver for each interface may
   1680 * use usb_set_interface() on the interfaces it claims.  Be careful though;
   1681 * some devices don't support the SET_INTERFACE request, and others won't
   1682 * reset all the interface state (notably endpoint state).  Resetting the whole
   1683 * configuration would affect other drivers' interfaces.
   1684 *
   1685 * The caller must own the device lock.
   1686 *
   1687 * Return: Zero on success, else a negative error code.
   1688 *
   1689 * If this routine fails the device will probably be in an unusable state
   1690 * with endpoints disabled, and interfaces only partially enabled.
   1691 */
   1692int usb_reset_configuration(struct usb_device *dev)
   1693{
   1694	int			i, retval;
   1695	struct usb_host_config	*config;
   1696	struct usb_hcd *hcd = bus_to_hcd(dev->bus);
   1697
   1698	if (dev->state == USB_STATE_SUSPENDED)
   1699		return -EHOSTUNREACH;
   1700
   1701	/* caller must have locked the device and must own
   1702	 * the usb bus readlock (so driver bindings are stable);
   1703	 * calls during probe() are fine
   1704	 */
   1705
   1706	usb_disable_device_endpoints(dev, 1); /* skip ep0*/
   1707
   1708	config = dev->actconfig;
   1709	retval = 0;
   1710	mutex_lock(hcd->bandwidth_mutex);
   1711	/* Disable LPM, and re-enable it once the configuration is reset, so
   1712	 * that the xHCI driver can recalculate the U1/U2 timeouts.
   1713	 */
   1714	if (usb_disable_lpm(dev)) {
   1715		dev_err(&dev->dev, "%s Failed to disable LPM\n", __func__);
   1716		mutex_unlock(hcd->bandwidth_mutex);
   1717		return -ENOMEM;
   1718	}
   1719
   1720	/* xHCI adds all endpoints in usb_hcd_alloc_bandwidth */
   1721	retval = usb_hcd_alloc_bandwidth(dev, config, NULL, NULL);
   1722	if (retval < 0) {
   1723		usb_enable_lpm(dev);
   1724		mutex_unlock(hcd->bandwidth_mutex);
   1725		return retval;
   1726	}
   1727	retval = usb_control_msg_send(dev, 0, USB_REQ_SET_CONFIGURATION, 0,
   1728				      config->desc.bConfigurationValue, 0,
   1729				      NULL, 0, USB_CTRL_SET_TIMEOUT,
   1730				      GFP_NOIO);
   1731	if (retval) {
   1732		usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL);
   1733		usb_enable_lpm(dev);
   1734		mutex_unlock(hcd->bandwidth_mutex);
   1735		return retval;
   1736	}
   1737	mutex_unlock(hcd->bandwidth_mutex);
   1738
   1739	/* re-init hc/hcd interface/endpoint state */
   1740	for (i = 0; i < config->desc.bNumInterfaces; i++) {
   1741		struct usb_interface *intf = config->interface[i];
   1742		struct usb_host_interface *alt;
   1743
   1744		alt = usb_altnum_to_altsetting(intf, 0);
   1745
   1746		/* No altsetting 0?  We'll assume the first altsetting.
   1747		 * We could use a GetInterface call, but if a device is
   1748		 * so non-compliant that it doesn't have altsetting 0
   1749		 * then I wouldn't trust its reply anyway.
   1750		 */
   1751		if (!alt)
   1752			alt = &intf->altsetting[0];
   1753
   1754		if (alt != intf->cur_altsetting) {
   1755			remove_intf_ep_devs(intf);
   1756			usb_remove_sysfs_intf_files(intf);
   1757		}
   1758		intf->cur_altsetting = alt;
   1759		usb_enable_interface(dev, intf, true);
   1760		if (device_is_registered(&intf->dev)) {
   1761			usb_create_sysfs_intf_files(intf);
   1762			create_intf_ep_devs(intf);
   1763		}
   1764	}
   1765	/* Now that the interfaces are installed, re-enable LPM. */
   1766	usb_unlocked_enable_lpm(dev);
   1767	return 0;
   1768}
   1769EXPORT_SYMBOL_GPL(usb_reset_configuration);
   1770
   1771static void usb_release_interface(struct device *dev)
   1772{
   1773	struct usb_interface *intf = to_usb_interface(dev);
   1774	struct usb_interface_cache *intfc =
   1775			altsetting_to_usb_interface_cache(intf->altsetting);
   1776
   1777	kref_put(&intfc->ref, usb_release_interface_cache);
   1778	usb_put_dev(interface_to_usbdev(intf));
   1779	of_node_put(dev->of_node);
   1780	kfree(intf);
   1781}
   1782
   1783/*
   1784 * usb_deauthorize_interface - deauthorize an USB interface
   1785 *
   1786 * @intf: USB interface structure
   1787 */
   1788void usb_deauthorize_interface(struct usb_interface *intf)
   1789{
   1790	struct device *dev = &intf->dev;
   1791
   1792	device_lock(dev->parent);
   1793
   1794	if (intf->authorized) {
   1795		device_lock(dev);
   1796		intf->authorized = 0;
   1797		device_unlock(dev);
   1798
   1799		usb_forced_unbind_intf(intf);
   1800	}
   1801
   1802	device_unlock(dev->parent);
   1803}
   1804
   1805/*
   1806 * usb_authorize_interface - authorize an USB interface
   1807 *
   1808 * @intf: USB interface structure
   1809 */
   1810void usb_authorize_interface(struct usb_interface *intf)
   1811{
   1812	struct device *dev = &intf->dev;
   1813
   1814	if (!intf->authorized) {
   1815		device_lock(dev);
   1816		intf->authorized = 1; /* authorize interface */
   1817		device_unlock(dev);
   1818	}
   1819}
   1820
   1821static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
   1822{
   1823	struct usb_device *usb_dev;
   1824	struct usb_interface *intf;
   1825	struct usb_host_interface *alt;
   1826
   1827	intf = to_usb_interface(dev);
   1828	usb_dev = interface_to_usbdev(intf);
   1829	alt = intf->cur_altsetting;
   1830
   1831	if (add_uevent_var(env, "INTERFACE=%d/%d/%d",
   1832		   alt->desc.bInterfaceClass,
   1833		   alt->desc.bInterfaceSubClass,
   1834		   alt->desc.bInterfaceProtocol))
   1835		return -ENOMEM;
   1836
   1837	if (add_uevent_var(env,
   1838		   "MODALIAS=usb:"
   1839		   "v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02Xin%02X",
   1840		   le16_to_cpu(usb_dev->descriptor.idVendor),
   1841		   le16_to_cpu(usb_dev->descriptor.idProduct),
   1842		   le16_to_cpu(usb_dev->descriptor.bcdDevice),
   1843		   usb_dev->descriptor.bDeviceClass,
   1844		   usb_dev->descriptor.bDeviceSubClass,
   1845		   usb_dev->descriptor.bDeviceProtocol,
   1846		   alt->desc.bInterfaceClass,
   1847		   alt->desc.bInterfaceSubClass,
   1848		   alt->desc.bInterfaceProtocol,
   1849		   alt->desc.bInterfaceNumber))
   1850		return -ENOMEM;
   1851
   1852	return 0;
   1853}
   1854
   1855struct device_type usb_if_device_type = {
   1856	.name =		"usb_interface",
   1857	.release =	usb_release_interface,
   1858	.uevent =	usb_if_uevent,
   1859};
   1860
   1861static struct usb_interface_assoc_descriptor *find_iad(struct usb_device *dev,
   1862						struct usb_host_config *config,
   1863						u8 inum)
   1864{
   1865	struct usb_interface_assoc_descriptor *retval = NULL;
   1866	struct usb_interface_assoc_descriptor *intf_assoc;
   1867	int first_intf;
   1868	int last_intf;
   1869	int i;
   1870
   1871	for (i = 0; (i < USB_MAXIADS && config->intf_assoc[i]); i++) {
   1872		intf_assoc = config->intf_assoc[i];
   1873		if (intf_assoc->bInterfaceCount == 0)
   1874			continue;
   1875
   1876		first_intf = intf_assoc->bFirstInterface;
   1877		last_intf = first_intf + (intf_assoc->bInterfaceCount - 1);
   1878		if (inum >= first_intf && inum <= last_intf) {
   1879			if (!retval)
   1880				retval = intf_assoc;
   1881			else
   1882				dev_err(&dev->dev, "Interface #%d referenced"
   1883					" by multiple IADs\n", inum);
   1884		}
   1885	}
   1886
   1887	return retval;
   1888}
   1889
   1890
   1891/*
   1892 * Internal function to queue a device reset
   1893 * See usb_queue_reset_device() for more details
   1894 */
   1895static void __usb_queue_reset_device(struct work_struct *ws)
   1896{
   1897	int rc;
   1898	struct usb_interface *iface =
   1899		container_of(ws, struct usb_interface, reset_ws);
   1900	struct usb_device *udev = interface_to_usbdev(iface);
   1901
   1902	rc = usb_lock_device_for_reset(udev, iface);
   1903	if (rc >= 0) {
   1904		usb_reset_device(udev);
   1905		usb_unlock_device(udev);
   1906	}
   1907	usb_put_intf(iface);	/* Undo _get_ in usb_queue_reset_device() */
   1908}
   1909
   1910
   1911/*
   1912 * usb_set_configuration - Makes a particular device setting be current
   1913 * @dev: the device whose configuration is being updated
   1914 * @configuration: the configuration being chosen.
   1915 *
   1916 * Context: task context, might sleep. Caller holds device lock.
   1917 *
   1918 * This is used to enable non-default device modes.  Not all devices
   1919 * use this kind of configurability; many devices only have one
   1920 * configuration.
   1921 *
   1922 * @configuration is the value of the configuration to be installed.
   1923 * According to the USB spec (e.g. section 9.1.1.5), configuration values
   1924 * must be non-zero; a value of zero indicates that the device in
   1925 * unconfigured.  However some devices erroneously use 0 as one of their
   1926 * configuration values.  To help manage such devices, this routine will
   1927 * accept @configuration = -1 as indicating the device should be put in
   1928 * an unconfigured state.
   1929 *
   1930 * USB device configurations may affect Linux interoperability,
   1931 * power consumption and the functionality available.  For example,
   1932 * the default configuration is limited to using 100mA of bus power,
   1933 * so that when certain device functionality requires more power,
   1934 * and the device is bus powered, that functionality should be in some
   1935 * non-default device configuration.  Other device modes may also be
   1936 * reflected as configuration options, such as whether two ISDN
   1937 * channels are available independently; and choosing between open
   1938 * standard device protocols (like CDC) or proprietary ones.
   1939 *
   1940 * Note that a non-authorized device (dev->authorized == 0) will only
   1941 * be put in unconfigured mode.
   1942 *
   1943 * Note that USB has an additional level of device configurability,
   1944 * associated with interfaces.  That configurability is accessed using
   1945 * usb_set_interface().
   1946 *
   1947 * This call is synchronous. The calling context must be able to sleep,
   1948 * must own the device lock, and must not hold the driver model's USB
   1949 * bus mutex; usb interface driver probe() methods cannot use this routine.
   1950 *
   1951 * Returns zero on success, or else the status code returned by the
   1952 * underlying call that failed.  On successful completion, each interface
   1953 * in the original device configuration has been destroyed, and each one
   1954 * in the new configuration has been probed by all relevant usb device
   1955 * drivers currently known to the kernel.
   1956 */
   1957int usb_set_configuration(struct usb_device *dev, int configuration)
   1958{
   1959	int i, ret;
   1960	struct usb_host_config *cp = NULL;
   1961	struct usb_interface **new_interfaces = NULL;
   1962	struct usb_hcd *hcd = bus_to_hcd(dev->bus);
   1963	int n, nintf;
   1964
   1965	if (dev->authorized == 0 || configuration == -1)
   1966		configuration = 0;
   1967	else {
   1968		for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
   1969			if (dev->config[i].desc.bConfigurationValue ==
   1970					configuration) {
   1971				cp = &dev->config[i];
   1972				break;
   1973			}
   1974		}
   1975	}
   1976	if ((!cp && configuration != 0))
   1977		return -EINVAL;
   1978
   1979	/* The USB spec says configuration 0 means unconfigured.
   1980	 * But if a device includes a configuration numbered 0,
   1981	 * we will accept it as a correctly configured state.
   1982	 * Use -1 if you really want to unconfigure the device.
   1983	 */
   1984	if (cp && configuration == 0)
   1985		dev_warn(&dev->dev, "config 0 descriptor??\n");
   1986
   1987	/* Allocate memory for new interfaces before doing anything else,
   1988	 * so that if we run out then nothing will have changed. */
   1989	n = nintf = 0;
   1990	if (cp) {
   1991		nintf = cp->desc.bNumInterfaces;
   1992		new_interfaces = kmalloc_array(nintf, sizeof(*new_interfaces),
   1993					       GFP_NOIO);
   1994		if (!new_interfaces)
   1995			return -ENOMEM;
   1996
   1997		for (; n < nintf; ++n) {
   1998			new_interfaces[n] = kzalloc(
   1999					sizeof(struct usb_interface),
   2000					GFP_NOIO);
   2001			if (!new_interfaces[n]) {
   2002				ret = -ENOMEM;
   2003free_interfaces:
   2004				while (--n >= 0)
   2005					kfree(new_interfaces[n]);
   2006				kfree(new_interfaces);
   2007				return ret;
   2008			}
   2009		}
   2010
   2011		i = dev->bus_mA - usb_get_max_power(dev, cp);
   2012		if (i < 0)
   2013			dev_warn(&dev->dev, "new config #%d exceeds power "
   2014					"limit by %dmA\n",
   2015					configuration, -i);
   2016	}
   2017
   2018	/* Wake up the device so we can send it the Set-Config request */
   2019	ret = usb_autoresume_device(dev);
   2020	if (ret)
   2021		goto free_interfaces;
   2022
   2023	/* if it's already configured, clear out old state first.
   2024	 * getting rid of old interfaces means unbinding their drivers.
   2025	 */
   2026	if (dev->state != USB_STATE_ADDRESS)
   2027		usb_disable_device(dev, 1);	/* Skip ep0 */
   2028
   2029	/* Get rid of pending async Set-Config requests for this device */
   2030	cancel_async_set_config(dev);
   2031
   2032	/* Make sure we have bandwidth (and available HCD resources) for this
   2033	 * configuration.  Remove endpoints from the schedule if we're dropping
   2034	 * this configuration to set configuration 0.  After this point, the
   2035	 * host controller will not allow submissions to dropped endpoints.  If
   2036	 * this call fails, the device state is unchanged.
   2037	 */
   2038	mutex_lock(hcd->bandwidth_mutex);
   2039	/* Disable LPM, and re-enable it once the new configuration is
   2040	 * installed, so that the xHCI driver can recalculate the U1/U2
   2041	 * timeouts.
   2042	 */
   2043	if (dev->actconfig && usb_disable_lpm(dev)) {
   2044		dev_err(&dev->dev, "%s Failed to disable LPM\n", __func__);
   2045		mutex_unlock(hcd->bandwidth_mutex);
   2046		ret = -ENOMEM;
   2047		goto free_interfaces;
   2048	}
   2049	ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL);
   2050	if (ret < 0) {
   2051		if (dev->actconfig)
   2052			usb_enable_lpm(dev);
   2053		mutex_unlock(hcd->bandwidth_mutex);
   2054		usb_autosuspend_device(dev);
   2055		goto free_interfaces;
   2056	}
   2057
   2058	/*
   2059	 * Initialize the new interface structures and the
   2060	 * hc/hcd/usbcore interface/endpoint state.
   2061	 */
   2062	for (i = 0; i < nintf; ++i) {
   2063		struct usb_interface_cache *intfc;
   2064		struct usb_interface *intf;
   2065		struct usb_host_interface *alt;
   2066		u8 ifnum;
   2067
   2068		cp->interface[i] = intf = new_interfaces[i];
   2069		intfc = cp->intf_cache[i];
   2070		intf->altsetting = intfc->altsetting;
   2071		intf->num_altsetting = intfc->num_altsetting;
   2072		intf->authorized = !!HCD_INTF_AUTHORIZED(hcd);
   2073		kref_get(&intfc->ref);
   2074
   2075		alt = usb_altnum_to_altsetting(intf, 0);
   2076
   2077		/* No altsetting 0?  We'll assume the first altsetting.
   2078		 * We could use a GetInterface call, but if a device is
   2079		 * so non-compliant that it doesn't have altsetting 0
   2080		 * then I wouldn't trust its reply anyway.
   2081		 */
   2082		if (!alt)
   2083			alt = &intf->altsetting[0];
   2084
   2085		ifnum = alt->desc.bInterfaceNumber;
   2086		intf->intf_assoc = find_iad(dev, cp, ifnum);
   2087		intf->cur_altsetting = alt;
   2088		usb_enable_interface(dev, intf, true);
   2089		intf->dev.parent = &dev->dev;
   2090		if (usb_of_has_combined_node(dev)) {
   2091			device_set_of_node_from_dev(&intf->dev, &dev->dev);
   2092		} else {
   2093			intf->dev.of_node = usb_of_get_interface_node(dev,
   2094					configuration, ifnum);
   2095		}
   2096		ACPI_COMPANION_SET(&intf->dev, ACPI_COMPANION(&dev->dev));
   2097		intf->dev.driver = NULL;
   2098		intf->dev.bus = &usb_bus_type;
   2099		intf->dev.type = &usb_if_device_type;
   2100		intf->dev.groups = usb_interface_groups;
   2101		INIT_WORK(&intf->reset_ws, __usb_queue_reset_device);
   2102		intf->minor = -1;
   2103		device_initialize(&intf->dev);
   2104		pm_runtime_no_callbacks(&intf->dev);
   2105		dev_set_name(&intf->dev, "%d-%s:%d.%d", dev->bus->busnum,
   2106				dev->devpath, configuration, ifnum);
   2107		usb_get_dev(dev);
   2108	}
   2109	kfree(new_interfaces);
   2110
   2111	ret = usb_control_msg_send(dev, 0, USB_REQ_SET_CONFIGURATION, 0,
   2112				   configuration, 0, NULL, 0,
   2113				   USB_CTRL_SET_TIMEOUT, GFP_NOIO);
   2114	if (ret && cp) {
   2115		/*
   2116		 * All the old state is gone, so what else can we do?
   2117		 * The device is probably useless now anyway.
   2118		 */
   2119		usb_hcd_alloc_bandwidth(dev, NULL, NULL, NULL);
   2120		for (i = 0; i < nintf; ++i) {
   2121			usb_disable_interface(dev, cp->interface[i], true);
   2122			put_device(&cp->interface[i]->dev);
   2123			cp->interface[i] = NULL;
   2124		}
   2125		cp = NULL;
   2126	}
   2127
   2128	dev->actconfig = cp;
   2129	mutex_unlock(hcd->bandwidth_mutex);
   2130
   2131	if (!cp) {
   2132		usb_set_device_state(dev, USB_STATE_ADDRESS);
   2133
   2134		/* Leave LPM disabled while the device is unconfigured. */
   2135		usb_autosuspend_device(dev);
   2136		return ret;
   2137	}
   2138	usb_set_device_state(dev, USB_STATE_CONFIGURED);
   2139
   2140	if (cp->string == NULL &&
   2141			!(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
   2142		cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
   2143
   2144	/* Now that the interfaces are installed, re-enable LPM. */
   2145	usb_unlocked_enable_lpm(dev);
   2146	/* Enable LTM if it was turned off by usb_disable_device. */
   2147	usb_enable_ltm(dev);
   2148
   2149	/* Now that all the interfaces are set up, register them
   2150	 * to trigger binding of drivers to interfaces.  probe()
   2151	 * routines may install different altsettings and may
   2152	 * claim() any interfaces not yet bound.  Many class drivers
   2153	 * need that: CDC, audio, video, etc.
   2154	 */
   2155	for (i = 0; i < nintf; ++i) {
   2156		struct usb_interface *intf = cp->interface[i];
   2157
   2158		if (intf->dev.of_node &&
   2159		    !of_device_is_available(intf->dev.of_node)) {
   2160			dev_info(&dev->dev, "skipping disabled interface %d\n",
   2161				 intf->cur_altsetting->desc.bInterfaceNumber);
   2162			continue;
   2163		}
   2164
   2165		dev_dbg(&dev->dev,
   2166			"adding %s (config #%d, interface %d)\n",
   2167			dev_name(&intf->dev), configuration,
   2168			intf->cur_altsetting->desc.bInterfaceNumber);
   2169		device_enable_async_suspend(&intf->dev);
   2170		ret = device_add(&intf->dev);
   2171		if (ret != 0) {
   2172			dev_err(&dev->dev, "device_add(%s) --> %d\n",
   2173				dev_name(&intf->dev), ret);
   2174			continue;
   2175		}
   2176		create_intf_ep_devs(intf);
   2177	}
   2178
   2179	usb_autosuspend_device(dev);
   2180	return 0;
   2181}
   2182EXPORT_SYMBOL_GPL(usb_set_configuration);
   2183
   2184static LIST_HEAD(set_config_list);
   2185static DEFINE_SPINLOCK(set_config_lock);
   2186
   2187struct set_config_request {
   2188	struct usb_device	*udev;
   2189	int			config;
   2190	struct work_struct	work;
   2191	struct list_head	node;
   2192};
   2193
   2194/* Worker routine for usb_driver_set_configuration() */
   2195static void driver_set_config_work(struct work_struct *work)
   2196{
   2197	struct set_config_request *req =
   2198		container_of(work, struct set_config_request, work);
   2199	struct usb_device *udev = req->udev;
   2200
   2201	usb_lock_device(udev);
   2202	spin_lock(&set_config_lock);
   2203	list_del(&req->node);
   2204	spin_unlock(&set_config_lock);
   2205
   2206	if (req->config >= -1)		/* Is req still valid? */
   2207		usb_set_configuration(udev, req->config);
   2208	usb_unlock_device(udev);
   2209	usb_put_dev(udev);
   2210	kfree(req);
   2211}
   2212
   2213/* Cancel pending Set-Config requests for a device whose configuration
   2214 * was just changed
   2215 */
   2216static void cancel_async_set_config(struct usb_device *udev)
   2217{
   2218	struct set_config_request *req;
   2219
   2220	spin_lock(&set_config_lock);
   2221	list_for_each_entry(req, &set_config_list, node) {
   2222		if (req->udev == udev)
   2223			req->config = -999;	/* Mark as cancelled */
   2224	}
   2225	spin_unlock(&set_config_lock);
   2226}
   2227
   2228/**
   2229 * usb_driver_set_configuration - Provide a way for drivers to change device configurations
   2230 * @udev: the device whose configuration is being updated
   2231 * @config: the configuration being chosen.
   2232 * Context: In process context, must be able to sleep
   2233 *
   2234 * Device interface drivers are not allowed to change device configurations.
   2235 * This is because changing configurations will destroy the interface the
   2236 * driver is bound to and create new ones; it would be like a floppy-disk
   2237 * driver telling the computer to replace the floppy-disk drive with a
   2238 * tape drive!
   2239 *
   2240 * Still, in certain specialized circumstances the need may arise.  This
   2241 * routine gets around the normal restrictions by using a work thread to
   2242 * submit the change-config request.
   2243 *
   2244 * Return: 0 if the request was successfully queued, error code otherwise.
   2245 * The caller has no way to know whether the queued request will eventually
   2246 * succeed.
   2247 */
   2248int usb_driver_set_configuration(struct usb_device *udev, int config)
   2249{
   2250	struct set_config_request *req;
   2251
   2252	req = kmalloc(sizeof(*req), GFP_KERNEL);
   2253	if (!req)
   2254		return -ENOMEM;
   2255	req->udev = udev;
   2256	req->config = config;
   2257	INIT_WORK(&req->work, driver_set_config_work);
   2258
   2259	spin_lock(&set_config_lock);
   2260	list_add(&req->node, &set_config_list);
   2261	spin_unlock(&set_config_lock);
   2262
   2263	usb_get_dev(udev);
   2264	schedule_work(&req->work);
   2265	return 0;
   2266}
   2267EXPORT_SYMBOL_GPL(usb_driver_set_configuration);
   2268
   2269/**
   2270 * cdc_parse_cdc_header - parse the extra headers present in CDC devices
   2271 * @hdr: the place to put the results of the parsing
   2272 * @intf: the interface for which parsing is requested
   2273 * @buffer: pointer to the extra headers to be parsed
   2274 * @buflen: length of the extra headers
   2275 *
   2276 * This evaluates the extra headers present in CDC devices which
   2277 * bind the interfaces for data and control and provide details
   2278 * about the capabilities of the device.
   2279 *
   2280 * Return: number of descriptors parsed or -EINVAL
   2281 * if the header is contradictory beyond salvage
   2282 */
   2283
   2284int cdc_parse_cdc_header(struct usb_cdc_parsed_header *hdr,
   2285				struct usb_interface *intf,
   2286				u8 *buffer,
   2287				int buflen)
   2288{
   2289	/* duplicates are ignored */
   2290	struct usb_cdc_union_desc *union_header = NULL;
   2291
   2292	/* duplicates are not tolerated */
   2293	struct usb_cdc_header_desc *header = NULL;
   2294	struct usb_cdc_ether_desc *ether = NULL;
   2295	struct usb_cdc_mdlm_detail_desc *detail = NULL;
   2296	struct usb_cdc_mdlm_desc *desc = NULL;
   2297
   2298	unsigned int elength;
   2299	int cnt = 0;
   2300
   2301	memset(hdr, 0x00, sizeof(struct usb_cdc_parsed_header));
   2302	hdr->phonet_magic_present = false;
   2303	while (buflen > 0) {
   2304		elength = buffer[0];
   2305		if (!elength) {
   2306			dev_err(&intf->dev, "skipping garbage byte\n");
   2307			elength = 1;
   2308			goto next_desc;
   2309		}
   2310		if ((buflen < elength) || (elength < 3)) {
   2311			dev_err(&intf->dev, "invalid descriptor buffer length\n");
   2312			break;
   2313		}
   2314		if (buffer[1] != USB_DT_CS_INTERFACE) {
   2315			dev_err(&intf->dev, "skipping garbage\n");
   2316			goto next_desc;
   2317		}
   2318
   2319		switch (buffer[2]) {
   2320		case USB_CDC_UNION_TYPE: /* we've found it */
   2321			if (elength < sizeof(struct usb_cdc_union_desc))
   2322				goto next_desc;
   2323			if (union_header) {
   2324				dev_err(&intf->dev, "More than one union descriptor, skipping ...\n");
   2325				goto next_desc;
   2326			}
   2327			union_header = (struct usb_cdc_union_desc *)buffer;
   2328			break;
   2329		case USB_CDC_COUNTRY_TYPE:
   2330			if (elength < sizeof(struct usb_cdc_country_functional_desc))
   2331				goto next_desc;
   2332			hdr->usb_cdc_country_functional_desc =
   2333				(struct usb_cdc_country_functional_desc *)buffer;
   2334			break;
   2335		case USB_CDC_HEADER_TYPE:
   2336			if (elength != sizeof(struct usb_cdc_header_desc))
   2337				goto next_desc;
   2338			if (header)
   2339				return -EINVAL;
   2340			header = (struct usb_cdc_header_desc *)buffer;
   2341			break;
   2342		case USB_CDC_ACM_TYPE:
   2343			if (elength < sizeof(struct usb_cdc_acm_descriptor))
   2344				goto next_desc;
   2345			hdr->usb_cdc_acm_descriptor =
   2346				(struct usb_cdc_acm_descriptor *)buffer;
   2347			break;
   2348		case USB_CDC_ETHERNET_TYPE:
   2349			if (elength != sizeof(struct usb_cdc_ether_desc))
   2350				goto next_desc;
   2351			if (ether)
   2352				return -EINVAL;
   2353			ether = (struct usb_cdc_ether_desc *)buffer;
   2354			break;
   2355		case USB_CDC_CALL_MANAGEMENT_TYPE:
   2356			if (elength < sizeof(struct usb_cdc_call_mgmt_descriptor))
   2357				goto next_desc;
   2358			hdr->usb_cdc_call_mgmt_descriptor =
   2359				(struct usb_cdc_call_mgmt_descriptor *)buffer;
   2360			break;
   2361		case USB_CDC_DMM_TYPE:
   2362			if (elength < sizeof(struct usb_cdc_dmm_desc))
   2363				goto next_desc;
   2364			hdr->usb_cdc_dmm_desc =
   2365				(struct usb_cdc_dmm_desc *)buffer;
   2366			break;
   2367		case USB_CDC_MDLM_TYPE:
   2368			if (elength < sizeof(struct usb_cdc_mdlm_desc))
   2369				goto next_desc;
   2370			if (desc)
   2371				return -EINVAL;
   2372			desc = (struct usb_cdc_mdlm_desc *)buffer;
   2373			break;
   2374		case USB_CDC_MDLM_DETAIL_TYPE:
   2375			if (elength < sizeof(struct usb_cdc_mdlm_detail_desc))
   2376				goto next_desc;
   2377			if (detail)
   2378				return -EINVAL;
   2379			detail = (struct usb_cdc_mdlm_detail_desc *)buffer;
   2380			break;
   2381		case USB_CDC_NCM_TYPE:
   2382			if (elength < sizeof(struct usb_cdc_ncm_desc))
   2383				goto next_desc;
   2384			hdr->usb_cdc_ncm_desc = (struct usb_cdc_ncm_desc *)buffer;
   2385			break;
   2386		case USB_CDC_MBIM_TYPE:
   2387			if (elength < sizeof(struct usb_cdc_mbim_desc))
   2388				goto next_desc;
   2389
   2390			hdr->usb_cdc_mbim_desc = (struct usb_cdc_mbim_desc *)buffer;
   2391			break;
   2392		case USB_CDC_MBIM_EXTENDED_TYPE:
   2393			if (elength < sizeof(struct usb_cdc_mbim_extended_desc))
   2394				break;
   2395			hdr->usb_cdc_mbim_extended_desc =
   2396				(struct usb_cdc_mbim_extended_desc *)buffer;
   2397			break;
   2398		case CDC_PHONET_MAGIC_NUMBER:
   2399			hdr->phonet_magic_present = true;
   2400			break;
   2401		default:
   2402			/*
   2403			 * there are LOTS more CDC descriptors that
   2404			 * could legitimately be found here.
   2405			 */
   2406			dev_dbg(&intf->dev, "Ignoring descriptor: type %02x, length %ud\n",
   2407					buffer[2], elength);
   2408			goto next_desc;
   2409		}
   2410		cnt++;
   2411next_desc:
   2412		buflen -= elength;
   2413		buffer += elength;
   2414	}
   2415	hdr->usb_cdc_union_desc = union_header;
   2416	hdr->usb_cdc_header_desc = header;
   2417	hdr->usb_cdc_mdlm_detail_desc = detail;
   2418	hdr->usb_cdc_mdlm_desc = desc;
   2419	hdr->usb_cdc_ether_desc = ether;
   2420	return cnt;
   2421}
   2422
   2423EXPORT_SYMBOL(cdc_parse_cdc_header);