mkam
Posts: 7
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: 3574
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: 29
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: 7
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: 750
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: 472
Joined: Sun Oct 12, 2014 8:27 am

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. Look for me on ModWiggler or other sites that have PMs.

Technologov
Posts: 29
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: 831
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: 3574
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: 831
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: 3574
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

Return to “Compute Module”