summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 fd7a2a6f..085caf23 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 8b5fa9c4..bf2a2000 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 60f58025..b92336d0 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 0b27d02c..ab060b8f 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 )