summaryrefslogtreecommitdiff
path: root/src/class
diff options
context:
space:
mode:
authorHiFiPhile <[email protected]>2025-10-04 12:11:42 +0200
committerHiFiPhile <[email protected]>2025-10-04 12:11:42 +0200
commite38172fdf6f6b3a4f6fbc5b278a9424444bc61e6 (patch)
tree3721db621133a6ee32fe6b4488fcb6aecdabaae5 /src/class
parent0b630f000d8301e13b4b084df6d47598f7c9780e (diff)
Fix descriptor looping
Signed-off-by: HiFiPhile <[email protected]>
Diffstat (limited to 'src/class')
-rw-r--r--src/class/audio/audio_device.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/class/audio/audio_device.c b/src/class/audio/audio_device.c
index 4019e2850..1e74c21b4 100644
--- a/src/class/audio/audio_device.c
+++ b/src/class/audio/audio_device.c
@@ -906,9 +906,10 @@ uint16_t audiod_open(uint8_t rhport, tusb_desc_interface_t const *itf_desc, uint
p_desc = tu_desc_next(p_desc);
while (p_desc_end - p_desc > 0) {
// Stop if:
- // - Non audio interface descriptor found
+ // - Non audio streaming interface descriptor found
// - IAD found
- if ((tu_desc_type(p_desc) == TUSB_DESC_INTERFACE && ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass != TUSB_CLASS_AUDIO)
+ if ((tu_desc_type(p_desc) == TUSB_DESC_INTERFACE &&
+ !(((tusb_desc_interface_t const *) p_desc)->bInterfaceClass == TUSB_CLASS_AUDIO && ((tusb_desc_interface_t const *) p_desc)->bInterfaceSubClass == AUDIO_SUBCLASS_STREAMING))
|| tu_desc_type(p_desc) == TUSB_DESC_INTERFACE_ASSOCIATION) {
break;
} else if (tu_desc_type(p_desc) == TUSB_DESC_INTERFACE && ((tusb_desc_interface_t const *) p_desc)->bInterfaceSubClass == AUDIO_SUBCLASS_STREAMING) {