_florent_ changed the topic of #litex to: LiteX FPGA SoC builder and Cores / Github : https://github.com/enjoy-digital, https://github.com/litex-hub / Logs: https://freenode.irclog.whitequark.org/litex
tpb has quit [Remote host closed the connection]
tpb has joined #litex
lf_ has quit [Ping timeout: 260 seconds]
lf has joined #litex
cr1901_modern2 has quit [Quit: Leaving.]
cr1901_modern has joined #litex
Degi_ has joined #litex
Degi has quit [Ping timeout: 240 seconds]
Degi_ is now known as Degi
acathla has quit [Ping timeout: 260 seconds]
Claude has joined #litex
Bertl_oO is now known as Bertl_zZ
kgugala_ has quit [Ping timeout: 256 seconds]
kgugala has joined #litex
SpaceCoaster has quit [Ping timeout: 264 seconds]
indy has quit [Quit: ZNC - http://znc.sourceforge.net]
SpaceCoaster has joined #litex
<cr1901_modern> _florent_: I figured out the problem I was seeing. It's relevant to orangecrab but may exist on other boards.
<cr1901_modern> Basically, the USB clock domain on orangecrab wasn't being reset properly. This means the CDC gray code multiregs between USB and sys would not be updated with valid reset values, and the comparison to detect an empty receive queue from USB would be garbage
<cr1901_modern> The CPU would always see a high level after reset from the RX interrupt. Since it's edge-triggered, the event never triggered, so the RX queue was never serviced
<cr1901_modern> eventually, the RX queue fills up, and the USB core dies waiting for the RX queue to drain. Then when you send data from the CPU side, the TX queue fills up b/c the USB core refuses to drain it
<cr1901_modern> Eventually, the BIOS dies in an infinite loop waiting for the TX queue to drain in a vicious cycle.
<cr1901_modern> Solution is to make sure the USB clock domain actually resets :)
<cr1901_modern> (This didn't take me as long as you'd think to figure out. But still probably should've waited to debug this.)
<cr1901_modern> Hrm, actually... this might not be an ideal solution if you _want_ the USB core to stay attached between resets
<cr1901_modern> Anyways, we can talk more about what you want to do when you're awake
kgugala has quit [Quit: -a- Connection Timed Out]
kgugala has joined #litex
kgugala_ has joined #litex
kgugala has quit [Ping timeout: 272 seconds]
indy has joined #litex
acathla has joined #litex
acathla has quit [Changing host]
acathla has joined #litex
SpaceCoaster has quit [Ping timeout: 264 seconds]
acathla has quit [Quit: segfault]
acathla has joined #litex
acathla has quit [Client Quit]
acathla has joined #litex
SpaceCoaster has joined #litex
acathla has joined #litex
acathla has quit [Changing host]
hansfbaier has joined #litex
hansfbaier1 has joined #litex
hansfbaier has quit [Ping timeout: 256 seconds]
indy has quit [Ping timeout: 256 seconds]
indy has joined #litex
futarisIRCcloud has quit [Quit: Connection closed for inactivity]
hansfbaier1 has quit [Read error: Connection reset by peer]
Bertl_zZ is now known as Bertl
futarisIRCcloud has joined #litex
<_florent_> cr1901_modern: thanks for the analysis. On the OrangeCrab it's indeed useful to avoid reseting the USB-ACM with the button (that we are using as a reset), this allow reseting the SoC without reseting the USB-ACM link
<_florent_> we should be able to fix the issue you saw while keeping this behavior
Zguig has joined #litex
xobs has quit [Quit: Bridge terminating on SIGTERM]
david-sawatzke[m has quit [Quit: Bridge terminating on SIGTERM]
apolkosnik[m] has quit [Quit: Bridge terminating on SIGTERM]
sajattack[m] has quit [Quit: Bridge terminating on SIGTERM]
CarlFK[m] has quit [Quit: Bridge terminating on SIGTERM]
leons has quit [Quit: Bridge terminating on SIGTERM]
promach3 has quit [Quit: Bridge terminating on SIGTERM]
jevinskie[m] has quit [Quit: Bridge terminating on SIGTERM]
disasm[m] has quit [Quit: Bridge terminating on SIGTERM]
jryans has quit [Quit: Bridge terminating on SIGTERM]
Zguig has quit [Client Quit]
Zguig has joined #litex
david-sawatzke[m has joined #litex
<cr1901_modern> _florent_: I'm not sure how to do this in gateware nicely. One solution is software is to change the BIOS to force fake reads from the UART rxtx register until the rx gray counter pointer matches the USB domain's current value
<cr1901_modern> But that's not intuitive/requires a nice big comment
jevinskie[m] has joined #litex
jryans has joined #litex
sajattack[m] has joined #litex
xobs has joined #litex
leons has joined #litex
CarlFK[m] has joined #litex
disasm[m] has joined #litex
promach3 has joined #litex
apolkosnik[m] has joined #litex
Bertl is now known as Bertl_oO
Zguig has quit [Ping timeout: 256 seconds]
Zguig has joined #litex
acathla has quit [Ping timeout: 256 seconds]
acathla has joined #litex
tumbleweed has quit [Quit: leaving]
tumbleweed has joined #litex