This patch set first cleans up the use of rx_active and rx_pending. I had misunderstood what happened with the SYNC pattern and thought it would be sent to the Navre and thus set rx_pending. In addition, I forgot to retrieve this hypothetical byte. That's why things did actually work. Sometimes, two wrongs do make a right.
After fixing this, an old race condition between the testing of rx_pending and rx_active became much worse. Sebastien suggested to solve this by an atomic read that returns both rx_pending and rx_active. Note that you need to rebuild the SoC bitstream for this change, and BIOS/Flickernoise and SoC must be updated (or downgraded) together. Finally, I added support for EP0 sizes larger than 8 bytes, which is required for full-speed USB. This allows one more of my USB devices (another MIDI controller) to enumerate. - Werner Werner Almesberger (7): softusb: correct misunderstanding of use of rx_pending softusb: remove rx_pending vs. rx_active race softusb: move (still hard-coded) device address to #define softusb: move retrieval of device descriptor to separate function softusb: make EP0 size variable and store it in struct port_status softusb: end data stage of SETUP also when size limit is reached softusb: set EP0 size before trying any larger accesses cores/softusb/rtl/softusb_sie.v | 2 +- softusb-input/main.c | 133 +++++++++++++++++++++++++++----------- softusb-input/sie.h | 4 +- 3 files changed, 98 insertions(+), 41 deletions(-) _______________________________________________ http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org IRC: #milkymist@Freenode
