linux/drivers/usb/core/message.c
<<
>>
Prefs
   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/device.h>
  14#include <linux/scatterlist.h>
  15#include <linux/usb/quirks.h>
  16#include <asm/byteorder.h>
  17
  18#include "hcd.h"        /* for usbcore internals */
  19#include "usb.h"
  20
  21struct api_context {
  22        struct completion       done;
  23        int                     status;
  24};
  25
  26static void usb_api_blocking_completion(struct urb *urb)
  27{
  28        struct api_context *ctx = urb->context;
  29
  30        ctx->status = urb->status;
  31        complete(&ctx->done);
  32}
  33
  34
  35/*
  36 * Starts urb and waits for completion or timeout. Note that this call
  37 * is NOT interruptible. Many device driver i/o requests should be
  38 * interruptible and therefore these drivers should implement their
  39 * own interruptible routines.
  40 */
  41static int usb_start_wait_urb(struct urb *urb, int timeout, int *actual_length)
  42{
  43        struct api_context ctx;
  44        unsigned long expire;
  45        int retval;
  46
  47        init_completion(&ctx.done);
  48        urb->context = &ctx;
  49        urb->actual_length = 0;
  50        retval = usb_submit_urb(urb, GFP_NOIO);
  51        if (unlikely(retval))
  52                goto out;
  53
  54        expire = timeout ? msecs_to_jiffies(timeout) : MAX_SCHEDULE_TIMEOUT;
  55        if (!wait_for_completion_timeout(&ctx.done, expire)) {
  56                usb_kill_urb(urb);
  57                retval = (ctx.status == -ENOENT ? -ETIMEDOUT : ctx.status);
  58
  59                dev_dbg(&urb->dev->dev,
  60                        "%s timed out on ep%d%s len=%d/%d\n",
  61                        current->comm,
  62                        usb_endpoint_num(&urb->ep->desc),
  63                        usb_urb_dir_in(urb) ? "in" : "out",
  64                        urb->actual_length,
  65                        urb->transfer_buffer_length);
  66        } else
  67                retval = ctx.status;
  68out:
  69        if (actual_length)
  70                *actual_length = urb->actual_length;
  71
  72        usb_free_urb(urb);
  73        return retval;
  74}
  75
  76/*-------------------------------------------------------------------*/
  77/* returns status (negative) or length (positive) */
  78static int usb_internal_control_msg(struct usb_device *usb_dev,
  79                                    unsigned int pipe,
  80                                    struct usb_ctrlrequest *cmd,
  81                                    void *data, int len, int timeout)
  82{
  83        struct urb *urb;
  84        int retv;
  85        int length;
  86
  87        urb = usb_alloc_urb(0, GFP_NOIO);
  88        if (!urb)
  89                return -ENOMEM;
  90
  91        usb_fill_control_urb(urb, usb_dev, pipe, (unsigned char *)cmd, data,
  92                             len, usb_api_blocking_completion, NULL);
  93
  94        retv = usb_start_wait_urb(urb, timeout, &length);
  95        if (retv < 0)
  96                return retv;
  97        else
  98                return length;
  99}
 100
 101/**
 102 * usb_control_msg - Builds a control urb, sends it off and waits for completion
 103 * @dev: pointer to the usb device to send the message to
 104 * @pipe: endpoint "pipe" to send the message to
 105 * @request: USB message request value
 106 * @requesttype: USB message request type value
 107 * @value: USB message value
 108 * @index: USB message index value
 109 * @data: pointer to the data to send
 110 * @size: length in bytes of the data to send
 111 * @timeout: time in msecs to wait for the message to complete before timing
 112 *      out (if 0 the wait is forever)
 113 *
 114 * Context: !in_interrupt ()
 115 *
 116 * This function sends a simple control message to a specified endpoint and
 117 * waits for the message to complete, or timeout.
 118 *
 119 * If successful, it returns the number of bytes transferred, otherwise a
 120 * negative error number.
 121 *
 122 * Don't use this function from within an interrupt context, like a bottom half
 123 * handler.  If you need an asynchronous message, or need to send a message
 124 * from within interrupt context, use usb_submit_urb().
 125 * If a thread in your driver uses this call, make sure your disconnect()
 126 * method can wait for it to complete.  Since you don't have a handle on the
 127 * URB used, you can't cancel the request.
 128 */
 129int usb_control_msg(struct usb_device *dev, unsigned int pipe, __u8 request,
 130                    __u8 requesttype, __u16 value, __u16 index, void *data,
 131                    __u16 size, int timeout)
 132{
 133        struct usb_ctrlrequest *dr;
 134        int ret;
 135
 136        dr = kmalloc(sizeof(struct usb_ctrlrequest), GFP_NOIO);
 137        if (!dr)
 138                return -ENOMEM;
 139
 140        dr->bRequestType = requesttype;
 141        dr->bRequest = request;
 142        dr->wValue = cpu_to_le16p(&value);
 143        dr->wIndex = cpu_to_le16p(&index);
 144        dr->wLength = cpu_to_le16p(&size);
 145
 146        /* dbg("usb_control_msg"); */
 147
 148        ret = usb_internal_control_msg(dev, pipe, dr, data, size, timeout);
 149
 150        kfree(dr);
 151
 152        return ret;
 153}
 154EXPORT_SYMBOL_GPL(usb_control_msg);
 155
 156/**
 157 * usb_interrupt_msg - Builds an interrupt urb, sends it off and waits for completion
 158 * @usb_dev: pointer to the usb device to send the message to
 159 * @pipe: endpoint "pipe" to send the message to
 160 * @data: pointer to the data to send
 161 * @len: length in bytes of the data to send
 162 * @actual_length: pointer to a location to put the actual length transferred
 163 *      in bytes
 164 * @timeout: time in msecs to wait for the message to complete before
 165 *      timing out (if 0 the wait is forever)
 166 *
 167 * Context: !in_interrupt ()
 168 *
 169 * This function sends a simple interrupt message to a specified endpoint and
 170 * waits for the message to complete, or timeout.
 171 *
 172 * If successful, it returns 0, otherwise a negative error number.  The number
 173 * of actual bytes transferred will be stored in the actual_length paramater.
 174 *
 175 * Don't use this function from within an interrupt context, like a bottom half
 176 * handler.  If you need an asynchronous message, or need to send a message
 177 * from within interrupt context, use usb_submit_urb() If a thread in your
 178 * driver uses this call, make sure your disconnect() method can wait for it to
 179 * complete.  Since you don't have a handle on the URB used, you can't cancel
 180 * the request.
 181 */
 182int usb_interrupt_msg(struct usb_device *usb_dev, unsigned int pipe,
 183                      void *data, int len, int *actual_length, int timeout)
 184{
 185        return usb_bulk_msg(usb_dev, pipe, data, len, actual_length, timeout);
 186}
 187EXPORT_SYMBOL_GPL(usb_interrupt_msg);
 188
 189/**
 190 * usb_bulk_msg - Builds a bulk urb, sends it off and waits for completion
 191 * @usb_dev: pointer to the usb device to send the message to
 192 * @pipe: endpoint "pipe" to send the message to
 193 * @data: pointer to the data to send
 194 * @len: length in bytes of the data to send
 195 * @actual_length: pointer to a location to put the actual length transferred
 196 *      in bytes
 197 * @timeout: time in msecs to wait for the message to complete before
 198 *      timing out (if 0 the wait is forever)
 199 *
 200 * Context: !in_interrupt ()
 201 *
 202 * This function sends a simple bulk message to a specified endpoint
 203 * and waits for the message to complete, or timeout.
 204 *
 205 * If successful, it returns 0, otherwise a negative error number.  The number
 206 * of actual bytes transferred will be stored in the actual_length paramater.
 207 *
 208 * Don't use this function from within an interrupt context, like a bottom half
 209 * handler.  If you need an asynchronous message, or need to send a message
 210 * from within interrupt context, use usb_submit_urb() If a thread in your
 211 * driver uses this call, make sure your disconnect() method can wait for it to
 212 * complete.  Since you don't have a handle on the URB used, you can't cancel
 213 * the request.
 214 *
 215 * Because there is no usb_interrupt_msg() and no USBDEVFS_INTERRUPT ioctl,
 216 * users are forced to abuse this routine by using it to submit URBs for
 217 * interrupt endpoints.  We will take the liberty of creating an interrupt URB
 218 * (with the default interval) if the target is an interrupt endpoint.
 219 */
 220int usb_bulk_msg(struct usb_device *usb_dev, unsigned int pipe,
 221                 void *data, int len, int *actual_length, int timeout)
 222{
 223        struct urb *urb;
 224        struct usb_host_endpoint *ep;
 225
 226        ep = (usb_pipein(pipe) ? usb_dev->ep_in : usb_dev->ep_out)
 227                        [usb_pipeendpoint(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) ==
 236                        USB_ENDPOINT_XFER_INT) {
 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}
 247EXPORT_SYMBOL_GPL(usb_bulk_msg);
 248
 249/*-------------------------------------------------------------------*/
 250
 251static 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        if (io->dev->dev.dma_mask != NULL)
 260                usb_buffer_unmap_sg(io->dev, usb_pipein(io->pipe),
 261                                    io->sg, io->nents);
 262        io->dev = NULL;
 263}
 264
 265static void sg_complete(struct urb *urb)
 266{
 267        struct usb_sg_request *io = urb->context;
 268        int status = urb->status;
 269
 270        spin_lock(&io->lock);
 271
 272        /* In 2.5 we require hcds' endpoint queues not to progress after fault
 273         * reports, until the completion callback (this!) returns.  That lets
 274         * device driver code (like this routine) unlink queued urbs first,
 275         * if it needs to, since the HC won't work on them at all.  So it's
 276         * not possible for page N+1 to overwrite page N, and so on.
 277         *
 278         * That's only for "hard" faults; "soft" faults (unlinks) sometimes
 279         * complete before the HCD can get requests away from hardware,
 280         * though never during cleanup after a hard fault.
 281         */
 282        if (io->status
 283                        && (io->status != -ECONNRESET
 284                                || status != -ECONNRESET)
 285                        && urb->actual_length) {
 286                dev_err(io->dev->bus->controller,
 287                        "dev %s ep%d%s scatterlist error %d/%d\n",
 288                        io->dev->devpath,
 289                        usb_endpoint_num(&urb->ep->desc),
 290                        usb_urb_dir_in(urb) ? "in" : "out",
 291                        status, io->status);
 292                /* BUG (); */
 293        }
 294
 295        if (io->status == 0 && status && status != -ECONNRESET) {
 296                int i, found, retval;
 297
 298                io->status = status;
 299
 300                /* the previous urbs, and this one, completed already.
 301                 * unlink pending urbs so they won't rx/tx bad data.
 302                 * careful: unlink can sometimes be synchronous...
 303                 */
 304                spin_unlock(&io->lock);
 305                for (i = 0, found = 0; i < io->entries; i++) {
 306                        if (!io->urbs [i] || !io->urbs [i]->dev)
 307                                continue;
 308                        if (found) {
 309                                retval = usb_unlink_urb(io->urbs [i]);
 310                                if (retval != -EINPROGRESS &&
 311                                    retval != -ENODEV &&
 312                                    retval != -EBUSY)
 313                                        dev_err(&io->dev->dev,
 314                                                "%s, unlink --> %d\n",
 315                                                __func__, retval);
 316                        } else if (urb == io->urbs [i])
 317                                found = 1;
 318                }
 319                spin_lock(&io->lock);
 320        }
 321        urb->dev = NULL;
 322
 323        /* on the last completion, signal usb_sg_wait() */
 324        io->bytes += urb->actual_length;
 325        io->count--;
 326        if (!io->count)
 327                complete(&io->complete);
 328
 329        spin_unlock(&io->lock);
 330}
 331
 332
 333/**
 334 * usb_sg_init - initializes scatterlist-based bulk/interrupt I/O request
 335 * @io: request block being initialized.  until usb_sg_wait() returns,
 336 *      treat this as a pointer to an opaque block of memory,
 337 * @dev: the usb device that will send or receive the data
 338 * @pipe: endpoint "pipe" used to transfer the data
 339 * @period: polling rate for interrupt endpoints, in frames or
 340 *      (for high speed endpoints) microframes; ignored for bulk
 341 * @sg: scatterlist entries
 342 * @nents: how many entries in the scatterlist
 343 * @length: how many bytes to send from the scatterlist, or zero to
 344 *      send every byte identified in the list.
 345 * @mem_flags: SLAB_* flags affecting memory allocations in this call
 346 *
 347 * Returns zero for success, else a negative errno value.  This initializes a
 348 * scatter/gather request, allocating resources such as I/O mappings and urb
 349 * memory (except maybe memory used by USB controller drivers).
 350 *
 351 * The request must be issued using usb_sg_wait(), which waits for the I/O to
 352 * complete (or to be canceled) and then cleans up all resources allocated by
 353 * usb_sg_init().
 354 *
 355 * The request may be canceled with usb_sg_cancel(), either before or after
 356 * usb_sg_wait() is called.
 357 */
 358int usb_sg_init(struct usb_sg_request *io, struct usb_device *dev,
 359                unsigned pipe, unsigned period, struct scatterlist *sg,
 360                int nents, size_t length, gfp_t mem_flags)
 361{
 362        int i;
 363        int urb_flags;
 364        int dma;
 365
 366        if (!io || !dev || !sg
 367                        || usb_pipecontrol(pipe)
 368                        || usb_pipeisoc(pipe)
 369                        || nents <= 0)
 370                return -EINVAL;
 371
 372        spin_lock_init(&io->lock);
 373        io->dev = dev;
 374        io->pipe = pipe;
 375        io->sg = sg;
 376        io->nents = nents;
 377
 378        /* not all host controllers use DMA (like the mainstream pci ones);
 379         * they can use PIO (sl811) or be software over another transport.
 380         */
 381        dma = (dev->dev.dma_mask != NULL);
 382        if (dma)
 383                io->entries = usb_buffer_map_sg(dev, usb_pipein(pipe),
 384                                                sg, nents);
 385        else
 386                io->entries = nents;
 387
 388        /* initialize all the urbs we'll use */
 389        if (io->entries <= 0)
 390                return io->entries;
 391
 392        io->urbs = kmalloc(io->entries * sizeof *io->urbs, mem_flags);
 393        if (!io->urbs)
 394                goto nomem;
 395
 396        urb_flags = URB_NO_INTERRUPT;
 397        if (dma)
 398                urb_flags |= URB_NO_TRANSFER_DMA_MAP;
 399        if (usb_pipein(pipe))
 400                urb_flags |= URB_SHORT_NOT_OK;
 401
 402        for_each_sg(sg, sg, io->entries, i) {
 403                unsigned len;
 404
 405                io->urbs[i] = usb_alloc_urb(0, mem_flags);
 406                if (!io->urbs[i]) {
 407                        io->entries = i;
 408                        goto nomem;
 409                }
 410
 411                io->urbs[i]->dev = NULL;
 412                io->urbs[i]->pipe = pipe;
 413                io->urbs[i]->interval = period;
 414                io->urbs[i]->transfer_flags = urb_flags;
 415
 416                io->urbs[i]->complete = sg_complete;
 417                io->urbs[i]->context = io;
 418
 419                /*
 420                 * Some systems need to revert to PIO when DMA is temporarily
 421                 * unavailable.  For their sakes, both transfer_buffer and
 422                 * transfer_dma are set when possible.  However this can only
 423                 * work on systems without:
 424                 *
 425                 *  - HIGHMEM, since DMA buffers located in high memory are
 426                 *    not directly addressable by the CPU for PIO;
 427                 *
 428                 *  - IOMMU, since dma_map_sg() is allowed to use an IOMMU to
 429                 *    make virtually discontiguous buffers be "dma-contiguous"
 430                 *    so that PIO and DMA need diferent numbers of URBs.
 431                 *
 432                 * So when HIGHMEM or IOMMU are in use, transfer_buffer is NULL
 433                 * to prevent stale pointers and to help spot bugs.
 434                 */
 435                if (dma) {
 436                        io->urbs[i]->transfer_dma = sg_dma_address(sg);
 437                        len = sg_dma_len(sg);
 438#if defined(CONFIG_HIGHMEM) || defined(CONFIG_GART_IOMMU)
 439                        io->urbs[i]->transfer_buffer = NULL;
 440#else
 441                        io->urbs[i]->transfer_buffer = sg_virt(sg);
 442#endif
 443                } else {
 444                        /* hc may use _only_ transfer_buffer */
 445                        io->urbs[i]->transfer_buffer = sg_virt(sg);
 446                        len = sg->length;
 447                }
 448
 449                if (length) {
 450                        len = min_t(unsigned, len, length);
 451                        length -= len;
 452                        if (length == 0)
 453                                io->entries = i + 1;
 454                }
 455                io->urbs[i]->transfer_buffer_length = len;
 456        }
 457        io->urbs[--i]->transfer_flags &= ~URB_NO_INTERRUPT;
 458
 459        /* transaction state */
 460        io->count = io->entries;
 461        io->status = 0;
 462        io->bytes = 0;
 463        init_completion(&io->complete);
 464        return 0;
 465
 466nomem:
 467        sg_clean(io);
 468        return -ENOMEM;
 469}
 470EXPORT_SYMBOL_GPL(usb_sg_init);
 471
 472/**
 473 * usb_sg_wait - synchronously execute scatter/gather request
 474 * @io: request block handle, as initialized with usb_sg_init().
 475 *      some fields become accessible when this call returns.
 476 * Context: !in_interrupt ()
 477 *
 478 * This function blocks until the specified I/O operation completes.  It
 479 * leverages the grouping of the related I/O requests to get good transfer
 480 * rates, by queueing the requests.  At higher speeds, such queuing can
 481 * significantly improve USB throughput.
 482 *
 483 * There are three kinds of completion for this function.
 484 * (1) success, where io->status is zero.  The number of io->bytes
 485 *     transferred is as requested.
 486 * (2) error, where io->status is a negative errno value.  The number
 487 *     of io->bytes transferred before the error is usually less
 488 *     than requested, and can be nonzero.
 489 * (3) cancellation, a type of error with status -ECONNRESET that
 490 *     is initiated by usb_sg_cancel().
 491 *
 492 * When this function returns, all memory allocated through usb_sg_init() or
 493 * this call will have been freed.  The request block parameter may still be
 494 * passed to usb_sg_cancel(), or it may be freed.  It could also be
 495 * reinitialized and then reused.
 496 *
 497 * Data Transfer Rates:
 498 *
 499 * Bulk transfers are valid for full or high speed endpoints.
 500 * The best full speed data rate is 19 packets of 64 bytes each
 501 * per frame, or 1216 bytes per millisecond.
 502 * The best high speed data rate is 13 packets of 512 bytes each
 503 * per microframe, or 52 KBytes per millisecond.
 504 *
 505 * The reason to use interrupt transfers through this API would most likely
 506 * be to reserve high speed bandwidth, where up to 24 KBytes per millisecond
 507 * could be transferred.  That capability is less useful for low or full
 508 * speed interrupt endpoints, which allow at most one packet per millisecond,
 509 * of at most 8 or 64 bytes (respectively).
 510 */
 511void usb_sg_wait(struct usb_sg_request *io)
 512{
 513        int i;
 514        int entries = io->entries;
 515
 516        /* queue the urbs.  */
 517        spin_lock_irq(&io->lock);
 518        i = 0;
 519        while (i < entries && !io->status) {
 520                int retval;
 521
 522                io->urbs[i]->dev = io->dev;
 523                retval = usb_submit_urb(io->urbs [i], GFP_ATOMIC);
 524
 525                /* after we submit, let completions or cancelations fire;
 526                 * we handshake using io->status.
 527                 */
 528                spin_unlock_irq(&io->lock);
 529                switch (retval) {
 530                        /* maybe we retrying will recover */
 531                case -ENXIO:    /* hc didn't queue this one */
 532                case -EAGAIN:
 533                case -ENOMEM:
 534                        io->urbs[i]->dev = NULL;
 535                        retval = 0;
 536                        yield();
 537                        break;
 538
 539                        /* no error? continue immediately.
 540                         *
 541                         * NOTE: to work better with UHCI (4K I/O buffer may
 542                         * need 3K of TDs) it may be good to limit how many
 543                         * URBs are queued at once; N milliseconds?
 544                         */
 545                case 0:
 546                        ++i;
 547                        cpu_relax();
 548                        break;
 549
 550                        /* fail any uncompleted urbs */
 551                default:
 552                        io->urbs[i]->dev = NULL;
 553                        io->urbs[i]->status = retval;
 554                        dev_dbg(&io->dev->dev, "%s, submit --> %d\n",
 555                                __func__, retval);
 556                        usb_sg_cancel(io);
 557                }
 558                spin_lock_irq(&io->lock);
 559                if (retval && (io->status == 0 || io->status == -ECONNRESET))
 560                        io->status = retval;
 561        }
 562        io->count -= entries - i;
 563        if (io->count == 0)
 564                complete(&io->complete);
 565        spin_unlock_irq(&io->lock);
 566
 567        /* OK, yes, this could be packaged as non-blocking.
 568         * So could the submit loop above ... but it's easier to
 569         * solve neither problem than to solve both!
 570         */
 571        wait_for_completion(&io->complete);
 572
 573        sg_clean(io);
 574}
 575EXPORT_SYMBOL_GPL(usb_sg_wait);
 576
 577/**
 578 * usb_sg_cancel - stop scatter/gather i/o issued by usb_sg_wait()
 579 * @io: request block, initialized with usb_sg_init()
 580 *
 581 * This stops a request after it has been started by usb_sg_wait().
 582 * It can also prevents one initialized by usb_sg_init() from starting,
 583 * so that call just frees resources allocated to the request.
 584 */
 585void usb_sg_cancel(struct usb_sg_request *io)
 586{
 587        unsigned long flags;
 588
 589        spin_lock_irqsave(&io->lock, flags);
 590
 591        /* shut everything down, if it didn't already */
 592        if (!io->status) {
 593                int i;
 594
 595                io->status = -ECONNRESET;
 596                spin_unlock(&io->lock);
 597                for (i = 0; i < io->entries; i++) {
 598                        int retval;
 599
 600                        if (!io->urbs [i]->dev)
 601                                continue;
 602                        retval = usb_unlink_urb(io->urbs [i]);
 603                        if (retval != -EINPROGRESS && retval != -EBUSY)
 604                                dev_warn(&io->dev->dev, "%s, unlink --> %d\n",
 605                                        __func__, retval);
 606                }
 607                spin_lock(&io->lock);
 608        }
 609        spin_unlock_irqrestore(&io->lock, flags);
 610}
 611EXPORT_SYMBOL_GPL(usb_sg_cancel);
 612
 613/*-------------------------------------------------------------------*/
 614
 615/**
 616 * usb_get_descriptor - issues a generic GET_DESCRIPTOR request
 617 * @dev: the device whose descriptor is being retrieved
 618 * @type: the descriptor type (USB_DT_*)
 619 * @index: the number of the descriptor
 620 * @buf: where to put the descriptor
 621 * @size: how big is "buf"?
 622 * Context: !in_interrupt ()
 623 *
 624 * Gets a USB descriptor.  Convenience functions exist to simplify
 625 * getting some types of descriptors.  Use
 626 * usb_get_string() or usb_string() for USB_DT_STRING.
 627 * Device (USB_DT_DEVICE) and configuration descriptors (USB_DT_CONFIG)
 628 * are part of the device structure.
 629 * In addition to a number of USB-standard descriptors, some
 630 * devices also use class-specific or vendor-specific descriptors.
 631 *
 632 * This call is synchronous, and may not be used in an interrupt context.
 633 *
 634 * Returns the number of bytes received on success, or else the status code
 635 * returned by the underlying usb_control_msg() call.
 636 */
 637int usb_get_descriptor(struct usb_device *dev, unsigned char type,
 638                       unsigned char index, void *buf, int size)
 639{
 640        int i;
 641        int result;
 642
 643        memset(buf, 0, size);   /* Make sure we parse really received data */
 644
 645        for (i = 0; i < 3; ++i) {
 646                /* retry on length 0 or error; some devices are flakey */
 647                result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
 648                                USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
 649                                (type << 8) + index, 0, buf, size,
 650                                USB_CTRL_GET_TIMEOUT);
 651                if (result <= 0 && result != -ETIMEDOUT)
 652                        continue;
 653                if (result > 1 && ((u8 *)buf)[1] != type) {
 654                        result = -EPROTO;
 655                        continue;
 656                }
 657                break;
 658        }
 659        return result;
 660}
 661EXPORT_SYMBOL_GPL(usb_get_descriptor);
 662
 663/**
 664 * usb_get_string - gets a string descriptor
 665 * @dev: the device whose string descriptor is being retrieved
 666 * @langid: code for language chosen (from string descriptor zero)
 667 * @index: the number of the descriptor
 668 * @buf: where to put the string
 669 * @size: how big is "buf"?
 670 * Context: !in_interrupt ()
 671 *
 672 * Retrieves a string, encoded using UTF-16LE (Unicode, 16 bits per character,
 673 * in little-endian byte order).
 674 * The usb_string() function will often be a convenient way to turn
 675 * these strings into kernel-printable form.
 676 *
 677 * Strings may be referenced in device, configuration, interface, or other
 678 * descriptors, and could also be used in vendor-specific ways.
 679 *
 680 * This call is synchronous, and may not be used in an interrupt context.
 681 *
 682 * Returns the number of bytes received on success, or else the status code
 683 * returned by the underlying usb_control_msg() call.
 684 */
 685static int usb_get_string(struct usb_device *dev, unsigned short langid,
 686                          unsigned char index, void *buf, int size)
 687{
 688        int i;
 689        int result;
 690
 691        for (i = 0; i < 3; ++i) {
 692                /* retry on length 0 or stall; some devices are flakey */
 693                result = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
 694                        USB_REQ_GET_DESCRIPTOR, USB_DIR_IN,
 695                        (USB_DT_STRING << 8) + index, langid, buf, size,
 696                        USB_CTRL_GET_TIMEOUT);
 697                if (!(result == 0 || result == -EPIPE))
 698                        break;
 699        }
 700        return result;
 701}
 702
 703static void usb_try_string_workarounds(unsigned char *buf, int *length)
 704{
 705        int newlength, oldlength = *length;
 706
 707        for (newlength = 2; newlength + 1 < oldlength; newlength += 2)
 708                if (!isprint(buf[newlength]) || buf[newlength + 1])
 709                        break;
 710
 711        if (newlength > 2) {
 712                buf[0] = newlength;
 713                *length = newlength;
 714        }
 715}
 716
 717static int usb_string_sub(struct usb_device *dev, unsigned int langid,
 718                          unsigned int index, unsigned char *buf)
 719{
 720        int rc;
 721
 722        /* Try to read the string descriptor by asking for the maximum
 723         * possible number of bytes */
 724        if (dev->quirks & USB_QUIRK_STRING_FETCH_255)
 725                rc = -EIO;
 726        else
 727                rc = usb_get_string(dev, langid, index, buf, 255);
 728
 729        /* If that failed try to read the descriptor length, then
 730         * ask for just that many bytes */
 731        if (rc < 2) {
 732                rc = usb_get_string(dev, langid, index, buf, 2);
 733                if (rc == 2)
 734                        rc = usb_get_string(dev, langid, index, buf, buf[0]);
 735        }
 736
 737        if (rc >= 2) {
 738                if (!buf[0] && !buf[1])
 739                        usb_try_string_workarounds(buf, &rc);
 740
 741                /* There might be extra junk at the end of the descriptor */
 742                if (buf[0] < rc)
 743                        rc = buf[0];
 744
 745                rc = rc - (rc & 1); /* force a multiple of two */
 746        }
 747
 748        if (rc < 2)
 749                rc = (rc < 0 ? rc : -EINVAL);
 750
 751        return rc;
 752}
 753
 754/**
 755 * usb_string - returns ISO 8859-1 version of a string descriptor
 756 * @dev: the device whose string descriptor is being retrieved
 757 * @index: the number of the descriptor
 758 * @buf: where to put the string
 759 * @size: how big is "buf"?
 760 * Context: !in_interrupt ()
 761 *
 762 * This converts the UTF-16LE encoded strings returned by devices, from
 763 * usb_get_string_descriptor(), to null-terminated ISO-8859-1 encoded ones
 764 * that are more usable in most kernel contexts.  Note that all characters
 765 * in the chosen descriptor that can't be encoded using ISO-8859-1
 766 * are converted to the question mark ("?") character, and this function
 767 * chooses strings in the first language supported by the device.
 768 *
 769 * The ASCII (or, redundantly, "US-ASCII") character set is the seven-bit
 770 * subset of ISO 8859-1. ISO-8859-1 is the eight-bit subset of Unicode,
 771 * and is appropriate for use many uses of English and several other
 772 * Western European languages.  (But it doesn't include the "Euro" symbol.)
 773 *
 774 * This call is synchronous, and may not be used in an interrupt context.
 775 *
 776 * Returns length of the string (>= 0) or usb_control_msg status (< 0).
 777 */
 778int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
 779{
 780        unsigned char *tbuf;
 781        int err;
 782        unsigned int u, idx;
 783
 784        if (dev->state == USB_STATE_SUSPENDED)
 785                return -EHOSTUNREACH;
 786        if (size <= 0 || !buf || !index)
 787                return -EINVAL;
 788        buf[0] = 0;
 789        tbuf = kmalloc(256, GFP_NOIO);
 790        if (!tbuf)
 791                return -ENOMEM;
 792
 793        /* get langid for strings if it's not yet known */
 794        if (!dev->have_langid) {
 795                err = usb_string_sub(dev, 0, 0, tbuf);
 796                if (err < 0) {
 797                        dev_err(&dev->dev,
 798                                "string descriptor 0 read error: %d\n",
 799                                err);
 800                        goto errout;
 801                } else if (err < 4) {
 802                        dev_err(&dev->dev, "string descriptor 0 too short\n");
 803                        err = -EINVAL;
 804                        goto errout;
 805                } else {
 806                        dev->have_langid = 1;
 807                        dev->string_langid = tbuf[2] | (tbuf[3] << 8);
 808                        /* always use the first langid listed */
 809                        dev_dbg(&dev->dev, "default language 0x%04x\n",
 810                                dev->string_langid);
 811                }
 812        }
 813
 814        err = usb_string_sub(dev, dev->string_langid, index, tbuf);
 815        if (err < 0)
 816                goto errout;
 817
 818        size--;         /* leave room for trailing NULL char in output buffer */
 819        for (idx = 0, u = 2; u < err; u += 2) {
 820                if (idx >= size)
 821                        break;
 822                if (tbuf[u+1])                  /* high byte */
 823                        buf[idx++] = '?';  /* non ISO-8859-1 character */
 824                else
 825                        buf[idx++] = tbuf[u];
 826        }
 827        buf[idx] = 0;
 828        err = idx;
 829
 830        if (tbuf[1] != USB_DT_STRING)
 831                dev_dbg(&dev->dev,
 832                        "wrong descriptor type %02x for string %d (\"%s\")\n",
 833                        tbuf[1], index, buf);
 834
 835 errout:
 836        kfree(tbuf);
 837        return err;
 838}
 839EXPORT_SYMBOL_GPL(usb_string);
 840
 841/**
 842 * usb_cache_string - read a string descriptor and cache it for later use
 843 * @udev: the device whose string descriptor is being read
 844 * @index: the descriptor index
 845 *
 846 * Returns a pointer to a kmalloc'ed buffer containing the descriptor string,
 847 * or NULL if the index is 0 or the string could not be read.
 848 */
 849char *usb_cache_string(struct usb_device *udev, int index)
 850{
 851        char *buf;
 852        char *smallbuf = NULL;
 853        int len;
 854
 855        if (index <= 0)
 856                return NULL;
 857
 858        buf = kmalloc(256, GFP_KERNEL);
 859        if (buf) {
 860                len = usb_string(udev, index, buf, 256);
 861                if (len > 0) {
 862                        smallbuf = kmalloc(++len, GFP_KERNEL);
 863                        if (!smallbuf)
 864                                return buf;
 865                        memcpy(smallbuf, buf, len);
 866                }
 867                kfree(buf);
 868        }
 869        return smallbuf;
 870}
 871
 872/*
 873 * usb_get_device_descriptor - (re)reads the device descriptor (usbcore)
 874 * @dev: the device whose device descriptor is being updated
 875 * @size: how much of the descriptor to read
 876 * Context: !in_interrupt ()
 877 *
 878 * Updates the copy of the device descriptor stored in the device structure,
 879 * which dedicates space for this purpose.
 880 *
 881 * Not exported, only for use by the core.  If drivers really want to read
 882 * the device descriptor directly, they can call usb_get_descriptor() with
 883 * type = USB_DT_DEVICE and index = 0.
 884 *
 885 * This call is synchronous, and may not be used in an interrupt context.
 886 *
 887 * Returns the number of bytes received on success, or else the status code
 888 * returned by the underlying usb_control_msg() call.
 889 */
 890int usb_get_device_descriptor(struct usb_device *dev, unsigned int size)
 891{
 892        struct usb_device_descriptor *desc;
 893        int ret;
 894
 895        if (size > sizeof(*desc))
 896                return -EINVAL;
 897        desc = kmalloc(sizeof(*desc), GFP_NOIO);
 898        if (!desc)
 899                return -ENOMEM;
 900
 901        ret = usb_get_descriptor(dev, USB_DT_DEVICE, 0, desc, size);
 902        if (ret >= 0)
 903                memcpy(&dev->descriptor, desc, size);
 904        kfree(desc);
 905        return ret;
 906}
 907
 908/**
 909 * usb_get_status - issues a GET_STATUS call
 910 * @dev: the device whose status is being checked
 911 * @type: USB_RECIP_*; for device, interface, or endpoint
 912 * @target: zero (for device), else interface or endpoint number
 913 * @data: pointer to two bytes of bitmap data
 914 * Context: !in_interrupt ()
 915 *
 916 * Returns device, interface, or endpoint status.  Normally only of
 917 * interest to see if the device is self powered, or has enabled the
 918 * remote wakeup facility; or whether a bulk or interrupt endpoint
 919 * is halted ("stalled").
 920 *
 921 * Bits in these status bitmaps are set using the SET_FEATURE request,
 922 * and cleared using the CLEAR_FEATURE request.  The usb_clear_halt()
 923 * function should be used to clear halt ("stall") status.
 924 *
 925 * This call is synchronous, and may not be used in an interrupt context.
 926 *
 927 * Returns the number of bytes received on success, or else the status code
 928 * returned by the underlying usb_control_msg() call.
 929 */
 930int usb_get_status(struct usb_device *dev, int type, int target, void *data)
 931{
 932        int ret;
 933        u16 *status = kmalloc(sizeof(*status), GFP_KERNEL);
 934
 935        if (!status)
 936                return -ENOMEM;
 937
 938        ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
 939                USB_REQ_GET_STATUS, USB_DIR_IN | type, 0, target, status,
 940                sizeof(*status), USB_CTRL_GET_TIMEOUT);
 941
 942        *(u16 *)data = *status;
 943        kfree(status);
 944        return ret;
 945}
 946EXPORT_SYMBOL_GPL(usb_get_status);
 947
 948/**
 949 * usb_clear_halt - tells device to clear endpoint halt/stall condition
 950 * @dev: device whose endpoint is halted
 951 * @pipe: endpoint "pipe" being cleared
 952 * Context: !in_interrupt ()
 953 *
 954 * This is used to clear halt conditions for bulk and interrupt endpoints,
 955 * as reported by URB completion status.  Endpoints that are halted are
 956 * sometimes referred to as being "stalled".  Such endpoints are unable
 957 * to transmit or receive data until the halt status is cleared.  Any URBs
 958 * queued for such an endpoint should normally be unlinked by the driver
 959 * before clearing the halt condition, as described in sections 5.7.5
 960 * and 5.8.5 of the USB 2.0 spec.
 961 *
 962 * Note that control and isochronous endpoints don't halt, although control
 963 * endpoints report "protocol stall" (for unsupported requests) using the
 964 * same status code used to report a true stall.
 965 *
 966 * This call is synchronous, and may not be used in an interrupt context.
 967 *
 968 * Returns zero on success, or else the status code returned by the
 969 * underlying usb_control_msg() call.
 970 */
 971int usb_clear_halt(struct usb_device *dev, int pipe)
 972{
 973        int result;
 974        int endp = usb_pipeendpoint(pipe);
 975
 976        if (usb_pipein(pipe))
 977                endp |= USB_DIR_IN;
 978
 979        /* we don't care if it wasn't halted first. in fact some devices
 980         * (like some ibmcam model 1 units) seem to expect hosts to make
 981         * this request for iso endpoints, which can't halt!
 982         */
 983        result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
 984                USB_REQ_CLEAR_FEATURE, USB_RECIP_ENDPOINT,
 985                USB_ENDPOINT_HALT, endp, NULL, 0,
 986                USB_CTRL_SET_TIMEOUT);
 987
 988        /* don't un-halt or force to DATA0 except on success */
 989        if (result < 0)
 990                return result;
 991
 992        /* NOTE:  seems like Microsoft and Apple don't bother verifying
 993         * the clear "took", so some devices could lock up if you check...
 994         * such as the Hagiwara FlashGate DUAL.  So we won't bother.
 995         *
 996         * NOTE:  make sure the logic here doesn't diverge much from
 997         * the copy in usb-storage, for as long as we need two copies.
 998         */
 999
