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