From 0eaa3a34bffde2afb0b8f5f5e3b6ad6820564007 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 11 May 2015 14:56:46 +0100 Subject: [PATCH] [usb] Add USB_INTERRUPT_OUT internal type Signed-off-by: Michael Brown --- src/drivers/bus/usb.c | 3 ++- src/drivers/usb/usbhub.c | 2 +- src/drivers/usb/usbnet.c | 2 +- src/include/ipxe/usb.h | 7 +++++-- 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 )