1000        /* toggle was reset by the clear */
1001        usb_settoggle(dev, usb_pipeendpoint(pipe), usb_pipeout(pipe), 0);
1002
1003        return 0;
1004}
1005EXPORT_SYMBOL_GPL(usb_clear_halt);
1006
1007/**
1008 * usb_disable_endpoint -- Disable an endpoint by address
1009 * @dev: the device whose endpoint is being disabled
1010 * @epaddr: the endpoint's address.  Endpoint number for output,
1011 *      endpoint number + USB_DIR_IN for input
1012 *
1013 * Deallocates hcd/hardware state for this endpoint ... and nukes all
1014 * pending urbs.
1015 *
1016 * If the HCD hasn't registered a disable() function, this sets the
1017 * endpoint's maxpacket size to 0 to prevent further submissions.
1018 */
1019void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr)
1020{
1021        unsigned int epnum = epaddr & USB_ENDPOINT_NUMBER_MASK;
1022        struct usb_host_endpoint *ep;
1023
1024        if (!dev)
1025                return;
1026
1027        if (usb_endpoint_out(epaddr)) {
1028                ep = dev->ep_out[epnum];
1029                dev->ep_out[epnum] = NULL;
1030        } else {
1031                ep = dev->ep_in[epnum];
1032                dev->ep_in[epnum] = NULL;
1033        }
1034        if (ep) {
1035                ep->enabled = 0;
1036                usb_hcd_flush_endpoint(dev, ep);
1037                usb_hcd_disable_endpoint(dev, ep);
1038        }
1039}
1040
1041/**
1042 * usb_disable_interface -- Disable all endpoints for an interface
1043 * @dev: the device whose interface is being disabled
1044 * @intf: pointer to the interface descriptor
1045 *
1046 * Disables all the endpoints for the interface's current altsetting.
1047 */
1048void usb_disable_interface(struct usb_device *dev, struct usb_interface *intf)
1049{
1050        struct usb_host_interface *alt = intf->cur_altsetting;
1051        int i;
1052
1053        for (i = 0; i < alt->desc.bNumEndpoints; ++i) {
1054                usb_disable_endpoint(dev,
1055                                alt->endpoint[i].desc.bEndpointAddress);
1056        }
1057}
1058
1059/**
1060 * usb_disable_device - Disable all the endpoints for a USB device
1061 * @dev: the device whose endpoints are being disabled
1062 * @skip_ep0: 0 to disable endpoint 0, 1 to skip it.
1063 *
1064 * Disables all the device's endpoints, potentially including endpoint 0.
1065 * Deallocates hcd/hardware state for the endpoints (nuking all or most
1066 * pending urbs) and usbcore state for the interfaces, so that usbcore
1067 * must usb_set_configuration() before any interfaces could be used.
1068 */
1069void usb_disable_device(struct usb_device *dev, int skip_ep0)
1070{
1071        int i;
1072
1073        dev_dbg(&dev->dev, "%s nuking %s URBs\n", __func__,
1074                skip_ep0 ? "non-ep0" : "all");
1075        for (i = skip_ep0; i < 16; ++i) {
1076                usb_disable_endpoint(dev, i);
1077                usb_disable_endpoint(dev, i + USB_DIR_IN);
1078        }
1079        dev->toggle[0] = dev->toggle[1] = 0;
1080
1081        /* getting rid of interfaces will disconnect
1082         * any drivers bound to them (a key side effect)
1083         */
1084        if (dev->actconfig) {
1085                for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
1086                        struct usb_interface    *interface;
1087
1088                        /* remove this interface if it has been registered */
1089                        interface = dev->actconfig->interface[i];
1090                        if (!device_is_registered(&interface->dev))
1091                                continue;
1092                        dev_dbg(&dev->dev, "unregistering interface %s\n",
1093                                dev_name(&interface->dev));
1094                        interface->unregistering = 1;
1095                        usb_remove_sysfs_intf_files(interface);
1096                        device_del(&interface->dev);
1097                }
1098
1099                /* Now that the interfaces are unbound, nobody should
1100                 * try to access them.
1101                 */
1102                for (i = 0; i < dev->actconfig->desc.bNumInterfaces; i++) {
1103                        put_device(&dev->actconfig->interface[i]->dev);
1104                        dev->actconfig->interface[i] = NULL;
1105                }
1106                dev->actconfig = NULL;
1107                if (dev->state == USB_STATE_CONFIGURED)
1108                        usb_set_device_state(dev, USB_STATE_ADDRESS);
1109        }
1110}
1111
1112/**
1113 * usb_enable_endpoint - Enable an endpoint for USB communications
1114 * @dev: the device whose interface is being enabled
1115 * @ep: the endpoint
1116 *
1117 * Resets the endpoint toggle, and sets dev->ep_{in,out} pointers.
1118 * For control endpoints, both the input and output sides are handled.
1119 */
1120void usb_enable_endpoint(struct usb_device *dev, struct usb_host_endpoint *ep)
1121{
1122        int epnum = usb_endpoint_num(&ep->desc);
1123        int is_out = usb_endpoint_dir_out(&ep->desc);
1124        int is_control = usb_endpoint_xfer_control(&ep->desc);
1125
1126        if (is_out || is_control) {
1127                usb_settoggle(dev, epnum, 1, 0);
1128                dev->ep_out[epnum] = ep;
1129        }
1130        if (!is_out || is_control) {
1131                usb_settoggle(dev, epnum, 0, 0);
1132                dev->ep_in[epnum] = ep;
1133        }
1134        ep->enabled = 1;
1135}
1136
1137/**
1138 * usb_enable_interface - Enable all the endpoints for an interface
1139 * @dev: the device whose interface is being enabled
1140 * @intf: pointer to the interface descriptor
1141 *
1142 * Enables all the endpoints for the interface's current altsetting.
1143 */
1144static void usb_enable_interface(struct usb_device *dev,
1145                                 struct usb_interface *intf)
1146{
1147        struct usb_host_interface *alt = intf->cur_altsetting;
1148        int i;
1149
1150        for (i = 0; i < alt->desc.bNumEndpoints; ++i)
1151                usb_enable_endpoint(dev, &alt->endpoint[i]);
1152}
1153
1154/**
1155 * usb_set_interface - Makes a particular alternate setting be current
1156 * @dev: the device whose interface is being updated
1157 * @interface: the interface being updated
1158 * @alternate: the setting being chosen.
1159 * Context: !in_interrupt ()
1160 *
1161 * This is used to enable data transfers on interfaces that may not
1162 * be enabled by default.  Not all devices support such configurability.
1163 * Only the driver bound to an interface may change its setting.
1164 *
1165 * Within any given configuration, each interface may have several
1166 * alternative settings.  These are often used to control levels of
1167 * bandwidth consumption.  For example, the default setting for a high
1168 * speed interrupt endpoint may not send more than 64 bytes per microframe,
1169 * while interrupt transfers of up to 3KBytes per microframe are legal.
1170 * Also, isochronous endpoints may never be part of an
1171 * interface's default setting.  To access such bandwidth, alternate
1172 * interface settings must be made current.
1173 *
1174 * Note that in the Linux USB subsystem, bandwidth associated with
1175 * an endpoint in a given alternate setting is not reserved until an URB
1176 * is submitted that needs that bandwidth.  Some other operating systems
1177 * allocate bandwidth early, when a configuration is chosen.
1178 *
1179 * This call is synchronous, and may not be used in an interrupt context.
1180 * Also, drivers must not change altsettings while urbs are scheduled for
1181 * endpoints in that interface; all such urbs must first be completed
1182 * (perhaps forced by unlinking).
1183 *
1184 * Returns zero on success, or else the status code returned by the
1185 * underlying usb_control_msg() call.
1186 */
1187int usb_set_interface(struct usb_device *dev, int interface, int alternate)
1188{
1189        struct usb_interface *iface;
1190        struct usb_host_interface *alt;
1191        int ret;
1192        int manual = 0;
1193        unsigned int epaddr;
1194        unsigned int pipe;
1195
1196        if (dev->state == USB_STATE_SUSPENDED)
1197                return -EHOSTUNREACH;
1198
1199        iface = usb_ifnum_to_if(dev, interface);
1200        if (!iface) {
1201                dev_dbg(&dev->dev, "selecting invalid interface %d\n",
1202                        interface);
1203                return -EINVAL;
1204        }
1205
1206        alt = usb_altnum_to_altsetting(iface, alternate);
1207        if (!alt) {
1208                dev_warn(&dev->dev, "selecting invalid altsetting %d",
1209                         alternate);
1210                return -EINVAL;
1211        }
1212
1213        if (dev->quirks & USB_QUIRK_NO_SET_INTF)
1214                ret = -EPIPE;
1215        else
1216                ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1217                                   USB_REQ_SET_INTERFACE, USB_RECIP_INTERFACE,
1218                                   alternate, interface, NULL, 0, 5000);
1219
1220        /* 9.4.10 says devices don't need this and are free to STALL the
1221         * request if the interface only has one alternate setting.
1222         */
1223        if (ret == -EPIPE && iface->num_altsetting == 1) {
1224                dev_dbg(&dev->dev,
1225                        "manual set_interface for iface %d, alt %d\n",
1226                        interface, alternate);
1227                manual = 1;
1228        } else if (ret < 0)
1229                return ret;
1230
1231        /* FIXME drivers shouldn't need to replicate/bugfix the logic here
1232         * when they implement async or easily-killable versions of this or
1233         * other "should-be-internal" functions (like clear_halt).
1234         * should hcd+usbcore postprocess control requests?
1235         */
1236
1237        /* prevent submissions using previous endpoint settings */
1238        if (iface->cur_altsetting != alt)
1239                usb_remove_sysfs_intf_files(iface);
1240        usb_disable_interface(dev, iface);
1241
1242        iface->cur_altsetting = alt;
1243
1244        /* If the interface only has one altsetting and the device didn't
1245         * accept the request, we attempt to carry out the equivalent action
1246         * by manually clearing the HALT feature for each endpoint in the
1247         * new altsetting.
1248         */
1249        if (manual) {
1250                int i;
1251
1252                for (i = 0; i < alt->desc.bNumEndpoints; i++) {
1253                        epaddr = alt->endpoint[i].desc.bEndpointAddress;
1254                        pipe = __create_pipe(dev,
1255                                        USB_ENDPOINT_NUMBER_MASK & epaddr) |
1256                                        (usb_endpoint_out(epaddr) ?
1257                                        USB_DIR_OUT : USB_DIR_IN);
1258
1259                        usb_clear_halt(dev, pipe);
1260                }
1261        }
1262
1263        /* 9.1.1.5: reset toggles for all endpoints in the new altsetting
1264         *
1265         * Note:
1266         * Despite EP0 is always present in all interfaces/AS, the list of
1267         * endpoints from the descriptor does not contain EP0. Due to its
1268         * omnipresence one might expect EP0 being considered "affected" by
1269         * any SetInterface request and hence assume toggles need to be reset.
1270         * However, EP0 toggles are re-synced for every individual transfer
1271         * during the SETUP stage - hence EP0 toggles are "don't care" here.
1272         * (Likewise, EP0 never "halts" on well designed devices.)
1273         */
1274        usb_enable_interface(dev, iface);
1275        if (device_is_registered(&iface->dev))
1276                usb_create_sysfs_intf_files(iface);
1277
1278        return 0;
1279}
1280EXPORT_SYMBOL_GPL(usb_set_interface);
1281
1282/**
1283 * usb_reset_configuration - lightweight device reset
1284 * @dev: the device whose configuration is being reset
1285 *
1286 * This issues a standard SET_CONFIGURATION request to the device using
1287 * the current configuration.  The effect is to reset most USB-related
1288 * state in the device, including interface altsettings (reset to zero),
1289 * endpoint halts (cleared), and data toggle (only for bulk and interrupt
1290 * endpoints).  Other usbcore state is unchanged, including bindings of
1291 * usb device drivers to interfaces.
1292 *
1293 * Because this affects multiple interfaces, avoid using this with composite
1294 * (multi-interface) devices.  Instead, the driver for each interface may
1295 * use usb_set_interface() on the interfaces it claims.  Be careful though;
1296 * some devices don't support the SET_INTERFACE request, and others won't
1297 * reset all the interface state (notably data toggles).  Resetting the whole
1298 * configuration would affect other drivers' interfaces.
1299 *
1300 * The caller must own the device lock.
1301 *
1302 * Returns zero on success, else a negative error code.
1303 */
1304int usb_reset_configuration(struct usb_device *dev)
1305{
1306        int                     i, retval;
1307        struct usb_host_config  *config;
1308
1309        if (dev->state == USB_STATE_SUSPENDED)
1310                return -EHOSTUNREACH;
1311
1312        /* caller must have locked the device and must own
1313         * the usb bus readlock (so driver bindings are stable);
1314         * calls during probe() are fine
1315         */
1316
1317        for (i = 1; i < 16; ++i) {
1318                usb_disable_endpoint(dev, i);
1319                usb_disable_endpoint(dev, i + USB_DIR_IN);
1320        }
1321
1322        config = dev->actconfig;
1323        retval = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1324                        USB_REQ_SET_CONFIGURATION, 0,
1325                        config->desc.bConfigurationValue, 0,
1326                        NULL, 0, USB_CTRL_SET_TIMEOUT);
1327        if (retval < 0)
1328                return retval;
1329
1330        dev->toggle[0] = dev->toggle[1] = 0;
1331
1332        /* re-init hc/hcd interface/endpoint state */
1333        for (i = 0; i < config->desc.bNumInterfaces; i++) {
1334                struct usb_interface *intf = config->interface[i];
1335                struct usb_host_interface *alt;
1336
1337                usb_remove_sysfs_intf_files(intf);
1338                alt = usb_altnum_to_altsetting(intf, 0);
1339
1340                /* No altsetting 0?  We'll assume the first altsetting.
1341                 * We could use a GetInterface call, but if a device is
1342                 * so non-compliant that it doesn't have altsetting 0
1343                 * then I wouldn't trust its reply anyway.
1344                 */
1345                if (!alt)
1346                        alt = &intf->altsetting[0];
1347
1348                intf->cur_altsetting = alt;
1349                usb_enable_interface(dev, intf);
1350                if (device_is_registered(&intf->dev))
1351                        usb_create_sysfs_intf_files(intf);
1352        }
1353        return 0;
1354}
1355EXPORT_SYMBOL_GPL(usb_reset_configuration);
1356
1357static void usb_release_interface(struct device *dev)
1358{
1359        struct usb_interface *intf = to_usb_interface(dev);
1360        struct usb_interface_cache *intfc =
1361                        altsetting_to_usb_interface_cache(intf->altsetting);
1362
1363        kref_put(&intfc->ref, usb_release_interface_cache);
1364        kfree(intf);
1365}
1366
1367#ifdef  CONFIG_HOTPLUG
1368static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
1369{
1370        struct usb_device *usb_dev;
1371        struct usb_interface *intf;
1372        struct usb_host_interface *alt;
1373
1374        intf = to_usb_interface(dev);
1375        usb_dev = interface_to_usbdev(intf);
1376        alt = intf->cur_altsetting;
1377
1378        if (add_uevent_var(env, "INTERFACE=%d/%d/%d",
1379                   alt->desc.bInterfaceClass,
1380                   alt->desc.bInterfaceSubClass,
1381                   alt->desc.bInterfaceProtocol))
1382                return -ENOMEM;
1383
1384        if (add_uevent_var(env,
1385                   "MODALIAS=usb:"
1386                   "v%04Xp%04Xd%04Xdc%02Xdsc%02Xdp%02Xic%02Xisc%02Xip%02X",
1387                   le16_to_cpu(usb_dev->descriptor.idVendor),
1388                   le16_to_cpu(usb_dev->descriptor.idProduct),
1389                   le16_to_cpu(usb_dev->descriptor.bcdDevice),
1390                   usb_dev->descriptor.bDeviceClass,
1391                   usb_dev->descriptor.bDeviceSubClass,
1392                   usb_dev->descriptor.bDeviceProtocol,
1393                   alt->desc.bInterfaceClass,
1394                   alt->desc.bInterfaceSubClass,
1395                   alt->desc.bInterfaceProtocol))
1396                return -ENOMEM;
1397
1398        return 0;
1399}
1400
1401#else
1402
1403static int usb_if_uevent(struct device *dev, struct kobj_uevent_env *env)
1404{
1405        return -ENODEV;
1406}
1407#endif  /* CONFIG_HOTPLUG */
1408
1409struct device_type usb_if_device_type = {
1410        .name =         "usb_interface",
1411        .release =      usb_release_interface,
1412        .uevent =       usb_if_uevent,
1413};
1414
1415static struct usb_interface_assoc_descriptor *find_iad(struct usb_device *dev,
1416                                                struct usb_host_config *config,
1417                                                u8 inum)
1418{
1419        struct usb_interface_assoc_descriptor *retval = NULL;
1420        struct usb_interface_assoc_descriptor *intf_assoc;
1421        int first_intf;
1422        int last_intf;
1423        int i;
1424
1425        for (i = 0; (i < USB_MAXIADS && config->intf_assoc[i]); i++) {
1426                intf_assoc = config->intf_assoc[i];
1427                if (intf_assoc->bInterfaceCount == 0)
1428                        continue;
1429
1430                first_intf = intf_assoc->bFirstInterface;
1431                last_intf = first_intf + (intf_assoc->bInterfaceCount - 1);
1432                if (inum >= first_intf && inum <= last_intf) {
1433                        if (!retval)
1434                                retval = intf_assoc;
1435                        else
1436                                dev_err(&dev->dev, "Interface #%d referenced"
1437                                        " by multiple IADs\n", inum);
1438                }
1439        }
1440
1441        return retval;
1442}
1443
1444/*
1445 * usb_set_configuration - Makes a particular device setting be current
1446 * @dev: the device whose configuration is being updated
1447 * @configuration: the configuration being chosen.
1448 * Context: !in_interrupt(), caller owns the device lock
1449 *
1450 * This is used to enable non-default device modes.  Not all devices
1451 * use this kind of configurability; many devices only have one
1452 * configuration.
1453 *
1454 * @configuration is the value of the configuration to be installed.
1455 * According to the USB spec (e.g. section 9.1.1.5), configuration values
1456 * must be non-zero; a value of zero indicates that the device in
1457 * unconfigured.  However some devices erroneously use 0 as one of their
1458 * configuration values.  To help manage such devices, this routine will
1459 * accept @configuration = -1 as indicating the device should be put in
1460 * an unconfigured state.
1461 *
1462 * USB device configurations may affect Linux interoperability,
1463 * power consumption and the functionality available.  For example,
1464 * the default configuration is limited to using 100mA of bus power,
1465 * so that when certain device functionality requires more power,
1466 * and the device is bus powered, that functionality should be in some
1467 * non-default device configuration.  Other device modes may also be
1468 * reflected as configuration options, such as whether two ISDN
1469 * channels are available independently; and choosing between open
1470 * standard device protocols (like CDC) or proprietary ones.
1471 *
1472 * Note that a non-authorized device (dev->authorized == 0) will only
1473 * be put in unconfigured mode.
1474 *
1475 * Note that USB has an additional level of device configurability,
1476 * associated with interfaces.  That configurability is accessed using
1477 * usb_set_interface().
1478 *
1479 * This call is synchronous. The calling context must be able to sleep,
1480 * must own the device lock, and must not hold the driver model's USB
1481 * bus mutex; usb interface driver probe() methods cannot use this routine.
1482 *
1483 * Returns zero on success, or else the status code returned by the
1484 * underlying call that failed.  On successful completion, each interface
1485 * in the original device configuration has been destroyed, and each one
1486 * in the new configuration has been probed by all relevant usb device
1487 * drivers currently known to the kernel.
1488 */
1489int usb_set_configuration(struct usb_device *dev, int configuration)
1490{
1491        int i, ret;
1492        struct usb_host_config *cp = NULL;
1493        struct usb_interface **new_interfaces = NULL;
1494        int n, nintf;
1495
1496        if (dev->authorized == 0 || configuration == -1)
1497                configuration = 0;
1498        else {
1499                for (i = 0; i < dev->descriptor.bNumConfigurations; i++) {
1500                        if (dev->config[i].desc.bConfigurationValue ==
1501                                        configuration) {
1502                                cp = &dev->config[i];
1503                                break;
1504                        }
1505                }
1506        }
1507        if ((!cp && configuration != 0))
1508                return -EINVAL;
1509
1510        /* The USB spec says configuration 0 means unconfigured.
1511         * But if a device includes a configuration numbered 0,
1512         * we will accept it as a correctly configured state.
1513         * Use -1 if you really want to unconfigure the device.
1514         */
1515        if (cp && configuration == 0)
1516                dev_warn(&dev->dev, "config 0 descriptor??\n");
1517
1518        /* Allocate memory for new interfaces before doing anything else,
1519         * so that if we run out then nothing will have changed. */
1520        n = nintf = 0;
1521        if (cp) {
1522                nintf = cp->desc.bNumInterfaces;
1523                new_interfaces = kmalloc(nintf * sizeof(*new_interfaces),
1524                                GFP_KERNEL);
1525                if (!new_interfaces) {
1526                        dev_err(&dev->dev, "Out of memory\n");
1527                        return -ENOMEM;
1528                }
1529
1530                for (; n < nintf; ++n) {
1531                        new_interfaces[n] = kzalloc(
1532                                        sizeof(struct usb_interface),
1533                                        GFP_KERNEL);
1534                        if (!new_interfaces[n]) {
1535                                dev_err(&dev->dev, "Out of memory\n");
1536                                ret = -ENOMEM;
1537free_interfaces:
1538                                while (--n >= 0)
1539                                        kfree(new_interfaces[n]);
1540                                kfree(new_interfaces);
1541                                return ret;
1542                        }
1543                }
1544
1545                i = dev->bus_mA - cp->desc.bMaxPower * 2;
1546                if (i < 0)
1547                        dev_warn(&dev->dev, "new config #%d exceeds power "
1548                                        "limit by %dmA\n",
1549                                        configuration, -i);
1550        }
1551
1552        /* Wake up the device so we can send it the Set-Config request */
1553        ret = usb_autoresume_device(dev);
1554        if (ret)
1555                goto free_interfaces;
1556
1557        /* if it's already configured, clear out old state first.
1558         * getting rid of old interfaces means unbinding their drivers.
1559         */
1560        if (dev->state != USB_STATE_ADDRESS)
1561                usb_disable_device(dev, 1);     /* Skip ep0 */
1562
1563        ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1564                              USB_REQ_SET_CONFIGURATION, 0, configuration, 0,
1565                              NULL, 0, USB_CTRL_SET_TIMEOUT);
1566        if (ret < 0) {
1567                /* All the old state is gone, so what else can we do?
1568                 * The device is probably useless now anyway.
1569                 */
1570                cp = NULL;
1571        }
1572
1573        dev->actconfig = cp;
1574        if (!cp) {
1575                usb_set_device_state(dev, USB_STATE_ADDRESS);
1576                usb_autosuspend_device(dev);
1577                goto free_interfaces;
1578        }
1579        usb_set_device_state(dev, USB_STATE_CONFIGURED);
1580
1581        /* Initialize the new interface structures and the
1582         * hc/hcd/usbcore interface/endpoint state.
1583         */
1584        for (i = 0; i < nintf; ++i) {
1585                struct usb_interface_cache *intfc;
1586                struct usb_interface *intf;
1587                struct usb_host_interface *alt;
1588
1589                cp->interface[i] = intf = new_interfaces[i];
1590                intfc = cp->intf_cache[i];
1591                intf->altsetting = intfc->altsetting;
1592                intf->num_altsetting = intfc->num_altsetting;
1593                intf->intf_assoc = find_iad(dev, cp, i);
1594                kref_get(&intfc->ref);
1595
1596                alt = usb_altnum_to_altsetting(intf, 0);
1597
1598                /* No altsetting 0?  We'll assume the first altsetting.
1599                 * We could use a GetInterface call, but if a device is
1600                 * so non-compliant that it doesn't have altsetting 0
1601                 * then I wouldn't trust its reply anyway.
1602                 */
1603                if (!alt)
1604                        alt = &intf->altsetting[0];
1605
1606                intf->cur_altsetting = alt;
1607                usb_enable_interface(dev, intf);
1608                intf->dev.parent = &dev->dev;
1609                intf->dev.driver = NULL;
1610                intf->dev.bus = &usb_bus_type;
1611                intf->dev.type = &usb_if_device_type;
1612                intf->dev.groups = usb_interface_groups;
1613                intf->dev.dma_mask = dev->dev.dma_mask;
1614                device_initialize(&intf->dev);
1615                mark_quiesced(intf);
1616                dev_set_name(&intf->dev, "%d-%s:%d.%d",
1617                        dev->bus->busnum, dev->devpath,
1618                        configuration, alt->desc.bInterfaceNumber);
1619        }
1620        kfree(new_interfaces);
1621
1622        if (cp->string == NULL)
1623                cp->string = usb_cache_string(dev, cp->desc.iConfiguration);
1624
1625        /* Now that all the interfaces are set up, register them
1626         * to trigger binding of drivers to interfaces.  probe()
1627         * routines may install different altsettings and may
1628         * claim() any interfaces not yet bound.  Many class drivers
1629         * need that: CDC, audio, video, etc.
1630         */
1631        for (i = 0; i < nintf; ++i) {
1632                struct usb_interface *intf = cp->interface[i];
1633
1634                dev_dbg(&dev->dev,
1635                        "adding %s (config #%d, interface %d)\n",
1636                        dev_name(&intf->dev), configuration,
1637                        intf->cur_altsetting->desc.bInterfaceNumber);
1638                ret = device_add(&intf->dev);
1639                if (ret != 0) {
1640                        dev_err(&dev->dev, "device_add(%s) --> %d\n",
1641                                dev_name(&intf->dev), ret);
1642                        continue;
1643                }
1644                usb_create_sysfs_intf_files(intf);
1645        }
1646
1647        usb_autosuspend_device(dev);
1648        return 0;
1649}
1650
1651struct set_config_request {
1652        struct usb_device       *udev;
1653        int                     config;
1654        struct work_struct      work;
1655};
1656
1657/* Worker routine for usb_driver_set_configuration() */
1658static void driver_set_config_work(struct work_struct *work)
1659{
1660        struct set_config_request *req =
1661                container_of(work, struct set_config_request, work);
1662
1663        usb_lock_device(req->udev);
1664        usb_set_configuration(req->udev, req->config);
1665        usb_unlock_device(req->udev);
1666        usb_put_dev(req->udev);
1667        kfree(req);
1668}
1669
1670/**
1671 * usb_driver_set_configuration - Provide a way for drivers to change device configurations
1672 * @udev: the device whose configuration is being updated
1673 * @config: the configuration being chosen.
1674 * Context: In process context, must be able to sleep
1675 *
1676 * Device interface drivers are not allowed to change device configurations.
1677 * This is because changing configurations will destroy the interface the
1678 * driver is bound to and create new ones; it would be like a floppy-disk
1679 * driver telling the computer to replace the floppy-disk drive with a
1680 * tape drive!
1681 *
1682 * Still, in certain specialized circumstances the need may arise.  This
1683 * routine gets around the normal restrictions by using a work thread to
1684 * submit the change-config request.
1685 *
1686 * Returns 0 if the request was succesfully queued, error code otherwise.
1687 * The caller has no way to know whether the queued request will eventually
1688 * succeed.
1689 */
1690int usb_driver_set_configuration(struct usb_device *udev, int config)
1691{
1692        struct set_config_request *req;
1693
1694        req = kmalloc(sizeof(*req), GFP_KERNEL);
1695        if (!req)
1696                return -ENOMEM;
1697        req->udev = udev;
1698        req->config = config;
1699        INIT_WORK(&req->work, driver_set_config_work);
1700
1701        usb_get_dev(udev);
1702        schedule_work(&req->work);
1703        return 0;
1704}
1705EXPORT_SYMBOL_GPL(usb_driver_set_configuration);
1706
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.