Hi Andrew,
You are correct, Once the hardware block is initialized, the controller is
XHCI mode. Hence I was referring to the
'MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe.inf'
driver, this is exactly what I need. If the support and start methods of
the driver binding protocol for this driver are called, it will quickly set
everything up, as long as I can initialize the hardware before this.
I was trying to avoid putting it in gEfiPciRootBridgeIoProtocolGuid driver
because I would like to drop the driver if a board does not have any USB
support. This way I don't touch the USB controller at all, if the driver
for it is not included in UEFI image.
Thank You.
On Fri, Aug 29, 2014 at 4:06 PM, Andrew Fish <[email protected]> wrote:
>
> 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
>
>
------------------------------------------------------------------------------
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