1 /* 2 * drivers/usb/core/usb.c 3 * 4 * (C) Copyright Linus Torvalds 1999 5 * (C) Copyright Johannes Erdfelt 1999-2001 6 * (C) Copyright Andreas Gal 1999 7 * (C) Copyright Gregory P. Smith 1999 8 * (C) Copyright Deti Fliegl 1999 (new USB architecture) 9 * (C) Copyright Randy Dunlap 2000 10 * (C) Copyright David Brownell 2000-2004 11 * (C) Copyright Yggdrasil Computing, Inc. 2000 12 * (usb_device_id matching changes by Adam J. Richter) 13 * (C) Copyright Greg Kroah-Hartman 2002-2003 14 * 15 * NOTE! This is not actually a driver at all, rather this is 16 * just a collection of helper routines that implement the 17 * generic USB things that the real drivers can use.. 18 * 19 * Think of this as a "USB library" rather than anything else. 20 * It should be considered a slave, with no callbacks. Callbacks 21 * are evil. 22 */ 23 24 #include <linux/module.h> 25 #include <linux/moduleparam.h> 26 #include <linux/string.h> 27 #include <linux/bitops.h> 28 #include <linux/slab.h> 29 #include <linux/interrupt.h> /* for in_interrupt() */ 30 #include <linux/kmod.h> 31 #include <linux/init.h> 32 #include <linux/spinlock.h> 33 #include <linux/errno.h> 34 #include <linux/smp_lock.h> 35 #include <linux/usb.h> 36 #include <linux/mutex.h> 37 #include <linux/workqueue.h> 38 39 #include <asm/io.h> 40 #include <asm/scatterlist.h> 41 #include <linux/mm.h> 42 #include <linux/dma-mapping.h> 43 44 #include "hcd.h" 45 #include "usb.h" 46 47 48 const char *usbcore_name = "usbcore"; 49 50 static int nousb; /* Disable USB when built into kernel image */ 51 52 /* Workqueue for autosuspend and for remote wakeup of root hubs */ 53 struct workqueue_struct *ksuspend_usb_wq; 54 55 #ifdef CONFIG_USB_SUSPEND 56 static int usb_autosuspend_delay = 2; /* Default delay value, 57 * in seconds */ 58 module_param_named(autosuspend, usb_autosuspend_delay, int, 0644); 59 MODULE_PARM_DESC(autosuspend, "default autosuspend delay"); 60 61 #else 62 #define usb_autosuspend_delay 0 63 #endif 64 65 66 /** 67 * usb_ifnum_to_if - get the interface object with a given interface number 68 * @dev: the device whose current configuration is considered 69 * @ifnum: the desired interface 70 * 71 * This walks the device descriptor for the currently active configuration 72 * and returns a pointer to the interface with that particular interface 73 * number, or null. 74 * 75 * Note that configuration descriptors are not required to assign interface 76 * numbers sequentially, so that it would be incorrect to assume that 77 * the first interface in that descriptor corresponds to interface zero. 78 * This routine helps device drivers avoid such mistakes. 79 * However, you should make sure that you do the right thing with any 80 * alternate settings available for this interfaces. 81 * 82 * Don't call this function unless you are bound to one of the interfaces 83 * on this device or you have locked the device! 84 */ 85 struct usb_interface *usb_ifnum_to_if(const struct usb_device *dev, 86 unsigned ifnum) 87 { 88 struct usb_host_config *config = dev->actconfig; 89 int i; 90 91 if (!config) 92 return NULL; 93 for (i = 0; i < config->desc.bNumInterfaces; i++) 94 if (config->interface[i]->altsetting[0] 95 .desc.bInterfaceNumber == ifnum) 96 return config->interface[i]; 97 98 return NULL; 99 } 100 101 /** 102 * usb_altnum_to_altsetting - get the altsetting structure with a given 103 * alternate setting number. 104 * @intf: the interface containing the altsetting in question 105 * @altnum: the desired alternate setting number 106 * 107 * This searches the altsetting array of the specified interface for 108 * an entry with the correct bAlternateSetting value and returns a pointer 109 * to that entry, or null. 110 * 111 * Note that altsettings need not be stored sequentially by number, so 112 * it would be incorrect to assume that the first altsetting entry in 113 * the array corresponds to altsetting zero. This routine helps device 114 * drivers avoid such mistakes. 115 * 116 * Don't call this function unless you are bound to the intf interface 117 * or you have locked the device! 118 */ 119 struct usb_host_interface *usb_altnum_to_altsetting(const struct usb_interface *intf, 120 unsigned int altnum) 121 { 122 int i; 123 124 for (i = 0; i < intf->num_altsetting; i++) { 125 if (intf->altsetting[i].desc.bAlternateSetting == altnum) 126 return &intf->altsetting[i]; 127 } 128 return NULL; 129 } 130 131 struct find_interface_arg { 132 int minor; 133 struct usb_interface *interface; 134 }; 135 136 static int __find_interface(struct device * dev, void * data) 137 { 138 struct find_interface_arg *arg = data; 139 struct usb_interface *intf; 140 141 /* can't look at usb devices, only interfaces */ 142 if (is_usb_device(dev)) 143 return 0; 144 145 intf = to_usb_interface(dev); 146 if (intf->minor != -1 && intf->minor == arg->minor) { 147 arg->interface = intf; 148 return 1; 149 } 150 return 0; 151 } 152 153 /** 154 * usb_find_interface - find usb_interface pointer for driver and device 155 * @drv: the driver whose current configuration is considered 156 * @minor: the minor number of the desired device 157 * 158 * This walks the driver device list and returns a pointer to the interface 159 * with the matching minor. Note, this only works for devices that share the 160 * USB major number. 161 */ 162 struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor) 163 { 164 struct find_interface_arg argb; 165 int retval; 166 167 argb.minor = minor; 168 argb.interface = NULL; 169 /* eat the error, it will be in argb.interface */ 170 retval = driver_for_each_device(&drv->drvwrap.driver, NULL, &argb, 171 __find_interface); 172 return argb.interface; 173 } 174 175 /** 176 * usb_release_dev - free a usb device structure when all users of it are finished. 177 * @dev: device that's been disconnected 178 * 179 * Will be called only by the device core when all users of this usb device are 180 * done. 181 */ 182 static void usb_release_dev(struct device *dev) 183 { 184 struct usb_device *udev; 185 186 udev = to_usb_device(dev); 187 188 #ifdef CONFIG_USB_SUSPEND 189 cancel_delayed_work(&udev->autosuspend); 190 flush_workqueue(ksuspend_usb_wq); 191 #endif 192 usb_destroy_configuration(udev); 193 usb_put_hcd(bus_to_hcd(udev->bus)); 194 kfree(udev->product); 195 kfree(udev->manufacturer); 196 kfree(udev->serial); 197 kfree(udev); 198 } 199 200 struct device_type usb_device_type = { 201 .name = "usb_device", 202 .release = usb_release_dev, 203 }; 204 205 #ifdef CONFIG_PM 206 207 static int ksuspend_usb_init(void) 208 { 209 ksuspend_usb_wq = create_singlethread_workqueue("ksuspend_usbd"); 210 if (!ksuspend_usb_wq) 211 return -ENOMEM; 212 return 0; 213 } 214 215 static void ksuspend_usb_cleanup(void) 216 { 217 destroy_workqueue(ksuspend_usb_wq); 218 } 219 220 #else 221 222 #define ksuspend_usb_init() 0 223 #define ksuspend_usb_cleanup() do {} while (0) 224 225 #endif /* CONFIG_PM */ 226 227 /** 228 * usb_alloc_dev - usb device constructor (usbcore-internal) 229 * @parent: hub to which device is connected; null to allocate a root hub 230 * @bus: bus used to access the device 231 * @port1: one-based index of port; ignored for root hubs 232 * Context: !in_interrupt() 233 * 234 * Only hub drivers (including virtual root hub drivers for host 235 * controllers) should ever call this. 236 * 237 * This call may not be used in a non-sleeping context. 238 */ 239 struct usb_device * 240 usb_alloc_dev(struct usb_device *parent, struct usb_bus *bus, unsigned port1) 241 { 242 struct usb_device *dev; 243 244 dev = kzalloc(sizeof(*dev), GFP_KERNEL); 245 if (!dev) 246 return NULL; 247 248 if (!usb_get_hcd(bus_to_hcd(bus))) { 249 kfree(dev); 250 return NULL; 251 } 252 253 device_initialize(&dev->dev); 254 dev->dev.bus = &usb_bus_type; 255 dev->dev.type = &usb_device_type; 256 dev->dev.dma_mask = bus->controller->dma_mask; 257 dev->state = USB_STATE_ATTACHED; 258 259 INIT_LIST_HEAD(&dev->ep0.urb_list); 260 dev->ep0.desc.bLength = USB_DT_ENDPOINT_SIZE; 261 dev->ep0.desc.bDescriptorType = USB_DT_ENDPOINT; 262 /* ep0 maxpacket comes later, from device descriptor */ 263 dev->ep_in[0] = dev->ep_out[0] = &dev->ep0; 264 265 /* Save readable and stable topology id, distinguishing devices 266 * by location for diagnostics, tools, driver model, etc. The 267 * string is a path along hub ports, from the root. Each device's 268 * dev->devpath will be stable until USB is re-cabled, and hubs 269 * are often labeled with these port numbers. The bus_id isn't 270 * as stable: bus->busnum changes easily from modprobe order, 271 * cardbus or pci hotplugging, and so on. 272 */ 273 if (unlikely(!parent)) { 274 dev->devpath[0] = '0'; 275 276 dev->dev.parent = bus->controller; 277 sprintf(&dev->dev.bus_id[0], "usb%d", bus->busnum); 278 } else { 279 /* match any labeling on the hubs; it's one-based */ 280 if (parent->devpath[0] == '0') 281 snprintf(dev->devpath, sizeof dev->devpath, 282 "%d", port1); 283 else 284 snprintf(dev->devpath, sizeof dev->devpath, 285 "%s.%d", parent->devpath, port1); 286 287 dev->dev.parent = &parent->dev; 288 sprintf(&dev->dev.bus_id[0], "%d-%s", 289 bus->busnum, dev->devpath); 290 291 /* hub driver sets up TT records */ 292 } 293 294 dev->portnum = port1; 295 dev->bus = bus; 296 dev->parent = parent; 297 INIT_LIST_HEAD(&dev->filelist); 298 299 #ifdef CONFIG_PM 300 mutex_init(&dev->pm_mutex); 301 INIT_DELAYED_WORK(&dev->autosuspend, usb_autosuspend_work); 302 dev->autosuspend_delay = usb_autosuspend_delay * HZ; 303 #endif 304 return dev; 305 } 306 307 /** 308 * usb_get_dev - increments the reference count of the usb device structure 309 * @dev: the device being referenced 310 * 311 * Each live reference to a device should be refcounted. 312 * 313 * Drivers for USB interfaces should normally record such references in 314 * their probe() methods, when they bind to an interface, and release 315 * them by calling usb_put_dev(), in their disconnect() methods. 316 * 317 * A pointer to the device with the incremented reference counter is returned. 318 */ 319 struct usb_device *usb_get_dev(struct usb_device *dev) 320 { 321 if (dev) 322 get_device(&dev->dev); 323 return dev; 324 } 325 326 /** 327 * usb_put_dev - release a use of the usb device structure 328 * @dev: device that's been disconnected 329 * 330 * Must be called when a user of a device is finished with it. When the last 331 * user of the device calls this function, the memory of the device is freed. 332 */ 333 void usb_put_dev(struct usb_device *dev) 334 { 335 if (dev) 336 put_device(&dev->dev); 337 } 338 339 /** 340 * usb_get_intf - increments the reference count of the usb interface structure 341 * @intf: the interface being referenced 342 * 343 * Each live reference to a interface must be refcounted. 344 * 345 * Drivers for USB interfaces should normally record such references in 346 * their probe() methods, when they bind to an interface, and release 347 * them by calling usb_put_intf(), in their disconnect() methods. 348 * 349 * A pointer to the interface with the incremented reference counter is 350 * returned. 351 */ 352 struct usb_interface *usb_get_intf(struct usb_interface *intf) 353 { 354 if (intf) 355 get_device(&intf->dev); 356 return intf; 357 } 358 359 /** 360 * usb_put_intf - release a use of the usb interface structure 361 * @intf: interface that's been decremented 362 * 363 * Must be called when a user of an interface is finished with it. When the 364 * last user of the interface calls this function, the memory of the interface 365 * is freed. 366 */ 367 void usb_put_intf(struct usb_interface *intf) 368 { 369 if (intf) 370 put_device(&intf->dev); 371 } 372 373 374 /* USB device locking 375 * 376 * USB devices and interfaces are locked using the semaphore in their 377 * embedded struct device. The hub driver guarantees that whenever a 378 * device is connected or disconnected, drivers are called with the 379 * USB device locked as well as their particular interface. 380 * 381 * Complications arise when several devices are to be locked at the same 382 * time. Only hub-aware drivers that are part of usbcore ever have to 383 * do this; nobody else needs to worry about it. The rule for locking 384 * is simple: 385 * 386 * When locking both a device and its parent, always lock the 387 * the parent first. 388 */ 389 390 /** 391 * usb_lock_device_for_reset - cautiously acquire the lock for a 392 * usb device structure 393 * @udev: device that's being locked 394 * @iface: interface bound to the driver making the request (optional) 395 * 396 * Attempts to acquire the device lock, but fails if the device is 397 * NOTATTACHED or SUSPENDED, or if iface is specified and the interface 398 * is neither BINDING nor BOUND. Rather than sleeping to wait for the 399 * lock, the routine polls repeatedly. This is to prevent deadlock with 400 * disconnect; in some drivers (such as usb-storage) the disconnect() 401 * or suspend() method will block waiting for a device reset to complete. 402 * 403 * Returns a negative error code for failure, otherwise 1 or 0 to indicate 404 * that the device will or will not have to be unlocked. (0 can be 405 * returned when an interface is given and is BINDING, because in that 406 * case the driver already owns the device lock.) 407 */ 408 int usb_lock_device_for_reset(struct usb_device *udev, 409 const struct usb_interface *iface) 410 { 411 unsigned long jiffies_expire = jiffies + HZ; 412 413 if (udev->state == USB_STATE_NOTATTACHED) 414 return -ENODEV; 415 if (udev->state == USB_STATE_SUSPENDED) 416 return -EHOSTUNREACH; 417 if (iface) { 418 switch (iface->condition) { 419 case USB_INTERFACE_BINDING: 420 return 0; 421 case USB_INTERFACE_BOUND: 422 break; 423 default: 424 return -EINTR; 425 } 426 } 427 428 while (usb_trylock_device(udev) != 0) { 429 430 /* If we can't acquire the lock after waiting one second, 431 * we're probably deadlocked */ 432 if (time_after(jiffies, jiffies_expire)) 433 return -EBUSY; 434 435 msleep(15); 436 if (udev->state == USB_STATE_NOTATTACHED) 437 return -ENODEV; 438 if (udev->state == USB_STATE_SUSPENDED) 439 return -EHOSTUNREACH; 440 if (iface && iface->condition != USB_INTERFACE_BOUND) 441 return -EINTR; 442 } 443 return 1; 444 } 445 446 447 static struct usb_device *match_device(struct usb_device *dev, 448 u16 vendor_id, u16 product_id) 449 { 450 struct usb_device *ret_dev = NULL; 451 int child; 452 453 dev_dbg(&dev->dev, "check for vendor %04x, product %04x ...\n", 454 le16_to_cpu(dev->descriptor.idVendor), 455 le16_to_cpu(dev->descriptor.idProduct)); 456 457 /* see if this device matches */ 458 if ((vendor_id == le16_to_cpu(dev->descriptor.idVendor)) && 459 (product_id == le16_to_cpu(dev->descriptor.idProduct))) { 460 dev_dbg(&dev->dev, "matched this device!\n"); 461 ret_dev = usb_get_dev(dev); 462 goto exit; 463 } 464 465 /* look through all of the children of this device */ 466 for (child = 0; child < dev->maxchild; ++child) { 467 if (dev->children[child]) { 468 usb_lock_device(dev->children[child]); 469 ret_dev = match_device(dev->children[child], 470 vendor_id, product_id); 471 usb_unlock_device(dev->children[child]); 472 if (ret_dev) 473 goto exit; 474 } 475 } 476 exit: 477 return ret_dev; 478 } 479 480 /** 481 * usb_find_device - find a specific usb device in the system 482 * @vendor_id: the vendor id of the device to find 483 * @product_id: the product id of the device to find 484 * 485 * Returns a pointer to a struct usb_device if such a specified usb 486 * device is present in the system currently. The usage count of the 487 * device will be incremented if a device is found. Make sure to call 488 * usb_put_dev() when the caller is finished with the device. 489 * 490 * If a device with the specified vendor and product id is not found, 491 * NULL is returned. 492 */ 493 struct usb_device *usb_find_device(u16 vendor_id, u16 product_id) 494 { 495 struct list_head *buslist; 496 struct usb_bus *bus; 497 struct usb_device *dev = NULL; 498 499 mutex_lock(&usb_bus_list_lock); 500 for (buslist = usb_bus_list.next; 501 buslist != &usb_bus_list; 502 buslist = buslist->next) { 503 bus = container_of(buslist, struct usb_bus, bus_list); 504 if (!bus->root_hub) 505 continue; 506 usb_lock_device(bus->root_hub); 507 dev = match_device(bus->root_hub, vendor_id, product_id); 508 usb_unlock_device(bus->root_hub); 509 if (dev) 510 goto exit; 511 } 512 exit: 513 mutex_unlock(&usb_bus_list_lock); 514 return dev; 515 } 516 517 /** 518 * usb_get_current_frame_number - return current bus frame number 519 * @dev: the device whose bus is being queried 520 * 521 * Returns the current frame number for the USB host controller 522 * used with the given USB device. This can be used when scheduling 523 * isochronous requests. 524 * 525 * Note that different kinds of host controller have different 526 * "scheduling horizons". While one type might support scheduling only 527 * 32 frames into the future, others could support scheduling up to 528 * 1024 frames into the future. 529 */ 530 int usb_get_current_frame_number(struct usb_device *dev) 531 { 532 return usb_hcd_get_frame_number(dev); 533 } 534 535 /*-------------------------------------------------------------------*/ 536 /* 537 * __usb_get_extra_descriptor() finds a descriptor of specific type in the 538 * extra field of the interface and endpoint descriptor structs. 539 */ 540 541 int __usb_get_extra_descriptor(char *buffer, unsigned size, 542 unsigned char type, void **ptr) 543 { 544 struct usb_descriptor_header *header; 545 546 while (size >= sizeof(struct usb_descriptor_header)) { 547 header = (struct usb_descriptor_header *)buffer; 548 549 if (header->bLength < 2) { 550 printk(KERN_ERR 551 "%s: bogus descriptor, type %d length %d\n", 552 usbcore_name, 553 header->bDescriptorType, 554 header->bLength); 555 return -1; 556 } 557 558 if (header->bDescriptorType == type) { 559 *ptr = header; 560 return 0; 561 } 562 563 buffer += header->bLength; 564 size -= header->bLength; 565 } 566 return -1; 567 } 568 569 /** 570 * usb_buffer_alloc - allocate dma-consistent buffer for URB_NO_xxx_DMA_MAP 571 * @dev: device the buffer will be used with 572 * @size: requested buffer size 573 * @mem_flags: affect whether allocation may block 574 * @dma: used to return DMA address of buffer 575 * 576 * Return value is either null (indicating no buffer could be allocated), or 577 * the cpu-space pointer to a buffer that may be used to perform DMA to the 578 * specified device. Such cpu-space buffers are returned along with the DMA 579 * address (through the pointer provided). 580 * 581 * These buffers are used with URB_NO_xxx_DMA_MAP set in urb->transfer_flags 582 * to avoid behaviors like using "DMA bounce buffers", or tying down I/O 583 * mapping hardware for long idle periods. The implementation varies between 584 * platforms, depending on details of how DMA will work to this device. 585 * Using these buffers also helps prevent cacheline sharing problems on 586 * architectures where CPU caches are not DMA-coherent. 587 * 588 * When the buffer is no longer used, free it with usb_buffer_free(). 589 */ 590 void *usb_buffer_alloc( 591 struct usb_device *dev, 592 size_t size, 593 gfp_t mem_flags, 594 dma_addr_t *dma 595 ) 596 { 597 if (!dev || !dev->bus) 598 return NULL; 599 return hcd_buffer_alloc(dev->bus, size, mem_flags, dma); 600 } 601 602 /** 603 * usb_buffer_free - free memory allocated with usb_buffer_alloc() 604 * @dev: device the buffer was used with 605 * @size: requested buffer size 606 * @addr: CPU address of buffer 607 * @dma: DMA address of buffer 608 * 609 * This reclaims an I/O buffer, letting it be reused. The memory must have 610 * been allocated using usb_buffer_alloc(), and the parameters must match 611 * those provided in that allocation request. 612 */ 613 void usb_buffer_free( 614 struct usb_device *dev, 615 size_t size, 616 void *addr, 617 dma_addr_t dma 618 ) 619 { 620 if (!dev || !dev->bus) 621 return; 622 if (!addr) 623 return; 624 hcd_buffer_free(dev->bus, size, addr, dma); 625 } 626 627 /** 628 * usb_buffer_map - create DMA mapping(s) for an urb 629 * @urb: urb whose transfer_buffer/setup_packet will be mapped 630 * 631 * Return value is either null (indicating no buffer could be mapped), or 632 * the parameter. URB_NO_TRANSFER_DMA_MAP and URB_NO_SETUP_DMA_MAP are 633 * added to urb->transfer_flags if the operation succeeds. If the device 634 * is connected to this system through a non-DMA controller, this operation 635 * always succeeds. 636 * 637 * This call would normally be used for an urb which is reused, perhaps 638 * as the target of a large periodic transfer, with usb_buffer_dmasync() 639 * calls to synchronize memory and dma state. 640 * 641 * Reverse the effect of this call with usb_buffer_unmap(). 642 */ 643 #if 0 644 struct urb *usb_buffer_map(struct urb *urb) 645 { 646 struct usb_bus *bus; 647 struct device *controller; 648 649 if (!urb 650 || !urb->dev 651 || !(bus = urb->dev->bus) 652 || !(controller = bus->controller)) 653 return NULL; 654 655 if (controller->dma_mask) { 656 urb->transfer_dma = dma_map_single(controller, 657 urb->transfer_buffer, urb->transfer_buffer_length, 658 usb_pipein(urb->pipe) 659 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 660 if (usb_pipecontrol(urb->pipe)) 661 urb->setup_dma = dma_map_single(controller, 662 urb->setup_packet, 663 sizeof(struct usb_ctrlrequest), 664 DMA_TO_DEVICE); 665 // FIXME generic api broken like pci, can't report errors 666 // if (urb->transfer_dma == DMA_ADDR_INVALID) return 0; 667 } else 668 urb->transfer_dma = ~0; 669 urb->transfer_flags |= (URB_NO_TRANSFER_DMA_MAP 670 | URB_NO_SETUP_DMA_MAP); 671 return urb; 672 } 673 #endif /* 0 */ 674 675 /* XXX DISABLED, no users currently. If you wish to re-enable this 676 * XXX please determine whether the sync is to transfer ownership of 677 * XXX the buffer from device to cpu or vice verse, and thusly use the 678 * XXX appropriate _for_{cpu,device}() method. -DaveM 679 */ 680 #if 0 681 682 /** 683 * usb_buffer_dmasync - synchronize DMA and CPU view of buffer(s) 684 * @urb: urb whose transfer_buffer/setup_packet will be synchronized 685 */ 686 void usb_buffer_dmasync(struct urb *urb) 687 { 688 struct usb_bus *bus; 689 struct device *controller; 690 691 if (!urb 692 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 693 || !urb->dev 694 || !(bus = urb->dev->bus) 695 || !(controller = bus->controller)) 696 return; 697 698 if (controller->dma_mask) { 699 dma_sync_single(controller, 700 urb->transfer_dma, urb->transfer_buffer_length, 701 usb_pipein(urb->pipe) 702 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 703 if (usb_pipecontrol(urb->pipe)) 704 dma_sync_single(controller, 705 urb->setup_dma, 706 sizeof(struct usb_ctrlrequest), 707 DMA_TO_DEVICE); 708 } 709 } 710 #endif 711 712 /** 713 * usb_buffer_unmap - free DMA mapping(s) for an urb 714 * @urb: urb whose transfer_buffer will be unmapped 715 * 716 * Reverses the effect of usb_buffer_map(). 717 */ 718 #if 0 719 void usb_buffer_unmap(struct urb *urb) 720 { 721 struct usb_bus *bus; 722 struct device *controller; 723 724 if (!urb 725 || !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP) 726 || !urb->dev 727 || !(bus = urb->dev->bus) 728 || !(controller = bus->controller)) 729 return; 730 731 if (controller->dma_mask) { 732 dma_unmap_single(controller, 733 urb->transfer_dma, urb->transfer_buffer_length, 734 usb_pipein(urb->pipe) 735 ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 736 if (usb_pipecontrol(urb->pipe)) 737 dma_unmap_single(controller, 738 urb->setup_dma, 739 sizeof(struct usb_ctrlrequest), 740 DMA_TO_DEVICE); 741 } 742 urb->transfer_flags &= ~(URB_NO_TRANSFER_DMA_MAP 743 | URB_NO_SETUP_DMA_MAP); 744 } 745 #endif /* 0 */ 746 747 /** 748 * usb_buffer_map_sg - create scatterlist DMA mapping(s) for an endpoint 749 * @dev: device to which the scatterlist will be mapped 750 * @pipe: endpoint defining the mapping direction 751 * @sg: the scatterlist to map 752 * @nents: the number of entries in the scatterlist 753 * 754 * Return value is either < 0 (indicating no buffers could be mapped), or 755 * the number of DMA mapping array entries in the scatterlist. 756 * 757 * The caller is responsible for placing the resulting DMA addresses from 758 * the scatterlist into URB transfer buffer pointers, and for setting the 759 * URB_NO_TRANSFER_DMA_MAP transfer flag in each of those URBs. 760 * 761 * Top I/O rates come from queuing URBs, instead of waiting for each one 762 * to complete before starting the next I/O. This is particularly easy 763 * to do with scatterlists. Just allocate and submit one URB for each DMA 764 * mapping entry returned, stopping on the first error or when all succeed. 765 * Better yet, use the usb_sg_*() calls, which do that (and more) for you. 766 * 767 * This call would normally be used when translating scatterlist requests, 768 * rather than usb_buffer_map(), since on some hardware (with IOMMUs) it 769 * may be able to coalesce mappings for improved I/O efficiency. 770 * 771 * Reverse the effect of this call with usb_buffer_unmap_sg(). 772 */ 773 int usb_buffer_map_sg(const struct usb_device *dev, unsigned pipe, 774 struct scatterlist *sg, int nents) 775 { 776 struct usb_bus *bus; 777 struct device *controller; 778 779 if (!dev 780 || usb_pipecontrol(pipe) 781 || !(bus = dev->bus) 782 || !(controller = bus->controller) 783 || !controller->dma_mask) 784 return -1; 785 786 // FIXME generic api broken like pci, can't report errors 787 return dma_map_sg(controller, sg, nents, 788 usb_pipein(pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 789 } 790 791 /* XXX DISABLED, no users currently. If you wish to re-enable this 792 * XXX please determine whether the sync is to transfer ownership of 793 * XXX the buffer from device to cpu or vice verse, and thusly use the 794 * XXX appropriate _for_{cpu,device}() method. -DaveM 795 */ 796 #if 0 797 798 /** 799 * usb_buffer_dmasync_sg - synchronize DMA and CPU view of scatterlist buffer(s) 800 * @dev: device to which the scatterlist will be mapped 801 * @pipe: endpoint defining the mapping direction 802 * @sg: the scatterlist to synchronize 803 * @n_hw_ents: the positive return value from usb_buffer_map_sg 804 * 805 * Use this when you are re-using a scatterlist's data buffers for 806 * another USB request. 807 */ 808 void usb_buffer_dmasync_sg(const struct usb_device *dev, unsigned pipe, 809 struct scatterlist *sg, int n_hw_ents) 810 { 811 struct usb_bus *bus; 812 struct device *controller; 813 814 if (!dev 815 || !(bus = dev->bus) 816 || !(controller = bus->controller) 817 || !controller->dma_mask) 818 return; 819 820 dma_sync_sg(controller, sg, n_hw_ents, 821 usb_pipein(pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 822 } 823 #endif 824 825 /** 826 * usb_buffer_unmap_sg - free DMA mapping(s) for a scatterlist 827 * @dev: device to which the scatterlist will be mapped 828 * @pipe: endpoint defining the mapping direction 829 * @sg: the scatterlist to unmap 830 * @n_hw_ents: the positive return value from usb_buffer_map_sg 831 * 832 * Reverses the effect of usb_buffer_map_sg(). 833 */ 834 void usb_buffer_unmap_sg(const struct usb_device *dev, unsigned pipe, 835 struct scatterlist *sg, int n_hw_ents) 836 { 837 struct usb_bus *bus; 838 struct device *controller; 839 840 if (!dev 841 || !(bus = dev->bus) 842 || !(controller = bus->controller) 843 || !controller->dma_mask) 844 return; 845 846 dma_unmap_sg(controller, sg, n_hw_ents, 847 usb_pipein(pipe) ? DMA_FROM_DEVICE : DMA_TO_DEVICE); 848 } 849 850 /* format to disable USB on kernel command line is: nousb */ 851 __module_param_call("", nousb, param_set_bool, param_get_bool, &nousb, 0444); 852 853 /* 854 * for external read access to <nousb> 855 */ 856 int usb_disabled(void) 857 { 858 return nousb; 859 } 860 861 /* 862 * Init 863 */ 864 static int __init usb_init(void) 865 { 866 int retval; 867 if (nousb) { 868 pr_info("%s: USB support disabled\n", usbcore_name); 869 return 0; 870 } 871 872 retval = ksuspend_usb_init(); 873 if (retval) 874 goto out; 875 retval = bus_register(&usb_bus_type); 876 if (retval) 877 goto bus_register_failed; 878 retval = usb_host_init(); 879 if (retval) 880 goto host_init_failed; 881 retval = usb_major_init(); 882 if (retval) 883 goto major_init_failed; 884 retval = usb_register(&usbfs_driver); 885 if (retval) 886 goto driver_register_failed; 887 retval = usb_devio_init(); 888 if (retval) 889 goto usb_devio_init_failed; 890 retval = usbfs_init(); 891 if (retval) 892 goto fs_init_failed; 893 retval = usb_hub_init(); 894 if (retval) 895 goto hub_init_failed; 896 retval = usb_register_device_driver(&usb_generic_driver, THIS_MODULE); 897 if (!retval) 898 goto out; 899 900 usb_hub_cleanup(); 901 hub_init_failed: 902 usbfs_cleanup(); 903 fs_init_failed: 904 usb_devio_cleanup(); 905 usb_devio_init_failed: 906 usb_deregister(&usbfs_driver); 907 driver_register_failed: 908 usb_major_cleanup(); 909 major_init_failed: 910 usb_host_cleanup(); 911 host_init_failed: 912 bus_unregister(&usb_bus_type); 913 bus_register_failed: 914 ksuspend_usb_cleanup(); 915 out: 916 return retval; 917 } 918 919 /* 920 * Cleanup 921 */ 922 static void __exit usb_exit(void) 923 { 924 /* This will matter if shutdown/reboot does exitcalls. */ 925 if (nousb) 926 return; 927 928 usb_deregister_device_driver(&usb_generic_driver); 929 usb_major_cleanup(); 930 usbfs_cleanup(); 931 usb_deregister(&usbfs_driver); 932 usb_devio_cleanup(); 933 usb_hub_cleanup(); 934 usb_host_cleanup(); 935 bus_unregister(&usb_bus_type); 936 ksuspend_usb_cleanup(); 937 } 938 939 subsys_initcall(usb_init); 940 module_exit(usb_exit); 941 942 /* 943 * USB may be built into the kernel or be built as modules. 944 * These symbols are exported for device (or host controller) 945 * driver modules to use. 946 */ 947 948 EXPORT_SYMBOL(usb_disabled); 949 950 EXPORT_SYMBOL_GPL(usb_get_intf); 951 EXPORT_SYMBOL_GPL(usb_put_intf); 952 953 EXPORT_SYMBOL(usb_put_dev); 954 EXPORT_SYMBOL(usb_get_dev); 955 EXPORT_SYMBOL(usb_hub_tt_clear_buffer); 956 957 EXPORT_SYMBOL(usb_lock_device_for_reset); 958 959 EXPORT_SYMBOL(usb_find_interface); 960 EXPORT_SYMBOL(usb_ifnum_to_if); 961 EXPORT_SYMBOL(usb_altnum_to_altsetting); 962 963 EXPORT_SYMBOL(__usb_get_extra_descriptor); 964 965 EXPORT_SYMBOL(usb_find_device); 966 EXPORT_SYMBOL(usb_get_current_frame_number); 967 968 EXPORT_SYMBOL(usb_buffer_alloc); 969 EXPORT_SYMBOL(usb_buffer_free); 970 971 #if 0 972 EXPORT_SYMBOL(usb_buffer_map); 973 EXPORT_SYMBOL(usb_buffer_dmasync); 974 EXPORT_SYMBOL(usb_buffer_unmap); 975 #endif 976 977 EXPORT_SYMBOL(usb_buffer_map_sg); 978 #if 0 979 EXPORT_SYMBOL(usb_buffer_dmasync_sg); 980 #endif 981 EXPORT_SYMBOL(usb_buffer_unmap_sg); 982 983 MODULE_LICENSE("GPL"); 984