diff options
Diffstat (limited to 'drivers/usb/core/hcd.h')
-rw-r--r-- | drivers/usb/core/hcd.h | 19 |
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 | ||
212 | extern void usb_hcd_giveback_urb (struct usb_hcd *hcd, struct urb *urb, struct pt_regs *regs); | 222 | extern 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 */ |
245 | extern irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs *r); | 255 | extern irqreturn_t usb_hcd_irq (int irq, void *__hcd, struct pt_regs *r); |
256 | |||
246 | extern void usb_hc_died (struct usb_hcd *hcd); | 257 | extern void usb_hc_died (struct usb_hcd *hcd); |
258 | extern 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 | ||
342 | extern struct usb_bus *usb_alloc_bus (struct usb_operations *); | 354 | extern struct usb_bus *usb_alloc_bus (struct usb_operations *); |
343 | 355 | ||
344 | extern int usb_hcd_register_root_hub (struct usb_device *usb_dev, | ||
345 | struct usb_hcd *hcd); | ||
346 | |||
347 | extern void usb_hcd_resume_root_hub (struct usb_hcd *hcd); | 356 | extern void usb_hcd_resume_root_hub (struct usb_hcd *hcd); |
348 | 357 | ||
349 | extern void usb_set_device_state(struct usb_device *udev, | 358 | extern void usb_set_device_state(struct usb_device *udev, |
@@ -360,6 +369,8 @@ extern wait_queue_head_t usb_kill_urb_queue; | |||
360 | extern struct usb_bus *usb_bus_get (struct usb_bus *bus); | 369 | extern struct usb_bus *usb_bus_get (struct usb_bus *bus); |
361 | extern void usb_bus_put (struct usb_bus *bus); | 370 | extern void usb_bus_put (struct usb_bus *bus); |
362 | 371 | ||
372 | extern void usb_enable_root_hub_irq (struct usb_bus *bus); | ||
373 | |||
363 | extern int usb_find_interface_driver (struct usb_device *dev, | 374 | extern int usb_find_interface_driver (struct usb_device *dev, |
364 | struct usb_interface *interface); | 375 | struct usb_interface *interface); |
365 | 376 | ||