aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/usb/usb_controller.h
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2010-10-04 23:18:05 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2010-10-04 23:18:05 +0000
commit963169b4af5d1a347560f060254e1df9541b2350 (patch)
treec082c15f2b4af936b99eda2cd4c67777fdf391ee /sys/dev/usb/usb_controller.h
parent2ecb4e919f3df1edf00be35c9a85bd067495be2e (diff)
downloadsrc-963169b4af5d1a347560f060254e1df9541b2350.tar.gz
src-963169b4af5d1a347560f060254e1df9541b2350.zip
This commit adds full support for USB 3.0 devices in host and device
mode in the USB core. The patch mostly consists of updating the USB HUB code to support USB 3.0 HUBs. This patch also add some more USB controller methods to support more active-alike USB controllers like the XHCI which needs to be informed about various device state events. USB 3.0 HUBs are not tested yet, due to lack of hardware, but are believed to work. After this update the initial device descriptor is only read twice when we know that the bMaxPacketSize is too small for a single packet transfer of this descriptor. Approved by: thompsa (mentor)
Notes
Notes: svn path=/head/; revision=213435
Diffstat (limited to 'sys/dev/usb/usb_controller.h')
-rw-r--r--sys/dev/usb/usb_controller.h25
1 files changed, 25 insertions, 0 deletions
diff --git a/sys/dev/usb/usb_controller.h b/sys/dev/usb/usb_controller.h
index 0f7ffac5d210..6b15dab993d5 100644
--- a/sys/dev/usb/usb_controller.h
+++ b/sys/dev/usb/usb_controller.h
@@ -97,6 +97,9 @@ struct usb_bus_methods {
void (*get_hw_ep_profile) (struct usb_device *udev, const struct usb_hw_ep_profile **ppf, uint8_t ep_addr);
void (*set_stall) (struct usb_device *udev, struct usb_xfer *xfer, struct usb_endpoint *ep, uint8_t *did_stall);
+
+ /* USB Device mode mandatory. USB Host mode optional. */
+
void (*clear_stall) (struct usb_device *udev, struct usb_endpoint *ep);
/* Optional transfer polling support */
@@ -106,6 +109,28 @@ struct usb_bus_methods {
/* Optional fixed power mode support */
void (*get_power_mode) (struct usb_device *udev, int8_t *pmode);
+
+ /* Optional endpoint uninit */
+
+ void (*endpoint_uninit) (struct usb_device *, struct usb_endpoint *);
+
+ /* Optional device init */
+
+ usb_error_t (*device_init) (struct usb_device *);
+
+ /* Optional device uninit */
+
+ void (*device_uninit) (struct usb_device *);
+
+ /* Optional for device and host mode */
+
+ void (*start_dma_delay) (struct usb_xfer *);
+
+ void (*device_state_change) (struct usb_device *);
+
+ /* Optional for host mode */
+
+ usb_error_t (*set_address) (struct usb_device *, struct mtx *, uint16_t);
};
/*