[PATCH 2/2] usb: xhci: Load Raspberry Pi 4 VL805's firmware

Marek Vasut marex at denx.de
Wed Apr 29 14:05:27 CEST 2020


On 4/29/20 12:10 PM, Nicolas Saenz Julienne wrote:
> On Tue, 2020-04-28 at 19:59 +0200, Marek Vasut wrote:
>> On 4/28/20 7:44 PM, Nicolas Saenz Julienne wrote:
>>> When needed, RPi4's co-processor (called VideoCore) has to be instructed
>>> to load VL805's firmware (the chip providing xHCI support). VideCore's
>>> firmware expects the board's PCIe bus to be already configured in order
>>> for it to load the xHCI chip firmware. So we have to make sure this
>>> happens in between the PCIe configuration and xHCI startup.
>>>
>>> Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne at suse.de>
>>> ---
>>>  drivers/usb/host/xhci-pci.c | 6 ++++++
>>>  1 file changed, 6 insertions(+)
>>>
>>> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
>>> index c1f60da541..5c17ea6932 100644
>>> --- a/drivers/usb/host/xhci-pci.c
>>> +++ b/drivers/usb/host/xhci-pci.c
>>> @@ -11,6 +11,8 @@
>>>  #include <usb.h>
>>>  #include <usb/xhci.h>
>>>  
>>> +#include <asm/arch/msg.h>
>>> +
>>>  static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
>>>  			  struct xhci_hcor **ret_hcor)
>>>  {
>>> @@ -18,6 +20,10 @@ static void xhci_pci_init(struct udevice *dev, struct
>>> xhci_hccr **ret_hccr,
>>>  	struct xhci_hcor *hcor;
>>>  	u32 cmd;
>>>  
>>> +#ifdef CONFIG_BCM2711
>>> +	bcm2711_load_vl805_firmware();
>>> +#endif
>>> +
>>>  	hccr = (struct xhci_hccr *)dm_pci_map_bar(dev,
>>>  			PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
>>>  	hcor = (struct xhci_hcor *)((uintptr_t) hccr +
>>
>> I think socfpga arria10 has some firmware loader implementation that is
>> generic, so can't we use that ?
> 
> I don't think so. I've been told the firmware upgrade protocol is private and
> specific to the VL80X family of devices. The Raspberry Pi foundation decided to
> implement it in their closed source VideoCore firmware.

What I meant was that U-Boot has a way to load files from various
storage roughly the same way Linux firmware loader API does.


More information about the U-Boot mailing list