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