1 /* 2 * (C) Copyright Linus Torvalds 1999 3 * (C) Copyright Johannes Erdfelt 1999-2001 4 * (C) Copyright Andreas Gal 1999 5 * (C) Copyright Gregory P. Smith 1999 6 * (C) Copyright Deti Fliegl 1999 7 * (C) Copyright Randy Dunlap 2000 8 * (C) Copyright David Brownell 2000-2002 9 * 10 * This program is free software; you can redistribute it and/or modify it 11 * under the terms of the GNU General Public License as published by the 12 * Free Software Foundation; either version 2 of the License, or (at your 13 * option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, but 16 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 18 * for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software Foundation, 22 * Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 23 */ 24 25 #include <linux/module.h> 26 #include <linux/version.h> 27 #include <linux/kernel.h> 28 #include <linux/slab.h> 29 #include <linux/completion.h> 30 #include <linux/utsname.h> 31 #include <linux/mm.h> 32 #include <asm/io.h> 33 #include <linux/device.h> 34 #include <linux/dma-mapping.h> 35 #include <linux/mutex.h> 36 #include <asm/irq.h> 37 #include <asm/byteorder.h> 38 #include <asm/unaligned.h> 39 #include <linux/platform_device.h> 40 #include <linux/workqueue.h> 41 42 #include <linux/usb.h> 43 44 #include "usb.h" 45 #include "hcd.h" 46 #include "hub.h" 47 48 49 /*-------------------------------------------------------------------------*/ 50 51 /* 52 * USB Host Controller Driver framework 53 * 54 * Plugs into usbcore (usb_bus) and lets HCDs share code, minimizing 55 * HCD-specific behaviors/bugs. 56 * 57 * This does error checks, tracks devices and urbs, and delegates to a 58 * "hc_driver" only for code (and data) that really needs to know about 59 * hardware differences. That includes root hub registers, i/o queues, 60 * and so on ... but as little else as possible. 61 * 62 * Shared code includes most of the "root hub" code (these are emulated, 63 * though each HC's hardware works differently) and PCI glue, plus request 64 * tracking overhead. The HCD code should only block on spinlocks or on 65 * hardware handshaking; blocking on software events (such as other kernel 66 * threads releasing resources, or completing actions) is all generic. 67 * 68 * Happens the USB 2.0 spec says this would be invisible inside the "USBD", 69 * and includes mostly a "HCDI" (HCD Interface) along with some APIs used 70 * only by the hub driver ... and that neither should be seen or used by 71 * usb client device drivers. 72 * 73 * Contributors of ideas or unattributed patches include: David Brownell, 74 * Roman Weissgaerber, Rory Bolt, Greg Kroah-Hartman, ... 75 * 76 * HISTORY: 77 * 2002-02-21 Pull in most of the usb_bus support from usb.c; some 78 * associated cleanup. "usb_hcd" still != "usb_bus". 79 * 2001-12-12 Initial patch version for Linux 2.5.1 kernel. 80 */ 81 82 /*-------------------------------------------------------------------------*/ 83 84 /* Keep track of which host controller drivers are loaded */ 85 unsigned long usb_hcds_loaded; 86 EXPORT_SYMBOL_GPL(usb_hcds_loaded); 87 88 /* host controllers we manage */ 89 LIST_HEAD (usb_bus_list); 90 EXPORT_SYMBOL_GPL (usb_bus_list); 91 92 /* used when allocating bus numbers */ 93 #define USB_MAXBUS 64 94 struct usb_busmap { 95 unsigned long busmap [USB_MAXBUS / (8*sizeof (unsigned long))]; 96 }; 97 static struct usb_busmap busmap; 98 99 /* used when updating list of hcds */ 100 DEFINE_MUTEX(usb_bus_list_lock); /* exported only for usbfs */ 101 EXPORT_SYMBOL_GPL (usb_bus_list_lock); 102 103 /* used for controlling access to virtual root hubs */ 104 static DEFINE_SPINLOCK(hcd_root_hub_lock); 105 106 /* used when updating an endpoint's URB list */ 107 static DEFINE_SPINLOCK(hcd_urb_list_lock); 108 109 /* used to protect against unlinking URBs after the device is gone */ 110 static DEFINE_SPINLOCK(hcd_urb_unlink_lock); 111 112 /* wait queue for synchronous unlinks */ 113 DECLARE_WAIT_QUEUE_HEAD(usb_kill_urb_queue); 114 115 static inline int is_root_hub(struct usb_device *udev) 116 { 117 return (udev->parent == NULL); 118 } 119 120 /*-------------------------------------------------------------------------*/ 121 122 /* 123 * Sharable chunks of root hub code. 124 */ 125 126 /*-------------------------------------------------------------------------*/ 127 128 #define KERNEL_REL ((LINUX_VERSION_CODE >> 16) & 0x0ff) 129 #define KERNEL_VER ((LINUX_VERSION_CODE >> 8) & 0x0ff) 130 131 /* usb 2.0 root hub device descriptor */ 132 static const u8 usb2_rh_dev_descriptor [18] = { 133 0x12, /* __u8 bLength; */ 134 0x01, /* __u8 bDescriptorType; Device */ 135 0x00, 0x02, /* __le16 bcdUSB; v2.0 */ 136 137 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ 138 0x00, /* __u8 bDeviceSubClass; */ 139 0x00, /* __u8 bDeviceProtocol; [ usb 2.0 no TT ] */ 140 0x40, /* __u8 bMaxPacketSize0; 64 Bytes */ 141 142 0x6b, 0x1d, /* __le16 idVendor; Linux Foundation */ 143 0x02, 0x00, /* __le16 idProduct; device 0x0002 */ 144 KERNEL_VER, KERNEL_REL, /* __le16 bcdDevice */ 145 146 0x03, /* __u8 iManufacturer; */ 147 0x02, /* __u8 iProduct; */ 148 0x01, /* __u8 iSerialNumber; */ 149 0x01 /* __u8 bNumConfigurations; */ 150 }; 151 152 /* no usb 2.0 root hub "device qualifier" descriptor: one speed only */ 153 154 /* usb 1.1 root hub device descriptor */ 155 static const u8 usb11_rh_dev_descriptor [18] = { 156 0x12, /* __u8 bLength; */ 157 0x01, /* __u8 bDescriptorType; Device */ 158 0x10, 0x01, /* __le16 bcdUSB; v1.1 */ 159 160 0x09, /* __u8 bDeviceClass; HUB_CLASSCODE */ 161 0x00, /* __u8 bDeviceSubClass; */ 162 0x00, /* __u8 bDeviceProtocol; [ low/full speeds only ] */ 163 0x40, /* __u8 bMaxPacketSize0; 64 Bytes */ 164 165 0x6b, 0x1d, /* __le16 idVendor; Linux Foundation */ 166 0x01, 0x00, /* __le16 idProduct; device 0x0001 */ 167 KERNEL_VER, KERNEL_REL, /* __le16 bcdDevice */ 168 169 0x03, /* __u8 iManufacturer; */ 170 0x02, /* __u8 iProduct; */ 171 0x01, /* __u8 iSerialNumber; */ 172 0x01 /* __u8 bNumConfigurations; */ 173 }; 174 175 176 /*-------------------------------------------------------------------------*/ 177 178 /* Configuration descriptors for our root hubs */ 179 180 static const u8 fs_rh_config_descriptor [] = { 181 182 /* one configuration */ 183 0x09, /* __u8 bLength; */ 184 0x02, /* __u8 bDescriptorType; Configuration */ 185 0x19, 0x00, /* __le16 wTotalLength; */ 186 0x01, /* __u8 bNumInterfaces; (1) */ 187 0x01, /* __u8 bConfigurationValue; */ 188 0x00, /* __u8 iConfiguration; */ 189 0xc0, /* __u8 bmAttributes; 190 Bit 7: must be set, 191 6: Self-powered, 192 5: Remote wakeup, 193 4..0: resvd */ 194 0x00, /* __u8 MaxPower; */ 195 196 /* USB 1.1: 197 * USB 2.0, single TT organization (mandatory): 198 * one interface, protocol 0 199 * 200 * USB 2.0, multiple TT organization (optional): 201 * two interfaces, protocols 1 (like single TT) 202 * and 2 (multiple TT mode) ... config is 203 * sometimes settable 204 * NOT IMPLEMENTED 205 */ 206 207 /* one interface */ 208 0x09, /* __u8 if_bLength; */ 209 0x04, /* __u8 if_bDescriptorType; Interface */ 210 0x00, /* __u8 if_bInterfaceNumber; */ 211 0x00, /* __u8 if_bAlternateSetting; */ 212 0x01, /* __u8 if_bNumEndpoints; */ 213 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ 214 0x00, /* __u8 if_bInterfaceSubClass; */ 215 0x00, /* __u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ 216 0x00, /* __u8 if_iInterface; */ 217 218 /* one endpoint (status change endpoint) */ 219 0x07, /* __u8 ep_bLength; */ 220 0x05, /* __u8 ep_bDescriptorType; Endpoint */ 221 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ 222 0x03, /* __u8 ep_bmAttributes; Interrupt */ 223 0x02, 0x00, /* __le16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8) */ 224 0xff /* __u8 ep_bInterval; (255ms -- usb 2.0 spec) */ 225 }; 226 227 static const u8 hs_rh_config_descriptor [] = { 228 229 /* one configuration */ 230 0x09, /* __u8 bLength; */ 231 0x02, /* __u8 bDescriptorType; Configuration */ 232 0x19, 0x00, /* __le16 wTotalLength; */ 233 0x01, /* __u8 bNumInterfaces; (1) */ 234 0x01, /* __u8 bConfigurationValue; */ 235 0x00, /* __u8 iConfiguration; */ 236 0xc0, /* __u8 bmAttributes; 237 Bit 7: must be set, 238 6: Self-powered, 239 5: Remote wakeup, 240 4..0: resvd */ 241 0x00, /* __u8 MaxPower; */ 242 243 /* USB 1.1: 244 * USB 2.0, single TT organization (mandatory): 245 * one interface, protocol 0 246 * 247 * USB 2.0, multiple TT organization (optional): 248 * two interfaces, protocols 1 (like single TT) 249 * and 2 (multiple TT mode) ... config is 250 * sometimes settable 251 * NOT IMPLEMENTED 252 */ 253 254 /* one interface */ 255 0x09, /* __u8 if_bLength; */ 256 0x04, /* __u8 if_bDescriptorType; Interface */ 257 0x00, /* __u8 if_bInterfaceNumber; */ 258 0x00, /* __u8 if_bAlternateSetting; */ 259 0x01, /* __u8 if_bNumEndpoints; */ 260 0x09, /* __u8 if_bInterfaceClass; HUB_CLASSCODE */ 261 0x00, /* __u8 if_bInterfaceSubClass; */ 262 0x00, /* __u8 if_bInterfaceProtocol; [usb1.1 or single tt] */ 263 0x00, /* __u8 if_iInterface; */ 264 265 /* one endpoint (status change endpoint) */ 266 0x07, /* __u8 ep_bLength; */ 267 0x05, /* __u8 ep_bDescriptorType; Endpoint */ 268 0x81, /* __u8 ep_bEndpointAddress; IN Endpoint 1 */ 269 0x03, /* __u8 ep_bmAttributes; Interrupt */ 270 /* __le16 ep_wMaxPacketSize; 1 + (MAX_ROOT_PORTS / 8) 271 * see hub.c:hub_configure() for details. */ 272 (USB_MAXCHILDREN + 1 + 7) / 8, 0x00, 273 0x0c /* __u8 ep_bInterval; (256ms -- usb 2.0 spec) */ 274 }; 275 276 /*-------------------------------------------------------------------------*/ 277 278 /* 279 * helper routine for returning string descriptors in UTF-16LE 280 * input can actually be ISO-8859-1; ASCII is its 7-bit subset 281 */ 282 static int ascii2utf (char *s, u8 *utf, int utfmax) 283 { 284 int retval; 285 286 for (retval = 0; *s && utfmax > 1; utfmax -= 2, retval += 2) { 287 *utf++ = *s++; 288 *utf++ = 0; 289 } 290 if (utfmax > 0) { 291 *utf = *s; 292 ++retval; 293 } 294 return retval; 295 } 296 297 /* 298 * rh_string - provides manufacturer, product and serial strings for root hub 299 * @id: the string ID number (1: serial number, 2: product, 3: vendor) 300 * @hcd: the host controller for this root hub 301 * @data: return packet in UTF-16 LE 302 * @len: length of the return packet 303 * 304 * Produces either a manufacturer, product or serial number string for the 305 * virtual root hub device. 306 */ 307 static int rh_string ( 308 int id, 309 struct usb_hcd *hcd, 310 u8 *data, 311 int len 312 ) { 313 char buf [100]; 314 315 // language ids 316 if (id == 0) { 317 buf[0] = 4; buf[1] = 3; /* 4 bytes string data */ 318 buf[2] = 0x09; buf[3] = 0x04; /* MSFT-speak for "en-us" */ 319 len = min (len, 4); 320 memcpy (data, buf, len); 321 return len; 322 323 // serial number 324 } else if (id == 1) { 325 strlcpy (buf, hcd->self.bus_name, sizeof buf); 326 327 // product description 328 } else if (id == 2) { 329 strlcpy (buf, hcd->product_desc, sizeof buf); 330 331 // id 3 == vendor description 332 } else if (id == 3) { 333 snprintf (buf, sizeof buf, "%s %s %s", init_utsname()->sysname, 334 init_utsname()->release, hcd->driver->description); 335 336 // unsupported IDs --> "protocol stall" 337 } else 338 return -EPIPE; 339 340 switch (len) { /* All cases fall through */ 341 default: 342 len = 2 + ascii2utf (buf, data + 2, len - 2); 343 case 2: 344 data [1] = 3; /* type == string */ 345 case 1: 346 data [0] = 2 * (strlen (buf) + 1); 347 case 0: 348 ; /* Compiler wants a statement here */ 349 } 350 return len; 351 } 352 353 354 /* Root hub control transfers execute synchronously */ 355 static int rh_call_control (struct usb_hcd *hcd, struct urb *urb) 356 { 357 struct usb_ctrlrequest *cmd; 358 u16 typeReq, wValue, wIndex, wLength; 359 u8 *ubuf = urb->transfer_buffer; 360 u8 tbuf [sizeof (struct usb_hub_descriptor)] 361 __attribute__((aligned(4))); 362 const u8 *bufp = tbuf; 363 int len = 0; 364 int status; 365 int n; 366 u8 patch_wakeup = 0; 367 u8 patch_protocol = 0; 368 369 might_sleep(); 370 371 spin_lock_irq(&hcd_root_hub_lock); 372 status = usb_hcd_link_urb_to_ep(hcd, urb); 373 spin_unlock_irq(&hcd_root_hub_lock); 374 if (status) 375 return status; 376 urb->hcpriv = hcd; /* Indicate it's queued */ 377 378 cmd = (struct usb_ctrlrequest *) urb->setup_packet; 379 typeReq = (cmd->bRequestType << 8) | cmd->bRequest; 380 wValue = le16_to_cpu (cmd->wValue); 381 wIndex = le16_to_cpu (cmd->wIndex); 382 wLength = le16_to_cpu (cmd->wLength); 383 384 if (wLength > urb->transfer_buffer_length) 385 goto error; 386 387 urb->actual_length = 0; 388 switch (typeReq) { 389 390 /* DEVICE REQUESTS */ 391 392 /* The root hub's remote wakeup enable bit is implemented using 393 * driver model wakeup flags. If this system supports wakeup 394 * through USB, userspace may change the default "allow wakeup" 395 * policy through sysfs or these calls. 396 * 397 * Most root hubs support wakeup from downstream devices, for 398 * runtime power management (disabling USB clocks and reducing 399 * VBUS power usage). However, not all of them do so; silicon, 400 * board, and BIOS bugs here are not uncommon, so these can't 401 * be treated quite like external hubs. 402 * 403 * Likewise, not all root hubs will pass wakeup events upstream, 404 * to wake up the whole system. So don't assume root hub and 405 * controller capabilities are identical. 406 */ 407 408 case DeviceRequest | USB_REQ_GET_STATUS: 409 tbuf [0] = (device_may_wakeup(&hcd->self.root_hub->dev) 410 << USB_DEVICE_REMOTE_WAKEUP) 411 | (1 << USB_DEVICE_SELF_POWERED); 412 tbuf [1] = 0; 413 len = 2; 414 break; 415 case DeviceOutRequest | USB_REQ_CLEAR_FEATURE: 416 if (wValue == USB_DEVICE_REMOTE_WAKEUP) 417 device_set_wakeup_enable(&hcd->self.root_hub->dev, 0); 418 else 419 goto error; 420 break; 421 case DeviceOutRequest | USB_REQ_SET_FEATURE: 422 if (device_can_wakeup(&hcd->self.root_hub->dev) 423 && wValue == USB_DEVICE_REMOTE_WAKEUP) 424 device_set_wakeup_enable(&hcd->self.root_hub->dev, 1); 425 else 426 goto error; 427 break; 428 case DeviceRequest | USB_REQ_GET_CONFIGURATION: 429 tbuf [0] = 1; 430 len = 1; 431 /* FALLTHROUGH */ 432 case DeviceOutRequest | USB_REQ_SET_CONFIGURATION: 433 break; 434 case DeviceRequest | USB_REQ_GET_DESCRIPTOR: 435 switch (wValue & 0xff00) { 436 case USB_DT_DEVICE << 8: 437 if (hcd->driver->flags & HCD_USB2) 438 bufp = usb2_rh_dev_descriptor; 439 else if (hcd->driver->flags & HCD_USB11) 440 bufp = usb11_rh_dev_descriptor; 441 else 442 goto error; 443 len = 18; 444 if (hcd->has_tt) 445 patch_protocol = 1; 446 break; 447 case USB_DT_CONFIG << 8: 448 if (hcd->driver->flags & HCD_USB2) { 449 bufp = hs_rh_config_descriptor; 450 len = sizeof hs_rh_config_descriptor; 451 } else { 452 bufp = fs_rh_config_descriptor; 453 len = sizeof fs_rh_config_descriptor; 454 } 455 if (device_can_wakeup(&hcd->self.root_hub->dev)) 456 patch_wakeup = 1; 457 break; 458 case USB_DT_STRING << 8: 459 n = rh_string (wValue & 0xff, hcd, ubuf, wLength); 460 if (n < 0) 461 goto error; 462 urb->actual_length = n; 463 break; 464 default: 465 goto error; 466 } 467 break; 468 case DeviceRequest | USB_REQ_GET_INTERFACE: 469 tbuf [0] = 0; 470 len = 1; 471 /* FALLTHROUGH */ 472 case DeviceOutRequest | USB_REQ_SET_INTERFACE: 473 break; 474 case DeviceOutRequest | USB_REQ_SET_ADDRESS: 475 // wValue == urb->dev->devaddr 476 dev_dbg (hcd->self.controller, "root hub device address %d\n", 477 wValue); 478 break; 479 480 /* INTERFACE REQUESTS (no defined feature/status flags) */ 481 482 /* ENDPOINT REQUESTS */ 483 484 case EndpointRequest | USB_REQ_GET_STATUS: 485 // ENDPOINT_HALT flag 486 tbuf [0] = 0; 487 tbuf [1] = 0; 488 len = 2; 489 /* FALLTHROUGH */ 490 case EndpointOutRequest | USB_REQ_CLEAR_FEATURE: 491 case EndpointOutRequest | USB_REQ_SET_FEATURE: 492 dev_dbg (hcd->self.controller, "no endpoint features yet\n"); 493 break; 494 495 /* CLASS REQUESTS (and errors) */ 496 497 default: 498 /* non-generic request */ 499 switch (typeReq) { 500 case GetHubStatus: 501 case GetPortStatus: 502 len = 4; 503 break; 504 case GetHubDescriptor: 505 len = sizeof (struct usb_hub_descriptor); 506 break; 507 } 508 status = hcd->driver->hub_control (hcd, 509 typeReq, wValue, wIndex, 510 tbuf, wLength); 511 break; 512 error: 513 /* "protocol stall" on error */ 514 status = -EPIPE; 515 } 516 517 if (status) { 518 len = 0; 519 if (status != -EPIPE) { 520 dev_dbg (hcd->self.controller, 521 "CTRL: TypeReq=0x%x val=0x%x " 522 "idx=0x%x len=%d ==> %d\n", 523 typeReq, wValue, wIndex, 524 wLength, status); 525 } 526 } 527 if (len) { 528 if (urb->transfer_buffer_length < len) 529 len = urb->transfer_buffer_length; 530 urb->actual_length = len; 531 // always USB_DIR_IN, toward host 532 memcpy (ubuf, bufp, len); 533 534 /* report whether RH hardware supports remote wakeup */ 535 if (patch_wakeup && 536 len > offsetof (struct usb_config_descriptor, 537 bmAttributes)) 538 ((struct usb_config_descriptor *)ubuf)->bmAttributes 539 |= USB_CONFIG_ATT_WAKEUP; 540 541 /* report whether RH hardware has an integrated TT */ 542 if (patch_protocol && 543 len > offsetof(struct usb_device_descriptor, 544 bDeviceProtocol)) 545 ((struct usb_device_descriptor *) ubuf)-> 546 bDeviceProtocol = 1; 547 } 548 549 /* any errors get returned through the urb completion */ 550 spin_lock_irq(&hcd_root_hub_lock); 551 usb_hcd_unlink_urb_from_ep(hcd, urb); 552 553 /* This peculiar use of spinlocks echoes what real HC drivers do. 554 * Avoiding calls to local_irq_disable/enable makes the code 555 * RT-friendly. 556 */ 557 spin_unlock(&hcd_root_hub_lock); 558 usb_hcd_giveback_urb(hcd, urb, status); 559 spin_lock(&hcd_root_hub_lock); 560 561 spin_unlock_irq(&hcd_root_hub_lock); 562 return 0; 563 } 564 565 /*-------------------------------------------------------------------------*/ 566 567 /* 568 * Root Hub interrupt transfers are polled using a timer if the 569 * driver requests it; otherwise the driver is responsible for 570 * calling usb_hcd_poll_rh_status() when an event occurs. 571 * 572 * Completions are called in_interrupt(), but they may or may not 573 * be in_irq(). 574 */ 575 void usb_hcd_poll_rh_status(struct usb_hcd *hcd) 576 { 577 struct urb *urb; 578 int length; 579 unsigned long flags; 580 char buffer[4]; /* Any root hubs with > 31 ports? */ 581 582 if (unlikely(!hcd->rh_registered)) 583 return; 584 if (!hcd->uses_new_polling && !hcd->status_urb) 585 return; 586 587 length = hcd->driver->hub_status_data(hcd, buffer); 588 if (length > 0) { 589 590 /* try to complete the status urb */ 591 spin_lock_irqsave(&hcd_root_hub_lock, flags); 592 urb = hcd->status_urb; 593 if (urb) { 594 hcd->poll_pending = 0; 595 hcd->status_urb = NULL; 596 urb->actual_length = length; 597 memcpy(urb->transfer_buffer, buffer, length); 598 599 usb_hcd_unlink_urb_from_ep(hcd, urb); 600 spin_unlock(&hcd_root_hub_lock); 601 usb_hcd_giveback_urb(hcd, urb, 0); 602 spin_lock(&hcd_root_hub_lock); 603 } else { 604 length = 0; 605 hcd->poll_pending = 1; 606 } 607 spin_unlock_irqrestore(&hcd_root_hub_lock, flags); 608 } 609 610 /* The USB 2.0 spec says 256 ms. This is close enough and won't 611 * exceed that limit if HZ is 100. The math is more clunky than 612 * maybe expected, this is to make sure that all timers for USB devices 613 * fire at the same time to give the CPU a break inbetween */ 614 if (hcd->uses_new_polling ? hcd->poll_rh : 615 (length == 0 && hcd->status_urb != NULL)) 616 mod_timer (&hcd->rh_timer, (jiffies/(HZ/4) + 1) * (HZ/4)); 617 } 618 EXPORT_SYMBOL_GPL(usb_hcd_poll_rh_status); 619 620 /* timer callback */ 621 static void rh_timer_func (unsigned long _hcd) 622 { 623 usb_hcd_poll_rh_status((struct usb_hcd *) _hcd); 624 } 625 626 /*-------------------------------------------------------------------------*/ 627 628 static int rh_queue_status (struct usb_hcd *hcd, struct urb *urb) 629 { 630 int retval; 631 unsigned long flags; 632 int len = 1 + (urb->dev->maxchild / 8); 633 634 spin_lock_irqsave (&hcd_root_hub_lock, flags); 635 if (hcd->status_urb || urb->transfer_buffer_length < len) { 636 dev_dbg (hcd->self.controller, "not queuing rh status urb\n"); 637 retval = -EINVAL; 638 goto done; 639 } 640 641 retval = usb_hcd_link_urb_to_ep(hcd, urb); 642 if (retval) 643 goto done; 644 645 hcd->status_urb = urb; 646 urb->hcpriv = hcd; /* indicate it's queued */ 647 if (!hcd->uses_new_polling) 648 mod_timer(&hcd->rh_timer, (jiffies/(HZ/4) + 1) * (HZ/4)); 649 650 /* If a status change has already occurred, report it ASAP */ 651 else if (hcd->poll_pending) 652 mod_timer(&hcd->rh_timer, jiffies); 653 retval = 0; 654 done: 655 spin_unlock_irqrestore (&hcd_root_hub_lock, flags); 656 return retval; 657 } 658 659 static int rh_urb_enqueue (struct usb_hcd *hcd, struct urb *urb) 660 { 661 if (usb_endpoint_xfer_int(&urb->ep->desc)) 662 return rh_queue_status (hcd, urb); 663 if (usb_endpoint_xfer_control(&urb->ep->desc)) 664 return rh_call_control (hcd, urb); 665 return -EINVAL; 666 } 667 668 /*-------------------------------------------------------------------------*/ 669 670 /* Unlinks of root-hub control URBs are legal, but they don't do anything 671 * since these URBs always execute synchronously. 672 */ 673 static int usb_rh_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) 674 { 675 unsigned long flags; 676 int rc; 677 678 spin_lock_irqsave(&hcd_root_hub_lock, flags); 679 rc = usb_hcd_check_unlink_urb(hcd, urb, status); 680 if (rc) 681 goto done; 682 683 if (usb_endpoint_num(&urb->ep->desc) == 0) { /* Control URB */ 684 ; /* Do nothing */ 685 686 } else { /* Status URB */ 687 if (!hcd->uses_new_polling) 688 del_timer (&hcd->rh_timer); 689 if (urb == hcd->status_urb) { 690 hcd->status_urb = NULL; 691 usb_hcd_unlink_urb_from_ep(hcd, urb); 692 693 spin_unlock(&hcd_root_hub_lock); 694 usb_hcd_giveback_urb(hcd, urb, status); 695 spin_lock(&hcd_root_hub_lock); 696 } 697 } 698 done: 699 spin_unlock_irqrestore(&hcd_root_hub_lock, flags); 700 return rc; 701 } 702 703 704 705 /* 706 * Show & store the current value of authorized_default 707 */ 708 static ssize_t usb_host_authorized_default_show(struct device *dev, 709 struct device_attribute *attr, 710 char *buf) 711 { 712 struct usb_device *rh_usb_dev = to_usb_device(dev); 713 struct usb_bus *usb_bus = rh_usb_dev->bus; 714 struct usb_hcd *usb_hcd; 715 716 if (usb_bus == NULL) /* FIXME: not sure if this case is possible */ 717 return -ENODEV; 718 usb_hcd = bus_to_hcd(usb_bus); 719 return snprintf(buf, PAGE_SIZE, "%u\n", usb_hcd->authorized_default); 720 } 721 722 static ssize_t usb_host_authorized_default_store(struct device *dev, 723 struct device_attribute *attr, 724 const char *buf, size_t size) 725 { 726 ssize_t result; 727 unsigned val; 728 struct usb_device *rh_usb_dev = to_usb_device(dev); 729 struct usb_bus *usb_bus = rh_usb_dev->bus; 730 struct usb_hcd *usb_hcd; 731 732 if (usb_bus == NULL) /* FIXME: not sure if this case is possible */ 733 return -ENODEV; 734 usb_hcd = bus_to_hcd(usb_bus); 735 result = sscanf(buf, "%u\n", &val); 736 if (result == 1) { 737 usb_hcd->authorized_default = val? 1 : 0; 738 result = size; 739 } 740 else 741 result = -EINVAL; 742 return result; 743 } 744 745 static DEVICE_ATTR(authorized_default, 0644, 746 usb_host_authorized_default_show, 747 usb_host_authorized_default_store); 748 749 750 /* Group all the USB bus attributes */ 751 static struct attribute *usb_bus_attrs[] = { 752 &dev_attr_authorized_default.attr, 753 NULL, 754 }; 755 756 static struct attribute_group usb_bus_attr_group = { 757 .name = NULL, /* we want them in the same directory */ 758 .attrs = usb_bus_attrs, 759 }; 760 761 762 763 /*-------------------------------------------------------------------------*/ 764 765 static struct class *usb_host_class; 766 767 int usb_host_init(void) 768 { 769 int retval = 0; 770 771 usb_host_class = class_create(THIS_MODULE, "usb_host"); 772 if (IS_ERR(usb_host_class)) 773 retval = PTR_ERR(usb_host_class); 774 return retval; 775 } 776 777 void usb_host_cleanup(void) 778 { 779 class_destroy(usb_host_class); 780 } 781 782 /** 783 * usb_bus_init - shared initialization code 784 * @bus: the bus structure being initialized 785 * 786 * This code is used to initialize a usb_bus structure, memory for which is 787 * separately managed. 788 */ 789 static void usb_bus_init (struct usb_bus *bus) 790 { 791 memset (&bus->devmap, 0, sizeof(struct usb_devmap)); 792 793 bus->devnum_next = 1; 794 795 bus->root_hub = NULL; 796 bus->busnum = -1; 797 bus->bandwidth_allocated = 0; 798 bus->bandwidth_int_reqs = 0; 799 bus->bandwidth_isoc_reqs = 0; 800 801 INIT_LIST_HEAD (&bus->bus_list); 802 } 803 804 /*-------------------------------------------------------------------------*/ 805 806 /** 807 * usb_register_bus - registers the USB host controller with the usb core 808 * @bus: pointer to the bus to register 809 * Context: !in_interrupt() 810 * 811 * Assigns a bus number, and links the controller into usbcore data 812 * structures so that it can be seen by scanning the bus list. 813 */ 814 static int usb_register_bus(struct usb_bus *bus) 815 { 816 int result = -E2BIG; 817 int busnum; 818 819 mutex_lock(&usb_bus_list_lock); 820 busnum = find_next_zero_bit (busmap.busmap, USB_MAXBUS, 1); 821 if (busnum >= USB_MAXBUS) { 822 printk (KERN_ERR "%s: too many buses\n", usbcore_name); 823 goto error_find_busnum; 824 } 825 set_bit (busnum, busmap.busmap); 826 bus->busnum = busnum; 827 828 bus->dev = device_create(usb_host_class, bus->controller, MKDEV(0, 0), 829 bus, "usb_host%d", busnum); 830 result = PTR_ERR(bus->dev); 831 if (IS_ERR(bus->dev)) 832 goto error_create_class_dev; 833 834 /* Add it to the local list of buses */ 835 list_add (&bus->bus_list, &usb_bus_list); 836 mutex_unlock(&usb_bus_list_lock); 837 838 usb_notify_add_bus(bus); 839 840 dev_info (bus->controller, "new USB bus registered, assigned bus " 841 "number %d\n", bus->busnum); 842 return 0; 843 844 error_create_class_dev: 845 clear_bit(busnum, busmap.busmap); 846 error_find_busnum: 847 mutex_unlock(&usb_bus_list_lock); 848 return result; 849 } 850 851 /** 852 * usb_deregister_bus - deregisters the USB host controller 853 * @bus: pointer to the bus to deregister 854 * Context: !in_interrupt() 855 * 856 * Recycles the bus number, and unlinks the controller from usbcore data 857 * structures so that it won't be seen by scanning the bus list. 858 */ 859 static void usb_deregister_bus (struct usb_bus *bus) 860 { 861 dev_info (bus->controller, "USB bus %d deregistered\n", bus->busnum); 862 863 /* 864 * NOTE: make sure that all the devices are removed by the 865 * controller code, as well as having it call this when cleaning 866 * itself up 867 */ 868 mutex_lock(&usb_bus_list_lock); 869 list_del (&bus->bus_list); 870 mutex_unlock(&usb_bus_list_lock); 871 872 usb_notify_remove_bus(bus); 873 874 clear_bit (bus->busnum, busmap.busmap); 875 876 device_unregister(bus->dev); 877 } 878 879 /** 880 * register_root_hub - called by usb_add_hcd() to register a root hub 881 * @hcd: host controller for this root hub 882 * 883 * This function registers the root hub with the USB subsystem. It sets up 884 * the device properly in the device tree and then calls usb_new_device() 885 * to register the usb device. It also assigns the root hub's USB address 886 * (always 1). 887 */ 888 static int register_root_hub(struct usb_hcd *hcd) 889 { 890 struct device *parent_dev = hcd->self.controller; 891 struct usb_device *usb_dev = hcd->self.root_hub; 892 const int devnum = 1; 893 int retval; 894 895 usb_dev->devnum = devnum; 896 usb_dev->bus->devnum_next = devnum + 1; 897 memset (&usb_dev->bus->devmap.devicemap, 0, 898 sizeof usb_dev->bus->devmap.devicemap); 899 set_bit (devnum, usb_dev->bus->devmap.devicemap); 900 usb_set_device_state(usb_dev, USB_STATE_ADDRESS); 901 902 mutex_lock(&usb_bus_list_lock); 903 904 usb_dev->ep0.desc.wMaxPacketSize = __constant_cpu_to_le16(64); 905 retval = usb_get_device_descriptor(usb_dev, USB_DT_DEVICE_SIZE); 906 if (retval != sizeof usb_dev->descriptor) { 907 mutex_unlock(&usb_bus_list_lock); 908 dev_dbg (parent_dev, "can't read %s device descriptor %d\n", 909 dev_name(&usb_dev->dev), retval); 910 return (retval < 0) ? retval : -EMSGSIZE; 911 } 912 913 retval = usb_new_device (usb_dev); 914 if (retval) { 915 dev_err (parent_dev, "can't register root hub for %s, %d\n", 916 dev_name(&usb_dev->dev), retval); 917 } 918 mutex_unlock(&usb_bus_list_lock); 919 920 if (retval == 0) { 921 spin_lock_irq (&hcd_root_hub_lock); 922 hcd->rh_registered = 1; 923 spin_unlock_irq (&hcd_root_hub_lock); 924 925 /* Did the HC die before the root hub was registered? */ 926 if (hcd->state == HC_STATE_HALT) 927 usb_hc_died (hcd); /* This time clean up */ 928 } 929 930 return retval; 931 } 932 933 934 /*-------------------------------------------------------------------------*/ 935 936 /** 937 * usb_calc_bus_time - approximate periodic transaction time in nanoseconds 938 * @speed: from dev->speed; USB_SPEED_{LOW,FULL,HIGH} 939 * @is_input: true iff the transaction sends data to the host 940 * @isoc: true for isochronous transactions, false for interrupt ones 941 * @bytecount: how many bytes in the transaction. 942 * 943 * Returns approximate bus time in nanoseconds for a periodic transaction. 944 * See USB 2.0 spec section 5.11.3; only periodic transfers need to be 945 * scheduled in software, this function is only used for such scheduling. 946 */ 947 long usb_calc_bus_time (int speed, int is_input, int isoc, int bytecount) 948 { 949 unsigned long tmp; 950 951 switch (speed) { 952 case USB_SPEED_LOW: /* INTR only */ 953 if (is_input) { 954 tmp = (67667L * (31L + 10L * BitTime (bytecount))) / 1000L; 955 return (64060L + (2 * BW_HUB_LS_SETUP) + BW_HOST_DELAY + tmp); 956 } else { 957 tmp = (66700L * (31L + 10L * BitTime (bytecount))) / 1000L; 958 return (64107L + (2 * BW_HUB_LS_SETUP) + BW_HOST_DELAY + tmp); 959 } 960 case USB_SPEED_FULL: /* ISOC or INTR */ 961 if (isoc) { 962 tmp = (8354L * (31L + 10L * BitTime (bytecount))) / 1000L; 963 return (((is_input) ? 7268L : 6265L) + BW_HOST_DELAY + tmp); 964 } else { 965 tmp = (8354L * (31L + 10L * BitTime (bytecount))) / 1000L; 966 return (9107L + BW_HOST_DELAY + tmp); 967 } 968 case USB_SPEED_HIGH: /* ISOC or INTR */ 969 // FIXME adjust for input vs output 970 if (isoc) 971 tmp = HS_NSECS_ISO (bytecount); 972 else 973 tmp = HS_NSECS (bytecount); 974 return tmp; 975 default: 976 pr_debug ("%s: bogus device speed!\n", usbcore_name); 977 return -1; 978 } 979 } 980 EXPORT_SYMBOL_GPL(usb_calc_bus_time); 981 982 983 /*-------------------------------------------------------------------------*/ 984 985 /* 986 * Generic HC operations. 987 */ 988 989 /*-------------------------------------------------------------------------*/ 990 991 /** 992 * usb_hcd_link_urb_to_ep - add an URB to its endpoint queue 993 * @hcd: host controller to which @urb was submitted 994 * @urb: URB being submitted 995 * 996 * Host controller drivers should call this routine in their enqueue() 997 * method. The HCD's private spinlock must be held and interrupts must 998 * be disabled. The actions carried out here are required for URB 999 * submission, as well as for endpoint shutdown and for usb_kill_urb. 1000 * 1001 * Returns 0 for no error, otherwise a negative error code (in which case 1002 * the enqueue() method must fail). If no error occurs but enqueue() fails 1003 * anyway, it must call usb_hcd_unlink_urb_from_ep() before releasing 1004 * the private spinlock and returning. 1005 */ 1006 int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb) 1007 { 1008 int rc = 0; 1009 1010 spin_lock(&hcd_urb_list_lock); 1011 1012 /* Check that the URB isn't being killed */ 1013 if (unlikely(urb->reject)) { 1014 rc = -EPERM; 1015 goto done; 1016 } 1017 1018 if (unlikely(!urb->ep->enabled)) { 1019 rc = -ENOENT; 1020 goto done; 1021 } 1022 1023 if (unlikely(!urb->dev->can_submit)) { 1024 rc = -EHOSTUNREACH; 1025 goto done; 1026 } 1027 1028 /* 1029 * Check the host controller's state and add the URB to the 1030 * endpoint's queue. 1031 */ 1032 switch (hcd->state) { 1033 case HC_STATE_RUNNING: 1034 case HC_STATE_RESUMING: 1035 urb->unlinked = 0; 1036 list_add_tail(&urb->urb_list, &urb->ep->urb_list); 1037 break; 1038 default: 1039 rc = -ESHUTDOWN; 1040 goto done; 1041 } 1042 done: 1043 spin_unlock(&hcd_urb_list_lock); 1044 return rc; 1045 } 1046 EXPORT_SYMBOL_GPL(usb_hcd_link_urb_to_ep); 1047 1048 /** 1049 * usb_hcd_check_unlink_urb - check whether an URB may be unlinked 1050 * @hcd: host controller to which @urb was submitted 1051 * @urb: URB being checked for unlinkability 1052 * @status: error code to store in @urb if the unlink succeeds 1053 * 1054 * Host controller drivers should call this routine in their dequeue() 1055 * method. The HCD's private spinlock must be held and interrupts must 1056 * be disabled. The actions carried out here are required for making 1057 * sure than an unlink is valid. 1058 * 1059 * Returns 0 for no error, otherwise a negative error code (in which case 1060 * the dequeue() method must fail). The possible error codes are: 1061 * 1062 * -EIDRM: @urb was not submitted or has already completed. 1063 * The completion function may not have been called yet. 1064 * 1065 * -EBUSY: @urb has already been unlinked. 1066 */ 1067 int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb, 1068 int status) 1069 { 1070 struct list_head *tmp; 1071 1072 /* insist the urb is still queued */ 1073 list_for_each(tmp, &urb->ep->urb_list) { 1074 if (tmp == &urb->urb_list) 1075 break; 1076 } 1077 if (tmp != &urb->urb_list) 1078 return -EIDRM; 1079 1080 /* Any status except -EINPROGRESS means something already started to 1081 * unlink this URB from the hardware. So there's no more work to do. 1082 */ 1083 if (urb->unlinked) 1084 return -EBUSY; 1085 urb->unlinked = status; 1086 1087 /* IRQ setup can easily be broken so that USB controllers 1088 * never get completion IRQs ... maybe even the ones we need to 1089 * finish unlinking the initial failed usb_set_address() 1090 * or device descriptor fetch. 1091 */ 1092 if (!test_bit(HCD_FLAG_SAW_IRQ, &hcd->flags) && 1093 !is_root_hub(urb->dev)) { 1094 dev_warn(hcd->self.controller, "Unlink after no-IRQ? " 1095 "Controller is probably using the wrong IRQ.\n"); 1096 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags); 1097 } 1098 1099 return 0; 1100 } 1101 EXPORT_SYMBOL_GPL(usb_hcd_check_unlink_urb); 1102 1103 /** 1104 * usb_hcd_unlink_urb_from_ep - remove an URB from its endpoint queue 1105 * @hcd: host controller to which @urb was submitted 1106 * @urb: URB being unlinked 1107 * 1108 * Host controller drivers should call this routine before calling 1109 * usb_hcd_giveback_urb(). The HCD's private spinlock must be held and 1110 * interrupts must be disabled. The actions carried out here are required 1111 * for URB completion. 1112 */ 1113 void usb_hcd_unlink_urb_from_ep(struct usb_hcd *hcd, struct urb *urb) 1114 { 1115 /* clear all state linking urb to this dev (and hcd) */ 1116 spin_lock(&hcd_urb_list_lock); 1117 list_del_init(&urb->urb_list); 1118 spin_unlock(&hcd_urb_list_lock); 1119 } 1120 EXPORT_SYMBOL_GPL(usb_hcd_unlink_urb_from_ep); 1121 1122 /* 1123 * Some usb host controllers can only perform dma using a small SRAM area. 1124 * The usb core itself is however optimized for host controllers that can dma 1125 * using regular system memory - like pci devices doing bus mastering. 1126 * 1127 * To support host controllers with limited dma capabilites we provide dma 1128 * bounce buffers. This feature can be enabled using the HCD_LOCAL_MEM flag. 1129 * For this to work properly the host controller code must first use the 1130 * function dma_declare_coherent_memory() to point out which memory area 1131 * that should be used for dma allocations. 1132 * 1133 * The HCD_LOCAL_MEM flag then tells the usb code to allocate all data for 1134 * dma using dma_alloc_coherent() which in turn allocates from the memory 1135 * area pointed out with dma_declare_coherent_memory(). 1136 * 1137 * So, to summarize... 1138 * 1139 * - We need "local" memory, canonical example being 1140 * a small SRAM on a discrete controller being the 1141 * only memory that the controller can read ... 1142 * (a) "normal" kernel memory is no good, and 1143 * (b) there's not enough to share 1144 * 1145 * - The only *portable* hook for such stuff in the 1146 * DMA framework is dma_declare_coherent_memory() 1147 * 1148 * - So we use that, even though the primary requirement 1149 * is that the memory be "local" (hence addressible 1150 * by that device), not "coherent". 1151 * 1152 */ 1153 1154 static int hcd_alloc_coherent(struct usb_bus *bus, 1155 gfp_t mem_flags, dma_addr_t *dma_handle, 1156 void **vaddr_handle, size_t size, 1157 enum dma_data_direction dir) 1158 { 1159 unsigned char *vaddr; 1160 1161 vaddr = hcd_buffer_alloc(bus, size + sizeof(vaddr), 1162 mem_flags, dma_handle); 1163 if (!vaddr) 1164 return -ENOMEM; 1165 1166 /* 1167 * Store the virtual address of the buffer at the end 1168 * of the allocated dma buffer. The size of the buffer 1169 * may be uneven so use unaligned functions instead 1170 * of just rounding up. It makes sense to optimize for 1171 * memory footprint over access speed since the amount 1172 * of memory available for dma may be limited. 1173 */ 1174 put_unaligned((unsigned long)*vaddr_handle, 1175 (unsigned long *)(vaddr + size)); 1176 1177 if (dir == DMA_TO_DEVICE) 1178 memcpy(vaddr, *vaddr_handle, size); 1179 1180 *vaddr_handle = vaddr; 1181 return 0; 1182 } 1183 1184 static void hcd_free_coherent(struct usb_bus *bus, dma_addr_t *dma_handle, 1185 void **vaddr_handle, size_t size, 1186 enum dma_data_direction dir) 1187 { 1188 unsigned char *vaddr = *vaddr_handle; 1189 1190 vaddr = (void *)get_unaligned((unsigned long *)(vaddr + size)); 1191 1192 if (dir == DMA_FROM_DEVICE) 1193 memcpy(vaddr, *vaddr_handle, size); 1194 1195 hcd_buffer_free(bus, size + sizeof(vaddr), *vaddr_handle, *dma_handle); 1196 1197 *vaddr_handle = vaddr; 1198 *dma_handle = 0; 1199 } 1200 1201 static int map_urb_for_dma(struct usb_hcd *hcd, struct urb *urb, 1202 gfp_t mem_flags) 1203 { 1204 enum dma_data_direction dir; 1205 int ret = 0; 1206 1207 /* Map the URB's buffers for DMA access. 1208 * Lower level HCD code should use *_dma exclusively, 1209 * unless it uses pio or talks to another transport. 1210 */ 1211 if (is_root_hub(urb->dev)) 1212 return 0; 1213 1214 if (usb_endpoint_xfer_control(&urb->ep->desc) 1215 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) { 1216 if (hcd->self.uses_dma) 1217 urb->setup_dma = dma_map_single( 1218 hcd->self.controller, 1219 urb->setup_packet, 1220 sizeof(struct usb_ctrlrequest), 1221 DMA_TO_DEVICE); 1222 else if (hcd->driver->flags & HCD_LOCAL_MEM) 1223 ret = hcd_alloc_coherent( 1224 urb->dev->bus, mem_flags, 1225 &urb->setup_dma, 1226 (void **)&urb->setup_packet, 1227 sizeof(struct usb_ctrlrequest), 1228 DMA_TO_DEVICE); 1229 } 1230 1231 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; 1232 if (ret == 0 && urb->transfer_buffer_length != 0 1233 && !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) { 1234 if (hcd->self.uses_dma) 1235 urb->transfer_dma = dma_map_single ( 1236 hcd->self.controller, 1237 urb->transfer_buffer, 1238 urb->transfer_buffer_length, 1239 dir); 1240 else if (hcd->driver->flags & HCD_LOCAL_MEM) { 1241 ret = hcd_alloc_coherent( 1242 urb->dev->bus, mem_flags, 1243 &urb->transfer_dma, 1244 &urb->transfer_buffer, 1245 urb->transfer_buffer_length, 1246 dir); 1247 1248 if (ret && usb_endpoint_xfer_control(&urb->ep->desc) 1249 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) 1250 hcd_free_coherent(urb->dev->bus, 1251 &urb->setup_dma, 1252 (void **)&urb->setup_packet, 1253 sizeof(struct usb_ctrlrequest), 1254 DMA_TO_DEVICE); 1255 } 1256 } 1257 return ret; 1258 } 1259 1260 static void unmap_urb_for_dma(struct usb_hcd *hcd, struct urb *urb) 1261 { 1262 enum dma_data_direction dir; 1263 1264 if (is_root_hub(urb->dev)) 1265 return; 1266 1267 if (usb_endpoint_xfer_control(&urb->ep->desc) 1268 && !(urb->transfer_flags & URB_NO_SETUP_DMA_MAP)) { 1269 if (hcd->self.uses_dma) 1270 dma_unmap_single(hcd->self.controller, urb->setup_dma, 1271 sizeof(struct usb_ctrlrequest), 1272 DMA_TO_DEVICE); 1273 else if (hcd->driver->flags & HCD_LOCAL_MEM) 1274 hcd_free_coherent(urb->dev->bus, &urb->setup_dma, 1275 (void **)&urb->setup_packet, 1276 sizeof(struct usb_ctrlrequest), 1277 DMA_TO_DEVICE); 1278 } 1279 1280 dir = usb_urb_dir_in(urb) ? DMA_FROM_DEVICE : DMA_TO_DEVICE; 1281 if (urb->transfer_buffer_length != 0 1282 && !(urb->transfer_flags & URB_NO_TRANSFER_DMA_MAP)) { 1283 if (hcd->self.uses_dma) 1284 dma_unmap_single(hcd->self.controller, 1285 urb->transfer_dma, 1286 urb->transfer_buffer_length, 1287 dir); 1288 else if (hcd->driver->flags & HCD_LOCAL_MEM) 1289 hcd_free_coherent(urb->dev->bus, &urb->transfer_dma, 1290 &urb->transfer_buffer, 1291 urb->transfer_buffer_length, 1292 dir); 1293 } 1294 } 1295 1296 /*-------------------------------------------------------------------------*/ 1297 1298 /* may be called in any context with a valid urb->dev usecount 1299 * caller surrenders "ownership" of urb 1300 * expects usb_submit_urb() to have sanity checked and conditioned all 1301 * inputs in the urb 1302 */ 1303 int usb_hcd_submit_urb (struct urb *urb, gfp_t mem_flags) 1304 { 1305 int status; 1306 struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); 1307 1308 /* increment urb's reference count as part of giving it to the HCD 1309 * (which will control it). HCD guarantees that it either returns 1310 * an error or calls giveback(), but not both. 1311 */ 1312 usb_get_urb(urb); 1313 atomic_inc(&urb->use_count); 1314 atomic_inc(&urb->dev->urbnum); 1315 usbmon_urb_submit(&hcd->self, urb); 1316 1317 /* NOTE requirements on root-hub callers (usbfs and the hub 1318 * driver, for now): URBs' urb->transfer_buffer must be 1319 * valid and usb_buffer_{sync,unmap}() not be needed, since 1320 * they could clobber root hub response data. Also, control 1321 * URBs must be submitted in process context with interrupts 1322 * enabled. 1323 */ 1324 status = map_urb_for_dma(hcd, urb, mem_flags); 1325 if (unlikely(status)) { 1326 usbmon_urb_submit_error(&hcd->self, urb, status); 1327 goto error; 1328 } 1329 1330 if (is_root_hub(urb->dev)) 1331 status = rh_urb_enqueue(hcd, urb); 1332 else 1333 status = hcd->driver->urb_enqueue(hcd, urb, mem_flags); 1334 1335 if (unlikely(status)) { 1336 usbmon_urb_submit_error(&hcd->self, urb, status); 1337 unmap_urb_for_dma(hcd, urb); 1338 error: 1339 urb->hcpriv = NULL; 1340 INIT_LIST_HEAD(&urb->urb_list); 1341 atomic_dec(&urb->use_count); 1342 atomic_dec(&urb->dev->urbnum); 1343 if (urb->reject) 1344 wake_up(&usb_kill_urb_queue); 1345 usb_put_urb(urb); 1346 } 1347 return status; 1348 } 1349 1350 /*-------------------------------------------------------------------------*/ 1351 1352 /* this makes the hcd giveback() the urb more quickly, by kicking it 1353 * off hardware queues (which may take a while) and returning it as 1354 * soon as practical. we've already set up the urb's return status, 1355 * but we can't know if the callback completed already. 1356 */ 1357 static int unlink1(struct usb_hcd *hcd, struct urb *urb, int status) 1358 { 1359 int value; 1360 1361 if (is_root_hub(urb->dev)) 1362 value = usb_rh_urb_dequeue(hcd, urb, status); 1363 else { 1364 1365 /* The only reason an HCD might fail this call is if 1366 * it has not yet fully queued the urb to begin with. 1367 * Such failures should be harmless. */ 1368 value = hcd->driver->urb_dequeue(hcd, urb, status); 1369 } 1370 return value; 1371 } 1372 1373 /* 1374 * called in any context 1375 * 1376 * caller guarantees urb won't be recycled till both unlink() 1377 * and the urb's completion function return 1378 */ 1379 int usb_hcd_unlink_urb (struct urb *urb, int status) 1380 { 1381 struct usb_hcd *hcd; 1382 int retval = -EIDRM; 1383 unsigned long flags; 1384 1385 /* Prevent the device and bus from going away while 1386 * the unlink is carried out. If they are already gone 1387 * then urb->use_count must be 0, since disconnected 1388 * devices can't have any active URBs. 1389 */ 1390 spin_lock_irqsave(&hcd_urb_unlink_lock, flags); 1391 if (atomic_read(&urb->use_count) > 0) { 1392 retval = 0; 1393 usb_get_dev(urb->dev); 1394 } 1395 spin_unlock_irqrestore(&hcd_urb_unlink_lock, flags); 1396 if (retval == 0) { 1397 hcd = bus_to_hcd(urb->dev->bus); 1398 retval = unlink1(hcd, urb, status); 1399 usb_put_dev(urb->dev); 1400 } 1401 1402 if (retval == 0) 1403 retval = -EINPROGRESS; 1404 else if (retval != -EIDRM && retval != -EBUSY) 1405 dev_dbg(&urb->dev->dev, "hcd_unlink_urb %p fail %d\n", 1406 urb, retval); 1407 return retval; 1408 } 1409 1410 /*-------------------------------------------------------------------------*/ 1411 1412 /** 1413 * usb_hcd_giveback_urb - return URB from HCD to device driver 1414 * @hcd: host controller returning the URB 1415 * @urb: urb being returned to the USB device driver. 1416 * @status: completion status code for the URB. 1417 * Context: in_interrupt() 1418 * 1419 * This hands the URB from HCD to its USB device driver, using its 1420 * completion function. The HCD has freed all per-urb resources 1421 * (and is done using urb->hcpriv). It also released all HCD locks; 1422 * the device driver won't cause problems if it frees, modifies, 1423 * or resubmits this URB. 1424 * 1425 * If @urb was unlinked, the value of @status will be overridden by 1426 * @urb->unlinked. Erroneous short transfers are detected in case 1427 * the HCD hasn't checked for them. 1428 */ 1429 void usb_hcd_giveback_urb(struct usb_hcd *hcd, struct urb *urb, int status) 1430 { 1431 urb->hcpriv = NULL; 1432 if (unlikely(urb->unlinked)) 1433 status = urb->unlinked; 1434 else if (unlikely((urb->transfer_flags & URB_SHORT_NOT_OK) && 1435 urb->actual_length < urb->transfer_buffer_length && 1436 !status)) 1437 status = -EREMOTEIO; 1438 1439 unmap_urb_for_dma(hcd, urb); 1440 usbmon_urb_complete(&hcd->self, urb, status); 1441 usb_unanchor_urb(urb); 1442 1443 /* pass ownership to the completion handler */ 1444 urb->status = status; 1445 urb->complete (urb); 1446 atomic_dec (&urb->use_count); 1447 if (unlikely (urb->reject)) 1448 wake_up (&usb_kill_urb_queue); 1449 usb_put_urb (urb); 1450 } 1451 EXPORT_SYMBOL_GPL(usb_hcd_giveback_urb); 1452 1453 /*-------------------------------------------------------------------------*/ 1454 1455 /* Cancel all URBs pending on this endpoint and wait for the endpoint's 1456 * queue to drain completely. The caller must first insure that no more 1457 * URBs can be submitted for this endpoint. 1458 */ 1459 void usb_hcd_flush_endpoint(struct usb_device *udev, 1460 struct usb_host_endpoint *ep) 1461 { 1462 struct usb_hcd *hcd; 1463 struct urb *urb; 1464 1465 if (!ep) 1466 return; 1467 might_sleep(); 1468 hcd = bus_to_hcd(udev->bus); 1469 1470 /* No more submits can occur */ 1471 spin_lock_irq(&hcd_urb_list_lock); 1472 rescan: 1473 list_for_each_entry (urb, &ep->urb_list, urb_list) { 1474 int is_in; 1475 1476 if (urb->unlinked) 1477 continue; 1478 usb_get_urb (urb); 1479 is_in = usb_urb_dir_in(urb); 1480 spin_unlock(&hcd_urb_list_lock); 1481 1482 /* kick hcd */ 1483 unlink1(hcd, urb, -ESHUTDOWN); 1484 dev_dbg (hcd->self.controller, 1485 "shutdown urb %p ep%d%s%s\n", 1486 urb, usb_endpoint_num(&ep->desc), 1487 is_in ? "in" : "out", 1488 ({ char *s; 1489 1490 switch (usb_endpoint_type(&ep->desc)) { 1491 case USB_ENDPOINT_XFER_CONTROL: 1492 s = ""; break; 1493 case USB_ENDPOINT_XFER_BULK: 1494 s = "-bulk"; break; 1495 case USB_ENDPOINT_XFER_INT: 1496 s = "-intr"; break; 1497 default: 1498 s = "-iso"; break; 1499 }; 1500 s; 1501 })); 1502 usb_put_urb (urb); 1503 1504 /* list contents may have changed */ 1505 spin_lock(&hcd_urb_list_lock); 1506 goto rescan; 1507 } 1508 spin_unlock_irq(&hcd_urb_list_lock); 1509 1510 /* Wait until the endpoint queue is completely empty */ 1511 while (!list_empty (&ep->urb_list)) { 1512 spin_lock_irq(&hcd_urb_list_lock); 1513 1514 /* The list may have changed while we acquired the spinlock */ 1515 urb = NULL; 1516 if (!list_empty (&ep->urb_list)) { 1517 urb = list_entry (ep->urb_list.prev, struct urb, 1518 urb_list); 1519 usb_get_urb (urb); 1520 } 1521 spin_unlock_irq(&hcd_urb_list_lock); 1522 1523 if (urb) { 1524 usb_kill_urb (urb); 1525 usb_put_urb (urb); 1526 } 1527 } 1528 } 1529 1530 /* Disables the endpoint: synchronizes with the hcd to make sure all 1531 * endpoint state is gone from hardware. usb_hcd_flush_endpoint() must 1532 * have been called previously. Use for set_configuration, set_interface, 1533 * driver removal, physical disconnect. 1534 * 1535 * example: a qh stored in ep->hcpriv, holding state related to endpoint 1536 * type, maxpacket size, toggle, halt status, and scheduling. 1537 */ 1538 void usb_hcd_disable_endpoint(struct usb_device *udev, 1539 struct usb_host_endpoint *ep) 1540 { 1541 struct usb_hcd *hcd; 1542 1543 might_sleep(); 1544 hcd = bus_to_hcd(udev->bus); 1545 if (hcd->driver->endpoint_disable) 1546 hcd->driver->endpoint_disable(hcd, ep); 1547 } 1548 1549 /* Protect against drivers that try to unlink URBs after the device 1550 * is gone, by waiting until all unlinks for @udev are finished. 1551 * Since we don't currently track URBs by device, simply wait until 1552 * nothing is running in the locked region of usb_hcd_unlink_urb(). 1553 */ 1554 void usb_hcd_synchronize_unlinks(struct usb_device *udev) 1555 { 1556 spin_lock_irq(&hcd_urb_unlink_lock); 1557 spin_unlock_irq(&hcd_urb_unlink_lock); 1558 } 1559 1560 /*-------------------------------------------------------------------------*/ 1561 1562 /* called in any context */ 1563 int usb_hcd_get_frame_number (struct usb_device *udev) 1564 { 1565 struct usb_hcd *hcd = bus_to_hcd(udev->bus); 1566 1567 if (!HC_IS_RUNNING (hcd->state)) 1568 return -ESHUTDOWN; 1569 return hcd->driver->get_frame_number (hcd); 1570 } 1571 1572 /*-------------------------------------------------------------------------*/ 1573 1574 #ifdef CONFIG_PM 1575 1576 int hcd_bus_suspend(struct usb_device *rhdev) 1577 { 1578 struct usb_hcd *hcd = container_of(rhdev->bus, struct usb_hcd, self); 1579 int status; 1580 int old_state = hcd->state; 1581 1582 dev_dbg(&rhdev->dev, "bus %s%s\n", 1583 rhdev->auto_pm ? "auto-" : "", "suspend"); 1584 if (!hcd->driver->bus_suspend) { 1585 status = -ENOENT; 1586 } else { 1587 hcd->state = HC_STATE_QUIESCING; 1588 status = hcd->driver->bus_suspend(hcd); 1589 } 1590 if (status == 0) { 1591 usb_set_device_state(rhdev, USB_STATE_SUSPENDED); 1592 hcd->state = HC_STATE_SUSPENDED; 1593 } else { 1594 hcd->state = old_state; 1595 dev_dbg(&rhdev->dev, "bus %s fail, err %d\n", 1596 "suspend", status); 1597 } 1598 return status; 1599 } 1600 1601 int hcd_bus_resume(struct usb_device *rhdev) 1602 { 1603 struct usb_hcd *hcd = container_of(rhdev->bus, struct usb_hcd, self); 1604 int status; 1605 int old_state = hcd->state; 1606 1607 dev_dbg(&rhdev->dev, "usb %s%s\n", 1608 rhdev->auto_pm ? "auto-" : "", "resume"); 1609 if (!hcd->driver->bus_resume) 1610 return -ENOENT; 1611 if (hcd->state == HC_STATE_RUNNING) 1612 return 0; 1613 1614 hcd->state = HC_STATE_RESUMING; 1615 status = hcd->driver->bus_resume(hcd); 1616 if (status == 0) { 1617 /* TRSMRCY = 10 msec */ 1618 msleep(10); 1619 usb_set_device_state(rhdev, rhdev->actconfig 1620 ? USB_STATE_CONFIGURED 1621 : USB_STATE_ADDRESS); 1622 hcd->state = HC_STATE_RUNNING; 1623 } else { 1624 hcd->state = old_state; 1625 dev_dbg(&rhdev->dev, "bus %s fail, err %d\n", 1626 "resume", status); 1627 if (status != -ESHUTDOWN) 1628 usb_hc_died(hcd); 1629 } 1630 return status; 1631 } 1632 1633 /* Workqueue routine for root-hub remote wakeup */ 1634 static void hcd_resume_work(struct work_struct *work) 1635 { 1636 struct usb_hcd *hcd = container_of(work, struct usb_hcd, wakeup_work); 1637 struct usb_device *udev = hcd->self.root_hub; 1638 1639 usb_lock_device(udev); 1640 usb_mark_last_busy(udev); 1641 usb_external_resume_device(udev); 1642 usb_unlock_device(udev); 1643 } 1644 1645 /** 1646 * usb_hcd_resume_root_hub - called by HCD to resume its root hub 1647 * @hcd: host controller for this root hub 1648 * 1649 * The USB host controller calls this function when its root hub is 1650 * suspended (with the remote wakeup feature enabled) and a remote 1651 * wakeup request is received. The routine submits a workqueue request 1652 * to resume the root hub (that is, manage its downstream ports again). 1653 */ 1654 void usb_hcd_resume_root_hub (struct usb_hcd *hcd) 1655 { 1656 unsigned long flags; 1657 1658 spin_lock_irqsave (&hcd_root_hub_lock, flags); 1659 if (hcd->rh_registered) 1660 queue_work(ksuspend_usb_wq, &hcd->wakeup_work); 1661 spin_unlock_irqrestore (&hcd_root_hub_lock, flags); 1662 } 1663 EXPORT_SYMBOL_GPL(usb_hcd_resume_root_hub); 1664 1665 #endif 1666 1667 /*-------------------------------------------------------------------------*/ 1668 1669 #ifdef CONFIG_USB_OTG 1670 1671 /** 1672 * usb_bus_start_enum - start immediate enumeration (for OTG) 1673 * @bus: the bus (must use hcd framework) 1674 * @port_num: 1-based number of port; usually bus->otg_port 1675 * Context: in_interrupt() 1676 * 1677 * Starts enumeration, with an immediate reset followed later by 1678 * khubd identifying and possibly configuring the device. 1679 * This is needed by OTG controller drivers, where it helps meet 1680 * HNP protocol timing requirements for starting a port reset. 1681 */ 1682 int usb_bus_start_enum(struct usb_bus *bus, unsigned port_num) 1683 { 1684 struct usb_hcd *hcd; 1685 int status = -EOPNOTSUPP; 1686 1687 /* NOTE: since HNP can't start by grabbing the bus's address0_sem, 1688 * boards with root hubs hooked up to internal devices (instead of 1689 * just the OTG port) may need more attention to resetting... 1690 */ 1691 hcd = container_of (bus, struct usb_hcd, self); 1692 if (port_num && hcd->driver->start_port_reset) 1693 status = hcd->driver->start_port_reset(hcd, port_num); 1694 1695 /* run khubd shortly after (first) root port reset finishes; 1696 * it may issue others, until at least 50 msecs have passed. 1697 */ 1698 if (status == 0) 1699 mod_timer(&hcd->rh_timer, jiffies + msecs_to_jiffies(10)); 1700 return status; 1701 } 1702 EXPORT_SYMBOL_GPL(usb_bus_start_enum); 1703 1704 #endif 1705 1706 /*-------------------------------------------------------------------------*/ 1707 1708 /** 1709 * usb_hcd_irq - hook IRQs to HCD framework (bus glue) 1710 * @irq: the IRQ being raised 1711 * @__hcd: pointer to the HCD whose IRQ is being signaled 1712 * 1713 * If the controller isn't HALTed, calls the driver's irq handler. 1714 * Checks whether the controller is now dead. 1715 */ 1716 irqreturn_t usb_hcd_irq (int irq, void *__hcd) 1717 { 1718 struct usb_hcd *hcd = __hcd; 1719 unsigned long flags; 1720 irqreturn_t rc; 1721 1722 /* IRQF_DISABLED doesn't work correctly with shared IRQs 1723 * when the first handler doesn't use it. So let's just 1724 * assume it's never used. 1725 */ 1726 local_irq_save(flags); 1727 1728 if (unlikely(hcd->state == HC_STATE_HALT || 1729 !test_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags))) { 1730 rc = IRQ_NONE; 1731 } else if (hcd->driver->irq(hcd) == IRQ_NONE) { 1732 rc = IRQ_NONE; 1733 } else { 1734 set_bit(HCD_FLAG_SAW_IRQ, &hcd->flags); 1735 1736 if (unlikely(hcd->state == HC_STATE_HALT)) 1737 usb_hc_died(hcd); 1738 rc = IRQ_HANDLED; 1739 } 1740 1741 local_irq_restore(flags); 1742 return rc; 1743 } 1744 1745 /*-------------------------------------------------------------------------*/ 1746 1747 /** 1748 * usb_hc_died - report abnormal shutdown of a host controller (bus glue) 1749 * @hcd: pointer to the HCD representing the controller 1750 * 1751 * This is called by bus glue to report a USB host controller that died 1752 * while operations may still have been pending. It's called automatically 1753 * by the PCI glue, so only glue for non-PCI busses should need to call it. 1754 */ 1755 void usb_hc_died (struct usb_hcd *hcd) 1756 { 1757 unsigned long flags; 1758 1759 dev_err (hcd->self.controller, "HC died; cleaning up\n"); 1760 1761 spin_lock_irqsave (&hcd_root_hub_lock, flags); 1762 if (hcd->rh_registered) { 1763 hcd->poll_rh = 0; 1764 1765 /* make khubd clean up old urbs and devices */ 1766 usb_set_device_state (hcd->self.root_hub, 1767 USB_STATE_NOTATTACHED); 1768 usb_kick_khubd (hcd->self.root_hub); 1769 } 1770 spin_unlock_irqrestore (&hcd_root_hub_lock, flags); 1771 } 1772 EXPORT_SYMBOL_GPL (usb_hc_died); 1773 1774 /*-------------------------------------------------------------------------*/ 1775 1776 /** 1777 * usb_create_hcd - create and initialize an HCD structure 1778 * @driver: HC driver that will use this hcd 1779 * @dev: device for this HC, stored in hcd->self.controller 1780 * @bus_name: value to store in hcd->self.bus_name 1781 * Context: !in_interrupt() 1782 * 1783 * Allocate a struct usb_hcd, with extra space at the end for the 1784 * HC driver's private data. Initialize the generic members of the 1785 * hcd structure. 1786 * 1787 * If memory is unavailable, returns NULL. 1788 */ 1789 struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, 1790 struct device *dev, const char *bus_name) 1791 { 1792 struct usb_hcd *hcd; 1793 1794 hcd = kzalloc(sizeof(*hcd) + driver->hcd_priv_size, GFP_KERNEL); 1795 if (!hcd) { 1796 dev_dbg (dev, "hcd alloc failed\n"); 1797 return NULL; 1798 } 1799 dev_set_drvdata(dev, hcd); 1800 kref_init(&hcd->kref); 1801 1802 usb_bus_init(&hcd->self); 1803 hcd->self.controller = dev; 1804 hcd->self.bus_name = bus_name; 1805 hcd->self.uses_dma = (dev->dma_mask != NULL); 1806 1807 init_timer(&hcd->rh_timer); 1808 hcd->rh_timer.function = rh_timer_func; 1809 hcd->rh_timer.data = (unsigned long) hcd; 1810 #ifdef CONFIG_PM 1811 INIT_WORK(&hcd->wakeup_work, hcd_resume_work); 1812 #endif 1813 1814 hcd->driver = driver; 1815 hcd->product_desc = (driver->product_desc) ? driver->product_desc : 1816 "USB Host Controller"; 1817 return hcd; 1818 } 1819 EXPORT_SYMBOL_GPL(usb_create_hcd); 1820 1821 static void hcd_release (struct kref *kref) 1822 { 1823 struct usb_hcd *hcd = container_of (kref, struct usb_hcd, kref); 1824 1825 kfree(hcd); 1826 } 1827 1828 struct usb_hcd *usb_get_hcd (struct usb_hcd *hcd) 1829 { 1830 if (hcd) 1831 kref_get (&hcd->kref); 1832 return hcd; 1833 } 1834 EXPORT_SYMBOL_GPL(usb_get_hcd); 1835 1836 void usb_put_hcd (struct usb_hcd *hcd) 1837 { 1838 if (hcd) 1839 kref_put (&hcd->kref, hcd_release); 1840 } 1841 EXPORT_SYMBOL_GPL(usb_put_hcd); 1842 1843 /** 1844 * usb_add_hcd - finish generic HCD structure initialization and register 1845 * @hcd: the usb_hcd structure to initialize 1846 * @irqnum: Interrupt line to allocate 1847 * @irqflags: Interrupt type flags 1848 * 1849 * Finish the remaining parts of generic HCD initialization: allocate the 1850 * buffers of consistent memory, register the bus, request the IRQ line, 1851 * and call the driver's reset() and start() routines. 1852 */ 1853 int usb_add_hcd(struct usb_hcd *hcd, 1854 unsigned int irqnum, unsigned long irqflags) 1855 { 1856 int retval; 1857 struct usb_device *rhdev; 1858 1859 dev_info(hcd->self.controller, "%s\n", hcd->product_desc); 1860 1861 hcd->authorized_default = hcd->wireless? 0 : 1; 1862 set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags); 1863 1864 /* HC is in reset state, but accessible. Now do the one-time init, 1865 * bottom up so that hcds can customize the root hubs before khubd 1866 * starts talking to them. (Note, bus id is assigned early too.) 1867 */ 1868 if ((retval = hcd_buffer_create(hcd)) != 0) { 1869 dev_dbg(hcd->self.controller, "pool alloc failed\n"); 1870 return retval; 1871 } 1872 1873 if ((retval = usb_register_bus(&hcd->self)) < 0) 1874 goto err_register_bus; 1875 1876 if ((rhdev = usb_alloc_dev(NULL, &hcd->self, 0)) == NULL) { 1877 dev_err(hcd->self.controller, "unable to allocate root hub\n"); 1878 retval = -ENOMEM; 1879 goto err_allocate_root_hub; 1880 } 1881 rhdev->speed = (hcd->driver->flags & HCD_USB2) ? USB_SPEED_HIGH : 1882 USB_SPEED_FULL; 1883 hcd->self.root_hub = rhdev; 1884 1885 /* wakeup flag init defaults to "everything works" for root hubs, 1886 * but drivers can override it in reset() if needed, along with 1887 * recording the overall controller's system wakeup capability. 1888 */ 1889 device_init_wakeup(&rhdev->dev, 1); 1890 1891 /* "reset" is misnamed; its role is now one-time init. the controller 1892 * should already have been reset (and boot firmware kicked off etc). 1893 */ 1894 if (hcd->driver->reset && (retval = hcd->driver->reset(hcd)) < 0) { 1895 dev_err(hcd->self.controller, "can't setup\n"); 1896 goto err_hcd_driver_setup; 1897 } 1898 1899 /* NOTE: root hub and controller capabilities may not be the same */ 1900 if (device_can_wakeup(hcd->self.controller) 1901 && device_can_wakeup(&hcd->self.root_hub->dev)) 1902 dev_dbg(hcd->self.controller, "supports USB remote wakeup\n"); 1903 1904 /* enable irqs just before we start the controller */ 1905 if (hcd->driver->irq) { 1906 1907 /* IRQF_DISABLED doesn't work as advertised when used together 1908 * with IRQF_SHARED. As usb_hcd_irq() will always disable 1909 * interrupts we can remove it here. 1910 */ 1911 if (irqflags & IRQF_SHARED) 1912 irqflags &= ~IRQF_DISABLED; 1913 1914 snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d", 1915 hcd->driver->description, hcd->self.busnum); 1916 if ((retval = request_irq(irqnum, &usb_hcd_irq, irqflags, 1917 hcd->irq_descr, hcd)) != 0) { 1918 dev_err(hcd->self.controller, 1919 "request interrupt %d failed\n", irqnum); 1920 goto err_request_irq; 1921 } 1922 hcd->irq = irqnum; 1923 dev_info(hcd->self.controller, "irq %d, %s 0x%08llx\n", irqnum, 1924 (hcd->driver->flags & HCD_MEMORY) ? 1925 "io mem" : "io base", 1926 (unsigned long long)hcd->rsrc_start); 1927 } else { 1928 hcd->irq = -1; 1929 if (hcd->rsrc_start) 1930 dev_info(hcd->self.controller, "%s 0x%08llx\n", 1931 (hcd->driver->flags & HCD_MEMORY) ? 1932 "io mem" : "io base", 1933 (unsigned long long)hcd->rsrc_start); 1934 } 1935 1936 if ((retval = hcd->driver->start(hcd)) < 0) { 1937 dev_err(hcd->self.controller, "startup error %d\n", retval); 1938 goto err_hcd_driver_start; 1939 } 1940 1941 /* starting here, usbcore will pay attention to this root hub */ 1942 rhdev->bus_mA = min(500u, hcd->power_budget); 1943 if ((retval = register_root_hub(hcd)) != 0) 1944 goto err_register_root_hub; 1945 1946 retval = sysfs_create_group(&rhdev->dev.kobj, &usb_bus_attr_group); 1947 if (retval < 0) { 1948 printk(KERN_ERR "Cannot register USB bus sysfs attributes: %d\n", 1949 retval); 1950 goto error_create_attr_group; 1951 } 1952 if (hcd->uses_new_polling && hcd->poll_rh) 1953 usb_hcd_poll_rh_status(hcd); 1954 return retval; 1955 1956 error_create_attr_group: 1957 mutex_lock(&usb_bus_list_lock); 1958 usb_disconnect(&hcd->self.root_hub); 1959 mutex_unlock(&usb_bus_list_lock); 1960 err_register_root_hub: 1961 hcd->driver->stop(hcd); 1962 err_hcd_driver_start: 1963 if (hcd->irq >= 0) 1964 free_irq(irqnum, hcd); 1965 err_request_irq: 1966 err_hcd_driver_setup: 1967 hcd->self.root_hub = NULL; 1968 usb_put_dev(rhdev); 1969 err_allocate_root_hub: 1970 usb_deregister_bus(&hcd->self); 1971 err_register_bus: 1972 hcd_buffer_destroy(hcd); 1973 return retval; 1974 } 1975 EXPORT_SYMBOL_GPL(usb_add_hcd); 1976 1977 /** 1978 * usb_remove_hcd - shutdown processing for generic HCDs 1979 * @hcd: the usb_hcd structure to remove 1980 * Context: !in_interrupt() 1981 * 1982 * Disconnects the root hub, then reverses the effects of usb_add_hcd(), 1983 * invoking the HCD's stop() method. 1984 */ 1985 void usb_remove_hcd(struct usb_hcd *hcd) 1986 { 1987 dev_info(hcd->self.controller, "remove, state %x\n", hcd->state); 1988 1989 if (HC_IS_RUNNING (hcd->state)) 1990 hcd->state = HC_STATE_QUIESCING; 1991 1992 dev_dbg(hcd->self.controller, "roothub graceful disconnect\n"); 1993 spin_lock_irq (&hcd_root_hub_lock); 1994 hcd->rh_registered = 0; 1995 spin_unlock_irq (&hcd_root_hub_lock); 1996 1997 #ifdef CONFIG_PM 1998 cancel_work_sync(&hcd->wakeup_work); 1999 #endif 2000 2001 sysfs_remove_group(&hcd->self.root_hub->dev.kobj, &usb_bus_attr_group); 2002 mutex_lock(&usb_bus_list_lock); 2003 usb_disconnect(&hcd->self.root_hub); 2004 mutex_unlock(&usb_bus_list_lock); 2005 2006 hcd->driver->stop(hcd); 2007 hcd->state = HC_STATE_HALT; 2008 2009 hcd->poll_rh = 0; 2010 del_timer_sync(&hcd->rh_timer); 2011 2012 if (hcd->irq >= 0) 2013 free_irq(hcd->irq, hcd); 2014 usb_deregister_bus(&hcd->self); 2015 hcd_buffer_destroy(hcd); 2016 } 2017 EXPORT_SYMBOL_GPL(usb_remove_hcd); 2018 2019 void 2020 usb_hcd_platform_shutdown(struct platform_device* dev) 2021 { 2022 struct usb_hcd *hcd = platform_get_drvdata(dev); 2023 2024 if (hcd->driver->shutdown) 2025 hcd->driver->shutdown(hcd); 2026 } 2027 EXPORT_SYMBOL_GPL(usb_hcd_platform_shutdown); 2028 2029 /*-------------------------------------------------------------------------*/ 2030 2031 #if defined(CONFIG_USB_MON) 2032 2033 struct usb_mon_operations *mon_ops; 2034 2035 /* 2036 * The registration is unlocked. 2037 * We do it this way because we do not want to lock in hot paths. 2038 * 2039 * Notice that the code is minimally error-proof. Because usbmon needs 2040 * symbols from usbcore, usbcore gets referenced and cannot be unloaded first. 2041 */ 2042 2043 int usb_mon_register (struct usb_mon_operations *ops) 2044 { 2045 2046 if (mon_ops) 2047 return -EBUSY; 2048 2049 mon_ops = ops; 2050 mb(); 2051 return 0; 2052 } 2053 EXPORT_SYMBOL_GPL (usb_mon_register); 2054 2055 void usb_mon_deregister (void) 2056 { 2057 2058 if (mon_ops == NULL) { 2059 printk(KERN_ERR "USB: monitor was not registered\n"); 2060 return; 2061 } 2062 mon_ops = NULL; 2063 mb(); 2064 } 2065 EXPORT_SYMBOL_GPL (usb_mon_deregister); 2066 2067 #endif /* CONFIG_USB_MON */ 2068