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