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

> 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.
> 

You can use a PCD feature flag in the driver to control the feature from the 
platform .DSC file.

Thanks,

Andrew Fish

> 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

------------------------------------------------------------------------------
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