diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 09f64e01..97359bb5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -7,6 +7,8 @@ UNRELEASED * FIXED: Device fails to enumerate when ADAT and S/PDIF transmit are enabled * CHANGED: Enable only the minimum number of ADAT input formats based for the supported sample frequencies + * FIXED: Incorrect internal input EP count for input only devices + * ADDED: MIDI unit and subsystem tests * FIXED: ADAT Tx called too frequently 4.0.0 diff --git a/lib_xua/api/xua_conf_default.h b/lib_xua/api/xua_conf_default.h index 053dff28..82be6dab 100644 --- a/lib_xua/api/xua_conf_default.h +++ b/lib_xua/api/xua_conf_default.h @@ -1273,7 +1273,9 @@ enum USBEndpointNumber_In #if (NUM_USB_CHAN_IN == 0) || defined (UAC_FORCE_FEEDBACK_EP) ENDPOINT_NUMBER_IN_FEEDBACK, #endif +#if (NUM_USB_CHAN_IN != 0) ENDPOINT_NUMBER_IN_AUDIO, +#endif #if (XUA_SPDIF_RX_EN) || (XUA_ADAT_RX_EN) ENDPOINT_NUMBER_IN_INTERRUPT, /* Audio interrupt/status EP */ #endif diff --git a/lib_xua/src/core/endpoint0/xua_endpoint0.c b/lib_xua/src/core/endpoint0/xua_endpoint0.c index c24dfefc..6a656f95 100755 --- a/lib_xua/src/core/endpoint0/xua_endpoint0.c +++ b/lib_xua/src/core/endpoint0/xua_endpoint0.c @@ -1,4 +1,4 @@ -// Copyright 2011-2023 XMOS LIMITED. +// Copyright 2011-2024 XMOS LIMITED. // This Software is subject to the terms of the XMOS Public Licence: Version 1. /** * @brief Implements endpoint zero for an USB Audio 1.0/2.0 device @@ -814,7 +814,14 @@ void XUA_Endpoint0_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend c_ep0 { unsigned epNum = sp.wIndex & 0xff; - if ((epNum == ENDPOINT_ADDRESS_OUT_AUDIO) || (epNum == ENDPOINT_ADDRESS_IN_AUDIO)) +// Ensure we only check for AUDIO EPs if enabled +#if (NUM_USB_CHAN_IN != 0 && NUM_USB_CHAN_OUT == 0) + if (epNum == ENDPOINT_ADDRESS_IN_AUDIO) +#elif (NUM_USB_CHAN_IN == 0 && NUM_USB_CHAN_OUT != 0) + if (epNum == ENDPOINT_ADDRESS_OUT_AUDIO) +#elif (NUM_USB_CHAN_IN != 0 && NUM_USB_CHAN_OUT != 0) + if ((epNum == ENDPOINT_ADDRESS_IN_AUDIO) || (epNum == ENDPOINT_ADDRESS_OUT_AUDIO)) +#endif { #if (AUDIO_CLASS == 2) && (AUDIO_CLASS_FALLBACK) if(g_curUsbSpeed == XUD_SPEED_FS)