XHCI bringup on the Raspberry Pi 4

Peter Robinson pbrobinson at gmail.com
Fri Apr 3 10:29:04 CEST 2020

> > I'm working on enabling the VIA805 XCHI controller found on the new Raspberry
> > Pi 4. The controller sits behind a PCIe bus, which I've already implemented[1]
> > and will submit once the XCHI issues are resolved, as it's worthless otherwise.
> >
> > The XHCI initialization gets stuck after issuing the fist 'enable slot'
> > command. I've been reviewing the whole init process and comparing it to Linux's
> > for days without finding anything fishy. DMA constraints, which are important
> > on the RPi are mantained, and on top of that, I can confirm DMA trough PCIe
> > works fine as I see two 'port status change' events available in the ring
> > before completly stalling. Also note that, unsurprisingly, the CRR bit in the
> > CRCR register (which marks the running state of the Command Ring state machine)
> > is never set after ringing the relevant doorbell.
> This is probably caused by the required structure setup by U-Boot is
> viewed as buggy by the xHCI controller, hence there is no response to
> the first "enable slot" command.
> Could you please compare all the data structures, with the one set up
> by the Linux kernel?
> BTW: does Linux kernel xHCI driver work on this RPI 4 board?

Yes, it uses the standard xhci-hcd controller driver, it's a fairly
vanilla VIA controller.

More information about the U-Boot mailing list