forked from PAWPAW-Mirror/lib_xua
Initial changes for variable channel count ADAT Tx interfaces
This commit is contained in:
@@ -428,6 +428,18 @@
|
||||
#define ADAT_TX_INDEX (0)
|
||||
#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)
|
||||
*/
|
||||
@@ -484,37 +496,70 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if (XUA_ADAT_RX_EN)
|
||||
|
||||
/* Setup input stream formats for ADAT */
|
||||
#if (MAX_FREQ > 96000)
|
||||
#if (MIN_FREQ > 96000)
|
||||
#if (XUA_ADAT_RX_EN)
|
||||
#if (MAX_FREQ > 96000)
|
||||
#if (MIN_FREQ > 96000)
|
||||
#define INPUT_FORMAT_COUNT 1
|
||||
#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
|
||||
#define INPUT_FORMAT_COUNT 1
|
||||
#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
|
||||
#define INPUT_FORMAT_COUNT 1
|
||||
#define HS_STREAM_FORMAT_INPUT_1_CHAN_COUNT NUM_USB_CHAN_IN
|
||||
#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
|
||||
|
||||
/**
|
||||
|
||||
@@ -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.bBitResolution = HS_STREAM_FORMAT_OUTPUT_1_RESOLUTION_BITS;
|
||||
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
|
||||
#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.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_ClassStreamInterface_2.bNrChannels = NUM_USB_CHAN_OUT;
|
||||
cfgDesc_Audio2.Audio_Out_ClassStreamInterface_2.bNrChannels = HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT;
|
||||
#endif
|
||||
|
||||
#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.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_ClassStreamInterface_3.bNrChannels = NUM_USB_CHAN_OUT;
|
||||
cfgDesc_Audio2.Audio_Out_ClassStreamInterface_3.bNrChannels = HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT;
|
||||
#endif
|
||||
#endif
|
||||
#if (NUM_USB_CHAN_IN > 0)
|
||||
|
||||
@@ -1454,15 +1454,15 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
||||
/* Class Specific AS Interface Descriptor */
|
||||
.Audio_Out_ClassStreamInterface =
|
||||
{
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
UAC_CS_AS_INTERFACE_SUBTYPE_AS_GENERAL, /* 2 bDescriptorSubType */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_1_DATAFORMAT,/* 6:10 bmFormats (note this is a bitmap) */
|
||||
NUM_USB_CHAN_OUT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_1_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
|
||||
HS_STREAM_FORMAT_OUTPUT_1_CHAN_COUNT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
.iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *),
|
||||
},
|
||||
|
||||
@@ -1545,15 +1545,15 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
||||
/* Class Specific AS Interface Descriptor */
|
||||
.Audio_Out_ClassStreamInterface_2 =
|
||||
{
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
UAC_CS_AS_INTERFACE_SUBTYPE_AS_GENERAL, /* 2 bDescriptorSubType */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_2_DATAFORMAT,/* 6:10 bmFormats (note this is a bitmap) */
|
||||
NUM_USB_CHAN_OUT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_2_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
|
||||
HS_STREAM_FORMAT_OUTPUT_2_CHAN_COUNT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
.iChannelNames = (offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *)),
|
||||
},
|
||||
|
||||
@@ -1636,15 +1636,15 @@ USB_Config_Descriptor_Audio2_t cfgDesc_Audio2=
|
||||
/* Class Specific AS Interface Descriptor */
|
||||
.Audio_Out_ClassStreamInterface_3 =
|
||||
{
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
0x10, /* 0 bLength: 16 */
|
||||
UAC_CS_DESCTYPE_INTERFACE, /* 1 bDescriptorType: 0x24 */
|
||||
UAC_CS_AS_INTERFACE_SUBTYPE_AS_GENERAL, /* 2 bDescriptorSubType */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_3_DATAFORMAT,/* 6:10 bmFormats (note this is a bitmap) */
|
||||
NUM_USB_CHAN_OUT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
ID_IT_USB, /* 3 bTerminalLink (Linked to USB input terminal) */
|
||||
0x00, /* 4 bmControls */
|
||||
UAC_FORMAT_TYPE_I, /* 5 bFormatType */
|
||||
STREAM_FORMAT_OUTPUT_3_DATAFORMAT, /* 6:10 bmFormats (note this is a bitmap) */
|
||||
HS_STREAM_FORMAT_OUTPUT_3_CHAN_COUNT, /* 11 bNrChannels */
|
||||
0x00000000, /* 12:14: bmChannelConfig */
|
||||
.iChannelNames = offsetof(StringDescTable_t, outputChanStr_1)/sizeof(char *),
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user