Merge pull request #383 from danielpieczko/adat_format_defines

Set ADAT format channel counts based on min and max frequency
This commit is contained in:
danielpieczko
2024-04-30 13:51:42 +01:00
committed by GitHub
2 changed files with 40 additions and 9 deletions

View File

@@ -5,6 +5,8 @@ UNRELEASED
---------- ----------
* FIXED: Device fails to enumerate when ADAT and S/PDIF transmit are enabled * 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
4.0.0 4.0.0
----- -----

View File

@@ -435,6 +435,18 @@
#define XUA_SPDIF_RX_EN (0) #define XUA_SPDIF_RX_EN (0)
#endif #endif
#if XUA_ADAT_RX_EN
#if (MIN_FREQ < 88200)
#define ADAT_RX_MAX_CHANS (8)
#elif (MIN_FREQ < 176400)
#define ADAT_RX_MAX_CHANS (4)
#else
#define ADAT_RX_MAX_CHANS (2)
#endif
#else
#define ADAT_RX_MAX_CHANS (0)
#endif
/** /**
* @brief Enables ADAT Rx. Default: 0 (Disabled) * @brief Enables ADAT Rx. Default: 0 (Disabled)
*/ */
@@ -467,7 +479,7 @@
#define ADAT_RX_INDEX (0) /* Default define for doxygen */ #define ADAT_RX_INDEX (0) /* Default define for doxygen */
#endif #endif
#if (ADAT_RX_INDEX + 8 > NUM_USB_CHAN_IN) #if (ADAT_RX_INDEX + ADAT_RX_MAX_CHANS > NUM_USB_CHAN_IN)
#error Not enough channels for ADAT #error Not enough channels for ADAT
#endif #endif
#endif #endif
@@ -475,17 +487,34 @@
#if (XUA_ADAT_RX_EN) #if (XUA_ADAT_RX_EN)
/* Setup input stream formats for ADAT */ /* Setup input stream formats for ADAT */
#if(MAX_FREQ > 96000) #if (MAX_FREQ > 96000)
#define INPUT_FORMAT_COUNT 3 #if (MIN_FREQ > 96000)
#elif(MAX_FREQ > 48000) #define INPUT_FORMAT_COUNT 1
#define INPUT_FORMAT_COUNT 2 #define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#elif (MIN_FREQ > 48000)
#define INPUT_FORMAT_COUNT 2
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#define HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT (NUM_USB_CHAN_IN - 2)
#else
#define INPUT_FORMAT_COUNT 3
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#define HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT (NUM_USB_CHAN_IN - 4)
#define HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT (NUM_USB_CHAN_IN - 6)
#endif
#elif (MAX_FREQ > 48000)
#if (MIN_FREQ > 48000)
#define INPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#else
#define INPUT_FORMAT_COUNT 2
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#define HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT (NUM_USB_CHAN_IN - 4)
#endif
#else #else
#define INPUT_FORMAT_COUNT 1 #define INPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#endif #endif
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#define HS_STREAM_FORMAT_INPUT_2_CHAN_COUNT (NUM_USB_CHAN_IN - 4)
#define HS_STREAM_FORMAT_INPUT_3_CHAN_COUNT (NUM_USB_CHAN_IN - 6)
#endif #endif
/** /**