On Aug 29, 2014, at 3:48 PM, Narinder Dhillon <[email protected]> wrote:

> Hi Andrew,
> 
> We have a driver that implements gEfiPciRootBridgeIoProtocolGuid. So the PCIe 
> bus is being enumerated and the connect controller call is coming in. Since 
> there is a ready implementation of xHCI available, I am trying to figure how 
> to do it.
> 
> If I implement a DXE driver, what protocol would I consume and what would I 
> produce so that the connect controller will go looking for protocols in the 
> USB stack ?
> I apologize if the question sounds odd, just started working on UEFI firmware.
> 

It seems your hardware setup is putting the PCIe device into XHCI mode.  Thus 
to me it seems like part of the driver for the SoC. The driver for the SoC 
would be driver producing gEfiPciRootBridgeIoProtocolGuid. So I would put it in 
the driver that produces gEfiPciRootBridgeIoProtocolGuid.

I can’t give you a better answer unless you tell me what kind of setup is being 
done to the device.

Thanks,

Andrew Fish

> Thank You.
> 
> 
> On Fri, Aug 29, 2014 at 3:32 PM, Andrew Fish <[email protected]> wrote:
> 
> On Aug 29, 2014, at 3:22 PM, Narinder Dhillon <[email protected]> wrote:
> 
>> Hi All,
>> 
>> I am trying to implement a USB driver for a xHCI controller that is sitting 
>> on a PCIe bus, on a ARM SoC. I was looking at the current implementations 
>> and saw that Beagle board has a similar implementation. Ideally, I would 
>> like to add these lines to my project files and it should work:
>> 
>> INF MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf
>> INF MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf
>> INF MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe.inf
>> 
>> The only issue is that I need to initialize the hardware block before this 
>> driver stack can use the hardware. 
>> 
>> My question is, where/how do I add this initialization sequence so that when 
>> connect controller call comes to this driver stack, it will recognize the 
>> xHCI controller and set everything up ?
>> 
> 
> The generic answer is a DXE driver. A INF file with no [Depex] means wait for 
> all the EFI services are available before you load. The connect will happen 
> in the BDS, so after all the drivers have been dispatched. In the driver 
> model the 1st protocol in a connect sequence is always produced by a DXE 
> driver, as you need an existing handle to do the gBS->ConnectController() on. 
> 
> What driver do you use to produce gEfiPciRootBridgeIoProtocolGuid? That is 
> the DXE driver that should be abstracting your PCIe bus. You could do it 
> there if it has a platform specific component, or build a DXE driver that 
> depends on gEfiPciRootBridgeIoProtocolGuid.
> 
> Thanks,
> 
> Andrew Fish
> 
>> Thank You.
>> ------------------------------------------------------------------------------
>> Slashdot TV.  
>> Video for Nerds.  Stuff that matters.
>> http://tv.slashdot.org/_______________________________________________
>> edk2-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> 
> ------------------------------------------------------------------------------
> Slashdot TV.
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> 
> 
> ------------------------------------------------------------------------------
> Slashdot TV.  
> Video for Nerds.  Stuff that matters.
> http://tv.slashdot.org/_______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to