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

Stefan Agner stefan at agner.ch
Sun Jul 19 12:59:19 CEST 2020


Figured that the device tree deployed on the boot partition indeed still
had the necessary nodes missing...

With that fixed, current master without any further patches detects the
USB controller just fine, and I was able to use at least two different
USB mass storage device just fine!

Sorry for the noise! And thanks for all your work!

--
Stefan

On 2020-07-19 02:37, Stefan Agner wrote:
> Hi Nicolas,
> 
> On 2020-06-29 18:37, Nicolas Saenz Julienne wrote:
>> Newer revisions of the RPi4 need their xHCI chip, VL805, firmware to be
>> loaded explicitly. Earlier versions didn't need that as they where using
>> an EEPROM for that purpose. This series takes care of setting up the
>> relevant infrastructure and run the firmware loading routine at the
>> right moment.
> 
> I tried using this patchset to boot from a USB mass storage device on
> RPi 4 with 8GB RAM. I updated the EEPROM firmware as well as deployed
> the latest GPU firmware (start4.elf/fixup4.dat) from the firmware master
> branch. I think with that I have new enough/correct versions.
> 
> The RPi 4 successfully boots U-Boot from a mass storage device. However,
> U-Boot itself is then not able to access USB. The output always shows
> -110 (timeout). It seems that the VL805 controller is not detected on
> the PCIe bus. Do you happen to know what I might be missing?
> 
> I tried current master (which has your patchset merged) as well as your
> vl805 branch on Github.
> 
> 
> U-Boot 2020.07-rc4-00036-gdeb48986ee (Jul 19 2020 - 02:29:44 +0200)
> 
> DRAM:  7.9 GiB
> RPI 4 Model B (0xd03114)
> MMC:   mmcnr at 7e300000: 1, emmc2 at 7e340000: 0
> Loading Environment from FAT... Card did not respond to voltage select!
> In:    serial
> Out:   vidconsole
> Err:   vidconsole
> Net:   eth0: genet at 7d580000
> PCIe BRCM: link up, 5.0 Gbps x1 (!SSC)
> Device 'pci_0:0.0': seq 0 is in use by 'pcie at 7d500000'
> starting USB...
> Bus xhci_pci: probe failed, error -110
> No working controllers found
> Hit any key to stop autoboot:  0 
> U-Boot> pci enum
> U-Boot> pci
> Scanning PCI devices on bus 0
> BusDevFun  VendorId   DeviceId   Device Class       Sub-Class
> _____________________________________________________________
> 00.00.00   0x14e4     0x2711     Bridge device           0x04
> 
> 
> --
> Stefan
> 
>>
>> Note that this builds on top of Sylwester Nawrocki's "USB host support
>> for Raspberry Pi 4 board" series.
>>
>> This also depends on a DT/bindings patch available on the linux-mailing lists:
>> https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg2205783.html
>>
>> Here is the relevant bit for reference/discussion:
>>
>>         &pcie0 {
>>                pci at 1,0 {
>>                        #address-cells = <3>;
>>                        #size-cells = <2>;
>>                        ranges;
>>
>>                        reg = <0 0 0 0 0>;
>>
>>                        usb at 1,0 {
>>                                reg = <0x10000 0 0 0 0>;
>>                                resets = <&reset
>> RASPBERRYPI_FIRMWARE_RESET_ID_USB>;
>>                        };
>>                };
>>         };
>>
>> ---
>>
>> Changes since v5:
>>  - Properly handle !CONFIG_IS_ENABLED(DM_RESET) in xchi code
>>
>> Changes since v4:
>>  - Correct DT PCI topology, I separated the root bridge and controller
>>    DT nodes
>>  - Get rid of PCI core patch as not needed with correct DT PCI topology
>>  - Move reset support to xchi core
>>
>> Changes since v3:
>>  - Use reset controller
>>
>> Changes since v2:
>>  - Correct comment on patch #1
>>  - Address Matthias' comments
>>
>> Changes since v1:
>>  - Rename function
>>  - Use callback in xhci-pci.c
>>
>> Nicolas Saenz Julienne (4):
>>   arm: rpi: Add function to trigger VL805's firmware load
>>   reset: Add Raspberry Pi 4 firmware reset controller
>>   configs: Enable support for reset controllers on RPi4
>>   usb: xhci: Add reset controller support
>>
>>  arch/arm/mach-bcm283x/include/mach/mbox.h     | 13 ++++
>>  arch/arm/mach-bcm283x/include/mach/msg.h      |  7 +++
>>  arch/arm/mach-bcm283x/msg.c                   | 46 ++++++++++++++
>>  configs/rpi_4_32b_defconfig                   |  1 +
>>  configs/rpi_4_defconfig                       |  1 +
>>  configs/rpi_arm64_defconfig                   |  1 +
>>  drivers/reset/Kconfig                         | 10 ++++
>>  drivers/reset/Makefile                        |  1 +
>>  drivers/reset/reset-raspberrypi.c             | 60 +++++++++++++++++++
>>  drivers/usb/host/xhci-mem.c                   |  2 +
>>  drivers/usb/host/xhci.c                       | 33 ++++++++++
>>  .../reset/raspberrypi,firmware-reset.h        | 13 ++++
>>  include/usb/xhci.h                            |  2 +
>>  13 files changed, 190 insertions(+)
>>  create mode 100644 drivers/reset/reset-raspberrypi.c
>>  create mode 100644 include/dt-bindings/reset/raspberrypi,firmware-reset.h


More information about the U-Boot mailing list