Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement EPx-only RP2040 USB Host #2814

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Commits on Sep 23, 2024

  1. Implement EPx-only RP2040 USB Host

    This commit fixes issue hathach#2776
    hathach#2776.
    The HCD now routes all USB transfers through the EPx
    endpoint. It no longer uses the "interrupt" endpoint
    hardware to handle INTERRUPT and BULK endpoints. The
    fix avoids the data sequence error handling bug in
    the RP2040 USB IP's "interrupt" endpoint hardware
    and allows the host to correctly drop the IN packet
    with the error without locking up. That fixes
    rppicomidi/usb_midi_host#14
    
    This fix requires the CPU to handle the SOF interrupt
    (every ms). That might be an issue for some systems.
    
    A benefit of this fix is that BULK transfers are
    more than 2x faster. There is an opportunity to speed
    them up further by forcing BULK transfer to begin
    immediately instead of waiting for the next SOF interrupt.
    
    This code has been tested with MSC flash drives, HID
    devices, and USB Hubs. It works with full speed and low
    speed HID devices connected at the same time through a hub.
    With the usb_midi_host application host driver, 4 MIDI
    devices plugged to a hub can send messages to each other
    (see the midi2usbhub project).
    rppicomidi committed Sep 23, 2024
    Configuration menu
    Copy the full SHA
    170cfeb View commit details
    Browse the repository at this point in the history