mkam
Posts: 9
Joined: Sat Jan 23, 2021 10:04 am

USB 3.0 CM4 reference design VL805-Q6

Fri Feb 12, 2021 6:03 pm

Hello,

we are currently design our own carrier board for the CM4 and we need USB 3.0.
Does somebody have a working USB 3.0 with the CM4? I read different topics to USB 3.0 with the CM4 but it seems that only the VL805-Q6 is really working, right?

I know also this list: viewtopic.php?f=98&t=288740

@ RPI Developers: It is possible to get a reference schematic from the 4B especially for the VL805-Q6 with EEPROM? What is the partnumber for the EEPROM? Will the EEPROM flashed by the RPI OS or how it works?

It would be great, if the RPI developer team can give a reference for USB 3.0 with the CM4.

kind regards,
mkam

cleverca22
Posts: 4920
Joined: Sat Aug 18, 2012 2:33 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 12:54 am

Code: Select all

root@raspberrypi:~# /home/pi/flashrom -p vl805:pci=01:00.0
flashrom unknown on Linux 4.19.75-v7l+ (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found "VIA VL805" (1106:3483, BDF 01:00.0).
===
This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output
to flashrom@flashrom.org if it works for you. Please add the name of your
PCI device to the subject. Thank you for your help!
===
Found Winbond flash chip "W25X10" (128 kB, SPI) on vl805.
No operations were specified.
root@raspberrypi:~# /home/pi/flashrom -p vl805:pci=01:00.0 -VVV
flashrom unknown on Linux 4.19.75-v7l+ (armv7l)
flashrom is free software, get the source code at https://flashrom.org

flashrom was built with libpci 3.6.2, GCC 8.3.0, little endian
Command line (3 args): /home/pi/flashrom -p vl805:pci=01:00.0 -VVV
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Initializing vl805 programmer
Found "VIA VL805" (1106:3483, BDF 01:00.0).
===
This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output
to flashrom@flashrom.org if it works for you. Please add the name of your
PCI device to the subject. Thank you for your help!
===
PCI header type 0x00
Requested BAR is of type MEM, 64bit, not prefetchable
pcidev_init returned 0x19554d8
VL805 firmware version 0x00013701
The following protocols are supported: SPI.
Probing for AMIC A25L010, 128 kB: programmer_map_flash_region: mapping A25L010 from 0xfffe0000 to 0x00000000
RDID returned 0xff 0xff 0xff. RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff
programmer_unmap_flash_region: unmapped 0x00000000
....
Probing for Spansion S25FL256S......0, 32768 kB: programmer_map_flash_region: mapping S25FL256S......0 from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P16, 2048 kB: programmer_map_flash_region: mapping W25P16 from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P32, 4096 kB: programmer_map_flash_region: mapping W25P32 from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P80, 1024 kB: programmer_map_flash_region: mapping W25P80 from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.V, 16384 kB: programmer_map_flash_region: mapping W25Q128.V from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.V..M, 16384 kB: programmer_map_flash_region: mapping W25Q128.V..M from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.W, 16384 kB: programmer_map_flash_region: mapping W25Q128.W from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.JW.DTR, 16384 kB: programmer_map_flash_region: mapping W25Q128.JW.DTR from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q16.V, 2048 kB: programmer_map_flash_region: mapping W25Q16.V from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q16.W, 2048 kB: programmer_map_flash_region: mapping W25Q16.W from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q20.W, 256 kB: programmer_map_flash_region: mapping W25Q20.W from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q256.V, 32768 kB: programmer_map_flash_region: mapping W25Q256.V from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q256JV_M, 32768 kB: programmer_map_flash_region: mapping W25Q256JV_M from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q32.V, 4096 kB: programmer_map_flash_region: mapping W25Q32.V from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q32.W, 4096 kB: programmer_map_flash_region: mapping W25Q32.W from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40.V, 512 kB: programmer_map_flash_region: mapping W25Q40.V from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40BW, 512 kB: programmer_map_flash_region: mapping W25Q40BW from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40EW, 512 kB: programmer_map_flash_region: mapping W25Q40EW from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q64.V, 8192 kB: programmer_map_flash_region: mapping W25Q64.V from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q64.W, 8192 kB: programmer_map_flash_region: mapping W25Q64.W from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80.V, 1024 kB: programmer_map_flash_region: mapping W25Q80.V from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80BW, 1024 kB: programmer_map_flash_region: mapping W25Q80BW from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80EW, 1024 kB: programmer_map_flash_region: mapping W25Q80EW from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X10, 128 kB: programmer_map_flash_region: mapping W25X10 from 0xfffe0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Found Winbond flash chip "W25X10" (128 kB, SPI) on vl805.
Chip status register is 0x00.
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X16, 2048 kB: programmer_map_flash_region: mapping W25X16 from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X20, 256 kB: programmer_map_flash_region: mapping W25X20 from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X32, 4096 kB: programmer_map_flash_region: mapping W25X32 from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X40, 512 kB: programmer_map_flash_region: mapping W25X40 from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X64, 8192 kB: programmer_map_flash_region: mapping W25X64 from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X80, 1024 kB: programmer_map_flash_region: mapping W25X80 from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Zetta Device ZD25D20, 256 kB: programmer_map_flash_region: mapping ZD25D20 from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Zetta Device ZD25D40, 512 kB: programmer_map_flash_region: mapping ZD25D40 from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Unknown SFDP-capable chip, 0 kB: spi_sfdp_read_sfdp_chunk: addr=0x0, len=2, data:
 0x00 0x00
spi_sfdp_read_sfdp_chunk: addr=0x2, len=2, data:
 0x00 0x00
Signature = 0x00000000 (should be 0x50444653)
No SFDP signature found.
Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID returned 0xef 0x30 0x11 0x00. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Eon unknown Eon SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for PMC unknown PMC SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for SST unknown SST SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for ST unknown ST SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Generic unknown SPI chip (RDID), 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Generic unknown SPI chip (REMS), 0 kB: REMS returned 0xef 0x10. probe_spi_rems: id1 0xef, id2 0x10
Found Winbond flash chip "W25X10" (128 kB, SPI).
No operations were specified.
root@raspberrypi:~# 
this is an old log file from when i was testing the vl805 spi controller driver in flashrom, it reveals that my pi had a W25X10 128kB chip

Technologov
Posts: 33
Joined: Wed Jan 20, 2021 4:49 am

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 3:57 am

Yes, we are also interested in Raspberry Pi4 reference design in KiCad, also due to VLI805 USB3 controller.

mkam
Posts: 9
Joined: Sat Jan 23, 2021 10:04 am

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 10:09 am

HI Cleverca22,

was your test successfull? Does USB 3.0 work?

I found a reference schematic: https://www.waveshare.com/w/upload/a/af ... SchDoc.pdf
Datasheet: https://forums.developer.nvidia.com/t/p ... d/143085/7

cleverca22 wrote:

Code: Select all

root@raspberrypi:~# /home/pi/flashrom -p vl805:pci=01:00.0
flashrom unknown on Linux 4.19.75-v7l+ (armv7l)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found "VIA VL805" (1106:3483, BDF 01:00.0).
===
This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output
to flashrom@flashrom.org if it works for you. Please add the name of your
PCI device to the subject. Thank you for your help!
===
Found Winbond flash chip "W25X10" (128 kB, SPI) on vl805.
No operations were specified.
root@raspberrypi:~# /home/pi/flashrom -p vl805:pci=01:00.0 -VVV
flashrom unknown on Linux 4.19.75-v7l+ (armv7l)
flashrom is free software, get the source code at https://flashrom.org

flashrom was built with libpci 3.6.2, GCC 8.3.0, little endian
Command line (3 args): /home/pi/flashrom -p vl805:pci=01:00.0 -VVV
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Initializing vl805 programmer
Found "VIA VL805" (1106:3483, BDF 01:00.0).
===
This PCI device is UNTESTED. Please report the 'flashrom -p xxxx' output
to flashrom@flashrom.org if it works for you. Please add the name of your
PCI device to the subject. Thank you for your help!
===
PCI header type 0x00
Requested BAR is of type MEM, 64bit, not prefetchable
pcidev_init returned 0x19554d8
VL805 firmware version 0x00013701
The following protocols are supported: SPI.
Probing for AMIC A25L010, 128 kB: programmer_map_flash_region: mapping A25L010 from 0xfffe0000 to 0x00000000
RDID returned 0xff 0xff 0xff. RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff
programmer_unmap_flash_region: unmapped 0x00000000
....
Probing for Spansion S25FL256S......0, 32768 kB: programmer_map_flash_region: mapping S25FL256S......0 from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P16, 2048 kB: programmer_map_flash_region: mapping W25P16 from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P32, 4096 kB: programmer_map_flash_region: mapping W25P32 from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25P80, 1024 kB: programmer_map_flash_region: mapping W25P80 from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.V, 16384 kB: programmer_map_flash_region: mapping W25Q128.V from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.V..M, 16384 kB: programmer_map_flash_region: mapping W25Q128.V..M from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.W, 16384 kB: programmer_map_flash_region: mapping W25Q128.W from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q128.JW.DTR, 16384 kB: programmer_map_flash_region: mapping W25Q128.JW.DTR from 0xff000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q16.V, 2048 kB: programmer_map_flash_region: mapping W25Q16.V from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q16.W, 2048 kB: programmer_map_flash_region: mapping W25Q16.W from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q20.W, 256 kB: programmer_map_flash_region: mapping W25Q20.W from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q256.V, 32768 kB: programmer_map_flash_region: mapping W25Q256.V from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q256JV_M, 32768 kB: programmer_map_flash_region: mapping W25Q256JV_M from 0xfe000000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q32.V, 4096 kB: programmer_map_flash_region: mapping W25Q32.V from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q32.W, 4096 kB: programmer_map_flash_region: mapping W25Q32.W from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40.V, 512 kB: programmer_map_flash_region: mapping W25Q40.V from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40BW, 512 kB: programmer_map_flash_region: mapping W25Q40BW from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q40EW, 512 kB: programmer_map_flash_region: mapping W25Q40EW from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q64.V, 8192 kB: programmer_map_flash_region: mapping W25Q64.V from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q64.W, 8192 kB: programmer_map_flash_region: mapping W25Q64.W from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80.V, 1024 kB: programmer_map_flash_region: mapping W25Q80.V from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80BW, 1024 kB: programmer_map_flash_region: mapping W25Q80BW from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25Q80EW, 1024 kB: programmer_map_flash_region: mapping W25Q80EW from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X10, 128 kB: programmer_map_flash_region: mapping W25X10 from 0xfffe0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Found Winbond flash chip "W25X10" (128 kB, SPI) on vl805.
Chip status register is 0x00.
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X16, 2048 kB: programmer_map_flash_region: mapping W25X16 from 0xffe00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X20, 256 kB: programmer_map_flash_region: mapping W25X20 from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X32, 4096 kB: programmer_map_flash_region: mapping W25X32 from 0xffc00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X40, 512 kB: programmer_map_flash_region: mapping W25X40 from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X64, 8192 kB: programmer_map_flash_region: mapping W25X64 from 0xff800000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Winbond W25X80, 1024 kB: programmer_map_flash_region: mapping W25X80 from 0xfff00000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Zetta Device ZD25D20, 256 kB: programmer_map_flash_region: mapping ZD25D20 from 0xfffc0000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Zetta Device ZD25D40, 512 kB: programmer_map_flash_region: mapping ZD25D40 from 0xfff80000 to 0x00000000
RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
programmer_unmap_flash_region: unmapped 0x00000000
Probing for Unknown SFDP-capable chip, 0 kB: spi_sfdp_read_sfdp_chunk: addr=0x0, len=2, data:
 0x00 0x00
spi_sfdp_read_sfdp_chunk: addr=0x2, len=2, data:
 0x00 0x00
Signature = 0x00000000 (should be 0x50444653)
No SFDP signature found.
Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID returned 0xef 0x30 0x11 0x00. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Eon unknown Eon SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for PMC unknown PMC SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for SST unknown SST SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for ST unknown ST SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Winbond unknown Winbond (ex Nexcom) SPI chip, 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Generic unknown SPI chip (RDID), 0 kB: RDID returned 0xef 0x30 0x11. probe_spi_rdid_generic: id1 0xef, id2 0x3011
Probing for Generic unknown SPI chip (REMS), 0 kB: REMS returned 0xef 0x10. probe_spi_rems: id1 0xef, id2 0x10
Found Winbond flash chip "W25X10" (128 kB, SPI).
No operations were specified.
root@raspberrypi:~# 
this is an old log file from when i was testing the vl805 spi controller driver in flashrom, it reveals that my pi had a W25X10 128kB chip

fanoush
Posts: 841
Joined: Mon Feb 27, 2012 2:37 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 10:59 am

mkam wrote:
Fri Feb 12, 2021 6:03 pm
What is the partnumber for the EEPROM? Will the EEPROM flashed by the RPI OS or how it works?
I just tried vl805 binary from https://github.com/raspberrypi/rpi-eepr ... ware/vl805 with random VIA 805 PCI-E card in CM4 IO board and got this output

Code: Select all

pi@raspberrypi:~ $ sudo ./vl805 -d -r 805.bin
VL805 FW version: 00013600
W CHIP_SEL 00000001
R PCI_WB_EN ffffffff
W PCI_WB_EN ffffff01
R STOP_POLLING 00000001
W STOP_POLLING 00000001
W CTRL_REG 000005a0
W CLK_DIV 0000000a
W CHIP_SEL 00000000
W Tx_REG0 90000000
W CTRL_REG 000005c0
R Rx_REG0 5e125e12
W CHIP_SEL 00000001
W CTRL_REG 00000000
* flash ID mismatch - found 5e12, expected 0000ef10

so I cannot even backup current firmware. Writing probably wouldn't work too.
cleverca22 wrote: when i was testing the vl805 spi controller driver in flashrom,
It seems this driver is not in current flashrom source. Found some patch where you are mentioned https://www.mail-archive.com/flashrom@f ... 14389.html Where would I find current source of your driver code?

User avatar
MikeDB
Posts: 732
Joined: Sun Oct 12, 2014 8:27 am
Contact: Website

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 11:13 am

Where do you intend to get VL805 ICs from ? It's an IC usually only sold to OEMs in large quantities. There are a few on the surplus market but it's not a reliable supply.
Always interested in innovative audio startups needing help and investment. Find me on our website.

Technologov
Posts: 33
Joined: Wed Jan 20, 2021 4:49 am

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 11:49 am

Call to Raspberry Pi Foundation to help redistribute VLI805 chips through Digikey. (or officially recommend another USB3 controller, along with schematics)

timg236
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 926
Joined: Thu Jun 21, 2018 4:30 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 1:24 pm

fanoush wrote:
Sat Feb 13, 2021 10:59 am
mkam wrote:
Fri Feb 12, 2021 6:03 pm
What is the partnumber for the EEPROM? Will the EEPROM flashed by the RPI OS or how it works?
I just tried vl805 binary from https://github.com/raspberrypi/rpi-eepr ... ware/vl805 with random VIA 805 PCI-E card in CM4 IO board and got this output

Code: Select all

pi@raspberrypi:~ $ sudo ./vl805 -d -r 805.bin
VL805 FW version: 00013600
W CHIP_SEL 00000001
R PCI_WB_EN ffffffff
W PCI_WB_EN ffffff01
R STOP_POLLING 00000001
W STOP_POLLING 00000001
W CTRL_REG 000005a0
W CLK_DIV 0000000a
W CHIP_SEL 00000000
W Tx_REG0 90000000
W CTRL_REG 000005c0
R Rx_REG0 5e125e12
W CHIP_SEL 00000001
W CTRL_REG 00000000
* flash ID mismatch - found 5e12, expected 0000ef10

so I cannot even backup current firmware. Writing probably wouldn't work too.
cleverca22 wrote: when i was testing the vl805 spi controller driver in flashrom,
It seems this driver is not in current flashrom source. Found some patch where you are mentioned https://www.mail-archive.com/flashrom@f ... 14389.html Where would I find current source of your driver code?
The vl805 executable in the rpi-eeprom is specific to Pi 4B is not maintained any more and has never been tested on PCIe cards and won't be included in the rpi-eeprom APT package in future. rpi-eeprom-update already refuses to run this on anything but Pi 4B.

Of course, you can download the binary from Git and use it at your own risk on VL805 based PCIe cards.

Flashrom seems like a good choice for open-source for flashing USB controller EEPROMs (not just VLI) and I'm sure that there are people on the forums who wouldn't have too much trouble updating the existing patches on the flashrom mailing list.

I wouldn't assume that you'll get special support for the VL805 from RPTL. RPTL have a closed source VL805 FW binary with a couple of tweaks by VIA (turn off 2x USB3.0 phys I think) for Raspberry Pi 4B and no special magic for debugging the FW or inside knowledge of that chip.
Presumably, any datasheets required for the board-design were under NDA from VIA in which case it would be a matter of asking VIA to publish enough information for people to do their own board designs.

Maybe if that happened then there would be interest for distributors to sell small quantities of VL805 or other USB3.0 XHCi controllers but I have no insight into the commercial practicalities of that e.g. minimum volumes

cleverca22
Posts: 4920
Joined: Sat Aug 18, 2012 2:33 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 2:00 pm

timg236 wrote:
Sat Feb 13, 2021 1:24 pm
RPTL have a closed source VL805 FW binary with a couple of tweaks by VIA (turn off 2x USB3.0 phys I think) for Raspberry Pi 4B and no special magic for debugging the FW or inside knowledge of that chip.
that aligns with what ive seen elsewhere
somebody from the rpi irc channel mentioned they took an rpi vl805 firmware, and flashed it to a pci-e card to fix a UAS bug that is only fixed on the pi
but as a side-effect, 2 of the usb ports downgraded to usb2.0 only
mkam wrote:
Sat Feb 13, 2021 10:09 am
HI Cleverca22,

was your test successfull? Does USB 3.0 work?
ive not modified the pcb in any way or created my own, i was just helping to test out the flashrom patches that let it flash the spi chip

this is one of my copies of that patch, i'm not sure if its newer then the mailing list one or not

ive also been digging into what exactly the vl805 blob contains, but the only progress ive made, is that its an 8051 based cpu, and you need to ignore the first 0x80 bytes when decompiling (its a header of some kind, similiar to some VIA hub formware)

timg236
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 926
Joined: Thu Jun 21, 2018 4:30 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Sat Feb 13, 2021 3:21 pm

I think it's reasonable to assume that the VL805 FW on Pi 4B has been optimized in terms of power and performance to match the requirements of Pi 4B and Pi400. I genuinely don't know what internal changes were made but one could imagine resource allocations and priorities could be tweaked given there are only 2 USB3.0 ports.

Since RPTL has agreements with its suppliers please don't use the forums to reverse engineer FW. Other mods know the rules better than me so I'm erring on the side of caution!

markus3141
Posts: 39
Joined: Thu May 31, 2012 2:15 pm
Location: near Hamburg, Germany

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Apr 14, 2021 7:47 am

Has anyone ever attempted to create an own VL805-Q6 board? The documentation is kind of available and chips are available from AliExpress for one-off projects, the only problem I'm seeing is the flash rom contents. Since the one from the Pi 4 won't work, can I just clone one from a random VL805 PCIe card assuming they aren't using any tweaks?

msl
Posts: 190
Joined: Tue Jul 07, 2020 9:12 pm
Location: Munich
Contact: Website Twitter

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Apr 14, 2021 11:19 pm

markus3141 wrote:
Wed Apr 14, 2021 7:47 am
Has anyone ever attempted to create an own VL805-Q6 board?
I have own custom carrier with CM4 and 2x USB3.0 ports @ VL805 and EEPROM flashed via PCIe
markus3141 wrote:
Wed Apr 14, 2021 7:47 am
Since the one from the Pi 4 won't work
It DOES work same way as on Pi4
markus3141 wrote:
Wed Apr 14, 2021 7:47 am
can I just clone one from a random VL805 PCIe card assuming they aren't using any tweaks?
It does work as well. And it’s available for download from different sources, ie you don’t have to dump it. Using non-Pi4 fw takes sense only if you need 4x USB3.0 ports. Otherwise Pi4 fw is better in terms of UAS(?) fixes and power consumption improvements.

PS as per @timg236 warning, I will not be discussing tweaks and walkarounds

firasgany7
Posts: 2
Joined: Thu Jan 21, 2021 12:03 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Fri Apr 23, 2021 3:23 pm

I'm interested in buying a VL805 Q6 chip and I wanted to know if there is a chance to update the external SPI flash through the Host Controller (VL805) itself and not by using an external programmer for the SPI.
A friend of mine bought this chip and made a custom PCIE to USB 3.1 adapter but he had to flash the SPI flash using an external programmer called Dediprog.
this could be a very complicated procedure if my company decides to sell a similar product
in big quantities. so I wanted a consultation from VIA LABAS engineers in order to know if there is a chance to flash the SPI (for the first time) using the PC\Vl805 Chip without the need of an external programmer.

cleverca22
Posts: 4920
Joined: Sat Aug 18, 2012 2:33 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Fri Apr 23, 2021 4:04 pm

firasgany7 wrote:
Fri Apr 23, 2021 3:23 pm
I'm interested in buying a VL805 Q6 chip and I wanted to know if there is a chance to update the external SPI flash through the Host Controller (VL805) itself and not by using an external programmer for the SPI.
https://github.com/raspberrypi/rpi-eepr ... b/firmware

the vl805 file here, is a static arm32-linux binary

it will talk to the vl805 chip over the pci-e bus, and re-flash the spi
one user i talked to on irc, even successfully ran it on x86 (via qemu-user-arm), and was able to reflash a normal pci-e board

there are also patches to add support to flashrom, but you likely dont need those

garbagecan
Posts: 1
Joined: Mon Jun 28, 2021 8:14 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Mon Jun 28, 2021 9:50 pm

How are people programming the VL805 on their custom CM carrier boards? Vialabs isn't much help

Can you do it through the PCIe interface, or do you have to directly write to the SPI flash. If it's the latter I'm wondering if it's easier to do a DIP socket so you can easily drop in a chip where you do the programming on a different board.

Also from what I've read the raspberry pi firmware limits it to 2 USB 3 and 2 USB 2, but the vialabs default firmware has all 4 enabled. Are there any other issues to look for, and where can I find the latest firmware?

cleverca22
Posts: 4920
Joined: Sat Aug 18, 2012 2:33 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 5:10 am

https://github.com/raspberrypi/rpi-eepr ... b/firmware

the vl805 binary in here will hijack the internal SPI controller of the vl805, and re-flash the chip over the pci-e bus, even if the firmware is entirely missing

there are also patches for flashrom to do the same thing over pci-e, and you can likely just write the .bin to the SPI chip directly with plain flashrom as well
garbagecan wrote:
Mon Jun 28, 2021 9:50 pm
Also from what I've read the raspberry pi firmware limits it to 2 USB 3 and 2 USB 2, but the vialabs default firmware has all 4 enabled. Are there any other issues to look for, and where can I find the latest firmware?
i ran into a user on irc, that was getting the same UAS bugs as the rpi4, on an x86 machine
he ran vl805 under qemu-user-arm and successfully reflashed the pcie card in the x86 machine, with the rpi4 version of the firmware
it did fix the UAS bug, but it also disabled 2 of the usb3 ports

until somebody RE's the firmware and re-implements everything and fixes every bug, your only option is to get vialabs to send you the new firmware

dp11
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 671
Joined: Thu Dec 29, 2011 5:46 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 7:42 am

If you put VL805=1 in the EEPROM config file of the CM4. Then the CM4 will configure the VL805 just like a Pi4 configures the VL805, no SPI prom is needed for the VL805.

User avatar
Gavinmc42
Posts: 6307
Joined: Wed Aug 28, 2013 3:31 am

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 10:24 am

This all seems like a PITA.
is there any alternative chips that do the same sort of things but are more "open"?

Hmm PCIe to FPGA is working?
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

dp11
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 671
Joined: Thu Dec 29, 2011 5:46 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 10:30 am

Gavinmc42 wrote:
Wed Jun 30, 2021 10:24 am
This all seems like a PITA.
is there any alternative chips that do the same sort of things but are more "open"?
What is complex about setting VL805=1 in the CM4 EEPROM , no other setup or device programming required?

User avatar
Gavinmc42
Posts: 6307
Joined: Wed Aug 28, 2013 3:31 am

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 11:07 am

What is complex about setting VL805=1 in the CM4 EEPROM
Getting the actual VL805 part itself and making drivers for weird USB things.

Having CM4 reference designs that only rely on one specific part.
While Plan A works most of the time a plan B and C should always be ready to go. Chip shortages have brought this home to roost.

Glad I am not working on real CM4 Hardware designs yet.
Those virtual ones I have in my head are without USB3.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

dp11
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 671
Joined: Thu Dec 29, 2011 5:46 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 11:42 am

Gavinmc42 wrote:
Wed Jun 30, 2021 11:07 am
What is complex about setting VL805=1 in the CM4 EEPROM
Getting the actual VL805 part itself and making drivers for weird USB things.

Having CM4 reference designs that only rely on one specific part.
While Plan A works most of the time a plan B and C should always be ready to go. Chip shortages have brought this home to roost.

Glad I am not working on real CM4 Hardware designs yet.
Those virtual ones I have in my head are without USB3.
I don't see what your point is ? You should be able to use any xHCI controller you wish. If you use the VL805 and don't want an spi prom we even support that option for you. If you want to use the VL805 with your own prom that's fine too.

juanma_cab
Posts: 46
Joined: Fri Mar 26, 2021 3:56 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 1:26 pm

Gavinmc42 wrote:
Wed Jun 30, 2021 11:07 am
What is complex about setting VL805=1 in the CM4 EEPROM
Getting the actual VL805 part itself and making drivers for weird USB things.

Having CM4 reference designs that only rely on one specific part.
While Plan A works most of the time a plan B and C should always be ready to go. Chip shortages have brought this home to roost.

Glad I am not working on real CM4 Hardware designs yet.
Those virtual ones I have in my head are without USB3.

Just the same here. I have worked on a custom PCB using Texas Instruments controller (TUSB7320), and we will see it if the design works fine when I received the custom PCB. VIALABS doesn't answer any email, Renesas it seems a good option, Frescologic asks 3000 MQO, ASMEDIA doesn't answer too, and TI device is NRND...

timg236
Raspberry Pi Engineer & Forum Moderator
Raspberry Pi Engineer & Forum Moderator
Posts: 926
Joined: Thu Jun 21, 2018 4:30 pm

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 1:39 pm

Adding VL805=1 instructs the bootloader to treat USB_MSD boot the same as on a Pi4B 1.4. Whilst chip shortages can difficult for everyone this has the considerable benefit that this hardware setup is very well understood and tested and you can compare behaviour against a Pi4B 1.4.

If you want to use custom PCIe or XHCI hardware then the Linux kernel drivers are mature and quite readable / hackable. The bootloader only uses USB MSD so that will get the kernel loaded unless the XHCI hardware is very broken.

User avatar
Gavinmc42
Posts: 6307
Joined: Wed Aug 28, 2013 3:31 am

Re: USB 3.0 CM4 reference design VL805-Q6

Wed Jun 30, 2021 11:45 pm

Just the same here. I have worked on a custom PCB using Texas Instruments controller (TUSB7320), and we will see it if the design works fine when I received the custom PCB. VIALABS doesn't answer any email, Renesas it seems a good option, Frescologic asks 3000 MQO, ASMEDIA doesn't answer too, and TI device is NRND...
That Ti one looks interesting, shame about NRND.
Did some digging and it looks like USB-C is where things are going.
CM4 motherboard with USB-C?
PCIe card with USB-C.
TI has some interesting family of USB chips including USB-C.

Might be worth some time looking at the Linux kernel drivers and check which chips are supported.

The VL-805 is currently supported, but I always think ahead to the next and future designs.
Wondering if a small FPGA design might have longer life and more flexibility?
But there is only one PCIe port, it is it better to use that for NVMe storage?
In which case a USB-2 hub chip might be better to look at.

CM4 reference designs, which chips work?
I check Jeff Geerlings page, but he cannot check everything.

My area of interest is baremetal Pi's, so Linux blobs/drivers are less useful unless open source.
I'm dancing on Rainbows.
Raspberries are not Apples or Oranges

User avatar
kbingham
Posts: 12
Joined: Wed Mar 06, 2019 11:20 am
Contact: Twitter

Re: USB 3.0 CM4 reference design VL805-Q6

Mon Sep 20, 2021 8:53 am

dp11 wrote:
Wed Jun 30, 2021 11:42 am
I don't see what your point is ? You should be able to use any xHCI controller you wish. If you use the VL805 and don't want an spi prom we even support that option for you. If you want to use the VL805 with your own prom that's fine too.
You mention here that you support using a VL805 without an SPI eeprom.

Is there any more detail on the VL805=1 feature being supported? We've attempted this on a CM4-IO board with a VL805 which has no SPI EEPROM, and we have not been able to get the CM4 bootloader/firmware to load the VL805 firmware into the VL805 at bootloader time.

We've used usbboot to update the firmware and used the latest rpi-eeprom by incorporating /usr//lib/firmware/raspberrypi/bootloader/stable/pieeprom-2021-07-06.bin into the usbboot/recovery/pieeprom.original.bin, and recreating the output by running ./update-pieeprom.sh accordingly.


https://github.com/raspberrypi/rpi-eepr ... cm4---beta states that the PCIe XHCI probe on CM4 is skipped unless required due to the boot mode including USB_MSD or NVME which we have included. (But it doesn't boot from there, so they time out).

Does the pieeprom-2021-07-06.bin contain the firmware from vl805-000138a1.bin? Or does this file have to be added somewhere else?

We're attempting to validate that the firmware has been loaded by using:
sudo lspci -xxx
and expecting to see:

01:00.0 USB controller: VIA Technologies, Inc. VL805 USB 3.0 Host Controller (rev 01)
...
50: a1 38 01 00 00 00 00 00 00 00 00 00 06 11 83 34
...
(the firmware version loaded at bytes 0x50-54) which is visible on the Pi400, but when we run this on the CM4-IO with the prom-less VL805 card we only get 00's at those bytes.

Return to “Compute Module”