svn commit: r190732 - head/sys/dev/usb

Andrew Thompson thompsa at FreeBSD.org
Sun Apr 5 11:20:19 PDT 2009


Author: thompsa
Date: Sun Apr  5 18:20:13 2009
New Revision: 190732
URL: http://svn.freebsd.org/changeset/base/190732

Log:
  MFp4 //depot/projects/usb at 159897
  
  Add new endpoint direction values for use with usb2_config
  
  Submitted by:	Hans Petter Selasky

Modified:
  head/sys/dev/usb/usb.h
  head/sys/dev/usb/usb_device.c

Modified: head/sys/dev/usb/usb.h
==============================================================================
--- head/sys/dev/usb/usb.h	Sun Apr  5 18:20:03 2009	(r190731)
+++ head/sys/dev/usb/usb.h	Sun Apr  5 18:20:13 2009	(r190732)
@@ -461,8 +461,10 @@ struct usb2_endpoint_descriptor {
 	uByte	bEndpointAddress;
 #define	UE_GET_DIR(a)	((a) & 0x80)
 #define	UE_SET_DIR(a,d)	((a) | (((d)&1) << 7))
-#define	UE_DIR_IN	0x80
-#define	UE_DIR_OUT	0x00
+#define	UE_DIR_IN	0x80		/* IN-token endpoint, fixed */
+#define	UE_DIR_OUT	0x00		/* OUT-token endpoint, fixed */
+#define	UE_DIR_RX	0xfd		/* for internal use only! */
+#define	UE_DIR_TX	0xfe		/* for internal use only! */
 #define	UE_DIR_ANY	0xff		/* for internal use only! */
 #define	UE_ADDR		0x0f
 #define	UE_ADDR_ANY	0xff		/* for internal use only! */

Modified: head/sys/dev/usb/usb_device.c
==============================================================================
--- head/sys/dev/usb/usb_device.c	Sun Apr  5 18:20:03 2009	(r190731)
+++ head/sys/dev/usb/usb_device.c	Sun Apr  5 18:20:13 2009	(r190732)
@@ -174,7 +174,15 @@ usb2_get_pipe(struct usb2_device *udev, 
 
 	/* setup expected endpoint direction mask and value */
 
-	if (setup->direction == UE_DIR_ANY) {
+	if (setup->direction == UE_DIR_RX) {
+		ea_mask = (UE_DIR_IN | UE_DIR_OUT);
+		ea_val = (udev->flags.usb2_mode == USB_MODE_DEVICE) ?
+		    UE_DIR_OUT : UE_DIR_IN;
+	} else if (setup->direction == UE_DIR_TX) {
+		ea_mask = (UE_DIR_IN | UE_DIR_OUT);
+		ea_val = (udev->flags.usb2_mode == USB_MODE_DEVICE) ?
+		    UE_DIR_IN : UE_DIR_OUT;
+	} else if (setup->direction == UE_DIR_ANY) {
 		/* match any endpoint direction */
 		ea_mask = 0;
 		ea_val = 0;


More information about the svn-src-head mailing list