Skip to content

Conversation

@roma-jam
Copy link
Collaborator

@roma-jam roma-jam commented Nov 19, 2025

Description

This PR contain cherry-picked changes from the upstream to solve the limitations in #68

Goal

  • Make the release of v0.19.02 instead of the previous releases: v0.19.01
  • Discard the other changes in the upstream code, which will take place in the release v0.20.0~1 from here: Upstream synchronization [v0.20]  #70

Changes

Relates

Verification

ESP-IDF USB Examples Run isn't available in CI. Verified manually.

  • Run ESP-IDF USB Examples on ESP32-P4 target for "latest" target

@roma-jam roma-jam self-assigned this Nov 19, 2025
@roma-jam
Copy link
Collaborator Author

roma-jam commented Nov 20, 2025

~~Closed due to the release of the version 0.20.0. ~~

Re-opened with solution:

  • Release the v0.19.0~2 based on the pure 0.19.0 tag + fix for the limitations described in this PR.
  • Release the v0.20.0~1 based on the pure 0.20.0 tag

@roma-jam roma-jam closed this Nov 20, 2025
@roma-jam roma-jam deleted the sync/partial_upstream branch November 20, 2025 08:49
@roma-jam roma-jam restored the sync/partial_upstream branch November 20, 2025 10:16
@roma-jam roma-jam reopened this Nov 20, 2025
@roma-jam roma-jam marked this pull request as ready for review November 20, 2025 10:18
poornadharshan13-rgb and others added 5 commits November 21, 2025 09:37
dwc2 requires manually toggle Even/Odd bit manually for ISO IN transfer,
that's poses a problem when bInterval > 1 mainly for audio class, as the
moment the transfer is scheduled, we don't know when the host will issue
IN token (bInterval vs bRefresh schenanigans).

Linux driver use NAK interrupt to detect when the host is sending IN token
and toggle the Even/Odd bit accordingly based on the current frame number
and bInterval.

However on ST's stripped down DWC2 FS controller (e.g STM32F4, STM32F7),
NAK interrupt is not supported, even it's marked as always present in DWC2
databook. NAK interrupt is only supported on HS controller with external PHY.

Instead I schedule all ISO IN transfer for next frame, if the transfer failed,
incomplete isochronous IN transfer interrupt will be triggered and we can
relaunch the transfer.

This is a combination of 4 commits, including:
- dwc2: support ISO IN transfer when bInterval > 1
- Retry until bInterval
- Simply restart the transfer
- extract to handle_incomplete_iso_in() for readability

Signed-off-by: HiFiPhile <admin@hifiphile.com>
This is a combination of 3 commits:
- Fix preset with espressif
- dcd/dwc2: fix enumration when EP0 size=8
- dcd/dwc2: cleanup previous pending EP0 IN transfer if a SETUP packet is received

Signed-off-by: Mengsk <admin@hifiphile.com>
@roma-jam roma-jam force-pushed the sync/partial_upstream branch from 5bf9942 to 9851796 Compare November 21, 2025 08:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants