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 <[email protected]> >>> --- >>> 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.

