diff options
Diffstat (limited to 'include/linux/usb/hcd.h')
| -rw-r--r-- | include/linux/usb/hcd.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 75efc45eaa2f..b8aba196f7f1 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h | |||
| @@ -73,6 +73,7 @@ struct giveback_urb_bh { | |||
| 73 | spinlock_t lock; | 73 | spinlock_t lock; |
| 74 | struct list_head head; | 74 | struct list_head head; |
| 75 | struct tasklet_struct bh; | 75 | struct tasklet_struct bh; |
| 76 | struct usb_host_endpoint *completing_ep; | ||
| 76 | }; | 77 | }; |
| 77 | 78 | ||
| 78 | struct usb_hcd { | 79 | struct usb_hcd { |
| @@ -140,6 +141,7 @@ struct usb_hcd { | |||
| 140 | unsigned wireless:1; /* Wireless USB HCD */ | 141 | unsigned wireless:1; /* Wireless USB HCD */ |
| 141 | unsigned authorized_default:1; | 142 | unsigned authorized_default:1; |
| 142 | unsigned has_tt:1; /* Integrated TT in root hub */ | 143 | unsigned has_tt:1; /* Integrated TT in root hub */ |
| 144 | unsigned amd_resume_bug:1; /* AMD remote wakeup quirk */ | ||
| 143 | 145 | ||
| 144 | unsigned int irq; /* irq allocated */ | 146 | unsigned int irq; /* irq allocated */ |
| 145 | void __iomem *regs; /* device memory/io */ | 147 | void __iomem *regs; /* device memory/io */ |
| @@ -378,6 +380,12 @@ static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd) | |||
| 378 | return hcd->driver->flags & HCD_BH; | 380 | return hcd->driver->flags & HCD_BH; |
| 379 | } | 381 | } |
| 380 | 382 | ||
| 383 | static inline bool hcd_periodic_completion_in_progress(struct usb_hcd *hcd, | ||
| 384 | struct usb_host_endpoint *ep) | ||
| 385 | { | ||
| 386 | return hcd->high_prio_bh.completing_ep == ep; | ||
| 387 | } | ||
| 388 | |||
| 381 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); | 389 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); |
| 382 | extern int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb, | 390 | extern int usb_hcd_check_unlink_urb(struct usb_hcd *hcd, struct urb *urb, |
| 383 | int status); | 391 | int status); |
| @@ -428,6 +436,8 @@ extern int usb_hcd_pci_probe(struct pci_dev *dev, | |||
| 428 | extern void usb_hcd_pci_remove(struct pci_dev *dev); | 436 | extern void usb_hcd_pci_remove(struct pci_dev *dev); |
| 429 | extern void usb_hcd_pci_shutdown(struct pci_dev *dev); | 437 | extern void usb_hcd_pci_shutdown(struct pci_dev *dev); |
| 430 | 438 | ||
| 439 | extern int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *dev); | ||
| 440 | |||
| 431 | #ifdef CONFIG_PM | 441 | #ifdef CONFIG_PM |
| 432 | extern const struct dev_pm_ops usb_hcd_pci_pm_ops; | 442 | extern const struct dev_pm_ops usb_hcd_pci_pm_ops; |
| 433 | #endif | 443 | #endif |
| @@ -496,6 +506,7 @@ struct usb_tt { | |||
| 496 | struct usb_device *hub; /* upstream highspeed hub */ | 506 | struct usb_device *hub; /* upstream highspeed hub */ |
| 497 | int multi; /* true means one TT per port */ | 507 | int multi; /* true means one TT per port */ |
| 498 | unsigned think_time; /* think time in ns */ | 508 | unsigned think_time; /* think time in ns */ |
| 509 | void *hcpriv; /* HCD private data */ | ||
| 499 | 510 | ||
| 500 | /* for control/bulk error recovery (CLEAR_TT_BUFFER) */ | 511 | /* for control/bulk error recovery (CLEAR_TT_BUFFER) */ |
| 501 | spinlock_t lock; | 512 | spinlock_t lock; |
| @@ -554,9 +565,8 @@ extern void usb_ep0_reinit(struct usb_device *); | |||
| 554 | * of (7/6 * 8 * bytecount) = 9.33 * bytecount */ | 565 | * of (7/6 * 8 * bytecount) = 9.33 * bytecount */ |
| 555 | /* bytecount = data payload byte count */ | 566 | /* bytecount = data payload byte count */ |
| 556 | 567 | ||
| 557 | #define NS_TO_US(ns) ((ns + 500L) / 1000L) | 568 | #define NS_TO_US(ns) DIV_ROUND_UP(ns, 1000L) |
| 558 | /* convert & round nanoseconds to microseconds */ | 569 | /* convert nanoseconds to microseconds, rounding up */ |
| 559 | |||
| 560 | 570 | ||
| 561 | /* | 571 | /* |
| 562 | * Full/low speed bandwidth allocation constants/support. | 572 | * Full/low speed bandwidth allocation constants/support. |
