Hi, Eric I glance through your code, looks like SelectInterface() has a bug, in which
You set Request.RequestType = 0x0; but according to USB 2.0 spec 9.4.10, it should be 0x01 for SET_INTERFACE request. So which return value did you get for SelectInterface() invocation? It should be EFI_DEVICE_ERROR with your original code, am I right? Thanks Feng -----Original Message----- From: Eric Wittmayer [mailto:e...@frescologic.com] Sent: Wednesday, June 17, 2015 14:06 To: Tian, Feng; edk2-devel@lists.sourceforge.net Subject: RE: [edk2] USB question: how change to a different alternate setting of an interface? Hi Feng, I'm still working to get my environment setup so I can see the debug messages from the USB stack. In the meantime, I made a simple test driver that looks for a USB webcam streaming interface and tries to select the first alternate. The product I'm writing a driver for isn't a webcam but that is the most common USB device with alternate settings. I wasn't sure if I should post the code to the list since it's not code to include in edk2 so I've made the source available at this link: https://www.yousendit.com/download/bXBhakluT2IwVW12eE1UQw Regards, Eric > -----Original Message----- > From: Tian, Feng [mailto:feng.t...@intel.com] > Sent: Thursday, June 11, 2015 12:26 AM > To: edk2-devel@lists.sourceforge.net; e...@frescologic.com > Cc: Tian, Feng > Subject: RE: [edk2] USB question: how change to a different alternate setting > of an interface? > > Hi, Eric > > It should be enough to get alternative setting through these two steps > you did. > > Could you let me know whether you saw this debug message " > UsbSelectSetting: setting %d selected for interface %d " got printed ? > and which values are in the printed message? > > Thanks > Feng > > -----Original Message----- > From: Eric Wittmayer [mailto:e...@frescologic.com] > Sent: Thursday, June 11, 2015 14:20 > To: edk2-devel@lists.sourceforge.net > Subject: [edk2] USB question: how change to a different alternate > setting of > an interface? > > Hello all, > I'm new to the list and to edk2/uefi. I'm working on a USB device > driver for a > device that has interrupt endpoints declared on interface alternate #1. So > the default interface descriptor has zero endpoints and the alternate > 1 interface descriptor has 2 endpoints. I am able to use > UsbIo->UsbControlTransfer to send a Set Interface command to the > UsbIo->device and > I can see on my usb analyzer that it does get sent. > After that I call UsbIo->UsbGetInterfaceDescriptor again to get what I > expected was the interface descriptor for alternate #1 but I get back > the same descriptor as before I set the interface. > Looking through the code I can see in the XhciDxe code for > XhcControlTransfer that it handles updating the xhci controllers > representation of the endpoints when it sees the select interface > command but I'm not sure if there is something else I need to do in > order to update the > data returned by UsbGetInterfaceDescriptor. > > How do I get the correct descriptors for the newly active alternate setting? > Will they have a different UsbIo protocol handle and if so how do I > find it? > > Thanks for any help. > Eric > > > > ---------------------------------------------------------------------------- -- > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel