Initial changes for variable channel count ADAT Tx interfaces

This commit is contained in:
Ed
2024-05-09 12:11:13 +01:00
parent f97f4dbf9b
commit 4a74c81a96
3 changed files with 96 additions and 51 deletions

View File

@@ -428,6 +428,18 @@
#define ADAT_TX_INDEX (0) #define ADAT_TX_INDEX (0)
#endif #endif
#if XUA_ADAT_TX_EN
#if (MIN_FREQ < 88200)
#define ADAT_TX_MAX_CHANS (8)
#elif (MIN_FREQ < 176400)
#define ADAT_TX_MAX_CHANS (4)
#else
#define ADAT_TX_MAX_CHANS (2)
#endif
#else
#define ADAT_TX_MAX_CHANS (0)
#endif
/** /**
* @brief Enables SPDIF Rx. Default: 0 (Disabled) * @brief Enables SPDIF Rx. Default: 0 (Disabled)
*/ */
@@ -484,9 +496,9 @@
#endif #endif
#endif #endif
#if (XUA_ADAT_RX_EN)
/* Setup input stream formats for ADAT */ /* Setup input stream formats for ADAT */
#if (XUA_ADAT_RX_EN)
#if (MAX_FREQ > 96000) #if (MAX_FREQ > 96000)
#if (MIN_FREQ > 96000) #if (MIN_FREQ > 96000)
#define INPUT_FORMAT_COUNT 1 #define INPUT_FORMAT_COUNT 1
@@ -514,7 +526,40 @@
#define INPUT_FORMAT_COUNT 1 #define INPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN #define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
#endif #endif
#endif
/* Setup output stream formats for ADAT */
#if (XUA_ADAT_TX_EN)
#if (MAX_FREQ > 96000)
#if (MIN_FREQ > 96000)
#define OUTPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#elif (MIN_FREQ > 48000)
#define OUTPUT_FORMAT_COUNT 2
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#define HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT (NUM_USB_CHAN_OUT - 2)
#else
#define OUTPUT_FORMAT_COUNT 3
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#define HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT (NUM_USB_CHAN_OUT - 4)
#define HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT (NUM_USB_CHAN_OUT - 6)
#endif
#elif (MAX_FREQ > 48000)
#if (MIN_FREQ > 48000)
#define OUTPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#else
#define OUTPUT_FORMAT_COUNT 2
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#define HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT (NUM_USB_CHAN_OUT - 4)
#endif
#else
#define OUTPUT_FORMAT_COUNT 1
#define HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT NUM_USB_CHAN_OUT
#endif
#define STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS 24
#define STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS 24
#define STREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS 24
#endif #endif
/** /**

View File

@@ -968,20 +968,20 @@ void XUA_Endpoint0_loop(XUD_Result_t result, USB_SetupPacket_t sp, chanend c_ep0
cfgDesc_Audio2.Audio_Out_Format.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_1_SUBSLOT_BYTES; cfgDesc_Audio2.Audio_Out_Format.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_1_SUBSLOT_BYTES;
cfgDesc_Audio2.Audio_Out_Format.bBitResolution = HS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS; cfgDesc_Audio2.Audio_Out_Format.bBitResolution = HS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS;
cfgDesc_Audio2.Audio_Out_Endpoint.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_1_MAXPACKETSIZE; cfgDesc_Audio2.Audio_Out_Endpoint.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_1_MAXPACKETSIZE;
cfgDesc_Audio2.Audio_Out_ClassStreamInterface.bNrChannels = NUM_USB_CHAN_OUT; cfgDesc_Audio2.Audio_Out_ClassStreamInterface.bNrChannels = HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT;
#endif #endif
#if (OUTPUT_FORMAT_COUNT > 1) #if (OUTPUT_FORMAT_COUNT > 1)
cfgDesc_Audio2.Audio_Out_Format_2.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_2_SUBSLOT_BYTES; cfgDesc_Audio2.Audio_Out_Format_2.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_2_SUBSLOT_BYTES;
cfgDesc_Audio2.Audio_Out_Format_2.bBitResolution = HS_STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS; cfgDesc_Audio2.Audio_Out_Format_2.bBitResolution = HS_STREAM_FORMAT_OUTPUT_2_RESOLUTION_BITS;
cfgDesc_Audio2.Audio_Out_Endpoint_2.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_2_MAXPACKETSIZE; cfgDesc_Audio2.Audio_Out_Endpoint_2.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_2_MAXPACKETSIZE;
cfgDesc_Audio2.Audio_Out_ClassStreamInterface_2.bNrChannels = NUM_USB_CHAN_OUT; cfgDesc_Audio2.Audio_Out_ClassStreamInterface_2.bNrChannels = HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT;
#endif #endif
#if (OUTPUT_FORMAT_COUNT > 2) #if (OUTPUT_FORMAT_COUNT > 2)
cfgDesc_Audio2.Audio_Out_Format_3.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_3_SUBSLOT_BYTES; cfgDesc_Audio2.Audio_Out_Format_3.bSubslotSize = HS_STREAM_FORMAT_OUTPUT_3_SUBSLOT_BYTES;
cfgDesc_Audio2.Audio_Out_Format_3.bBitResolution = HS_STREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS; cfgDesc_Audio2.Audio_Out_Format_3.bBitResolution = HS_STREAM_FORMAT_OUTPUT_3_RESOLUTION_BITS;
cfgDesc_Audio2.Audio_Out_Endpoint_3.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_3_MAXPACKETSIZE; cfgDesc_Audio2.Audio_Out_Endpoint_3.wMaxPacketSize = HS_STREAM_FORMAT_OUTPUT_3_MAXPACKETSIZE;
cfgDesc_Audio2.Audio_Out_ClassStreamInterface_3.bNrChannels = NUM_USB_CHAN_OUT; cfgDesc_Audio2.Audio_Out_ClassStreamInterface_3.bNrChannels = HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT;
#endif #endif
#endif #endif
#if (NUM_USB_CHAN_IN > 0) #if (NUM_USB_CHAN_IN > 0)

View File

@@ -1461,7 +1461,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
0x00, /* 4 bmControls */ 0x00, /* 4 bmControls */
UAC_FORMAT_TYPE_I, /* 5 bFormatType */ UAC_FORMAT_TYPE_I, /* 5 bFormatType */
STREAM_FORMAT_OUTPUT_1_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */ STREAM_FORMAT_OUTPUT_1_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
NUM_USB_CHAN_OUT, /* 11 bNrChannels */ HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT, /* 11 bNrChannels */
0x00000000, /* 12:14: bmChannelConfig */ 0x00000000, /* 12:14: bmChannelConfig */
.iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *), .iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *),
}, },
@@ -1552,7 +1552,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
0x00, /* 4 bmControls */ 0x00, /* 4 bmControls */
UAC_FORMAT_TYPE_I, /* 5 bFormatType */ UAC_FORMAT_TYPE_I, /* 5 bFormatType */
STREAM_FORMAT_OUTPUT_2_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */ STREAM_FORMAT_OUTPUT_2_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
NUM_USB_CHAN_OUT, /* 11 bNrChannels */ HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT, /* 11 bNrChannels */
0x00000000, /* 12:14: bmChannelConfig */ 0x00000000, /* 12:14: bmChannelConfig */
.iChannelNames = (offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *)), .iChannelNames = (offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *)),
}, },
@@ -1643,7 +1643,7 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
0x00, /* 4 bmControls */ 0x00, /* 4 bmControls */
UAC_FORMAT_TYPE_I, /* 5 bFormatType */ UAC_FORMAT_TYPE_I, /* 5 bFormatType */
STREAM_FORMAT_OUTPUT_3_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */ STREAM_FORMAT_OUTPUT_3_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
NUM_USB_CHAN_OUT, /* 11 bNrChannels */ HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT, /* 11 bNrChannels */
0x00000000, /* 12:14: bmChannelConfig */ 0x00000000, /* 12:14: bmChannelConfig */
.iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *), .iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *),
}, },