On 4/1/20 7:30 PM, Nicolas Saenz Julienne wrote: > Hi All, Hi,
> 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. > > I'm clueless at this point, I figure the VIA805 is sensitive to the ordering > of > some of the operations we perform in u-boot, or worse, the timing. For > example, > I tried replicanting Linux's behaviour with regard to 'port status change' > events, processing them before calling the 'enable slot' command. I also tried > to mimic Linux by enabling port-0's power (the USB3 port) before starting the > HC. Again, no luck. > > I attached the usb/xhci debug output, any ideas on where to look will be > apreciated. Try disabling caches (dcache off ; icache off) and see if it magically starts working. That comes to mind.