usb: iap: workaround cur/set freq mismatch
rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Wed, 17 Jun 2026 11:01:42 -0400
| Newsgroups | gmane.comp.systems.archos.rockbox.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit 7154fcd9a8efba731e9a362d3a7592f7a7066fdf Author: mojyack <[email protected]> Date: Sat May 23 19:09:46 2026 +0900 usb: iap: workaround cur/set freq mismatch Change-Id: I75a36c9dfd33e7f9192101220633137e5ad98411 diff --git a/firmware/usbstack/iap/audio.c b/firmware/usbstack/iap/audio.c index d01b133d69..83523d6769 100644 --- a/firmware/usbstack/iap/audio.c +++ b/firmware/usbstack/iap/audio.c @@ -260,6 +260,16 @@ bool iap_audio_set_sampr(uint32_t sampr) { } } check_act(freq < ARRAYLEN(samprs), return false); + + if(set_freq >= 0 && freq != set_freq) { + /* Accessories should only set the frequency we requested via + * TrackNewAudioAttributes, but in some cases, USB control requests may arrive late, + * breaking established cur_freq == set_freq. + * Ignoring sets of frequencies that were not requested can work around this. */ + ERROR("wrong frequency set: expected=%d got=%d", set_freq, freq); + return true; + } + cur_freq = freq; LOG("sampr=%lu, set_freq=%d cur_freq=%d", sampr, set_freq, cur_freq); -- rockbox-cvs mailing list [email protected] https://lists.haxx.se/mailman/listinfo/rockbox-cvs