diff options
Diffstat (limited to 'drivers/usb/core/hcd.h')
| -rw-r--r-- | drivers/usb/core/hcd.h | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index f750eb1ab59..e7d4479de41 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h @@ -206,6 +206,11 @@ struct hc_driver {  	void 	(*endpoint_disable)(struct usb_hcd *hcd,  			struct usb_host_endpoint *ep); +	/* (optional) reset any endpoint state such as sequence number +	   and current window */ +	void 	(*endpoint_reset)(struct usb_hcd *hcd, +			struct usb_host_endpoint *ep); +  	/* root hub support */  	int	(*hub_status_data) (struct usb_hcd *hcd, char *buf);  	int	(*hub_control) (struct usb_hcd *hcd, @@ -234,6 +239,8 @@ extern void usb_hcd_flush_endpoint(struct usb_device *udev,  		struct usb_host_endpoint *ep);  extern void usb_hcd_disable_endpoint(struct usb_device *udev,  		struct usb_host_endpoint *ep); +extern void usb_hcd_reset_endpoint(struct usb_device *udev, +		struct usb_host_endpoint *ep);  extern void usb_hcd_synchronize_unlinks(struct usb_device *udev);  extern int usb_hcd_get_frame_number(struct usb_device *udev); @@ -279,6 +286,13 @@ extern irqreturn_t usb_hcd_irq(int irq, void *__hcd);  extern void usb_hc_died(struct usb_hcd *hcd);  extern void usb_hcd_poll_rh_status(struct usb_hcd *hcd); +/* The D0/D1 toggle bits ... USE WITH CAUTION (they're almost hcd-internal) */ +#define usb_gettoggle(dev, ep, out) (((dev)->toggle[out] >> (ep)) & 1) +#define	usb_dotoggle(dev, ep, out)  ((dev)->toggle[out] ^= (1 << (ep))) +#define usb_settoggle(dev, ep, out, bit) \ +		((dev)->toggle[out] = ((dev)->toggle[out] & ~(1 << (ep))) | \ +		 ((bit) << (ep))) +  /* -------------------------------------------------------------------------- */  /* Enumeration is only for the hub driver, or HCD virtual root hubs */  |