Re: [edk2] Help debugging PEIM on Minnowboard Max

2015-08-17 Thread Eric Wittmayer
Hi Feng,
   Now I understand the concept.  I was expecting that PEIM would already be
available for the Minnowboard Max.  Is Usb in the PEI phase not supported in
Minnowboard?

From my digging in the code today, it seems to enable the xhci controller,
it's PCI BAR needs to be set and enabled for memory access.  I found memory
base addresses for some devices in
Vlv2DeviceRefCodePkg\ValleyView2Soc\NorthCluster\Include\PlatformBaseAddress
es.h but not for XHCI.  From looking at the Atom E3800 datasheet, the xhci
memory base doesn't have a fixed location so I believe I need to pick an
unused range in the Low MMIO space to set as the xhci BAR. 

If you or someone else on the list can recommend a different platform that
already supports xhci in the PEI phase to use as a development platform that
might be a better option for me.

Thank you again for your patience and prompt responses.

Eric

 -Original Message-
 From: Tian, Feng [mailto:feng.t...@intel.com]
 Sent: Sunday, August 16, 2015 10:20 PM
 To: Eric Wittmayer; edk2-devel@lists.01.org
 Cc: Tian, Feng
 Subject: RE: [edk2] Help debugging PEIM on Minnowboard Max
 
 Do you look into the UsbController.h in MdeModulePkg/Include/Ppi
 directory?
 
 typedef
 EFI_STATUS
 (EFIAPI *PEI_GET_USB_CONTROLLER)(
   IN  EFI_PEI_SERVICES**PeiServices,
   IN  PEI_USB_CONTROLLER_PPI  *This,
   IN  UINT8   UsbControllerId,
   OUT UINTN   *ControllerType,
   OUT UINTN   *BaseAddress
   );
 
 You need write a PEIM to produce this PPI and implement the above
 interface according to your platform setting.
 
 For how to write a PEIM module, you can refer to EDKII Module Writer's
 Guide in edk2.sourceforge.net
 
 Thanks
 Feng
 
 -Original Message-
 From: Eric Wittmayer [mailto:e...@frescologic.com]
 Sent: Monday, August 17, 2015 11:50
 To: Tian, Feng; edk2-devel@lists.01.org
 Subject: RE: [edk2] Help debugging PEIM on Minnowboard Max
 
 Hi Feng,
I see now that XhciPei needs gPeiUsbControllerPpiGuid and creates
 gPeiUsbHostControllerPpiGuid  which UsbBusPei needs.
 
 I can't seem to figure out what creates gPeiUsbControllerPpiGuid?  I see
it
 listed in the .dec file I'm using but that apparently isn't enough to
 install the Ppi.   What should be installing the gPeiUsbControllerPpiGuid?
 
 Thanks,
 Eric
 
  -Original Message-
  From: Tian, Feng [mailto:feng.t...@intel.com]
  Sent: Sunday, August 16, 2015 6:09 PM
  To: Eric Wittmayer; edk2-devel@lists.01.org
  Cc: Tian, Feng
  Subject: RE: [edk2] Help debugging PEIM on Minnowboard Max
 
  Eric,
 
  I must agree the naming of these usb pei related ppi guids are not
  good, which misleads you.
 
  There is no the chicken and egg problem. gPeiUsbHostControllerPpiGuid
  and gPeiUsbControllerPpiGuid are two different ppis. The former is
  consumed by UsbPei and the latter is consumed by XhciPei. You need
  write a pei module to produce PeiUsbControllerPpi (see
  MdeModulePkg/Include/Ppi for
  definitions) at first.
 
  Thanks
  Feng
 
  -Original Message-
  From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
  Eric Wittmayer
  Sent: Saturday, August 15, 2015 08:12
  To: edk2-devel@lists.01.org
  Subject: [edk2] Help debugging PEIM on Minnowboard Max
 
  I'm writing a PEIM for a USB3 device but having trouble even getting
  the UsbBusPie and XhciPei modules to load during boot.
 
  I thought getting the existing Usb Peims to load would be a good first
 step.
  I looked at the DEPEX for both of the above modules and tried removing
  gEfiPeiBootInRecoveryModePpiGuid but I didn't see them load.  If I
  set both of their DEPEX == TRUE then I see some print statements that
  show they are at least trying to load but then I have a chicken and
  egg problem
 in
  that UsbBusPie needs either gPeiUsbHostControllerPpiGuid or
  gPeiUsb2HostControllerPpiGuid which come from XhciPei.  However,
  XhciPei needs gPeiUsbControllerPpiGuid which comes from UsbBusPei
  before  it will install the gPeiUsb2HostControllerPpiGuid.  The same
  cross dependency is shown in the DEPEX for these two modules.
 
  I feel like I'm missing something simple and fundamental and I'm
  hoping someone will point me in the right direction.
 
  Thanks,
  Eric W
 
  ___
  edk2-devel mailing list
  edk2-devel@lists.01.org
  https://lists.01.org/mailman/listinfo/edk2-devel


