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

Reply via email to