aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core/hcd.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core/hcd.h')
-rw-r--r--drivers/usb/core/hcd.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h
index 325a51656c3f..8dc13cde2f73 100644
--- a/drivers/usb/core/hcd.h
+++ b/drivers/usb/core/hcd.h
@@ -65,7 +65,8 @@ struct usb_hcd { /* usb_bus.hcpriv points to this */
65 const char *product_desc; /* product/vendor string */ 65 const char *product_desc; /* product/vendor string */
66 char irq_descr[24]; /* driver + bus # */ 66 char irq_descr[24]; /* driver + bus # */
67 67
68 struct timer_list rh_timer; /* drives root hub */ 68 struct timer_list rh_timer; /* drives root-hub polling */
69 struct urb *status_urb; /* the current status urb */
69 70
70 /* 71 /*
71 * hardware info/state 72 * hardware info/state
@@ -76,10 +77,17 @@ struct usb_hcd { /* usb_bus.hcpriv points to this */
76 unsigned remote_wakeup:1;/* sw should use wakeup? */ 77 unsigned remote_wakeup:1;/* sw should use wakeup? */
77 unsigned rh_registered:1;/* is root hub registered? */ 78 unsigned rh_registered:1;/* is root hub registered? */
78 79
80 /* The next flag is a stopgap, to be removed when all the HCDs
81 * support the new root-hub polling mechanism. */
82 unsigned uses_new_polling:1;
83 unsigned poll_rh:1; /* poll for rh status? */
84 unsigned poll_pending:1; /* status has changed? */
85
79 int irq; /* irq allocated */ 86 int irq; /* irq allocated */
80 void __iomem *regs; /* device memory/io */ 87 void __iomem *regs; /* device memory/io */
81 u64 rsrc_start; /* memory/io resource start */ 88 u64 rsrc_start; /* memory/io resource start */
82 u64 rsrc_len; /* memory/io resource length */ 89 u64 rsrc_len; /* memory/io resource length */
90 unsigned power_budget; /* in mA, 0 = no limit */
83 91
84#define HCD_BUFFER_POOLS 4 92#define HCD_BUFFER_POOLS 4
85 struct dma_pool *pool [HCD_BUFFER_POOLS]; 93 struct dma_pool *pool [HCD_BUFFER_POOLS];
@@ -207,6 +215,8 @@ struct hc_driver {
207 int (*hub_suspend)(struct usb_hcd *); 215 int (*hub_suspend)(struct usb_hcd *);
208 int (*hub_resume)(struct usb_hcd *); 216 int (*hub_resume)(struct usb_hcd *);
209 int (*start_port_reset)(struct usb_hcd *, unsigned port_num); 217 int (*start_port_reset)(struct usb_hcd *, unsigned port_num);
218 void (*hub_irq_enable)(struct usb_hcd *);
219 /* Needed only if port-change IRQs are level-triggered */
210}; 220};
211 221
212extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs); 222extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs);
@@ -243,7 +253,9 @@ void hcd_buffer_free (struct usb_bus *bus, size_t size,
243 253
244/* generic bus glue, needed for host controllers that don't use PCI */ 254/* generic bus glue, needed for host controllers that don't use PCI */
245extern irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs *r); 255extern irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs *r);
256
246extern void usb_hc_died (struct usb_hcd *hcd); 257extern void usb_hc_died (struct usb_hcd *hcd);
258extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd);
247 259
248/* -------------------------------------------------------------------------- */ 260/* -------------------------------------------------------------------------- */
249 261
@@ -341,9 +353,6 @@ extern long usb_calc_bus_time (int speed, int is_input,
341 353
342extern struct usb_bus *usb_alloc_bus (struct usb_operations *); 354extern struct usb_bus *usb_alloc_bus (struct usb_operations *);
343 355
344extern int usb_hcd_register_root_hub (struct usb_device *usb_dev,
345 struct usb_hcd *hcd);
346
347extern void usb_hcd_resume_root_hub (struct usb_hcd *hcd); 356extern void usb_hcd_resume_root_hub (struct usb_hcd *hcd);
348 357
349extern void usb_set_device_state(struct usb_device *udev, 358extern void usb_set_device_state(struct usb_device *udev,
@@ -360,6 +369,8 @@ extern wait_queue_head_t usb_kill_urb_queue;
360extern struct usb_bus *usb_bus_get (struct usb_bus *bus); 369extern struct usb_bus *usb_bus_get (struct usb_bus *bus);
361extern void usb_bus_put (struct usb_bus *bus); 370extern void usb_bus_put (struct usb_bus *bus);
362 371
372extern void usb_enable_root_hub_irq (struct usb_bus *bus);
373
363extern int usb_find_interface_driver (struct usb_device *dev, 374extern int usb_find_interface_driver (struct usb_device *dev,
364 struct usb_interface *interface); 375 struct usb_interface *interface);
365 376