___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


[edk2] Help debugging PEIM on Minnowboard Max

2015-08-14 Thread Eric Wittmayer
I'm writing a PEIM for a USB3 device but having trouble even getting the
UsbBusPie and XhciPei modules to load during boot.

I thought getting the existing Usb Peims to load would be a good first step.
I looked at the DEPEX for both of the above modules and tried removing
gEfiPeiBootInRecoveryModePpiGuid but I didn't see them load.  If I set
both of their DEPEX == TRUE then I see some print statements that show they
are at least trying to load but then I have a chicken and egg problem in
that UsbBusPie needs either gPeiUsbHostControllerPpiGuid or
gPeiUsb2HostControllerPpiGuid which come from XhciPei.  However, XhciPei
needs gPeiUsbControllerPpiGuid which comes from UsbBusPei before  it will
install the gPeiUsb2HostControllerPpiGuid.  The same cross dependency is
shown in the DEPEX for these two modules.

I feel like I'm missing something simple and fundamental and I'm hoping
someone will point me in the right direction.

Thanks,
Eric W

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel


Re: [edk2] write to usb device error--help

2015-07-23 Thread Eric Wittmayer
Chanson,
  Until very recently, the USB stack didn't support interrupt out.  If you
are using the sources from the UDK or are running a driver against almost
any EFI build already in a system you will get an error.  Interestingly, the
sources I check all return EFI_INVALID_PARAMETER so you may have a
completely different issue.

The change to enable Interrupt Out is easy, just remove the 3 lines of code
that check *_IS_DATAIN in the SyncInterruptTransfer code.
Here is a list of the files and function names you need to modify based on
the source I'm looking at, which is the UDK so older that the current EDK2
trunk.

MdeModulePkg\Bus\Pci\XhciDxe\Xhci.c: XhcSyncInterruptTransfer
MdeModulePkg\Bus\Pci\EhciDxe\Ehci.c: EhcSyncInterruptTransfer

Hope that helps,
Eric

 -Original Message-
 From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of
 ChansonShen
 Sent: Thursday, July 23, 2015 1:36 AM
 To: edk2-devel@lists.01.org
 Subject: [edk2] write to usb device error--help
 
 Hi,
 
 
 When I want to use EFI_USB_IO_PROTOCOL.UsbSyncInterruptTransfer() to
 write data to usb device, it will return EFI_DEVICE_ERROR.
 
 
 I think all the parameters passing to the function are right. Besides, the
 device is well-functioning, because when I use libusb-dev to implement the
 same function, it works well. Any idea what could be the cause?
 
 Thanks,
 
 Chanson
 ___
 edk2-devel mailing list
 edk2-devel@lists.01.org
 https://lists.01.org/mailman/listinfo/edk2-devel

___
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel