[PATCH v6 0/4] usb: xhci: Load Raspberry Pi 4 VL805's firmware
Stefan Agner
stefan at agner.ch
Sun Jul 19 02:37:51 CEST 2020
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