Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
message.c
Go to the documentation of this file.
1 /*
2  * message.c - synchronous message handling
3  */
4 
5 #include <linux/pci.h> /* for scatterlist macros */
6 #include <linux/usb.h>
7 #include <linux/module.h>
8 #include <linux/slab.h>
9 #include <linux/init.h>
10 #include <linux/mm.h>
11 #include <linux/timer.h>
12 #include <linux/ctype.h>
13 #include <linux/nls.h>
14 #include <linux/device.h>
15 #include <linux/scatterlist.h>
16 #include <linux/usb/quirks.h>
17 #include <linux/usb/hcd.h> /* for usbcore internals */
18 #include <asm/byteorder.h>
19 
20 #include "usb.h"
21 
22 static void cancel_async_set_config(struct usb_device *udev);
23 
24 struct api_context {
25  struct completion done;
26  int status;
27 };
28 
29 static void usb_api_blocking_completion(struct urb *urb)
30 {
31  struct api_context *ctx = urb->context;
32 
33  ctx->status = urb->status;
34  complete(&ctx->done);
35 }
36 
37 
38 /*
39  * Starts urb and waits for completion or timeout. Note that this call
40  * is NOT interruptible. Many device driver i/o requests should be
41  * interruptible and therefore these drivers should implement their
42  * own interruptible routines.
43  */
44 static int usb_start_wait_urb(struct urb *urb, int timeout, int *actual_length)
45 {
46  struct api_context ctx;
47  unsigned long expire;
48  int retval;
49 
50  init_completion(&ctx.done);
51  urb->context = &ctx;
52  urb->actual_length = 0;
53  retval = usb_submit_urb(urb, GFP_NOIO);
54  if (unlikely(retval))
55  goto out;
56 
57  expire = timeout ? msecs_to_jiffies(timeout) : MAX_SCHEDULE_TIMEOUT;
58  if (!wait_for_completion_timeout(&ctx.done, expire)) {
59  usb_kill_urb(urb);
60  retval = (ctx.status == -ENOENT ? -ETIMEDOUT : ctx.status);
61 
62  dev_dbg(&urb->dev->dev,
63  "%s timed out on ep%d%s len=%u/%u\n",
64  current->comm,
65  usb_endpoint_num(&urb->ep->desc),
66  usb_urb_dir_in(urb) ? "in" : "out",
67  urb->actual_length,
68  urb->transfer_buffer_length);
69  } else
70  retval = ctx.status;
71 out:
72  if (actual_length)
73  *actual_length = urb->actual_length;
74 
75  usb_free_urb(urb);
76  return retval;
77 }
78 
79 /*-------------------------------------------------------------------*/
80 /* returns status (negative) or length (positive) */
81 static int usb_internal_control_msg(struct usb_device *usb_dev,
82  unsigned int pipe,
83  struct usb_ctrlrequest *cmd,
84  void *data, int len, int timeout)
85 {
86  struct urb *urb;
87  int retv;
88  int length;
89 
90  urb = usb_alloc_urb(0, GFP_NOIO);
91  if (!urb)
92  return -ENOMEM;
93 
94  usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char *)cmd, data,
95  len, usb_api_blocking_completion, NULL);
96 
97  retv = usb_start_wait_urb(urb, timeout, &length);
98  if (retv < 0)
99  return retv;
100  else
101  return length;
102 }
103 
132 int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
133  __u8 requesttype, __u16 value, __u16 index, void *data,
134  __u16 size, int timeout)
135 {
136  struct usb_ctrlrequest *dr;
137  int ret;
138 
139  dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_NOIO);
140  if (!dr)
141  return -ENOMEM;
142 
143  dr->bRequestType = requesttype;
144  dr->bRequest = request;
145  dr->wValue = cpu_to_le16(value);
146  dr->wIndex = cpu_to_le16(index);
147  dr->wLength = cpu_to_le16(size);
148 
149  ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
150 
151  kfree(dr);
152 
153  return ret;
154 }
156 
183 int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
184  void *data, int len, int *actual_length, int timeout)
185 {
186  return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
187 }
189 
221 int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
222  void *data, int len, int *actual_length, int timeout)
223 {
224  struct urb *urb;
225  struct usb_host_endpoint *ep;
226 
227  ep = usb_pipe_endpoint(usb_dev, pipe);
228  if (!ep || len < 0)
229  return -EINVAL;
230 
231  urb = usb_alloc_urb(0, GFP_KERNEL);
232  if (!urb)
233  return -ENOMEM;
234 
235  if ((ep->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
237  pipe = (pipe & ~(3 << 30)) | (PIPE_INTERRUPT << 30);
238  usb_fill_int_urb(urb, usb_dev, pipe, data, len,
239  usb_api_blocking_completion, NULL,
240  ep->desc.bInterval);
241  } else
242  usb_fill_bulk_urb(urb, usb_dev, pipe, data, len,
243  usb_api_blocking_completion, NULL);
244 
245  return usb_start_wait_urb(urb, timeout, actual_length);
246 }
248 
249 /*-------------------------------------------------------------------*/
250 
251 static void sg_clean(struct usb_sg_request *io)
252 {
253  if (io->urbs) {
254  while (io->entries--)
255  usb_free_urb(io->urbs [io->entries]);
256  kfree(io->urbs);
257  io->urbs = NULL;
258  }
259  io->dev = NULL;
260 }
261 
262 static void sg_complete(struct urb *urb)
263 {
264  struct usb_sg_request *io = urb->context;
265  int status = urb->status;
266 
267  spin_lock(&io->lock);
268 
269  /* In 2.5 we require hcds' endpoint queues not to progress after fault
270  * reports, until the completion callback (this!) returns. That lets
271  * device driver code (like this routine) unlink queued urbs first,
272  * if it needs to, since the HC won't work on them at all. So it's
273  * not possible for page N+1 to overwrite page N, and so on.
274  *
275  * That's only for "hard" faults; "soft" faults (unlinks) sometimes
276  * complete before the HCD can get requests away from hardware,
277  * though never during cleanup after a hard fault.
278  */
279  if (io->status
280  && (io->status != -ECONNRESET
281  || status != -ECONNRESET)
282  && urb->actual_length) {
283  dev_err(io->dev->bus->controller,
284  "dev %s ep%d%s scatterlist error %d/%d\n",
285  io->dev->devpath,
286  usb_endpoint_num(&urb->ep->desc),
287  usb_urb_dir_in(urb) ? "in" : "out",
288  status, io->status);
289  /* BUG (); */
290  }
291 
292  if (io->status == 0 && status && status != -ECONNRESET) {
293  int i, found, retval;
294 
295  io->status = status;
296 
297  /* the previous urbs, and this one, completed already.
298  * unlink pending urbs so they won't rx/tx bad data.
299  * careful: unlink can sometimes be synchronous...
300  */
301  spin_unlock(&io->lock);
302  for (i = 0, found = 0; i < io->entries; i++) {
303  if (!io->urbs [i] || !io->urbs [i]->dev)
304  continue;
305  if (found) {
306  retval = usb_unlink_urb(io->urbs [i]);
307  if (retval != -EINPROGRESS &&
308  retval != -ENODEV &&
309  retval != -EBUSY &&
310  retval != -EIDRM)
311  dev_err(&io->dev->dev,
312  "%s, unlink --> %d\n",
313  __func__, retval);
314  } else if (urb == io->urbs [i])
315  found = 1;
316  }
317  spin_lock(&io->lock);
318  }
319 
320  /* on the last completion, signal usb_sg_wait() */
321  io->bytes += urb->actual_length;
322  io->count--;
323  if (!io->count)
324  complete(&io->complete);
325 
326  spin_unlock(&io->lock);
327 }
328 
329 
355 int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
356  unsigned pipe, unsigned period, struct scatterlist *sg,
357  int nents, size_t length, gfp_t mem_flags)
358 {
359  int i;
360  int urb_flags;
361  int use_sg;
362 
363  if (!io || !dev || !sg
364  || usb_pipecontrol(pipe)
365  || usb_pipeisoc(pipe)
366  || nents <= 0)
367  return -EINVAL;
368 
369  spin_lock_init(&io->lock);
370  io->dev = dev;
371  io->pipe = pipe;
372 
373  if (dev->bus->sg_tablesize > 0) {
374  use_sg = true;
375  io->entries = 1;
376  } else {
377  use_sg = false;
378  io->entries = nents;
379  }
380 
381  /* initialize all the urbs we'll use */
382  io->urbs = kmalloc(io->entries * sizeof *io->urbs, mem_flags);
383  if (!io->urbs)
384  goto nomem;
385 
386  urb_flags = URB_NO_INTERRUPT;
387  if (usb_pipein(pipe))
388  urb_flags |= URB_SHORT_NOT_OK;
389 
390  for_each_sg(sg, sg, io->entries, i) {
391  struct urb *urb;
392  unsigned len;
393 
394  urb = usb_alloc_urb(0, mem_flags);
395  if (!urb) {
396  io->entries = i;
397  goto nomem;
398  }
399  io->urbs[i] = urb;
400 
401  urb->dev = NULL;
402  urb->pipe = pipe;
403  urb->interval = period;
404  urb->transfer_flags = urb_flags;
405  urb->complete = sg_complete;
406  urb->context = io;
407  urb->sg = sg;
408 
409  if (use_sg) {
410  /* There is no single transfer buffer */
411  urb->transfer_buffer = NULL;
412  urb->num_sgs = nents;
413 
414  /* A length of zero means transfer the whole sg list */
415  len = length;
416  if (len == 0) {
417  struct scatterlist *sg2;
418  int j;
419 
420  for_each_sg(sg, sg2, nents, j)
421  len += sg2->length;
422  }
423  } else {
424  /*
425  * Some systems can't use DMA; they use PIO instead.
426  * For their sakes, transfer_buffer is set whenever
427  * possible.
428  */
429  if (!PageHighMem(sg_page(sg)))
430  urb->transfer_buffer = sg_virt(sg);
431  else
432  urb->transfer_buffer = NULL;
433 
434  len = sg->length;
435  if (length) {
436  len = min_t(size_t, len, length);
437  length -= len;
438  if (length == 0)
439  io->entries = i + 1;
440  }
441  }
442  urb->transfer_buffer_length = len;
443  }
444  io->urbs[--i]->transfer_flags &= ~URB_NO_INTERRUPT;
445 
446  /* transaction state */
447  io->count = io->entries;
448  io->status = 0;
449  io->bytes = 0;
450  init_completion(&io->complete);
451  return 0;
452 
453 nomem:
454  sg_clean(io);
455  return -ENOMEM;
456 }
458 
502 void usb_sg_wait(struct usb_sg_request *io)
503 {
504  int i;
505  int entries = io->entries;
506 
507  /* queue the urbs. */
508  spin_lock_irq(&io->lock);
509  i = 0;
510  while (i < entries && !io->status) {
511  int retval;
512 
513  io->urbs[i]->dev = io->dev;
514  retval = usb_submit_urb(io->urbs [i], GFP_ATOMIC);
515 
516  /* after we submit, let completions or cancelations fire;
517  * we handshake using io->status.
518  */
519  spin_unlock_irq(&io->lock);
520  switch (retval) {
521  /* maybe we retrying will recover */
522  case -ENXIO: /* hc didn't queue this one */
523  case -EAGAIN:
524  case -ENOMEM:
525  retval = 0;
526  yield();
527  break;
528 
529  /* no error? continue immediately.
530  *
531  * NOTE: to work better with UHCI (4K I/O buffer may
532  * need 3K of TDs) it may be good to limit how many
533  * URBs are queued at once; N milliseconds?
534  */
535  case 0:
536  ++i;
537  cpu_relax();
538  break;
539 
540  /* fail any uncompleted urbs */
541  default:
542  io->urbs[i]->status = retval;
543  dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
544  __func__, retval);
545  usb_sg_cancel(io);
546  }
547  spin_lock_irq(&io->lock);
548  if (retval && (io->status == 0 || io->status == -ECONNRESET))
549  io->status = retval;
550  }
551  io->count -= entries - i;
552  if (io->count == 0)
553  complete(&io->complete);
554  spin_unlock_irq(&io->lock);
555 
556  /* OK, yes, this could be packaged as non-blocking.
557  * So could the submit loop above ... but it's easier to
558  * solve neither problem than to solve both!
559  */
560  wait_for_completion(&io->complete);
561 
562  sg_clean(io);
563 }
565 
574 void usb_sg_cancel(struct usb_sg_request *io)
575 {
576  unsigned long flags;
577 
578  spin_lock_irqsave(&io->lock, flags);
579 
580  /* shut everything down, if it didn't already */
581  if (!io->status) {
582  int i;
583 
584  io->status = -ECONNRESET;
585  spin_unlock(&io->lock);
586  for (i = 0; i < io->entries; i++) {
587  int retval;
588 
589  if (!io->urbs [i]->dev)
590  continue;
591  retval = usb_unlink_urb(io->urbs [i]);
592  if (retval != -EINPROGRESS
593  && retval != -ENODEV
594  && retval != -EBUSY
595  && retval != -EIDRM)
596  dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
597  __func__, retval);
598  }
599  spin_lock(&io->lock);
600  }
601  spin_unlock_irqrestore(&io->lock, flags);
602 }
604 
605 /*-------------------------------------------------------------------*/
606 
629 int usb_get_descriptor(struct usb_device *dev, unsigned char type,
630  unsigned char index, void *buf, int size)
631 {
632  int i;
633  int result;
634 
635  memset(buf, 0, size); /* Make sure we parse really received data */
636 
637  for (i = 0; i < 3; ++i) {
638  /* retry on length 0 or error; some devices are flakey */
639  result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
641  (type << 8) + index, 0, buf, size,
642  USB_CTRL_GET_TIMEOUT);
643  if (result <= 0 && result != -ETIMEDOUT)
644  continue;
645  if (result > 1 && ((u8 *)buf)[1] != type) {
646  result = -ENODATA;
647  continue;
648  }
649  break;
650  }
651  return result;
652 }
654 
677 static int usb_get_string(struct usb_device *dev, unsigned short langid,
678  unsigned char index, void *buf, int size)
679 {
680  int i;
681  int result;
682 
683  for (i = 0; i < 3; ++i) {
684  /* retry on length 0 or stall; some devices are flakey */
685  result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
687  (USB_DT_STRING << 8) + index, langid, buf, size,
688  USB_CTRL_GET_TIMEOUT);
689  if (result == 0 || result == -EPIPE)
690  continue;
691  if (result > 1 && ((u8 *) buf)[1] != USB_DT_STRING) {
692  result = -ENODATA;
693  continue;
694  }
695  break;
696  }
697  return result;
698 }
699 
700 static void usb_try_string_workarounds(unsigned char *buf, int *length)
701 {
702  int newlength, oldlength = *length;
703 
704  for (newlength = 2; newlength + 1 < oldlength; newlength += 2)
705  if (!isprint(buf[newlength]) || buf[newlength + 1])
706  break;
707 
708  if (newlength > 2) {
709  buf[0] = newlength;
710  *length = newlength;
711  }
712 }
713 
714 static int usb_string_sub(struct usb_device *dev, unsigned int langid,
715  unsigned int index, unsigned char *buf)
716 {
717  int rc;
718 
719  /* Try to read the string descriptor by asking for the maximum
720  * possible number of bytes */
721  if (dev->quirks & USB_QUIRK_STRING_FETCH_255)
722  rc = -EIO;
723  else
724  rc = usb_get_string(dev, langid, index, buf, 255);
725 
726  /* If that failed try to read the descriptor length, then
727  * ask for just that many bytes */
728  if (rc < 2) {
729  rc = usb_get_string(dev, langid, index, buf, 2);
730  if (rc == 2)
731  rc = usb_get_string(dev, langid, index, buf, buf[0]);
732  }
733 
734  if (rc >= 2) {
735  if (!buf[0] && !buf[1])
736  usb_try_string_workarounds(buf, &rc);
737 
738  /* There might be extra junk at the end of the descriptor */
739  if (buf[0] < rc)
740  rc = buf[0];
741 
742  rc = rc - (rc & 1); /* force a multiple of two */
743  }
744 
745  if (rc < 2)
746  rc = (rc < 0 ? rc : -EINVAL);
747 
748  return rc;
749 }
750 
751 static int usb_get_langid(struct usb_device *dev, unsigned char *tbuf)
752 {
753  int err;
754 
755  if (dev->have_langid)
756  return 0;
757 
758  if (dev->string_langid < 0)
759  return -EPIPE;
760 
761  err = usb_string_sub(dev, 0, 0, tbuf);
762 
763  /* If the string was reported but is malformed, default to english
764  * (0x0409) */
765  if (err == -ENODATA || (err > 0 && err < 4)) {
766  dev->string_langid = 0x0409;
767  dev->have_langid = 1;
768  dev_err(&dev->dev,
769  "string descriptor 0 malformed (err = %d), "
770  "defaulting to 0x%04x\n",
771  err, dev->string_langid);
772  return 0;
773  }
774 
775  /* In case of all other errors, we assume the device is not able to
776  * deal with strings at all. Set string_langid to -1 in order to
777  * prevent any string to be retrieved from the device */
778  if (err < 0) {
779  dev_err(&dev->dev, "string descriptor 0 read error: %d\n",
780  err);
781  dev->string_langid = -1;
782  return -EPIPE;
783  }
784 
785  /* always use the first langid listed */
786  dev->string_langid = tbuf[2] | (tbuf[3] << 8);
787  dev->have_langid = 1;
788  dev_dbg(&dev->dev, "default language 0x%04x\n",
789  dev->string_langid);
790  return 0;
791 }
792 
810 int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
811 {
812  unsigned char *tbuf;
813  int err;
814 
815  if (dev->state == USB_STATE_SUSPENDED)
816  return -EHOSTUNREACH;
817  if (size <= 0 || !buf || !index)
818  return -EINVAL;
819  buf[0] = 0;
820  tbuf = kmalloc(256, GFP_NOIO);
821  if (!tbuf)
822  return -ENOMEM;
823 
824  err = usb_get_langid(dev, tbuf);
825  if (err < 0)
826  goto errout;
827 
828  err = usb_string_sub(dev, dev->string_langid, index, tbuf);
829  if (err < 0)
830  goto errout;
831 
832  size--; /* leave room for trailing NULL char in output buffer */
833  err = utf16s_to_utf8s((wchar_t *) &tbuf[2], (err - 2) / 2,
834  UTF16_LITTLE_ENDIAN, buf, size);
835  buf[err] = 0;
836 
837  if (tbuf[1] != USB_DT_STRING)
838  dev_dbg(&dev->dev,
839  "wrong descriptor type %02x for string %d (\"%s\")\n",
840  tbuf[1], index, buf);
841 
842  errout:
843  kfree(tbuf);
844  return err;
845 }
847 
848 /* one UTF-8-encoded 16-bit character has at most three bytes */
849 #define MAX_USB_STRING_SIZE (127 * 3 + 1)
850 
859 char *usb_cache_string(struct usb_device *udev, int index)
860 {
861  char *buf;
862  char *smallbuf = NULL;
863  int len;
864 
865  if (index <= 0)
866  return NULL;
867 
869  if (buf) {
870  len = usb_string(udev, index, buf, MAX_USB_STRING_SIZE);
871  if (len > 0) {
872  smallbuf = kmalloc(++len, GFP_NOIO);
873  if (!smallbuf)
874  return buf;
875  memcpy(smallbuf, buf, len);
876  }
877  kfree(buf);
878  }
879  return smallbuf;
880 }
881 
882 /*
883  * usb_get_device_descriptor - (re)reads the device descriptor (usbcore)
884  * @dev: the device whose device descriptor is being updated
885  * @size: how much of the descriptor to read
886  * Context: !in_interrupt ()
887  *
888  * Updates the copy of the device descriptor stored in the device structure,
889  * which dedicates space for this purpose.
890  *
891  * Not exported, only for use by the core. If drivers really want to read
892  * the device descriptor directly, they can call usb_get_descriptor() with
893  * type = USB_DT_DEVICE and index = 0.
894  *
895  * This call is synchronous, and may not be used in an interrupt context.
896  *
897  * Returns the number of bytes received on success, or else the status code
898  * returned by the underlying usb_control_msg() call.
899  */
900 int usb_get_device_descriptor(struct usb_device *dev, unsigned int size)
901 {
902  struct usb_device_descriptor *desc;
903  int ret;
904 
905  if (size > sizeof(*desc))
906  return -EINVAL;
907  desc = kmalloc(sizeof(*desc), GFP_NOIO);
908  if (!desc)
909  return -ENOMEM;
910 
911  ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, size);
912  if (ret >= 0)
913  memcpy(&dev->descriptor, desc, size);
914  kfree(desc);
915  return ret;
916 }
917 
940 int usb_get_status(struct usb_device *dev, int type, int target, void *data)
941 {
942  int ret;
943  u16 *status = kmalloc(sizeof(*status), GFP_KERNEL);
944 
945  if (!status)
946  return -ENOMEM;
947 
948  ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
949  USB_REQ_GET_STATUS, USB_DIR_IN | type, 0, target, status,
950  sizeof(*status), USB_CTRL_GET_TIMEOUT);
951 
952  *(u16 *)data = *status;
953  kfree(status);
954  return ret;
955 }
957 
981 int usb_clear_halt(struct usb_device *dev, int pipe)
982 {
983  int result;
984  int endp = usb_pipeendpoint(pipe);
985 
986  if (usb_pipein(pipe))
987  endp |= USB_DIR_IN;
988 
989  /* we don't care if it wasn't halted first. in fact some devices
990  * (like some ibmcam model 1 units) seem to expect hosts to make
991  * this request for iso endpoints, which can't halt!
992  */
993  result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
995  USB_ENDPOINT_HALT, endp, NULL, 0,
996  USB_CTRL_SET_TIMEOUT);
997 
998  /* don't un-halt or force to DATA0 except on success */
999  if (result < 0)
1000  return result;
1001 
1002  /* NOTE: seems like Microsoft and Apple don't bother verifying
1003  * the clear "took", so some devices could lock up if you check...
1004  * such as the Hagiwara FlashGate DUAL. So we won't bother.
1005  *
1006  * NOTE: make sure the logic here doesn't diverge much from
1007  * the copy in usb-storage, for as long as we need two copies.
1008  */
1009 
1010  usb_reset_endpoint(dev, endp);
1011 
1012  return 0;
1013 }
1015 
1016 static int create_intf_ep_devs(struct usb_interface *intf)
1017 {
1018  struct usb_device *udev = interface_to_usbdev(intf);
1019  struct usb_host_interface *alt = intf->cur_altsetting;
1020  int i;
1021 
1022  if (intf->ep_devs_created || intf->unregistering)
1023  return 0;
1024 
1025  for (i = 0; i < alt->desc.bNumEndpoints; ++i)
1026  (void) usb_create_ep_devs(&intf->dev, &alt->endpoint[i], udev);
1027  intf->ep_devs_created = 1;
1028  return 0;
1029 }
1030 
1031 static void remove_intf_ep_devs(struct usb_interface *intf)
1032 {
1033  struct usb_host_interface *alt = intf->cur_altsetting;
1034  int i;
1035 
1036  if (!intf->ep_devs_created)
1037  return;
1038 
1039  for (i = 0; i < alt->desc.bNumEndpoints; ++i)
1040  usb_remove_ep_devs(&alt->endpoint[i]);
1041  intf->ep_devs_created = 0;
1042 }
1043 
1056 void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr,
1057  bool reset_hardware)
1058 {
1059  unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
1060  struct usb_host_endpoint *ep;
1061 
1062  if (!dev)
1063  return;
1064 
1065  if (usb_endpoint_out(epaddr)) {
1066  ep = dev->ep_out[epnum];
1067  if (reset_hardware)
1068  dev->ep_out[epnum] = NULL;
1069  } else {
1070  ep = dev->ep_in[epnum];
1071  if (reset_hardware)
1072  dev->ep_in[epnum] = NULL;
1073  }
1074  if (ep) {
1075  ep->enabled = 0;
1076  usb_hcd_flush_endpoint(dev, ep);
1077  if (reset_hardware)
1078  usb_hcd_disable_endpoint(dev, ep);
1079  }
1080 }
1081 
1091 void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr)
1092 {
1093  unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
1094  struct usb_host_endpoint *ep;
1095 
1096  if (usb_endpoint_out(epaddr))
1097  ep = dev->ep_out[epnum];
1098  else
1099  ep = dev->ep_in[epnum];
1100  if (ep)
1101  usb_hcd_reset_endpoint(dev, ep);
1102 }
1104 
1105 
1115 void usb_disable_interface(struct usb_device *dev, struct usb_interface *intf,
1116  bool reset_hardware)
1117 {
1118  struct usb_host_interface *alt = intf->cur_altsetting;
1119  int i;
1120 
1121  for (i = 0; i < alt->desc.bNumEndpoints; ++i) {
1123  alt->endpoint[i].desc.bEndpointAddress,
1124  reset_hardware);
1125  }
1126 }
1127 
1138 void usb_disable_device(struct usb_device *dev, int skip_ep0)
1139 {
1140  int i;
1141  struct usb_hcd *hcd = bus_to_hcd(dev->bus);
1142 
1143  /* getting rid of interfaces will disconnect
1144  * any drivers bound to them (a key side effect)
1145  */
1146  if (dev->actconfig) {
1147  /*
1148  * FIXME: In order to avoid self-deadlock involving the
1149  * bandwidth_mutex, we have to mark all the interfaces
1150  * before unregistering any of them.
1151  */
1152  for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++)
1153  dev->actconfig->interface[i]->unregistering = 1;
1154 
1155  for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
1156  struct usb_interface *interface;
1157 
1158  /* remove this interface if it has been registered */
1159  interface = dev->actconfig->interface[i];
1160  if (!device_is_registered(&interface->dev))
1161  continue;
1162  dev_dbg(&dev->dev, "unregistering interface %s\n",
1163  dev_name(&interface->dev));
1164  remove_intf_ep_devs(interface);
1165  device_del(&interface->dev);
1166  }
1167 
1168  /* Now that the interfaces are unbound, nobody should
1169  * try to access them.
1170  */
1171  for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
1172  put_device(&dev->actconfig->interface[i]->dev);
1173  dev->actconfig->interface[i] = NULL;
1174  }
1176  usb_disable_ltm(dev);
1177  dev->actconfig = NULL;
1178  if (dev->state == USB_STATE_CONFIGURED)
1180  }
1181 
1182  dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
1183  skip_ep0 ? "non-ep0" : "all");
1184  if (hcd->driver->check_bandwidth) {
1185  /* First pass: Cancel URBs, leave endpoint pointers intact. */
1186  for (i = skip_ep0; i < 16; ++i) {
1187  usb_disable_endpoint(dev, i, false);
1188  usb_disable_endpoint(dev, i + USB_DIR_IN, false);
1189  }
1190  /* Remove endpoints from the host controller internal state */
1191  mutex_lock(hcd->bandwidth_mutex);
1193  mutex_unlock(hcd->bandwidth_mutex);
1194  /* Second pass: remove endpoint pointers */
1195  }
1196  for (i = skip_ep0; i < 16; ++i) {
1197  usb_disable_endpoint(dev, i, true);
1198  usb_disable_endpoint(dev, i + USB_DIR_IN, true);
1199  }
1200 }
1201 
1211 void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep,
1212  bool reset_ep)
1213 {
1214  int epnum = usb_endpoint_num(&ep->desc);
1215  int is_out = usb_endpoint_dir_out(&ep->desc);
1216  int is_control = usb_endpoint_xfer_control(&ep->desc);
1217 
1218  if (reset_ep)
1219  usb_hcd_reset_endpoint(dev, ep);
1220  if (is_out || is_control)
1221  dev->ep_out[epnum] = ep;
1222  if (!is_out || is_control)
1223  dev->ep_in[epnum] = ep;
1224  ep->enabled = 1;
1225 }
1226 
1235 void usb_enable_interface(struct usb_device *dev,
1236  struct usb_interface *intf, bool reset_eps)
1237 {
1238  struct usb_host_interface *alt = intf->cur_altsetting;
1239  int i;
1240 
1241  for (i = 0; i < alt->desc.bNumEndpoints; ++i)
1242  usb_enable_endpoint(dev, &alt->endpoint[i], reset_eps);
1243 }
1244 
1278 int usb_set_interface(struct usb_device *dev, int interface, int alternate)
1279 {
1280  struct usb_interface *iface;
1281  struct usb_host_interface *alt;
1282  struct usb_hcd *hcd = bus_to_hcd(dev->bus);
1283  int ret;
1284  int manual = 0;
1285  unsigned int epaddr;
1286  unsigned int pipe;
1287 
1288  if (dev->state == USB_STATE_SUSPENDED)
1289  return -EHOSTUNREACH;
1290 
1291  iface = usb_ifnum_to_if(dev, interface);
1292  if (!iface) {
1293  dev_dbg(&dev->dev, "selecting invalid interface %d\n",
1294  interface);
1295  return -EINVAL;
1296  }
1297  if (iface->unregistering)
1298  return -ENODEV;
1299 
1300  alt = usb_altnum_to_altsetting(iface, alternate);
1301  if (!alt) {
1302  dev_warn(&dev->dev, "selecting invalid altsetting %d\n",
1303  alternate);
1304  return -EINVAL;
1305  }
1306 
1307  /* Make sure we have enough bandwidth for this alternate interface.
1308  * Remove the current alt setting and add the new alt setting.
1309  */
1310  mutex_lock(hcd->bandwidth_mutex);
1311  /* Disable LPM, and re-enable it once the new alt setting is installed,
1312  * so that the xHCI driver can recalculate the U1/U2 timeouts.
1313  */
1314  if (usb_disable_lpm(dev)) {
1315  dev_err(&iface->dev, "%s Failed to disable LPM\n.", __func__);
1316  mutex_unlock(hcd->bandwidth_mutex);
1317  return -ENOMEM;
1318  }
1319  ret = usb_hcd_alloc_bandwidth(dev, NULL, iface->cur_altsetting, alt);
1320  if (ret < 0) {
1321  dev_info(&dev->dev, "Not enough bandwidth for altsetting %d\n",
1322  alternate);
1323  usb_enable_lpm(dev);
1324  mutex_unlock(hcd->bandwidth_mutex);
1325  return ret;
1326  }
1327 
1328  if (dev->quirks & USB_QUIRK_NO_SET_INTF)
1329  ret = -EPIPE;
1330  else
1331  ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1333  alternate, interface, NULL, 0, 5000);
1334 
1335  /* 9.4.10 says devices don't need this and are free to STALL the
1336  * request if the interface only has one alternate setting.
1337  */
1338  if (ret == -EPIPE && iface->num_altsetting == 1) {
1339  dev_dbg(&dev->dev,
1340  "manual set_interface for iface %d, alt %d\n",
1341  interface, alternate);
1342  manual = 1;
1343  } else if (ret < 0) {
1344  /* Re-instate the old alt setting */
1345  usb_hcd_alloc_bandwidth(dev, NULL, alt, iface->cur_altsetting);
1346  usb_enable_lpm(dev);
1347  mutex_unlock(hcd->bandwidth_mutex);
1348  return ret;
1349  }
1350  mutex_unlock(hcd->bandwidth_mutex);
1351 
1352  /* FIXME drivers shouldn't need to replicate/bugfix the logic here
1353  * when they implement async or easily-killable versions of this or
1354  * other "should-be-internal" functions (like clear_halt).
1355  * should hcd+usbcore postprocess control requests?
1356  */
1357 
1358  /* prevent submissions using previous endpoint settings */
1359  if (iface->cur_altsetting != alt) {
1360  remove_intf_ep_devs(iface);
1362  }
1363  usb_disable_interface(dev, iface, true);
1364 
1365  iface->cur_altsetting = alt;
1366 
1367  /* Now that the interface is installed, re-enable LPM. */
1369 
1370  /* If the interface only has one altsetting and the device didn't
1371  * accept the request, we attempt to carry out the equivalent action
1372  * by manually clearing the HALT feature for each endpoint in the
1373  * new altsetting.
1374  */
1375  if (manual) {
1376  int i;
1377 
1378  for (i = 0; i < alt->desc.bNumEndpoints; i++) {
1379  epaddr = alt->endpoint[i].desc.bEndpointAddress;
1380  pipe = __create_pipe(dev,
1381  USB_ENDPOINT_NUMBER_MASK & epaddr) |
1382  (usb_endpoint_out(epaddr) ?
1384 
1385  usb_clear_halt(dev, pipe);
1386  }
1387  }
1388 
1389  /* 9.1.1.5: reset toggles for all endpoints in the new altsetting
1390  *
1391  * Note:
1392  * Despite EP0 is always present in all interfaces/AS, the list of
1393  * endpoints from the descriptor does not contain EP0. Due to its
1394  * omnipresence one might expect EP0 being considered "affected" by
1395  * any SetInterface request and hence assume toggles need to be reset.
1396  * However, EP0 toggles are re-synced for every individual transfer
1397  * during the SETUP stage - hence EP0 toggles are "don't care" here.
1398  * (Likewise, EP0 never "halts" on well designed devices.)
1399  */
1400  usb_enable_interface(dev, iface, true);
1401  if (device_is_registered(&iface->dev)) {
1403  create_intf_ep_devs(iface);
1404  }
1405  return 0;
1406 }
1408 
1431 int usb_reset_configuration(struct usb_device *dev)
1432 {
1433  int i, retval;
1434  struct usb_host_config *config;
1435  struct usb_hcd *hcd = bus_to_hcd(dev->bus);
1436 
1437  if (dev->state == USB_STATE_SUSPENDED)
1438  return -EHOSTUNREACH;
1439 
1440  /* caller must have locked the device and must own
1441  * the usb bus readlock (so driver bindings are stable);
1442  * calls during probe() are fine
1443  */
1444 
1445  for (i = 1; i < 16; ++i) {
1446  usb_disable_endpoint(dev, i, true);
1447  usb_disable_endpoint(dev, i + USB_DIR_IN, true);
1448  }
1449 
1450  config = dev->actconfig;
1451  retval = 0;
1452  mutex_lock(hcd->bandwidth_mutex);
1453  /* Disable LPM, and re-enable it once the configuration is reset, so
1454  * that the xHCI driver can recalculate the U1/U2 timeouts.
1455  */
1456  if (usb_disable_lpm(dev)) {
1457  dev_err(&dev->dev, "%s Failed to disable LPM\n.", __func__);
1458  mutex_unlock(hcd->bandwidth_mutex);
1459  return -ENOMEM;
1460  }
1461  /* Make sure we have enough bandwidth for each alternate setting 0 */
1462  for (i = 0; i < config->desc.bNumInterfaces; i++) {
1463  struct usb_interface *intf = config->interface[i];
1464  struct usb_host_interface *alt;
1465 
1466  alt = usb_altnum_to_altsetting(intf, 0);
1467  if (!alt)
1468  alt = &intf->altsetting[0];
1469  if (alt != intf->cur_altsetting)
1470  retval = usb_hcd_alloc_bandwidth(dev, NULL,
1471  intf->cur_altsetting, alt);
1472  if (retval < 0)
1473  break;
1474  }
1475  /* If not, reinstate the old alternate settings */
1476  if (retval < 0) {
1477 reset_old_alts:
1478  for (i--; i >= 0; i--) {
1479  struct usb_interface *intf = config->interface[i];
1480  struct usb_host_interface *alt;
1481 
1482  alt = usb_altnum_to_altsetting(intf, 0);
1483  if (!alt)
1484  alt = &intf->altsetting[0];
1485  if (alt != intf->cur_altsetting)
1487  alt, intf->cur_altsetting);
1488  }
1489  usb_enable_lpm(dev);
1490  mutex_unlock(hcd->bandwidth_mutex);
1491  return retval;
1492  }
1493  retval = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1495  config->desc.bConfigurationValue, 0,
1496  NULL, 0, USB_CTRL_SET_TIMEOUT);
1497  if (retval < 0)
1498  goto reset_old_alts;
1499  mutex_unlock(hcd->bandwidth_mutex);
1500 
1501  /* re-init hc/hcd interface/endpoint state */
1502  for (i = 0; i < config->desc.bNumInterfaces; i++) {
1503  struct usb_interface *intf = config->interface[i];
1504  struct usb_host_interface *alt;
1505 
1506  alt = usb_altnum_to_altsetting(intf, 0);
1507 
1508  /* No altsetting 0? We'll assume the first altsetting.
1509  * We could use a GetInterface call, but if a device is
1510  * so non-compliant that it doesn't have altsetting 0
1511  * then I wouldn't trust its reply anyway.
1512  */
1513  if (!alt)
1514  alt = &intf->altsetting[0];
1515 
1516  if (alt != intf->cur_altsetting) {
1517  remove_intf_ep_devs(intf);
1519  }
1520  intf->cur_altsetting = alt;
1521  usb_enable_interface(dev, intf, true);
1522  if (device_is_registered(&intf->dev)) {
1524  create_intf_ep_devs(intf);
1525  }
1526  }
1527  /* Now that the interfaces are installed, re-enable LPM. */
1529  return 0;
1530 }
1532 
1533 static void usb_release_interface(struct device *dev)
1534 {
1535  struct usb_interface *intf = to_usb_interface(dev);
1536  struct usb_interface_cache *intfc =
1537  altsetting_to_usb_interface_cache(intf->altsetting);
1538 
1539  kref_put(&intfc->ref, usb_release_interface_cache);
1540  kfree(intf);
1541 }
1542 
1543 #ifdef CONFIG_HOTPLUG
1544 static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
1545 {
1546  struct usb_device *usb_dev;
1547  struct usb_interface *intf;
1548  struct usb_host_interface *alt;
1549 
1550  intf = to_usb_interface(dev);
1551  usb_dev = interface_to_usbdev(intf);
1552  alt = intf->cur_altsetting;
1553 
1554  if (add_uevent_var(env, "INTERFACE=%d/%d/%d",
1555  alt->desc.bInterfaceClass,
1556  alt->desc.bInterfaceSubClass,
1557  alt->desc.bInterfaceProtocol))
1558  return -ENOMEM;
1559 
1560  if (add_uevent_var(env,
1561  "MODALIAS=usb:"
1562  "v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02Xin%02X",
1563  le16_to_cpu(usb_dev->descriptor.idVendor),
1564  le16_to_cpu(usb_dev->descriptor.idProduct),
1565  le16_to_cpu(usb_dev->descriptor.bcdDevice),
1566  usb_dev->descriptor.bDeviceClass,
1567  usb_dev->descriptor.bDeviceSubClass,
1568  usb_dev->descriptor.bDeviceProtocol,
1569  alt->desc.bInterfaceClass,
1570  alt->desc.bInterfaceSubClass,
1571  alt->desc.bInterfaceProtocol,
1572  alt->desc.bInterfaceNumber))
1573  return -ENOMEM;
1574 
1575  return 0;
1576 }
1577 
1578 #else
1579 
1580 static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
1581 {
1582  return -ENODEV;
1583 }
1584 #endif /* CONFIG_HOTPLUG */
1585 
1587  .name = "usb_interface",
1588  .release = usb_release_interface,
1589  .uevent = usb_if_uevent,
1590 };
1591 
1592 static struct usb_interface_assoc_descriptor *find_iad(struct usb_device *dev,
1593  struct usb_host_config *config,
1594  u8 inum)
1595 {
1596  struct usb_interface_assoc_descriptor *retval = NULL;
1597  struct usb_interface_assoc_descriptor *intf_assoc;
1598  int first_intf;
1599  int last_intf;
1600  int i;
1601 
1602  for (i = 0; (i < USB_MAXIADS && config->intf_assoc[i]); i++) {
1603  intf_assoc = config->intf_assoc[i];
1604  if (intf_assoc->bInterfaceCount == 0)
1605  continue;
1606 
1607  first_intf = intf_assoc->bFirstInterface;
1608  last_intf = first_intf + (intf_assoc->bInterfaceCount - 1);
1609  if (inum >= first_intf && inum <= last_intf) {
1610  if (!retval)
1611  retval = intf_assoc;
1612  else
1613  dev_err(&dev->dev, "Interface #%d referenced"
1614  " by multiple IADs\n", inum);
1615  }
1616  }
1617 
1618  return retval;
1619 }
1620 
1621 
1622 /*
1623  * Internal function to queue a device reset
1624  *
1625  * This is initialized into the workstruct in 'struct
1626  * usb_device->reset_ws' that is launched by
1627  * message.c:usb_set_configuration() when initializing each 'struct
1628  * usb_interface'.
1629  *
1630  * It is safe to get the USB device without reference counts because
1631  * the life cycle of @iface is bound to the life cycle of @udev. Then,
1632  * this function will be ran only if @iface is alive (and before
1633  * freeing it any scheduled instances of it will have been cancelled).
1634  *
1635  * We need to set a flag (usb_dev->reset_running) because when we call
1636  * the reset, the interfaces might be unbound. The current interface
1637  * cannot try to remove the queued work as it would cause a deadlock
1638  * (you cannot remove your work from within your executing
1639  * workqueue). This flag lets it know, so that
1640  * usb_cancel_queued_reset() doesn't try to do it.
1641  *
1642  * See usb_queue_reset_device() for more details
1643  */
1644 static void __usb_queue_reset_device(struct work_struct *ws)
1645 {
1646  int rc;
1647  struct usb_interface *iface =
1648  container_of(ws, struct usb_interface, reset_ws);
1649  struct usb_device *udev = interface_to_usbdev(iface);
1650 
1651  rc = usb_lock_device_for_reset(udev, iface);
1652  if (rc >= 0) {
1653  iface->reset_running = 1;
1654  usb_reset_device(udev);
1655  iface->reset_running = 0;
1656  usb_unlock_device(udev);
1657  }
1658 }
1659 
1660 
1661 /*
1662  * usb_set_configuration - Makes a particular device setting be current
1663  * @dev: the device whose configuration is being updated
1664  * @configuration: the configuration being chosen.
1665  * Context: !in_interrupt(), caller owns the device lock
1666  *
1667  * This is used to enable non-default device modes. Not all devices
1668  * use this kind of configurability; many devices only have one
1669  * configuration.
1670  *
1671  * @configuration is the value of the configuration to be installed.
1672  * According to the USB spec (e.g. section 9.1.1.5), configuration values
1673  * must be non-zero; a value of zero indicates that the device in
1674  * unconfigured. However some devices erroneously use 0 as one of their
1675  * configuration values. To help manage such devices, this routine will
1676  * accept @configuration = -1 as indicating the device should be put in
1677  * an unconfigured state.
1678  *
1679  * USB device configurations may affect Linux interoperability,
1680  * power consumption and the functionality available. For example,
1681  * the default configuration is limited to using 100mA of bus power,
1682  * so that when certain device functionality requires more power,
1683  * and the device is bus powered, that functionality should be in some
1684  * non-default device configuration. Other device modes may also be
1685  * reflected as configuration options, such as whether two ISDN
1686  * channels are available independently; and choosing between open
1687  * standard device protocols (like CDC) or proprietary ones.
1688  *
1689  * Note that a non-authorized device (dev->authorized == 0) will only
1690  * be put in unconfigured mode.
1691  *
1692  * Note that USB has an additional level of device configurability,
1693  * associated with interfaces. That configurability is accessed using
1694  * usb_set_interface().
1695  *
1696  * This call is synchronous. The calling context must be able to sleep,
1697  * must own the device lock, and must not hold the driver model's USB
1698  * bus mutex; usb interface driver probe() methods cannot use this routine.
1699  *
1700  * Returns zero on success, or else the status code returned by the
1701  * underlying call that failed. On successful completion, each interface
1702  * in the original device configuration has been destroyed, and each one
1703  * in the new configuration has been probed by all relevant usb device
1704  * drivers currently known to the kernel.
1705  */
1706 int usb_set_configuration(struct usb_device *dev, int configuration)
1707 {
1708  int i, ret;
1709  struct usb_host_config *cp = NULL;
1710  struct usb_interface **new_interfaces = NULL;
1711  struct usb_hcd *hcd = bus_to_hcd(dev->bus);
1712  int n, nintf;
1713 
1714  if (dev->authorized == 0 || configuration == -1)
1715  configuration = 0;
1716  else {
1717  for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
1718  if (dev->config[i].desc.bConfigurationValue ==
1719  configuration) {
1720  cp = &dev->config[i];
1721  break;
1722  }
1723  }
1724  }
1725  if ((!cp && configuration != 0))
1726  return -EINVAL;
1727 
1728  /* The USB spec says configuration 0 means unconfigured.
1729  * But if a device includes a configuration numbered 0,
1730  * we will accept it as a correctly configured state.
1731  * Use -1 if you really want to unconfigure the device.
1732  */
1733  if (cp && configuration == 0)
1734  dev_warn(&dev->dev, "config 0 descriptor??\n");
1735 
1736  /* Allocate memory for new interfaces before doing anything else,
1737  * so that if we run out then nothing will have changed. */
1738  n = nintf = 0;
1739  if (cp) {
1740  nintf = cp->desc.bNumInterfaces;
1741  new_interfaces = kmalloc(nintf * sizeof(*new_interfaces),
1742  GFP_NOIO);
1743  if (!new_interfaces) {
1744  dev_err(&dev->dev, "Out of memory\n");
1745  return -ENOMEM;
1746  }
1747 
1748  for (; n < nintf; ++n) {
1749  new_interfaces[n] = kzalloc(
1750  sizeof(struct usb_interface),
1751  GFP_NOIO);
1752  if (!new_interfaces[n]) {
1753  dev_err(&dev->dev, "Out of memory\n");
1754  ret = -ENOMEM;
1755 free_interfaces:
1756  while (--n >= 0)
1757  kfree(new_interfaces[n]);
1758  kfree(new_interfaces);
1759  return ret;
1760  }
1761  }
1762 
1763  i = dev->bus_mA - cp->desc.bMaxPower * 2;
1764  if (i < 0)
1765  dev_warn(&dev->dev, "new config #%d exceeds power "
1766  "limit by %dmA\n",
1767  configuration, -i);
1768  }
1769 
1770  /* Wake up the device so we can send it the Set-Config request */
1771  ret = usb_autoresume_device(dev);
1772  if (ret)
1773  goto free_interfaces;
1774 
1775  /* if it's already configured, clear out old state first.
1776  * getting rid of old interfaces means unbinding their drivers.
1777  */
1778  if (dev->state != USB_STATE_ADDRESS)
1779  usb_disable_device(dev, 1); /* Skip ep0 */
1780 
1781  /* Get rid of pending async Set-Config requests for this device */
1782  cancel_async_set_config(dev);
1783 
1784  /* Make sure we have bandwidth (and available HCD resources) for this
1785  * configuration. Remove endpoints from the schedule if we're dropping
1786  * this configuration to set configuration 0. After this point, the
1787  * host controller will not allow submissions to dropped endpoints. If
1788  * this call fails, the device state is unchanged.
1789  */
1790  mutex_lock(hcd->bandwidth_mutex);
1791  /* Disable LPM, and re-enable it once the new configuration is
1792  * installed, so that the xHCI driver can recalculate the U1/U2
1793  * timeouts.
1794  */
1795  if (dev->actconfig && usb_disable_lpm(dev)) {
1796  dev_err(&dev->dev, "%s Failed to disable LPM\n.", __func__);
1797  mutex_unlock(hcd->bandwidth_mutex);
1798  return -ENOMEM;
1799  }
1800  ret = usb_hcd_alloc_bandwidth(dev, cp, NULL, NULL);
1801  if (ret < 0) {
1802  if (dev->actconfig)
1803  usb_enable_lpm(dev);
1804  mutex_unlock(hcd->bandwidth_mutex);
1806  goto free_interfaces;
1807  }
1808 
1809  ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1810  USB_REQ_SET_CONFIGURATION, 0, configuration, 0,
1811  NULL, 0, USB_CTRL_SET_TIMEOUT);
1812  if (ret < 0) {
1813  /* All the old state is gone, so what else can we do?
1814  * The device is probably useless now anyway.
1815  */
1816  cp = NULL;
1817  }
1818 
1819  dev->actconfig = cp;
1820  if (!cp) {
1823  /* Leave LPM disabled while the device is unconfigured. */
1824  mutex_unlock(hcd->bandwidth_mutex);
1826  goto free_interfaces;
1827  }
1828  mutex_unlock(hcd->bandwidth_mutex);
1830 
1831  /* Initialize the new interface structures and the
1832  * hc/hcd/usbcore interface/endpoint state.
1833  */
1834  for (i = 0; i < nintf; ++i) {
1835  struct usb_interface_cache *intfc;
1836  struct usb_interface *intf;
1837  struct usb_host_interface *alt;
1838 
1839  cp->interface[i] = intf = new_interfaces[i];
1840  intfc = cp->intf_cache[i];
1841  intf->altsetting = intfc->altsetting;
1842  intf->num_altsetting = intfc->num_altsetting;
1843  kref_get(&intfc->ref);
1844 
1845  alt = usb_altnum_to_altsetting(intf, 0);
1846 
1847  /* No altsetting 0? We'll assume the first altsetting.
1848  * We could use a GetInterface call, but if a device is
1849  * so non-compliant that it doesn't have altsetting 0
1850  * then I wouldn't trust its reply anyway.
1851  */
1852  if (!alt)
1853  alt = &intf->altsetting[0];
1854 
1855  intf->intf_assoc =
1856  find_iad(dev, cp, alt->desc.bInterfaceNumber);
1857  intf->cur_altsetting = alt;
1858  usb_enable_interface(dev, intf, true);
1859  intf->dev.parent = &dev->dev;
1860  intf->dev.driver = NULL;
1861  intf->dev.bus = &usb_bus_type;
1862  intf->dev.type = &usb_if_device_type;
1863  intf->dev.groups = usb_interface_groups;
1864  intf->dev.dma_mask = dev->dev.dma_mask;
1865  INIT_WORK(&intf->reset_ws, __usb_queue_reset_device);
1866  intf->minor = -1;
1867  device_initialize(&intf->dev);
1868  pm_runtime_no_callbacks(&intf->dev);
1869  dev_set_name(&intf->dev, "%d-%s:%d.%d",
1870  dev->bus->busnum, dev->devpath,
1871  configuration, alt->desc.bInterfaceNumber);
1872  }
1873  kfree(new_interfaces);
1874 
1875  if (cp->string == NULL &&
1876  !(dev->quirks & USB_QUIRK_CONFIG_INTF_STRINGS))
1877  cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
1878 
1879  /* Now that the interfaces are installed, re-enable LPM. */
1881  /* Enable LTM if it was turned off by usb_disable_device. */
1882  usb_enable_ltm(dev);
1883 
1884  /* Now that all the interfaces are set up, register them
1885  * to trigger binding of drivers to interfaces. probe()
1886  * routines may install different altsettings and may
1887  * claim() any interfaces not yet bound. Many class drivers
1888  * need that: CDC, audio, video, etc.
1889  */
1890  for (i = 0; i < nintf; ++i) {
1891  struct usb_interface *intf = cp->interface[i];
1892 
1893  dev_dbg(&dev->dev,
1894  "adding %s (config #%d, interface %d)\n",
1895  dev_name(&intf->dev), configuration,
1896  intf->cur_altsetting->desc.bInterfaceNumber);
1897  device_enable_async_suspend(&intf->dev);
1898  ret = device_add(&intf->dev);
1899  if (ret != 0) {
1900  dev_err(&dev->dev, "device_add(%s) --> %d\n",
1901  dev_name(&intf->dev), ret);
1902  continue;
1903  }
1904  create_intf_ep_devs(intf);
1905  }
1906 
1908  return 0;
1909 }
1910 
1911 static LIST_HEAD(set_config_list);
1912 static DEFINE_SPINLOCK(set_config_lock);
1913 
1915  struct usb_device *udev;
1916  int config;
1918  struct list_head node;
1919 };
1920 
1921 /* Worker routine for usb_driver_set_configuration() */
1922 static void driver_set_config_work(struct work_struct *work)
1923 {
1924  struct set_config_request *req =
1925  container_of(work, struct set_config_request, work);
1926  struct usb_device *udev = req->udev;
1927 
1928  usb_lock_device(udev);
1929  spin_lock(&set_config_lock);
1930  list_del(&req->node);
1931  spin_unlock(&set_config_lock);
1932 
1933  if (req->config >= -1) /* Is req still valid? */
1934  usb_set_configuration(udev, req->config);
1935  usb_unlock_device(udev);
1936  usb_put_dev(udev);
1937  kfree(req);
1938 }
1939 
1940 /* Cancel pending Set-Config requests for a device whose configuration
1941  * was just changed
1942  */
1943 static void cancel_async_set_config(struct usb_device *udev)
1944 {
1945  struct set_config_request *req;
1946 
1947  spin_lock(&set_config_lock);
1948  list_for_each_entry(req, &set_config_list, node) {
1949  if (req->udev == udev)
1950  req->config = -999; /* Mark as cancelled */
1951  }
1952  spin_unlock(&set_config_lock);
1953 }
1954 
1975 int usb_driver_set_configuration(struct usb_device *udev, int config)
1976 {
1977  struct set_config_request *req;
1978 
1979  req = kmalloc(sizeof(*req), GFP_KERNEL);
1980  if (!req)
1981  return -ENOMEM;
1982  req->udev = udev;
1983  req->config = config;
1984  INIT_WORK(&req->work, driver_set_config_work);
1985 
1986  spin_lock(&set_config_lock);
1987  list_add(&req->node, &set_config_list);
1988  spin_unlock(&set_config_lock);
1989 
1990  usb_get_dev(udev);
1991  schedule_work(&req->work);
1992  return 0;
1993 }