aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2015-05-11 14:56:46 +0100
committerMichael Brown <mcb30@ipxe.org>2015-05-11 14:56:46 +0100
commit0eaa3a34bffde2afb0b8f5f5e3b6ad6820564007 (patch)
tree59599531611c5bec20348ed47f830d988ac56c8e /src
parent86aa959561be5a1cc075c8c60c2f9fdc37ab9272 (diff)
downloadipxe-0eaa3a34bffde2afb0b8f5f5e3b6ad6820564007.zip
ipxe-0eaa3a34bffde2afb0b8f5f5e3b6ad6820564007.tar.gz
ipxe-0eaa3a34bffde2afb0b8f5f5e3b6ad6820564007.tar.bz2
[usb] Add USB_INTERRUPT_OUT internal type
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src')
-rw-r--r--src/drivers/bus/usb.c3
-rw-r--r--src/drivers/usb/usbhub.c2
-rw-r--r--src/drivers/usb/usbnet.c2
-rw-r--r--src/include/ipxe/usb.h7
4 files changed, 9 insertions, 5 deletions
diff --git a/src/drivers/bus/usb.c b/src/drivers/bus/usb.c
index fd7a2a6..085caf2 100644
--- a/src/drivers/bus/usb.c
+++ b/src/drivers/bus/usb.c
@@ -265,7 +265,8 @@ int usb_endpoint_described ( struct usb_endpoint *ep,
burst = ( descx ? descx->burst : USB_ENDPOINT_BURST ( sizes ) );
/* Calculate interval */
- if ( type == USB_INTERRUPT ) {
+ if ( ( type & USB_ENDPOINT_ATTR_TYPE_MASK ) ==
+ USB_ENDPOINT_ATTR_INTERRUPT ) {
if ( port->speed >= USB_SPEED_HIGH ) {
/* 2^(desc->interval-1) is a microframe count */
interval = ( 1 << ( desc->interval - 1 ) );
diff --git a/src/drivers/usb/usbhub.c b/src/drivers/usb/usbhub.c
index 8b5fa9c..bf2a200 100644
--- a/src/drivers/usb/usbhub.c
+++ b/src/drivers/usb/usbhub.c
@@ -425,7 +425,7 @@ static int hub_probe ( struct usb_function *func,
/* Locate interrupt endpoint descriptor */
if ( ( rc = usb_endpoint_described ( &hubdev->intr, config, interface,
- USB_INTERRUPT, 0 ) ) != 0 ) {
+ USB_INTERRUPT_IN, 0 ) ) != 0 ) {
DBGC ( hubdev, "HUB %s could not describe interrupt endpoint: "
"%s\n", hubdev->name, strerror ( rc ) );
goto err_endpoint;
diff --git a/src/drivers/usb/usbnet.c b/src/drivers/usb/usbnet.c
index 60f5802..b92336d 100644
--- a/src/drivers/usb/usbnet.c
+++ b/src/drivers/usb/usbnet.c
@@ -185,7 +185,7 @@ static int usbnet_comms_describe ( struct usbnet_device *usbnet,
/* Describe interrupt endpoint */
if ( ( rc = usb_endpoint_described ( &usbnet->intr, config,
- desc, USB_INTERRUPT,
+ desc, USB_INTERRUPT_IN,
0 ) ) != 0 )
continue;
diff --git a/src/include/ipxe/usb.h b/src/include/ipxe/usb.h
index 0b27d02..ab060b8 100644
--- a/src/include/ipxe/usb.h
+++ b/src/include/ipxe/usb.h
@@ -277,8 +277,11 @@ struct usb_endpoint_descriptor {
/** Bulk IN endpoint (internal) type */
#define USB_BULK_IN ( USB_ENDPOINT_ATTR_BULK | USB_DIR_IN )
-/** Interrupt endpoint (internal) type */
-#define USB_INTERRUPT ( USB_ENDPOINT_ATTR_INTERRUPT | USB_DIR_IN )
+/** Interrupt IN endpoint (internal) type */
+#define USB_INTERRUPT_IN ( USB_ENDPOINT_ATTR_INTERRUPT | USB_DIR_IN )
+
+/** Interrupt OUT endpoint (internal) type */
+#define USB_INTERRUPT_OUT ( USB_ENDPOINT_ATTR_INTERRUPT | USB_DIR_OUT )
/** USB endpoint MTU */
#define USB_ENDPOINT_MTU(sizes) ( ( (sizes) >> 0 ) & 0x07ff )