fix host issue when mounting an CDC device without IAD
This commit is contained in:
@@ -1522,7 +1522,7 @@ static bool _parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configur
|
|||||||
|
|
||||||
#if CFG_TUH_MIDI
|
#if CFG_TUH_MIDI
|
||||||
// MIDI has 2 interfaces (Audio Control v1 + MIDIStreaming) but does not have IAD
|
// MIDI has 2 interfaces (Audio Control v1 + MIDIStreaming) but does not have IAD
|
||||||
// manually increase the associated count
|
// manually force associated count = 2
|
||||||
if (1 == assoc_itf_count &&
|
if (1 == assoc_itf_count &&
|
||||||
TUSB_CLASS_AUDIO == desc_itf->bInterfaceClass &&
|
TUSB_CLASS_AUDIO == desc_itf->bInterfaceClass &&
|
||||||
AUDIO_SUBCLASS_CONTROL == desc_itf->bInterfaceSubClass &&
|
AUDIO_SUBCLASS_CONTROL == desc_itf->bInterfaceSubClass &&
|
||||||
@@ -1532,6 +1532,17 @@ static bool _parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configur
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CFG_TUH_CDC
|
||||||
|
// Some legacy CDC device does not use IAD but rather use device class as hint to combine 2 interfaces
|
||||||
|
// manually force associated count = 2
|
||||||
|
if (1 == assoc_itf_count &&
|
||||||
|
TUSB_CLASS_CDC == desc_itf->bInterfaceClass &&
|
||||||
|
CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL == desc_itf->bInterfaceSubClass)
|
||||||
|
{
|
||||||
|
assoc_itf_count = 2;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
uint16_t const drv_len = tu_desc_get_interface_total_len(desc_itf, assoc_itf_count, (uint16_t) (desc_end-p_desc));
|
uint16_t const drv_len = tu_desc_get_interface_total_len(desc_itf, assoc_itf_count, (uint16_t) (desc_end-p_desc));
|
||||||
TU_ASSERT(drv_len >= sizeof(tusb_desc_interface_t));
|
TU_ASSERT(drv_len >= sizeof(tusb_desc_interface_t));
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user